Repository navigation
UI: neutral EDA redesign (tokens, docked chrome, tabbed dock, dense tables) - #6
Merged
Merged
Conversation
Contract for the unattended implementation run: decisions, interfaces, task breakdown with tiers, verification commands and follow-ups. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
Replace the slate/violet theme in index.css with the handoff token sheet (light + dark), keep compatibility aliases for pre-redesign semantic names, and remap Tailwind's slate/violet scales and radius scale so unmigrated files render neutral and flat. Bundle IBM Plex Sans/Mono via @fontsource (Electron runs offline). Rewrite docs/design/design-tokens.md for the new system. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
Restyle button/card/chip/pill/icon-button/tabs/tooltip/menus/textarea to the design tokens (22px controls, 2px radii, no violet) with additive-only API changes, and add the shared building blocks the redesigned screens use: PanelSectionHeader, PropertyGrid/PropertyRow, TableHeaderRow/TableRow, SegmentedControl, SearchField, Checkbox, StatusDot, SeverityDiamond, DockTabs, StatusBar/StatusSegment, Toolbar/ToolbarButton. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
Left rail restyled to the 80px icon+label design (72px items, 20px 1.5 stroke icons, 10px labels, neutral active state); title bar, theme toggle, app context menu, dialog/scroll-area, module/settings screens and settings panels moved from raw slate/violet classes to semantic tokens. Electron window-controls-overlay colours updated to the new rail values. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
BOM: tier dot instead of row tint/stripe, Designators/Value/Footprint/
Qty/MPN/Unit/Ext columns, in-table totals row, 22px status footer, and
the sourcing rail as a property grid with a match-tier legend. Autosave,
export, bulk DNP, sorting and cross-probe logic unchanged.
Home: 34px header, 200px filters sidebar whose footer carries the
cloud-sync state ("Sign in to sync"), 64px list rows with thumbnails,
300px design-detail panel, status footer; grid view kept behind a toggle.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
Table is the default view (Grid kept behind a toggle persisted in localStorage); row click fills a 380px preview pane (symbol/footprint previews, part fields, footprints, pins) via an extracted useComponentDetail hook; double-click/Enter opens the unchanged detail page. Rows carry the same drag payload as cards through a shared helper. Facets, chips, tag inputs and the detail page move to semantic tokens. E2E specs now open components via the row testid + double-click. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
Docked chrome via portal slots: 34px header with underline view tabs, 30px toolbar, contextual 28px parameter row hosting the route/tune/bundle HUD content, 260px left panel, one tabbed right dock (Properties | DRC | Assistant) with a localStorage migration from the three legacy docks, a layer tab strip under the canvas, and a 22px status bar (cursor X/Y via a dedicated store so pointer moves never re-render the shell). New PcbPropertiesPanel renders board settings when idle, footprint details on selection, and the former floating free-primitive editors. Every hotkey, resize handler, persisted key, HUD editor contract and e2e accessible name is preserved; ToolbarButton gains an optional title override. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
Remove the PcbTopToolbar props the docked toolbar no longer reads and the unused boardPanelTarget portal; move the remaining raw palette classes in PcbCanvas overlays (hint strips, badges, cursor readouts, DRC tooltip, toasts) and the PCB dialogs/modals/autolayout UI to semantic tokens. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
Schematic: docked 30px toolbar (exact former accessible names), Outline panel with section header, filter field, segmented Parts/Nets/Labels and 22px table rows, inspector panels as property grids inside the shared right dock with a Sheet summary when nothing is selected, and a readable status-bar selection summary. Library: remove the Mount column — the list DTO carries no mount type, so it rendered a dash on every row. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Refactors the desktop UI to the neutral EDA design from the Claude Design handoff (2a PCB shell, 3a Schematic, 3b Library, 3c BOM, 3d Home, 2b token sheet): violet chrome and pill geometry are retired for a near-black/warm-neutral token system with IBM Plex, docked toolbars, one tabbed right dock (Properties · DRC · Assistant), a layer tab strip, dense tables and a segmented status bar. Behaviour is unchanged — every callback, store, hotkey, persisted key, drag MIME contract and Playwright accessible name was preserved (see
PLAN.mdfor the contract, run log and follow-ups).Type of change
Test plan
npm run typecheck— no new errors. Note: roottsc -balready fails onmasterwith 36 pre-existing errors inassistant/**,library/backend/**andcore/backend/tests(AiProviderKindlacks"openpcb-cloud"); this branch adds none. Verified withtsc -p tsconfig.modules.jsonfiltered tocore/designer/library/sharedfrontend (empty) and the frontend workspacetsc --noEmit(exit 0).npm run gen:check— no generated files touchednpm run test:backend— backend untouchednpm run test:react— 48 files / 341 tests (baseline 47 / 326; +15 for the new dock-prefs migration test)npm run test:e2e— not run here (needs Electron/Chromium harness); selectors audited against the diff. Two specs updated because the Library now defaults to the table view:builtin-footprints.spec.tsand3d-preview.spec.tsopen components vialibrary-component-row-*+ double-click.npm run build:frontend— succeeds (pre-existing chunk-size warning only)Notes for reviewers
Commits are one per task and reviewable in order: T1 tokens/fonts/docs → T2 shared primitives → T3 app shell → T7 BOM+Home → T6 Library → T4 designer shell + PCB → T8a PCB cleanup → T5 schematic.
src/core/frontend/src/index.css): the design's@theme+ light/dark tokens, compatibility aliases for the old semantic names, and — as a documented stopgap — Tailwind'sslate-*/violet-*scales androunded-*radii remapped so the ~100 not-yet-migrated files (assistant, knowledge, settings panels, import wizard, comment popups) render neutral and flat. Follow-up: migrate them to semantic utilities.DesignerRightDock,stores/designer-dock-prefs.ts): the three legacy docks (inspector / DRC / chat) become one tabbed dock; legacy localStorage keys are read once and migrated (unit-tested).PcbCanvaskeeps every prop; it portals the toolbar, parameter row (Route/Tune/Bundle HUD content), layer strip and Properties body into slotsSpace.tsxrenders — the same pattern the Layers panel already used.pcb-cursor-storeso pointer moves never re-render the editor shell.@openpcb/r3f-eda-canvas(OpenPCB-app/shared) — design values are listed inPLAN.md§9 for a follow-up there. Website (4a) is a separate repo.docs/design/design-tokens.mdwas rewritten for the new system;ui-backlog.mdnotes that its mockups predate the redesign.🤖 Generated with Claude Code
https://claude.ai/code/session_01Np3Vgtux8ZgiKcc75wYrZE
Generated by Claude Code