pcbjam/docs/features/ysync-review
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gergő Törcsvári 574284c486
feat(collab): local-ops-only undo — remote applies skip the undo stack (ysync miss 09)
Ctrl+Z after a peer's edit no longer reverts (and re-broadcasts) the
peer's work, and the adopt undo-bomb is gone:

- doApply/doApplyItems (both editors) Push with SKIP_UNDO; the emit path
  is unaffected (suppression keys off s_applyingRemote, not undo).
- With SKIP_UNDO no picker owns removed items — the bindings free them
  after Push (explicit removals + upsert's remove-before-re-add; fields
  excluded: CHT_REMOVE hides them, parent keeps ownership). Freeing stays
  out of the fork commit classes so DRC's SKIP_UNDO callers can't
  double-free.
- Test hooks kicadCollabTestUndo/UndoDepth, registered per-editor AND in
  the kicad_editor dispatcher (merged image compiles out per-app
  registrations).
- kicad pointer: eeschema UUID undo guard + SKIP_UNDO connectivity split
  + quiet stale-entry drop (ca8877324c).
- tests/kicad/collab-undo.spec.ts: 5 scenarios (no undo entry from remote
  applies; selective undo; stranded replaced/deleted entries) — 5/5, plus
  collab/ysync regression 30 pass.
- docs: ysync-review 20 fix record; 09 marked FIXED; overview indexed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ejJEvS7ogef2o9gVTXjmp
2026-07-08 11:09:26 +02:00
..
00-overview.md feat(collab): local-ops-only undo — remote applies skip the undo stack (ysync miss 09) 2026-07-08 11:09:26 +02:00
01-bug-first-tab-listener-never-registered.md fix(ysync): review bugs 01–07 — listener registration, pad nets, child removals, dirty-set emit, targeted rebaseline, seed arbitration, stale hook (doc 17) 2026-07-06 08:57:57 +02:00
02-bug-footprint-blob-zeroes-pad-nets.md fix(ysync): review bugs 01–07 — listener registration, pad nets, child removals, dirty-set emit, targeted rebaseline, seed arbitration, stale hook (doc 17) 2026-07-06 08:57:57 +02:00
03-bug-child-removal-dangling-slot.md fix(ysync): review bugs 01–07 — listener registration, pad nets, child removals, dirty-set emit, targeted rebaseline, seed arbitration, stale hook (doc 17) 2026-07-06 08:57:57 +02:00
04-bug-lossy-change-detection.md fix(ysync): review bugs 01–07 — listener registration, pad nets, child removals, dirty-set emit, targeted rebaseline, seed arbitration, stale hook (doc 17) 2026-07-06 08:57:57 +02:00
05-bug-rebaseline-swallows-local-edits.md fix(ysync): review bugs 01–07 — listener registration, pad nets, child removals, dirty-set emit, targeted rebaseline, seed arbitration, stale hook (doc 17) 2026-07-06 08:57:57 +02:00
06-bug-concurrent-seed-duplicates-layout.md fix(ysync): review bugs 01–07 — listener registration, pad nets, child removals, dirty-set emit, targeted rebaseline, seed arbitration, stale hook (doc 17) 2026-07-06 08:57:57 +02:00
07-bug-sheet-switch-stale-down-hook.md fix(ysync): review bugs 01–07 — listener registration, pad nets, child removals, dirty-set emit, targeted rebaseline, seed arbitration, stale hook (doc 17) 2026-07-06 08:57:57 +02:00
08-miss-layout-state-never-syncs.md feat(ysync): lib_symbols travel + layout save-sync (miss 08), TS hot-path opts (12), diff-on-rebind adopt (13) — doc 18 2026-07-06 08:57:58 +02:00
09-miss-undo-not-collab-aware.md feat(collab): local-ops-only undo — remote applies skip the undo stack (ysync miss 09) 2026-07-08 11:09:26 +02:00
10-miss-no-repair-path.md docs(ysync-review): repro suite results + empirical findings (doc 16); plan 15 executed 2026-07-06 08:56:11 +02:00
11-miss-no-v2-e2e-coverage.md docs(ysync-review): repro suite results + empirical findings (doc 16); plan 15 executed 2026-07-06 08:56:11 +02:00
12-opt-hot-path-full-model-work.md feat(ysync): lib_symbols travel + layout save-sync (miss 08), TS hot-path opts (12), diff-on-rebind adopt (13) — doc 18 2026-07-06 08:57:58 +02:00
13-opt-parked-dirty-full-sheet-replace.md feat(ysync): lib_symbols travel + layout save-sync (miss 08), TS hot-path opts (12), diff-on-rebind adopt (13) — doc 18 2026-07-06 08:57:58 +02:00
14-opt-item-granularity-bandwidth.md feat(ysync): lib_symbols travel + layout save-sync (miss 08), TS hot-path opts (12), diff-on-rebind adopt (13) — doc 18 2026-07-06 08:57:58 +02:00
15-plan-repro-tests-and-v2-e2e.md docs(ysync-review): repro suite results + empirical findings (doc 16); plan 15 executed 2026-07-06 08:56:11 +02:00
16-repro-suite-results-and-empirical-findings.md docs(ysync-review): repro suite results + empirical findings (doc 16); plan 15 executed 2026-07-06 08:56:11 +02:00
17-fixes-bugs-01-07.md fix(ysync): review bugs 01–07 — listener registration, pad nets, child removals, dirty-set emit, targeted rebaseline, seed arbitration, stale hook (doc 17) 2026-07-06 08:57:57 +02:00
18-miss08-opts-12-13.md feat(ysync): lib_symbols travel + layout save-sync (miss 08), TS hot-path opts (12), diff-on-rebind adopt (13) — doc 18 2026-07-06 08:57:58 +02:00
19-undo-option1-feasibility.md docs(ysync-review): 19 — miss-09 option 1 (local-ops-only undo) feasibility research 2026-07-07 21:09:24 +02:00
20-fix-miss09-collab-aware-undo.md feat(collab): local-ops-only undo — remote applies skip the undo stack (ysync miss 09) 2026-07-08 11:09:26 +02:00