I am very pleased to announce the release of Documenter 1.0. It finally unleashes a bunch of great improvements and excellent contributions that have been “locked up” on master for the past year or so.
I am slightly less pleased to announce that, true to its nature as a major version change, the release does contain a few non-trivial breaking changes that will likely affect your documentation builds, and you will probably need to update your make.jl
files. Please see the release notes for details and instructions on how to upgrade.
I do want to thank everyone for their patience, which allowed us to get a big set of breaking changes all bunched up into a single release, reducing the disruption and breaking-release-churn in the ecosystem. I do hope that we will stay on 1.x for a while now, and will be able to have much more frequent non-breaking releases.
For most docs it should be safe to set Documenter compat to Documenter = "1"
in docs/Project.toml
. Although you may want to double-check what SemVer guarantees mean in the context of Documenter, especially if you do non-trivial stuff in your docs/make.jl
.
As always, if you encounter any issues or errors, please don’t hesitate to open issues on the Documenter issue tracker.
Happy documenting!
Release highlights
First, I want to thank everyone who has contributed to Documenter, via PRs, issues, feedback, and helped us to get to this release! Here I just want to highlight a few of the many-many changes and improvements that have happened over the past year:
New search interface
For the past several months, as part of his Summer of Code project, @Hetarth02 worked on improving the UI and UX of Documenter’s search, and Documenter now ships with a much more polished UI:
Under the hood, he also changed the JS search engine to MiniSearch, which is more actively maintained compared to the previously used lunr.js. You can also read Hetarth’s GSoC submission for more details on this work.
Link to repository
Tiny, but much-asked feature: Documenter now includes a link to the landing page of your package repository. Tangentially related to this is that Documenter is now much smarter and more consistent about handling the different remote links (page edit and Julia source links; this will also fix the source links of standard library functions in the Julia manual).
PDF improvements
@odow contributed heaps of great fixes and improvements to the PDF/LaTeX backend, such as improved admonition, table, and code block styling and handling, which should come to your Julia Manual PDF soon.
Strict by default
Documenter has quite a few checks to make sure that the generated documentation is not broken in some way. However, those only break builds if you set strict = true
. When people don’t explicitly do that, they generally miss the warnings on documentation CI, and end up shipping half-broken documentation sites.
To encourage people to fix the issues as they come up, Documenter now runs in the strict = true
mode by default (although that keyword has been removed; but you can still explicitly opt out from some or all checks with the new warnonly
keyword).
Note that several new checks that have also been added, which may cause previously warning/error-free builds to error now.
Catch large HTML pages
One silent issue that quite a few documentation sites have is that their generated content (e.g. figures and other at-example block outputs) is leading to HTML pages that can be tens or even hundreds of megabytes, which in turn leads to a bad experience for the reader who opens it in the browser.
To nudge the authors to address this, Documenter will now by default complain if the generated examples pages are too big (the behavior can be controlled with the size_threshold*
options). When it comes to generated images, like plots, Documenter will now write them into separate files, automatically helping reduce the size of the HTML files.