Chats that keep running when you switch away
OpenYak no longer aborts a generation the moment you click into another chat. The frontend store and the SSE stream registry are now keyed per session, so starting a new chat while another is mid-stream is a pure view swap — the original session keeps producing tokens in the background, exactly the way Codex and Claude Code Desktop work. You can stack as many in-flight sessions as you want; each one streams into its own bucket without cross-contamination.
Each session row in the sidebar grows a small spinning indicator while that session has an in-flight generation. It's driven straight off the keyed store, so a background session lights up as soon as the SSE stream produces its first event — regardless of which chat you happen to be looking at — and goes dark on completion.
Close the app, reopen — your session is still there
Quitting OpenYak with a session mid-stream is no longer destructive. On the next launch the app calls /api/chat/active, re-attaches every still-running stream, and replays missed events via the existing last-event-id machinery. The live tokens continue rendering from the point you left off, with no manual intervention.
Native finish notification — only when you're not watching
When a background generation finishes — or errors out — OpenYak fires a native OS notification (using the standard web Notification API, so the same path covers macOS, Windows, Linux, and the remote-mobile case). Permission is requested lazily on the first background completion, so foreground-only users never see a prompt. The notification is suppressed when you're already viewing the finished session. Clicking it soft-routes back to that chat via Next.js's router — no full reload, no lost state.
Multi-agent task batches
A new batch composer lets a chat fan out multiple sub-tasks at once and stream them in parallel or sequentially. Each task surfaces with its own status in the workspace progress panel so you can watch them resolve independently.
Relicensed from MIT to Apache-2.0
OpenYak is now Apache-2.0. The change adds an explicit patent grant and a NOTICE mechanism for downstream attribution. Updated across LICENSE, every package.json, backend/pyproject.toml, the Tauri Cargo manifest, and README badges.