Releases
v3.22.0
Compare
Sorry, something went wrong.
No results found
3.22.0 (2026-10-17)
Features
frontend: error boundaries for the root, segments and chat message parts (4ed4722 ), closes #1477
frontend: tell the user when a Chat opens on a substitute model (a6cc68e )
frontend: title Chat, Agent, Trigger and Organization pages by name (d4bf7e2 ), closes #1478
frontend: title every page and keep the app out of search indexes (2f6e089 )
Bug Fixes
backend: say a rejected webhook URL may just be unreachable (#1525 ) (ed3c4ae )
docs: say a new Chat's last pick is per browser and lasts 24 hours (#1512 ) (8c3d336 )
frontend: announce the remaining inline errors and keep spinners turning under reduced motion (0a5d81f ), closes #1481
frontend: define --destructive-foreground and use it for destructive text (a5d0c3e ), closes #1461
frontend: describe the empty workspace contexts list and name its tests by behaviour (409e352 ), closes #1471
frontend: don't open a card on the Enter that drops it, and pick label text by luminance everywhere (d3c932b ), closes #1480
frontend: drop self-referencing shadow tokens so shadow utilities render (5bba29f ), closes #1457
frontend: give the notification badge readable contrast in dark mode (c7208a5 ), closes #1461
frontend: guard Kanban, card dialog, invitation and pin actions against double submit (1249c16 ), closes #1474
frontend: honour BASE_PATH in absolute URLs and complete lib/routes.ts (5709815 ), closes #1472
frontend: key provider model rows on a stable id so row state stays with its model (8bb9d60 ), closes #1468
frontend: keyboard and screen-reader support for Kanban cards, notifications, the expand overlay and chat streaming (758975d ), closes #1480
frontend: label only the in-flight card or comment action as pending (0ee9398 ), closes #1474
frontend: let the delete guard hand over when there is no backend URL yet (6de890d ), closes #1488
frontend: link form errors and labels, honour reduced motion, and add page landmarks (9155474 ), closes #1481
frontend: make the root page spinner visible in dark mode (a7de17c ), closes #1462
frontend: name inputs that had only a placeholder (#1529 ) (adff74a )
frontend: open the Kanban card dialog on click again (#1524 ) (47cbd4d )
frontend: remember a Workspace's last selection only when it is picked (ee4d4f1 ), closes #1503
frontend: report a Chat message part that stays broken only once (5fa903a )
frontend: restore the route's tab title when a Chat loses its name (baa2750 )
frontend: sort copies of SWR results so lists never mutate the cache (6762c1f ), closes #1458
frontend: stop prebuild clobbering .env.local, drop root force-dynamic, validate env and send security headers (2bd0510 ), closes #1490
frontend: stop revalidation wiping edits, stale Kanban card, OAuth double POST and blind delete guard (91aa3bb ), closes #1488
frontend: stop useIsMobile and the Kanban board resubscribing media queries (c20a661 ), closes #1463
frontend: stub fetch with vi.stubGlobal so attachment tests restore it (cc278d0 ), closes #1465
frontend: title EmptyCards per ui-conventions (cc2dc6d ), closes #1471
frontend: truncate long URLs in list cards (23175cf ), closes #1494
You can’t perform that action at this time.