Prove that the desktop app is a complete, secure, cross-platform presentation of the storage crate and matches the TUI feature surface.
Scope
Maintain and satisfy a coverage matrix mapping every base pass, pass-otp, Git, lock, configuration, and TUI milestone action to a desktop menu, control/dialog, and command-palette entry where applicable.
Test macOS native menus and standard shortcuts, plus Linux/Windows in-window menus and accelerator mappings.
Exercise keyboard-only navigation, mouse use, focus order, screen-reader labels, scaling, narrow windows, long entries, high-contrast themes, and reduced motion where applicable.
Verify the desktop crate does not read/mutate a password-store repository, spawn processes, parse domain formats, or duplicate storage policy.
Run the repository-required Rust checks and platform build/smoke checks documented for supported targets.
Acceptance criteria
The coverage matrix has no unexplained gaps against milestones 01 and 02.
Platform menu, shortcut, and primary workflow smoke tests pass on macOS, Linux, and Windows CI or documented equivalent runners.
Security and architecture audits find no GUI-owned storage logic, plaintext persistence, process launch, or non-HTTPS Git path.
Required formatting, check, clippy, and workspace tests pass, and remaining platform limitations are explicitly documented rather than silently stubbed.
## Goal
Prove that the desktop app is a complete, secure, cross-platform presentation of the storage crate and matches the TUI feature surface.
## Scope
- Maintain and satisfy a coverage matrix mapping every base pass, pass-otp, Git, lock, configuration, and TUI milestone action to a desktop menu, control/dialog, and command-palette entry where applicable.
- Test macOS native menus and standard shortcuts, plus Linux/Windows in-window menus and accelerator mappings.
- Exercise keyboard-only navigation, mouse use, focus order, screen-reader labels, scaling, narrow windows, long entries, high-contrast themes, and reduced motion where applicable.
- Audit plaintext lifetime, masking, logs, crash/error views, clipboard behavior, authentication expiry, dirty-document paths, and background/window lifecycle.
- Verify the desktop crate does not read/mutate a password-store repository, spawn processes, parse domain formats, or duplicate storage policy.
- Run the repository-required Rust checks and platform build/smoke checks documented for supported targets.
## Acceptance criteria
- The coverage matrix has no unexplained gaps against milestones 01 and 02.
- Platform menu, shortcut, and primary workflow smoke tests pass on macOS, Linux, and Windows CI or documented equivalent runners.
- Security and architecture audits find no GUI-owned storage logic, plaintext persistence, process launch, or non-HTTPS Git path.
- Required formatting, check, clippy, and workspace tests pass, and remaining platform limitations are explicitly documented rather than silently stubbed.
hugo
added this to the 03 - Cross-platform Iced desktop app milestone 2026-08-09 19:30:18 +00:00
Implemented and verified in commit 40b15a9 (Complete desktop parity and security audit (#42)).
Implementation:
Added docs/desktop-audit.md, a maintained milestone 01/02 coverage matrix for base pass, pass-otp, embedded Git, configuration/lock, navigation, window, Help, menu, direct-control, dialog, and command-palette surfaces. A desktop test requires every registered action ID to remain represented.
Added an explicit macOS/Linux/Windows platform model for shortcut labels and dispatch. Tests execute Command mappings on macOS and Control mappings on Linux/Windows from one host; the macOS native adapter now has direct accelerator assertions.
Removed the remaining hand-written command-palette shortcut label so Help, menus, palette, and toolbar consume the shared registry.
Added executable production-source auditing across every desktop module. It rejects process construction, direct repository/Git construction, OTP/QR domain parsing, filesystem writes, print/debug/log output, non-HTTPS literals, and unsafe blocks.
Added a checked narrow-window contract and documented keyboard, mouse/touch, focus order, scaling, long-content, contrast, reduced-motion, native-service smoke, plaintext lifetime, masking, clipboard, expiry, dirty-document, stale-background, and window-lifecycle evidence.
Acceptance review:
Every registered desktop action appears in the coverage matrix; terminal-shaped CLI/TUI selectors without separate desktop meaning are explicitly accounted for rather than silently omitted.
Menu, shortcut, enablement, palette, keyboard/mouse navigation, native macOS accelerators, dirty/authentication gates, encrypted primary workflows, OTP, Git HTTPS rejection, and lifecycle behavior are executable tests. Linux/Windows native picker/clipboard/secure-store smoke commands are documented as equivalent native-runner gates.
The architecture audit passes with repository and domain behavior remaining in crates/storage; no GUI process launch, plaintext persistence path, or non-HTTPS Git path was introduced.
Iced 0.14 does not expose a stable native screen-reader accessibility-tree API. That framework limitation is explicitly documented; visible operation-specific labels and deterministic keyboard focus are implemented.
cargo test --workspace — passed, including 30 desktop tests and 95 TUI tests.
Focused cargo test --package ironstorage-desktop --all-targets — 30 passed.
Implemented and verified in commit `40b15a9` (`Complete desktop parity and security audit (#42)`).
Implementation:
- Added `docs/desktop-audit.md`, a maintained milestone 01/02 coverage matrix for base pass, pass-otp, embedded Git, configuration/lock, navigation, window, Help, menu, direct-control, dialog, and command-palette surfaces. A desktop test requires every registered action ID to remain represented.
- Added an explicit macOS/Linux/Windows platform model for shortcut labels and dispatch. Tests execute Command mappings on macOS and Control mappings on Linux/Windows from one host; the macOS native adapter now has direct accelerator assertions.
- Removed the remaining hand-written command-palette shortcut label so Help, menus, palette, and toolbar consume the shared registry.
- Added executable production-source auditing across every desktop module. It rejects process construction, direct repository/Git construction, OTP/QR domain parsing, filesystem writes, print/debug/log output, non-HTTPS literals, and unsafe blocks.
- Added a checked narrow-window contract and documented keyboard, mouse/touch, focus order, scaling, long-content, contrast, reduced-motion, native-service smoke, plaintext lifetime, masking, clipboard, expiry, dirty-document, stale-background, and window-lifecycle evidence.
Acceptance review:
- Every registered desktop action appears in the coverage matrix; terminal-shaped CLI/TUI selectors without separate desktop meaning are explicitly accounted for rather than silently omitted.
- Menu, shortcut, enablement, palette, keyboard/mouse navigation, native macOS accelerators, dirty/authentication gates, encrypted primary workflows, OTP, Git HTTPS rejection, and lifecycle behavior are executable tests. Linux/Windows native picker/clipboard/secure-store smoke commands are documented as equivalent native-runner gates.
- The architecture audit passes with repository and domain behavior remaining in `crates/storage`; no GUI process launch, plaintext persistence path, or non-HTTPS Git path was introduced.
- Iced 0.14 does not expose a stable native screen-reader accessibility-tree API. That framework limitation is explicitly documented; visible operation-specific labels and deterministic keyboard focus are implemented.
Verification from the repository root:
- `cargo fmt --all -- --check` — passed.
- `RUSTFLAGS="-D warnings" cargo check --workspace --all-targets` — passed.
- `cargo clippy --workspace --all-targets -- -D warnings` — passed.
- `cargo test --workspace` — passed, including 30 desktop tests and 95 TUI tests.
- Focused `cargo test --package ironstorage-desktop --all-targets` — 30 passed.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Goal
Prove that the desktop app is a complete, secure, cross-platform presentation of the storage crate and matches the TUI feature surface.
Scope
Acceptance criteria
Implemented and verified in commit
40b15a9(Complete desktop parity and security audit (#42)).Implementation:
docs/desktop-audit.md, a maintained milestone 01/02 coverage matrix for base pass, pass-otp, embedded Git, configuration/lock, navigation, window, Help, menu, direct-control, dialog, and command-palette surfaces. A desktop test requires every registered action ID to remain represented.Acceptance review:
crates/storage; no GUI process launch, plaintext persistence path, or non-HTTPS Git path was introduced.Verification from the repository root:
cargo fmt --all -- --check— passed.RUSTFLAGS="-D warnings" cargo check --workspace --all-targets— passed.cargo clippy --workspace --all-targets -- -D warnings— passed.cargo test --workspace— passed, including 30 desktop tests and 95 TUI tests.cargo test --package ironstorage-desktop --all-targets— 30 passed.