Skip to content

Tale v0.4.8

Choose a tag to compare

@github-actions github-actions released this 15 Aug 13:42
· 66 commits to main since this release
8044128

0.4.8 is a fix release on the 0.4 line — an in-place update: tale update, then tale deploy. No data migrations ship with it.

Highlights

Authenticated requests no longer pay a JWKS fetch on every call, and a chat turn opens in one write. Convex validates the caller's JWT on every request that carries one — including every ctx.run* from a 'use node' action — and the JWKS endpoint returned no cache headers, so the backend's HTTP cache treated every 200 as instantly stale. Production sat at 677–900 ms of "Setup before model" for three ~12 ms mutations; the same tax hit get-session, composer models, and every other authenticated surface. The exact-path JWKS route now stamps Cache-Control: public, max-age=300, so validation serves keys from memory. The turn open (user message + assistant placeholder + generation row) is one internal mutation instead of three sequential authenticated syscalls — and a beginGeneration throw that used to land outside the turn's try can no longer strand an orphan placeholder the recovery sweeper cannot see. (#2981)

Behaviour changes

  • JWKS responses are cacheable for 300 seconds. Key-rotation staleness is bounded by that max-age (JWTs themselves live 15 minutes). Deployment-wide, JWT validation stops costing an isolate execution per request. (#2981)
  • A chat turn opens atomically. User message, assistant placeholder, and generation row commit together. Sequence numbers are assigned in-transaction. In the deferred-send lane an open failure is now all-or-nothing — the window where the user's text could previously survive a partial setup (writes 2/3 failing) now loses it the same way a write-1 failure always did. The interactive lane is unaffected; the composer keeps the text. (#2981)

Migration notes

No new data migrations in 0.4.8 — tale deploy is an image update only. Updating straight from 0.4.0 applies the four 0.4.1 migrations automatically on the way.

Upgrading

tale update    # a 0.4.x CLI stays on the 0.4 line and picks up 0.4.8
tale deploy    # pulls the 0.4.8 images

On 0.3.x? The 0.3 → 0.4 cutover is a fresh deployment, not an upgrade — read the v0.4.0 release notes and Upgrades → 0.3 → 0.4: breaking cutover before moving.

What's Changed

  • perf(platform): eliminate the per-request JWKS validation tax by @larryro in #2981

Full Changelog: v0.4.7...v0.4.8