Your One-Stop Publication Workbench
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
Fixes in the Citation Engine, Exports, and Projects | Quality of Life Improvements
This beta release fixes many small nuisances. Most notably, it fixes:
Full Changelog: https://github.com/Zettlr/Zettlr/blob/develop/CHANGELOG.md
Layout Fixes | Tag detection | Autocorrect improvements
This update fixes a few more issues to the last beta and is mainly focused on layouting issues, tag detection, and autocorrect. It also includes an updated Taiwanese translation.
Note: If this is the very first beta you are switching to since 2.3, you may want to read the "Upcoming" section in our Changelog first.
Full Changelog: https://github.com/Zettlr/Zettlr/compare/v3.0.0-beta.4...v3.0.0-beta.5
Performance Improvements | Bug Fixes
This next beta release for the upcoming 3.0 release mainly includes small improvements that further increase stability of the release. Most notable changes are:
Full Changelog: https://github.com/Zettlr/Zettlr/compare/v3.0.0-beta.3...v3.0.0-beta.4
Stability and Performance Improvements
This fourth beta ships with a large amount of stability and performance improvements. This means that most changes have happened under the hood and should only be noticeable by you in terms of better response, better behavior, and smoother experience. Notably, the following changes have been made:
Full Changelog: https://github.com/Zettlr/Zettlr/compare/v3.0.0-beta.2...v3.0.0-beta.3
Bug Fixes | Native Modules Support | No Windows ARM
This next beta again ships with a set of bug fixes. Here's the shortlist of what's changed since the last beta:
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.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.
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.
*.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)
22.x.x
2.19.2
4.x.x
@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
LanguageTool integration | Status bar | Bug Fixes
This new beta includes a many bug fixes and a few new highlights, such as a new integration with LanguageTool! Here's what has changed since the last beta in all brevity:
And here's the changelog as it stands thus far:
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.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.
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.
*.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)
22.x.x
2.19.2
4.x.x
@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
Multiple windows & panes | Update Internal Links | New Profile System
Happy New Year everyone. We start 2023 with a bang: Zettlr 3.0 goes public beta! Tons of improvements have made it into the app, so brace yourself. As always, we've accompanied the start of the beta with a blog post which you can find by following this link.
Attention: Many things have changed, so please read this Changelog carefully before upgrading!
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.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.
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.
*.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)
22.x.x
2.19.2
4.x.x
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
Full Changelog: https://github.com/Zettlr/Zettlr/compare/v2.3.0...v3.0.0-beta