v2.7.0 — persona-driven UX fixes + PUSH banner + circuit breaker
What's New
Driven by four-persona user testing (power user, newcomer, bystander, accessibility), v2.7.0 resolves 10 P0 findings across firmware, bridge, and docs.
Firmware UX (R1)
- WCAG contrast fix:
ink-mute#5A514A →ink-fade#8A807A (5.13:1 AA pass) for all secondary text - SID display: first-4 + ":" + last-2 format replaces unrecognizable last-6-of-UUID
- Visual hierarchy: agent chip 28pt → 22pt so 48pt headline stays focal
- Approve affordance: "BOOT approve · USER deny" hint row on APPROVE kind
- motion_reduced config: NVS-persisted boolean, gates breath animation + marquee scroll (WCAG 2.2.2)
Bridge (R2)
- Circuit breaker in
hook_dispatch.py: 3 consecutive timeouts in 30s → short-circuit 60s - PUSH banner: top-slide-down 3s toast overlay on PostToolUse events
- New
dash pushwire command
Docs (R3)
- Honest quickstart timing (~15 min, not 30 seconds)
- 3 new troubleshooting entries (idf-not-found, port-locked, settings-clobbered)
- Mock device path consolidated to
tools/mock_device_v1.py - Scenes table updated (5 → 7 scenes)
- Persona testing summary:
docs/user_testing/SUMMARY.md