Build the Iced desktop application shell #32

Closed
opened 2026-08-09 19:30:04 +00:00 by hugo · 1 comment
Owner

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.
## 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
hugo added the enhancement label 2026-08-09 19:30:04 +00:00
Author
Owner

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.
hugo closed this issue 2026-08-10 14:16:26 +00:00
Sign in to join this conversation.