Compare commits

...

2 commits

Author SHA1 Message Date
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
2 changed files with 35 additions and 3 deletions

View file

@ -1,5 +1,23 @@
{
"streamUrl": "",
"calibration": null,
"renderDefaults": { "cutColor": "#00e5ff", "rapidColor": "#ff9800", "lineWidth": 1.5 }
"streamUrl": "/camera/mjpg/video.mjpg",
"calibration": {
"imagePoints": [
[0.3182042321463028, 0.008781558726673985],
[0.6584910919108977, 0.010976948408342482],
[0.9349741654696311, 0.9341383095499451],
[0.05201209184657934, 0.9407244785949506]
],
"machinePoints": [
[0, 0],
[0, 1220],
[2440, 1220],
[2440, 0]
],
"homography": [
-0.00012223053029634107, 0.00028168511954120923, 0.3182042321463022,
0.00014436860873395254, 0.0000018455329325253353, 0.008781558726673699,
-0.0002525449441254382, 0.000004193623923514485, 1
]
},
"renderDefaults": { "cutColor": "#00ffff", "rapidColor": "#ff7700", "lineWidth": 3 }
}

View file

@ -1,5 +1,19 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
// Dev-only: proxy the CNC MJPEG camera so the page can load it via a
// same-origin relative path (`/camera/...`), exactly as nginx does in
// production. Keeps `streamUrl` identical in dev and prod and avoids
// mixed-content / cross-origin issues. Override the target for a different
// camera with: VITE_CAMERA_TARGET=http://host npm run dev
server: {
proxy: {
'/camera': {
target: process.env.VITE_CAMERA_TARGET || 'http://172.17.3.38',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/camera/, ''),
},
},
},
test: { globals: true, environment: 'node' },
});