You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bug(ui): Anonymous public-chat history never restores after reload (session id lowercased on lookup) #3443
The empty "Start a Conversation" state. GET /api/public/history/<token>?session_id=<id> returns 200 with {"messages":[],"message_count":0}; the client sends the stored id with its case intact.
Found by the click-through UI sweep of a local instance (dev @ c90c711ee, 1.0.0-rc1), fixture agents only.
Repro
Create a public link on an agent whose access policy has the email gate off.
Open /chat/<token> logged out (1440, light) and send one message.
Reload the page.
Expected
The visitor's conversation is restored after a reload ("Refresh keeps place").
Observed
The empty "Start a Conversation" state. GET /api/public/history/<token>?session_id=<id> returns 200 with {"messages":[],"message_count":0}; the client sends the stored id with its case intact.
Validation
src/backend/db/public_chat.py:146 — the lookup compares session_identifier == session_identifier.lower() unconditionally, while the create path (line 84) lowercases only when identifier_type == 'email', so a mixed-case anonymous token never matches its own row.
Acceptance Criteria
The repro above gives the Expected result at 1440 and 768, in light and dark.
A regression test pins the behaviour (unit or Playwright, whichever tier can observe it).
No new raw-palette classes or hand-rolled primitives are introduced by the fix (docs/memory/design-system-contract.md).
Technical Notes
Evidence screenshots (kept on the machine that ran the sweep; the evidence folder is gitignored because the repository is public):
Activity
chore(testing): ui-sweep 2026-10-09 all (explore + edges) @ c90c711 (#…
fix(public-chat): an anonymous session is looked up by its exact toke…