Sent messages wait for polling to catch up before rendering.
Missing interleaved messages cannot appear above later ones.
Messages sort by server timestamp, then ID.
Timestamps are assigned atomically during SQLite insertion.
Client updated to 20260609.5.
One ID-keyed message ledger now handles sends and polls.
Messages are always sorted by server ID, latest at bottom.
Duplicate DOM rows and voice players are removed.
Poll cursors advance only from validated received messages.
Voice autoplay queues each received clip once.
Added exact user_id ownership tracking.
Cache-busted client to 20260609.4.
Groups is fully removed:
No homepage navigation, Account feature, tier setting, API, or client
code.
Legacy group tables, entitlements, messages, voice files, and config are
purged automatically.
New cache-busted client: cyberchat-app.js?v=20260609.3.
Browser and SQLite migration tests passed with no console errors.