Changes for Version 3.0.0 (pending)
This will be a breaking release. For example, the representation of version
numbers may change. The sx- / sz-based encodings of zettel will change. Zettel
IDs will always be encoded as strings; the numeric encoding will be removed.
The behavior of syntax value “none” will change.
- Change data encoding of zettel list queries. Zettel identifiers are
encoded as a string value (was: numeric value). Make encoding of zettel
list simpler by changing
(zettel (id ZID) ...to(zettel "ZID" .... (breaking: api) - Change data encoding for zettel retrieval: merge encoding/content encoding
into one list. Now it is:
(content "" "Change data encoding ..."). (breaking: api) - Data encoding of access rights changed from numeric scheme to a symbol
based scheme:
(rights create read update delete). (breaking: api) - Change sz representation of content for headings and inline marks. Node identifiers are only generated when needed, e.g. for HTML encoding. (breaking: api)
- List items are now
(ITEM attr ...)instead of(BLOCK ...). (breaking: api) - Descriptions get a cleaner internal structure:
TERM,DETAIL, andENTRY(instead of nothing (for terms) andBLOCK(for detail and entry)). (breaking: api) - A table row now starts with the symbol
ROW, followed by attributes, and then the list of table cells. (breaking: api) - Content of zettel with syntax “none” is treated as empty in the API. Previously, it was evaluated to a description list of the zettel's metadata. This is now done only in the WebUI. (breaking: api)
- Remove support for metadata key
box-number. Keybox-nameis the replacement. (breaking: api, box) - Remove support for writing / encoding zettel with YAML separator
(
---). Read support will be removed in a future major version. (breaking: api, box) - The result of a block transclusion is only wrapped into an region block, if the transclusion element specifies attributes. Same for inline transclusion, which are only wrapped into an inline span, if it specifies at least one attribute. Unconditional wrapping was introduced in 1.0.0. (minor: zettelmarkup)
- Add metadata key
box-namethat will replacebox-number. (minor: api, box) - Allow to retrieve zettel content via data encoding. (minor: api)
Changes for Version 2.1.0 (2026-07-07)
The main goal of this release is to improve Markdown support. Users will be able to use Markdown instead of Zettelmarkup. However, Markdown has some limitations compared to Zettelmarkup, including the lack of transclusions and fewer text formatting options. In addition, if Markdown documents contain HTML elements, Zettelstore may ignore or hide them, depending on the configuration, for security reasons.
- Add a second Markdown dialect: emark (Extended CommonMark). It supports simple GFM-style tables and strikethrough formatting. Additional language elements, such as endnotes and description lists, may be added in the future. (major: markdown)
- Update the Markdown encoder to generate Extended CommonMark output. (major: markdown)
- Add the runtime config key
markdown-dialectto specify which dialect should be used for the generic syntax values “md” and “markdown”. The value “cmark” selects the default CommonMark dialect explicitly. (minor: markdown) - Extend file uploads to support additional file types. (minor: webui)
- Allow the wildcard value “*” for the
zettel-file-syntaxruntime configuration. (minor) - Allow empty table rows by using only ”|“ at the beginning of a line. (minor: zmk)
- Trim leading and trailing spaces in table cells. (minor: zmk)
- Allow
zettel-file-syntaxto be configured at runtime. (bug)
Changes for Version 2.0.0 (2026-03-06)
- The syntax for signaling a hard line break changes to an empty comment at the end of a line. Previously, it was a space character or a backslash character at the end of a line. An empty comment may contain whitespace characters. (breaking: zmk)
- Rename metadata keys:
superiortosuperordinateandsubordinatestosubordinate. (breaking) - Remove runtime configuration
show-subordinate-links(breaking: webui) - Use
successor/predecessorrelation to specify load dependencies between sxn zettel. Removeprecursor/folgedependencies between some predefined zettel. (breaking) - Introduce startup configuration
refresh-modeto allow users to trigger a refresh of the search index or parts of it. Previously,expert-modecontrolled this, but this overloads its original meaning.expert-modenow only controls the visibility of zettel. See the manual for details. (breaking) - Move key
simple-modefrom service “config” to service “core”. Move keysx-max-nestingfrom service “web” to service “config”. (breaking: console) - Add an action link on the zettel and info pages to generate a Zettelmarkup reference to the current zettel and copy it into the system clipboard. (minor: webui)
- Add support for metadata keys
successorandpredecessor. These can be used to indicate some order between zettel wherefolge/precursorare not suitable. (minor) - Many smaller bug fixes and improvements, to the software and to the documentation.
Changes for Version 1.0.2 (2025-12-21)
- Use correct version of Zettelstore Client
Changes for Version 1.0.1 (2025-12-19)
- Fix wrong default values for startup configuration values
token-lifetime-apiandtoken-lifetime-html. - Fix many writing errors, mostly in the manual.
Changes for Version 1.0.0 (2025-12-05)
- SZ encoding of lists (ordered, unordered, and quotations) has been simplified by allowing only block elements. Previously, inline elements were also permitted to signal a compact list. However, this behavior is only relevant for HTML generation. Therefore, the detection of compact lists is now performed exclusively during HTML generation. (breaking)
- SZ encoding of BLOBs has been changed from
(BLOB attrs inlines syntax data)to(BLOB attrs syntax data inline ...). (breaking) - The result of a block transclusion is now wrapped into an region block,
which inherits the attributes of the transclusion. A
widthattribute is converted into an appropriatestyleattribute. Similarly, the result of an inline transclusion is now wrapped into an inline span element. (minor: zettelmarkup) - Some smaller bug fixes and improvements, to the software and to the documentation.
Older changes can be found here.