jessikitty
|
12d30b3b8f
|
docs: document the tower and why coplanar crests flip the pose; add HUD reading guide
|
2026-08-24 15:33:54 +10:00 |
|
jessikitty
|
87eee945fc
|
feat: foldable 4-sided tower on page 2 — crests on all sides + top break the coplanar pose ambiguity; tower replaces the cylinder as central occluder
|
2026-08-24 15:33:08 +10:00 |
|
jessikitty
|
44126ec3b4
|
feat: HUD shows pose rejections and detect resolution; detection long-edge configurable via nbx.detectLong
|
2026-08-24 11:51:19 +10:00 |
|
jessikitty
|
f1830fc961
|
feat: keep the previous pose when the worker rejects one, and expose the rejection reason
|
2026-08-24 11:49:00 +10:00 |
|
jessikitty
|
83976205d6
|
fix: reject the mirrored coplanar-ambiguity pose — camera-below-sheet and teleport gates, reproj gate 8px -> 4px, rejection reason reported
|
2026-08-24 11:47:50 +10:00 |
|
jessikitty
|
2c78c48bcc
|
fix: FOV applies to the image's long axis (iOS gives portrait streams — focal was 1.78x short); cap detection canvas long side (portrait was 1.6MP not 0.5MP); show duplicate detections in HUD
|
2026-08-24 11:26:45 +10:00 |
|
jessikitty
|
f2ee880bf1
|
fix: deduplicate repeated marker ids in a frame — two quads decoding to one id gave solvePnP contradictory constraints (reproj 5px+)
|
2026-08-24 11:24:42 +10:00 |
|
jessikitty
|
518b29860a
|
docs: document the A3 test rig; note server-authoritative motion and proxy cache override
|
2026-08-24 10:40:23 +10:00 |
|
jessikitty
|
ef3c13d8c8
|
feat: cylinder occluders (shape/radiusCm/heightCm) for round props like the test rig post
|
2026-08-24 10:39:51 +10:00 |
|
jessikitty
|
4753162ea1
|
fix: server motion defaults were sized for a large floor and overrode the client — bob 5-10cm -> 3mm (tunable), wander 60cm -> 2.5cm, path 8 -> 1.5cm/s
|
2026-08-24 10:37:30 +10:00 |
|
jessikitty
|
155ca62951
|
feat: A3 test rig — printable 6-crest sheet with cylinder occluder, walker loop and static ghost; loads the matching scene+playlist from the same constants
|
2026-08-24 10:36:11 +10:00 |
|
jessikitty
|
06816c97c3
|
fix: derive camera FOV from the video and the object-fit:cover crop (was hardcoded 60deg vertical vs the video's 36deg — measured 1.7x projection error); aim check now compares in viewport NDC
|
2026-08-20 16:08:02 +10:00 |
|
jessikitty
|
c4709bd6f8
|
perf: throttle detection to 20Hz (render stays full rate), use the worker-backed solver, add fps to the HUD
|
2026-08-20 15:49:31 +10:00 |
|
jessikitty
|
1ca29dca9f
|
perf: solve-cv becomes a worker client — non-blocking solves, Mat reuse, filter stays on main thread
|
2026-08-20 15:47:40 +10:00 |
|
jessikitty
|
61cfd7f09b
|
perf: run OpenCV in a worker — 10.8MB script parse + embedded WASM compile no longer blocks the main thread
|
2026-08-20 15:47:01 +10:00 |
|
jessikitty
|
4eda9f25cc
|
tune: scale wander/path fallbacks to the table (radius 60cm->2.5cm, vertical 10cm->4mm, path speed 8->1.5cm/s, lookahead 6->1.5cm)
|
2026-08-20 15:27:49 +10:00 |
|
jessikitty
|
bf36a21c74
|
feat: wire the dev Motion button (label reflects state); chip toggle routes through the same setter
|
2026-08-20 10:41:31 +10:00 |
|
jessikitty
|
289b5d3afc
|
feat: dev motion toggle button (bottom-left) for freezing/unfreezing ghost movement
|
2026-08-20 10:39:44 +10:00 |
|
jessikitty
|
0f8d1ec9ee
|
tune: idle float scaled to the real display — 3mm bob (was 6cm), matching shimmer for wander and path modes
|
2026-08-20 10:39:04 +10:00 |
|
jessikitty
|
7ba6418c55
|
fix: move debug overlay below the HUD row so the tracking chip (freeze toggle) is tappable again
|
2026-08-19 16:49:37 +10:00 |
|
jessikitty
|
d43e344052
|
fix: cache policy — app JS/HTML revalidate each load (stale ES module imports survived deploys), OpenCV.js WASM cached immutably
|
2026-08-19 16:48:55 +10:00 |
|
jessikitty
|
887d58dc35
|
docs: correct production hostname; note the scene-filter gotcha and its diagnostics
|
2026-08-19 16:31:58 +10:00 |
|
jessikitty
|
7cfadf2aca
|
fix: load scene over HTTP so tracking no longer depends on the WebSocket; HUD shows scene state and detected-vs-usable crests
|
2026-08-19 16:31:37 +10:00 |
|
jessikitty
|
c0a998ad19
|
fix: report raw detections alongside scene-filtered ones so a discarded crest is visible
|
2026-08-19 16:29:55 +10:00 |
|
jessikitty
|
4c5343fca1
|
docs: link page index from README; document dev HUD readout and aim check
|
2026-08-19 16:16:46 +10:00 |
|
jessikitty
|
7d5ed093a5
|
docs: index of all served pages and debugging endpoints
|
2026-08-19 16:16:14 +10:00 |
|
jessikitty
|
fc1b13cc26
|
v3: ghost triage instrumentation — WS rx trace, ghost record count, buildGhost error reporting, dev beacon, pose self-consistency (aim) readout
|
2026-08-19 16:06:12 +10:00 |
|
jessikitty
|
166dade2e0
|
v3: HUD shows opencv download progress (cv:loading N%) and retries load when tapping back to opencv
|
2026-08-14 21:54:49 +10:00 |
|
jessikitty
|
77e0845a71
|
v3: hardened opencv.js loader — fetch with download progress, robust runtime detection, 45s failover, retryable
|
2026-08-14 21:53:36 +10:00 |
|
jessikitty
|
81f2168717
|
v3: exhibit.js — dual tracking engines (opencv board solve default, posit A/B fallback)
|
2026-08-13 22:42:37 +10:00 |
|
jessikitty
|
9fa1806e3b
|
v3: solve-cv.js — joint multi-marker board solve (OpenCV.js), validated vs synthetic projections
|
2026-08-13 22:40:29 +10:00 |
|
jessikitty
|
ecce2d4949
|
v3: load-v3.sh — one-time in-place migration from v2 (import base, push, swap containers)
|
2026-08-13 22:39:42 +10:00 |
|
jessikitty
|
43abf922f4
|
v3: compose — pin project identity to v2 deployment (in-place swap, shared live volume)
|
2026-08-13 22:39:25 +10:00 |
|
jessikitty
|
d223872d25
|
v3: Dockerfile — fetch pinned OpenCV.js WASM at build time
|
2026-08-13 22:39:17 +10:00 |
|
jessikitty
|
92da09e440
|
v3: package manifest
|
2026-08-13 22:39:11 +10:00 |
|
jessikitty
|
3b643dc961
|
v3: README — board-solve tracking core, dual engines, in-place migration
|
2026-08-13 22:39:06 +10:00 |
|