Expose Git-over-HTTPS synchronization and conflict information as desktop UI over crates/storage.
Scope
Present repository status, history where supplied, pull, push, and combined synchronization actions.
Show progress and actionable typed failures without parsing command output; the app must never launch git or a credential helper.
Present storage-owned HTTPS credential/identity requests through secure dialogs and secure-storage orchestration.
Reject or display storage rejection of non-HTTPS remotes; do not add SSH UI.
Present conflicts using storage-provided models and resolution commands, coordinating any operation that could replace a dirty document through the common Save / Discard / Cancel flow.
Keep automatic synchronization policy and Git decisions in crates/storage; the GUI only schedules or requests them and renders state.
Acceptance criteria
Pull, push, and sync work through Rust storage APIs with progress and cancellation-safe UI.
Credentials are not logged, placed in ordinary config, or retained in GUI-owned state.
Conflicts and non-HTTPS remotes produce explicit, recoverable presentation states.
Git operations cannot overwrite an unsaved editor buffer without confirmation.
## Goal
Expose Git-over-HTTPS synchronization and conflict information as desktop UI over `crates/storage`.
## Scope
- Present repository status, history where supplied, pull, push, and combined synchronization actions.
- Show progress and actionable typed failures without parsing command output; the app must never launch `git` or a credential helper.
- Present storage-owned HTTPS credential/identity requests through secure dialogs and secure-storage orchestration.
- Reject or display storage rejection of non-HTTPS remotes; do not add SSH UI.
- Present conflicts using storage-provided models and resolution commands, coordinating any operation that could replace a dirty document through the common Save / Discard / Cancel flow.
- Keep automatic synchronization policy and Git decisions in `crates/storage`; the GUI only schedules or requests them and renders state.
## Acceptance criteria
- Pull, push, and sync work through Rust storage APIs with progress and cancellation-safe UI.
- Credentials are not logged, placed in ordinary config, or retained in GUI-owned state.
- Conflicts and non-HTTPS remotes produce explicit, recoverable presentation states.
- Git operations cannot overwrite an unsaved editor buffer without confirmation.
hugo
added this to the 03 - Cross-platform Iced desktop app milestone 2026-08-09 19:30:17 +00:00
added a storage-owned desktop Git service for typed status/history, pull, push, combined sync, and conflict resolution
kept HTTPS validation, remote selection, credentials, transport, merge policy, automatic decisions, and tree refresh in crates/storage
preserved typed Git failures and conflict models for the Iced presentation without parsing command output
added shared menu, native menu, and command-palette actions plus a Git status/synchronization screen
shows branch, configured HTTPS remote, ahead/behind state, staged/unstaged changes, and recent history
reports operation phases, supports cancellation, and blocks overlapping storage actions while Git is running
routes credential access through the existing authentication lease and secure-storage GitCredentialProvider; the GUI owns no credential or password fields
renders actionable recovery for missing/invalid remotes, credentials, authentication, network, TLS, cancellation, non-fast-forward, dirty worktrees, and conflicts
renders storage-provided conflicts with explicit per-path local/remote choices and storage-owned resolution commits
routes pull, sync, and resolution through the common Save / Discard / Cancel guard and closes a clean stale document only after a real integration
added injected-transport coverage for controlled combined sync and desktop regressions for status/history, progress, pre-operation cancellation, HTTPS rejection, action availability, and dirty-draft protection
Review:
every acceptance criterion in the live issue is covered
no subprocess or credential-helper launch path was added
credentials are neither logged, written to ordinary config, nor retained in GUI state
Implemented and pushed as 95bb10b.
Implementation:
- added a storage-owned desktop Git service for typed status/history, pull, push, combined sync, and conflict resolution
- kept HTTPS validation, remote selection, credentials, transport, merge policy, automatic decisions, and tree refresh in crates/storage
- preserved typed Git failures and conflict models for the Iced presentation without parsing command output
- added shared menu, native menu, and command-palette actions plus a Git status/synchronization screen
- shows branch, configured HTTPS remote, ahead/behind state, staged/unstaged changes, and recent history
- reports operation phases, supports cancellation, and blocks overlapping storage actions while Git is running
- routes credential access through the existing authentication lease and secure-storage GitCredentialProvider; the GUI owns no credential or password fields
- renders actionable recovery for missing/invalid remotes, credentials, authentication, network, TLS, cancellation, non-fast-forward, dirty worktrees, and conflicts
- renders storage-provided conflicts with explicit per-path local/remote choices and storage-owned resolution commits
- routes pull, sync, and resolution through the common Save / Discard / Cancel guard and closes a clean stale document only after a real integration
- added injected-transport coverage for controlled combined sync and desktop regressions for status/history, progress, pre-operation cancellation, HTTPS rejection, action availability, and dirty-draft protection
Review:
- every acceptance criterion in the live issue is covered
- no subprocess or credential-helper launch path was added
- credentials are neither logged, written to ordinary config, nor retained in GUI state
- no SSH UI and no Apple project changes were added
Verification:
- cargo fmt --all -- --check
- RUSTFLAGS="-D warnings" cargo check --workspace --all-targets
- cargo clippy --workspace --all-targets -- -D warnings
- cargo test --workspace
- desktop suite: 25 passed
- embedded Git suite: 11 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
Expose Git-over-HTTPS synchronization and conflict information as desktop UI over
crates/storage.Scope
gitor a credential helper.crates/storage; the GUI only schedules or requests them and renders state.Acceptance criteria
Implemented and pushed as
95bb10b.Implementation:
Review:
Verification: