Skip to content

@sbrl sbrl released this Nov 24, 2019 · 7 commits to master since this release

It's that time again! 5 years to the day since I first started working on Pepperminty Wiki (!) 🎂 and 4 months, 19 days and 163 commits since v0.19 was released (discounting the 4 hotfix releases made to patch nasty bugs), today I'm releasing release of v0.20. This is a huge release - check out the feature summary:

  • 🌜 New automatic dark mode in the default theme! Uses prefers-color-scheme under-the-hood
  • 🌈 Added theme gallery! Read more here
  • Vastly improved search engine performance, with new advanced query syntax (with even more syntax along the way)
  • 🚁 Accessibility improvements - if you're a screen-reader or accessibility tool user, I want to hear from you if you think anything (big or small!) could be improved!
  • 🎈 Server-side diagramming support! Allows you to call external programs like nomnoml and render fenced code blocks as an image.

Personally, I'm most proud of the optimisations to the search engine. I've successfully tested it on wikis with ~5.9M words - and while search times vary depending on your input (the new -exclude syntax will actually speed up queries), a single work query for ~5.0M word wikis takes ~50ms O.o

Unfortunately, this does mean that the search index will need to be rebuilt under the new format - and will be slightly larger than before. To get a progress bar for this operation, go to the master settings and click the rebuild button.

Another notable change is the new 'mega-menu' style more menu:


That menu has been bothering me for a while, and thanks to the kind people on Reddit, I've now got a solution.

Note that you'll need to delete nav_links_extra from your peppermint.json in order for it to take effect.

Please test the theme gallery in particular. It's quite complicated under-the-hood, so I'd appreciate some extra eyes on that.

Special thanks to @SeanFromIT for reporting a number of bugs which have been squashed.

If you use Pepperminty Wiki, tweet me @SBRLabs! I'd love to hear about how you're using it.

Lastly, don't forget to take a backup of your wiki before updating. While I've made every effort to squash bugs, you can never be too careful :P



See the instructions here..

Since v0.20-beta1

  • Add optional "say hi" button to first-run setup wizard
    • You don't have to click it, but it would be cool if you did :-)

Since v0.19.4-hotfix4


  • Added automatic dark mode to default theme using prefers-color-scheme
  • [Module API] Added new minify_css module API function by refactoring the page renderer
  • [Module API] Change page_renderer::is_css_url() to require an argument
  • Added theme gallery, which can be accessed through a link in the master settings (if the new feature-theme-gallery module is present)
    • Theme gallery URLs can be added to the css_theme_autoupdate_url setting
    • A graphical interface can be used to switch between available themes from the galleries
    • No external HTTP requests will be made without consent
    • Themes from galleries auto-update every week by default (adjustable/disable-able with the css_theme_autoupdate_interval setting)
  • Added mega-menu support to the nav_links_extra setting - the default value for the nav_links_extra setting has now changed (delete/rename it in your peppermint.json file to get the new version)
    • An object can now be used to define groups of items in the more menu
    • Hopefully it now looks less cluttered :P
  • Headings now have an automatic id if you don't specify one (part of #141)
  • Server-side diagramming support! See the parser_ext_renderers setting for more information on how to configure it
    • It hooks into external programs such as nomnoml, plantuml, and abcm2ps (ABC musical notation rendering)
    • It's generic enough to allow you to hook into any program that takes an input of some source text, and output some form of image


  • Fixed a bug in the search query performance metrics
  • Fill out the statistics help text
  • Added table of contents to help page
  • Squashed the large blank space that appears at the bottom of the page editor page when editing long pages
  • Accessibility improvements - thanks, Firefox developer tools :D (if you're a screen reader / accessibility tool user and have feedback or any better ideas, please get in touch)
    • Marked the user avatar on the top navigation bar as hidden for screen readers
    • Added aria label to user preferences button
    • Hide site logo from screen readers
  • Lists of pages that have a specific tag will now be sorted alphabetically (Unicode characters should be handled correctly too)
  • Support Unicode characters when sorting. If it's a list of something, then it's now sorted correctly (e.g. includes pages, tags, etc).
  • Squashed a bunch of warnings about a non-static method in the page renderer
  • Fixed a warning message in the peppermint.json access checker
  • Fixed footnote rendering (thanks again, @SeanFromIT!)


  • Made build script more robust, especially when generating the documentation.
  • Vastly improved search engine performance
    • A new SQLite-based index format is now used, so search indexes will need to be rebuilt (migrating would probably take longer than a rebuild :-/)
  • New search query syntax
  • When making remote requests, Pepperminty Wiki will now correctly set the user agent string
    • The server's expose_php setting is respected - if it's disabled, then the PHP version will not be exposed.
    • Pepperminty Wiki shouldn't make remote requests without you asking it to - see above and the theme gallery
  • Improved peppermint.json.compromised error message - if it's still unclear, please let me know
  • Fiddled with the extra data extractor, as it seems that some people were experiencing strange issues with stream_get_meta_data()
  • [Module API] Refactored the errorimage() function into core, added automatic image size calculation, and multi-line support

Since v0.19.0

  • Fixed page revision id incrementing if you don't have a page called history on your wiki (thanks @SeanFromIT!)
  • Improve error messages in the extra data unpacker
  • Change the extra data unpacker to us tempnam() instead of tmpfile(), since some people appeared to be having issues with the other approach
  • Squash a deprecation warning caused by a typo (thanks, @SeanFromIT!)
  • Patched another crazy bug in the extra data system in the downloader
  • Patched the downloader which was throwing warnings when packing downloads
Assets 3
You can’t perform that action at this time.