Releases

Release Notes.

AVL Code ships continuously on the alpha channel. Every build’s new capabilities, improvements and fixes are recorded here, sourced from the desktop release notes.

Last month of builds · earlier history in the reference manual

2026-11-10

v0.11.10-alpha

Improved

  • Live progress in collapsed thinking: text scrolls smoothly left to show the latest content while generating, then returns to an opening summary. Long content fades on the left instead of using an ellipsis; Compact mode still shows only the Thinking label

Fixed

  • Restore reading positions without sliding: returning to a session or loading older messages positions the list directly. Jump to latest and search results still scroll smoothly; when the system’s reduced-motion setting is enabled, clicking “Jump to latest message” goes directly to the latest message

2026-11-05

v0.11.5-alpha

Improved

  • Clearer reasons and actions when a service is busy or rate-limited: the notice says the service is busy and will continue automatically after N seconds, with actions to switch models or stop waiting. Subagent panels and off-screen sessions also show the notice instead of an empty reply. Plan requests-per-minute limits and upstream congestion have distinct explanations; provider account balance or quota shortages are reported separately rather than retried as temporary congestion
  • Wait and retry according to server timing: never retry before the server’s requested delay. Plan requests-per-minute limits receive faster, more frequent retries; upstream congestion receives fewer attempts, with a cumulative wait limit per turn. Rate information from more providers, including built-in AVL-Zero, is recognized; exhausted request or usage allowances wait until the reported recovery time. Quota notices use the server’s period and usage information directly
  • Agents share rate-limit state: the main turn, subagents and parallel tasks wait together when one encounters a limit, rather than repeatedly hitting it independently. Parallel tasks with four or more branches start at staggered times, and the parallel-block header shows how many branches are waiting for service recovery

New

  • Rate-limit and wait statistics: a new rate-limit/retry row shows retry count, rate-limit count and waiting seconds for the latest call. The generation footer also identifies how many seconds were spent waiting

Fixed

  • Consistent notices and controls during automatic retry: after repeated failures, the notice shows the countdown to automatically restart the turn and the attempt number out of three, without a simultaneous red error bar and spinner. After restarting, the old error becomes a previous-failure-retried notice. Retry is disabled while the turn is running or waiting for automatic recovery. Companion forwarding and terminal chat (zTUI) no longer send or save waiting notices as replies

2026-11-03

v0.11.3-alpha

