Covers three changes: skip move-only autosaves, add detailed diff metadata for hover tooltips, and hide branching UI. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.0 KiB
UX Rework Design — 2026-04-03
Context
After regular use, three pain points emerged:
- Autosave generates too many snapshots (moves spam the timeline bar)
- Branching UI is confusing and never used
- No way to know what specifically changed when hovering a snapshot
Changes
1. Autosave — Skip move-only snapshots
Problem: Moving nodes triggers auto-captures as frequently as structural changes, filling the timeline fast.
Solution: Add a guard in the capture path: if detectChangeType() returns 'move', skip the save and return early. No new config, no debounce changes.
Existing snapshots are unaffected.
2. Detailed diff metadata on hover
Problem: Snapshot icons show a change type icon but not what specifically changed.
Solution: At capture time, after detectChangeType(), run a new computeDetailedDiff(prevGraph, currentGraph) that produces:
{
"added": ["CLIPTextEncode", "KSampler"],
"removed": ["VAEDecode"],
"params": ["KSampler: steps 20→30", "KSampler: cfg 7→9"]
}
This object is stored in snapshot metadata. On hover in the sidebar or timeline, a tooltip renders these lines as plain text.
For snapshots captured before this change (no diff field), the tooltip falls back to the existing change type label.
Diff computation:
- Added/removed nodes: compare node sets by ID, label by title+type
- Changed params: compare
widgets_valuesper node between previous and current graph
3. Hide branching UI
Problem: Branch navigation is confusing and adds visual noise.
Solution: Add const BRANCHING_ENABLED = false at the top of snapshot_manager.js. All branch UI rendering (the < 1/2 > navigator, branch buttons, activeBranchSelections sidebar/timeline logic) checks this flag and skips when false.
Underlying data and code (parentId, buildSnapshotTree, etc.) are left intact.
Out of Scope
- Removing branching code
- Making branching a user-facing settings toggle
- Changing debounce timing
- Retroactively hiding or deleting move-type snapshots