Skip to content

feat(desktop): Icon Composer app icon for macOS 26 (closes #11326) - #11487

Merged
eliandoran merged 4 commits into
TriliumNext:mainfrom
anandghegde:feat/macos-icon-composer
Sep 16, 2026
Merged

eliandoran merged 4 commits into
TriliumNext:mainfrom
anandghegde:feat/macos-icon-composer

Conversation

@anandghegde

@anandghegde anandghegde commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

What

macOS 26 builds the Dark, Clear and Tinted app icon styles from the layers of an Icon Composer .icon document. An .icns is a flat bitmap, so with only icon.icns in the bundle Trilium keeps its white tile when the Dock is set to Dark. This is the behavior asked for in #11326, and it's what Chrome does in the screenshots there.

This PR adds app-icon/icon.icon and app-icon/icon-dev.icon (nightly) next to the existing .icns files. forge.config.ts doesn't change.

How it's wired

packagerConfig.icon is app-icon/icon with no extension. @electron/packager 18.4.4 (the version in the lockfile) looks for <name>.icon on macOS. When it finds one, it compiles it with actool into Contents/Resources/Assets.car and sets CFBundleIconName. It still copies <name>.icns as CFBundleIconFile, so macOS versions before 26 keep using the current icon.

Artwork

I didn't draw anything new. Each leaf is its own glass layer, and its SVG is one of the three path groups from apps/server/src/assets/images/icon-color.svg (or icon-purple.svg for nightly), copied as-is.

  • Background: white, like the current .icns. In Dark it uses system-dark.
  • Scale: 0.8, so the logo takes up the same share of the tile as it does now.
  • Translucency: off, so the leaves keep the logo colors in Default.

All of these are easy to change if you'd like something different (for example a tinted background, more glass, or a different scale). You can open the .icon files in Icon Composer, or I can make the changes.

Verification (macOS 26.6, Xcode 26.6, Apple Silicon)

  • DEBUG=electron-packager pnpm --filter desktop electron-forge:package --arch=arm64 --platform=darwin succeeded. The log shows Generating asset catalog for icon composer ".../app-icon/icon.icon" file, followed by the usual .icns copy.
  • In the packaged Trilium Notes.app:
    • Contents/Resources contains both Assets.car and electron.icns.
    • Info.plist has CFBundleIconName = Icon.
    • assetutil --info Assets.car lists the three leaf vectors for the NSAppearanceNameAqua, NSAppearanceNameDarkAqua and ISAppearanceTintable appearances.
  • I launched the packaged app against an empty data directory. It started normally, and the icon macOS reports for the running app is the new glass one (last tile in the first image).
  • icon-dev.icon compiles with actool using the same arguments packager uses, with no warnings. I didn't do a full nightly package.
  • I rendered the style previews below from the .icon files with Icon Composer's ictool. I didn't take them from the Dock.
trilium-icon-styles-light trilium-icon-styles-dark trilium-icon-dev-styles

Build requirement

On macOS, packaging a .icon requires macOS 26 and Xcode 26. If either is missing, packager fails instead of skipping the .icon. The release and nightly macOS jobs run on macos-latest, which is currently the macos-26-arm64 image, so CI already meets this. Anyone packaging locally on an older macOS would need to update. Linux and Windows builds don't use the .icon.

scripts/icons/create-icons.sh doesn't regenerate the .icon files. If the logo SVGs change, the leaf SVGs need to be copied again. I can add that step to the script if you'd prefer it that way.

…t#11326)

macOS 26 restyles app icons for its Dark, Clear and Tinted icon styles
from the layers of an Icon Composer `.icon` document. An `.icns` is a flat
bitmap, so with only `icon.icns` in the bundle Trilium keeps its white tile
in the Dark style.

`icon.icon` and `icon-dev.icon` sit next to the `.icns` files and share
their base name, so `packagerConfig.icon` picks them up with no config
change: @electron/packager 18.4 compiles a matching `.icon` with `actool`
into `Contents/Resources/Assets.car` and sets `CFBundleIconName`, and it
still copies the `.icns` for macOS versions before 26.

Each leaf is its own glass layer. The SVGs are the three path groups of
`icon-color.svg` and `icon-purple.svg`, copied unchanged. The background
is white, as in the current `.icns`, and `system-dark` in the Dark style.
The group is scaled to 0.8, which matches the logo-to-tile ratio of the
current icon. Translucency is off so the leaves keep the logo colors in
the Default style.
@greptile-apps

greptile-apps Bot commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

Adds macOS 26 Icon Composer documents for release and nightly desktop icons while preserving the existing .icns fallback for earlier macOS versions.

  • Adds layered SVG artwork and Icon Composer metadata for standard and nightly application identities.
  • Documents the macOS 26 and Xcode 26 packaging requirement.
  • Records the maintenance relationship between the canonical logo SVGs and hand-copied Composer leaf assets.
  • No code changed since the previous review SHA.

Confidence Score: 5/5

The PR appears safe to merge; no actionable findings remain.

All previous threads are resolved, including the conceded formatting finding and the addressed packaging-documentation and maintenance-note findings. No changes were made after the previous review, and the full-PR rule re-check produced no distinct actionable violation.

Important Files Changed

Filename Overview
apps/desktop/electron-forge/app-icon/icon.icon/icon.json Defines the release Icon Composer document with layered leaf artwork and appearance-aware background settings.
apps/desktop/electron-forge/app-icon/icon-dev.icon/icon.json Defines the equivalent nightly Icon Composer document using development-brand artwork.
docs/Developer Guide/Developer Guide/Building/Build deliveries locally.md Documents the macOS and Xcode versions required to compile Icon Composer assets during packaging.
scripts/icons/create-icons.sh Documents the enduring manual synchronization requirement for Composer leaf assets.

Reviews (4): Last reviewed commit: "docs(desktop): shorten Icon Composer lea..." | Re-trigger Greptile

…pkeep

Packaging the macOS app now compiles `icon.icon` with `actool`, which
@electron/packager only allows on macOS 26 with Xcode 26; older setups
fail rather than falling back to the `.icns`. Say so in the local build
guide.

`create-icons.sh` does not regenerate the Icon Composer leaf SVGs, so
note next to the `.icns` step how they derive from the source SVGs.
icon-purple.svg already uses fill attributes; only icon-color.svg has
CSS classes to inline.
Comment thread scripts/icons/create-icons.sh Resolved
@anandghegde
anandghegde force-pushed the feat/macos-icon-composer branch from 735b176 to 54c0bef Compare September 15, 2026 16:40
@codecov

codecov Bot commented Sep 16, 2026

Copy link
Copy Markdown

Bundle Report

Changes will decrease total bundle size by 335.86kB (-0.38%) ⬇️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
standalone-esm* 46.06MB -335.86kB (-0.72%) ⬇️

ℹ️ *Bundle size includes cached data from a previous commit

Affected Assets, Files, and Routes:

view changes for bundle: client-esm

Assets Changed:

Asset Name Size Change Total Size Change (%)
src/src-*.js -34 bytes 175 bytes -16.27%
src/src-*.js 34 bytes 209 bytes 19.43% ⚠️
src/dist-*.js -19 bytes 63 bytes -23.17%
src/dist-*.js 1 bytes 57 bytes 1.79%
src/dist-*.js -1 bytes 56 bytes -1.75%
src/dist-*.js 19 bytes 82 bytes 30.16% ⚠️
view changes for bundle: standalone-esm

Assets Changed:

Asset Name Size Change Total Size Change (%)
src/Spreadsheet-*.js -77 bytes 5.49MB -0.0%
src/chunk-*.js 551 bytes 2.75kB 25.0% ⚠️
src/chunk-*.js -10.6kB 104.92kB -9.17%
src/chunk-*.js -826 bytes 9.75kB -7.81%
src/chunk-*.js 292 bytes 37.74kB 0.78%
src/chunk-*.js 13 bytes 51.92kB 0.03%
src/chunk-*.js 2.49kB 48.88kB 5.38% ⚠️
src/chunk-*.js 15.61kB 46.39kB 50.71% ⚠️
src/chunk-*.js 20.93kB 36.57kB 133.79% ⚠️
src/chunk-*.js 11 bytes 5.84kB 0.19%
src/chunk-*.js 11 bytes 1.42kB 0.78%
src/chunk-*.js -6 bytes 1.95kB -0.31%
src/chunk-*.js 44 bytes 1.51kB 3.01%
src/chunk-*.js -106 bytes 85 bytes -55.5%
src/chunk-*.js 571 bytes 1.46kB 64.09% ⚠️
src/chunk-*.js -2.68kB 208.63kB -1.27%
src/chunk-*.js 15.5kB 30.36kB 104.3% ⚠️
src/chunk-*.js 11 bytes 580 bytes 1.93%
src/chunk-*.js 10.21kB 15.65kB 187.77% ⚠️
src/chunk-*.js -1.49kB 61.34kB -2.36%
src/chunk-*.js -163 bytes 191 bytes -46.05%
src/chunk-*.js -281 bytes 354 bytes -44.25%
src/chunk-*.js (New) 10.27kB 10.27kB 100.0% 🚀
assets/abstract_provider-*.js 70.12kB 1.76MB 4.16%
src/src-*.js -1.5kB 162 bytes -90.27%
src/src-*.js -274 bytes 3.57kB -7.12%
src/render-*.js (New) 1.44MB 1.44MB 100.0% 🚀
src/geomap-*.js -49 bytes 1.23MB -0.0%
assets/src-*.js -503 bytes 252.78kB -0.2%
assets/src-*.js (Deleted) -63.53kB 0 bytes -100.0% 🗑️
src/RelationMap-*.js -33 bytes 245.29kB -0.01%
assets/base_provider-*.js -253 bytes 243.18kB -0.1%
src/dist-*.js 25 bytes 82 bytes 43.86% ⚠️
src/dist-*.js 7 bytes 63 bytes 12.5% ⚠️
src/dist-*.js -6 bytes 57 bytes -9.52%
src/dist-*.js -26 bytes 56 bytes -31.71%
src/app_context-*.js -595 bytes 221.36kB -0.27%
assets/tools-*.js -174 bytes 187.88kB -0.09%
src/Code-*.js -33 bytes 183.88kB -0.02%
src/ContentWidget-*.js -1.34kB 167.18kB -0.8%
assets/dist-*.js -2.14kB 157.06kB -1.34%
src/architectureDiagram-*.js 37 bytes 148.98kB 0.02%
assets/google-*.js -3.28kB 138.04kB -2.32%
src/note_tree-*.js -33 bytes 132.97kB -0.02%
src/NoteMap-*.js -33 bytes 126.32kB -0.03%
src/MindMap-*.js -33 bytes 118.44kB -0.03%
src/sequenceDiagram-*.js -1.54kB 115.81kB -1.31%
src/board-*.js -696 bytes 115.49kB -0.6%
src/swimlanes-*.js 4.89kB 111.13kB 4.6%
assets/anthropic-*.js -732 bytes 110.62kB -0.66%
src/layout_commons-*.js -953 bytes 101.22kB -0.93%
src/geomap-*.css -114 bytes 95.02kB -0.12%
src/dashboard-*.js -1.95kB 92.26kB -2.07%
src/desktop_layout-*.js 431 bytes 85.06kB 0.51%
assets/in_app_help_provider-*.js -283 bytes 81.67kB -0.35%
src/cose-*.js 37 bytes 81.32kB 0.05%
assets/zip-*.js -28 bytes 71.29kB -0.04%
src/c4Diagram-*.js -304 bytes 64.81kB -0.47%
assets/render_to_html-*.js -29 bytes 62.72kB -0.05%
src/ganttDiagram-*.js 37 bytes 62.4kB 0.06%
src/i18n-*.js -33 bytes 7.44kB -0.44%
src/i18n-*.js 10.74kB 62.09kB 20.92% ⚠️
src/i18n-*.js (Deleted) -54 bytes 0 bytes -100.0% 🗑️
src/ribbon-*.js -34 bytes 58.89kB -0.06%
src/ImageViewer-*.js -33 bytes 51.22kB -0.06%
src/hooks-*.js -33 bytes 48.44kB -0.07%
src/calendar-*.js -23 bytes 33.05kB -0.07%
src/xychartDiagram-*.js 32 bytes 44.18kB 0.07%
src/blockDiagram-*.js -981 bytes 41.51kB -2.31%
src/vennDiagram-*.js 9 bytes 41.22kB 0.02%
src/setup-*.js -150 bytes 39.46kB -0.38%
src/glob-*.js -1 bytes 38.01kB -0.0%
src/ContentWidget-*.css -92 bytes 37.74kB -0.24%
src/EditableText-*.js -33 bytes 36.6kB -0.09%
src/layout_commons-*.css -592 bytes 35.44kB -1.64%
src/Mermaid-*.js -13 bytes 33.75kB -0.04%
src/quadrantDiagram-*.js 42 bytes 33.58kB 0.13%
src/headless-*.js 1.35kB 33.37kB 4.22%
src/dagre-*.js -28.69kB 10.98kB -72.32%
src/dagre-*.js (New) 33.24kB 33.24kB 100.0% 🚀
src/useLlmChat-*.js -33 bytes 32.72kB -0.1%
src/mermaid.core-*.js 31 bytes 31.41kB 0.1%
src/mermaid.core-*.js 37 bytes 105 bytes 54.41% ⚠️
src/requirementDiagram-*.js -54 bytes 31.01kB -0.17%
src/erDiagram-*.js 80 bytes 30.77kB 0.26%
src/timeline-*.js -44 bytes 30.45kB -0.14%
src/board-*.css -16 bytes 29.81kB -0.05%
src/gitGraphDiagram-*.js 37 bytes 29.08kB 0.13%
src/import_dialog-*.js -45 bytes 27.68kB -0.16%
src/attribute_detail-*.js -33 bytes 27.56kB -0.12%
src/MindMap-*.css -57 bytes 27.32kB -0.21%
src/MediaPreview-*.js -28 bytes 26.92kB -0.1%
src/wardleyDiagram-*.js 11 bytes 25.21kB 0.04%
assets/web-*.js -18.06kB 25.16kB -41.79%
src/AddProviderModal-*.js -33 bytes 25.13kB -0.13%
src/mindmap-*.js 10 bytes 23.45kB 0.04%
src/journeyDiagram-*.js 32 bytes 23.22kB 0.14%
src/sankeyDiagram-*.js 37 bytes 22.8kB 0.16%
src/kanban-*.js 10 bytes 20.31kB 0.05%
src/TitleRow-*.js -33 bytes 20.11kB -0.16%
src/AttributeList-*.js -33 bytes 17.8kB -0.19%
src/ishikawaDiagram-*.js 11 bytes 17.32kB 0.06%
src/mobile_layout-*.js -54 bytes 17.14kB -0.31%
src/ChatMessage-*.js -33 bytes 16.34kB -0.2%
src/desktop_layout-*.css 592 bytes 15.42kB 3.99%
src/graphlib-*.js 8.39kB 14.29kB 142.3% ⚠️
src/revisions-*.js -33 bytes 14.03kB -0.23%
src/Markdown-*.js -28 bytes 13.4kB -0.21%
src/note_autocomplete-*.js -33 bytes 12.78kB -0.26%
src/image_compression_dialog-*.js -33 bytes 12.33kB -0.27%
src/diagram-*.js 37 bytes 11.14kB 0.33%
src/diagram-*.js 6 bytes 8.21kB 0.07%
src/diagram-*.js 11 bytes 6.08kB 0.18%
src/diagram-*.js 37 bytes 10.73kB 0.35%
src/diagram-*.js 6 bytes 4.29kB 0.14%
src/diagram-*.js (Deleted) -80.6kB 0 bytes -100.0% 🗑️
src/stateDiagram-*.js -30.91kB 10.7kB -74.28%
src/stateDiagram-*.js (New) 794 bytes 794 bytes 100.0% 🚀
src/Attachment-*.js -34 bytes 10.42kB -0.33%
src/main-*.js -1.48kB 9.96kB -12.97%
src/cynefinDiagram-*.js 11 bytes 9.95kB 0.11%
src/toast-*.js -33 bytes 9.59kB -0.34%
src/color_scheme-*.js -33 bytes 9.38kB -0.35%
src/tree_context_menu-*.js -33 bytes 9.33kB -0.35%
src/SetupPage-*.css -168 bytes 9.07kB -1.82%
src/frontend_script_api-*.js -33 bytes 8.72kB -0.38%
src/dashboard-*.css -658 bytes 8.55kB -7.15%
src/NoteDetail-*.js -33 bytes 7.76kB -0.42%
assets/local-*.js -4.12kB 4.0kB -50.73%
assets/local-*.js 3.61kB 7.61kB 90.18% ⚠️
src/Card-*.css -21 bytes 6.98kB -0.3%
src/local-*.js -1.84kB 6.84kB -21.22%
src/Ribbon-*.js -33 bytes 6.62kB -0.5%
src/desktop-*.js -1.5kB 6.47kB -18.79%
src/pieDiagram-*.js 42 bytes 6.26kB 0.68%
src/mobile_layout-*.css -30 bytes 6.04kB -0.49%
src/about-*.js -33 bytes 5.98kB -0.55%
src/SidebarChat-*.js -33 bytes 5.73kB -0.57%
assets/becca_loader-*.js -73 bytes 5.71kB -1.26%
src/OptionsDialog-*.css -57 bytes 5.69kB -0.99%
src/linear-*.js -5.02kB 504 bytes -90.87%
src/linear-*.js (New) 5.52kB 5.52kB 100.0% 🚀
src/LlmChat-*.js -33 bytes 5.32kB -0.62%
src/IconPicker-*.js -33 bytes 5.29kB -0.62%
src/OptionsDialog-*.js -33 bytes 5.29kB -0.62%
src/revisions-*.css -30 bytes 4.86kB -0.61%
src/server-*.js -1.1kB 4.17kB -20.8%
src/FormList-*.js -1 bytes 4.03kB -0.02%
assets/0240__migrate_board_status_to_select-*.js -29 bytes 3.59kB -0.8%
src/print-*.js -1 bytes 3.35kB -0.03%
src/export-*.js -33 bytes 3.29kB -0.99%
assets/backup-*.js 599 bytes 3.25kB 22.55% ⚠️
src/merge-*.js 1.89kB 3.21kB 141.94% ⚠️
src/llm_model_cost-*.js -33 bytes 3.19kB -1.02%
src/ocr_text-*.js -33 bytes 3.03kB -1.08%
src/ColorPicker-*.js -33 bytes 2.91kB -1.12%
src/Dropdown-*.js -1 bytes 2.87kB -0.03%
src/DatabaseFileBadges-*.js -53 bytes 2.73kB -1.9%
src/SplitEditor-*.js -33 bytes 2.65kB -1.23%
src/replacements-*.js -1 bytes 2.64kB -0.04%
src/master_detail-*.js -1 bytes 2.59kB -0.04%
src/utils-*.js -1 bytes 2.58kB -0.04%
src/utils-*.js (Deleted) -10.75kB 0 bytes -100.0% 🗑️
src/WebView-*.js -33 bytes 2.39kB -1.36%
assets/ru-*.js 15 bytes 2.39kB 0.63%
src/item_picker-*.js -28 bytes 2.33kB -1.19%
assets/uk-*.js 15 bytes 2.31kB 0.65%
src/local-*.css -114 bytes 2.21kB -4.91%
src/ebnfDiagram-*.js 11 bytes 2.11kB 0.52%
src/pegDiagram-*.js 11 bytes 2.06kB 0.54%
src/abnfDiagram-*.js 11 bytes 1.9kB 0.58%
src/image_compression_dialog-*.css -30 bytes 1.88kB -1.57%
src/Button-*.js -1 bytes 1.87kB -0.05%
src/Empty-*.js -33 bytes 1.86kB -1.74%
assets/ar-*.js 15 bytes 1.81kB 0.84%
assets/cs-*.js 15 bytes 1.78kB 0.85%
assets/pl-*.js 15 bytes 1.74kB 0.87%
assets/hi-*.js 15 bytes 1.74kB 0.87%
src/railroadDiagram-*.js 11 bytes 1.71kB 0.65%
assets/zh-*.js 47 bytes 1.54kB 3.14%
assets/zh-*.js -17 bytes 1.51kB -1.11%
assets/de-*.js 15 bytes 1.52kB 1.0%
assets/ko-*.js 15 bytes 1.38kB 1.1%
assets/ja-*.js 15 bytes 1.35kB 1.13%
src/markdown_import-*.js -33 bytes 1.34kB -2.41%
assets/pt-*.js 15 bytes 1.28kB 1.18%
assets/pt-*.js 15 bytes 1.3kB 1.17%
assets/ga-*.js 15 bytes 1.29kB 1.17%
assets/en-*.js -694 bytes 585 bytes -54.26%
assets/en-*.js 709 bytes 1.29kB 121.2% ⚠️
src/scroll_fade-*.js -38 bytes 1.29kB -2.85%
assets/fr-*.js 15 bytes 1.27kB 1.2%
src/SegmentedChoice-*.js -1 bytes 1.26kB -0.08%
src/FormToggle-*.js -33 bytes 1.26kB -2.54%
assets/es-*.js 15 bytes 1.25kB 1.21%
assets/it-*.js 15 bytes 1.23kB 1.24%
assets/ro-*.js 15 bytes 1.22kB 1.24%
assets/id-*.js 15 bytes 1.22kB 1.25%
assets/tr-*.js 15 bytes 1.22kB 1.25%
src/ActionButton-*.js -1 bytes 1.21kB -0.08%
src/incorrect_cpu_arch-*.js -33 bytes 1.1kB -2.91%
src/options-*.js -1 bytes 1.08kB -0.09%
src/Image-*.js 3 bytes 1.06kB 0.28%
src/highlights_extract-*.js -1 bytes 1.06kB -0.09%
src/FormCheckbox-*.js -1 bytes 1.04kB -0.1%
src/debounce-*.js -31 bytes 1.02kB -2.94%
src/experimental_features-*.js -33 bytes 980 bytes -3.26%
src/SetupPage-*.js -33 bytes 973 bytes -3.28%
src/line-*.js -9 bytes 934 bytes -0.95%
src/context_menu_utils-*.js -33 bytes 918 bytes -3.47%
src/swimlanesDiagram-*.js 15 bytes 884 bytes 1.73%
src/RenderErrorCard-*.js -33 bytes 846 bytes -3.75%
src/classDiagram-*.js -48.98kB 791 bytes -98.41%
src/classDiagram-*.js (New) 791 bytes 791 bytes 100.0% 🚀
assets/setup_marker-*.js -29 bytes 789 bytes -3.55%
src/IconPack-*.js -1 bytes 721 bytes -0.14%
src/note_deletion-*.js -33 bytes 684 bytes -4.6%
src/infoDiagram-*.js 12 bytes 664 bytes 1.84%
src/Icon-*.js -1 bytes 650 bytes -0.15%
src/flowDiagram-*.js 11 bytes 625 bytes 1.79%
src/now-*.js 502 bytes 593 bytes 551.65% ⚠️
src/DirectoryLink-*.js -1 bytes 503 bytes -0.2%
src/SetupForm-*.js -33 bytes 468 bytes -6.59%
src/_baseSet-*.js -11 bytes 448 bytes -2.4%
src/mermaid-*.core-DNkzUixF.js (New) 379 bytes 379 bytes 100.0% 🚀
src/shortcut_kbd-*.js -1 bytes 313 bytes -0.32%
src/elk-*.js (Deleted) -1.46MB 0 bytes -100.0% 🗑️
src/usecaseDiagram-*.js (Deleted) -186.78kB 0 bytes -100.0% 🗑️
src/_baseUniq-*.js (Deleted) -8.58kB 0 bytes -100.0% 🗑️
src/_basePickBy-*.js (Deleted) -5.04kB 0 bytes -100.0% 🗑️
src/capacitor_download-*.js (Deleted) -4.53kB 0 bytes -100.0% 🗑️
src/_initCloneObject-*.js (Deleted) -2.09kB 0 bytes -100.0% 🗑️
assets/security_settings-*.js (Deleted) -2.03kB 0 bytes -100.0% 🗑️
src/toNumber-*.js (Deleted) -536 bytes 0 bytes -100.0% 🗑️

@codecov

codecov Bot commented Sep 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

@eliandoran eliandoran left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pretty good job!

@eliandoran eliandoran added this to the v0.106.0 milestone Sep 16, 2026
@eliandoran
eliandoran merged commit b080044 into TriliumNext:main Sep 16, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants