Skip to content

UAT: dashboard State card & Kid Mode toggle never reflect live state #169

Description

@BrettKinny

Symptom. For the entire 29-minute UAT session the dashboard's State card showed Idle
and the Kid Mode toggle showed off, regardless of actual state.

Evidence (dashboard screen recording, starts 19:41:22).

  • Frames at 19:41:32, 20:04:02, 20:05:48, 20:07:17 and 20:07:32 all show State=Idle /
    Kid Mode=off — including 20:07:17–20:07:32, when logs show state_changed → security
    had been relayed at 20:07:14; and the whole session ran with PiVoiceLLM ready kid_mode=True in xiaozhi logs.
  • The page was demonstrably live in those same frames: the vision-error age ticked
    2m → 4m → 5m, the sound-impulse counts changed, and the Listening pip went red. So it's
    not a frozen tab — the State/Kid-Mode widgets specifically aren't synced.
  • Backend is fine: snapshots/perception-state.json shows dotty-behaviour tracked
    current_state with last_state_change_t = 20:09:47 local (end-of-session forced idle),
    so the state pipeline works server-side; the dashboard UI layer is what's stale.

Impact. Made live UAT observation misleading (couldn't confirm state entries from the
dashboard; kid-mode status invisible). Also means the toggle's displayed position can
contradict the actual xiaozhi kid_mode config.

Next step. Trace where the dashboard State card / Kid Mode toggle source their state
(bridge-local variable vs polling dotty-behaviour / xiaozhi) and wire them to the live
values that the perception cards already use.


From the filmed UAT session 2026-07-11 (uat-sessions/2026-07-11/: results.csv, container logs, two video recordings). Discovered during AI-assisted video verification (Claude Fable 5 via Claude Code); human-reviewed before filing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:bridgebridge.py + bridge/ dashboard service (Unraid-resident post-#36)area:dashboardBridge dashboard UI / HTMX templatesbugSomething isn't workingready-for-humanRequires human implementation or live-device verificationstatus:activeReady to start, not blocked

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions