Skip to content

desktop: snapshots: project timeline + restore fail because endpoints are Hub-only #117

Description

@sanjitkverma

What this prevents

  • I can save a snapshot of my project at a specific moment.
  • I can browse the timeline of every snapshot taken on my project.
  • I can restore my project to a past snapshot.
  • I can see a manifest graph of how snapshots relate to one another.

The project timeline UI and snapshot/restore endpoints all proxy through the Volume Hub, which only exists in K8s mode. On desktop every call fails because no Hub is reachable. Users cannot version their projects or roll back, so the entire timeline feature is dead in the desktop client.


Surface

  • The snapshot router endpoints (list, manifest graph, create, restore) all call into the volume manager, which then goes through the Hub client.
  • The legacy EBS snapshot manager is also K8s-only: it calls the in-cluster Kubernetes config loader directly.

Expected vs Actual

Expected: a desktop user can take a snapshot, see it in the timeline, and restore it. The mechanism does not need to be CAS or btrfs, but the endpoints must succeed.

Actual: every snapshot router endpoint errors out because no Hub responds. The frontend timeline panel renders empty.

Suggested fix

Depends on the BundleStore abstraction proposed in the desktop apps-installer issue. Once that exists, implement LocalBundleStore.list_snapshots / get_manifest_graph / create_snapshot / restore against a per-project .tesslate/snapshots/manifest.json plus a tarball-per-checkpoint scheme. Optionally back the snapshot metadata with git refs so the user gets the same content-addressed semantics K8s provides.

One subtle bit: restore must terminate the running PTY for the project's local dev server (the desktop equivalent of bouncing pods) before swapping files, then restart it. Otherwise the dev server holds open file descriptors against the old tree.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingopensourceSelf-contained issue suitable for external contributors

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions