Skip to main content

GAIA v0.25.1 Release Notes

This release needs GAIA agent 0.3.1, which new installs get. With an older agent, private and memory-off chats stop with an update message instead of saving to memory, and Full access still can’t open the folders you name.

Breaking Changes

  • The ChatSDK, ChatConfig, ChatResponse and ChatSession aliases are removed — import AgentSDK, AgentConfig, AgentResponse and AgentSession, their names since v0.20.0. (PR #5366)

What’s New

  • Each chat shows where it runs and what it changed — a session panel lists the folders it may use, an internet switch, its outputs and every file it changed, and a rail beside each answer lists its sources and the files it wrote. (PRs #5326, #5246)
  • Undo a turn’s file changes — Review changes shows the diff; Undo this turn restores every file, even after a restart. (PR #5239)
  • A turn’s work reads in plain words — a live plan checklist and one line per tool call replace raw tool cards. (PRs #5245, #5269)
  • See what fills the context window and where the time goes, type while GAIA works, and retry an answer with another model. (PRs #5275, #5241)
  • Chats that need you come first — chats wait their turn for the GPU, and a tray icon shows whether GAIA is working or waiting on you. (PRs #5242, #5354)
  • The model picker shows where each model runs and whether it fits this PC; cloud models show their price before you pick one, with an optional monthly limit. (PRs #5244, #5270)
  • gpt-oss 20B and 120B are supported local models where they fit. (PRs #5356, #5374, #5357)
  • A new look — a frameless desktop window, eight color palettes, and new type and motion that reduced motion turns off. (PRs #5312, #5290, #5266)
  • First-run setup names the chat model and its download size up front. (PR #5240)
  • Lemonade Server v2026.43.3. (PRs #5148, #5558)

Bug Fixes

A selection of the user-visible fixes; the full list is in the changelog below.
  • Full access opens the folders you name in the desktop app — it used to refuse them, often without asking. Ask mode shows Allow/Deny. (PR #5414)
  • Private and memory-off chats in the desktop app no longer save memories, and relayed chats show their cost and the full details of a permission prompt. (PR #5418)
  • A reply cut short by a restart says so — the Agent UI shows it as interrupted instead of an unanswered question, a resumed TUI session records it the same way, and a document caught mid-index shows Failed with Retry. (PRs #5386, #5390)
  • Esc closes a dialog without stopping the answer. (PR #5433)
  • A rejected cloud key names the fix for the app you are in, and files already saved are listed as saved. (PR #5440)
  • A turn the model gave up on is marked failed, not done, with what ran and what is unfinished. (PR #5432)
  • Ctrl+C on a TUI one-shot stops the agent’s turn too. (PR #5435)
  • The desktop app survives an agent that died, and quitting stops every process it started. (PR #5438)
  • Web search keeps working when DuckDuckGo rate-limits — it retries, tries the lite endpoint, and uses Tavily if you connected it. (PR #5434)
  • “Undo may be incomplete” appears only when a snippet or script may have written files, and names what ran. (PR #5436)
  • GAIA stops only a Lemonade Server it started itself. (PR #5439)
  • A long turn that overflows the context window recovers — the overflow check looks only at the agent’s own model, and the retry keeps older tool results one call away instead of dropping them. (PRs #5219, #5396)
  • Chats and apps sharing one model server wait their turn instead of failing, evicting each other’s model, or reporting a busy server as stopped. (PRs #5321, #5328, #5336, #5337, #5314, #5317, #5264)
  • Closing one TUI session no longer stops the model server for every other session. (PR #5282)
  • A PC that sleeps mid-answer no longer wakes to a stall error. (PR #5387)
  • A failed turn is never re-run behind your back, so its tools don’t run twice. (PR #5338)
  • Memory keeps only what you say about yourself, brings it up when a question is about it, stays current as facts change, and refuses corrupted entries. (PRs #5243, #5324, #5395, #5306)
  • A stuck MCP server, web fetch, media decode or chat bridge no longer hangs the turn, and document indexing has limits and a working Cancel. (PRs #5346, #5384, #5383, #5382, #5339)
  • Settings and shared state survive several GAIA processes at once — config writes, the file index and connector tokens are no longer lost or deleted. (PRs #5388, #5377, #5378)
  • GAIA no longer closes your own PowerPoint or ngrok tunnels. (PRs #5345, #5376)
  • Scheduled tasks show runs missed while the PC was off, run in windows that cross midnight, and recover after a crash. (PRs #5391, #5407, #5380)
  • A custom model downloads on its first chat, can be picked in the Agent UI once downloaded, and is no longer reloaded before every turn. (PRs #5360, #5449, #5362)
  • A missing file is reported as not found instead of asking you to approve it, and a download asks about the file, not its folder. (PRs #5307, #5308)
  • Your own scripts get 600 s instead of being killed at 30 s. (PR #5347)
  • One bad batch of parallel tool calls no longer ends the turn with no answer. (PR #5413)
  • gaia install --lemonade checks the installer’s size and SHA-256 before running it, for every supported installer. (PRs #5389, #5455)
  • Model servers left behind by a crashed Lemonade are stopped, so the next start doesn’t load the same models twice. (PR #5352)
  • The GAIA agent starts on Ubuntu 22.04, Debian 12 and RHEL 9 — it needed glibc 2.38 and failed at launch. (PR #5545)
  • Intel Macs can install GAIA again, with install.sh, pip install amd-gaia and the [rag] and [ui] extras. (PRs #5546, #5481)
  • Settings load from a folder Windows lets you read but not create files in, and GAIA operations waiting on a shared file take turns in order instead of timing out at random. (PR #5469)
  • A permission prompt left unanswered in one chat no longer blocks every other chat, and chats on a cloud model don’t wait for the GPU. (PR #5609)
  • A Full access chat in the desktop app asks before a command that needs approval instead of refusing it. (PR #5562)
  • Documents from the library reach new chats, and answers from documents are no longer saved as facts about you. (PR #5540)
  • The desktop app says when first-run setup failed instead of opening as ready, and its crash dialog restarts or quits instead of leaving a dead window. (PRs #5598, #5537)
  • gaia uninstall --purge removes GAIA’s memory, sessions, config and agent, and lists what it keeps. (PR #5602)
  • gaia download finds GAIA’s own Lemonade Server instead of reporting downloaded models as missing. (PR #5590)

Contributors

Thanks to the community members who contributed to this release:
  • @c0mrade8 — the context-overflow check that looks only at the agent’s own model and its trained limit (PR #5219)
  • @agammann — validating the offline hub cache before reading its age (PR #5371)
  • @mvanhorn — resolving memory reminder deadlines from the evaluation date (PR #5476)

Full Changelog

213 commits since v0.25.0:
  • cc5f35825 — fix(ui): plain library path-box errors and visible failure reasons (#5605)
  • 01db252ff — fix(agent): tell the flagship its own folders and the Agent UI’s scheduler (#5564)
  • e9e775a01 — fix(ui): an unanswered prompt in one chat no longer blocks every other chat (#5609)
  • 2547e81f5 — fix(agents): ask before a gated shell command in a Full access desktop chat (#5562)
  • 5f28da95a — fix(agents): show a no-argument tool while it runs, not after (#5466)
  • 1c76fdf5f — fix(ui): model list details on hover, picked downloads switch, and fresh-install fixes (#5538)
  • a66ec2a0b — fix(agents): keep run_python’s scratch dir alive and stop system package installs (#5475)
  • b5a91d7d5 — fix(chat): a stopped reply stays stopped; tools without an answer say so (#5543)
  • aedde34c0 — fix(agents): content search skips unreadable files instead of a prompt per file (#5554)
  • e6488af52 — fix(agents): scale the local output cap with the window, and search the workspace in search_file_content (#5445)
  • c5f0e477c — fix(rag): report a lock a parser wrapped as locked, not corrupted (#5480)
  • a7b60b1f6 — fix(ui): show why indexing failed instead of a generic server error (#5643)
  • 200b09213 — fix(setup): plan against the server setup will use; plain error when Lemonade isn’t answering (#5542)
  • c363fb2d8 — fix(ui): library documents reach new chats; document answers stay out of memory (#5540)
  • 71b9e7811 — test(ui): fix two tests broken by PRs that landed together (#5664)
  • afb03785e — fix(hub): bundle tiktoken’s cl100k_base in the frozen agent (#5600)
  • 6cbb24621 — test: file-watcher, scheduler and router tests survive slow runners (#5627)
  • b8b03afa8 — fix(ui): scheduled tasks run on the installed GAIA agent and show their failures (#5539)
  • ea386183f — fix(ui): model picker says when macOS is waiting on keychain access instead of spinning (#5594)
  • f15921a02 — fix(ui): export names the model the chat runs on, and says when it fails (#5619)
  • 780504636 — fix(serve): send only the model’s tool arguments in needs_confirmation (#5645)
  • 11a170ac3 — fix(electron): let Linux users turn off the GPU and choose the window platform (#5646)
  • 7fff9fc8e — fix(undo): Undo all removes folders a chat made for a file it then deleted (#5443)
  • 3cadeb0ee — fix(ui): Resend, Copy and Delete on a message can be clicked again (#5462)
  • 6eaa0300d — fix(desktop): stopping an agent on a busy PC no longer leaves its child processes running (#5463)
  • ad21a68c9 — fix(agent): loud clock errors cancel the tool; Modern Standby counts (#5464)
  • cc8ca5a40 — fix(memory_reminder_management): resolve memory reminder deadline from evaluation date (#5476)
  • 3234d363e — fix(connectors): report a connection being saved as busy, not gone (#5479)
  • 49a440b71 — fix(ui): GAIA’s icons in the tray and taskbar, a calmer empty chat (#5506)
  • 27a8aa43a — fix(desktop): crash dialog restarts or quits, quit no longer hangs (#5537)
  • 51914491d — fix(ui): show files a shell command deletes as deleted, with Undo (#5561)
  • af14f85c7 — fix(llm,ui): keep UTF-8 in model error messages and Agent UI JSON (#5563)
  • 46f4ecaa5 — fix(webui): collapse long messages, code blocks and step outputs (#5566)
  • 0844c1a86 — fix(ui): start a chat private, and show reminder due dates (#5568)
  • 6185144fc — fix(ui): reject schedules the parser can’t read instead of guessing (#5569)
  • 40208ba13 — fix(ui): name a chat when its first message is taken, and title cloud chats (#5580)
  • 5e9eee758 — fix(ui): relayed flagship turns feed the turn summary and tool timer (#5587)
  • aa61e7b53 — fix(ui): create GAIA’s documents folder before a chat is told it can write there (#5588)
  • 2e6fc8c25 — fix(vlm): refuse a directory as an image path instead of crashing (#5589)
  • 2fbb41a4e — fix(cli): gaia download uses GAIA’s own Lemonade instead of port 13305 (#5590)
  • 3527ae6b4 — fix(cli): gaia diagnostics bundles the daemon, Lemonade and agent logs (#5591)
  • 9b0542a28 — fix(ui): show ⌘ shortcuts on macOS (#5595)
  • 278129810 — fix(ui): show a failed run’s error once (#5596)
  • 66b13e842 — fix(website): offer the terminal installers in the release-candidate section (#5597)
  • 69083e2a5 — fix(ui): tell the user when first-run setup failed instead of opening as ready (#5598)
  • 3f690f4bc — fix(tools): on macOS, default file search skips the folders macOS guards with a prompt (#5599)
  • 440e80bf1 — fix(cli): agent list shows the installed version; imported skills don’t fail skill list (#5601)
  • 5837fc9ed — fix(uninstall): —purge also removes GAIA’s memory, sessions, config and agent (#5602)
  • f962b0468 — fix(ui): show a cloud model’s real context window, not Lemonade’s 4096 (#5612)
  • 822225d3e — fix(ui): name the user’s file in document indexing errors (#5613)
  • 205708478 — fix(tui): stop /agents from naming an install command (#5616)
  • 35c40a2e2 — fix(tui): price DeepSeek V4.1 Flash in /cost (#5617)
  • b9a03f6ff — fix(ui): let Git and Memory connectors be connected (#5618)
  • dc969c93a — fix(ui): say plainly why a Lemonade address can’t be used (#5620)
  • 2ea633bd1 — fix(ui): undo-history limits say which field is wrong (#5621)
  • 39d835d2e — fix(ui): don’t list a memory a private chat refused to save (#5623)
  • 0f6f91c9b — fix(ui): keep keyboard focus inside open dialogs (#5632)
  • badced554 — fix: grey out the AMD gateway when its network can’t be reached (#5633)
  • 09df9b0bd — fix(ui): say plainly when GAIA stops mid-answer (#5634)
  • c1a382cd2 — fix(ui): each answer remembers the model that wrote it (#5626)
  • 243e43504 — ci(installer): wait out a transient exe lock in the Windows setup smoke test (#5630)
  • a62ea7f35 — ci(installers): drop the known-failure entries for #5526 and #5529 (#5606)
  • 9ff05f917 — fix(ui): show a relayed agent’s file changes in Outputs, Changes and Undo (#5553)
  • 59d55d8de — test: deflake four timing tests and keep tests out of the real home (#5610)
  • f6ced7fec — ci(release): build and attach the terminal installers on release candidates (#5550)
  • e3f221c51 — ci(eval): tier the flagship eval and score Qwen3.6 on Strix Halo (#5535)
  • 47860cdd0 — feat(website): one primary download per platform; Install starts it (#5536)
  • 52d7165cd — fix(eval): locate split chunks without jumping to repeated passages (#5548)
  • 72c4421e3 — fix(deps): cap cryptography below 49 on Intel Macs (#5546)
  • d4d91fc80 — fix(packaging): build the Linux agent on glibc 2.34 so older distros run it (#5545)
  • 6b174933f — feat(eval): stop on a Claude quota outage and resume the run later (#5533)
  • 233dfbd9e — ci(installers): run every installer end to end on clean runners (#5521)
  • be2c42d79 — ci(release): dry-run the release train without publishing (#5534)
  • db8d17339 — feat(eval): record the Claude tokens each scenario really spent (#5525)
  • cee6a47ff — ci(release): one command stamps and checks every version field (#5508)
  • 3f07cee13 — fix(rag): unblock the release retrieval eval (image chunks, pypdf labels) (#5490)
  • 3064f8032 — ci(release): take installers from GitHub releases, stop uploading them to R2 (#5509)
  • a2e03cbb7 — ci(workflows): run each CI lane only on the code it covers (#5514)
  • bf38b295a — ci(eval): targeted flagship dispatch by category and scenario (#5513)
  • efc68fcf6 — chore: drop internal eval references from comments and tests (#5507)
  • ada7b4113 — feat(website): link download buttons to GitHub release assets (#5491)
  • 0b14d740d — fix(deps): cap pymupdf below 2 so Intel Macs can install (#5481)
  • b4018e00c — fix(file-lock): fair cross-process queue, ACL-aware unwritable dirs (#5469)
  • 1a0ffcd07 — chore(release): flagship agent 0.3.1 (#5461)
  • e34ba86f5 — Release v0.25.1 (#5474)
  • d80736b55 — fix(chat): retry a watched document another program has open (#5458)
  • ce37b284e — fix(ui): an upload waiting for the embedder is not stopped as stalled (#5452)
  • d343b3aca — fix(ui): an upload queued for the model isn’t stopped as stuck, and Cancel reaches it (#5448)
  • 72b945be4 — fix(ui): let the Agent UI pick a downloaded custom model (#5449)
  • 7e49b1602 — test: catch reverts of the scheduler lease, restart notice and tool limit (#5456)
  • 1158f69ba — test: four flaky unit tests pass reliably and stay out of ~/.gaia (#5468)
  • 53c6697cb — fix(lemonade): ask the daemon once per poll while waiting for GAIA’s server (#5444)
  • 1441c1d74 — fix(installer): verify every supported Lemonade installer; clearer uninstall errors (#5455)
  • 107e47fa8 — fix(connectors): keep a connection another GAIA process just forwarded (#5467)
  • b4af7d5c3 — fix(ui): closing the chat database no longer crashes a read still in flight (#5472)
  • a069d793b — ci(release): push the flagship lock PR to a branch that can exist (#5473)
  • d0dc474b3 — fix(agents): report a turn the model gave up on as failed, not done (#5432)
  • 419dbf09a — ci(release): open a PR pinning the flagship’s published hashes on main (#5447)
  • c64993de0 — fix(llm): only stop a Lemonade server the client launched itself (#5439)
  • f44b6c0b1 — fix(ui): only warn about untracked work that may have written files (#5436)
  • 143c04ed1 — test(browser): stub DNS in test_public_urls_pass (#5446)
  • 65ba1e173 — fix(agents): keep web search working when DuckDuckGo rate-limits (#5434)
  • 86fa4a6dc — fix(ui): name each front-end’s fix for a provider 401/403, keep saved work (#5440)
  • 21f80a215 — fix(security): Full access grants named folders in the desktop app (#5414)
  • 97e117697 — fix(electron): survive a dead agent’s stdin and stop every child on quit (#5438)
  • 6fe5e03ba — fix(tui): stop the agent’s turn when a one-shot gets Ctrl+C (#5435)
  • 029082e17 — fix(agent): run a shell command the user asked for, and let the RSS tool decide (#4878)
  • 975a59c92 — fix(hub): validate offline cache before reading age (#5371)
  • 76c72aa03 — fix(webui): Esc closes a dialog without stopping the answer (#5433)
  • f20619470 — test(tui): wait for the stuck request to be accepted before stopping (#5437)
  • 48ad949a6 — chore(deps): bump Lemonade Server to v2026.42.1 (#5148)
  • 2387a0470 — test(llm): stop the load-backoff test recording the log lock’s sleep (#5431)
  • a73c784db — fix(ui): say when a restart cut a reply or an index short (#5386)
  • e42db3add — fix(agents): one bad parallel batch no longer kills the turn (#5413)
  • d8a9ac363 — fix(agent): check only the agent’s own model and clamp to trained ctx ceiling (#5219)
  • 71316cf80 — fix(agents): check claims next to negations and keep the real final answer (#5415)
  • 4b74329bd — fix(packaging): bundle pymupdf’s package data in the flagship binary (#5420)
  • 88d277389 — fix(ui): relay token usage, permission details and memory mode to the sidecar (#5418)
  • 05084953a — fix(schedule): run windowed schedules that cross midnight (#5407)
  • 937422e8c — ci(linux): pin the CLI integration job to ubuntu-24.04 (#5416)
  • 8864a3d19 — fix(ui): retry startup settings and offer to install a missing GAIA agent (#5412)
  • 004f617e3 — chore(deps): bump the root-npm-dependencies group across 1 directory with 6 updates (#5372)
  • 85ffc5e5f — chore(deps): bump anthropics/claude-code-action from 1.0.240 to 1.0.252 in the github-actions group across 1 directory (#5044)
  • 2680bc48d — feat(ui): session panel — environment, outputs and changes per chat (#5326)
  • 4217c620a — test(ui,mcp): count scanner work and pin ping deadlines instead of timing them (#5409)
  • 2113c9626 — feat(ui): context and performance panel (what fills the window, where the time goes) (#5275)
  • b0d240f98 — feat(models): support gpt-oss 20B and 120B in the TUI and Agent UI (#5356)
  • 63b51a6fb — feat(ui): type while GAIA works, see context fill, retry with another model (#5241)
  • 0749c8d37 — feat(eval): long-horizon memory benchmark, and the stale-memory bugs it found (#5340)
  • 71e328762 — feat(perf): turn log records how busy the model server was (#5285)
  • af653f070 — feat(ui): model picker shows real device, fit and live status (#5244)
  • 761d89cc9 — fix: Agent UI and agent bugs found in an end-to-end UI test (#5311)
  • b45862286 — fix(mcp): expect the server-named crash error in the installer MCP harness (#5405)
  • b370ea0f0 — fix(memory): keep memory current as facts change over months (#5395)
  • 0cbbac6d4 — fix(llm): a PC that sleeps mid-answer no longer wakes to a stall error (#5387)
  • 75c6373d8 — ci: run every Strix Halo test on the devlab-dispatch pool (#5403)
  • 31f7b110e — fix(lemonade): register and download a custom model on its first chat (#5360)
  • 194363fc5 — fix(agent): overflow retry archives tool results instead of dropping them (#5396)
  • 76e51966a — fix(hub): stop an agent install that waits forever on a pip lock (#5381)
  • c5cfa8344 — fix(release): read released daemon APIs from PyPI, drop the hand-kept table (#5394)
  • 2086c04eb — fix(state): lock and atomically replace shared ~/.gaia files across processes (#5388)
  • 805a3b720 — fix(llm): auto_load fails loudly when the model cannot be downloaded (#5323)
  • c4b53529b — ci(release): retry-safe agent npm publishes; block on ancestor-skip lint (#5393)
  • 6ca505f38 — ci(linux-halo): check the Linux user issues on a real Strix Halo (#5163)
  • f004baeed — fix(daemon): a queued model request waits instead of failing, and shows it is waiting (#5328)
  • f4dcebef4 — fix(schedule): show runs missed while the PC was off or asleep (#5391)
  • c91dc176e — fix(utils): report a watched file once it has finished being written (#5385)
  • 8eb035379 — fix(messaging): stop a Slack or Telegram turn that makes no progress (#5382)
  • 3906fa0b3 — fix(web): give page fetches and downloads an overall deadline (#5384)
  • 446e752de — fix(ui): bound document indexing in parallelism, time and Cancel (#5339)
  • 46c273657 — chore(website,docs): retire the user-facing Agent Hub (#5365)
  • c2d6074e3 — fix(ui): stop reloading a custom model before every chat turn (#5362)
  • ee829a65f — chore(cli): hide gaia hub from help; fix hints name gaia init (#5368)
  • 2ffbb72c9 — feat(ui): a tray icon that shows what GAIA is doing and what needs you (#5354)
  • 7e39510b5 — fix(llm): stop gpt-oss reading control markup in files as its own (#5357)
  • 5a014465e — fix(ui): one chat no longer holds the model away from every other chat (#5337)
  • 664f91bbd — fix(audio): stop an ffmpeg decode that stops making progress (#5383)
  • f1b3b52f2 — fix(llm): stop calling a shared KV-cache collision “conversation too long” (#5322)
  • 884f5312f — fix(scheduler): a job left firing by a crash no longer stays stuck forever (#5380)
  • de79ca8a0 — fix(lemonade): stop the model servers a dead lemond leaves behind (#5352)
  • b4e08e574 — fix(mcp): stop a hung MCP stdio server from freezing the turn (#5346)
  • 92908a483 — fix(mcp): a busy tool call no longer takes the bridge offline (#5375)
  • 8010c6a28 — fix(agents): send items on every array tool parameter (#5374)
  • be663c8b2 — fix(llm): wait for a busy shared Lemonade instead of hanging or failing (#5321)
  • afdda1401 — fix(web): ask permission for the downloaded file, not its folder (#5308)
  • 8ddd6c115 — fix(ui): never re-run a failed chat turn behind the user’s back (#5338)
  • 066a3f367 — feat(website): show the desktop app and the terminal at work in their install cards (#5351)
  • 15019a058 — fix(gaia-agent): save a turn the TUI’s closing cut short as interrupted (#5390)
  • b8c2264fb — fix(daemon): never kill a live daemon because queued leases slowed its status (#5327)
  • 83cd38c77 — feat(ui): chat list shows what needs you, chats queue for the GPU, notification settings (#5242)
  • d5568b476 — feat(ui): frameless desktop window, color palettes, fading titles (#5312)
  • 04698b6a8 — fix(daemon): closing a TUI session no longer kills the shared model server (#5282)
  • fd4099383 — feat(ui): side rail with each answer’s sources, files and data flow (#5246)
  • 645b63f97 — fix(security): report a missing path as not found instead of asking to approve it (#5307)
  • 873c68696 — fix(ui): busy model server is not reported as stopped; polls stop piling up (#5317)
  • 1e2d4704e — feat(ui): show cloud prices before connecting, and a monthly spending limit (#5270)
  • a37ee9e61 — fix(memory): refuse tool-call markup and model reasoning at the store (#5306)
  • 0efa63372 — feat(ui): show a turn’s work in plain words, with a live plan checklist (#5245)
  • d10b423dc — fix(memory): background memory jobs stop overwriting the chat’s prompt cache (#5286)
  • 0d61f0dd5 — feat(agent,ui): undo the file changes from a turn (#5239)
  • 185125945 — fix(lemonade): wait for GAIA’s restarted model server instead of failing the turn (#5264)
  • 6c780d1a8 — feat(ui): warm gray and brass design tokens, soft-tinted controls, Inter (#5290)
  • 81e00990e — feat(ui): first-run setup names the chat model; new chats offer tasks (#5240)
  • 41c5cc557 — fix(ui): cap chat titles and 404 unknown /api paths (#5272)
  • 1c8187a2c — fix(ui): answer footer and permission prompts speak plainly (#5269)
  • 53cdd5023 — ci: stop the account switch, release evals and SWE-bench from going red on a clock (#5369)
  • ef78e7e70 — feat(ui): one motion system on shared tokens, off under reduced motion (#5266)
  • c9a468e3b — ci: cut ~143 runner-hours/week and move small hardware tests off Strix Halo (#5162)
  • 4fd125606 — fix(ui): stop the mobile tunnel killing the user’s own ngrok tunnels (#5376)
  • 0d77e3e38 — fix(daemon): a daemon for a scratch home exits once nothing has used it for two hours (#5359)
  • 181c84e25 — fix(eval): the simulated user answers access prompts instead of letting them time out (#5358)
  • b2bd122da — test(agents): rate-limit sleep test counts only the agent’s own sleeps (#5355)
  • 5d45d704f — fix(gaia-agent): set up a /query turn off the event loop (#5349)
  • 15200e87a — fix(rag): wait visibly on a busy embedder instead of resending batches (#5348)
  • 2a62a01b0 — fix(shell): give scripts a 600 s default instead of the 30 s kill (#5347)
  • 4bdeb8628 — fix(ui): system status answers in bounded time and tells down from busy (#5344)
  • 349830b34 — fix(ui): keep a running chat’s replay buffer small and capped (#5343)
  • 75fd6ea76 — fix(ui): never take a model from under another chat or app (#5336)
  • 6e113b1c4 — fix(memory): surface stored facts in chats and keep saves out of sight (#5324)
  • 915d3a9f3 — fix(tui): a turn waiting for the model is not reported as broken (#5319)
  • 1c1546e30 — fix(tui): follow a daemon that restarted on a new port (#5318)
  • 41ebf01b0 — fix(ui): chat survives a busy, slow or dropped backend connection (#5316)
  • ade5bab45 — fix(lemonade): stop calling a busy shared server stalled, and retry a stolen port (#5314)
  • 0a14f8fd8 — fix(memory): remember only what the user says, and lead the memory page with it (#5243)
  • 889204189 — fix(connectors): stop concurrent token refreshes deleting the connection (#5378)
  • 11da36ac3 — fix(filesystem): stop deleting the file index when it is only locked (#5377)
  • 3a0f1a6b7 — fix(rag): never kill the user’s own PowerPoint on a PPTX timeout (#5345)
  • 74c830ed6 — fix(installer): verify the Lemonade installer before running it (#5389)
  • 1ba144752 — chore: delete the disabled agent PyPI lane, ChatSDK aliases, and committed eval runs (#5366)
  • 363b1dc21 — ci(release): RCs publish without approval and never cancel each other (#5367)
  • 65415ee85 — chore(installer): retire the “Terminal Hub” name in user-facing text (#5364)
  • e6d49de58 — fix(hub): let by-reference publishes exceed the inline 250 MiB cap (#5363)
  • 7aaf5f05e — ci(release): remove the Context7 docs refresh from the release workflow (#5353)
Full Changelog: v0.25.0…v0.25.1