sjat
14e8cf583f
docs: record segment-subdivision fix in design spec
2026-06-11 11:36:37 +02:00
sjat
8b7562786c
fix: subdivide straight moves before warping so the overlay follows lens curvature
...
A homography-era assumption survived the migration: projectSegments warped only
segment endpoints. The polynomial warp bends a path at its vertices, so a straight
G0/G1 move (2 points) rendered as a straight chord, hiding all distortion correction
(measured ~320px of bow collapsed to nothing on bed-spanning lines). Resample edges to
20mm in work space before warping; arcs already had dense vertices so are unaffected.
2026-06-11 11:35:29 +02:00
sjat
669815f64d
feat: ship degree-3 polynomial warp calibration (16-point box+# capture)
2026-06-11 11:25:50 +02:00
sjat
3c47b28c95
chore: remove orphaned Mat3 type; refresh README for polynomial warp
2026-06-11 09:41:28 +02:00
sjat
7b06902984
chore: clear stale homography calibration (awaiting box+# polynomial recalibration)
2026-06-11 09:38:51 +02:00
sjat
885f94098c
fix: declare process global so tsc build gate passes (pre-existing)
2026-06-11 09:37:44 +02:00
sjat
83f4c3eb7e
refactor: retire homography model in favour of PolyWarp
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 09:35:51 +02:00
sjat
31577787f1
docs: sync Task 8 test rewrite to hard-bound assertions
2026-06-11 09:34:46 +02:00
sjat
7614590b03
refactor: alignment UI and main wiring use PolyWarp
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 09:32:54 +02:00
sjat
103e96f097
feat: calibration UI computes PolyWarp with degree selector
2026-06-11 09:29:24 +02:00
sjat
f3081d36b5
fix: reject warp configs with non-positive-integer degree
2026-06-11 09:28:04 +02:00
sjat
3e9878ac42
refactor: config validates PolyWarp calibration
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 09:25:47 +02:00
sjat
0130188416
refactor: app state stores PolyWarp
2026-06-11 09:23:42 +02:00
sjat
dc59f5ed63
refactor: transform layer uses PolyWarp
2026-06-11 09:22:02 +02:00
sjat
fcfa3a0d80
test: tighten barrel regression guard to a hard near-exact bound
2026-06-11 09:21:04 +02:00
sjat
2c2bbb17b9
docs: correct default degree to 3 (barrel distortion is cubic in machine coords)
2026-06-11 09:17:15 +02:00
sjat
c7b48105a6
feat: bivariate polynomial warp model (degree-3 default for barrel)
2026-06-11 09:16:02 +02:00
sjat
72d32db516
feat: extract linalg solver + add least-squares helper
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 09:09:05 +02:00
sjat
04fc642137
docs: add box+# calibration target procedure to distortion spec
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 08:51:48 +02:00
sjat
a94beccaad
docs: design for wide-angle distortion compensation (polynomial warp)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 08:46:11 +02:00
sjat
d22cdd5302
feat: ship default calibration (2440x1220 bed homography)
...
Persist a working calibration so the overlay is usable out-of-the-box without
each viewer re-calibrating. 4 corner point-pairs + precomputed homography
(machine-mm -> normalized [0,1] image coords).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 08:07:49 +02:00
sjat
cbc11f3bb9
feat: wire CNC camera via same-origin /camera proxy, bolder overlay
...
- streamUrl -> relative /camera/mjpg/video.mjpg so the page loads the LAN-only
CNC MJPEG cam same-origin (no mixed-content, no embedded creds). Vite
dev-proxy added so the same path works under `npm run dev`.
- renderDefaults: thicker lines (lineWidth 3) and fully-saturated cut/rapid
colors so the toolpath reads clearly over the video feed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 08:04:12 +02:00
sjat
845e92e56f
test: jsdom coverage for overlay drag + calibration/alignment arbitration
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:59:49 +02:00
sjat
3538d5ccb9
fix: enable overlay drag interaction; tidy dead export and residual readout
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:57:03 +02:00
sjat
fac9168c00
docs: README and deployment config
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:51:47 +02:00
sjat
dbb302f765
fix: guard alignment input against numeric-field editing and calibration clicks
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:50:30 +02:00
sjat
5d80273717
feat: per-job alignment (numeric, click-origin, drag/rotate)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:47:08 +02:00
sjat
d1577dd569
fix: make calibration resolution-independent (normalized image coords)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:45:29 +02:00
sjat
1df5509b29
feat: calibration capture UI with reprojection residuals
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:40:32 +02:00
sjat
38d99bb0dc
feat: app state, stream embedding, G-code render wiring
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:37:35 +02:00
sjat
dd409f56c0
feat: page layout and overlay canvas sizing
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:34:28 +02:00
sjat
96221a217d
feat: canvas overlay renderer
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:31:56 +02:00
sjat
f22a0c16df
fix: validate renderDefaults fields and reject non-finite calibration values
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:30:39 +02:00
sjat
799998fad2
feat: config loader with calibration validation
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:28:07 +02:00
sjat
960d453f57
fix: parser skips non-drawing moves; clean up TS build
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:26:48 +02:00
sjat
c5c1b5e5c2
feat: G-code parser with arcs, units, modal motion
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:21:11 +02:00
sjat
4a554e2057
feat: alignment + projection pipeline
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:18:42 +02:00
sjat
87d579eb47
feat: homography estimate/apply/invert
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:15:36 +02:00
sjat
e475626497
fix: guard flattenArc against zero-radius (degenerate) arcs
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:13:58 +02:00
sjat
7ddaee1454
feat: shared types and arc flattening
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:11:03 +02:00
sjat
959c1fa44e
chore: scaffold Vite + TS + Vitest project
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:08:36 +02:00
sjat
940b0b2fbe
Add G-code overlay implementation plan
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:01:49 +02:00
sjat
08767cf821
Add G-code overlay design spec
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 21:55:06 +02:00