Changelog¶
1.3.0¶
Extension System¶
- New MCP extension: acts as an MCP client towards servers (stdio supported) and exposes their tools as xun tools.
- New Skills extension: supports Agent Skills bundles, discovering them automatically, injecting only a compact catalogue, activating them on demand, and keeping catalogue and tools resynchronised on its own.
- New
extension_settingsconfiguration field: bucketed per extension name, read by an extension throughExtensionContext.settings. - The toolbox gained a disabled-state query,
popfor removal and registration of raw function objects, which is what extensions such as MCP rely on.
Core and Tools¶
- Conversation messages were rebuilt as typed message classes: system prompt, user message and raw message each have their own.
- Structured output became a soft constraint: with tools registered,
response_formatis no longer sent, so tool calls are not suppressed. - Completion retries and back-off were reworked: once the automatic retries run out, agreeing to retry grants a fresh window of attempts.
- The risk-assessment sub-agent got budgets: limited iterations and at most 3 tool calls.
- Added the
sleeptool; the browserevaluateaction gained a timeout. - Added the
/handoffcommand, which packages the current task into a zip hand-off bundle. /configcan now edit a value,/reviseaccepts replacement content,/compactargument parsing was tightened, and/rendervalidates the path and tolerates a missing suffix.- The commands that touch the file system were split out of the default set and are registered only by the interactive entry points.
CLI¶
- The command line moved to prompt_toolkit: history search,
/slash-command completion and@filereference completion; a confirmation prompt interrupts the current input and restores it verbatim. - Fixed garbled output under multi-threading.
Configuration and Prompts¶
AGENTS.mdis loaded as its own section of the system prompt, with a newload_project_instructionsswitch.
Web Service and Frontend¶
- HTML / Markdown preview: relative image paths, multi-file HTML, and renderable files open straight into the preview.
- The preview can edit existing text files and create new ones; nested directories can be created in one step.
- The settings menu shows the build version and commit.
- The display layer was refactored: the event store stands on its own and events are kept apart from rendering; mid-screen control styling, table column widths, prompt cards and the spectrum animation were polished.
Containers and Multi-user¶
- User containers are given the user name through an environment variable.
1.2.1¶
Web Service and Frontend¶
- Added agent running-state events, so the front end can show exactly when an agent starts and stops running.
- Fixed the activity preview flickering while it updates; narrow screens fall back to the working icon, which takes up less space.
- Added a coloured spectrum line to the footer.
1.2.0¶
Extension System¶
- Extension status and a display event:
/extensionsnow reports load status, and an extension whose initialization raises fails visibly instead of leaving only a silent warning. - Version compatibility gate:
@extension_attr(api_min_version=..., api_max_version=...)declares the supported version range; extensions outside it are markedskippedand never applied. - Added
xun_version()to query the running version.
Core and Hooks¶
- Execution hooks can take the run over: setting
takeover_resultreturns that value straight from the hook handler, skipping the execution steps and appending nothing to the conversation history. - Added the
htmlinfo event, rendered as rich text on the web. - Images coming back from tools are size-checked and downscaled automatically when too large; images given as URLs are downloaded before being uploaded.
request_imagegained acropparameter.- Tool call arguments now tolerate a list that was sent as a string, everywhere.
- The default maximum iteration count went from 256 to 512.
Web Service and Frontend¶
- Sessions can be renamed.
- The event stream was reworked: messages stand apart from turns, collapsing was improved, single-agent sessions unfold automatically, and a summary card with an activity preview now shows while a run is in progress.
- Static hosting may now serve the working directory root directly.
- The slash-command cache is refreshed as the session changes.
1.1.1¶
Containers and Multi-user¶
xunc <directory>now really uses the mounted directory as the workspace instead of silently falling back to a temporary one.- Added
xunx pause <user>/xunx resume <user>, which freeze or thaw one user's container without discarding its state. - Fixed a token starting with
-being parsed as an option byxuns; container start-up now passes--token=<token>.
Web Service and Frontend¶
- WebSocket sending was reworked: messages and commands carry a
client_id, and the input box plus its attachments are cleared only once the server'sacceptedacknowledgement arrives; an unacknowledged submission is resent automatically after a reconnect, and the server deduplicates byclient_idso nothing runs twice. - Sizes in the file details are now shown with a matching magnitude (B / KiB / MiB ...).
xunsaccepts--no-initial-agent, which lets you browse the documentation without configuring an LLM.
Extension System¶
- Start-up no longer prints the
Loaded extensions:line.
1.1.0¶
Extension System (New)¶
- Source files under
$XUN_HOME/extensions/were loaded automatically whenever an agent was initialized, in both the package form{name}/setup_extension.pyand the flat form{name}.py; the entry pointsetup_extension(ctx)received anExtensionContext. - Import and initialization failures only warned instead of blocking startup; the feature could be switched off with the
enable_extensionsconfig field. - Added the display-layer hooks
before_display_info/before_display_warning/before_display_error, which could intercept agent output; added the/extensionscommand and in-repo examples.
Core and Tools¶
- Session compaction became tiered: stale tool results were reclaimed first, summarization only ran when the limit was still exceeded, and further rounds could follow after summarization; summary text was no longer mixed into info messages.
- Cancellation events became chained, so cancelling a parent agent cascaded to its sub-agents; the web frontend also honoured cancellation while waiting for input.
- Lifecycle state moved into
agent_state.py; display methods were extracted intoAgentDisplayMixinand brought under type-state constraints. - Sub-agent getter parameters became the dataclass
AgentGetterParam. - The
shelltool was renamed tobash; overwriting an existing destination withcopyrequired confirmation. get_choice/get_confirmreturnedChoiceOutcome(the chosen value plus its origin); auto-confirmation no longer wrote to the command and path allow-lists.- Fixed tool-call parameters drifting out of sync with history after being repaired by JSON fixing.
Configuration and Prompts¶
auto_confirmgained support for theXUN_AUTO_CONFIRMenvironment variable.- The system prompt required reading and following
AGENTS.mdin the working directory first.
Web Service and Frontend¶
- File browsing gained PDF and fullscreen preview, syntax highlighting in the text preview, and inline editing; the list and the details moved to separate panes for faster scanning, and panels became mutually exclusive on narrow screens.
- Uploads accepted whole directories; the result notification listed every file and dismissed itself automatically.
- Added static directory serving at
/srv/, exposing sites in the working directory directly (valid for 1 hour by default). - Event-list loading and transfer were optimized; pending input was kept across sessions; UI strings became bilingual (Chinese/English).
Containers and Multi-user¶
- Container startup copied the host xun home into
/.xun, taking onlyconfig.jsonandextensions. xunc --env/xunx serve --envacceptedNAME=VALUEassignments and wildcard forwarding of host variables.xunxcontainers became persistent:servere-adopted existing containers and kept their sessions after a restart, and containers of deleted users were cleaned up during reconciliation.- Added
xunx upgrade; a runningserverebuilt containers at the next reconciliation.
Documentation¶
- Added bilingual Chinese/English documentation (MkDocs), served by the web service at
/docswith no login required.
1.0 — 2026-09-15¶
First official release: the execution loop with structured output, functions-as-tools with 8 built-in tool groups, display layers (console / web / null) and the web frontend, sub-agent generation and session compaction, session commands and policy confirmation, the xun / xuns / xunc entry points, and the xunx multi-user sharing service.