v0.106.0
Note
If you enjoyed this release, consider showing a token of appreciation by:
- Pressing the “Star” button on GitHub (top-right).
- Considering a one-time or recurrent donation to the lead developer via GitHub Sponsors or PayPal.
Tip
For Linux users: Trilium is now available on Flathub!
💡 Key highlights
📋 Kanban board overhaul by @adoriandoran
The board has been rebuilt to handle real projects. Give each column an icon, a color or a card limit, collapse the columns you're not working on, and archive them once they're done. New notes that don't belong to a column yet land in an optional Inbox column. Cards can be created from a template (e.g. a Bug template for a bug tracker), and Board properties controls which attributes the cards show and in what order. You can also switch the attribute the board is grouped by at any time, and each grouping keeps its own columns.
As a board grows, sort columns automatically by title, date or any attribute, and narrow the board with the filter box in the header, which accepts the full search syntax. Select several cards with Ctrl/Shift+click to move, edit or delete them together. Use Copy reference to link to a card or column from any note. The whole board works from the keyboard (Alt+F1 lists the shortcuts) and by touch on mobile, and a column with thousands of cards now stays smooth.
This concludes the phase two of the board collection, more features to come.
🔎 Significant improvements to search
- Matching by @perfectra1n
- Punctuation-aware exact matching:
=syncfinds(sync),sync,,"sync"(#10616) - Fuzzy tolerance now scales with term length (0/1/2 edits); a substring is no longer treated as a typo
~*matches fragments again; fuzzy fallback extended to note body content- Link previews and reference-link target titles are indexed and searchable
- Diacritics normalized for highlighting too, not just matching
- Ranking: results ordered by match quality (exact phrase > proximity > word > prefix > substring > fuzzy), bounded so content never outranks a title match.
- Punctuation-aware exact matching:
- Results view by @perfectra1n
- Jump to match by @perfectra1n: clicking a result opens the note at the first match with the find bar pre-filled; collapsed sections expand automatically (#3098, #10616). Jump to Note stays a title-only navigator (no misleading content snippet).
- Improved the speed of the jump-to-note significantly by optimizing the search itself, but also by honoring the option to disable fuzzy search in autocompletion (which was disabled by default but not used at all).
🗺️ Geomap now features a built-in location search, current position indicator and shapes
The geo map has a new search bar. As you type, it finds the markers, tracks and shapes already on your map. To search the rest of the world, pick the row that offers it and it asks Nominatim; nothing is sent while you're still typing. Results are sorted by distance and favor what's on screen, so a shop searched from your own town finds the one down the road. Towns and areas show their outline, and any result can be kept with Add as marker. You can also paste coordinates to jump straight to a spot.
You can also draw on the map now: paths, areas, rectangles and circles. Each shape is a note, so it takes the note's color and icon and opens in the same panel as a marker. Places shown on the map itself, like shops or beaches, can be clicked and added as markers too. On a phone or tablet, the new locate button shows where you are, so it's easy to see what's nearby.
📰 Templates can now define a default parent for new notes
Add a ~template:newNoteDefaultParent relation to a template note, pointing it at the note where its instances should live (e.g. a Person template pointing at People). When you create a note from that template (via Choose note type, @-completion, Create and link child note, or the attribute editor) and don't explicitly pick a location, the note lands under that default parent instead of your current note. Picking a path yourself always takes priority, and the tree's Insert child note / Insert note after remain unaffected.
✨️ And others…
- LLM: Added support for Google Antigravity, which can be used with a free plan as well.
- The application gains a proper loading screen instead of a plain white background until everything has loaded.
- OCR now properly supports image (scanned) and vector-based PDFs.
- Sorting now supports multiple criteria by @BeatLink & @eliandoran
- Search (full search, quick search) now have syntax highlighting, autocompletion, @-note insertion. In addition, the search is checked for errors which are displayed in-line. Full searches are now multiline.
- Icons (just like the note icons) can now be inserted in text notes.
🐞 Bugfixes
-
LLM
- Claude Code / Copilot integration would sometimes not be able to find the binary, if it was installed through
npmon macOS. - Error shown when interrupting a stream from Claude Code.
- Claude Code / Copilot integration would sometimes not be able to find the binary, if it was installed through
-
Markdown import would not preserve checkboxes when split by line breaks
-
Notion import: Creation date is not preserved for some notes despite being present in the HTML export
-
Auto read-only mode renders note content with slightly different vertical spacing than edit mode
-
Sync from desktop fixes by @emxv
-
Automatic light/dark theme switching sometimes doesn't properly update on Linux
-
Search: Tokenize ~= and ~* as single fuzzy-match operators by @mrbeandev
-
In-page search (Ctrl+F) does not find text inside inline, cards, and internal links by @maphew
-
Formats and attributes disappear after switching note type to Markdown and back by @jmrplens
-
Calendar is recreated when using "New note" launch bar item (and through other note-creation mechanisms)
-
Search: commas in quoted text are improperly handled by @yzxcj797
-
Two collapse‑related enter‑key bugs for todo/unordered lists by @maphew
-
Sidebar on mobile doesn't account for splits.
-
OIDC logout fails when end_session_endpoint is cross-origin due to XHR/CORS by @dajiaohuang
-
Markdown active block indicator doesn't work properly for all block types (e.g. admonitions).
-
Pressing Ctrl+M when not editing a text note minimizes Trilium by @maphew
-
Missing non-breaking space between reference link icon and text by @maphew
-
Bookmarked note icons in the launch bar: “Open note in new tab” always adds a tab at the very end by @maphew
-
Keyboard navigation in Promoted Attributes -- Relations are skipped by @maphew
-
Typing quickly after Ctrl+L causes search text to be added to note by @maphew
-
Table collection: Tab to next table view field in new record results in original field being focused
-
Dropdowns not closed when they become disabled by @maphew
-
noteId is not validated when forced, leading to broken note links by @maphew
-
Some tooltip and context menu glitches (partial) by @maphew
-
“English RTL” language would show up in the initial setup.
-
LLM: Keep the chat SSE stream alive across idle proxy timeouts by @ltomazetto
-
--start-hidden / "Start minimized to tray" does not hide window on startup (Linux, all configs) by @maphew
-
Browser navigation not handling note navigation properly by @maphew
-
Deleted notes would appear as empty notes (no content, no title) after a heavy sync
-
Right clicking some links would open the link instead of just displaying the context menu.
-
Windows reserved name handling didn't account for extensions by @sxh313
-
Search doesn't support escaped characters such as & by @shx313
-
Canvas: inserting images and exporting drawings failed on the desktop app by @adoriandoran
✨ Improvements
- Markdown import/export: maintain collapsible attributes and preserve formatting as much as possible when converting to HTML and vice-versa.
- Geomap improvements:
- New markers now follow
#titleTemplate - GPX tracks have a dedicated icon and their name no longer carries the extension when imported.
- Automatic light/dark mode for vector themes
- New markers now follow
- Docker healthcheck script has been improved to be faster and with less CPU usage. The health-check now reports the right status, even for self-signed certificates.
- Presentation collection has a few new themes.
- Markdown: strip
<style>tags from previews. - Desktop: Extra windows (e.g. opening a note in a new window) now open much faster.
- Share: show the matched content when displaying search results.
- Note autocompletions (e.g. @-mentions) now also offer to create notes in the journal/inbox instead of as child notes.
- Highlight active title in the table of contents by @SiriusXT and @eliandoran
- Printing: use the note title instead of a generic “Trilium Notes” by @yzxcj797 and @eliandoran
- Scripts can now return multiple widgets by @BeatLink
- Keep the tree and the note in place when deleting a note by @perfectra1n
- Improved code notes scroll performance
- TOTP now enforces that a code can only be used once and it tolerates clock drift by @jmrplens
- The text note context menu is now available for the web version too.
- Show “Full search” at the bottom of quick search by @BeatLink
- API log is now available on mobile as well.
- Slash command for upload image.
- Quick search can now be navigated with the arrow keys by @BeatLink and @eliandoran
- Drag & drop imports in the note tree now recognize Obsidian vaults
- Promoted attributes: relation with multiple values now have links to quickly navigate to the note.
- Disable virtual keyboard autocomplete in Code notes.
- Keyboard navigation for note type chooser by @itsjakobx and @eliandoran
- macOS 26 tinted icons by @anandghegde
- Slash commands: add to-do list item by @itsjakobx
- Reworked the Mermaid preview with better pan and zoom as well as keyboard interaction.
- Improved the performance of batch deleting notes, including a progress report.
- The sync button now shows a small bar to indicate the progress of the sync.
- LLM:
1. Detect GitHub Copilot shims and report them properly.
2. More efficient Claude Code and GitHub Copilot which reduces the time and memory consumption between conversations. - Spreadsheets now print, export and share as they look in the editor, including links, rotated text and borders, by @adoriandoran
- Icons are now vertically aligned correctly across the app, including icon packs, by @adoriandoran
- Insert date/time now comes with multiple formats, accessible through the dropdown arrow and slash commands.
- ETAPI: Accept
utcDateModifiedoncreate-noteand note patch
🚨 Breaking Changes
cheeriohas been dropped as a built-in library because it was not being used by the application itself, only by third-party scripts. See the documentation for how to migrate.- The server has been migrated to ESM, so the entry point has changed to
main.mjsinstead ofmain.cjs. If you are using the normaltrilium.shthere is no impact, but if you are pointing directly atmain.cjsyou will need to change your configuration. #label=valueis now strict full-value equality,#capital=Viennano longer matchesVienna Austria(#9422). Quick search keeps "contains".
🌍 Internationalization
📖 Documentation
🛠️ Technical updates
- Reduced the size on disk of Trilium by ~8 MB by cleaning up some dependencies and optimizing existing ones.
- The server and desktop apps have been migrated to ESM, which brings in reduced memory consumption and faster start-up.
- CI hardening by @Totara-thib
- Add alternate Trillium spelling for discovery by @maphew
- Align Linux window class with launcher by @dajiaohuang & @eliandoran
- Fixed some non-critical errors when first initializing the database.
SortableCardanddialog.pickSingleItemare now available to frontend scripts by @adoriandoran- support TRILIUM_LAUNCH_EXEC for unbundled Electron packages on Linux by @dajiaohuang
🔒️ Security fixes
- Hardened some share-related features such as include note, share aliases and icon packs.
- Hardened excerpts rendering.

