Skip to content

Implement project discovery and multi-document lifecycle #3

Description

@zoeyrose

Outcome

Open authored content projects safely and manage multiple linked documents without conflating source, generated output, runtime state, or recovery data.

Scope and invariants

  • Support explicit open/recent projects, validated roots/manifests, project identity, resource/content version compatibility, and clear diagnostics.
  • Manage tabs/documents, active/selected state, dirty markers, linked-map navigation, external changes, close/quit confirmation, reopen, and session restore.
  • Keep autosave/recovery outside authored sources with project/file revisions and user-controlled restore/discard.
  • Watch source/resource changes with debounce/generation semantics and avoid feedback loops from editor writes.
  • Never write generated/runtime/server state paths as authored source.

Acceptance criteria

  • Tests cover multiple projects/documents, duplicate opens, rename/delete/external edit, invalid/symlinked roots, crashes, corrupt recovery, reopen, and version mismatch.
  • Dirty state is document- and transaction-accurate; closing one document cannot lose another's changes.
  • Recovery offers semantic/text diff context before applying and cannot overwrite newer source silently.
  • Linked navigation preserves each document's viewport/tool/selection state.
  • Large projects meet explicit discovery/watch memory/latency bounds.

Dependencies and parallelization

Depends on #2 and toolkit project/document APIs. UI chrome and toolkit indexing can proceed in parallel.

Licensing

Editor code/tests are MIT. Verified original past work by an approved MIT provenance grantor may be copied, migrated, or translated under the audited file/component grant; other legacy implementation remains behavior/specification input only. Authored content/assets retain exact licenses.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    None yet

    Effort

    None yet

    Projects

    Status
    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions