Skip to content

Commit 178abd0

Browse files
committed
Merge branch 'develop' into table-editor
2 parents a476aa4 + 43b0ceb commit 178abd0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+9826
-5389
lines changed

.github/workflows/bump-transitive.yml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# This Workflow updates the transitive dependencies of Zettlr by deleting the
2+
# lockfile and re-installing everything.
3+
name: 'Update Transitive Dependencies'
4+
5+
on:
6+
workflow_dispatch: {}
7+
schedule: # Once a month, run the dependency updater
8+
- cron: '0 20 1 * *'
9+
10+
env:
11+
NODE_VERSION: '22'
12+
13+
permissions:
14+
contents: write
15+
pull-requests: write
16+
17+
concurrency:
18+
group: ${{ github.workflow }}
19+
cancel-in-progress: true
20+
21+
jobs:
22+
update_deps:
23+
name: 'Update dependencies'
24+
runs-on: ubuntu-latest
25+
steps:
26+
- name: Clone repository (develop branch)
27+
uses: actions/checkout@v4
28+
with:
29+
ref: 'develop'
30+
fetch-depth: 0
31+
- name: Setup NodeJS ${{ env.NODE_VERSION }}
32+
uses: actions/setup-node@v4
33+
with:
34+
node-version: ${{ env.NODE_VERSION }}
35+
# No cache
36+
- name: Enable Yarn and Clear Cache
37+
# Additionally, this run removes the `enableImmutableInstalls` and
38+
# clears the cache to allow the creation of a new lockfile.
39+
run: |
40+
sudo corepack enable
41+
yarn config set -H enableImmutableInstalls false
42+
yarn cache clean --all
43+
- name: Create new branch `transitive-deps-${{ github.run_id }}`
44+
run: |
45+
git checkout -b transitive-deps-${{ github.run_id }}
46+
- name: Update transitive dependencies
47+
run: |
48+
rm yarn.lock
49+
yarn install
50+
- name: Verify Changes
51+
run: |
52+
yarn lint && yarn test
53+
- name: Commit Changes
54+
run: |
55+
git config --local user.email "github-actions[bot]@users.noreply.github.com"
56+
git config --local user.name "github-actions[bot]"
57+
git add yarn.lock
58+
git commit -m "chore: Bump transitive dependencies ($(date))"
59+
git push -u origin transitive-deps-${{ github.run_id }}
60+
- name: Open PR
61+
run: |
62+
gh pr create -B develop -H transitive-deps-${{ github.run_id }} --title "chore: Bump transitive dependencies ($(date))" --body "Bumps transitive dependencies of the repository."
63+
env:
64+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

CHANGELOG.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,81 @@
22

33
## GUI and Functionality
44

