Skip to content

Unify workspace layout and add guided measurement - #71

Draft
Greg-J wants to merge 9 commits into
CNCKitchen:mainfrom
Greg-J:feat/guided-workspace-design
Draft

Greg-J wants to merge 9 commits into
CNCKitchen:mainfrom
Greg-J:feat/guided-workspace-design

Conversation

@Greg-J

@Greg-J Greg-J commented Nov 1, 2026

Copy link
Copy Markdown

Switching workspaces currently changes the layout and where controls live, and a scanner owner learning the app has to assemble the measurement workflow from individual hints. This draft proposes a shared layout across all six workspaces and an optional guide that follows actual imports, fits, dimensions, history and project downloads.

This is a complete implementation offered for design and integration review. I would like feedback on the overall direction before treating it as ready for adoption.

Behavior

  • One header and workspace rail, separate resizable Project/tool panels, mobile sheets, persistent commit/cancel controls, and a darker dark theme.
  • Tool search with Ctrl/Cmd+K, short tool lists with More, shared viewport/tree selection, keyboard tree navigation and undoable rename.
  • Guided measurement for face angles, parallel-face distances and hole/shaft diameter: import, scale check, fitting, dimension, Undo/Redo, save. Back reviews instructions without changing work. Fit scatter is distinguished from scanner accuracy.
  • A generated 30 × 20 × 12 mm practice block uses the normal importer and fitter. The current upstream bundled fridge-bracket sample remains available.
  • Existing geometry operations, units, project formats and plugin boundaries are retained. No new package dependencies or hosted services.

Commit structure and related PRs

Based on current main, 5c1f2f9 (0.9.4), including its sample scan, small-feature rendering, Mac modifier handling and note provenance changes.

The first two commits carry prerequisite fixes already proposed independently in #31 (modal focus/keyboard isolation) and #70 (reverse-note CSS leaking into 2D labels). They are kept separate so they can be applied independently and removed from this series once upstream includes them. Subsequent commits introduce the Measure shell, fix its start-pane width, extend it across the remaining workspaces, and document the workflow.

Other bug-fix PRs remain separate: this series does not include the mesh-welding, replacement-import, 3MF-worker/archive or preview-depth changes from #22, #23, #32 and #40. Local automation files and private review records are excluded.

Review locally

In a clone of this repository:

git fetch https://github.com/Greg-J/ScanRuler.git feat/guided-workspace-design
git switch --detach FETCH_HEAD
npm ci
npm --prefix mcp ci
npm run dev -- --host 127.0.0.1
  1. Open Guided measurement in 3D Measure, load the practice block, choose the face-angle path, and follow it through saving/reopening an editable project.
  2. Switch through all six workspaces, then choose Dark in Settings and compare the shared shell and visible tool actions.
  3. Resize to a phone-width window; check Project/tool sheets, More, tool search and keyboard focus.

Validation

  • Plugin-boundary and display-unit checks passed.
  • Full npm test -- --maxWorkers=2 passed; unavailable/private fixtures retain their existing skips.
  • npm --prefix mcp test: 127 tests passed, using current upstream's lockfile dependencies.
  • npm run build: TypeScript and production build passed.
  • npm run e2e:ci: exit 0; 25 browser suites executed successfully. The additional private scooter-cover check was skipped because its scan is unavailable.
  • Additional production run of the complete workspace/guide flow passed, including actual project download/reopen, deviation and thickness, dark theme and narrow layouts. Production sample import was verified at 1440×900, 390×844, 320×568 and 720×450.

Integration checks exposed two harness assumptions: native Select All in headless Mac number fields and coordinates cached before a tool panel resized the canvas. The harness now sends the native editing command and projects the same world-space ray into the resized canvas. Original geometry assertions and tolerances remain unchanged. A real phone overlap introduced by combining both sample choices was also reproduced and fixed by placing empty-state content and wrapped viewport controls in separate layout rows.

Browser verification uses isolated headless Chrome profiles and synthetic fixtures. Physical scanner accuracy, Safari/Firefox, physical touch/pen/SpaceMouse hardware and human novice testing have not been verified. No performance gain is claimed for this proposal.

Screenshots

Element editing

Element editing

Guided measurement

Guided measurement

Surface deviation in dark mode

Surface deviation in dark mode

Phone tool sheet

Phone tool sheet

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Thank you for the pull request. ScanRuler is dual-licensed (AGPL and commercial), which only works if its author may license every line of it, so a short Contributor License Agreement is needed once. You keep your copyright. To sign, reply with the sentence below exactly:


I agree to CLA.md


You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

This branch has not been deployed

No deployments
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