Comfy-Org / Comfy-Org/Comfy-Desktop

Snapshot restore: add "additive" restore mode

Open
#1,261 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
TypeScript
Stars
458
Forks
59
Avg merge
22h 18m
Merged PRs (30d)
45

Description

Follow-up to #1248, which introduced two snapshot restore modes:

- **exact** — pip-sync the venv to exactly match the snapshot (default for in-history restores)
- **compatible** — adapt the snapshot to the local machine (keep local torch stack if the snapshot''s managed stack is unavailable, additive repair pass for node requirements; default for staged/imported envelope restores)

A third **additive** mode was scoped out of that PR and deferred:

- Never remove anything from the venv; only install missing packages and check out missing/mismatched custom nodes.
- Useful when the user wants to layer a snapshot''s custom nodes onto an existing working install without risking removal of packages they installed manually.
- Should reuse the `repairNodeRequirements(...)` additive pass and the restore-mode plumbing added in #1248 (`src/main/sources/standalone/` snapshot restore path).

Open questions:
- How to reconcile conflicting pins (snapshot wants `foo==1.0`, venv has `foo==2.0`) — leave local version, upgrade, or prompt?
- Whether additive mode should ever touch the torch stack (probably never).

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the snapshot restore path under src/main/sources/standalone/ and the restore-mode plumbing introduced by #1248. Trace how exact and compatible modes invoke repairNodeRequirements(...), then decide how additive mode handles conflicting pins and the torch stack. Done means additive restore installs missing packages and checks out missing or mismatched custom nodes without removing or changing existing local packages.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.