Repository navigation
GAIA v0.25.4 Release Notes
Breaking Changes
- On Gemma 4 E4B, the GAIA agent no longer offers data tables, email, image generation or the skill hub — it asks you to switch to a larger model, which keeps them. (PR #5892)
- Telegram no longer answers edited messages, and
gaia.utils.pdf_page_to_imageraisesPdfRenderErrorinstead of returningNone. (PR #6197) - GAIA requires Lemonade 2026.44.1 — it refuses an older server and names both versions; GAIA's own Lemonade upgrades in place. (PR #6490)
What's New
- Use the Agent UI in Arabic, and ask about Arabic, English or mixed documents in either language — the interface runs right to left and citations open the document at the cited page. (PR #6165)
- Keep every AI request on this PC —
gaia config set network_policy local_ai_onlyrefuses any cloud model request before it is sent. (PR #5956) - Run GAIA's Gemma on the Ryzen AI NPU and leave the GPU free — the model lists offer it where it fits, and
gaia init --profile npumakes it the default. (PR #5892) - Guided first-run setup in the app and terminal UI, re-runnable from Settings — it lists each model's size and fit before downloading, and on integrated-GPU PCs helps change the GPU's memory share. (PRs #5638, #6241, #6256, #6268, #6228, #6271)
- Install skills from the hub with no setup — bundled skills are published signed, so
gaia skill install <name>works. (PR #6235) - Claude on the AMD LLM Gateway reuses cached prompts, calls tools natively from the first request, and Claude models follow a repository's
CLAUDE.md,AGENTS.mdand skills. (PRs #6217, #6298, #5964) - Updates install in the background, and the desktop app and terminal UI can go back from a bad update. (PR #6446)
- Install the Agent UI on your phone from mobile access. (PRs #6329, #6342)
- The GAIA agent reads text aloud; speech, images, music and sound effects play in the chat. Image generation works with TheNoise and other Lemonade image models. (PRs #6204, #6511, #6384, #6047)
- Index screenshots, receipts and scanned pages with the vision model, and read whole email threads and mail waiting on your reply in Gmail and Outlook. (PRs #5651, #6124)
- Connect Slack or Discord from Settings › Connectors and grant each to the agents you choose. (PRs #6370, #6372)
- See what is available — the session panel lists the chat's tools, and Settings lists every loaded model. (PRs #6381, #6288)
- Chat controls — Add to this reply and Always allow work with the GAIA agent, and new chats can start in full access from Settings › Permissions. (PRs #5541, #5827)
- From the terminal —
gaia -p --attempts Ncombines up to 4 independent attempts,gaia schedule add --atruns a prompt once at a time or after a delay like+2h, andgaia chat --agent <id>runs any registered agent. (PRs #6313, #6382, #6333) - Use GAIA's code search from Claude Code, Cursor or any MCP client with
gaia mcp code-index --repo <path>; it also covers Verilog, SystemVerilog and VHDL. (PRs #6369, #6346) - For developers — skills can ship their own tools, plus opt-in image-variation and image-to-3D (TRELLIS) tools, per-record JSON indexing, image and transcription calls on the generic LLM client, and an SPDX SBOM for the C++ framework. (PRs #5450, #5454, #6365, #6267, #6364, #6357, #6323)
Bug Fixes
- First-run setup — it tests the model chat will open on, says why a step failed and retries a dropped connection, installs the GAIA agent even when the models are already there, and shows one memory figure throughout. After an update, a new Lemonade installs behind a short notice instead of reopening setup, cloud-model users included, and moving from a cloud model to a downloaded local one no longer reopens setup on every restart. (PRs #6533, #6574, #6594, #6653, #6757, #6792, #6769, #6650, #6477, #6772, #6471, #6597, #6799)
- Installing and updating — Macs can update the desktop app, an upgrade stops the GAIA daemon first and names any program still holding its files, Windows no longer installs a system Lemonade GAIA never uses, the one-line installers put only GAIA's commands on PATH (not its Python and pip), the desktop
.debis namedgaia-desktop, non-Debian Linux gets a Lemonade remedy that works there, and one failed update no longer turns off later ones. (PRs #6624, #6620, #6596, #6476, #6626, #6636, #6569, #6377, #6506) - When the model server fails, the chat says so within seconds — a model that can't load, an AI engine that can't start, and a stopped local server are named instead of "try again" or blamed on the cloud provider. An answer cut off by a restart starts again with a note, a running tool shows its progress, and a refused download shows the server's reason. If GAIA's engine dies, the next message restarts it, and the desktop app restarts a crashed backend on its own. (PRs #6658, #6705, #6734, #6758, #6777, #6720, #6731, #6600, #6512, #6577, #6565, #6806, #6785)
- NPU — on Linux, GAIA lifts the 8 MB locked-memory cap FastFlowLM needs and finds the NPU on PCs with a large GPU memory carve-out. The first reply after a restart no longer reads its prompt twice, replies are no longer cut off mid-stream, FastFlowLM links and downloads work, and a model Settings marks unavailable can't be picked. (PRs #6666, #6709, #6712, #6736, #6738, #6729, #6715, #6714, #6341, #6496)
- Switching models — a chat on another local or cloud model no longer waits behind the default model's warm-up, a Settings download no longer unloads the model in use, picking a local model loads it at once and says why if it can't, the model pill is green only when its own model is loaded, the default model reads images when it has vision, and a cloud chat can read images too. (PRs #6599, #6610, #6625, #6779, #6652, #6689, #6776, #6782)
- Gateway and cloud models — DeepSeek on the gateway no longer carries ~12K tokens of tool schemas per call, a recovered turn no longer fails with HTTP 400, a Fireworks outage no longer deletes a working key, gateway Claude no longer fails with HTTP 401 while other gateway models work, document extraction works on Qwen3.8-Flash-Next and gpt-5.3-chat, a
FIREWORKS_API_KEYalready set connects Fireworks, a Fireworks chat keeps working after GAIA's engine restarts, the cloud consent shows under the model you clicked, the context meter says when it measures GAIA's 64K window, and an empty Claude reply is explained. (PRs #6216, #6272, #6281, #6163, #6628, #6388, #6244, #6780, #6545, #6546, #6347, #6801) - Your own Lemonade — when
LEMONADE_BASE_URLdoesn't answer, setup and Settings offer GAIA's own engine, Local only no longer removes the cloud keys of a Lemonade other apps share, and a.envin the folder you launch from is read. (PRs #6676, #6696, #6344) - Memory — "forget everything" also erases sensitive entries and past chats, and stays erased. Forgetting one memory no longer removes another or reports success when nothing matched, deleting a chat removes it from Memory, and
gaia memory bootstrap --inferkeeps what it can read from a cut-off reply. Forget works from your words, not only a memory id, and empty or outdated tool errors are no longer replayed as lessons. (PRs #5687, #6576, #6707, #6726, #6754, #5947, #6615, #6656, #6774, #6781) - Mac — macOS stops asking for keychain access after every agent update (with the GAIA agent from this release), secrets over 1024 characters are kept, the desktop app no longer stalls at startup on a keychain prompt, setup skips the NPU check, a server that ran across sleep no longer cuts off live answers, an agent install no longer fails at random over one unreadable process, and a daemon restart stops the agents it left running. (PRs #6482, #6484, #6667, #6663, #6517, #6822, #6808)
- Document search is faster and finds what a document contains — it ranks every chunk in any language, no longer re-reads every chunk per search, reuses a finished index when a chat opens the same file, and removing a document no longer re-embeds the rest. (PRs #6260, #6406, #6262, #6320)
- Document indexing — folders pick up Word, PowerPoint and Excel files, scanned pages stay readable and use a vision model the PC has, failures and evicted documents are named, and the context-size warning no longer fires during indexing. (PRs #6314, #6261, #6159, #6223, #6184, #6258)
- Arabic — numbers in Arabic PDFs stay beside the right words, answers follow the question's language more often, the right-to-left layout is fixed, and the remaining English labels are translated or muted. (PRs #6257, #6287, #6188, #6266, #6264)
- The Arabic interface is translated throughout — permission prompts and notifications, the Memory dashboard, Scheduled tasks, the live status line, the model-status popover, the context meter and dates follow the UI language, while code and paths read left to right. (PRs #6598, #6694, #6708, #6732, #6601, #6602, #6697, #6609, #6583, #6587, #6552, #6633, #6586, #6595, #6670)
- Windows paths and files — paths with spaces, several spaces or quotes show and link exactly as typed, shell commands keep non-ASCII file names, edits keep a CRLF file's line endings, and generated image names no longer contain characters Windows rejects. (PRs #6544, #6554, #6683, #6742, #6728, #6607, #6422)
- Desktop app messages point at in-app fixes instead of
gaiacommands, Download works foruser.models already registered in Lemonade, closing the window quits on GNOME desktops that show no tray icon, and quitting during setup no longer hangs. (PRs #6686, #6710, #6727, #6699, #6566, #6743, #6621) - Chat — a first message typed while GAIA starts is sent once it's ready, scrolling up during a reply stays put, a stopped answer stays marked stopped, reasoning no longer leaks into replies, chats are no longer named after the title prompt, the context warning quotes your words, deleted chats drop their queued messages, notices clear the Windows title-bar buttons, and four dialogs take keyboard focus. (PRs #6649, #6397, #6557, #6693, #6717, #6716, #6430, #6431, #6480, #6556, #6617)
- The agent no longer says scheduling or email is unsupported, opens a project's own page before answering a version question, searches again before saying a fact isn't in a document, and keeps answering you, in your language, after a grounding check. It warns you about instructions planted in a file or page on any model, no longer mistakes a short message for an instruction from memory, and does a step it announces instead of handing over the announcement. (PRs #6718, #6741, #6259, #6263, #6515, #6784, #6814, #6787)
- Document Q&A — keyword search works in short documents, files the agent indexes appear in the library and the chat, listing items from a long document reads only the pages that match, and
RAGSDK.queryno longer carries earlier passages into later answers. (PRs #6410, #6730, #6755, #6553) - File edits that would duplicate lines are refused instead of reported as done, an Always allow on a file write covers that folder for the rest of the chat, and a broken file-search index is reported instead of silently walking the disk. (PRs #6756, #6762, #6433, #6492, #6687)
- Skills — multi-word hub searches match, hub skills install only through the signature-checked path, skill messages give commands that work, captured skills record a digest, and the audit flags instructions that send content to a URL. (PRs #6445, #6463, #6467, #6513, #6524)
- Connectors and MCP — saved MCP connectors pick up catalog fixes, so older GitHub connections work again, the MCP HTTP client talks to spec-compliant servers, and the
gaia mcpbridge stops a call whose client hung up. (PRs #6629, #6525, #6724) - Settings panes lead with what matters and tuck the rest into sections, Updates shows the version when updates are off, and the Agent UI no longer adds an "Example Agent" to every agent list. (PRs #6391, #6547, #6123)
- Attaching an image no longer starts a hidden ~5 GB download — GAIA says which vision model is missing. (PR #6198)
- A model you set up in Lemonade with your own llama.cpp options loads with them, instead of crashing on every turn. (PR #6234)
- A failed reply says why in plain words and offers Try again, and an approved file edit shows its diff in the Agent UI and terminal UI. (PRs #6354, #6325)
- Asked for a slide, the agent builds a .pptx or HTML file, and image generation reports success only when a real image was saved. (PR #5977)
- A chat you start is no longer stuck on "Waiting for the GPU", one chat indexing no longer blocks others, and updating GAIA no longer interrupts an Agent UI turn. (PRs #6096, #6171, #6195)
- File paths — "Save it to my Documents folder" writes there, tools use the chat's folder, and a moved document is followed when added again. (PRs #6074, #6069, #6177)
- Signing in to Google or Microsoft from the browser allows 15 minutes instead of 2, an expired link says so, and a crash mid-save no longer deletes a working connection. (PRs #6359, #6343, #6176)
- Email — waiting-on-you alerts skip auto-replies and CC-only mail, and Outlook unread listings work. (PRs #6189, #6119)
- Mobile access without ngrok shows a one-time setup step, and the desktop app offers a safe start after three crashes in a row. (PRs #6322, #6306)
- Shell commands that change system settings ask first even when their names look read-only, and writing
GAIA.mdkeeps a backup. (PRs #6337, #6352) - Honest status — the verification line no longer counts a printed test log as a test run, a recovered agent stops marking later answers failed, a long recalled procedure is no longer cut mid-step, failed session saves and memory settings say so, figures no tool produced are flagged when a computation failed or never ran, and a script's write to the output file you named counts. (PRs #6374, #6362, #6334, #6280, #6081, #6791, #6818, #6820)
- Code search — a repo picked with
index_codebaseis remembered, an inconsistent index asks you to re-index, and a missing FAISS fails before embedding. (PRs #6056, #6330, #6203) - Context and storage — a deliberately small context window is kept, implausible VRAM reports are ignored, and concurrent starts no longer race or over-wait on the databases or split the turn log. (PRs #6152, #6150, #6151, #6044, #6054, #6295)
- Daemon — a restart stops every agent process left running,
start-agentrefuses a binary other than your checkout's pin, an isolatedGAIA_HOMEno longer imports~/.gaia's memory, and each agent is checked against its own binary lock. (PRs #6304, #6349, #6126, #6401) - Terminal UI — settings saves and reads share a lock with the Agent UI, it says when it is out of date, setup and
/modelsreport progress correctly, terminal-only installs get a usable remedy,gaia-tui rundelivers its cancel before exiting, a Mac or Linux package that left out thegaiacommand installs it, and reading settings works on a write-protected drive. (PRs #6269, #6350, #6141, #6285, #6213, #6327, #6309, #6167, #6700, #6668, #6438) - Chats get a topic title while their first answer runs, Undo stays available after an error turn, and Settings stays reachable through startup status blips with its close button in view. (PRs #5972, #6174, #6083, #6120, #6215, #6190)
- Scheduled runs count the daylight-saving hour correctly, a one-time schedule on Windows no longer stays running forever, approving a finished goal no longer re-queues it, and "Remind me tomorrow" no longer promises an alert GAIA can't deliver. (PRs #6293, #6340, #6127, #6808)
- Web pages — a rate-limited page tells the agent how long to wait, and a missed exact phrase still returns the relevant passage. (PRs #6116, #6185)
- Commands —
gaia -p ""fails fast,gaia telegram stop --forcestops the adapter,gaia uninstall --venvworks from the venv on Windows,gaia agent exportdrops bytecode, flags that did nothing (gaia email --debug/--stats,gaia api start --step-through) are rejected,gaia -preads piped prompts as UTF-8,gaia emailnames missing extras up front, andgaia agent test --livefails on an unreachable or unusable model. (PRs #6168, #6279, #6273, #6339, #6311, #6328, #6140, #6443, #6392, #6568, #6606) - Data and documents — workbook questions read every sheet, summaries follow the style you asked for, and profiles advertise only tools they have. (PRs #6130, #6057, #6053, #6153)
- MCP servers that check the connection handshake now connect, a hub agent that crashes on start says why, timed-out skill programs stop their child processes, and the C++ agent shows the server's error with flat memory on long queries. (PRs #6367, #6224, #6317, #6331, #6173)
- Packaging — GAIA no longer ships AGPL or GPL code, so PDFs are read with pypdfium2 and a damaged or password-protected PDF fails with an error instead of indexing blank; third-party notices ship inside every download;
gaia-desktopruns after installing the.deb; the flagship wheel ships its starter skills; importinggaialeaves the host's logging alone. (PRs #6197, #6290, #6131, #6080, #5951) - Agent evals are harder to fool — reading the answer key fails a task, a context overflow is named instead of scored 0%,
--comparecounts a slower PASS→FAIL and flags replaced scenarios,--fixrefuses uncommitted changes,--generate-corpusleaves the sales data alone, and judged runs use your Claude Code login first and say which login they used. (PRs #6368, #6358, #6305, #6353, #6335, #6345, #6378, #6363, #6180, #6497) - Releases can't publish with a desktop installer missing or agent version files out of step, and the hub rejects artifacts named like its own docs or an eval score outside 0–100. (PRs #6356, #6355, #6302, #6183, #6447, #6321)
- Docs — fixed broken links and stale names (
gaia tui, deleted agents,--bypass-permissions), synced the CLI reference with the parser, added Git and Memory connector pages, added a guide to publishing a skill, and corrected the guides, quickstart extras, skills, connectors, path grants, eval, VLM and/querypages. (PRs #6066, #6129, #6147, #6146, #6145, #6133, #6134, #6135, #6137, #6113, #6310, #6324, #6319, #6332, #6308, #6237, #6246, #6247, #6294, #6238, #6239, #6225, #6220, #6218, #6205, #6175, #6201, #6227, #6461, #6530, #6560, #6563, #6564, #6604, #6605, #6608, #6618, #6277, #6250, #6292, #6507)
Known Issues
- A relayed GAIA turn can lose its final answer after you approve a prompt, about one time in ten. It says the step didn't run; send the message again. Tracked in #6019.
- If you tested v0.25.4-rc13, GAIA keeps the Lemonade 2026.45.3 it installed, which can't start on Ubuntu 24.04. Run
gaia initafter updating; on Windows, quit Lemonade first. Tracked in #6794.
Contributors
Thanks to the community members who contributed to this release:
- @huong8373tt-beep — chat-folder and Documents paths, GPU preemption, code-index fixes, context-window and VRAM handling, databases, Undo, the terminal UI, the loaded-models panel, image-to-3D generation, the vision-model download fix, email alerts, Telegram force-stop, Windows uninstall, Outlook, reminders, memory and session saves, reading text aloud, Linux GPU memory advice, Lemonade upgrades without re-running setup, Settings downloads that keep your model loaded, folder-wide write approvals, forget everything, skill audits and digests, the desktop
.debname, docs and test reliability (PRs #6069, #6074, #6096, #6056, #6152, #6150, #6151, #6044, #6087, #6083, #6120, #6141, #6131, #6119, #6127, #6081, #6057, #6080, #6113, #6097, #6213, #6279, #6273, #6288, #6267, #6202, #6203, #6280, #6224, #6223, #6281, #6242, #6189, #6185, #6195, #6190, #6198, #6159, #6176, #6220, #6218, #6246, #6247, #6255, #6274, #6278, #6219, #6350, #6386, #6204, #6769, #6477, #6779, #6792, #6433, #6576, #6513, #6524, #6569, #6574, #6377, #6388, #6347, #6392, #6422, #6443, #6466, #6480, #6512, #6515, #6418, #6420, #6432, #6504, #6788, #6250, #6277, #6292, #6560, #6275, #6427, #5981) - @rhmatzeka — docs corrections across guides, custom agents, skills and eval, and eval and email test cleanup (PRs #6147, #6146, #6145, #6135, #6134, #6133, #6129, #6132, #6128)
- @tylerbea — the full-access toggle in Settings, chat titles during the first answer, keeping a Fireworks key through an outage, the Mac keychain fixes, Mac sleep, deleting chats from Memory, terminal-only installs and the quiet Lemonade update for cloud-model users (PRs #5827, #5972, #6163, #5947, #6482, #6484, #6517, #6663, #6667, #6668, #6700, #6772)
- @akshat-lakhera — locked-database waits, honest profile tool lists, and locked terminal UI settings saves (PRs #6054, #6053, #6153, #6269)
- @nathan-vincent-dev — the agent import prompt's Ctrl+D/Ctrl+C handling, naming the evicted document, code cleanup and docs fixes (PRs #6140, #6137, #6184, #6178, #6181, #6175, #6425)
- @ZYZ666-RGB — document Q&A history, RAG start-up errors,
user.model downloads, and docs (PRs #6553, #6565, #6566, #6562, #6563, #6564) - @lakshyab20 — CRLF-safe edits,
gaia memory bootstrap --inferon cut-off replies, dialog focus, and eval and chat docs (PRs #6607, #6615, #6617, #6616, #6608, #6618) - @fl0rianr — TheNoise and other Lemonade image models (PR #6047)
- @AyobamiH — clearer hub agent handshake failures on Windows (PR #6173)
- @eshitakundu — the MCP HTTP transport, MCP connector catalog updates, bridge calls whose client hung up, and default-model and FAQ docs (PRs #6239, #6238, #6525, #6629, #6724)
- @burgulvedant — failing
gaia agent test --liveon unusable replies, and eval, MCP and shell-approval docs (PRs #6205, #6201, #6606, #6604, #6605) - @thalisantunes — the quickstart's extras and the email-triage plan's acceptance bar (PRs #6225, #6243)
- @Goldloli — the
gaia-tuiname in the docs (PR #6237) - @bniladridas — side-effect-free logging on import (PR #5951)
- @muzman123 — broken
amd-gaia.aidoc links (PR #6066) - @pallob101 — failing
gaia agent test --liveon an unreachable model, and hub publisher tests (PRs #6568, #6740) - @mangeshraut712 — word confidences in
gaia memory bootstrap --infer(PR #6656) - @Nagashreeshyl — clearer flagship smoke-test failures (PR #6725)
- @mvanhorn — a pinned Mintlify CLI for docs validation (PR #6721)
- @onlygummy-control — the file monitor tool mixin in the registry (PR #6623)
Full Changelog
483 commits since v0.25.3:
697f4979e— test: restore modules after tests that reload them (#6878)76709b4c1— docs(release): refresh v0.25.4 notes for the final (#6804)d0f262dfc— chore(release): pin flagship agent 0.3.5's published hashes (#6861)ba9cd5d5f— test(web): stop racing a real 1 s timer in the fetch-deadline tests (#6848)40bf39b26— test: check launcher-chain unwrapping is linear without a wall-clock budget (#6845)4988a487b— chore(release): flagship gaia agent 0.3.5 (#6839)df2a5dd82— fix(agent): don't hand over an announced next step as the answer (#6787)2531ce9bd— fix: five tests that failed at random in CI, two of them real bugs (#6808)49959460f— fix(memory): fence the per-turn memory block off from the user's message (#6814)f4979e933— fix(agent): warn the user whenever a file or page carries planted instructions (#6784)dfcb235e0— fix(memory): let forget take the user's words, not only an id (#6774)23a25890c— fix(agent): flag invented amounts after a computation fails (#6818)6b27b15d2— fix(agent): count a script's write to a named file outside the grant (#6820)0d6c5bf3f— fix(email): list one email's action items in the order they were saved (#6816)536ac12e5— fix(memory): stop replaying empty and outdated tool errors as lessons (#6781)2d08c1123— fix(daemon): don't fail an agent install over one unreadable process (#6822)0ee1d0294— fix(chat): restart GAIA's dead engine before the next turn (#6806)02e2eead8— chore(release): pin flagship agent 0.3.4's published hashes (#6824)0c217ccea— chore(release): flagship gaia agent 0.3.4 (#6793)781fd29de— fix(desktop): restart a crashed backend and leave evidence of why it died (#6785)09db5c342— fix(setup): accept the local model in use when no default is set (#6799)fd88e852b— fix(cloud): keep a Fireworks chat working after GAIA's engine restarts (#6801)934f87d93— fix(chat): send the error event when a turn fails after a block or partial text (#6810)2c00b1680— fix(ui): picking a local model loads it, and a failed load says why (#6782)ca0480be5— fix(agent): flag invented figures when a computation never ran (#6791)eb34d933a— fix(ci): treat HTTP 408 from link checks as transient (#6798)13ff364f3— fix(ui): connect Fireworks from a key already in the environment (#6780)208761e4d— fix(chat): name the engine fix when a cloud chat can't start it (#6777)3016c0249— test(daemon): fake sidecar liveness in the ignored-Lemonade restart test (#6797)4820ebf3b— fix(setup): give cloud-model users the quiet server update (#6772)86a504a9e— fix(vlm): read images on a cloud chat; name the real cause when they're off (#6776)7fda16d4c— fix(ui): preserve active model during settings downloads (#6779)68acd73fb— fix(deps): pin Lemonade back to 2026.44.1 and check Linux glibc on bumps (#6778)6463f27fd— fix(llm): account for Linux GPU carve-out in memory advisor (#6769)e4fb1b907— fix(ci): lint hub packages and repair uncovered import (#6788)e8415182d— fix(setup): show one model-memory figure throughout setup (#6792)adfde4f2d— fix(connectors): stop macOS re-prompting for keychain access after agent updates (#6482)a003063a3— ci(release): Linux NPU check is advisory on a final (#6764) (#6765)ecc6ba539— fix(tools): refuse an edit that echoes a line from each side of the change (#6762)776901be2— fix(setup): retry the RC agent-manifest read and show why a setup piece failed (#6757)f79b54103— fix(memory): stop extraction erasing memories the user didn't ask to remove (#6754)3af519c2f— fix(web): put a project's own pages first and send release questions there (#6741)ee1b483e7— fix(llm): fail fast when GAIA's AI engine can't start (#6758)f5c717595— fix(desktop): quit on close where Linux shows no tray icon (#6743)9917fefbe— fix(ui): show a quoted Windows path as one chip with its exact spacing (#6742)9a6572a8d— fix(tools): refuse an edit that pastes the whole file into one span (#6756)fdc64ee4d— perf(agent): read only the pages that mention the asked-for words (#6755)c6cbf44b2— chore(deps): bump Lemonade Server to v2026.45.3 (#6640)f6369df14— test(hub): cover the release publishers' HTTP 409 handling (#6740)aab22d232— fix(llm): stop hanging up on NPU reply streams mid-generation (#6738)c9f5148c9— fix(npu): stop reporting no NPU on Linux APUs with a large GPU carve-out (#6736)fa200b069— fix(ui): put documents the agent indexes into the library and the chat (#6730)12f67ed85— fix(agent): say the AI engine can't start instead of "try again" (#6734)5e449e013— fix(ui): show a running tool's progress and model-server restarts (#6731)68cd34853— fix(gaia): dump the child's stderr on every smoke-test handshake failure (#6725)1e58c5746— fix(mcp): stop a bridge call when its client hangs up (#6724)6ca4a31e6— fix(ci): stop installer journeys failing a healthy v0.25.4-rc10 (#6733)e149dd710— fix(memory): report forget with an unknown id as an error (#6726)d9a828186— fix(ui): translate the notification panel's tabs, labels and buttons (#6732)0e640a88b— fix(ui): point desktop users at in-app fixes, not commands (#6727)11cea7ba5— fix(webui): show the version and 'updates off' when updates are disabled (#6547)4099cbb72— fix(agent): load the NPU model at warm-up without priming its prompt (#6729)1d805875e— fix(shell): keep non-ASCII file names in cmd.exe output on Windows (#6728)5b54ba58d— ci(release): report CI on release candidates instead of gating them (#6722)a9e1689eb— fix(workflows): pin Mintlify CLI for reproducible docs validation (#6721)695a32dd2— fix(ui): refuse a chat model Settings says can't run, and say why in chat (#6714)74214bb93— fix(gaia): stop calling scheduling and email unsupported when they exist (#6718)65c58eea5— fix(agent): say when the model server restarts mid-answer (#6720)f61e42a44— fix(webui): split setup types out of types/index.ts (#6719)2a3f54cd1— fix(ui): stop errors shown in the app from naming gaia commands (#6710)5aec1e7ef— fix(ui): don't title a chat with the auto-title prompt itself (#6717)0319dcb61— fix(ui): quote the user's words, not the memory block, in the context warning (#6716)bf47d2edf— fix(agent): warm the model chat reopens on, not the setup default (#6715)164911357— fix(llm): report a model that fails to load as a load failure, not a network error (#6658)5a2ca3af4— fix(lemonade): offer GAIA's own AI engine over LEMONADE_BASE_URL in setup and Settings (#6676)3b348ab5f— fix(webui): quit on SIGTERM during setup; steady CI journey teardown (#6713)01a7686a1— fix(ui): pull a user. model Lemonade already registered by name (#6699)fac5984cd— fix(memory): let Gemma run forget_everything instead of denying it (#6707)f218ad555— ci(lint): check hub/ code too (#6711)8214b700c— fix(npu): make the not-set-up refusal in gaia init read as sentences (#6712)c4b9f8d28— fix(agent): hide reasoning before a lone </think> on every path (#6693)204ead312— fix(ui): stop on-screen messages naming CLI commands (#6686)1286c5634— fix(webui): keep backslashes in Windows paths whose folders have several spaces (#6683)9c38cc3d5— fix(npu): keep gaia init --profile npu going when Lemonade can't report the NPU (#6709)1b663e35e— fix(webui): word permission notifications in the UI language (#6708)f4c37b004— fix(llm): say the local model server is down instead of blaming the cloud provider (#6705)5e421a546— fix(npu): lift Linux's 8 MB memlock cap so the NPU can load (#6666)1aa35416f— fix(tui): install the gaia command when a package left it out (#6700)003852f5a— fix(ui): show schedule descriptions in the UI language (#6697)2a78a6b0b— fix(llm): Local only leaves a server GAIA doesn't own alone (#6696)3f6990f31— fix(webui): translate permission prompt headings and explanations (#6694)e18e94b47— fix(rag): read images with the default model when it has vision (#6689)eac3b012a— fix(tools): say when file search's index fails instead of silently walking the disk (#6687)f2d48d9ab— fix(ci): keep the Windows NPU chat gate from crashing on its own output (#6672)7f80d2fd2— fix(webui): translate the held-first-message row (#6670)6327d0f0b— fix(setup): test the real chat on the model chat will open on (#6653)82012a0ea— chore(agents): register the file monitor tool mixin (#6623)74ee4232c— fix(installer): put only GAIA's commands on the Windows PATH (#6636)ecebaa7a1— fix(tui): point a terminal-only install at the installer when setup can't run (#6668)716029ada— fix(ui): don't hold desktop startup on the saved sign-in check (#6667)964102aa6— fix(hub): skip the NPU check on Macs (#6663)7864a546c— ci(npu): test NPU loads while another Lemonade holds the NPU (#6654)180f21d84— fix(ui): keep the model pill green only when its own model is loaded (#6652)f56dd7799— ci(npu): run one Agent UI turn on the NPU default model, Windows and Linux (#6643)978f6861c— fix(memory): handle non-numeric confidence in bootstrap --infer (#6656)d487ccf24— fix(ui): hold a new chat's first message until GAIA has started (#6649)e4671fa9d— ci(npu): let the NPU repro run with memlock raised, as after the fix (#6657)f6a4b887d— fix(setup): count the terminal installer's agent as installed (#6650)4fcf1af2f— test(webui): fail when a component gains hard-coded English (#6631)bc46ec603— fix(connectors): saved MCP connectors pick up catalog updates (#6629)a02461f6b— ci(npu): never clean up the whole runner, and fail the repro when a Lemonade can't start (#6655)4cfb5b14b— fix(installer): stop the GAIA daemon on upgrade and uninstall (#6620)99a64257a— ci: stop release-test bugs slipping past auto-fix, review and RC gates (#6630)cd4e53f32— fix(llm): give gateway Claude and Lemonade one gateway token (#6628)b39c8a8c8— ci(npu): add a dispatchable repro for NPU chat through GAIA's own Lemonade (#6651)8cb9756bc— fix(release): publish the Mac update zip and check update manifests (#6624)6b0c89439— ci(release): rebuild a dry-run commit once its artifacts expire (#6639)91e00d609— ci(release): find the verified dry run for a tag and report drift (#6614)15e69016f— fix(tests): stop the stream-reader Stop test racing the request (#6634)95cfa7fa1— fix(ui): show dates in the UI language on every screen (#6633)48428a1ce— test(connectors): pin the OAuth refresh body encoding and cover the cold authorize route (#6616)822340d9e— test(memory): time the masking ReDoS guard in CPU time, not wall time (#6627)e365e92c8— fix(memory): keep the complete insights from a cut-off --infer reply, and exit 1 when none arrive (#6615)1faf40863— ci(release): run the release-train dry run nightly on main (#6612)fbd2be445— fix(webui): move focus into four dialogs when they open, and back out on close (#6617)1afdf340e— docs(chat): set GAIA_DYNAMIC_TOOLS on the Agent UI backend, not the eval command (#6618)f0eda8ab6— fix(installer): put only GAIA's commands on PATH, not the venv (#6626)c9385ecce— fix(ui): let a model load finish before another model's turn starts (#6625)16ebebc12— fix(webui): quit promptly on SIGTERM and stop a running backend install (#6621)999a3cc5d— ci(release): gate a release candidate on critical CI only (#6622)442c7449f— fix(tests): ignore node_modules when checking setup.py package drift (#6619)6f1b04faa— fix(ui): stop the start-up warm-up when a turn uses another model (#6610)ec538d098— fix(ui): correct Arabic repeat count and use UI language for schedule dates (#6609)69c6623ac— docs(eval): document the backend switches a full benchmark needs (#6608)6b2cee23e— fix(tools): keep CRLF files intact in diff previews and direct-match edits (#6607)811738273— fix(agent): fail --live gate on unusable model replies (#6606)ddb1a3fc6— docs(mcp): run the Windows health example with --no-project (#6605)293cfb43c— fix(ui): say when the context meter measures GAIA's window, not the model's (#6546)557c733b1— fix(ui): keep the skills folder path left to right in Arabic (#6595)47b727cf7— docs(eval): show the real --compare output in the eval CI guide (#6604)516fe8db2— fix(webui): keep backslashes in Windows paths that contain spaces (#6554)163342f66— fix(webui): translate the composer's context meter and its warning (#6552)feb37d7fc— fix(ui): show the cloud-model consent under the clicked row (#6545)8519f5d4f— fix(ui): link a Windows path with a space as one chip (#6544)fedda72c3— fix(agent): play text_to_speech output inline in the Agent UI chat (#6511)83e04abb6— fix(ui): keep a long folder path whole in the Arabic session panel (#6586)d6ffc2388— fix(ui): translate the live turn status line in the Agent UI (#6583)18e66509f— fix(webui): say GAIA stopped when it dies mid-answer, and offer Try again (#6600)7c92c4d3c— fix(ui): translate the Scheduled tasks dialog into Arabic (#6602)180555d33— fix(lemonade): read the loaded model's own context window, not a cloud entry's (#6597)a2cf24b50— fix(ui): translate the Memory dashboard into Arabic (#6601)39f943f5b— fix(agent): don't make a cloud turn wait for a local model's warm-up (#6599)8dfae6615— fix(webui): keep Arabic permission prompts left to right and translate their buttons (#6598)aa841e400— fix(installer): name the program holding GAIA's files and let the upgrade continue (#6596)ae4d98d9e— fix(setup): agent check survives a non-JSON hub; apps say when there's no agent build (#6594)6e14e68ac— fix(ui): translate the sidebar model-status popover (#6587)9c036c695— fix(setup): close the gaps a deep review of first-run setup found (#6533)c220ef60e— fix(setup): do not skip flagship install when models already exist (#6574)b7be3d89b— fix(memory): stop skill learning from returning after forget everything (#6576)8644de13d— fix(ui): show model download errors to the user (#6577)9d8de24a3— fix(rag): stop masking RAG init failures as missing extras (#6565)2390bc9fe— fix(installer): give desktop Debian package a distinct name (#6569)e2ac1a66b— test(installer): stop the GAIA daemon before the journey leftovers check (#6573)e8254a0c1— fix(agent): fail gaia agent test --live when the model is unreachable (#6568)355027a40— fix(ui): align Download model pull payload with readiness for user. models (#6566)e8a8da0f5— fix(rag): stop RAGSDK.query from carrying earlier retrieved context into later answers (#6553)08654a85a— test(webui): cover Delete all chats confirm and memory toggle (#6562)edaad9dca— docs(agent): document reconnecting query phase (#6560)db9539928— docs(connectors): fix mail-grant examples to use installed:gaia and full scopes (#6563)5f0e8ac2e— docs(gaia): document GAIA_ALLOWED_PATHS and max_steps default 150 in SPEC (#6564)7e9bc8062— fix(ui): a stopped answer stays stopped, with honest cost and a translated footer (#6557)f2bfe34f3— fix(webui): keep notices and dialogs clear of the Windows title-bar buttons (#6556)7b21fb8a8— fix(webui): wait for PrivateChip to drop a leftover Private choice in tests (#6567)4bf24bf57— feat(lemonade): require Lemonade 2026.44.1 and drop old-version support (#6490)77896b6e7— fix(memory): "forget everything" erases everything, sensitive rows and old chats included (#5687)44f774d49— fix(setup): upgrade mismatched embedded Lemonade without reopening onboarding (#6477)6c29d536d— fix(llm): raise when model downloads fail instead of returning False (#6512)b10a08ed5— fix(mcp): make the HTTP transport follow the streamable HTTP spec (#6525)d83c99a83— fix(skills): review outbound URL instructions during audit (#6524)1f12a8937— fix(ci): hold review verdict on expired records and removed collaborators (#6522)f8a6445e8— fix(webui): keep sw.js identical between an RC and its final twin (#6532)4426915e9— fix(docs): replace unsupported <Success> callout with <Check> (#6530)57574f7ba— fix(installer): stop installing a system Lemonade GAIA never uses (#6476)dfee77fb4— test(gaia): pin home and cwd in fast-mode prefill budget test (#6520)92391bf53— fix(grounding): recognize paths before Unicode punctuation (#6515)7fb0e2fa6— fix(ui): stop a server that ran across a Mac sleep from closing live turns (#6517)05cbcb5e4— feat(setup): one guided first-run setup in the app, re-runnable from Settings (#5638)825101d13— test(webui): tolerate a held scrollbar's few-pixel drift in the auto-scroll drag check (#6526)1bdcba044— fix(webui): stop auto-scroll snapping back while the user reads up (#6397)28eea9dc2— fix(agent): keep a corrected answer addressed to the user (#6263)733a1b55e— fix(agent): search again before saying a fact isn't in the document (#6259)a64b5925f— fix(eval): escape backslashes in eval issue text before other escapes (#6519)efce5b80d— fix(skills): record digests for captured skills (#6513)ec343ad87— fix(ci): fail publish pipeline workflow when harness fails (#6504)2cf61ea12— ci(review): hold merges on Request changes and send audits to auto-fix (#6276)4dce772e8— docs(security): note Agent UI chats can take GAIA_ALLOWED_PATHS as scope (#6507)186ee8a5a— fix(webui): clear a failed update's attempt record after reporting it (#6506)33c2bd8a2— ci(eval): file eval-failure issues only for measured regressions, and close them on a pass (#6510)704626722— fix(agent): send cloud extraction only a reasoning effort the model accepts (#6244)906361357— fix(cpp): point context-overflow remedy at reloading the user's model (#6452)66e9f9efa— fix(rag): keep keyword search working in 1-4 chunk documents (#6410)705e8a1a4— fix(admin): sort chart table dates by time and pass counts by rate (#6509)16369da21— feat(admin): set the core team from the dashboard; sortable tables (#6115)b37c0d8fa— fix(agent): fixes from NPU eval runs of Gemma-4-E4B (#6496)fb8047c97— fix(eval): judge uses the Claude Code login first, then the API key, and says which (#6497)8a640a767— fix(ui): deleting a chat deletes its conversation from Memory (#5947)1e8c786be— feat(audio): let the flagship speak through Lemonade (#6204)87b14a67a— feat(ui): carry the tidier layout through the rest of Settings (#6391)eb42637d2— test(tui): stop the SSE Close-cancel tests racing their own teardown (#6488)f09fcdd53— test(llm): order the pull/Stop race with events, not sleeps (#6487)adcd189f2— fix(ui): check a folder approval against the file's resolved location (#6492)130fb5e24— feat(update): silent restart-to-update and a way back from a bad update (#6446)1b268cc1a— fix(lemonade): stop an outdated daemon from bringing back the old server (#6471)4d4e2bc99— fix(hub): reject an out-of-range eval score at publish (#6447)77a468a98— fix(connectors): keep secrets over 1024 characters on the macOS keychain (#6484)3554db424— test(agent): pin the OS in the fast-mode prefill budget test (#6462)67597464a— fix(ci): fail Linux Lemonade integration lane on test failures (#6420)f432d7a62— fix(ui): reduce repeated write approvals with resolved folder grants (#6433)030462576— fix(agent-ui): align SSE contract with emitted events (#6466)0406351c6— fix(email): name missing daemon extras before relay (#6392)cf75978cf— docs(ui): clarify Internet switch limitations (#6292)5e3879854— fix(daemon): read each sidecar agent's own binary lock (#6401)e078055e3— fix(ci): keep skill audit green when summary comments are rate limited (#6432)c454bc953— fix(ui): drop queued messages for deleted chats (#6480)aaa056b7c— docs(gaia): document full-access path grants (#6277)fb31799bb— fix(cpp): reject untracked CMake dependency forms (#6418)7a1cca6b7— ci(installers): install the .rpm the way Fedora 45 still allows (#6474)03b214798— test: remove relayed sidecar timeout race (#5981)af91ce122— docs(skills): guide for building and publishing a skill to the hub (#6461)59647a095— fix(skills): give working commands and accurate status in skill tool messages (#6467)ce2b7277f— fix(skills): send hub skills through install, not capture (#6463)ffbdb7ae4— fix(webui): stop retrying a deleted chat's queued resend (#6431)ebe8c16c5— fix(tests): check out the eval fixture skills with LF, like hub/skills (#6472)c0e309cde— fix(webui): stop a closed chat view from re-attaching its stream (#6430)848818a33— ci(release): fail a release that lacks a promised installer (#6468)1ffebe2f2— fix(skills): check out hub/skills with LF line endings on every OS (#6464)bbc374863— docs(gaia): correct flagship package release records (#6250)dca0ef8f1— fix(llm): explain gateway Claude token drift (#6388)d4627a4c8— test(rag): pin exact document identifiers in keyword search (#6275)d730bf64c— fix(claude): explain thinking-only empty replies (#6347)7b5909c05— fix(skills): match skill hub searches word by word (#6445)c189552e9— fix(installer): give unsupported Linux distros an actionable Lemonade remedy (#6377)9047ba344— test(chat): check the system-prompt budget for every OS (#6038)65c44ffaf— fix(eval): pin run_eval_lane.py children to this checkout (#6312)d2c372878— fix(npu): make FastFlowLM models reachable on Ryzen AI PCs (#6341)5cc5d390e— ci(installer): wait for the deferred venv delete before checking leftovers (#6448)b08c81c74— fix(cli): decode piped print prompts as UTF-8 (#6443)880e27d48— fix(sd): normalize whitespace in generated filenames on Windows (#6422)eea457729— test: keep test runs from starting Lemonade through the real daemon (#6427)4069c8cdf— chore(llm): drop "stream_options" and history comments (#6425)cba6a512c— fix(lemonade): stop sending the dead LEMONADE_CTX_SIZE start variable (#6326)831013475— fix(hub): bring both catalog schemas in line with what the Worker emits (#6321)7c2c61b26— feat(connectors): add a pinned Discord MCP connector (#6372)b1492f80b— ci(claude): follow up in threads Claude is part of without @claude (#6375)a3cbc1038— fix(env): find .env from the working directory in every install (#6344)dfee5d59b— perf(agents): check for a test summary before parsing a Python run's source (#6442)1ef20bb53— test: stop tests leaking a fake os.name into the nightly run (#6440)efd8a9dad— docs(release): bring the v0.25.4 notes up to date since rc1 (#6441)2adbbf081— fix(eval): re-pin the CDNA 4 whitepaper and let amd.com downloads through (#6439)10e7baa84— fix(tui): read config.json without a lock when the folder can't hold one (#6438)9d1915b88— fix(rag): read each chunk's words once, not on every search (#6406)206edd565— fix(eval): fail a task whose tools read the answer key (#6368)29fcf72ce— feat(cli): gaia -p --attempts N runs independent attempts, then combines them (#6313)794fc105e— fix(verification): a printed test log no longer counts as a test run (#6374)34a6c26f6— fix(ui): send the chat's session id to the email agent (#6379)b19e426e3— fix(webui): a failed turn says why in plain words and offers Try again (#6354)ae5d13251— feat(schedule): run a prompt once with gaia schedule add --at (#6382)8aa0b2939— fix(eval): name a ctx overflow in gaia eval benchmark instead of 0% accuracy (#6358)c35e86163— fix(email): record each autonomy cycle and stop the CLI giving up first (#6373)de7afd5f5— feat(sd): add image variations via Lemonade's /images/variations (#6365)25a205487— fix(connectors): give OAuth sign-in 15 minutes and say the old link is dead (#6359)055f8010d— feat(webui): show generated images and audio inline in chat (#6384)ae66792e1— feat(webui): tell phone users how to keep GAIA on the home screen (#6342)060dcd027— feat(rag): index a JSON array as separate, citable records (#6364)cf7ea2361— test(agents): check tool-markup scan scaling, not wall-clock time (#6421)3849e325b— feat(code-index): index Verilog, SystemVerilog and VHDL at design units (#6346)1525e679a— feat(llm): expose image generation and transcription on the provider interface (#6357)8819560f7— feat(ui): show a chat's tools in the session panel's Agent info (#6381)2086ee19b— feat(connectors): add a pinned Slack MCP connector (#6370)16c4549f6— fix(file-io): run the full write guardrails in update_gaia_md (#6352)1890503a8— feat(cli): run a registered agent with gaia chat --agent <id> (#6333)734ef2959— feat(cpp): ship an SPDX SBOM for the C++ framework and check it in CI (#6323)bc4220b0d— feat(mcp): serve semantic code search over MCP with gaia mcp code-index (#6369)9c814c75d— feat(webui): make the Agent UI installable as a phone app (#6329)aefb5718c— ci(dependabot): watch every published lockfile, fail lint on a gap (#6338)b5db823ae— fix(ui): show an approved edit's diff in the Agent UI and the TUI (#6325)ebb553181— fix(eval): --fix refuses a dirty tree and stops on a failed fixer (#6335)dd0ad8d4d— fix(agent): report each query's own errors, not every past one (#6362)920a7080a— fix(shell): ask before read-only-named commands that set system state (#6337)3a8917110— fix(memory): never inject a recalled procedure cut mid-step as proven (#6334)8810e42f1— fix(rag): folder indexing covers the formats single-file indexing does (#6314)21dd0f69d— test(agents): stop the save-claim scan timing test flaking on busy runners (#6402)8712590c0— fix(eval): record scenario sources in the scorecard and flag overrides (#6353)bd99c0fd9— fix(ci): publish.yml refuses a release with a desktop installer missing (#6356)642f597f0— fix(release): move every agent version file together, or fail naming it (#6355)fd959770a— test(lemonade): make the live /pull, /load and /health tests able to fail (#6351)e4483bfe0— fix(cpp): bound per-query tool-call history to the loop-detection window (#6331)4637c43aa— fix(code-index): fail loudly when the index and its metadata disagree (#6330)6c0b46aa2— fix(rag): removing a document no longer re-embeds the library (#6320)9e3230437— fix(hub): reject artifact filenames that collide with per-version docs (#6302)1a9c4b329— fix(cpp): surface streamed server errors instead of "no tokens" (#6317)e2de7f3f9— fix(eval): judge and corpus generation ride a logged-in Claude Code CLI (#6378)d7a19dcaa— fix(eval): ignore a .env-only ANTHROPIC_API_KEY for the eval driver (#6363)b5a486a26— fix(eval): stop --generate-corpus from rewriting the sales CSV (#6345)0a4af8258— fix(eval): count a slower PASS->FAIL as a regression in --compare (#6305)848e1c1c8— test(webui): drive the policy-alert toast, receipt and reload in the live DOM (#6336)307219773— fix(tui): one-shot readiness report drops keystrokes; exit delivers the cancel (#6327)d81904f1f— fix(ui): show missing ngrok as a one-time setup step, not a failure (#6322)c682686fb— fix(tui): keep only the last 64 KiB of a local agent's stderr (#6309)67733539f— test(tui): stop the process-exit test killing a slow child with its own clock (#6307)0058a028c— feat(electron): start in safe mode after three crashes in a row (#6306)f474835c0— fix(goals): refuse to re-queue a rejected or finished goal (#6340)2d81b2f2a— fix(mcp): send a real protocolVersion and notifications/initialized (#6367)a07a0f895— fix(daemon): refuse a user-mode start whose checkout pins a different binary (#6349)a9e2cfff6— fix(connectors): one spelling for Google's identity scopes (#6343)0491e2201— fix(email): document autonomy undo and /v1/connections in the served spec (#6332)fcf908e2e— fix(api): remove the --step-through flag that nothing reads (#6328)8641859b0— fix(cli): reject gaia email flags the daemon relay never reads (#6311)ef21a2c4d— fix(daemon): reap every orphaned sidecar, not just one per agent (#6304)957a76c4a— ci: applying ready_for_ci to a draft PR starts its CI (#6361)b804f6fd1— fix(ci): Dependabot auto-merge enables only behind required checks (#6315)a4b5aab92— ci(claude): a failed evidence harness turns the review red and names why (#6371)a9ebba3fb— fix(website-router): set Cache-Control and edge-cache Railway pages (#6318)9b7a0556e— ci(claude): review hub agent packages for correctness before merge (#6376)2bdd6db11— ci(agent-sdk): time-box the Windows job so a hang fails at a named step (#6348)aad08d3f8— docs(connectors): setup pages for the Git and Memory connectors (#6324)2cc4f5fa0— test(email): join threads each test starts so CI can't crash at shutdown (#6360)433fd953b— docs(hardware-advisor): state the install path the example needs (#6319)14e58acc3— docs(cli): sync chat, mcp, and memory bootstrap docs with the parser (#6310)c89dae7a9— fix(examples): actionable MCP connect error and fresh Notepad file in Windows health agent (#6308)1dd2e2ac8— docs(release): recovery and post-release watch for the release skill (#6303)ba5db5bcf— fix(agent): keep bytecode out of export bundles; mark Context7 optional (#6339)75adaf006— test(eval): publish fixture hub atomically (#6386)d4a17cf0f— fix(tui): read config.json under the shared lock (#6350)544e725b4— docs(plans): point the email-triage acceptance bar at the flagship baseline (#6243)9a525c749— feat(npu): offer GAIA's Gemma on the Ryzen AI NPU, GPU stays default (#5892)dc1dcc9ec— fix(tests): stop xdist workers colliding on the fixture hub (#6366)0d97e96c2— fix(agent): give gateway Claude native tool calls from its first request (#6298)69fb824b4— feat(images): support TheNoise models through Lemonade (#6047)e28319e8d— test(docs): enforce navigation integrity (#6255)d0f925678— fix(tui): give terminal-only installs a usable CLI remedy (#6213)945ae5a4d— fix(telegram): implement force-stop for the adapter (#6279)3a3023c67— test: isolate embedded Lemonade state from unit tests (#6274)f54b64603— fix(installer): defer Windows active venv removal (#6273)4b2d9e494— feat(skills): publish hub/skills with each release, signed by a built-in AMD key (#6235)b4097929c— feat(ui): show all loaded models in model server settings (#6288)0e1e401f4— fix(agent): keep two agents' turn records from splitting each other in the turn log (#6295)9357d1316— fix: count DST missed runs correctly and isolate run_python snippets (#6293)60df4601e— test(email): stop the malformed-HTML speed test flaking on busy runners (#6297)4e56539be— feat(sd): add opt-in Lemonade TRELLIS generation (#6267)c70e2efed— fix(webui): finish the Arabic for the agent notice, memory chip and phone row (#6266)a2f1276fd— fix(sd): slides become files, and image generation stops claiming images it didn't make (#5977)4f5e159bf— test(release): exercise flagship lock PR against real git (#6278)5f326fe5e— fix(vlm): validate image analysis focus options (#6202)2ee3628f9— fix(licensing): ship third-party notices inside every artifact (#6290)cf436e7cf— docs: name Gemma-4-E4B as the Agent UI default and tested model (#6239)6068bc99e— docs: finish stale gaia tui and deleted-agent references (#6294)d2ca5b1cb— fix(rag): reuse indexing when a chat opens the same file (#6262)bc411aeed— fix(agent): answer in the question's language and cite the page text is on (#6287)12a0627a3— feat(webui): quiet the English in bracketed Arabic labels (#6264)0ebddd2c0— fix(ui): stop warning the context window is too small during indexing (#6258)de14a6e84— fix(rag): keep numbers beside the right words in Arabic PDFs (#6257)bc30e1687— test(email): pin Outlook header selection for auto-replies (#6219)632fc687d— test(connectors): assert shared lock budget instead of wall time (#6073)0097e4cc5— test(webui): visual check that the settings close button stays pinned (#6253)29a1d72aa— fix(code-index): fail before embedding when FAISS is missing (#6203)ab75d4c3e— fix(gaia): report failed automatic session saves (#6280)1c0ceb39c— fix(rag): keep scanned pages readable and read them with a model the PC has (#6261)05853dcc8— fix(skills): stop timed-out program process trees (#6224)2b582a6dc— fix(tui): lock and atomically replace config.json when the TUI saves settings (#6269)82c30b4d3— fix(web): tell the agent how long a rate-limited page asked it to wait (#6116)cc3f8321f— docs(gaia): list flagship audio generation tools (#6220)9bd717a6b— docs(vlm): explain explicit vision model downloads (#6218)77189f446— fix(ui): report non-streaming document indexing failures (#6223)085a318f5— fix(tui): three display glitches in first-run setup and /models (#6285)ddee92f8a— docs(eval): point the compare examples at a run directory that exists (#6205)cd9d9be3a— fix(rag): keyword search returns the best matches, in any language (#6260)853ccb3d4— docs(quickstart): name the extras the developer guides need (#6225)8fdcc4dae— docs: replace stale 0.17.2 examples and outdated FAQ model (#6238)466d9d7e5— fix(llm): normalize trailing assistant messages before chat requests (#6281)15d95e0bb— docs: remove references to deleted agent apps (#6246)3523b7636— docs: correct shipped status claims and links (#6247)16d6af371— docs: call the TUI binary gaia-tui, not gaia tui (#6237)51685f52c— feat(agent): read a repo's CLAUDE.md and skills for models that gain from them (#5964)cb537194d— feat(tui): choose models and GPU memory before setup downloads (#6268)f0f94af99— fix(ci): license gate accepts a declared license past its reviewed range (#6283)5fa2717f7— feat(webui): choose models and the GPU memory share in setup and Settings (#6256)87229e3f2— fix(agent): own tool-call markup switches only the session that wrote it (#6272)277411b57— fix(licensing): stop shipping AGPL/GPL/LGPL code and gate it in CI (#6197)e57c0cb8b— fix(setup): make the GPU memory split add up and give one value to enter (#6271)bc5df027b— fix(agent): keep text-format gateway models off native tool schemas (#6216)12d3ffc61— feat(setup): shared model plan and choices for first-run setup (#6241)541241ea3— feat(llm): send gateway Claude through its Anthropic route so prompts cache (#6217)54cd7c0e2— feat(setup): read and change an integrated GPU's memory share (#6228)7b370c202— test(watcher): pin busy-folder delivery and cap watchdog in install hints (#6248)2f5a86fb2— ci: install ffmpeg and the desktop app setup without the REST API (#6252)9def2d955— fix(llm): keep a model's saved llama.cpp args; stop per-turn load crashes (#6234)c6c38b92b— fix(webui): keep the settings close button pinned while scrolling (#6215)0964ec133— fix(watcher): cap watchdog before Windows 7 event starvation (#6242)09f53fd88— docs: point the roadmap at GitHub milestones (#6227)951920e2e— fix(email): avoid false waiting-on-you alerts (#6189)dafe08920— fix(web): make fetch guidance actionable (#6185)d792cbb7c— chore(agents): clean up code, comments, and small inaccuracies (#6178)5eff85ec4— chore(infra): use a shared helper, delete dead function, add headers, and delete an unused variable (#6181)056c50ac2— docs(cli): add bash and sd to gaia's download agent list (#6175)d262b3930— docs(gaia): say git push, reset and rebase ask once instead of being refused (#6201)ec1c78614— fix(daemon): keep in-process Agent UI turns from being interrupted (#6195)32ea1430e— fix(ui): keep startup settings available after status blips (#6190)d3d996e8b— fix(hub,ui): guard flagship core floor for document_scripts; harden document file route (#6183)dc85f2052— fix(ui): correct right-to-left layout and check it in CI (#6188)abddaf067— ci(claude): pick the Claude account per job, fail only when both are out (#6199)33c8599ac— fix(vlm): explain missing vision model before image analysis (#6198)6c2c24fb0— fix(rag): name the evicted document when indexing maxes out (#6184)e62e44064— fix(rag): use installed default VLM for document images (#6159)6cd5b4eef— fix(daemon): stop an isolated GAIA_HOME importing ~/.gaia's memory (#6126)63db47388— fix(tui): keep --dev diagnostics off the live screen (#6167)daba859ed— fix(chat): doc profile discovery rules name search_file, not find_files (#6153)3df4eca4a— fix(eval): SWE-bench smoke preflight gives the model room to answer (#6180)81183b94b— ci(installer): drop the known-failure entry for fixed #5528 (#6193)df2e51a06— ci(release): publish.yml attaches every installer for every tag (#6191)7c286a2b8— fix(hub): wait briefly for native crash stderr before reporting handshake failure (#6173)a3afa15ef— fix(connectors): recover forwarded saves after process crashes (#6176)9574046da— fix(ui): keep a working Fireworks key and chat through a model list outage (#6163)2a240368f— Release v0.25.4 (#6179)f699d20fa— ci(release): build the macOS arm64 sidecars on macos-15 (#6182)2f14be235— fix(ui): stop one chat's indexing from blocking other chats (#6171)19a18ad42— fix(ui): follow a moved document when it is added again (#6177)4479732b8— fix(release): redeploy the website when a final release publishes (#6162)156c21ba6— fix(tools): let analyze_data_file read every sheet of a workbook (#6130)5fb8835b2— fix(cli): refuse an empty gaia -p prompt instead of hanging (#6168)2a5a2b177— feat(ui,rag): Arabic interface and bilingual document Q&A (#6165)dbcd55a44— fix(ui): do not warn Undo after read-only shell commands (#6120)4eb6aab9d— ci(unit): guard recurring bug shapes and run only the tests a PR can reach (#5653)fc5001857— fix(ui): wait for a cancelled chat title to stop before the turn runs (#6174)4ace42416— fix(hub): ship starter skills in flagship wheel (#6080)20abdc4c5— ci: workflow alert issues dedupe and close themselves; add issue-filing rules (#5408)bd438272d— fix(logger): make log configuration explicit, remove import side effect (#5951)063ff26c6— ci(audits): one proactive audit a night, with quota gate and carry-over (#5404)c980ccede— ci(eval): score Gemma on Strix Point, refuse cross-model compares (#5511)b357bd95e— chore(eval): remove 34 unused prompt files from eval/prompts (#6128)1b28f5ff3— feat(skills): skill context API for paths, programs, temp files and preferences (#5454)203724815— feat(agent-ui): default full-access toggle in Settings > Permissions (#5827)83ad57e6f— refactor(agents): fold ChatAgent into the flagship package (#6139)ef1f9766f— fix(ui): reject implausible VRAM reports (#6150)4462f602a— fix(ui): serialize chat database schema upgrades (#6151)df9b9e0e7— docs(plans): release eval hardening — stress and adversarial gaps (#5493)414a2aa05— docs(guides): card every guide the User Guides nav lists on the index page (#6147)3ba0956ad— docs(custom-agent): snapshot each agent's tools after registering them (#6146)fb05a2c39— docs: name /full-access confirm and the environment tags for --exclude-tag (#6145)642e61413— fix(agent): respect deliberately small context windows (#6152)46531e586— feat(skills): ship bundled skill code in the binary and gate it like core tools (#5450)9544088a3— docs(gaia): move post-0.3.3 changelog entries back to Unreleased (#6158)d9c56574d— feat(ui): Add to this reply and Always allow work with the flagship agent (#5541)15d0e463a— feat(rag): index images by reading their text with the vision model (#5651)630b7374e— fix(ui): retry chat titles and name a chat while its first answer runs (#5972)c8805ce92— feat(llm): Local only — no GAIA AI request reaches a cloud model (#5956)8afe6d06f— fix(code-index): retain selected repo across turns (#6056)93128f7a9— fix(storage): retry WAL setup for remaining databases (#6044)d01897c2d— fix(agent): resolve the user's Documents folder (#6074)d6c399836— fix(memory): avoid promising undelivered reminder alerts (#6127)6ac3cc1a6— fix(memory): report settings persistence failures (#6081)9ee540d5c— fix(agent): resolve remaining tool paths in chat workspace (#6069)c7077aba1— fix(storage): stop a locked database making GAIA wait 3x its timeout (#6054)65ebf7b54— test(email): drop the prompt assertions against the retired email agent (#6132)8c16e5b0b— fix(ui): make timestamp-tied chat ordering deterministic (#6087)2c1655e78— fix(tui): notify when the terminal UI is outdated (#6141)7cf4d93f0— fix(installer): restore gaia-desktop command on Debian (#6131)9e7ec94d3— fix(ui): let foreground chats preempt background goal runs (#6096)7f8eea186— fix(email): make Outlook unread filters sortable (#6119)e040fb798— test(slack): wait for bridge child to finish exec (#6097)67293725b— fix(ui): keep Undo available after error turns (#6083)8fa713b17— fix(rag): align document summary styles with skill contract (#6057)737d581be— fix(chat): advertise web and media tools only in profiles that register them (#6053)c3f66e28e— feat(email): flagship reads threads and finds mail waiting on you (#6124)ddfe80aeb— refactor(agents): keep one reference agent package, remove the rest (#6123)d4ffc5c77— fix(cli): treat Ctrl+D/Ctrl+C at the agent import prompt as "no" (#6140)d22ec1143— docs(eval-ci): drop the --backend cloud-provider tip (#6137)a7bff67b9— docs(eval): use tags the shipped scenarios carry in the tag-filter example (#6135)d348724c0— docs(gaia): quote the real Access denied message (#6134)16b3029e6— docs(skills): create ~/my-skills before forking a starter skill (#6133)857996a23— docs: replace the retired --bypass-permissions and /bypass with --full-access (#6129)f4c63c46e— docs(spec): cover query fields through contract 2.25 (#6113)7d13eac07— fix(docs): add /docs/ prefix to broken amd-gaia.ai links (#6066)
Full Changelog: v0.25.3...v0.25.4
Installation
Desktop installer (recommended for end users)
Download the installer for your platform from the assets below:
- Windows — the GAIA installer from https://amd-gaia.ai/#install (
gaia-*-win-x64-setup.exe): choose the desktop app, the terminal, or both.gaia-agent-ui-*-x64-setup.exebelow is the desktop app on its own (autostart on by default) - macOS —
gaia-agent-ui-*-arm64.dmg(drag to Applications, Apple Silicon only) - Linux —
gaia-agent-ui-*-amd64.deb(Debian/Ubuntu) orgaia-agent-ui-*-x86_64.AppImage(any distro)
On first launch the app sets up its Python backend automatically (~5–10 minutes for the minimal profile, depends on your internet speed).
See the installation guide for setup details and troubleshooting.
Developer install (Python CLI)
Install GAIA using pip:
pip install amd-gaiaOr using uv:
uv pip install amd-gaiaOr via npm:
npm install -g @amd-gaia/agent-ui