Commit graph

2 commits

Author SHA1 Message Date
CRT
7940289272 desktop tray: card as tall as its content, card and menu open from the tray icon's edge (never over the taskbar); menu permission files
All checks were successful
ci / gate (push) Successful in 2s
ci / ci (push) Successful in 1m33s
ci / linux (push) Successful in 7m3s
ci / windows (push) Successful in 7m48s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Successful in 34s
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Successful in 1m29s
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Successful in 1m30s
ci / record (push) Successful in 14s
ci / dev (push) Successful in 50s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Successful in 27s
ci / acceptance (node20, 20, windows, Windows, node) (push) Successful in 6m29s
ci / acceptance (node22, 22, windows, Windows, node) (push) Successful in 5m37s
2026-10-24 19:53:10 +08:00
CRT
4811ad5cf2 desktop: tray menu panels and pinnable context menus
Some checks failed
ci / gate (push) Successful in 2s
ci / ci (push) Failing after 1m20s
ci / linux (push) Successful in 5m48s
ci / windows (push) Successful in 6m35s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Successful in 34s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Successful in 33s
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Successful in 1m24s
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Successful in 1m25s
ci / record (push) Successful in 12s
ci / dev (push) Successful in 1m51s
ci / acceptance (node20, 20, windows, Windows, node) (push) Successful in 5m48s
ci / acceptance (node22, 22, windows, Windows, node) (push) Successful in 5m34s
The tray's right-click menu is drawn by the app: one tree from tray.rs
(stable submenu keys), one frameless always-on-top menu-N window per
panel rendered by tray-menu.html with the design system, placed inside
the monitor's work area. A pure panel book keeps transient and pinned
panels apart; pinned panels (pin button, Ctrl+click, middle click) are
draggable, step aside from each other and are saved in state.json
(menuPins) and restored at start. tray_update pushes the tree to the
open panels, which update in place; closed panels are destroyed. The
native menu, rendered from the same tree, stays as the fallback and on
Linux. Only menu-* windows get the menu_* commands (menu.json).

In-app context menus get the same behaviour through a pure menu stack
(ui/menu-stack.ts): pin a menu, tear off a submenu, pinned panels
survive the next menu, are draggable and re-read their entries from
live sources so data changes update them in place.

Also drops a stray diff3 marker line from CHANGELOG.md.
2026-10-24 13:44:08 +08:00