Thomas Digital · Internal · Session Recap

The Command Center chat, rebuilt to just work.

A full-day rebuild of the Command Center's chat system — the part that kept timing out, freezing, and bleeding one conversation into another. Every fix below was checked on the live site, not just claimed. The AI Design System's hidden failure was also traced to root.

2026-07-24 · live at cc.thomasdigital.com · build 4e5c81a · verified this session

The scoreboard

What you asked for → what's proven on the live site

DONE
Chats no longer bleed into each other
Two chats in two tabs used to merge. Fixed and proven with a side-by-side test using secret codewords — zero cross-talk.
DONE
No more timing out / freezing
Fixed at four layers. Proven with a disconnect-mid-answer test that reconnects and finishes, plus quiet-stretch heartbeat tests.
DONE
Image upload works
Uploaded a picture with the word "PINEAPPLE" — the AI read it back correctly.
DONE
Slash commands, live model routing, working cost bar
Typing "/" pops the command menu; the panel shows which model is running; the cost bar's $0.68 matched the billing ledger to the cent.
DONE
One clean artifact panel
The stacking-garbage panel now holds one design, updates in place, and expands full-screen.
DONE
Every page's chat knows its page
On the Spend page, the side chat correctly said "You're on the /spend page" and read your live spend figure.
REVIEW
AI Design System — unblocked, producing real designs
Two hidden bugs fixed. It now produces finished designs and stops for your sign-off (as designed). One piece — clicking a design to give feedback — is still to build.

Why the chats broke

The three real causes, in plain terms

Cause 01
Two tabs shared one hidden identity

When a message went out before its conversation was fully created, it fell back to one shared bucket on the Mac. Two tabs doing that at once got mixed together. Now every conversation gets its own private identity, and each browser tab gets its own tag.

route.ts · ChatRail.tsx
Cause 02
The connection gave up during quiet moments

When the AI paused to think or run a long tool, nothing was sent to keep the line open, so the browser, the tunnel, or a timer would drop it. Now a heartbeat pulses every 20 seconds through every layer, timeouts were widened past the real work limits, and the connection is kept warm on purpose.

steve_ws.py · phone-steve-cc-bridge.py · cc-chat-routing flags
Cause 03
A dropped connection killed the whole answer

If the line dropped mid-answer, the message was lost — even though the AI kept working. Now the browser reconnects and picks the answer back up exactly where it left off, and re-attaches automatically when you return to a backgrounded tab.

steve-socket-transport.ts
Your browser Vercel (the website) Cloudflare tunnel Mac chat server Claude Every hop above now has a heartbeat + reconnect. The answer keeps running on the Mac even if your browser blinks.

The AI Design System

The real reason it "never worked once"

Two invisible bugs were fixed: a background safety process was killing every run at the 10-minute mark (a fresh run now survives well past it), and finished runs were being falsely labeled "FAILED."

The deeper truth: no run was ever going to show "shipped" on its own. The final step needs your approval on two sign-off stations. The system was quietly stopping and waiting for you — which past runs mislabeled as failure and never surfaced as "done, needs your OK."

If you want it back the way it was

One command · nothing client-facing was touched

cd /Users/openclaw/projects/command-center-v1 git checkout 9a1574c3 bash /Users/openclaw/.openclaw/bin/cc-deploy-prod.sh

The Mac-side helper scripts each have a dated backup and revert the same way. No client website, domain, or client data was changed — only your own Command Center.

Prepared by Steve · Dr. Manhattan. Everything above was verified on the live site during the session. Next up (already running): the click-a-design feedback panel, and a mobile-app update plan.