Implement a structured desktop editor with safe save, undo, and dirty-document behavior.
Scope
Edit the storage-provided structured document with dynamic add/remove/reorder support for fields and multiline notes.
Keep passwords hidden by default and support explicit reveal, generate, copy, and replace actions.
Implement platform-standard text editing behavior and undo/redo where supported by the active control.
Save with primary-modifier+S through crates/storage; retain the dirty buffer and show the error if saving fails.
Track dirty state in the GUI document model only; storage remains authoritative for serialization, encryption, recipient selection, and commits.
Before selection changes, opening another vault, reload, window close, or quit would discard edits, show a Save / Discard / Cancel confirmation. Cancel keeps the document and selection; Discard is explicit; failed Save does not continue the pending action.
Handle storage-side changes or conflicts with an explicit error/reload decision instead of silently overwriting.
Acceptance criteria
Dynamic fields round-trip through storage-owned serialization without the GUI dropping unknown data.
Command-S/Ctrl-S saves only a dirty valid document and reports errors without data loss.
Every navigation/close path that could lose changes is covered by the same confirmation flow.
Tests cover Save, Discard, Cancel, failed Save, lock while editing, and stale/conflicting entry results.
## Goal
Implement a structured desktop editor with safe save, undo, and dirty-document behavior.
## Scope
- Edit the storage-provided structured document with dynamic add/remove/reorder support for fields and multiline notes.
- Keep passwords hidden by default and support explicit reveal, generate, copy, and replace actions.
- Implement platform-standard text editing behavior and undo/redo where supported by the active control.
- Save with primary-modifier+S through `crates/storage`; retain the dirty buffer and show the error if saving fails.
- Track dirty state in the GUI document model only; storage remains authoritative for serialization, encryption, recipient selection, and commits.
- Before selection changes, opening another vault, reload, window close, or quit would discard edits, show a Save / Discard / Cancel confirmation. Cancel keeps the document and selection; Discard is explicit; failed Save does not continue the pending action.
- Handle storage-side changes or conflicts with an explicit error/reload decision instead of silently overwriting.
## Acceptance criteria
- Dynamic fields round-trip through storage-owned serialization without the GUI dropping unknown data.
- `Command-S`/`Ctrl-S` saves only a dirty valid document and reports errors without data loss.
- Every navigation/close path that could lose changes is covered by the same confirmation flow.
- Tests cover Save, Discard, Cancel, failed Save, lock while editing, and stale/conflicting entry results.
hugo
added this to the 03 - Cross-platform Iced desktop app milestone 2026-08-09 19:30:04 +00:00
Implemented and pushed in commit 49451bc (Implement structured desktop editing).
Added a storage-backed Iced editor for dynamic pass fields and multiline note lines, with add/remove/reorder, masked sensitive values, reveal, generate/replace, and secret-safe copy cleanup.
Added primary-modifier+S saving through EntryDocumentService and AutomaticEntryCommitter. Successful saves reload the current conflict token; failures retain the complete dirty document.
Added one Save / Discard / Cancel guard for open, reload, close, and actions requested during an active save. Storage conflicts require an explicit reload-or-keep-draft decision.
Lock and lease expiry invalidate editor, clipboard, and stale asynchronous state.
Added tests for structured/unknown-field round trips, multiline notes, Save, Discard, Cancel, failed and stale saves, lock/expiry, stale clipboard work, and the primary save shortcut.
Review completed against every acceptance criterion. Verification passed:
native cargo run -p ironstorage-desktop launch smoke test
Implemented and pushed in commit 49451bc (Implement structured desktop editing).
- Added a storage-backed Iced editor for dynamic pass fields and multiline note lines, with add/remove/reorder, masked sensitive values, reveal, generate/replace, and secret-safe copy cleanup.
- Added primary-modifier+S saving through EntryDocumentService and AutomaticEntryCommitter. Successful saves reload the current conflict token; failures retain the complete dirty document.
- Added one Save / Discard / Cancel guard for open, reload, close, and actions requested during an active save. Storage conflicts require an explicit reload-or-keep-draft decision.
- Lock and lease expiry invalidate editor, clipboard, and stale asynchronous state.
- Added tests for structured/unknown-field round trips, multiline notes, Save, Discard, Cancel, failed and stale saves, lock/expiry, stale clipboard work, and the primary save shortcut.
Review completed against every acceptance criterion. Verification passed:
- cargo fmt --all -- --check
- RUSTFLAGS=-D warnings cargo check --workspace --all-targets
- cargo clippy --workspace --all-targets -- -D warnings
- cargo test --workspace
- native cargo run -p ironstorage-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
Implement a structured desktop editor with safe save, undo, and dirty-document behavior.
Scope
crates/storage; retain the dirty buffer and show the error if saving fails.Acceptance criteria
Command-S/Ctrl-Ssaves only a dirty valid document and reports errors without data loss.Implemented and pushed in commit
49451bc(Implement structured desktop editing).Review completed against every acceptance criterion. Verification passed: