Skip to content

feat: #/boards catalog page + usb_bridge driver guidance (M3) - #236

Draft
Yona-Appletree wants to merge 8 commits into
mainfrom
claude/boards-catalog-page-m3
Draft

feat: #/boards catalog page + usb_bridge driver guidance (M3)#236
Yona-Appletree wants to merge 8 commits into
mainfrom
claude/boards-catalog-page-m3

Conversation

@Yona-Appletree

@Yona-Appletree Yona-Appletree commented Aug 1, 2026

Copy link
Copy Markdown
Member

Plan: lp2025/2026-07-31-1002-hardware-board-selection
Path: ~/.photomancer/planning/lp2025/2026-07-31-1002-hardware-board-selection/m3-boards-catalog-page.md

M3 of the hardware/board-selection roadmap: the public #/boards catalog page, rendered from the M1 display sidecars through the M2 BoardDiagram renderer.

Stacked on #231 (M2) — retarget to main after #231 merges. No CI until then (base-branch filter); local just check test is the parity gate meanwhile.

Phases

  • Phase 1 — usb_bridge metadata (plan D5): bridge enum on the display sidecar + usb_bridge.rs per-OS DriverGuidance (hardware-verified CH340K macOS steps verbatim; VID:PID for connect-time matching before board identity is known). Coordinated with the classic-ESP32 bring-up roadmap — its M2-P5 references this field. dom-z-102 = ch340k (hardware-verified); native-USB boards annotated; QuinLED + DevKitC v4 stay unset until their bridge variants are verified.
  • Phase 2 — BoardsCatalogPage in lpa-boards (behind the diagram feature): tier legend, recommended/price/name sort, SoC family chips derived from data, cards with thumbnail/tier/price/specs/blurb/purchase links + the driver warning (attention chip, expandable verified steps).
  • Phase 3 — #/boards route: StudioRoute::Boards at all four match sites (standalone early-return per the mapping-editor pattern, hard_reload arm, startup no-op, parse/hash round-trip test); OS detection at the studio-web platform edge; lpb-cat-* CSS block; catalog_page_macos story.
  • Visual gate — live page; pass = Yona would link it publicly. PR stays draft at the gate.

🤖 Generated with Claude Code

Yona-Appletree and others added 7 commits July 31, 2026 17:28
Driver need is a property of the USB bridge chip, not the board: boards
declare their bridge (usb_bridge sidecar field, set only when verified)
and usb_bridge.rs owns the facts — display name, VID:PID, and per-OS
DriverGuidance with the hardware-verified CH340K macOS procedure
embedded verbatim. VID:PID enables connect-time matching before board
identity is known. dom-z-102 = ch340k (verified on hardware by the
classic-ESP32 bring-up session); native-USB boards annotated; QuinLED
and DevKitC v4 stay unset until their bridge variants are verified.

Plan: 2026-07-31-1002-hardware-board-selection (M3 phase 1, decision D5)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
BoardsCatalogPage renders the embedded sidecars through BoardDiagram:
tier legend, recommended/price/name sort, SoC family chips derived from
data, cards with thumbnail/tier/price/specs/blurb/purchase links, and
the D5 driver warning (attention-level chip + expandable verified steps)
for bridges the detected OS can't see. StudioRoute::Boards follows the
mapping-editor standalone-page pattern at all four match sites; OS
detection stays at the studio-web platform edge.

Plan: 2026-07-31-1002-hardware-board-selection (M3 phases 2-3)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…'s sketch

Gate feedback applied:
- DOM-Z-102 corrected against the physical-board sketch: the top-right
  terminal is IO12 (relay, GPIO12) not IO13; buttons are BOOT/RESET;
  proportions widened toward the square DIN case (210 units).
- Tier flips: XIAO S3 Plus -> gold, C6-DevKitC-1 -> silver; legend copy
  now reads as recommendation levels (definition proposal pending).
- Card driver warning shrinks to a compact 'DRIVER REQUIRED · macOS'
  chip; the full verified steps move to the new detail view.
- Board detail view: in-page selection deep-linked as
  #/boards/<vendor>/<product> via replaceState (no events, so the
  standalone page keeps SPA behavior); caps pinout, driver section,
  and the minimal os-tagged note system (BoardNote { text, os,
  os_version }); DOM-Z-102 carries relay + stacked-button notes.

Plan: 2026-07-31-1002-hardware-board-selection (M3, gate revisions)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Per the M3 re-gate: classic ESP32 support is close enough to assume
working on the catalog.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Per the M3 re-gate: the selected card grows to a full-width grid row at
its own position (sticky collapse bar, neighbors reflow) instead of
swapping the page. The mirrored #/boards/<vendor>/<product> hash is a
bookmark, not a history entry, so the back button has nothing to break;
deep links land with the expanded card scrolled into view. Filtering
collapses the selection so a hidden card can't strand the deep link.

Plan: 2026-07-31-1002-hardware-board-selection (M3, re-gate revision)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three spurious full-gate reds in one session while the review-gate
workflow's own dev server was running; ~20% headroom on a 10s bound.
Workarounds and exit criteria inside; chip task_7acd45ad filed for the
paydown decision.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Yona-Appletree

Copy link
Copy Markdown
Member Author

Validation state for the expand-in-place round (b87aa1d): just check green (clippy all targets + schema); studio-web 215 tests, lpa-boards 18 tests, wasm32 check all green; a complete just test passed earlier tonight, and the only subsequent red is lps-probe's wall-clock perf test failing under a load-194 machine (three agent sessions building) — filed as docs/debt/lps-probe-perf-test-load-sensitive.md with a paydown chip. It passes in isolation (~8s vs 10s bound).

🤖 Generated with Claude Code

@Yona-Appletree
Yona-Appletree changed the base branch from claude/board-diagram-renderer-m2 to main August 1, 2026 15:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant