Skip to content

v0.1.0-alpha.50

Choose a tag to compare

@github-actions github-actions released this 02 May 15:02
· 233 commits to main since this release
fix: thread titles + URL routing on web [alpha.50]

Two bugs the user spotted:

1. **Sidebar stuck at "New chat" forever.** Regression I caused
   in alpha.49. onTurnLanded (which derives the title from the
   user's first prompt + bumps updatedAt) was gated behind the
   runId guard, so abandoned threads — even when their canonical
   assistant turn finished server-side — never got their title
   updated. Split the post-send work into two:
     - Per-thread state (title, mode-tracking, balance) fires
       regardless of which thread the UI is showing — that data
       belongs to the thread that finished, not to the active
       one.
     - UI updates (the usage pill) stay gated on runId because
       the pill belongs to the chat the user is looking at.

2. **No URL on web.** Refreshing qcode.qlaud.ai dropped the
   active thread; deep links didn't work. Wired browser-history
   sync:
     - parseThreadIdFromPath() reads /<uuid> from the URL on
       boot, falls back to cached-first-thread, then null.
     - replaceState on every currentId change keeps the URL in
       sync with no entries piling up in history.
     - popstate listener feeds back/forward navigation into
       currentId so browser nav works as a thread-switcher.
   Plus public/_redirects with a SPA-fallback rule so visiting
   /<threadId> directly hits the React app instead of the
   Cloudflare Pages 404 page.

UUID-shape regex on the parser so future routes (/auth, /sign-in,
etc.) won't be mis-interpreted as thread ids.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>