Your One-Stop Publication Workbench
This update changes a few minor but notable things from the previous beta release. Here they are at a glance:
gettext
to auto-translate sentences that appeared similar, which has led to confusion. That being said, should you find odd-sounding translations if you're not using English (US) as your app language, this is likely an issue that can be easily solved and we would like to invite you to become a translator. All you need to know can be found on the project repository.For everything that has changed since v3.0.0, refer to the full changelog below.
For a long time now, Zettlr would (sometimes aggressively so) detect plain links and display them in a rendered state. In some cases, this was nice as it would relieve you from having to surround such links with pointy or angled brackets.
However, especially in the latest evolution of this parser plugin, the link detection was a bit too aggressive and interfered, e.g., with emphasis highlighting. In this version, we have entirely removed our custom link detection and rely upon the more straight-forward way of detecting links.
Regarding your exporting experience, this should not have any impact, since the auto-link-detection feature wasn't supported by Pandoc anyhow, but depending on how you have been writing, you may notice less detected links in your documents.
To add "plain" links (without using the full []()
-syntax) from now on, simply
surround them with angled brackets: <https://www.google.com>
or
<[email protected]>
. Note that the protocol (https://
) is required, so
<www.google.com>
will not work.
This changes brings Zettlr's link functionality much more into alignment with other editors as well, since this is the way that many other applications handle links as well.
This update brings a long-awaited change to Zettlr's handling of internal links
(sometimes called Wikilinks). Specifically, with this version, Zettlr finally
supports optional titles in such links. Your old links in the format [[link]]
still work fine, but now you can add a title that is different from the link,
separated by a pipe, or vertical bar character (|
).
If such a title is given, Zettlr will use it in various ways to make your files more readable. For example, if you have the link renderer activated in the settings, it will take care of hiding the link target of Wikilinks as well as those of regular Markdown links.
Since there is no way of knowing which of the two parts is the link, and which
is the title, Zettlr follows Pandoc's solution in allowing you to specify how
internal links are structured for you. The default and recommended setting is to
put links first, and titles second ([[link|title]]
). This ensure compatibility
with VimWiki, MediaWiki, Obsidian, and others. However, should you need to
target GitHub wiki pages or another application that expects a title to come
first, you can select the alternative option ([[title|link]]
).
In order to make Pandoc aware of your choice, you can add one of the following
reader extensions to your export profiles: wikilinks_title_after_pipe
or
wikilinks_title_before_pipe
.
Lastly, due to this improvement, we have changed the default setting for "link with filename" from "always" to "never", since it will be more ergonomic to use a custom link title directly instead of having the filename pop up after the link. This default setting applies to new installations; so you may consider to change this setting manually yourself as well.
After the release of Zettlr v3.0.0, some users have complained that their
internal links have stopped working. It turns out that quite a lot were using
Logseq's syntax for adding titles to internal links ([Title]([[Link]])
), which
we broke during a refactor of the Markdown parser. This update partially
restores this link functionality, allowing you to Cmd/Ctrl-Click
them to
follow these links again.
Note that we have not yet implemented the functionality of auto-renaming files or showing tooltips on these links.
[[link|title]]
), which ensures compatibility to, e.g., VimWiki, MediaWiki,
or Obsidian, whereas the alternative setting ([[title|link]]
) is compatible
to GitHub wiki syntax. Remember that you need to enable the corresponding
option on the Pandoc Markdown reader (wikilinks_title_after_pipe
or
wikilinks_title_before_pipe
, respectively) if you wish to export files with
this option:
);
and Emojis will always be sorted below your snippets -- you can turn this off
in the editor settingsCmd/Ctrl+Shift+0
(to align with the
file manager shortcut, Cmd/Ctrl+Shift+1
)Alt-G
being assigned to some character were unable to type
that (specifically, Swiss-Mac keyboard users could not type an @
)[Title]([[Link]])
by
clicking them with Cmd/Ctrl
pressedvue-recommended
to the vue3-recommended
ESLint rulesetsortingTime
since that can be inferred from the
option fileMetaTime
zkn.autoCreateLinkedFiles
, since that can be
inferred from the option zkn.customDir
3.1.12
29
Teleport
(#4663)commandExists
as it appears to have a few minor issues on Windows installsreload-editors
shortcut:install
and shortcut:uninstall
to add develop
shortcuts on Linux systems, allowing the simple launching of a binary compiled
from source (rather than the provided binaries)platformVersion
in the about
debug info tabpreventNavigation
utility function into the lifecycle handlers to
reduce boilerplate code and make the app more secure@codemirror/lang-yaml
)test-gui
command; instead now the start
command does the same;
similarly, start
won't touch any existing Zettlr configuration anymorethemeManager
and replace it with a
simpler, more general darkTheme
extensionNew Preferences UI | Link Improvements | Bug Fixes | Quality of Life Improvements
Thank you for testing Zettlr's beta releases and helping us create a stable and enjoyable release! Please report any bugs you find on GitHub. If you have any questions, we warmly welcome you on our Discord server. Finally, Zettlr is and will always remain Free and Open Source Software (FOSS), but every app requires some funding. If you enjoy Zettlr and would like to ensure it remains a viable alternative for professional writing, consider becoming a Patron on Patreon or use PayPal. If you prefer, you can also send over a small tip on Ko-Fi. You can find more information on our website.
Since the 3.0.0 major release, we've been hard at work at improving the app everywhere to aid your writing process even better. Zettlr 3.1 will contain a serious amount of improvements, all of which you can find in the changelog below. Let us highlight a few of the main things we have implemented:
A new preferences UI. Together with UI/UX designer Artem Barinov, we have spent the better half of 2023 thinking about how to improve the preferences UI. The result is a fully redesigned and much more accessible UI that allows you to find settings faster and adapt Zettlr to your own style.
A more accidental but nonetheless central theme of this release is links. One thing you may immediately note when testing out the beta is that the plain link detection has changed. You can read more below, but in short: What you see within Zettlr is now much closer aligned with what you actually get once you export your files.
Continuing with the Zelda link theme, Zettlr finally supports proper Wikilinks in: you can now add titles to them. This is a long-awaited feature that other editors already support, and we're happy that Zettlr now follows suit. This means, instead of the (depending on how you use them) cumbersome "Add filename after link" setting, you can now directly link them within proper, grammatical sentences. Activating the link renderer in the preferences will automatically hide the link and only show the title if applicable.
Finally, we have received many reports by users online and offline that their links broke after the release of v3.0.0. If you belong to this group of users, rejoice: We listen to the user base, and this release begins the work of re-enabling their functionality. Again, a more elaborate description can be found below.
Lastly, one issue that people have been wanting is an easy way of backing up snippets or export/import profiles. Until now this was a bit cumbersome, as you had to manually navigate into the application data directory. But no more! This version adds buttons to the appropriate places in the assets manager that allow you to open the corresponding folders directly, making it easy to simply copy and/or paste files into those folders, synchronizing that between your devices.
A lot more has changed, and we hope that these changes are all to your liking. Should something not work as expected, you know where to go!
Thank you again for helping the project by rigorously testing the beta releases.
For a long time now, Zettlr would (sometimes aggressively so) detect plain links and display them in a rendered state. In some cases, this was nice as it would relieve you from having to surround such links with pointy or angled brackets.
However, especially in the latest evolution of this parser plugin, the link detection was a bit too aggressive and interfered, e.g., with emphasis highlighting. In this version, we have entirely removed our custom link detection and rely upon the more straight-forward way of detecting links.
Regarding your exporting experience, this should not have any impact, since the auto-link-detection feature wasn't supported by Pandoc anyhow, but depending on how you have been writing, you may notice less detected links in your documents.
To add "plain" links (without using the full []()
-syntax) from now on, simply
surround them with angled brackets: <https://www.google.com>
or
<[email protected]>
. Note that the protocol (https://
) is required, so
<www.google.com>
will not work.
This changes brings Zettlr's link functionality much more into alignment with other editors as well, since this is the way that many other applications handle links as well.
This update brings a long-awaited change to Zettlr's handling of internal links
(sometimes called Wikilinks). Specifically, with this version, Zettlr finally
supports optional titles in such links. Your old links in the format [[link]]
still work fine, but now you can add a title that is different from the link,
separated by a pipe, or vertical bar character (|
).
If such a title is given, Zettlr will use it in various ways to make your files more readable. For example, if you have the link renderer activated in the settings, it will take care of hiding the link target of Wikilinks as well as those of regular Markdown links.
Since there is no way of knowing which of the two parts is the link, and which
is the title, Zettlr follows Pandoc's solution in allowing you to specify how
internal links are structured for you. The default and recommended setting is to
put links first, and titles second ([[link|title]]
). This ensure compatibility
with VimWiki, MediaWiki, Obsidian, and others. However, should you need to
target GitHub wiki pages or another application that expects a title to come
first, you can select the alternative option ([[title|link]]
).
In order to make Pandoc aware of your choice, you can add one of the following
reader extensions to your export profiles: wikilinks_title_after_pipe
or
wikilinks_title_before_pipe
.
Lastly, due to this improvement, we have changed the default setting for "link with filename" from "always" to "never", since it will be more ergonomic to use a custom link title directly instead of having the filename pop up after the link. This default setting applies to new installations; so you may consider to change this setting manually yourself as well.
After the release of Zettlr v3.0.0, some users have complained that their
internal links have stopped working. It turns out that quite a lot were using
Logseq's syntax for adding titles to internal links ([Title]([[Link]])
), which
we broke during a refactor of the Markdown parser. This update partially
restores this link functionality, allowing you to Cmd/Ctrl-Click
them to
follow these links again.
Note that we have not yet implemented the functionality of auto-renaming files or showing tooltips on these links.
[[link|title]]
), which ensures compatibility to, e.g., VimWiki, MediaWiki,
or Obsidian, whereas the alternative setting ([[title|link]]
) is compatible
to GitHub wiki syntax. Remember that you need to enable the corresponding
option on the Pandoc Markdown reader (wikilinks_title_after_pipe
or
wikilinks_title_before_pipe
, respectively) if you wish to export files with
this option:
);
and Emojis will always be sorted below your snippets -- you can turn this off
in the editor settingsCmd/Ctrl+Shift+0
(to align with the
file manager shortcut, Cmd/Ctrl+Shift+1
)Alt-G
being assigned to some character were unable to type
that (specifically, Swiss-Mac keyboard users could not type an @
)[Title]([[Link]])
by
clicking them with Cmd/Ctrl
pressedvue-recommended
to the vue3-recommended
ESLint rulesetsortingTime
since that can be inferred from the
option fileMetaTime
zkn.autoCreateLinkedFiles
, since that can be
inferred from the option zkn.customDir
3.1.12
29
Teleport
(#4663)commandExists
as it appears to have a few minor issues on Windows installsreload-editors
shortcut:install
and shortcut:uninstall
to add develop
shortcuts on Linux systems, allowing the simple launching of a binary compiled
from source (rather than the provided binaries)platformVersion
in the about
debug info tabMinor patch | Fixes Linux ARM | Drops support for macOS 10.13 & 10.14
This update includes a critical security fix. We therefore recommend all users install this update as soon as possible. If you run macOS below version 10.15, which is no longer supported in Zettlr 3.0.5, please upgrade to Zettlr 3.0.4 by downloading this from GitHub Releases, which includes the security patch but still works on macOS 10.13 and 10.14 until you are able to update your macOS to 10.15 or higher.
Immediately after v3.0.4, we decided to release a minor upgrade that bumps the underlying Electron framework to the most recent version. This will stop segmentation faults in Wayland environments and prevent the flagging of Zettlr in repositories such as AUR due to outdated dependencies.
Due to Zettlr's underlying Electron framework dropping support for macOS 10.13 (High Sierra) and 10.14 (Mojave), Zettlr drops support for these operating systems as well. To continue to use Zettlr on a Mac, ensure to update to at least macOS 10.15 (Catalina).
Since Zettlr v3.0.0, Linux users on ARM-machines had the issue that they could not run the app, as a dependency has been compiled for the wrong architecture. Thanks to efforts by @LaPingvino, this has now been finally fixed and you should be able to run the app again just fine on ARM computers with Linux.
v28.2.1
); this
fixes segmentation fault issues in Wayland environments (#4877) and ensures
that Zettlr keeps running a supported Electron version, which is especially
pressing for the Arch Linux repository (see #4887; thanks to @alerque for
bringing this to our attention), but also means that macOS 10.13 and 10.14 are
no longer supportedSecurity patch | Please Update immediately
Dear users,
a security researcher has brought to our attention an issue that can lead to a potential remote code execution (RCE) attack utilizing Zettlr's binary. This issue has been first discovered and exploited in 2023. It is unlikely that you have been affected, since the effort for this exploit is comparatively high and it requires you to take some non-trivial actions. However, since we are committed to making the app as safe as humanely possible to use, and the corresponding fix was pretty easy to implement, we decided to offer this security release that includes the same functionality as Zettlr v3.0.3, but with the added security patch included.
A CVE (Common Vulnerabilities and Exposures) number has been applied for at MITRE, but not yet issued. Once we know the number, we will publish a postmortem on our blog and include some background as well as details about what this issue exactly implied, how it could have been exploited, and how we have mitigated the issue in this patch.
Thanks again to user "soulfood" for bringing this to our attention and for the cooperation in fixing the issue in a timely manner.
Nothing changed.
v25.9.8
)--inspect
). This can be abused by malicious
actors for remote code execution (RCE) attacks (CVE number applied for at
MITRE; not yet issued; please see the Zettlr blog for updates)Bug Fixes | Performance Improvements | CSS Changes
This patch includes a series of minor bug fixes and performance improvements. In addition, this patch refactors a lot of the theming of the app. This should not impact anyone, but may lead to some of you having to do minor updates to your Custom CSS, if you use any.
Are you satisfied with Zettlr?
Then please consider becoming a patron over at Patreon, or make a one-time payment via PayPal.
This update includes a full refactor of the theming: The editor themes (Berlin, Frankfurt, Bielefeld, Karl-Marx-Stadt, and Bordeaux) have now moved to their own theme files and do not come with standard CSS anymore. This heavily un-clutters the codebase, but it may impact your Custom CSS, should you use this feature. We have ensured that no class names change and that the styling is mostly the same, but the possibility of having to adapt the Custom CSS may arise for some of you.
Tab
not indenting/unindenting code in the CodeEditors (snippets,
profiles, etc.)Alt+Click
in GraphView will force the document to be opened in a new tab.*.less
-files into proper theme plugins for
CodeMirror v6; this means that they will not provide any global styles
anymore; any applicable styling has been moved to more appropriate places
(CodeMirror plugins as well as the WindowChrome and the various remaining
*.less
files). We tested the changes out and in our settings, no changes
were necessary; sometimes you may need to adapt class definitions!important
to make them work (#4719)fs.unlink
with fs.rm
in safeDelete
to support recursive removal
of directoriesfsal-directory::removeChild
now calls pathExists
instead of isFile
to
make sure directories also are removed in removeChildpathExists
wraps fs.promises.access
.3.1.9
openFile
does now handle the case when windowId and leafId
is undefined, by keeping track on the last used editor.Bug Fixes | Quality of Life Updates | Security Improvements
This update fixed a few issues here and there that have been identified since the last release. This mainly refers to how link rendering is done, a potential data loss issue, and the file importer. Additionally, some translations have been updated. Finally, this update contains a security patch, so we recommend a swift update.
<
and >
)access
and stat
calls for files and directories in the
FSAL with a wrapper that will later on allow us to keep different file systems
(e.g., WebDav versus local filesystem) opaque to the userctime
instead of mtime
, leaving any changes to the
directory that do not also update ctime
hidden from the FSALInlineCode
element for the Pandoc attribute
parserBug fixes and performance improvements
This is a small update that fixes many minor nuisances that got reported since the release of 3.0. It also includes a security update, so we recommend this update for everyone.
If you enjoy Zettlr, consider supporting us on Patreon or send a one-time donation via PayPal.
plainPandocReaderWriter
utility function to properly extract the
plain reader/writer in all possible configurationsca-CA
to ca-ES
New Release | Zettlr v3
Hello everybody! It is finally time — after more than a year of constant development and improvement, we are more than proud to finally be able to deliver you the next iteration of Zettlr. We have been extra careful to provide you in this version a bug-free and enjoyable writing experience that you will love. Many things have changed; way too many to quickly go through them, so as with every release, we welcome you to do two things before updating:
First, please read our accompanying blog post, in which we place this update into perspective and explain the reasoning behind certain changes to the application.
After you are done, immediately read the "READ THIS FIRST!" section of the changelog below. This is crucial this time around, which is why it's in all caps. Afterwards, we invite you to also read the rest of the changelog, which you should do anyway.
Are you satisfied with Zettlr?
Then please consider becoming a patron over at Patreon, or make a one-time payment via PayPal. These contributions help us pay the server bills and the occasional coffee for tired developers ;)
This update brings a host of changes and new features. If you're upgrading from an older version of Zettlr, you will have to re-do a few things because due to the extensive changes, we had to adapt how your data is persisted. Here's the quick list:
export.format.yaml
and
import.format.yaml
export options. These are the "old" profiles we have
kept in case you made modifications. We suggest you copy over all changes to
the new profiles and then delete them, or rename those old ones to more
memorable names. Read more below.Cmd/Ctrl
-clicking it, there is now an "Edit" button inside the footnote
preview which, upon clicking, will bring you to the footnote context. This
has the benefit that you will have full syntax highlighting support as well
as any shortcuts and commands you may need.[[
and ]]
respectively. We have figured
that nobody needs to configure this, and it makes many parts of our code
easier.For 3.0, we decided that it's time to give our app icons a facelift. For the past six years, Zettlr sported working, but relatively bland icons to convey its existence on the taskbar to its users. The new icons still convey the same message, but you will notice that they now integrate much better into the new Windows 11 Fluent UI.
We decided to exchange the icons on Linux as well. They may not seamlessly integrate into your specific UI, but we feel they will definitely look more modern than the previous iteration of icons.
With this move, the Windows and Linux experience of Zettlr finally moves on par to the macOS experience, which has received an updated icon with the release of Zettlr 2.0.
A long awaited feature has made it into this version: Now you can open multiple windows and you can split the editor area in every window into multiple parts, so-called editor panes (sometimes we may call them "leafs" since internally they are represented as a tree structure. Feel free to remind us in that case that we're talking to humans, not our code). This means you can now open as many files as you wish at the same time, and you can spread them out across multiple windows. This will especially benefit workflows that rely on having open multiple files side by side to copy information or to read them. However, if you are happy with the old ways, you can of course opt not to use them. Here's how it works:
Cmd/Ctrl+Shift+N
.This update introduces a new way to work with defaults files. At a glance, here's what has changed:
reader
and writer
properties of defaults fileswriter
or reader
for such a file, this change will be
recognized by Zettlr and be treated accordinglyThe tag manager has received a necessary face lift. Now, the tag manager shows all your tags and allows you to assign/un-assign colors and descriptions. This makes it easier to assign colors to certain tags without having to remember the tag first. Additionally, it gives you a better overview over your tags. The info is now being propagated better across the app, with more places showing the assigned colors for tags.
Additionally, you now have a better way to consolidate your tags: Within the tag manager, you can now rename tags in order to clean up your tagging system.
As more and more users have increasingly large workspaces, we receive an increasing amount of feedback that the app start seems sluggish. To indicate that nothing is wrong and Zettlr simply needs time to recreate the cache, we have implemented a splash screen that shows if the file loading isn't finished after one second and displays the boot process to show what is happening behind the hood.
There are two instances where you will want to migrate something.
Since Zettlr will never remove any data without asking, it will keep the
previous files in your defaults directory. Now that their filename is also
meaningful, you can see them by their naming structure: import.format.yaml
and
export.format.yaml
. You are free to remove them or rename and keep them.
Zettlr ships with a set of new files that are now additionally appropriately named. Those files are "protected". Protected files have a small lock icon next to their name. Protected means that if you delete or rename them, they will automatically be recreated. You can use this to your advantage: By deleting such a file, you are effectively resetting it to factory default (good if you forgot what you changed). By renaming such a file, you can effectively make a copy to have several versions of the same settings depending on your needs.
Since we have now dropped our internal reveal.js exporter, there are a few changes you have to make to your existing reveal.js presentations. First, the theme must now be defined in a YAML frontmatter instead of via the dropdown. A minimal working YAML frontmatter will look like this:
---
theme: league
---
... the rest of the file
Supported theme values are:
beige
black
(the default, in this case you can omit the theme
variable)blood
league
moon
night
serif
simple
sky
solarized
white
Then, in order to get a working reveal.js presentation, you have to make sure
that the property standalone: true
is inside the profile (this is the
default). In order to additionally copy everything into the HTML file to create
a truly self-contained presentation, set the property self-contained: true
.
All other things should work as before, but may require a small tweak here or there.
pandoc_working_dir
within the zettlr
object*.qmd
)*.tex
or *.json
) now have line numbers enabled and the
margins of the main editor removed by defaultCURRENT_ID
: Holds the currently assigned Zettelkasten ID to the fileFILENAME
: Holds the filename of the current fileDIRECTORY
: Holds the directory path for the current fileEXTENSION
: Holds the file extension for the current fileCmd/Ctrl+S
while a TableEditor is focused, this will now trigger an
update that applies the changes to the underlying document. In other words,
when editing a table, you can press Cmd/Ctrl+S
twice to first apply any
changes from the table to the document and second save the document itself.{.unnumbered}
)lua
syntax highlighting supportSome sentence by @Author2015
renders as
Some sentence by Author (2015)
instead of Some sentence by (Author 2015)
default
and dark
depending on the app's displaysystem
by default for all operating systems, not
just macOS/Windows25.x.x
3.1.6.2
4.x.x
electron-devtools-installer
with electron-devtools-assembler
, as
the former appears to be unmaintained@clr/icons
to @cds/core
Meta
descriptors; now all descriptors are unified across main
and renderer processeshash
; the FSAL cache now is being called
with absolute file paths. Hashed paths are only used to determine the shard.nspell
with nodehun
so that we can load any Hunspell-compatible
dictionary file in Zettlr, including the previously too-complex ones such as
the Italian or Portuguese dictionarieschokidar
should not need to fall
back to CPU intensive polling anymoregettext
Zettlr
class; the last remnant of the old, class-based systemsvg-inline-loader
, raw-loader
, and file-loader
Debian Installer Issues | Project Export Settings
This almost final beta for Zettlr 3.0 fixes a bunch of issues users were experiencing with the Debian installers. Additionally, we fixed the project export format selection, which unfortunately broke during the last beta.
Full Changelog: https://github.com/Zettlr/Zettlr/compare/v3.0.0-beta.7...v3.0.0-beta.8
Custom Commands | Better WYSIWYG | Quality of Life
This release contains a few features and enhancements and another set of bug fixes. As always, the comprehensive list of bug fixes can be found in our changelog.
Most notably, this beta …
All Changes since last version: https://github.com/Zettlr/Zettlr/compare/v3.0.0-beta.6...v3.0.0-beta.7