π Highlights
[[WikiLink]] Syntax
Pages can now be linked by title using [[Title]] syntax β no path needed. The editor offers autocomplete, the viewer renders them with live status, and ambiguous links open a disambiguation dialog. Links are automatically updated when pages are renamed or moved, and broken links are surfaced with inline tooltips.
With --enable-link-refactor, sub-pages with absolute Markdown links are automatically rewritten when a section is moved β keeping the wiki internally consistent without manual cleanup. [[WikiLink]] references are also updated when pages are renamed or moved.
Mobile Experience
A thorough overhaul of the mobile UI: streamlined editor toolbar, decluttered title bar, reduced topbar actions, a dedicated History Panel tab bar for revisions and details, and broad layout fixes across all major screens.
Auto-Save
Pages now save automatically while you type β no manual save required. A debounce window batches rapid keystrokes into a single write, and conflict detection prevents overwriting concurrent changes. A per-device toggle lets you disable auto-save on mobile.
With --enable-revision, auto-save becomes revision-aware: edits from the same session are grouped into a single revision, keeping history clean without losing any changes.
Keyboard Shortcuts Dialog
A new help dialog lists all available keyboard shortcuts, accessible from the toolbar (hidden for viewer-role users).
Nested YAML Frontmatter
Page properties now support dot-notation keys (e.g. author.name) that map directly to nested YAML structures.
Performance
Route components and the CodeMirror editor are now lazy-loaded and split into their own chunks, significantly reducing initial bundle size. The viewer and preview components load eagerly to eliminate render waterfalls on navigation. WikiLink lookups use O(1) index structures instead of tree-walks.
Further Improvements
- Broken links section hidden for read-only users
- Context-aware section texts for viewer-role users
- Branding settings page localized
- Global error boundary with navigation-aware auto-reset
π Changelog for v0.11.0
β¨ Features
- feat(importer): keep plain page wikilinks as native [[...]] syntax (#1163) (@perber)
- feat(i18n): localize BrandingSettings page (#1176) (@perber)
- feat(ui): add global ErrorBoundary with navigation-aware auto-reset (#1171) (@perber)
- feat(ui): broken link tooltips + viewer role gating + toolbar fix (#1165) (@perber)
- feat(properties): support nested YAML frontmatter via dot-notation keys (#1157) (@perber)
- feat(perf): lazy-load route components and split CodeMirror into own chunk (#1156) (@perber)
- feat(editor): add mobile auto-save toggle with i18n and cleanup fixes (#1152) (@perber)
- feat(revisions): session coalescing for auto-save revisions (@perber)
- feat(ui): add shortcuts help dialog (#1148) (@perber)
- feat(search): i18n with Trans for result summary, remove dead loadingAvailableTags state (#1144) (@perber)
- feat(links): hide broken links section for read-only users and i18n b⦠(#1140) (@perber)
- feat(viewer): context-aware section texts for read-only users (#1139) (@perber)
- feat(viewer): clear viewer state when navigating to edit mode (@perber)
- feat(ui): History Panel mobile tab bar for Revisions/Details navigation (@perber)
- feat(ui): declutter mobile editor titlebar (@perber)
- feat(ui): reduce topbar action buttons to 2 visible on all screens (@perber)
- feat(ui): mobile optimizations for editor toolbar, tree icons, and ToC button (@perber)
- feat(ui): mobile optimizations for all major screens (@perber)
- feat(wikilinks): ambiguous link backlinks, path-hint rewrite on move/rename (@perber)
- feat(editor): add [[WikiLink]] autocomplete, i18n foundation for UI strings (#1127) (@perber)
- feat(links): extract and resolve [[Title]] wiki-link syntax in link indexer (#1123) (@perber)
- feat(ui): add [[Title]] wiki-link rendering and disambiguation dialog (#1120) (@perber)
- feat(pages): add FindPagesByTitle and GET /api/pages/by-title endpoint (#1103) (@perber)
- feat: add support info (#1115) (@perber)
- feat: add git backup to remote repository (closes #996) (#1018) (@EduardSchwarzkopf)
- feat(editor): add auto-save with debounce, conflict detection (#1089) (@perber)
- feat(update): make update script more verbose (#1094) (@Hugo-Galley)
β‘ Performance
- perf(ui): load PageViewer and MarkdownPreview eagerly to eliminate render waterfall (#1180) (@perber)
- perf(wikilinks): replace tree-walk lookups with O(1) index structures (@perber)
π Bug Fixes
- fix(refactor): rewrite absolute links in sub-pages when moving a section (#1182) (@perber)
- fix(editor): prevent Page404 flash when navigating to edit mode (#1181) (@perber)
- fix(ui): prevent wide branding banner from pushing toolbar off screen on mobile (#1177) (@perber)
- fix(ui): constrain branding logo to fit within header on mobile (#1175) (@perber)
- fix(auth): use primary button + i18n for login form and toolbar (#1172) (@perber)
- fix(toolbar): hide keyboard shortcuts dialog for viewer-role users (#1167) (@perber)
- fix(toolbar): increase overflow dropdown width to prevent label wrapping (#1166) (@perber)
- fix(links): prevent panic when page title equals path hint in RewriteWikiLinks (#1164) (@perber)
- fix: set 0644 permissions on uploaded asset files (#1160) (@perber)
- fix: strip WikiLinks from plain-text excerpts (@perber)
- fix(revisions): multiple concurrency and stability fixes for session coalescing (@perber)
- fix(wikilinks): ambiguous links use brand color instead of warning orange (#1143) (@perber)
- fix(a11y): replace aria-hidden overlay div with semantic button (@perber)
- fix(refactor): sync ambiguity guard between Preview and Apply (@perber)
- fix(refactor): skip ambiguous sentinel refs in rename preview; UI polish (@perber)
- fix(mermaid): rendering img tag in mermaid diagram (#1131) (#1134) (@perber)
- fix(wikilinks): handle ambiguous links (#1128) (@perber)
- fix(refactor): extend link refactoring to handle [[Title]] wiki-link syntax (#1126) (@perber)
- fix(editor): stop unsaved dialog flicker (#1116) (@perber)
- fix: sanitize search output (#1118) (@perber)
- fix(ui): enable dialog close animation (#1102) (@perber)
- fix(branding): validate file paths before deletion to prevent path traversal (#1090) (@perber)
- fix(ui): replace dialog slide animation with subtle fade/scale (#1100) (@perber)
- fix: help text to refresh-token-timeout (#1099) (@perber)
- fix: add missing space before active class in toolbar toggle buttons (#1088) (@perber)
- fix(auth): show --allow-insecure hint in HTTPS cookie errors (#1087) (@perber)
- fix: escape site name in HTML template (#1085) (@imlonghao)
π§Ύ Documentation
- docs: add operating modes section and sorting guide with screenshots (#1154) (@perber)
- docs: update refresh token timeout to 168 hours (#1098) (@perber)
- docs: add documentation for --disable-request-flag (#1082) (@perber)