Comfy-Org / Comfy-Org/Comfy-Desktop
Snapshot restore: add "additive" restore mode
- 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