fix(activities): surface statsError on the door-scanner page #89
No reviewers
Labels
No labels
app:activities
app:chat
app:events
app:forum
app:libra
app:market
app:restaurant
app:tasks
app:wallet
app:webapp
bug
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
aiolabs/webapp!89
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/scanner-stats-error-banner"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
useTicketScanneralready captures the stats fetch error into a ref butScanTicketsPagenever read it, so a 404 / 403 / auth failure onGET /tickets/event/{id}/statswas completely silent — the counts strip kept showing the last good value while scans landed on the backend, making it look like the scanner was broken when actually the refresh path was just dead.Adds a small destructive-toned banner under the counts strip, visible across both Scanner and Scanned tabs.
AlertCirclealready importedstatsErroris already exported fromuseTicketScannerContext
Surfaced during a live test on aio-demo on 2026-06-03: the events backend was missing the
/statsendpoint (now shipped inaiolabs/eventssigner-abstractionat1.6.1-aio.5), and the scanner page silently froze its counts strip on0 SCANNEDeven though/register/{ticket_id}was succeeding. With this banner the failure would have been visible immediately rather than read as a "scanner is broken" bug.Test plan
build:activities) —vue-tscran clean locallydemo.aiolabs.dev): load/events/.../scanon an event the wallet owns — no banner should appear (happy path)1.6.1-aio.5is on aio-demo, confirm scanner counts now move post-scan and banner stays hidden🤖 Generated with Claude Code
useTicketScanner already captures the stats fetch error into a ref but ScanTicketsPage never read it, so a 404 / 403 / auth failure on GET /tickets/event/{id}/stats was completely silent — the counts strip kept showing the last good value while scans landed on the backend, making it look like the scanner was broken when actually the refresh path was just dead. Adds a small destructive-toned banner under the counts strip, visible across both Scanner and Scanned tabs. AlertCircle already imported. No new composable surface — statsError is already exported from useTicketScanner. Surfaced by a missing /stats endpoint on aio-demo's events backend (now shipped as events 1.6.1-aio.5). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>