5+
- **Change**: Zettlr will no longer parse Markdown-like files that exceed ca.
6+
10 MB in size. After some testing, we have determined that 10 MB seems to be
7+
a balanced trade-off between parsing as many files as possible and preventing
8+
the app to crash (especially on slower computers). Note that this only affects
9+
the caching of certain pieces of metadata, such as title, heading level 1, and
10+
ID. You will still be able to open and edit the file. For more context, see
11+
issue #5801.
12+
- Fixed a bug that would prevent the creation of new directories via the
13+
shortcut (#5769).
14+
- Fixed a bug that prevented retention of user-determined dark-mode setting on
15+
platforms other than macOS during application restarts (#570).
16+
- Fixed the list of related files disappearing when switching sidebar tabs
17+
(#5795).
18+
19+
## Under the Hood
20+
21+
- Bump Pandoc to version `3.7.0.2`.
22+
- Bump Electron to version `37.2.0`.
23+
- The primary app service container can now be retrieved using the factory
24+
method `getAppServiceContainer`. This makes it possible to reduce a few
25+
recursive dependencies on passing the service container down and will help
26+
disentangle the main process services in the future.
27+
28+
# 3.5.1
29+
30+
## GUI and Functionality
31+
32+
- Fixed a bug that would make using certain keys such as `Enter`, `Backspace`,
33+
or quotes in code editors in the Assets Manager unusable (#5797).
34+
- Added Kazakh language (#5771).
35+
- Improve fenced code block language detection when using fenced code
36+
attributes. Now, using the recommended Pandoc-style syntax for attribute
37+
strings will correctly match the language in the info string to one of the
38+
available identifiers.
39+
40+
## Under the Hood
41+
42+
(nothing here)
43+
44+
# 3.5.0
45+
46+
## GUI and Functionality
47+
548
- **Feature**: The code editors (in the assets manager and elsewhere) now share
649
the same keymap as the main editor.
50+
- **Feature**: The image renderer now acknowledges and respects the presence of
51+
a Pandoc link attributes string behind an image to scale images using custom
52+
sizes (#1328).
53+
- **Change**: Removed some optional properties from the default profiles. If you
54+
want to switch to the new defaults, delete those files from the assets manager
55+
or rename your existing ones. Specifically, removed `top-level-division`,
56+
whose meaning has changed which started to produce empty first pages during
57+
Word exports (#5645).
58+
- Fixed a long-standing bug that would not clear the modification marker on both
59+
file tabs (#5747) and the macOS window indicator (#4724) when a modified file
60+
was closed without saving changes. Acknowledges PR #5747 which is superseded
61+
by this change.
62+
- Added a keyboard shortcut for highlighting text: `Ctrl-Shift-H` (#4668).
63+
- The Mermaid diagram renderer is now more flexible. It now renders any Mermaid
64+
diagram in any type of valid fenced code block with both allowed variations of
65+
providing the info string: the plain `mermaid` and the Pandoc-attribute style
66+
`{.mermaid}` class (#5734).
767
- Fixed a keymap conflict that would cause `Enter` to not accept autocomplete
868
suggestions in some contexts such as Markdown syntax elements (#5646).
69+
- Improved the math, mermaid, image, and heading renderers so that they perform
70+
additional checks before actually updating their respective rendered elements.
71+
This should reduce the amount of flickering and unintentional scrolling
72+
especially in longer documents with many of such elements.
973
- Enable the CodeMirror folding keymap which lets you fold and unfold code, such
1074
as headings, with keyboard shortcuts instead of using the arrows to the left
1175
of the editor (#857). The shortcuts are: `Ctrl-Shift-[` (Windows/Linux) or
1276
`Cmd-Alt-[` (macOS) for folding code, `Ctrl-Shift-]` or `Cmd-Alt-]` for
1377
unfolding, `Ctrl-Alt-[` for folding all, and `Ctrl-Alt-]` for unfolding all.
1478
- Update `fr-FR` translation (#5738).
79+
- Update `cs-CZ` translation (#5775).
1580

1681
## Under the Hood
1782

@@ -22,6 +87,7 @@
2287
- Move all keymaps into a single `defaultKeymap`.
2388
- Assume `**` as default bold and `*` as default italic formatting for Markdown
2489
commands if the config field is not present.
90+
- Added a `pandocLinkParser` for properly parsing pandoc link attribute strings.
2591

2692
# 3.4.4
2793

CITATION.cff

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ keywords:
1414
- GUI
1515
- editor
1616
- pandoc
17-
version: v3.4.4
17+
version: v3.5.1
1818
doi: 10.5281/zenodo.2580173
19-
date-released: 2025-04-16
19+
date-released: 2025-07-01
2020
license: gpl-3.0
2121
repository-code: https://github.com/Zettlr/Zettlr

README.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@
2727
<a href="https://www.zettlr.com/" target="_blank">Homepage</a> |
2828
<a href="https://www.zettlr.com/download">Download</a> |
2929
<a href="https://docs.zettlr.com/" target="_blank">Documentation</a> |
30-
<a rel="me" href="https://fosstodon.org/@zettlr" target="_blank">Mastodon</a> |
31-
<a href="https://discord.gg/PcfS3DM9Xj" target="_blank">Discord</a> |
30+
<a href="https://forum.zettlr.com/" target="_blank">Community Forum</a> |
31+
<a href="https://go.zettlr.com/discord" target="_blank">Discord</a> |
3232
<a href="#contributing">Contributing</a> |
33-
<a href="https://www.patreon.com/zettlr" target="_blank">Support Us</a>
33+
<a href="https://zettlr.com/supporters" target="_blank">Support Us</a> |
34+
<a rel="me" href="https://fosstodon.org/@zettlr" target="_blank">Mastodon</a>
3435
</p>
3536

3637
![screenshot](/resources/screenshots/zettlr_view.png)
@@ -64,17 +65,19 @@ To install Zettlr, just [download the latest release](https://www.zettlr.com/dow
6465

6566
On our website and here on GitHub, we provide a set of installers for the most common use-cases. We provide both 64-bit installers as well as installers for ARM systems (called "Apple Silicon" in the macOS ecosystem). 32-bit is not supported. We offer the following binaries directly:
6667

67-
* Windows (x64)
6868
* macOS (Intel and Apple Silicon)
69-
* Debian and Fedora (x64 and ARM)
69+
* Windows (x64)
70+
* Debian/Ubuntu (x64 and ARM)
71+
* Fedora/Red Hat (x64 and ARM)
7072
* AppImage (x64 and ARM)
7173

7274
Thanks to our community, we can also offer you a variety of other installation opportunities:
7375

74-
* [Chocolatey (Windows)](https://community.chocolatey.org/packages/zettlr/)
7576
* [Homebrew (macOS)](https://formulae.brew.sh/cask/zettlr)
77+
* [Aptitude (Ubuntu/Debian)](https://apt.zettlr.com)
78+
* [Flathub (Linux)](https://flathub.org/apps/details/com.zettlr.Zettlr)
79+
* [Chocolatey (Windows)](https://community.chocolatey.org/packages/zettlr/)
7680
* [Arch Linux](https://wiki.archlinux.org/title/Zettlr)
77-
* [Flatpak (Linux)](https://flathub.org/apps/details/com.zettlr.Zettlr)
7881

7982
All other [platforms that Electron supports](https://www.electronjs.org/docs/latest/development/build-instructions-gn#platform-prerequisites) are supported as well, but you will need to build the app yourself for this to work.
8083

@@ -104,7 +107,7 @@ As soon as you are happy with your changes, open a Pull Request here that update
104107

105108
Zettlr is an [Electron](https://www.electronjs.org/)-based app, so to start developing, you'll need to have the following installed on your computer:
106109

107-
1. [NodeJS](https://nodejs.org/). Make sure it's at least Node 20 (`lts/iron`). To test what version you have, run `node -v`.
110+
1. [NodeJS](https://nodejs.org/). Make sure it's at least Node 22 (`lts/jod`). To test what version you have, run `node -v`.
108111
2. [Yarn](https://yarnpkg.com/en/). This is the package manager for the project, as we do not commit `package-lock.json`-files and many commands require yarn. You can install this globally using `npm install -g yarn` or Homebrew, if you are on macOS.
109112
3. On Windows, we recommend to [install the Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install), which will make many of the next steps easier.
110113
4. A few command-line utilities that various scripts require for running the development builds:

package.json

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"type": "git",
1111
"url": "git://github.com/Zettlr/Zettlr.git"
1212
},
13-
"version": "3.4.4",
13+
"version": "3.5.1",
1414
"license": "GPL-3.0",
1515
"description": "Your One-Stop Publication Workbench",
1616
"main": ".webpack/main",
@@ -49,17 +49,17 @@
4949
"@codemirror/collab": "^6.1.1",
5050
"@codemirror/commands": "^6.8.1",
5151
"@codemirror/lang-css": "^6.3.1",
52-
"@codemirror/lang-javascript": "^6.2.3",
53-
"@codemirror/lang-json": "^6.0.1",
54-
"@codemirror/lang-markdown": "^6.3.2",
55-
"@codemirror/lang-php": "^6.0.1",
56-
"@codemirror/lang-python": "^6.1.7",
52+
"@codemirror/lang-javascript": "^6.2.4",
53+
"@codemirror/lang-json": "^6.0.2",
54+
"@codemirror/lang-markdown": "^6.3.3",
55+
"@codemirror/lang-php": "^6.0.2",
56+
"@codemirror/lang-python": "^6.2.1",
5757
"@codemirror/lang-yaml": "^6.1.2",
58-
"@codemirror/language": "^6.0.0",
59-
"@codemirror/legacy-modes": "^6.5.0",
60-
"@codemirror/search": "^6.5.10",
58+
"@codemirror/language": "^6.11.2",
59+
"@codemirror/legacy-modes": "^6.5.1",
60+
"@codemirror/search": "^6.5.11",
6161
"@codemirror/state": "^6.5.2",
62-
"@codemirror/view": "^6.36.5",
62+
"@codemirror/view": "^6.38.0",
6363
"@lezer/common": "^1.2.3",
6464
"@lezer/highlight": "^1.2.1",
6565
"@replit/codemirror-emacs": "^6.1.0",
@@ -78,12 +78,12 @@
7878
"gettext-parser": "^8.0.0",
7979
"got": "^11.8.6",
8080
"katex": "^0.16.22",
81-
"ky": "^1.8.0",
81+
"ky": "^1.8.1",
8282
"luxon": "^3.6.1",
8383
"md5": "^2.3.0",
84-
"mermaid": "^11.6.0",
84+
"mermaid": "^11.8.0",
8585
"nodehun": "^3.0.2",
86-
"pinia": "^3.0.2",
86+
"pinia": "^3.0.3",
8787
"rehype-parse": "^9.0.1",
8888
"rehype-remark": "^10.0.1",
8989
"rehype-remove-comments": "^6.1.1",
@@ -115,15 +115,16 @@
115115
"remark-stringify": "^11.0.0",
116116
"rimraf": "^6.0.1",
117117
"sanitize-filename": "^1.6.3",
118-
"sanitize-html": "^2.15.0",
119-
"semver": "^7.7.1",
118+
"sanitize-html": "^2.17.0",
119+
"semver": "^7.7.2",
120120
"tippy.js": "^6.3.7",
121121
"underscore": "^1.13.7",
122122
"unified": "^11.0.5",
123123
"uuid": "^11.1.0",
124-
"vue": "^3.5.13",
124+
"vue": "^3.5.17",
125125
"vue-virtual-scroller": "^2.0.0-beta.8",
126-
"yaml": "^2.7.1"
126+
"w3c-keyname": "^2.2.8",
127+
"yaml": "^2.8.0"
127128
},
128129
"optionalDependencies": {
129130
"fsevents": "^2.3.3"
@@ -135,28 +136,28 @@
135136
"katex": "^0.16.21"
136137
},
137138
"devDependencies": {
138-
"@electron-forge/cli": "^7.8.0",
139-
"@electron-forge/maker-deb": "^7.8.0",
140-
"@electron-forge/maker-rpm": "^7.8.0",
141-
"@electron-forge/maker-zip": "^7.8.0",
142-
"@electron-forge/plugin-fuses": "^7.8.0",
143-
"@electron-forge/plugin-webpack": "^7.8.0",
139+
"@electron-forge/cli": "^7.8.1",
140+
"@electron-forge/maker-deb": "^7.8.1",
141+
"@electron-forge/maker-rpm": "^7.8.1",
142+
"@electron-forge/maker-zip": "^7.8.1",
143+
"@electron-forge/plugin-fuses": "^7.8.1",
144+
"@electron-forge/plugin-webpack": "^7.8.1",
144145
"@electron/fuses": "^1.8.0",
145146
"@electron/notarize": "^2.5.0",
146-
"@eslint/config-inspector": "^1.0.2",
147+
"@eslint/config-inspector": "^1.1.0",
147148
"@stylistic/eslint-plugin": "^4.2.0",
148149
"@types/adm-zip": "^0.5.7",
149150
"@types/archiver": "^6.0.3",
150151
"@types/command-exists": "^1.2.3",
151152
"@types/d3": "^7.4.3",
152153
"@types/gettext-parser": "^8.0.0",
153154
"@types/katex": "^0.16.7",
154-
"@types/lodash": "^4.17.16",
155+
"@types/lodash": "^4.17.20",
155156
"@types/luxon": "^3.6.2",
156157
"@types/md5": "^2.3.5",
157158
"@types/mocha": "^10.0.10",
158-
"@types/node": "^22.14.0",
159-
"@types/sanitize-html": "^2.15.0",
159+
"@types/node": "^22.16.0",
160+
"@types/sanitize-html": "^2.16.0",
160161
"@types/semver": "^7.7.0",
161162
"@types/showdown": "^2.0.6",
162163
"@types/underscore": "^1.13.0",
@@ -168,28 +169,28 @@
168169
"cross-env": "^7.0.3",
169170
"css-loader": "^7.1.2",
170171
"csso": "^5.0.5",
171-
"electron": "^35.1.5",
172+
"electron": "^37.2.0",
172173
"electron-builder": "^26.0.13",
173174
"electron-devtools-assembler": "^1.2.0",
174175
"eslint": "^9.24.0",
175176
"eslint-plugin-import": "^2.31.0",
176177
"eslint-plugin-n": "^17.17.0",
177178
"eslint-plugin-promise": "^7.2.1",
178179
"eslint-plugin-vue": "^10.0.0",
179-
"jsdom": "^26.0.0",
180+
"jsdom": "^26.1.0",
180181
"less": "^4.3.0",
181-
"less-loader": "^12.2.0",
182-
"mocha": "^11.2.2",
182+
"less-loader": "^12.3.0",
183+
"mocha": "^11.7.1",
183184
"node-loader": "^2.1.0",
184185
"style-loader": "^4.0.0",
185186
"ts-loader": "^9.5.2",
186187
"ts-node": "^10.9.2",
187188
"tsconfig-paths": "^4.2.0",
188189
"typescript": "^5.8.3",
189-
"vue-eslint-parser": "^10.1.3",
190+
"vue-eslint-parser": "^10.2.0",
190191
"vue-loader": "^17.4.2",
191-
"vue-tsc": "^2.2.8",
192-
"webpack": "^5.99.5"
192+
"vue-tsc": "^2.2.12",
193+
"webpack": "^5.99.9"
193194
},
194195
"packageManager": "yarn@4.6.0"
195196
}

scripts/assets/apt-index.htm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ <h2>Using the Zettlr APT Repository</h2>
155155
</p>
156156
<p><pre><code class="language-bash"># First, add our public key to APT
157157
curl -s --compressed "https://apt.zettlr.com/KEY.gpg" | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/zettlr_apt.gpg > /dev/null
158-
# Second, add this PPA to your sources
158+
# Second, add this repository to your sources
159159
sudo curl -s --compressed -o /etc/apt/sources.list.d/zettlr.list "https://apt.zettlr.com/zettlr.list"
160160
# Third, update APT so that it fetches the available files
161161
sudo apt update

scripts/get-pandoc.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# because this gives us more control over the built-in pandoc binary.
66

77
# Retrieve the versions from https://github.com/jgm/pandoc/releases/latest
8-
VERSION="3.6.4"
8+
VERSION="3.7.0.2"
99

1010
BASE_PATH="https://github.com/jgm/pandoc/releases/download/$VERSION"
1111

scripts/lint-po.mjs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ async function lintPOfiles () {
3535
continue
3636
}
3737

38+
// Ensure that the language files follow the correct naming specification.
39+
// That is: Only latin letters, digits, and hyphens. Some standards use
40+
// underscores, but Zettlr usually assumes hyphens.
41+
if (!/^[a-zA-Z0-9-]+\.po$/.test(file)) {
42+
error(`File "${file}" does not follow BCP 47 naming scheme ("xx-XX.po").`)
43+
failedFiles++
44+
continue
45+
}
46+
3847
info(`Parsing ${file}...`)
3948
try {
4049
const contents = await fs.readFile(path.join(poDir, file), 'utf-8')

0 commit comments

Comments
 (0)