mirror of
https://github.com/CyberMind-FR/secubox-deb.git
synced 2026-07-29 18:36:55 +00:00
Port the radar concentric layout from remote-ui/round/agent/display/fallback/
into a stateless painter under secubox_common.painters.radar_concentric.
Both round and square dashboards now consume it; the square's main loop
drives a monotonic-clock phase so its left half rotates the same way the
round's deployed fallback_manager does.
What landed
-----------
- `secubox_common/painters/radar_concentric.py`
- `paint(img, center, modules, metrics, radii=None, phase=0.0, ...)`
- phase × 2π = sweep angle radians, clockwise from 12 o'clock.
- Module → wheel-angle map decoupled from list order via
DEFAULT_NAME_TO_ANGLE so AUTH/WALL/ROOT/MESH/MIND/BOOT sit at the
rainbow position matching their colour regardless of MODULES order.
- DEFAULT_RADII = [214, 188, 162, 136, 110, 84] matches the deployed
fallback_manager.py geometry.
- draw_hub=False lets the converged dashboard composite its own
central button + pod cluster on top.
- `DashboardCanvas.paint_radar_concentric` — thin wrapper, single source
of truth verified by a test that asserts canvas-vs-painter byte-equal.
- `RoundDashboard.layout(metrics, phase=0.0)` and
`SquareDashboard.layout(metrics, phase=0.0)` — phase=0 preserves the
static still-frame contract for tests / callers that don't drive
animation. RING_RADII bumped to the deployed [214..84] geometry on
both classes so the converged left-half look matches the round.
- `secubox_eye_square_kiosk.__main__` drives
`phase = (time.monotonic() * RADAR_RPM / 60) % 1` at 12 RPM, matching
fallback_manager._sweep_speed.
Tests: 8 new in secubox_common/tests/test_radar_concentric.py — phase
differentiation, period-1 wrap, default-radii fallback, length-mismatch
guard, hub toggle, sweep_accent range, canvas-helper byte-equal.
Total green: 118 / 118 (36 secubox_common + 78 square kiosk + 4 round).
Out of scope for this commit (deferred)
---------------------------------------
- `fallback_manager.py` migration to the painter (#138 acceptance lists it).
fallback_manager uses its own brighter MODULES list and stateful
ConnectionState machinery; converting it requires a colour-palette
decision the user has not yet signed off on. Will land in a follow-up
fixup after hardware confirms the square radar visual is what we want.
Co-authored-by: CyberMind-FR <gandalf@Gk2.net>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| secubox_common | ||
| pytest.ini | ||