- VERSION (1.0.0) + build.sh: bump patch/minor/major e deploy via docker compose
- Dockerfile: ARG/ENV APP_VERSION + BUILD_TIME (iniettati come build-arg)
- version.build_info(): env in Docker, fallback file VERSION + '(local)' in dev
- GET /api/version; badge #appVersionPill nell'header (tooltip = build time)
- test_version.py: env vs fallback
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Il commit della Task 1 aveva incluso per errore (via git add -u) drift runtime
di config.yaml (cloud_params size/flip) persistito dall'app live. Lo rimuovo dal
branch: config.yaml resta uguale a main. I valori live restano come modifica
non committata nel working tree.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Design per: detection tag su tutte le camere attive (Nuwa rosso + D435i),
rinomina "Tag camera frontale" -> "Tags", calibrazione persistente
Nuwa->frontale via tag condiviso (Umeyama similarity), flag+pulsante
"Allinea" nella sezione Cloud cross-camera.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
L'overlay tag frontale (D435i) ri-eseguiva la detection ArUco ad ogni
tick di pollState() finche' il flag era attivo. Ora gira solo:
- al toggle on del checkbox
- a fine acquireClouds() (pulsante Acquisisci) se il flag e' attivo
Rimosso il piggyback in pollState() e lo stato front_tags.in_flight
ormai inutilizzato.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Sidebar a 3 tab verticali (POSE / CAMERAS / MISC) per ridurre lo scroll
- Tag locator: POST /api/pose_3d/tag_offset/{save,} salva crocetta nel
viewport con snapshot giunti, current.json + archive rotation
- Front-camera tag overlay (MISC):
- GET /api/pose_3d/front_tags scansiona ArUco sul D435i e per ogni tag
misura i 4 corner 3D via depth sensor (indipendente da solvePnP);
outlier rejection ±20% dalla mediana per ignorare corner che catturano
background sul bordo del marker
- Rendering quad cyan + label compatta (id, edge_mm, distanza camera)
agganciato al d435_link, segue la camera anche in modalita' hand-eye
- Trigger via pollState() quando il flag e' on, niente timer separato
- Cloud cross-camera: memorizza step/max_depth/sizes/scale_xy/flip/handeye
in pose_3d.cloud_params al click di Acquisisci, ripopola UI da config
al primo poll (state.cloud_params_populated guard)
- D435i front cloud: applica nuwa_to_cv_frame (il servizio ritorna native,
non OpenCV come si pensava)
- Cache-bust per pose_3d.js e pose_3d.css
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>