60 lines
2.6 KiB
Markdown
60 lines
2.6 KiB
Markdown
# Feature Specification: macOS Menus
|
|
|
|
**Created**: 2026-09-28
|
|
|
|
**Status**: Implemented; checked in the direct build's window on 2026-09-28 against a scratch
|
|
daemon, every menu driven through System Events
|
|
|
|
**Input**: User request: "The menu options on MacOS are small, normally you'd have a `File`,
|
|
`Edit`, `Window`, and `Help` menu."
|
|
|
|
The direct-download build showed winit's default menu: the app menu alone. The App Store build
|
|
had its own app and Window menus (014). Both builds now show the menus a Mac app is expected to
|
|
have, with the window's own commands in them.
|
|
|
|
## User Scenarios & Testing *(mandatory)*
|
|
|
|
### User Story 1 - Working from the menu bar (Priority: P1)
|
|
|
|
A Mac user presses ⌘N and the dialog for a new virtual port opens over the Endpoints page. They
|
|
paste a name copied from elsewhere with ⌘V, or with Edit > Paste. ⌘2 shows the Routes page and
|
|
⌘, the Settings page. Help > Midi Harbor Help opens the documentation.
|
|
|
|
**Why this priority**: it is the whole request.
|
|
|
|
**Independent Test**: Open the window, read its menus through the accessibility interface, and
|
|
choose each item, by click and by shortcut, checking what the window does.
|
|
|
|
**Acceptance Scenarios**:
|
|
|
|
1. **Given** the window is open, **When** the menu bar is read, **Then** it holds the app menu,
|
|
File, Edit, View, Window and Help, as contracts/menus.md lists them.
|
|
2. **Given** a text field has the focus, **When** Cut, Copy, Paste or Select All is chosen, by
|
|
click or by shortcut, **Then** the field acts as it does on the key alone, and typing
|
|
afterwards is not read as a shortcut.
|
|
3. **Given** no daemon answers, **When** a New item is chosen, **Then** nothing opens, since the
|
|
dialog could not create anything.
|
|
|
|
## Requirements *(mandatory)*
|
|
|
|
### Functional Requirements
|
|
|
|
- **FR-U01**: The window on macOS MUST show an app menu, File, Edit, View, Window and Help, in
|
|
both builds, with the shortcuts contracts/menus.md gives.
|
|
- **FR-U02**: The Edit menu's items MUST act on the focused text field whether chosen by click
|
|
or by shortcut.
|
|
- **FR-U03**: The App Store build MUST keep what 014 gave its menus: Command-Q closing to the
|
|
menu bar and Command-Option-Q quitting.
|
|
|
|
## Success Criteria *(mandatory)*
|
|
|
|
### Measurable Outcomes
|
|
|
|
- **SC-U01**: Every command the menus list works from the menu bar, by click and by shortcut.
|
|
|
|
## Assumptions
|
|
|
|
- A View menu lists the pages, on ⌘1 onwards, beside the four menus the owner named, as Mac
|
|
apps put navigation there.
|
|
- Undo and Redo are left out: the text fields keep no history.
|
|
- Help opens the project's documentation and issue list on GitHub in the default browser.
|