Skip to content

UX de statut + onboarding + hors-ligne + conversations non-resumables #137

Description

@64ix

Parent

#130

What to build

The daily sync experience — renderer side only: the engine loop itself (continuous long-poll consumption, at-launch catch-up, reconnect/backoff, debounced push) is #133's scope; this ticket surfaces it. A status widget in the sidebar footer shows the sync state (syncing / up-to-date / offline-with-pending / error), an always-visible "Sync now" action, and a popover with the last successful sync, any errors, and the decrypt-quarantine list when non-empty. A new machine's first run prompts "Join an existing space" (paste the secret) as the primary action; completing onboarding (join or create) turns on the sync.enabled kill switch. While offline, local edits queue with a pending badge and auto-sync on reconnect. A synced conversation that cannot be resumed on this machine is shown with a "not resumable" state.

Acceptance criteria

  • A sidebar status widget shows the four sync states, an always-visible "Sync now", and last-sync/error/quarantine detail in a popover, driven by a sync:status typed event and a sync RPC namespace.
  • First run without a space prompts Join (primary) vs Start from scratch (secondary); completing either enables sync.enabled, and Settings can disable it (kill switch surfaced).
  • Offline: edits stay local, a pending badge shows, reconnect triggers push+pull.
  • Synced conversations without a resumable session show an explicit "not resumable on this device" state.
  • The sync-status store (useSyncExternalStore) and its event wiring are covered by node-project tests against a fake relay/engine; the widget's visual states are browser-suite coverage (not part of the agent gate — report not-run when the infra is absent).

Blocked by

  • 3 (engine), 4 (E2E encryption — no user-triggerable sync ships before bodies are encrypted), 5 (pairing)

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions