pcbjam/web/standalone/src/components
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gergő Törcsvári 8ad1cc673a
feat(collab): presence P2 — pcbnew selection/cursor emit + remote VIEW_OVERLAY render (collab-presence 0002)
Zero kicad-fork changes — all in the embind layer:
- pcbnew_embind.cpp: presence section — canvas wx Bind() triggers (motion/
  leave/up/key/wheel) + COLLAB_LISTENER piggyback → post-settle selection
  check (dedupe) → onSelection; throttled cursor emit via VIEW::ToWorld;
  viewport push/pull (px-per-IU via the GAL matrix — GetScale() is the zoom
  and sized the first cut's overlay nm-small); kicadCollabSetRemote renders
  peers' cursors (cross + name) and selection bbox outlines into one
  per-user-colored VIEW_OVERLAY (CallAfter+COROUTINE), never touching local
  selection; PresenceStart/GetSelection/TestSelectFirst/TestClearSelection.
- kicad_editor_embind.cpp: merged-image dispatch (pcb-only until 0003).
- presence-kicad.ts: bindKicadPresence — routes emits into awareness (0001)
  and pushes trailing-throttled peer snapshots into the wasm; wired from
  WasmTool.startPresence (pcbnew-gated). +5 unit tests.
- tests/kicad/presence-pcbnew.spec.ts: 5 e2e — programmatic + real box-select
  emit, throttled cursor, remote render with no-leak + pixel restore,
  viewport unit band. Existing pcbnew-collab/items-bridge suites stay green.

Verified live: two tabs over partykit — peer cursor cross + label + selection
outline visible on the other tab's canvas.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CvqUd4QsJSGHN28aunJRTq
2026-07-07 21:09:22 +02:00
..
ui refactor(web): split into GPL standalone editor + thin reference backend 2026-06-09 12:35:46 +02:00
FileTree.tsx feat(standalone): demo follow-ups — waitlist, analytics, move-to-local, file tree, load progress 2026-06-27 07:59:09 +02:00
LocalProjectView.tsx feat(standalone): demo follow-ups — waitlist, analytics, move-to-local, file tree, load progress 2026-06-27 07:59:09 +02:00
NewFileDialog.tsx feat(scopes): phase 0003 — standalone scope routing, tool inference, scoped API client, Demo/Local/Cloud badges 2026-06-30 09:54:49 +02:00
PresenceRoster.tsx feat(collab): presence P1 — awareness transport + who's-here roster (collab-presence 0001) 2026-07-07 21:09:22 +02:00
ProjectsSection.tsx fix(scopes): standalone project list label showed old /p/<slug> instead of scope/projects/<slug> 2026-06-30 09:54:49 +02:00
SourceChip.tsx polish(standalone): unify home Projects list + solid source chips 2026-06-20 08:53:16 +02:00
StorageUsageCard.tsx feat(3d): lazy 3D model delivery R2→IDB→WASM 2026-07-02 11:35:36 +02:00
ToolGrid.tsx feat: standalone home rework — tool launcher + backend libraries listing 2026-06-16 16:28:21 +02:00
VersionBadge.tsx feat(standalone): demo follow-ups — waitlist, analytics, move-to-local, file tree, load progress 2026-06-27 07:59:09 +02:00
WaitlistForm.tsx copy(waitlist): drop "no spam, unsubscribe anytime" from demo + marketing 2026-07-04 12:37:33 +02:00
WasmTool.tsx feat(collab): presence P2 — pcbnew selection/cursor emit + remote VIEW_OVERLAY render (collab-presence 0002) 2026-07-07 21:09:22 +02:00