pcbjam/tests/web
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gergő Törcsvári f92266fcee
fix(ysync): wire dialect == file dialect, uuid churn, drift noise
The Y.Doc is the source of truth for the FILE, but both live wires wrote
KiCad's CLIPBOARD dialect — a lossy, paste-oriented format. Every
difference was permanent, unfixable drift.

- pcbnew: serialize footprint blobs with CTL_FOR_BOARD, not CLIPBOARD_IO's
  CTL_FOR_CLIPBOARD, which emitted (version)(generator)(generator_version)
  inside every (footprint …). Keep (locked yes).
- eeschema: aForClipboard=false — clipboard mode collapsed every symbol's
  (instances … (path "/sheet")) to (path "").
- Re-supply (version) at PARSE time only (withFootprintVersion): the token
  is invalid file content but load-bearing on decode — without it the
  parser starts at m_requiredVersion=0 and stamps (hide yes) on every
  mandatory field.
- FOOTPRINT copy ctor: restore mandatory-field uuids (EDA_ITEM::operator=
  keeps the target's const m_Uuid, so Clone() rerolled all four).
- drift: classify order-only diffs as `reordered` — y-sexpr v2 reorders
  legitimately; excluded from counts, report-worthiness and dedupe hashes.
  Migration 0017.
- fpedit from eeschema: AsyncLoad()+BlockUntilLoaded() in initLibraryTree —
  FACE_PCB starts lazily there and never preloaded its libraries.

Guards: wire-vs-file round-trip tests (pcbnew + eeschema),
fpedit-from-eeschema (verified red without the fix), symedit-from-eeschema.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016p9kjdGBdcpwUSjJ3q5xg2
2026-07-20 18:32:04 +02:00
..
chrome-toggle.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
comments-viewport-resize.spec.ts collab-presence 0010: unified draggable overlay menu 2026-07-16 17:25:56 +02:00
comments.spec.ts collab-presence 0010: unified draggable overlay menu 2026-07-16 17:25:56 +02:00
cross-probe.spec.ts feat(collab): cross-app selection — eeschema symbol ⇄ pcbnew footprint ghost highlight (collab-presence 0006) 2026-07-07 21:09:23 +02:00
eeschema-assign-footprints.spec.ts fix(wx): thread-safe wxString for the AsyncLoad fan-out — CvPcb-open trap solved 2026-07-20 11:56:20 +02:00
eeschema-fp-selector.spec.ts test(web): skip fp-selector spec — no-index path trips the modal-pump crash on CI (TODO: fix the pump, then re-enable) 2026-07-19 16:13:10 +02:00
follow.spec.ts collab-presence 0010: unified draggable overlay menu 2026-07-16 17:25:56 +02:00
footprint-browse-remote.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
footprint-write-remote.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
footprint-write-spike.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
fpedit-from-eeschema.spec.ts fix(ysync): wire dialect == file dialect, uuid churn, drift noise 2026-07-20 18:32:04 +02:00
global-setup-web.ts feat(scopes): migrate GPL open backend + web e2e to scope grammar 2026-06-30 09:54:50 +02:00
locks.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
mobile-editor.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
overlay-menu.ts collab-presence 0010: unified draggable overlay menu 2026-07-16 17:25:56 +02:00
presence-roster.spec.ts collab-presence 0010: unified draggable overlay menu 2026-07-16 17:25:56 +02:00
quit-after-tool-switch.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
quit-to-project.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
read-only-editor.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
symbol-write-remote.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
symbol-write-spike.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
symedit-from-eeschema.spec.ts fix(ysync): wire dialect == file dialect, uuid churn, drift noise 2026-07-20 18:32:04 +02:00
tool-switch-missing-file.spec.ts tool-switch: create the missing counterpart file instead of silently no-opping 2026-07-16 14:19:47 +02:00
tool-switch.spec.ts tool-switch: create the missing counterpart file instead of silently no-opping 2026-07-16 14:19:47 +02:00
tools-open.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00