Dogfooding notes from two app rewrites (brainfuel, movebit):
install(title:menuItems:) takes a flat [(String, String, () -> Void)] — no separator support, so tray menus lose their grouping (old apps had \─\ separators).
- Items are fixed at install time: movebit needs to swap 暂停提醒 1 小时 ↔ 恢复提醒 (and localized labels) on pause-state change, so it re-installs the whole controller. A small update/replace API (by key) or a menu-builder closure would avoid the churn.
- Title-only: parity apps want an icon (template NSImage) in the status bar plus a tooltip; and the old tray behavior maps left-click to "show the window", which a status item's menu-at-click doesn't express.
Suggestion: evolve RivetMenuBarController with: separators (a reserved key or an enum item type), update(items:) / setItem(_:title:), optional button.image, optional button.action for click-without-menu, and button.toolTip. Also worth mirroring on the backend side: set-tray-menu! currently can't express separators either.
Dogfooding notes from two app rewrites (brainfuel, movebit):
install(title:menuItems:)takes a flat [(String, String, () -> Void)] — no separator support, so tray menus lose their grouping (old apps had \─\ separators).Suggestion: evolve
RivetMenuBarControllerwith: separators (a reserved key or an enum item type),update(items:)/setItem(_:title:), optionalbutton.image, optionalbutton.actionfor click-without-menu, andbutton.toolTip. Also worth mirroring on the backend side:set-tray-menu!currently can't express separators either.