Create the minimal Iced application shell that all desktop presentation work uses.
Scope
Add the desktop crate/application to the workspace and start a single main window on macOS, Linux, and Windows.
Define the application message/update/view flow, asynchronous task handling, subscriptions, and UI-only action identifiers.
Route all password-store operations through typed crates/storage APIs; keep repository access, parsing, encryption, Git, OTP, and configuration persistence out of the desktop crate.
Represent loading, empty, ready, error, and locked presentation states without deriving domain state from display strings.
Handle window close requests and application errors through messages so later dirty-document and authentication policies have one presentation-level entry point.
Do not launch pass, git, gpg, the CLI, editors, shells, or helper processes.
Acceptance criteria
The application builds and opens a usable empty window on all supported desktop targets.
A fake/in-memory storage API result can drive loading, ready, empty, and error views in deterministic UI tests.
No desktop module directly reads or mutates a password-store directory.
Project code remains free of unsafe; any unavoidable platform adapter is isolated and documented in its own later issue.
## Goal
Create the minimal Iced application shell that all desktop presentation work uses.
## Scope
- Add the desktop crate/application to the workspace and start a single main window on macOS, Linux, and Windows.
- Define the application message/update/view flow, asynchronous task handling, subscriptions, and UI-only action identifiers.
- Route all password-store operations through typed `crates/storage` APIs; keep repository access, parsing, encryption, Git, OTP, and configuration persistence out of the desktop crate.
- Represent loading, empty, ready, error, and locked presentation states without deriving domain state from display strings.
- Handle window close requests and application errors through messages so later dirty-document and authentication policies have one presentation-level entry point.
- Do not launch `pass`, `git`, `gpg`, the CLI, editors, shells, or helper processes.
## Acceptance criteria
- The application builds and opens a usable empty window on all supported desktop targets.
- A fake/in-memory storage API result can drive loading, ready, empty, and error views in deterministic UI tests.
- No desktop module directly reads or mutates a password-store directory.
- Project code remains free of `unsafe`; any unavoidable platform adapter is isolated and documented in its own later issue.
hugo
added this to the 03 - Cross-platform Iced desktop app milestone 2026-08-09 19:30:04 +00:00
Implemented in f363081. Added a storage-owned DesktopStorage boundary for configuration, authentication bootstrap, repository tree reads, document open/save, Git commits, and clipboard policy; the Iced shell now consumes only typed storage results and has explicit loading, empty, ready, error, and locked presentation states. Verified with cargo fmt --all -- --check, RUSTFLAGS="-D warnings" cargo check --workspace --all-targets, cargo clippy --workspace --all-targets -- -D warnings, cargo test --workspace, a production-source boundary scan, and a native desktop launch smoke test.
Implemented in f363081. Added a storage-owned DesktopStorage boundary for configuration, authentication bootstrap, repository tree reads, document open/save, Git commits, and clipboard policy; the Iced shell now consumes only typed storage results and has explicit loading, empty, ready, error, and locked presentation states. Verified with cargo fmt --all -- --check, RUSTFLAGS="-D warnings" cargo check --workspace --all-targets, cargo clippy --workspace --all-targets -- -D warnings, cargo test --workspace, a production-source boundary scan, and a native desktop launch smoke test.
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
Create the minimal Iced application shell that all desktop presentation work uses.
Scope
crates/storageAPIs; keep repository access, parsing, encryption, Git, OTP, and configuration persistence out of the desktop crate.pass,git,gpg, the CLI, editors, shells, or helper processes.Acceptance criteria
unsafe; any unavoidable platform adapter is isolated and documented in its own later issue.Implemented in
f363081. Added a storage-owned DesktopStorage boundary for configuration, authentication bootstrap, repository tree reads, document open/save, Git commits, and clipboard policy; the Iced shell now consumes only typed storage results and has explicit loading, empty, ready, error, and locked presentation states. Verified with cargo fmt --all -- --check, RUSTFLAGS="-D warnings" cargo check --workspace --all-targets, cargo clippy --workspace --all-targets -- -D warnings, cargo test --workspace, a production-source boundary scan, and a native desktop launch smoke test.