github perber/leafwiki v0.14.2
LeafWiki v0.14.2

6 hours ago

📝 Changelog for v0.14.2

v0.14.2 makes Git backup sync safer: a pull now applies all or nothing, and a force push is refused when it would drop commits on the remote. Damaged SQLite files no longer cost you real data, since only rebuildable indexes are deleted. Pages are easier to read: text, code and tables share one centered column. API keys (experimental) can now write, the install and update scripts verify the release checksum, and there are Linux 32-bit x86 binaries.

⚠️ Behavior changes

  • Unreadable SQLite files are handled per store. The search, link, tag and property indexes are rebuilt as before. Sessions, favorites, user settings and email tokens are moved aside to <name>.corrupt-<timestamp> and recreated, so affected users may have to log in again. If users.db is unreadable, LeafWiki now refuses to start and logs what to do, instead of recreating it. (#1704)
  • API keys can make write requests. This applies only with the experimental --enable-api-key-management flag. A key can do what both its own role and its user's role allow. Routes that manage passwords, TOTP, sessions, users or API keys still require a browser session. (#1662)
  • Git backup force push is refused when the local backup is behind the remote, for example after a file conflict. It answers 409, because overwriting would only drop the remote commits. Diverged history can still be force pushed. (#1703)
  • Absolute links to your own wiki open in the current tab. External links still open in a new tab. (#1678)
  • A text file dropped into the editor is uploaded as an attachment and linked, instead of having its content pasted into the page.
  • install.sh and update.sh verify the SHA-256 checksum of the downloaded binary and stop on a mismatch. They now need sha256sum. (#1658)

🙌 Thanks to contributors

@zorak1103, for API keys that can write and for the fixes and tests around markdown links and revisions in this release. Contributions like these are what make LeafWiki better than one person could build alone.


✨ Features

  • feat(install): verify the release checksum in install.sh and update.sh (#1658) (@perber)
  • feat(auth): allow API keys to write, keep credential routes session-only (#1662) (@zorak1103)
  • feat(release): publish Linux 32-bit x86 binaries (#1652) (@perber)

🐛 Bug Fixes

  • fix(wiki): close all databases on shutdown and after a failed boot (@perber)
  • fix(build): build with go 1.27.3 (@perber)
  • fix(backup): name only the remote revert as the way out of a file conflict (#1706) (@perber)
  • fix(backup): refuse force push when the local backup is behind the remote (#1703) (@perber)
  • fix(storage): per-store SQLite corruption policy, never delete real state (#1704) (@perber)
  • fix(backup): validate tree entry names from the backup remote (@perber)
  • fix(backup): apply pull changes all-or-nothing and accept already-applied files (@perber)
  • fix(editor): upload dropped text files instead of inlining their content (@perber)
  • fix(preview): improve readability with a consistent reading column (#1696) (@perber)
  • fix(preview): re-resolve markdown links when the page tree changes (zorak1103)
  • fix(preview): open same-origin web links in current tab (#1678) (@perber)
  • fix: tooltip typo in fr (@perber)
  • fix(assets): make page attachments visible in viewer and editor (#1656) (@perber)
  • fix(backup): disable go-git pack delta compression for git sync (#1660) (@perber)
  • fix(release): write .sha256 files without the releases/ path prefix (#1657) (@perber)
  • fix(deps): upgrade all selector parsers past CVE-2026-104844 (#1653) (@perber)
  • fix(deps): deduplicate KaTeX on the patched direct dependency (#1654) (@perber)

⚡ Performance

  • perf(tree): precompute filename sort keys when needed (#1648) (@perber)
  • perf(links): skip markdown parsing when no wikilinks match (#1646) (@perber)
  • perf(tree): remove redundant sorting after assigning positions (#1647) (@perber)
  • perf(links): reuse wikilink patterns throughout refactor previews (#1650) (@perber)
  • perf(search): load tag search excerpts after pagination (#1649) (@perber)
  • perf(http): read the embedded index template once per router (#1651) (@perber)
  • perf(search): tokenize flat page queries once (#1645) (@perber)
  • perf(preview): index wikilink titles once per tree update (#1644) (@perber)

💅 Style

Plus 77 internal changes (refactoring, tests, CI, build and developer docs) that don't change how LeafWiki behaves. Full list: v0.14.1...v0.14.2

Don't miss a new leafwiki release

NewReleases is sending notifications on new releases.