diff --git a/PLAN.md b/PLAN.md index 4b415a5..eb0f213 100644 --- a/PLAN.md +++ b/PLAN.md @@ -342,6 +342,44 @@ visual placeholders with no message or agent runtime behind them. 6. Port context compaction and system-prompt reinjection after ordinary multi-turn operation is correct. +### Native macOS menus (required with chat) + +The application must install and maintain a complete native macOS menu bar; +the application-name menu alone is not sufficient. Use platform menu roles, +ordering, selectors, and standard key equivalents rather than drawing menus +inside the Iced window. + +- Provide the standard **Application**, **File**, **Edit**, **View**, + **Window**, and **Help** menus. Include the normal macOS Application actions + (About, Settings, Services, Hide, Hide Others, Show All, and Quit) and Window + actions (Minimize, Zoom, Bring All to Front) with native behavior. +- Make File actions operate on real application concepts: New Session, Add/Open + Project, and Close Window. Make View actions cover actual available views, + including sidebar visibility and Enter Full Screen. Help opens the local help + or documentation surface. Do not add permanently inert placeholder items. +- The Edit menu is part of the chat acceptance criteria. Undo, Redo, Cut, Copy, + Paste, Paste and Match Style where supported, Delete, and Select All must act + on the current first responder. They must work in the chat composer and every + other editable text field; Copy and Select All must also work for selectable + transcript text. +- Prefer native first-responder selectors for native controls. Where an Iced + widget owns focus, bridge the same menu command into that focused widget so + menu clicks and `Command-Z`, `Shift-Command-Z`, `Command-X`, `Command-C`, + `Command-V`, and `Command-A` behave identically. +- Validate menu enabled state whenever focus or application state changes: + editing commands reflect the focused selection/clipboard and session/project + commands reflect whether their action is currently possible. Menu actions + must use the same application messages as toolbar/sidebar actions instead of + duplicating business logic. +- Preserve conventional macOS labels, grouping, keyboard shortcuts, and + accessibility metadata. Keep platform-specific menu integration behind the + macOS application shell so the chat and session core remain platform-neutral. + +Exit criterion: with the composer focused, every standard Edit command works +from both the menu and its keyboard shortcut, including undo/redo across +multiple edits; transcript text can be copied; and Application, File, View, +Window, and Help expose functional, correctly enabled native actions. + ### Dev Brain — Obsidian knowledge and memory - Add an optional Dev Brain setting in Preferences. Use the native macOS folder