## Summary
This version fixes several bugs related to link validation and lightbox configuration.
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version adds support for installable themes. You can now bundle your theme overrides and package them into a custom theme which can be installed via `pip`.
As of now, we closely mirror the process used by MkDocs, where themes just need to register themselves in the `mkdocs.themes` entrypoint, to allow users that already have derivations of Material for MkDocs to run them on Zensical. In the coming months, with the advent of the [component system], we'll make this process much more flexible and foster reuse at the component level. For now, this is a first step to allow sharing of theme overrides and default configurations inside organizations with dozens or even thousands of projects.
> [!TIP]
>
> If your organization has been a happy user of Material for MkDocs and is considering switching to Zensical, please support our work through [Zensical Spark]. Your financial contribution helps us achieve full compatibility with MkDocs much faster, gives you access to hands-on support by the core team, and allows you to shape Zensical together with us.
[component system]: https://zensical.org/about/roadmap/#component-system
[Zensical Spark]: https://zensical.org/spark/
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
This version adds the missing update of the user interface that should've been included with 0.0.35.
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version adds native support for [GLightbox], a JavaScript lightbox library to add zoom and gallery features to images. Images can be automatically annotated with the new `glightbox` Markdown extension. Add the following to `zensical.toml`:
``` toml
[project.markdown_extensions.zensical.extensions.glightbox]
```
> [!NOTE]
>
> In order to integrate with configuration in `mkdocs.yml`, where [GLightbox] is implemented as a plugin, a compatibility shim is included, so no re-configuration is necessary if you're already using the plugin. Note that our extension is more efficient and faster than the plugin, as it does not re-parse the entire HTML of each page, but instead uses Python Markdown's native extension API.
### HTML in the table of contents
Additionally, __section titles in the table of contents will now render with HTML markup__, so you can use emojis and other inline features in section titles and have them render correctly in the table of contents. In Material for MkDocs, this functionality was implemented with the `typeset` plugin. Zensical now supports this natively.
### Relative links in raw HTML
Relative links in raw HTML are now correctly resolved. Initially, we carried over the link processing and resolution logic from MkDocs, which does not support relative links in raw HTML to this day. We implemented a Python Markdown postprocessor, to ensure that relative links in raw HTML are handled as well.
[GLightbox]: https://biati-digital.github.io/glightbox/
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version ships support for usage of TOML v1.1.0 in `zensical.toml`, which allows new lines in inline tables. Thus, configuration files can now be made more readable, especially when they contain long lists of items. For example:
__Prior to this version__
``` toml
palette = [
{ scheme = "default", toggle = { icon = "lucide/sun", name = "Switch to dark mode" } },
{ scheme = "slate", toggle = { icon = "lucide/moon", name = "Switch to light mode" } },
]
```
__With this version__
``` toml
palette = [
{
scheme = "default",
toggle = {
icon = "lucide/sun",
name = "Switch to dark mode"
}
},
{
scheme = "slate",
toggle = {
icon = "lucide/moon",
name = "Switch to light mode"
}
},
]
```
Additionally, Markdown pages with snippets are now rebuilt when snippets are updated, and an issue with breadcrumbs was fixed when the top-level `index.md` was not at the root of `nav` defined explicitly.
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version updates our official [Docker image] to be based on Alpine Linux for better compatibility and ease of use. It also adds all recommended Markdown Extensions to the generated `zensical.toml` file when bootstrapping a project with `zensical new`, ensuring a smoother setup experience. Additionally, the [user interface] is updated to [v0.0.13], which includes two bug fixes for anchor links in the table of contents.
[Docker image]: https://hub.docker.com/r/zensical/zensical
[user interface]: https://github.com/zensical/ui
[v0.0.13]: https://github.com/zensical/ui/releases/tag/v0.0.13
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version fixes a bug where Markdown files used as snippets were included into auto-generated navigation, and a bug with prefix stripping when the site URL contains a path component. Additionally, the Pygments dependency was updated to mitigate a vulnerability.
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version updates the [user interface] to [v0.0.12], which includes the [removal of 19 brand icons] due to the update of Lucide to v1, and the addition of 166 new icons, most of them in SimpleIcons and FontAwesome. Additionally, there are bug fixes related to the latest changes of the table of contents in the modern theme and instant navigation on anchor links.
[user interface]: https://github.com/zensical/ui
[v0.0.12]: https://github.com/zensical/ui/releases/tag/v0.0.12
[removal of 19 brand icons]: https://lucide.dev/guide/version-1
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version adds support for [mike], a tool for managing multiple versions of MkDocs projects on GitHub Pages. We created [a tailored fork of mike] for Zensical – all mike commands should work as expected. See the [mike documentation] for usage instructions.
Note that this is a temporary solution. Zensical will ship [native support for versioning] in the near future, which will remove the GitHub Pages constraint and offer more flexibility in how versions are deployed and served.
The [user interface] is updated to [v0.0.11], which adds a floating table of contents for mobile to the modern theme. The toggle sits at the bottom of the screen for easy thumb access, and the sidebar scrolls to accommodate arbitrarily long tables of contents. This release also includes several improvements: snappier sidebar animations, better tooltip readability, and improved inline code block sizing.
[mike]: https://github.com/jimporter/mike
[a tailored fork of mike]: https://github.com/squidfunk/mike
[native support for versioning]: https://zensical.org/about/roadmap/#versioning
[mike documentation]: https://github.com/jimporter/mike#readme
[user interface]: https://github.com/zensical/ui
[v0.0.11]: https://github.com/zensical/ui/releases/tag/v0.0.11
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version fixes an issue with absolute paths in links, as well as changed files not being picked up by Zensical on Windows 11.
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version updates the [user interface] to [v0.0.10], which fixes a couple of bugs related to search and code annotation rendering. Additionally, it adds support for version selectors in the modern theme, paving the way for adding support for [mike] to manage multiple versions of documentation on GitHub Pages.
In addition, this release adds new configuration options for the file watcher to improve compatibility in certain environments.
### File watcher
You can now opt into using a **polling-based file watcher**, which is particularly useful when running Docker on Windows, where filesystem event limitations (e.g., inotify constraints) can cause issues.
To enable the polling watcher:
``` bash
export ZENSICAL_POLL_WATCHER=1
```
The polling interval is configurable and defaults to `500` milliseconds (aligned with MkDocs behavior):
``` bash
export ZENSICAL_POLL_INTERVAL=500
```
[user interface]: https://github.com/zensical/ui
[v0.0.10]: https://github.com/zensical/ui/releases/tag/v0.0.10
[mike]: https://github.com/jimporter/mike
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version fixes a reload loop for when auto-appended snippets are located inside of the `docs` directory, and auto-reload for pages with Chinese path segments.
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
# Summary
This version fixes a regression introduced in 0.0.25 where the wheels built for manylinux x86 would be based on Python 3.8 instead of Python 3.10, making Zensical unusable on those architectures. This is
related to a [recent bug] in our upstream dependency [maturin], which was introduced in version 1.12.5. Additionally, it fixes a deprecation warning on Python 3.14 when using the emoji extension.
[recent bug]: https://github.com/PyO3/maturin/issues/3059
[maturin]: https://github.com/PyO3/maturin
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version updates the [user interface] to [v0.0.9], which improves on accessibility and fixes some minor rendering issues. Additionally, it fixes some bugs related to configuration parsing and plugin handling in `zensical serve`, ensuring a smoother development experience.
[user interface]: https://github.com/zensical/ui
[v0.0.9]: https://github.com/zensical/ui/releases/tag/v0.0.9
### Highlights
- `zensical serve` now keeps running on configuration parsing errors
- Auto-appended `pymdownx.snippets` files are now watched for changes
- Search highlighting now works with keyboard navigation
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
## Summary
This version updates the [user interface] to [v0.0.8], which fixes issues with instant previews for Chinese and other non-ASCII languages, and layout shifts when switching from short to long pages in the modern theme. Additionally, same-page links for when directory URLs are disabled where not resolved correctly, which is fixed as well.
[user interface]: https://github.com/zensical/ui
[v0.0.8]: https://github.com/zensical/ui/releases/tag/v0.0.8
Signed-off-by: squidfunk <martin.donath@squidfunk.com>
# Summary
This version fixes a regression introduced in 0.0.22, where builds would error with mkdocstrings being not found, although the plugin wasn't configured.
Signed-off-by: squidfunk <martin.donath@squidfunk.com>