ADR 0025: Keep Application Menus out of Windows/Linux Windows
- Status: Accepted
- Date: 2026-07-27
- Deciders: PI-Desktop core
- Related: D118, D129, ADR 0021
Context
ADR 0021 introduced a native macOS system menu and a renderer-owned File/Edit/View/Window/Help menubar inside Windows/Linux windows. The in-window menubar consumes the left side of the 46px titlebar and applies a macOS menu model to frameless Windows/Linux chrome. Product direction now keeps that menu surface specific to the macOS system menu.
Windows/Linux still require window controls and access to common application, editing, zoom, and fullscreen commands after the visible menubar is removed.
Decision
- macOS keeps the conventional native Electron application menu and hidden-inset traffic lights defined by ADR 0021.
- Windows/Linux keep the frameless 46px titlebar and renderer-drawn minimize, maximize/restore, and close controls, but render no application menubar inside the window.
- Windows/Linux titlebar navigation reclaims the space previously reserved for File/Edit/View/Window/Help.
- Common Windows/Linux application, close-window, zoom, and fullscreen shortcuts are handled without a visible menu. Standard editing shortcuts remain native web-content behavior.
- Existing allowlisted menu-command and native-action IPC stays in place for the macOS system menu, renderer readiness, and shortcut dispatch. No new privileged surface is introduced.
Consequences
- The window titlebar is quieter and gives navigation the full left edge.
- macOS retains the platform-standard system menu and all native roles.
- Windows/Linux users rely on visible in-app controls, Settings -> Info, the command palette, and keyboard shortcuts instead of an in-window menubar.
- F10 and Shift+F10 are no longer consumed by renderer shell chrome.
- The removed renderer menubar component, styling, focus model, and localized popover behavior no longer require maintenance or qualification.
Alternatives
Keep the renderer menubar but hide it by default
Rejected because an Alt/F10-revealed menu still reserves a platform concept that product direction does not want inside the window.
Remove all menu-related IPC
Rejected for this change because the macOS system menu still dispatches allowlisted renderer commands, and Windows/Linux shortcuts can reuse the bounded native-action surface without broadening Main-process authority.
References
docs/adr/0021-platform-application-chrome.mddocs/spec/03-runtime/01-ipc-protocol.mddocs/spec/04-ux/01-ui-ia.mddocs/spec/04-ux/08-component-spec.mddocs/spec/04-ux/09-interaction-patterns.mddocs/spec/06-delivery/04-e2e-test-plan.md(E2E-067)docs/spec/08-meta/decisions-log.md(D129)