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.
What this prevents
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
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
BundleStoreabstraction proposed in the desktop apps-installer issue. Once that exists, implementLocalBundleStore.list_snapshots / get_manifest_graph / create_snapshot / restoreagainst a per-project.tesslate/snapshots/manifest.jsonplus 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.