Fixed

  • Models no longer mistaken for stuck while queued or thinking at length: while the server is queuing or the model is thinking for a long time, the request is no longer aborted as unresponsive as long as the provider keeps sending keep-alive signals; the main Agent, sub-agents and context compaction all use the same criterion; context compaction in the terminal chat UI (zTUI) now times out only after a long stretch with no output at all, so long summaries that keep streaming are no longer cut off by a fixed time limit; when output exceeds the cap, the message says whether bytes or lines were exceeded; rate-limit and retry wait notices are no longer taken as the model having started its output, and a compaction summary that times out can still be split into parts and retried normally
  • Compaction no longer adopts half-finished summaries: if summary generation is interrupted unexpectedly, a half-written summary no longer replaces the existing conversation history as the result; it is reported as incomplete instead; when a cancel and a summary finish at the same moment, a fully generated summary is kept and an unfinished one is not adopted
  • More reliable exit and cleanup of background processes: the last chunk of output from background processes such as the Agent (including the turn's final result) is no longer occasionally lost when they exit; when the terminal chat UI (zTUI) exits or aborts, it also ends the background processes it started, such as the Agent and the project workspace; even if a process doesn't respond, shutdown completes within a few seconds instead of hanging
  • Tool errors told apart from project workspace connection status more accurately: errors in a tool's own execution (such as the target site refusing the connection during a web fetch) are no longer misreported as “project workspace temporarily unreachable”, and no longer drop a healthy workspace connection and trigger repeated retries; a genuine break in the project workspace connection is detected and reconnected faster; when the connection keeps dropping and calls can't run normally, it is honestly reported as unreachable; while the project workspace is temporarily unreachable, the Agent's existing tools no longer disappear from the available list and work as usual once the connection recovers
  • Failed auto-compaction no longer interrupts the current turn: when the context is very long and auto-compaction fails, the turn carries on as long as the context still has room, and tool calls just issued are not lost; when it truly can't continue, the turn's record is saved in full first; a compaction summary that times out before it starts producing output is automatically split into several parts, summarized separately and retried

2026-10-31

v0.10.31-alpha

New

  • Adjustable text size: UI text and layout can now be scaled up or down as a whole, in nine steps from 80% to 200% — pick one under “Settings → General → Text size”, or use the shortcuts ⌘/Ctrl + = to enlarge, - to shrink and 0 to reset; the title bar's display menu gains a “Text size” row with plus/minus controls, and clicking the current value resets it; on Windows it follows the system “Text size” setting by default; the position and margins of menus, popovers and the like scale with the text, so they stay attached to their buttons

Fixed

  • Pasting an image no longer adds it twice: pressing Ctrl+V once to paste an image no longer adds two identical images

2026-10-28

v0.10.28-alpha

New

  • Adjustable confirmation wait for Unrestricted mode: “Settings → Security” gains an “Unrestricted mode” section — when you turn on Unrestricted mode, the enable button in the confirmation dialog counts down first and can only be clicked when it reaches zero, to prevent accidental clicks; the countdown length is now configurable, from 3 to 300 seconds, defaulting to 5; you can also turn this wait off, which asks you to confirm again first

Fixed

  • HTML error responses are shown as readable text: when a server or gateway returns a full HTML error page (such as a 504 gateway timeout), the error is no longer rendered in the message as big headings, divider lines and stray tags, but extracted into one readable sentence, including in HTML exports; error responses in all formats (JSON, prefixed text, non-UTF-8 encodings, nested upstream errors and so on) now yield the cause more accurately and are kept to a reasonable length; when copying as Markdown, the error record goes in a code block, so pasting it into another Markdown viewer won't render it as page elements

2026-10-22

v0.10.22-alpha

Improved

  • Notices appear where the problem is instead of flashing by: pop-up notices that used to vanish after a few seconds now show up where the problem occurred, so you can read the cause and deal with it directly — when sending is blocked and the text returns to the input box (e.g. the first message is too long, processing a large message failed, or a slash command can't run), the reason appears below the input box and clears once you edit the text; image-related blocks appear on the thumbnail strip with a “Pick another model” option
  • A notice when a turn stops unexpectedly: when a turn stops on a tool call with no final reply, auto-repair fails repeatedly, or goal progress stalls, a notice appears at the end of the message stream with a direct “Continue” action; automatically switching to a fallback provider is also noted in that turn; when invisible characters are detected in a reply, that reply shows their count and position and offers a “Reveal invisible characters” toggle
  • Results are shown in place: the outcome of a button on an error banner or the missing-API-key confirmation bar appears on that same bar; when pending guidance can't be delivered, resuming an interrupted task fails, or switching provider doesn't succeed, the reason is written on the corresponding row and you can try again; a hook's execution status appears in the call row in progress
  • Fewer repeated notices: the session you're viewing no longer pops up notices for auto-compaction starting / finishing or for excluding / including context (they're already visible in the message stream), though these still appear when it happens in other sessions; during generation, “Edit” and “Delete” in the message menu are greyed out rather than telling you they're unavailable only after you click

Fixed

  • UI display details: notices below the input box no longer have their last line covered by the bottom status bar; the “Switch & retry” button on the fallback-provider confirmation bar now uses the brand color instead of hard-to-read white text on a light background

2026-10-21

v0.10.21-alpha

Fixed

  • Unavailable models are reported in the message stream with ways to fix it: when the selected model is unavailable (disabled, retired, or its provider is disabled), “Continue”, “Restart from here”, “Retry”, “Divine inspiration” and failed sends all show an error explanation and suggestions in the message stream, instead of only a toast that vanishes after a few seconds, and no longer duplicate the error block; below the explanation are “Pick another model”, “Provider settings”, “Routing” and “Retry” buttons that take you straight to the fix, and failures attached to an existing reply also show the specific cause
  • No more empty replies left behind after asking for an end-of-turn status: a reply that only supplies the status is now hidden right away, rather than first appearing as an empty reply with only thinking content that disappeared only after a restart; a reply that only supplies the status with nothing else no longer shows up as an empty “(no text reply)”
  • End-of-turn status markers no longer appear in replies: when the agent writes the status marker in the middle of a reply, that line is no longer shown in the UI or forwarded to the other side over Messaging; the same content inside a code block is kept as usual

2026-10-20

v0.10.20-alpha

New

  • The agent reports an end-of-turn status: at the end of each turn the agent states where the turn stands (done, continuing, paused, waiting for your reply, etc.), and the app uses that to decide whether to auto-continue rather than guessing from the reply text; if no status is reported, it asks once for one; “Settings → Agent → Reflection” gains an “Ask for status when missing” switch, on by default — when off, it only records and doesn't ask; the stats panel shows the status report rate and number of follow-up asks per model
  • Messaging messages and Routines join the running turn: while a session is running, messages arriving over Messaging and Routines that come due are inserted into the current turn, no longer interrupting the turn in progress on the desktop; the other side first receives a “busy, will send you the reply when it's ready” message, then the final reply when the turn ends
  • Approve tool calls over Messaging: when a turn started over Messaging needs tool-call approval, an approval card is also pushed to the other side — reply /approve or /deny to handle it, and whichever answers first between that and the desktop dialog wins; for a turn started in a group, the card goes to the initiator's own direct chat; cards are only sent to paired conversations and only the person who started the turn can answer, and commands and parameters on the card have passwords, tokens and other secrets masked while keeping the command's structure, so you can see what you're approving; when a turn needs you to fill in a form, the Messaging side is notified too
  • Suspected thinking loops are stopped automatically: when the model keeps repeating the same few sentences while thinking, it is stopped promptly with a notice, instead of pointlessly filling the whole output and taking over ten minutes
  • Notice for unsaved SSH credentials: if “Remember password” wasn't ticked when connecting to an SSH workspace, the credentials are cleared when the app starts or exits; a notice now appears in that workspace's sessions afterwards, and clicking “Add credentials” lets you enter them again, so you don't unknowingly lose the file and command tools

Security

  • Stricter read-only modes: in Plan and Assess modes, every tool call that would modify content is refused, and sub-agents dispatched from these modes are read-only too; external MCP tools that don't declare themselves read-only ask for your approval before each run; Plan mode can only be exited by you clicking “Approve and exit plan”, after which you return to the mode you were in before
  • Consent comes from you: operations that need your consent (such as submitting a file to VirusTotal or running a command not on the allowlist) are now confirmed by you in the approval dialog, and the model can't consent on your behalf; in read-only modes the approval dialog states why
  • Tighter access and tool policy: private-network access rules are now the same everywhere, and web fetching can no longer be bypassed through DNS rebinding; Git worktrees can only be created inside the workspace; parameter names that differ only by case can no longer bypass tool policy
  • Safer session import and export: importing a .zsession package now validates session, workspace and sub-agent identifiers and file paths; overwrite imports no longer delete other sessions' files by mistake, and imported sub-agents can't borrow an authorized session's Unrestricted mode; credential masking on session export no longer breaks the record format or misses credentials inside quotes

Fixed

  • One session in several workspaces no longer interferes with itself: when the same session is imported into two workspaces, stopping, approvals, Unrestricted mode, pending guidance, suggested tasks, attachments and so on are tracked separately per workspace, so actions in one no longer affect the other; if the session is running in the other workspace, you're told right away and it won't start concurrently; Unrestricted mode applies only to the copy it was turned on for, while local mode still applies to all copies, as the UI explains
  • Wrapping up stops and approvals: stopping a turn that's waiting on tool approval now wraps up correctly, so Messaging and Routines no longer wait 10 minutes for nothing; turns that were stopped or never started are no longer reported as an “incomplete answer”; when an approval is voided, the confirmation dialog closes itself and explains why, and approve / cancel in the desktop dialog applies only to the approval currently shown
  • Messaging send and receive: messages to the same peer are sent in order, and a backlog for one peer doesn't slow down others; messages not yet sent when the app exits are saved in order and sent once the channel recovers; a peer sending /stop only stops its own turn, not a turn just started on the desktop; consecutive duplicate “paused” receipts are reduced to one
  • Runtime and tools: if the workspace's runtime isn't up when you send a message, it's started automatically with each step's progress shown, instead of waiting 45 seconds and then telling you to check the network, and it restarts automatically if it exits unexpectedly; the decompile tool no longer looks stuck — stopping cancels the generation in progress immediately, output is capped, and a timeout hands back what's been generated so far; “Keep after switching” no longer reverts a model choice you just changed; memory distillation no longer starts when the app is exiting, and an SSO sign-in in progress at exit now tells the browser what actually happened

2026-10-16

v0.10.16-alpha

Improved

  • English and Traditional Chinese UIs now localize everything: after switching the UI to English or Traditional Chinese, notices and errors that previously still appeared in Simplified Chinese now follow the UI language — covering in-run notices (rate-limit waits, the step limit, repetition-loop stops, the “running / limit” timer, code-index building and vulnerability-database sync progress, language-server install progress), fix suggestions for model errors, retry prompts and auto-compaction failure notes, errors and descriptions across every settings module (Providers, MCP, plugins and skills, Hooks, backup and storage, security), notices for sessions, export/import, sub-agents, Routines, memory, upgrades, startup diagnostics and sign-in, receipts and notices Messaging sends back to the other side, errors for SSH connections and remote directories, and the terminal UI (TUI) status bar, command echo, approval prompts and errors (which now switch instantly with the UI language set in the desktop app); the Simplified Chinese UI text is unchanged, and command names, shortcuts and parameter syntax are not translated
  • Consistent wording across the three UI languages: the Simplified Chinese UI now consistently uses names such as 服务提供方 (Providers), 例行程序 (Routines) and 有如神助 (Divine inspiration); the Traditional Chinese UI standardizes on terms such as 會話, 服務提供方 and 例行程序 and switches to wording common in Taiwan; feature names and title casing in the English UI have been made consistent too

Fixed

  • Several notices displayed incorrectly: the path-validation failure notice when switching or stopping a workspace no longer shows stray placeholders; storage cleanup results no longer show the checkmark and byte count twice; the hover tooltip on a tab's close button no longer shows an internal identifier
  • Cancelling on purpose is no longer reported as an error: cancelling Save HTML, exporting a run trace, or sign-in no longer pops up errors like “export failed” or “user cancelled”
  • The “One-click fix” button no longer shows up by mistake: it appears only when the built-in AVL-Zero is missing an API key, not when a custom provider is missing one
  • Settings paths corrected: several settings paths that pointed to locations that don't exist have been fixed — e.g. the context soft-threshold notice now points to “Settings → Agent → Context”, and a missing API key points to “Settings → Models → Providers”

2026-10-15

v0.10.15-alpha

New

  • In-session Routines: the agent can set timed prompts (Routines) inside a session, with schedules such as “in N minutes”, “every N minutes”, “once at a set time”, plus hourly, daily, weekdays and weekly; when one fires, the prompt is delivered to the session that set it — inserted directly if the session is running, or optionally starting a new turn if it's idle; the agent cancels it itself once the task is done, and clicking Stop cancels it too; Routines survive an app restart, and missed times are not made up
  • Routines bar: a new Routines bar above the input box lets you view, edit, pause, delete or end them; each delivery appears in the message stream as a compact single line marked as “not a new message from the user”; a Routine pauses automatically after its turns fail 3 times in a row, and each session and each workspace has caps on the number of Routines and runs

Fixed

  • File paths in messages open and locate more reliably: paths in messages can be previewed, and “Show in folder” now locates them correctly too — previously relative paths written by the agent, files attached to the session, and files in recently used but unopened workspaces could be previewed but not located; files in remote (SSH) workspaces no longer offer a “Show in folder” that could never work, and paths attached in an SSH workspace are no longer mistaken for local files of the same name; when preview, save-as or locating fails, the notice now includes the specific reason
  • More accurate path and link detection: relative links in a previewed Markdown document now resolve against that document's own directory, #anchors, ?params and percent-encoding in links are handled correctly, and forms like #L10 jump to the line; paths in workspace-level shared attachments can be clicked to open, file:line forms like main.go:42 are clickable, while addresses like example.com:8080 are no longer mistaken for files; when the attachment list loads after the messages, or attachments are added or removed later, paths in messages already shown update whether they're clickable
  • System dialogs follow the UI language: the titles and file-type names of system dialogs for export, import, choosing a workspace, backup and restore now follow the UI language, so the English UI no longer pops up Chinese titles; related error messages are localized as well
  • Landi N2.7's thinking no longer leaks into the reply body: when using Landi N2.7 on the built-in AVL-Zero with effort left at “High (default)”, the thinking — along with its end marker — no longer shows up in the reply body; previously the default level didn't tell the server the effort, so thinking was displayed and saved as body text and carried into the next turn; the default level now explicitly sends “High”, and the occasional case still missing an effort level is split into thinking and body automatically; thinking returned by some services in non-streaming mode, which used to be lost entirely, now displays correctly
  • Replies that stop mid-sentence are resumed automatically: when a model reply unexpectedly stops mid-sentence without carrying on, a resume is nudged automatically once, so you no longer have to ask “why did you stop”; cases where the model ends with “next I'll…” but doesn't act are also detected and resumed more accurately; normal wrap-ups, waiting for your reply, or asking you a question are unaffected

2026-10-14

v0.10.14-alpha

New

  • Marked messages: the message context menu gains “Mark message / Remove mark”, and marked messages show a bookmark badge; when anything is marked, a “Marked N” bar appears above the input box (in the right sidebar on wide screens) listing every marked message in order — click one to jump to it (if it sits further back and isn't loaded yet, or inside a collapsed tool group, it is loaded and expanded automatically), or copy them as Markdown, save them as HTML or export them as a .zsession file, and remove marks one by one or clear them all at once; on export, replies with tool calls are exported together with their tool results, and marks are kept when you copy a session or branch from a message
  • Pending guidance can be “Prioritize”d or handled now: each item in the pending guidance queue gains “Prioritize” and “Handle now” buttons — “Prioritize” delivers the guidance to the agent as soon as the current step finishes (after this batch of tool results, before the next model request) instead of waiting for the whole turn to end; “Handle now” cuts off what the model is currently outputting (what's already been output is kept, and unfinished tool calls are not run) and handles that item right away, without interrupting tools already running; items already delivered can't be withdrawn, “Clear all” only clears items not yet sent, and items that couldn't be delivered (e.g. the session isn't running) are kept and sent as a new turn once this turn ends
  • “Auto-repair” when the selected model is unavailable: the model routing policy gains an “Auto-repair” option — when the selected model's provider doesn't exist, is disabled, or doesn't have that model enabled, choose “Off” (report an error), “Ask before switching” (show a confirmation bar) or “Switch automatically” (use another provider that has a model of the same name enabled), and optionally tick “Keep after switching” to keep the new choice; where no confirmation can be shown (Messaging, scheduled tasks, hooks, subtasks, memory distillation, resuming interrupted tasks, etc.) it switches or reports an error according to the policy, and tells you the scenario, model, reason and policy applied; in local mode it never switches to an external service
  • Which model each turn uses is now decided by a single rule: the UI, background calls and the terminal UI (TUI) all agree; the default model a session inherits now follows changes to the current default-model setting

Improved

  • Copying and saving marked messages only exports messages with body text: “Copy as Markdown” and “Save HTML” now export only messages that have body text — messages containing only tool calls, thinking, or attached images are skipped, so raw tool output and empty paragraphs no longer appear; .zsession export is unaffected; when none of the marked messages has body text, both buttons are greyed out with a tooltip explaining why, distinguishing “none of the marked messages has body text” from “the marked messages are no longer in the session”
  • Repetition detection covers more patterns: the model cycling back and forth between a few sentences, or flooding the output with very short sentences like “OK.” or “Executing.”, is now also stopped promptly

Fixed

  • Live guidance is no longer misqueued, delayed or lost: a new message sent while the session is idle is no longer wrongly put into the pending guidance queue, and other sessions compacting or sending no longer block the current session from sending directly; queued guidance is delivered promptly once the session goes idle instead of a full turn late, and if the turn fails to start (stopped manually, sending cancelled or failed) the guidance goes back to the input box instead of being lost; a session that finished while you were in another session now delivers its queued guidance when you switch back, instead of silently clearing it
  • Turns the app starts on its own use the session's chosen model: turns started automatically by the app — resuming after auto-compaction, “continue” nudges, todo review and so on — now use the model you picked for that session instead of mistakenly using another provider's model (which could fail with “connection refused” when that service wasn't running); in “Global” mode the current model choice is also saved to the configuration
  • A failed compaction no longer writes the error in as the summary: if the summary request fails during auto-compaction, the error message is no longer written into the session as the summary (replacing large chunks of history) — the compaction is treated as failed; likewise, when similar requests such as auto-renaming or intent restatement fail, the error message is no longer used as the result
  • Rate-limit waits are no longer treated as errors: the notice shown while waiting out a rate limit is no longer displayed as an error, written into the session record, or mistaken for the end of the turn, and clicking Stop while waiting shows “aborted”; context compaction in the terminal UI (TUI) no longer fails because of a rate-limit wait; when the step limit is reached or a repetition loop is stopped, the notices now appear in the session record in the order they actually happened and stay in place after the session is reopened
  • The Linux installer no longer shows a black screen on some systems: on Kali and similar systems it no longer goes black — when WebKit is already installed (e.g. Kali / Debian / Ubuntu) the system's own components are used and software rendering is no longer forced; when it isn't (e.g. Kylin V11), the components bundled in the installer are used automatically with compatibility rendering enabled, so it works out of the box even offline

2026-10-10

v0.10.10-alpha

New

  • Long-running tools show an elapsed-time counter: once a tool has been running for more than 60 seconds, its call row shows the elapsed time inline and ticks every second (for example fs.exec running a long command), together with that tool's execution limit — e.g. “running 1m05s / limit 2m00s” — so you can see at a glance how far along it is

Fixed

  • Long tasks are no longer abandoned early by the fallback timeout: as long as a tool keeps reporting progress, a long task is not cut off by a fixed time limit — previously the upper-layer fallback timeout fired before the tool's own execution limit, so long commands such as fs.exec (timeout=900) were abandoned at the 10-minute mark; the check is now an idle (no-feedback) timeout, so long tasks and MCP calls that keep reporting are no longer cancelled prematurely

2026-10-09

v0.10.9-alpha

New

  • Adjust thinking effort right from the input area: a new slider to the right of the model name in the input box sets the model's thinking effort directly — step by step from “Off” through “Low / High / Extra high / Max”, defaulting to “High”, with a battery icon showing how much effort is being put in; more thinking handles complex problems more carefully, at the cost of more time and usage
  • The effort slider's focus ring now appears only during keyboard use; clicking or dragging with the mouse no longer leaves a highlight ring

Fixed

  • Dropdown menus no longer end up off-screen after the window is resized: the model / mode / “+” menus now correctly follow their trigger button while open — previously an open menu stayed where it was after a resize, or even ended up off-screen; this is fixed and the menu always stays attached to its button

2026-10-08

v0.10.8-alpha

New

  • Tool progress is shown live in the call row: long-running tools (such as sec.decompile waiting on model output) now show live progress inline in the call row — the amount generated so far, the rate, and a completion percentage and estimated time remaining based on history; progress info is shown first (percentage / time remaining lead, and the text is never squeezed)
  • Nicer Mermaid diagrams with a “diagram / source” toggle: Mermaid diagrams render more attractively and can be switched between “diagram” and “source” views; three themes — general, black-and-white and journal color — suit different viewing and printing needs
  • Todo items can be deleted by hand: an individual item in the todo bar can now be deleted manually, and it does not come back when the session is reopened; the delete button is also styled consistently with the inline actions on other status bars

Fixed

  • Completed items in the todo panel no longer show a delete button: completed entries in the todo panel no longer show a delete button, avoiding accidental actions
  • Content is no longer clipped when you narrow the window horizontally: the conversation body and input area now shrink along with the window — previously they didn't, so content on the right got cut off; this is fixed and content stays fully visible as the window narrows