Skip to content

[Feature]: Implement native Desktop project lifecycle workflows #123

Description

@Dencyuman

Use case

Give Desktop users reliable create/open/import/save/recent/close/recovery workflows through native dialogs and durable Runtime state, while allowing separately implemented external-storage adapters to participate through the same lifecycle.

Suggested shape

Build Desktop shell flows for new project, local open/import, recent and pinned projects, save/export destinations, dirty-close handling, missing files, crash recovery, and storage-origin handoff.

Acceptance criteria

  • New, open, and import use native dialogs and preserve cancel as a non-error result.
  • Recent and pinned entries use stable project identity, handle moved/missing files, and never expose inaccessible paths in UI errors.
  • Dirty close, window close, and app quit distinguish pending preview, ephemeral edits, durable commits, and pending provider reconciliation.
  • Autosave and explicit save surface revision/conflict results and cannot overwrite a newer authoritative revision silently.
  • Crash or forced-exit recovery identifies recoverable sessions and requires explicit user choice before restoration or discard.
  • Opening the same project twice has deterministic focus, read-only, lease, or conflict behavior.
  • Local lifecycle exposes typed handoff points for external storage connection, credential, sync, and reconcile adapters.
  • Integration tests cover cancel, missing file, permission failure, concurrent open, stale revision, crash recovery, pending reconcile, and restart.

Constraints

  • Native dialogs and window lifecycle stay in the Wails shell; document semantics stay in Engine/Runtime.
  • Do not add server-managed Organization/Workspace, sharing, or realtime collaboration; provider behavior must remain behind host adapters.

Alternatives and workarounds

Browser file APIs alone are insufficient for the Desktop delivery channel's native lifecycle and recovery behavior.

Dependency

Blocked by #122.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: runtimeDocument runtime, state, history, and realtimearea: webWeb editor and browser integrationpriority: p1High prioritytype: featureA proposed product capability or enhancement

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions