- Add axis.js: length axis rectangle state, 28 tests - 71/71 unit tests green
1.9 KiB
SlabUploader M1 — shared build context (for :202 worker tasks)
REPO: /home/ty/SlabUploader — work ONLY inside /home/ty/SlabUploader/frontend. Branch: M1-dev-rev4 (already checked out; DO NOT switch branches, DO NOT push). This is Milestone 1 (Capture) of a slab-measuring web app. Browser-only, NO backend, NO inference, NO OpenCV/ONNX. Pure JS (not TS). Svelte 5 + SvelteKit + adapter-node.
TEST COMMANDS (run these, show real output): unit: cd /home/ty/SlabUploader/frontend && npx vitest run e2e: npx playwright test --list (collection only; full e2e needs the M1-6 container)
EXISTING (already committed, green, DO NOT break): src/lib/core/mask.js -> keySheet(data,{sheet,sensitivity}), maskStats(mask) src/lib/core/math.js -> scale, sqft, bdft, roundHalfUp, sampledWidths, sampledWidthsFrom, snapToEighth tests/unit/mask.test.js, tests/unit/math.test.js (24 tests, all pass) src/routes/+page.svelte (placeholder home — M1-3 replaces it) src/routes/+layout.svelte, src/routes/api/health/+server.js
TDD IS MANDATORY (test-driven-development skill):
- Write the failing test(s) FIRST.
- Run them and WATCH them fail for the right reason (feature missing, not a typo).
- Write the MINIMAL code to pass.
- Run them and confirm they pass.
- Run the FULL unit suite (npx vitest run) and confirm no regressions + pristine output.
- Only then are you done. Commit is done by the coordinator — you do NOT commit.
CONVENTIONS:
- Tab indentation (the repo uses tabs).
- Pure logic lives in src/lib/core/*.js (DOM-free, unit-testable under node).
- Svelte components live under src/lib/ (e.g. src/lib/components/).
- Every new exported function needs a unit test that you SAW fail first.
- No console.log left in production code.
- Do not add dependencies.
- Report at the end: files created/changed, the exact test command output, and any place you had to make a judgment call.