# AI Game Developer release notes

What changed in every release of the AI Game Developer desktop app — new features, improvements and fixes, version by version. This is the full changelog, newest release first.

_Last updated: 2026-10-24_

## v0.25.10 — Tripo can now build a 3D model from two to four project views

Released 2026-10-24. Notes: https://ai-game.dev/releases/0.25.10 · Markdown: https://ai-game.dev/docs-md/releases-0.25.10.md

The Tripo integration adds a multiview generation tool: give it a front view plus any of the left, back or right views and it returns a single 3D model. Approval and cost handling work the same as every other Tripo operation.

### Featured

#### 3D models from multiple project views

You can now generate a 3D model from two to four views of the same subject, supplying a front image plus any combination of left, back and right images. Each view is uploaded privately and in parallel, and duplicate files are rejected so every angle is genuinely different. The usual paid-operation approval card and allowance still apply before anything is charged. (#1060)

## v0.25.9 — Expired sign-ins now show a clear sign-in screen instead of failing quietly

Released 2026-10-24. Notes: https://ai-game.dev/releases/0.25.9 · Markdown: https://ai-game.dev/docs-md/releases-0.25.9.md

When a sign-in can no longer be refreshed, the desktop app now shows a visible sign-in screen and the CLI a login notice, while temporary network trouble keeps you signed in. The Intel Mac build can start its agent again, and the BRUTAL engine arrives as early support.

### Featured

#### Early BRUTAL engine support

BRUTAL projects are now recognised in the desktop app and CLI, with the MCP plugin installed into the running game process, project creation, extension installation, and the same tool-running flow used for other engines. This is early support for a.NET engine that has no editor. (#941)

#### Recovery when a sign-in can no longer be refreshed

If a session can no longer be renewed, the desktop app now moves to a visible sign-in screen instead of looking signed in while engine connections keep failing, and the CLI shows a login notice. Temporary failures keep you signed in, and simultaneous refreshes now share a single request instead of fighting each other. (#1050)

### Improved

#### Godot installs follow the monorepo CLI

Godot installation now consumes the published 0.27.0 CLI from the monorepo catalogue, including the offline addon fallback, while extensions keep resolving their own latest or explicitly requested versions. (#903)

#### Mobile account and device settings prototype

Prototype iOS and Android apps can sign in through the same account flow, register a device, list your own computers and send connection requests, and an interrupted first registration can be retried without signing in again. Chat in these prototypes is simulated; this is development work, not a shipped mobile app. (#917)

#### Project skills opt out explicitly

A project skill is now hidden from AI Game Dev only when it explicitly opts out through its own metadata. Provenance and tool-name collisions no longer hide skills, including in the picker and in manually typed skill commands. (#1047)

#### Sign-in requests say which client they came from

Desktop and CLI sign-ins now identify which surface they came from, so first sign-in analytics can tell the two apart. How signing in works for you is unchanged. (#1056)

### Fixed

#### Plans card survives a closed chat

When a trial runs out while a chat is closed, the plans card is now still shown after you reopen the chat or restart the app. Leaving the plan checkout page open past its time limit now gives accurate wording instead of a card-verification message, and upstream rate-limit responses are handled correctly. (#932)

#### Agent starts on Intel Macs

The agent no longer fails to start in the Intel (x64) macOS build, which previously shipped without the binary it needed. A plan checkout that is already open elsewhere now says so plainly, and a subscription-required response is reported as a warning rather than an error. (#1004)

### Under the hood

- chore(ci): re-vendor chain_feed.py v7 (node rql) (#883)
- chore: update Claude Agent SDK to 0.3.301 (#914)
- chore: consume Unity MCP monorepo CLI 1.1.0 (#937)
- chore(contracts): refresh catalog contract (DeepSeek V4.1 Flash intelligence 3 -> 5) (#1002)
- test: resync the server catalog contract (smart routing stage 5 + Azure retirement) (#1026)

## v0.25.8 — Engine tool calls stay pinned to the project you connected

Released 2026-10-16. Notes: https://ai-game.dev/releases/0.25.8 · Markdown: https://ai-game.dev/docs-md/releases-0.25.8.md

Desktop engine tool calls keep using the project you connected, even after a tool returns an error, and a missing tool no longer redirects later work to a different project. This release also brings queued messages, code-review finding cards and further prototype mobile work.

### Featured

#### Review finding cards, dollar skills and argument hints

Code-review results now render as finding cards on desktop and as bordered cards in the CLI, showing the verdict, file and line, category, summary and failure scenario, with a clear empty state when nothing was found. The CLI gained the dollar-sign skills trigger with the same picker rules as desktop, both surfaces show a skill's argument hint while you type, and the SDK context breakdown shows where the context window goes. Four built-in agent tools, including Workflow and DesignSync, are turned off for every session. (#838)

#### Queue a message while the agent is working

Messages sent during a running turn wait in a queued drawer above the composer, where you can send one immediately or pull it back into the composer to edit, and the primary button stays Send rather than Stop whenever there is text or an attachment. Stop now cancels what the running turn holds and restores queued text to the composer, so a withdrawn message cannot still run. Design and Workflow built-ins are switched off for the model and the slash menu, and audio previews gained a remembered loop toggle. (#847)

#### Engine tool calls stay with the connected project

A missing tool or a dropped project could return an error on a project-pinned engine route and silently move later calls to an unpinned route, where they might reach a different project. Dispatch now keeps the resolved project for every call and returns the original error, and REST calls carry the current discovery session so engine-side selection stays with the session you are in and a reconnect is picked up by the next call. This pairs with the matching server update and requires no engine plugin or engine CLI upgrade; settings and download metadata writes on Windows also retry a little longer when another application briefly holds a file open. (#866)

### New

#### Native iOS chat prototype

A SwiftUI prototype for iPhone and iPad explores native session navigation, chat, local history, drafts and an outbox, image attachments, and simulated streaming and offline states. It is prototype source only: it makes no backend or AI calls, so this release does not include an installable iOS app. (#827)

#### Prototype localization and floating composer

The iOS prototype gained a floating chat composer with follow, pause and resume controls, and a native string catalog covering 70 languages with English fallback. Translations are an initial machine-assisted draft that still needs native-speaker review. (#830)

#### iPad workspace and branding for the iOS prototype

The iOS prototype now carries the AI Game Dev name and the desktop light and dark artwork, with an adaptive brand mark shown in an empty workspace. On iPad the session sidebar stays alongside chat, supports rotation and the native sidebar toggle, and Settings and Session Info open as form sheets. (#836)

#### Native Android prototype

A Kotlin and Compose prototype for Android phones and tablets mirrors the iOS work: adaptive session navigation, a floating composer, scroll following, image attachments, and local history, drafts and an outbox in a transactional database. Like the iOS prototype it is source only, with no backend, authentication or network access, and this release does not publish an installable Android app. (#841)

### Improved

#### Tripo packages work on the CLI host

Paid operations that previously worked only on desktop now run in the CLI as well, scoped to the CLI's open project and session with the same admission checks, and background tasks are served there too. The paid-job recovery journal is shared between desktop and CLI under a cross-process lock, and capabilities served by an agent provider are no longer labelled as prototypes. (#861)

### Fixed

#### Desktop session closure during package state reads

Closing a desktop session while a package state read was still in flight could surface a host error instead of a clean result. Those reads now report the package state as unavailable once the session has gone, while genuine host failures are still reported as before. (#814)

#### Compact iOS composer layout

The compact composer in the iOS prototype is now vertically centered with tighter padding, dropping its base height from 70 to 52 points, and Send and Stop use the native circular button shape. Minimum touch target sizes and expanded multiline editing are unchanged. (#832)

#### A package without tool state no longer breaks a CLI turn

One default package could make every CLI message fail with a session tool provider error, because a missing tool-state view escaped into the send path. A package with no registered tool state is now simply not offered, and a provider that fails to prepare is skipped with a warning instead of taking the whole turn down. (#857)

#### Download and spend confirms no longer answer themselves

A confirmation prompt could take the first matching key found anywhere in the text you were typing, so an ordinary sentence could start a multi-gigabyte model download or allow a spend. A choice now counts only as a deliberate, isolated key press that is not followed by further typing, while Escape still cancels instantly. (#867)

#### Scoped release trains accept published engine dependencies

Scoped engine-only release trains can now use published server and plugin releases for their tests instead of rejecting them before the tests run. The pipeline verifies checksums and resolved versions before proceeding. (#885)

#### Proxy conversations compact before context runs out

Proxy sessions with large tool results now compact earlier, so the conversation can continue instead of hitting a context limit. The change keeps the server's model window information and existing output limits. (#889)

#### Released test fixtures download without runner credentials

Test runners on fresh Windows machines can download published fixture archives anonymously over HTTPS, with checksum verification still required before extraction. This removes a credential requirement that blocked the release train. (#890)

#### Model storage moves wait for journal writes to finish

Pausing downloads before relocating model storage now waits for the final journal write to complete, so the copied journal matches the files being moved. The move still verifies file sizes and blob hashes. (#892)

#### Unreal extensions browse and install from the online component index

Unreal extension browsing now uses the CLI's validated online component index and delegates install and version policy to the CLI. Historic versions still work, and newer installed copies are preserved. (#895)

### Under the hood

- refactor: centralize package account snapshot caching (#871)
- test(train): verify future engine CLI against locked identity (#887)

## v0.25.7 — Trial allowance is now shown in Account settings

Released 2026-10-14. Notes: https://ai-game.dev/releases/0.25.7 · Markdown: https://ai-game.dev/docs-md/releases-0.25.7.md

Account settings displays your active trial usage as percentages instead of hiding the limit, along with the trial end date and a reminder that it does not renew on its own.

### Fixed

#### Trial usage in Account settings

Account settings now shows how much of your trial allowance is used, how much is still available, and how much is reserved by requests that have not finished yet. The trial end date is shown as well, with a note that the trial does not renew automatically. Previously the usage limit could be missing from the screen entirely; the panel now falls back cleanly when the usage snapshot is unavailable and restores itself on refresh. (#811)

## v0.25.6 — Free trial start is easier to find and no longer leaves the chat stuck waiting

Released 2026-10-13. Notes: https://ai-game.dev/releases/0.25.6 · Markdown: https://ai-game.dev/docs-md/releases-0.25.6.md

The chat panel's free-trial button is now larger and bolder, and once the server confirms trial access the conversation offers Continue instead of waiting on checkout to come back.

### Featured

#### FREE START button and a chat that recovers after trial activation

The free-trial action in the chat panel is now a larger, bolder FREE START button, and the panel still makes clear that a card is required and that nothing renews automatically. After the server confirms trial access, the chat offers Continue right away instead of sitting on the card-verification wait while checkout returns or other account information loads. Your original message stays in the conversation and is sent only when you choose Continue, so nothing goes out on its own. (#809)

## v0.25.5 — Extensions now work in open chats, Packages fills the window with avatars

Released 2026-10-13. Notes: https://ai-game.dev/releases/0.25.5 · Markdown: https://ai-game.dev/docs-md/releases-0.25.5.md

Claude Plugins and MCP servers now apply to the chat you already have open. Packages expands to a full-window workspace with avatars, and usage is shown only as percentages.

### Featured

#### Claude Plugins and MCP apply to open chats

Installing a Claude plugin or adding an MCP server now refreshes the composer command list and applies the new tools to the next message in the same session, without restarting the chat. Queued messages keep their order and history, and disabling an extension removes it on the next turn. (#804)

#### Full-window Packages with avatars and shared scrollbar fade

Packages now fills the app below the titlebar with resizable workbench panels, and packages can show PNG, SVG, or short text avatars, including official artwork for first-party packages. A shared scrollbar fade spans chat, dock rails, and package webviews, and a configurable contrast audit checks all six themes. (#805)

### Fixed

#### Desktop MCP and plugin connections work through Settings

Testing an MCP server now performs a real handshake and tool discovery, and installing a plugin refreshes the configuration for new chats. Settings supports direct GitHub installation and pasted folder paths, explains marketplaces, searches their catalogs, and marks installed entries. Saving an MCP server shows progress and prevents a concurrent connection test. (#802)

#### Usage and allowances displayed only as percentages

The account usage panel shows consumed usage as a percentage and the allowance as 100%, along with the reset date and progress bar. Monetary spending, balance, and ceiling rows are removed from the profile menu, session cost from the model card, and currency amounts from usage history, while receipts are preserved. (#803)

#### Free AI activation shows before model routing

A new Free account without a billing address now sees the card-verification offer instead of a region error, and a fresh install can select a default model. Cached hints are ignored, and the panel clears after activation. (#806)

#### Package avatars keep their square frame

Package images no longer stretch into rectangles when a wide or tall picture is used. Avatars now stay square in both the package list and the detail panel while the image itself keeps its original proportions. (#807)

## v0.25.4 — Settings fills the workspace and Account shows full billing detail

Released 2026-10-13. Notes: https://ai-game.dev/releases/0.25.4 · Markdown: https://ai-game.dev/docs-md/releases-0.25.4.md

Settings has been rebuilt as a full-window, grouped experience with MCP servers and plugins in one place, and Account now reports your plan, allowance and payment history in detail.

### Featured

#### Settings fills the workspace, with Account billing in one place

Settings now opens as a full window instead of a narrow scrolling modal, with grouped sections in a side navigation, more compact controls, and MCP server and plugin management in the same window. Voice settings place the active language and language selection side by side above a wider vocabulary editor, and permission summaries are shorter while full explanations stay available on hover. Account shows canonical Indie and Studio plan labels, allowance usage and its percentage, reset dates, renewal information when one is scheduled, and your recorded subscription payments, top-ups and refunds. (#797)

#### New application icons and shared branding

The application, startup and sign-in screens now use the new Vertex Top Light icon, which stays legible in both light and dark themes. Platform application icons were refreshed to match. (#798)

### Fixed

#### Blur restored on the composer, session tools and account card

Packaged builds of the previous release lost the frosted background behind the message composer, the session tools and the account card. Those surfaces now render with the intended soft blur in production builds again, matching what you see while developing. (#795)

#### Voice dictation can request microphone access on macOS

Packaged macOS builds can now ask for microphone access when dictation needs it, and the system prompt explains that the microphone is used for dictation. Whether the prompt appears, and what access your machine already granted, still depends on macOS. (#796)

#### Top-ups with missing charge details stay visible

Historical top-ups whose original card charge is no longer recorded now appear in Account with an amount-unavailable note, instead of being hidden or shown as zero. Charges that are recorded are still listed exactly as they were made. (#799)

#### Refunds and chargebacks appear in Account history

Account history now lists refunds and chargebacks as funds returned to you, and dispute reversals as positive amounts. When a recorded amount is missing, the row shows an amount-unavailable note rather than being dropped from the page. (#800)

## v0.25.3 — Bundled engine tools refreshed for Unity, Godot and Unreal

Released 2026-10-13. Notes: https://ai-game.dev/releases/0.25.3 · Markdown: https://ai-game.dev/docs-md/releases-0.25.3.md

The engine command-line tools shipped with the app are updated to Unity MCP 0.93.4, Godot MCP 0.26.1 and Unreal MCP 0.20.2, all built against the shared MCP server 9.2.11 and MCP-Plugin 8.7.1. The shared server now tells a cancelled request apart from a real timeout, so connection problems are easier to read when something goes wrong.

## v0.25.2 — Chat and engine connections retry and recover on their own

Released 2026-10-12. Notes: https://ai-game.dev/releases/0.25.2 · Markdown: https://ai-game.dev/docs-md/releases-0.25.2.md

Transient connection failures in desktop chat and in the engine tool connection now retry in the background instead of surfacing raw errors. Release builds also check that their default packages exist before shipping.

### Featured

#### Engine tool connection keeps recovering

While a session stays open, the app keeps retrying the engine connection after temporary failures instead of giving up on it. If a tool-list refresh or a reconnect fails, the app recovers the tool list by itself without waiting for another notification from the engine, and the previous list stays usable in the meantime. This helps sessions survive an editor disconnecting during Play Mode changes or compilation. (#792)

### Fixed

#### Chat recovers short connection failures

Brief certificate, DNS and connection failures no longer dump raw SDK error text into the chat. The app retries twice with a short backoff, and only if those attempts also fail does it show one friendly connection message. Recovery resumes the interrupted turn without resending earlier prompts, and any queued text that was never sent returns to the composer. (#789)

#### Release check for unpublished default packages

Starting a release now verifies that every default package version is actually published, and stops with a list of the missing ones if any are not. This keeps a build from shipping with default packages that cannot be resolved when a user installs it. (#790)

#### No image approval errors from unloaded panes

Restored or peeked transcript panes that have no live session no longer produce repeated image approval errors. They now simply report that no requests are pending, while real approval decisions and other windows keep the same refusals as before. (#791)

## v0.25.1 — Smoother project creation, live tool toggles and fewer model reloads

Released 2026-10-12. Notes: https://ai-game.dev/releases/0.25.1 · Markdown: https://ai-game.dev/docs-md/releases-0.25.1.md

The create-project dialog now guides engine-specific naming, session tools apply on your next message, and the generation queue keeps a model loaded while it still has work.

### Improved

#### Fewer model reloads in the generation queue

A model that still has queued images or clips keeps running them instead of being swapped out early. The slot only changes once its queue is empty, or when another model's job has waited five minutes; the job that is running is never interrupted, and the next turn goes to the model that has waited longest. (#779)

### Fixed

#### Corrected default package and a stricter publish check

A default package that had been published with inconsistent line endings is replaced by a corrected release, and new projects pin that version. Publishing now refuses a working copy whose files differ from the committed version, so a package can no longer ship with bytes nobody reviewed. (#781)

#### Project creation checks names while you type

Invalid characters are filtered as you type or paste, and the naming rules for the selected engine are shown alongside the field. The project path is editable with a working Browse button, and the engine choices are larger and carry their logos. Names that Unreal or Windows refuse, including reserved device names, are caught before you press Create. (#782)

#### Tool changes apply to your next message

Enabling a tool now includes it in the next message you send, even if that message is queued while a response is still being written, and the context panel reflects the updated tool list. Disabling a tool removes it on the following turn. (#784)

#### Toolbar blur, matte Knowledge nodes and a vector navigation arrow

Toolbar chips and the Tools button get the same frosted glass surface as the composer in both expanded and collapsed states. Knowledge Base nodes return to the matte disc look with a shorter update ring, and message navigation uses a drawn arrow instead of a text glyph. (#783)

### Under the hood

- chore(packages): new image + video models require app 0.25.0 at first publish (#780)
- chore(deps): bump engine CLIs and remove the Godot NuGet re-pin stopgap (#786)
- chore(deps): unreal-mcp-cli 0.20.1 — drop the pnpm patch and the Unreal source shim (#787)
- fix(test): write guard no longer throws for a path realpath cannot open (Windows teardown flake) (#785)

## v0.25.0 — Generate images and short clips locally, and keep engine plugins current

Released 2026-10-12. Notes: https://ai-game.dev/releases/0.25.0 · Markdown: https://ai-game.dev/docs-md/releases-0.25.0.md

The agent can now generate and edit images on your own GPU, produce short video clips, and install or update Unity, Godot and Unreal plugins against their newest released versions.

### Featured

#### Local image generation on your own GPU

The agent generates images locally with stable-diffusion.cpp, running on your own hardware. Model downloads happen only after you approve them, the model storage folder can be moved, and finished images land in your project and are imported into Unity, Godot and Unreal. You can drive it from the Desktop image-models panel or the CLI /images command. (#759)

#### More image models, image editing and local video

Adds Qwen-Image and the SDXL family, image editing from reference images, and LoRA support. A new Video tool, off by default, generates short clips locally with LTX-2.5 or Wan 2.2. (#776)

#### Engine plugins install from the newest release

Installing or checking a Unity, Godot or Unreal plugin now targets the newest released plugin version instead of one fixed when the app was built. The built-in version is used only when the newest one cannot be looked up, for example offline, and the app says so. It never downgrades a plugin that is already newer, and the update prompt names exactly the version the Update button installs. (#777)

### New

#### Agent questions and plan mode

The agent can ask you a question with choices, and plan mode lets it read and plan while every change is refused until it presents a plan. Plan mode is a per-session switch in the composer, and the plan review card offers Approve and run or Keep planning with feedback. (#749)

#### Fresh-start suggestion for a long session

When a long session is about to take on an unrelated new task, the composer offers to start fresh, which saves your limit. The offer appears only when the agent is idle and the context is large, and you can keep working in the current session instead. (#757)

### Improved

#### Chat keeps your place while it works

Chat stops auto-following the moment you scroll up, and new messages and streaming text keep your reading position until you reach the bottom or use the scroll-to-bottom control. Tool and hook work folds into quiet disclosures while final answers stay visible, and one animated activity status replaces repeated status bubbles. (#744)

#### New installs start on the built-in claude agent

A fresh install now begins on the built-in claude agent instead of no agent, so the first session works without picking a persona first. Existing setups keep the agent they already selected. (#752)

#### Cleaner alerts with smoother animation

Alerts and the mid-chat model-switch confirmation gained a text-only ghost answer style, hover tooltips on every button including close, and smooth enter and exit animations that respect reduced-motion settings. (#756)

#### Permission and fresh-start prompts in the composer drawer

Tool permission requests and the fresh-start suggestion now appear in the same composer drawer the agent's questions use, instead of a transcript card and a popup. The session shows a waiting-on-you mark while a prompt is open and returns to running as soon as you answer. (#768)

### Fixed

#### Accurate context and cache readouts

The composer now reports the model's real prompt and cache usage instead of early zeros, shows an unknown state rather than 0% when usage is missing, and counts cache warmth down from the reported retention. Very large streaming replies render as plain text so the window stays responsive, while completed messages keep their formatting. (#745)

#### Very large saved replies stay responsive

Reopening a saved session with an extremely long reply no longer freezes the window. Such replies render as plain text with every character and line break intact, while normal replies keep Markdown, highlighting and clickable file paths. (#746)

#### No more early compaction on large-context models

Models the bundled CLI does not know now receive the context window the server declares, so a million-token model no longer compacts around 167k. When the server lists no window, the app leaves the CLI's own conservative default in place rather than guessing. (#748)

#### Themed composer shortcut hint

The idle composer hint now reads "Ask anything, @tag files/folders, $use skills, or / for commands", with the @, $ and / triggers in the accent colour and the rest in muted text that follows the current theme. (#750)

#### An unusable built-in helper agent is blocked

The SDK's statusline-setup subagent is no longer offered or runnable, because it only writes to a personal settings file the app never reads. It disappears from the agent picker, and any saved selection of it falls back safely. (#747)

#### Question drawer placement and editable surveys

Agent questions now slide out from behind the input card without moving the transcript, and multiple questions become an editable survey: click any question to revisit it, restore earlier answers, skip ahead, and submit only once every question has an answer. (#751)

#### Test runs no longer touch real app settings

Test runs are guarded against writing to the real app settings directory, so an unrelated open copy of the app can no longer break the build. This changes test tooling only. (#753)

#### Quieter errors from panes whose session is not loaded

Panes that have not loaded their session no longer report session-state read failures, removing bursts of spurious error reports when you switch between the app and your engine editor. (#754)

#### Diagnostics for vague agent failures

Agent turn failures that used to arrive as a bare code now write one detailed local log line, with secret masking, so a subprocess exit, a dropped connection and an SDK error can be told apart. Agent behaviour is unchanged. (#761)

#### Failure reports carry enough context to diagnose

Failed agent turns now send masked error text, HTTP status, server request id, session id and model id with the report, so a failure can be matched to a specific request without guessing from timestamps. Secrets and home directory paths are scrubbed before anything is sent. (#767)

#### A file path in code renders as a single clickable chip

When a whole inline code span is a file path, it now renders as one clickable file chip instead of a path wrapped in a code box. Clicking, keyboard activation and hover all target the chip, while code that mixes text and paths looks the same as before. (#769)

#### Focused session row has the strongest contrast

On dark themes the focused session row now has the most text-versus-background contrast of any row, and open sessions are only a subtle step from closed ones. Light themes are unchanged. (#770)

### Under the hood

- docs: migrate agent instructions to AGENTS.md (#771)
- docs: rename docs/claude/ to docs/agents/ (#774)

## v0.24.0 — Refresh skills and agents without unintended AI requests

Released 2026-10-09. Notes: https://ai-game.dev/releases/0.24.0 · Markdown: https://ai-game.dev/docs-md/releases-0.24.0.md

Refreshing skills or agent lists no longer starts hidden model calls. Changing the model in an active chat now asks how to handle existing history, with options to switch, start a new chat, or cancel.

### Featured

#### No unintended AI generation when refreshing skills and agents

Refreshing skills or agent lists no longer starts unintended model requests. That means less unexpected usage when you just want to update discovery metadata. (#741)

### New

#### Model change confirmation in active chats

Changing the model in a started chat now asks about the cost of processing existing history, offering Switch model, New chat, and Cancel. New chat creates an empty session in the same group with the chosen model, and switching applies at the next query. Packages can opt into reusable alerts for their own prompts. (#742)

### Fixed

#### More reliable Windows release signing

Windows release builds now complete signing reliably even when the signing tool's internal paths are long. This is build pipeline maintenance and does not change what you see in the app. (#740)

## v0.23.0 — Card-verified trials, Open Weight model picks, and safer prompt resumption

Released 2026-10-09. Notes: https://ai-game.dev/releases/0.23.0 · Markdown: https://ai-game.dev/docs-md/releases-0.23.0.md

Starting a trial now takes a quick card verification in the browser, after which the app returns you to the conversation you left. The model picker gains an Open Weight section driven by the server catalog, and resending a refused prompt is now an explicit choice you make.

### Featured

#### Trials and plan offers inside the app

When a message is refused for account reasons, the chat now shows an animated access card instead of a raw authentication error: eligible accounts can start their one-time trial, expired trials point to subscription plans, and usage limits offer higher limits with guidance specific to the request. Activating a trial means verifying a card in the browser, after which the app returns to the conversation with access refreshed, and internal accounting values are never rendered. (#725)

#### Card verification for the trial offer

The trial offer now opens the account site so a card can be verified securely with Paddle, and grants nothing locally until the server confirms activation. Returning to the app refreshes the authoritative trial or subscription state and keeps the conversation available, while the copy names the included models, explains that there is no automatic renewal, and notes that image and 3D generation require a subscription. (#730)

#### Open Weight models and server-driven availability

The model picker groups DeepSeek and GLM open-weight models into an Open Weight section, cheapest first within each category, with Recommended badges and brand icons taken from the server catalog, including a DeepInfra-hosted option that restores icons on older cached rows. Availability follows what the server offers for your plan, so Studio-only models behave accordingly and new models can appear without an app update. (#728)

#### Continue resumes a refused prompt safely

An access offer could disappear without answering the prompt that triggered it, because the saved model was missing from the new availability list; the offer now chooses an explicitly available server model, saves it before replay, and keeps your prompt if preparation fails. Continue creating sends the latest blocked prompt once in the same account, project and focused session, while returning from checkout or opening an old chat never sends anything. Restored chats now load their transcript reliably, and late replies can no longer change another session's model. (#738)

### New

#### Prompt navigator for long conversations

Sessions gain a prompt navigator with magnified markers and hover previews, so you can jump back through a long conversation and reveal earlier history on demand. The transcript also shows a compact robot activity line and filename chips that keep their original open behaviour, and new messages arrive with smoother scrolling plus a scroll-to-end control that returns when you move away. (#723)

### Improved

#### Project setup, Godot runtimes and Unreal reuse

Setting up a fresh project on macOS no longer trips over locked Unity Hub profiles, missing Godot.NET pieces or an Unreal install the app failed to find. Missing Godot and.NET components are fetched from verified official archives into per-user folders with measured download, extraction and build progress, and installed Unreal editors are discovered and reused from their real locations. Newly created Unreal projects open automatically once their plugin is compiled, with the project kept and recovery offered if the launch fails. (#718)

#### Composer cache status and tidier controls

The composer footer now reports cache status as the age of the last known request instead of a cache-hit percentage, with a tooltip explaining the number and an unknown value where timestamps are missing. Model, effort and agent controls share consistent borderless triggers and dividers, provider glyphs follow the server catalog, and the effort menu shows the effective setting while keeping persistence and rollback as before. (#722)

#### Leaner build caching and newer Node setup action

Continuous integration no longer archives a duplicate package cache that self-hosted runners already keep locally, and the Node setup action was updated to a version that no longer emits deprecation warnings. This is build-pipeline maintenance only; no product behaviour changed. (#729)

#### Smoother trial activation round trip

Starting a trial in chat opens card verification directly, and once the server confirms activation the app brings the originating window forward, refreshes eligible models and removes the offer. The refused prompt is not replayed on its own: press Continue creating and it is sent once in the same account, project and focused session, and stale returns are ignored so changing accounts, writing a newer message or switching projects cannot resend an old prompt. (#732)

#### Illustrated return page after card verification

The browser page you land on after card verification is now a responsive illustrated return screen with gentle animation and reduced-motion support instead of a plain heading. It remains self-contained and script-free, and entitlement checks stay inside the app. (#734)

#### Official logo on the trial return page

The trial return page now shows the official app mark with its original geometry and gradient instead of a placeholder cube. The logo is inlined, so the page still loads with no external requests under its script-free policy. (#735)

#### Return to the desktop after a subscription upgrade

Opening plans from an access offer uses an account-bound handoff, and once the server confirms a higher active plan the app rechecks access and restores the initiating window. A request refused despite a tiny remaining allowance keeps its upgrade offer until access changes, and when access does change you press Continue to send that blocked prompt once — the app never sends it for you. Cancelling, changing accounts or closing the window invalidates the return. (#736)

#### Simpler model and agent controls, Knowledge Base tip

Locked agent selectors no longer show a dropdown arrow, and Explorer project headings keep their disclosure arrow with correct default and expanded or collapsed states. SuperCollider stays installed by default but now starts detached from new sessions until you activate it, a short animated tip introduces the Knowledge Base graph after your first note, and the bundled agent SDK and build tooling were refreshed to current stable versions. (#737)

### Fixed

#### Music note icon for SuperCollider

The SuperCollider session toolbar no longer shows a placeholder monogram; it uses an outlined music note at both collapsed and expanded sizes. Labels and click behaviour are unchanged. (#721)

#### Unreal tools after a late editor launch

When Unreal opened more than half an hour after a session was created, the session could report a connected editor yet offer no Unreal tools. The tool watcher now restarts as soon as the editor becomes reachable and recovers every live session for that project, leaving healthy subscriptions and detached sessions untouched. (#724)

#### Credentials refreshed before sending

Older chats kept the token they were created with, so later messages could fail with an authentication error once your account token rotated. Every desktop send path now refreshes the captured chat credential immediately before sending and refuses delivery if the account or chat changed meanwhile, so existing conversations keep working without signing in again. (#726)

#### Access offers for wrapped quota refusals

When the model SDK wrapped a quota refusal in a generic request-rejected error, the app showed a plain error instead of the trial or plan offer. The app now recognises that wrapped form, keeps explicit server codes authoritative, tells quota refusals apart from ordinary rate limits, and renders older raw quota errors through the same access card. (#727)

#### Godot launches with the signed-in account

Opening Godot from an app connected to a development backend started the editor in anonymous mode, so it could not reuse your signed-in account; it now launches in authenticated cloud mode with the app backend forwarded. The Windows build also pins one absolute package cache, so the C# addon and its source generators are no longer silently dropped. (#731)

#### Back to the desktop after browser sign-in

Approving sign-in or completing card verification in the browser now raises and restores the window that started the flow, and activation stops when that flow is cancelled, superseded, closed or signed out. Window raising is best effort under each platform's foreground rules, with an attention prompt as fallback. (#733)

### Under the hood

- test(cli): agent-reporting-identity no longer depends on Sentry delivery order (#717)

## v0.22.1 — The Knowledge Base becomes easy to reach, and the agent gets spaces

Released 2026-10-07. Notes: https://ai-game.dev/releases/0.22.1 · Markdown: https://ai-game.dev/docs-md/releases-0.22.1.md

The Knowledge Base is a project knowledge base the agent keeps as markdown notes in.ai-game-dev/knowledge/, committed with your project and shown as a 3D graph. You can now open it from the status bar, from the session's Tools row, from the Explorer and from the right panel.

### Featured

#### The Knowledge Base is now easy to open

A status bar entry shows how many notes the project has, briefly pulses when the agent writes a note, and opens the graph. The session's Tools row gains an "Open the Knowledge Base graph" button, Knowledge Base folders and notes in the Explorer gain "Open in Knowledge Base graph", and until now the graph could only be reached from the command palette. (#695)

#### Knowledge Base spaces

Any Knowledge Base folder with a README is a space with a title and a short description. The agent sees a short catalogue of spaces, opens one when it needs it, and can create new spaces. (#701)

### New

#### Knowledge Base view in the right panel

The Knowledge Base now has its own view in the right panel, next to the full graph window, with its own UI and header. It is built on general kernel support, so packages can contribute right-panel views with their own header and layout. (#698)

### Improved

#### Package windows look like the app

The Knowledge Base graph window and other windows opened by packages now use the app's own header instead of the operating system frame, and follow your theme live, including window controls. This is a host capability, so any package window gets the same treatment. (#696)

#### Themed graph controls and quieter glow

The graph's depth dropdown and scrollbars now follow your theme instead of the operating system's drawing, and nodes glow only when you hover or focus them rather than all the time. (#699)

#### The agent files notes and decisions more carefully

The agent records decisions you state in the same turn together with their reason and what they replaced, links each new note from its space's README, and reports links per folder as well as per note. Notes filed in a space are no longer reported as orphans, and unlinked notes in no space still are. (#710)

### Fixed

#### Knowledge Base watching no longer blocks folder renames

The Knowledge Base watches files only while the graph window is open, so on Windows you can rename the project folder again once the graph is closed. It also notices when the Knowledge Base folder itself is renamed or replaced, and large graphs stay responsive because the layout no longer blocks the interface. (#693)

#### Two copies of the app no longer rewrite shared package files in a loop

When two copies run on one machine, for example the desktop app and the command line tool, they no longer rewrite the shared package files in a loop, and when they start at the same moment neither loses the other's default packages or package choices. This holds when both copies are 0.22.0 or newer; an older copy running alongside can still rewrite the shared files until it is updated to 0.22.0 too. (#692)

#### The shared-file loop is also gone for plugins and shared dependencies

The same shared-machine problem is fixed when the packages involved share plugins or shared dependencies: the plugin requirements and dependency ranges needed by a package another copy runs are kept instead of being dropped and written back. The previous mixed-version caveat still applies. (#708)

#### Recovering from repeated compaction failures

After repeated compaction failures, /clear in the desktop app now starts a fresh conversation while keeping the old session in your history, and /clear and /reset in the CLI start a fresh context and reset the context counters; the CLI waits until an in-flight request has fully finished, teardown after Stop included, before it will reset. The app also shows concrete recovery guidance when compaction keeps thrashing. Serious client errors and handled agent failures can be linked to the account that experienced them, and that identity follows authentication, survives an account switch and is cleared on sign-out; agent failure reports use safe error codes instead of the raw provider message, prompt or project contents, and reporting still respects your existing settings. (#714)

### Under the hood

- chore: release v0.22.0 (#711)

## v0.21.0 — Tripo asset tools, a committed Knowledge Base, and local image groundwork

Released 2026-10-05. Notes: https://ai-game.dev/releases/0.21.0 · Markdown: https://ai-game.dev/docs-md/releases-0.21.0.md

Tripo's 3D, Textures, Mesh, Rig & animate and 2D tools are now separate per-session switches, each with its own settings popup, and a single asset request comes back with saved project file paths. This release also ships a committed project Knowledge Base with a 3D graph window, plus the package and kernel groundwork for local image generation.

### Featured

#### Tripo session tools with authenticated paid execution

Desktop gains 3D, Textures, Mesh, Rig & animate and 2D tools that you enable separately for a session, each configured in its own popup; the agent only sees the groups you enabled and the variants the server offers for your account. Paid operations use your existing subscription budget under the approval policy you configured, and what is available depends on your plan and server permissions rather than on a fixed free allowance. (#652)

#### Committed project Knowledge Base

A new first-party package indexes the notes and folders under a project's committed knowledge folder and gives the agent tools to browse, search and read them. It re-indexes incrementally as notes change, tracks links and reports broken ones, and exposes a snapshot that other views can build on. (#654)

#### 3D Knowledge Base graph window

The Knowledge Base opens as an animated 3D graph in its own window: folders as rings, notes as orbs sized by connectivity and coloured by folder, with containment and link lines and a starfield background. Layout runs in a worker with a main-thread fallback, and apps without native webview windows show the same graph in a pane. (#659)

#### Tripo operations wait for completion and save project files

A Tripo request now runs to completion inside one operation: the agent receives the saved project file paths for every artifact, or a clear failure with the reason, instead of polling job status and fetching results itself. An output location can be chosen up front and survives a lost response, so an interrupted job is recovered without paying for the generation again. (#686)

### New

#### Package webviews in their own native window

Packages can open a webview in a dedicated window instead of a pane, reusing the same page code and message API. The window is a singleton per package, view type and project, reopening reveals the existing panel, and it is not restored after a relaunch. (#655)

#### Content-addressed store for downloaded files

A new machine-wide store keeps downloaded files by their SHA-256 hash and verifies size and hash before publishing anything, with a single commit path that never overwrites existing data. Owners are tracked per hash so files still in use are kept and unused blobs can be collected. (#663)

#### Machine-wide runtime coordinator

A background coordinator now owns local runtime processes on a machine, handing out leases to the clients that need them so one copy of a runtime serves every window and project. It binds to the loopback interface, requires a per-start token, exits when idle, and refuses to be stopped by an older client. (#668)

#### Runtime and image-model contribution points

Packages that are pure data can now declare runtimes and image models, including per-platform variants, download files, licences and the hardware tiers each model fits. A rule that fails drops only the runtime or model it names, never the whole package. (#662)

#### Package settings: path fields and dynamic choices

Package settings gain an absolute-path field with a Browse button, plus writability and free-space feedback, and string fields whose choices come from a provider instead of a fixed list. A stored value that is no longer offered is shown as unavailable and never rewritten. (#666)

#### Hardware probe

The kernel can report the machine's graphics adapters, video memory, driver version, compute capability, installed memory, operating system, free disk space and relevant system security settings, with results cached between runs. The answer is used as a hint when choosing between runtime variants. (#665)

#### Kernel session tool settings with independent Tripo controls

Packages can declare their own session toolbar controls and settings, rendered natively with package, window, project and session ownership checked and stale edits reconciled. Tripo keeps five separate tools: clicking an empty tool opens its settings, choosing a subfeature activates it, and clearing the last selection turns it off without disturbing the others. (#661)

#### Publisher-qualified tool server names

Package tool servers are now named publisher and name joined by a double dash, removing an ambiguity between similar package identifiers. Unqualified names still work but warn that they will stop being accepted in a later release, first-party legacy names keep standing, and an over-long name is reported with its length instead of being truncated. (#667)

#### Local image runtime launch planning and failure classification

The local image runtime gains its deterministic half: it builds the launch arguments for a chosen model and hardware fit, parses which devices the backend can use, and classifies the ways a run can fail, such as a busy port, an invalid model file, a system policy block or a missing system library, into a reason the user can act on. (#672)

#### Package settings from the CLI

Package settings can be read and written from the command line, with values parsed and validated by their declared type before anything is written, level restrictions respected, and unavailable choices reported. Exit codes separate success, refusal and usage errors. (#671)

#### Coordinator job queue

The runtime coordinator now schedules generation jobs through a single backend slot, grouping waiting work by model and tiling, giving each key a fair turn once a dwell window has passed, and never interrupting an image that is already running. It can preload a model when a client appears, cancels queued or running jobs, and keeps finished jobs until a client collects them. (#670)

#### Package tool results can carry images

A package tool can now return image blocks alongside text, passing the same size, dimension, format and encoding checks used for engine results; anything that fails becomes an explanatory text note while the rest of the result survives. The package API version moves to 0.3.0, and the CLI saves returned images into the project. (#674)

#### Resumable, verified downloads

A kernel download manager fetches files into the content-addressed store from stable sources, resumes from partial data with range requests, verifies size and hash while streaming, and supports pausing, resuming, retrying and cancelling by group or by item. State is written as work starts, so a download resumed after a restart still finishes. (#669)

#### Local image runtime package

A new first-party package describes the local image runtime as data: its platform variants for CUDA, Vulkan, Metal and a preview Linux build, the driver and library requirements each imposes, the model settings it exposes, and its licence components including the NVIDIA runtime terms. It ships without any code. (#673)

#### Runtime coordinator ships with the CLI and desktop

The coordinator is now embedded in the CLI binary and started on demand, with a small command for checking or starting it. Desktop starts it when local runtimes are used, updates drain running work before replacing it, and portable and AppImage installations are handled. (#677)

#### Desktop and CLI download transports

Real network transfers are now wired into the download manager on both surfaces, with redirect tracing that refuses downgrades and opaque redirects, a size fallback for hosts that only report it after the first hop, and one store and download manager per process. (#679)

#### Local image server backend

The code that starts the local image server now spawns only from a verified runtime tree, waits for readiness against the exact model it launched, treats a silent fallback to CPU as a visible failure, and retries an out-of-memory launch once with a reduced video-memory budget. Unexpected crashes back off and are reported with a classified reason. (#676)

#### Four local image model packages

Four data-only packages describe image models with their files, download sizes, default settings and the hardware tiers each one fits, so the app can pick a model the machine can actually run and can say clearly when none fits. Their licences and upstream revisions are recorded in the packages. (#678)

#### Download progress in desktop notifications

Active downloads appear as live notifications in every window, with bytes, speed and estimated time remaining for each item, and pause, resume, cancel, retry and discard actions that any window can trigger. Updates are throttled, a window opened mid-download picks up current state on its first read, and finished items stay until you dismiss them. (#682)

#### Model registry and variant selection

The kernel can now choose a runtime variant for the machine it is running on and explain each rejection, such as an older driver, insufficient memory or a missing system library, then match a downloaded model to a hardware tier. Downloaded models are usable from any project on the machine and can be removed or updated from the app. (#685)

#### Progress lines in the CLI

The CLI shows download and package progress above the input: bytes, percentage, speed and remaining time per group, and one line per running item. Escape cancels the newest cancellable progress only when nothing else needs it, and a finished group leaves a single summary line. (#681)

#### Browse a Tripo tool's generated assets

Each Tripo tool's settings popup shows a compact count of the assets it has produced this session, and opening it lists only that tool's completed files from the current session. Files open in the project viewer or the file manager, and an output that was moved or changed can be recovered without another paid generation. Nothing opens on its own. (#687)

#### Storage, downloads and hardware APIs for packages

Packages gain access to the kernel's file store, download manager and hardware probe, with ownership of stored files forced to the calling package so one package cannot claim or release another's data. Long-running work returns immediately and reports progress through events; the namespaces ship as proposals and may change. (#684)

### Improved

#### Reworked workbench themes and panels

The desktop workbench now uses a neutral black and metallic Dark palette, with the previous charcoal look kept as the separate Carbon theme. Panel headers, split corners, tabs and the sidebar share one geometry, every theme gains interactive empty-session scenes that respect reduced-motion settings, and splash and sign-in screens get their own ambient palettes. (#639)

#### Catalog sync keeps saved model choices working

The client was brought up to date with the current server catalog contract, and older model versions saved in existing projects still send requests even when they no longer appear in the public catalog. (#656)

#### Engine tool results carry images and compact JSON

Screenshot results from engine tools now arrive as real image attachments when they pass size, dimension and format checks, and as a short text note explaining why an image was skipped otherwise. Results are compact JSON instead of one pretty-printed block, and failed calls include the server's error message. (#645)

#### Hidden image-generation placeholder removed

A hidden prototype capability row that did nothing is gone, and the icon it used now serves the Tripo 2D group. Stored selections that referenced the old identifier are ignored quietly and survive later toggles. (#664)

### Fixed

#### Release job now checks out everything it needs

The announcement step failed before posting because a helper file was outside its partial checkout. The job now brings in every file it depends on, so approved notes can be assembled without installing anything. (#623)

#### Full release checkouts on reused runners

After a partial checkout, a reused runner could come back with tracked files missing, which broke release verification. Full checkouts now restore the whole tree explicitly. (#624)

#### Login tests stop opening browser tabs

Running the CLI login tests used to launch a real browser tab on the developer or CI machine on every run. The tests now stub the browser opener while keeping the real command wiring and assertions. (#640)

#### Window controls match the title bar in every theme

The minimize, maximize and close strip could show a different background from the renderer title bar, especially behind the sign-in and startup screens. It is now transparent in all six themes so one continuous surface is painted, with themed glyph colours and existing modal dimming preserved. (#644)

#### Sign-in when no browser is associated, and a skills shutdown race

On Windows machines with no default application for web links, signing in stalled at waiting for the browser without saying why. The app now shows a notice with the link and a copy-link action, and files with no associated app are revealed in the file manager instead of failing silently; a race when the skills service closed during shutdown is fixed as well. (#648)

#### Package provider registration and webview cleanup

A package could be reported as failing to activate because its own declared provider was judged unowned while a package-set restart was still pending; the declaration is now accepted until that restart completes. A stale tip webview and a package folder that is not a plugin are handled without spurious errors. (#650)

#### A wrong project folder is a usage error, not a crash

Running the CLI with a first word that is not a project folder, such as a misremembered subcommand, used to end in a raw stack trace and a crash report. The path is now checked before bootstrap, named in a clear message, and reported as a usage error with the matching exit code. (#647)

#### Quieter crash reports at shutdown and on update checks

Windows log-off was being filed as an application crash, once for every process the system killed, and Chromium utility services killed from outside were filed too. Those deaths are no longer reported, repeats are collapsed to once per session, and update checks that cannot reach the network no longer raise errors. (#649)

#### Sign-in for users far from the server

Connection attempts gave each resolved address only 250 milliseconds, so people roughly 300 milliseconds from the server could never finish account registration. Address families are now raced with a longer allowance, and sign-ins the user declined or that timed out are no longer filed as errors. (#651)

#### Session agents use their window's own project

A window could start its session agent in a different project's directory when the saved global folder pointed elsewhere, so the Tools panel showed a tool enabled while provider lookup read the wrong project. Sessions now use the project directory captured for their window. (#657)

#### Scrollbars clear of rounded corners

Rounded frame corners were clipping scrollbar thumbs in chat panels, side panels and tool popups. Scrollbars now keep a small margin at both ends on either axis, without shifting scroll content, in the app and in injected package webviews. (#660)

## v0.20.0 — Packages, SuperCollider music, and better 3D previews

Released 2026-10-02. Notes: https://ai-game.dev/releases/0.20.0 · Markdown: https://ai-game.dev/docs-md/releases-0.20.0.md

This release adds a Packages window for finding, adding and configuring tools, brings a Music package for composing and exporting game audio, and improves 3D previews, per-session tools and sign-in.

### Featured

#### A Packages window for the app

The desktop app now has a Packages window for finding, adding, removing and configuring packages. Packages can add commands and menus, new panels, their own editors for particular file types and tutorials, and their settings can apply to your user, to a project, or to this machine's local settings for that project, with a switch for automatic updates on each package. Blender and SuperCollider now arrive as packages, so turning them on goes through the same controls as anything else, and if you want to build your own you can write a package with a manifest and some JavaScript and try it from a local folder. (#608)

#### Music with SuperCollider

A new Music package lets the agent make game music and sound with you: create a portable AudioSource project, write or edit SuperCollider scores, import WAV samples, render WAV audio, preview it in a session window, and export the audio files into a game project. Music is on by default for new sessions and can be switched off for a session from the Tools row. Onboarding in context offers an eight-second sample theme or lets you describe your own idea, and what the package needs to run is set up the first time you actually use it. (#619)

#### 3D previews show their textures

Models in 3D preview now resolve the textures they ship with, including FBX packs that keep their images in a nearby folder, so models that used to come up black show their materials. Lighting and shadows can be switched on and off and adjusted, and those settings carry over to other models, other preview windows and your next launch, with shadows on by default. An orientation gizmo makes it easier to see and set which way a model is facing. Some assets do not ship every texture they reference, so a map can still be missing. (#565)

#### Tools chosen per session, with short tutorials

Tools are now chosen per session: turn Blender on for the session where you need it, and every other session keeps its own choices, which are remembered between launches. Short tutorial tips appear in context, one at a time, and can be dismissed or skipped. This is the same Tools row that the package system uses, so what it offers follows the packages you have. (#564)

### New

#### An animated sign-in screen

The sign-in screen now uses the same animated scene as the launch splash and covers the whole window, title bar included. Panels cross-fade and ease between states as you sign in, wait or hit an error, and completing sign-in plays the splash's exit while the app appears behind it. (#566)

### Improved

#### The Tools row lists only what works

The Tools row now offers only the tools that actually do something today, so it no longer presents switches that lead nowhere. The choices behind those entries are kept, so if a tool becomes available later your setting is still there. (#567)

#### Narrower DevTools in development builds

In development builds the developer tools open docked at their minimum width instead of taking a large share of the window, and a width you drag them to is remembered for later windows in the same run. Packaged builds are unchanged. (#605)

### Fixed

#### Sign-in overlays respond to clicks

On the sign-in screen, the update card, notification cards, tutorial tips and menus sat above a window area that swallowed clicks, so pressing them moved the window instead of doing what they said. They now take clicks normally, in every signed-out state and inside open dialogs, while the rest of the window still drags. (#589)

#### A tooltip never outlives its trigger

A hover tooltip could stay on screen after the thing it described disappeared, such as a notification you had just dismissed. Tooltips now disappear as soon as their trigger is gone, hidden, moved or otherwise out of play, and also on Escape, resize, scrolling away and window changes. (#596)

#### Unity projects are recognised at startup

A window opened on a Unity project could come up treating it as a plain folder, leaving out the engine badge, Open Editor and Install Package. Windows now read the project and its engine together, so the right engine information and actions are there from the moment the window appears. (#597)

#### Sending after signing out and back in

After signing out and signing back in, typing a message in an existing session could show your bubble and then nothing at all. Sends now reach the agent again, and when a message really cannot be delivered the app shows an error instead of staying silent. (#601)

#### A failed package build is not linked

When you develop a package from a local folder, a first build that failed could still be linked as though it were ready. The tool now checks the build result first and reports the failure instead of linking an incomplete package. (#617)

#### Windows installers build again

The Windows release build was failing in its installer step. It now uses short working paths and stops immediately when the installer step fails, so a resume can produce the Windows installers that were missing. (#620)

### Under the hood

- ci(release): make release.yml resumable from main (resume mode at the release commit) (#568)
- chore(chain): vendor chain_feed.py v5 (Unity-Tests/6000.6.3f1 drop) (#569)
- ci: run GitHub-hosted Linux jobs on the self-hosted Linux runners (#611)
- chore: release v0.19.0 (#614)

## v0.18.0 — Blender integration, one window per project, and a multi-pane workspace with file previews

Released 2026-09-26. Notes: https://ai-game.dev/releases/0.18.0 · Markdown: https://ai-game.dev/docs-md/releases-0.18.0.md

This release connects Blender to the agent, gives every project its own window like VS Code, and turns the centre of the app into a layout of panes where sessions and file previews live side by side.

### Featured

#### Multi-pane workspace

The centre of the window is now a layout of panes. Keep several sessions open at once as tabs or as side-by-side splits, vertical or horizontal, maximise one, or float it above the layout, and drag a session from the list straight into the layout. Sessions in the background keep streaming, each pane keeps its own model, reasoning effort and agent, and the layout is saved for each project. (#548)

#### File previews next to your sessions

Files open in preview panes beside your sessions: code with syntax highlighting, Markdown, images including TGA, TIFF, PSD, HDR, EXR, DDS and KTX textures, SVG, 3D models, audio with a waveform and the file's real sample rate, video, fonts, CSV and a hex view, with diffs and side-by-side image comparison when you click a file in Source Control. A single click opens a temporary preview and a double click keeps it open, previews reload by themselves when the file changes on disk, and an image dragged into the chat with a vision-capable model can be attached as an image or inserted as its path. (#550)

#### Blender integration with the /blender command

The new /blender command, in the desktop app and in the CLI, connects Blender to the agent. It finds an installed Blender 4.2 or newer, or downloads a portable Blender when none is found, installs the add-on the agent drives, and opens Blender, set up for the current project only so other projects never see it. Blender closed when the agent needs it is started automatically, and the subcommands are status, open, find and remove. (#555)

### New

#### One window per project, restored on relaunch

Each project now lives in its own window, as in VS Code, and when you relaunch the app every project window that was open comes back with its own size, position, side panels and pane layout. (#549)

#### Clickable file paths in chat

File paths mentioned in chat messages are now clickable once they name a file that exists: in the desktop app they open in a preview and jump to the line when a line number is given, and in the CLI they are terminal links where supported, with a files command that lists them and opens one in its default app. Programs and scripts are never run by a click; they are shown in the file manager instead. (#554)

#### Chat in plain folders

You can now chat in any folder, not only in a Unity, Godot or Unreal project, for example a Blender-only project, a docs folder or a scripts folder. Game projects still wait until their engine is connected, and projects opened in a Godot or Unreal folder from the CLI now get their engine tools. (#552)

#### Welcome screen, replace-in-place and opening in a new window

An empty window is now a launcher with a welcome screen showing recent projects, Open folder and Create new project. Picking another project replaces the one in the current window, while Cmd-click on macOS or Ctrl-click on Windows and Linux, or the new Open in new window button on a recent project, opens it in a new window instead; if the project is already open somewhere, that window comes forward. New Window is Shift+Cmd+N or Ctrl+Shift+N, switching projects while the agent is still working asks you first, and Settings has a new Window section for how projects open and which windows are restored at startup. (#560)

### Improved

#### Releases arrive only when the download mirror has them

A release is announced only after its installers are also available on the download mirror that serves faster downloads in some regions. (#547)

#### Missing recent projects, and a notice when a project fails to open

A recent project whose folder is gone is now dimmed with the reason instead of silently doing nothing, and offers to be removed from the list; the row becomes usable again if the folder comes back. Any project that fails to open now tells you why in a notification in the window. (#559)

### Fixed

#### Preview fixes: real audio sample rate, reloads after a branch switch, named missing files

Audio previews now show the file's real sample rate, codec, bit depth and channels instead of a resampled value, and unknown formats show no rate at all. Previews keep reloading after a branch switch recreates a watched folder, and a 3D model whose geometry file is missing now names the file to copy instead of reporting a parse error. (#551)

#### MCP servers belong to the project they were added in

MCP servers you add from the Extensions manager now belong to the project that was open when you added them, and are no longer written into other projects. Servers added by older versions still apply to all projects and are labelled as such, one of them can be moved to a single project, and copies older versions left in a project's settings file are cleaned up when that project is opened. (#553)

#### A previewed image no longer stays over the chat

An image previewed from the Explorer no longer remains drawn over the chat after you switch back to the chat tab, and it keeps its zoom when you return to it. (#556)

#### A changed image keeps its shape while it reloads

When a previewed image changes on disk to a different shape, it is now letterboxed while it loads instead of being stretched into the old image's box, and it does not flicker while a new version loads. (#558)

#### The app window stays in front when Blender opens

When /blender opens Blender, the AI Game Dev window now stays in front instead of being covered, so you can keep working while the agent drives Blender on macOS and Windows. (#561)

#### Window model fixes

Two windows switching to the same project at the same moment no longer both end up showing it, the window that already has it is brought forward instead. Starting the app a second time while it is still starting up is no longer ignored: on macOS it brings the running app forward, and on Windows and Linux it opens an empty window. The welcome screen's indicators for projects that are already open in another window stay up to date. (#562)

### Under the hood

- test(core): Blender tests never probe a real Blender on 127.0.0.1:9876 (#557)

## v0.17.0 — Bundled engine plugins updated: Unity-MCP 0.93.0, Godot-MCP 0.25.0, Unreal-MCP 0.19.0

Released 2026-09-24. Notes: https://ai-game.dev/releases/0.17.0 · Markdown: https://ai-game.dev/docs-md/releases-0.17.0.md

Configuring Antigravity from the engine plugin or the CLI now writes both of its possible config locations, ~/.gemini/config and ~/.gemini/antigravity, so it connects no matter which one your Antigravity install reads, and the plugin shows Antigravity as configured only when both are in place. Regenerating the project key from a CLI now updates every AI agent configured for that project before the old key is revoked, so your other agents keep working. In Unity, the Regenerate key button is now aligned with the Configure button.

## v0.16.0 — Bundled engine plugins updated: Unity-MCP 0.92.0, Godot-MCP 0.24.0, Unreal-MCP 0.18.0

Released 2026-09-23. Notes: https://ai-game.dev/releases/0.16.0 · Markdown: https://ai-game.dev/docs-md/releases-0.16.0.md

Third-party AI agents such as Claude Code, Cursor, VS Code Copilot and Codex connect to your project again without signing in themselves: when you configure an agent from the engine plugin in Cloud mode, it receives a long-lived project key bound to that project, which you can regenerate from the plugin or revoke on ai-game.dev under API Keys, Project keys. Projects on Unity-MCP 0.84 or older should update the plugin to keep Cloud sign-in working.

## v0.15.0 — Model data now comes from the server, and the right panel opens by default

Released 2026-09-23. Notes: https://ai-game.dev/releases/0.15.0 · Markdown: https://ai-game.dev/docs-md/releases-0.15.0.md

The model list, prices and capabilities are now delivered by the server, so new models and price changes reach you without an app update. Claude Opus 5.5 is available, and the right panel now opens by default like the left one.

### Featured

#### Server-driven model catalogue and Claude Opus 5.5

The model list, ordering, labels, prices, speeds, context windows and capabilities are now read from the server instead of being baked into the app, so new models and changed prices show up without an update. The last successful reply is cached and shown while the app waits for a fresh one, and with no cache and no connection you get a clear no-connection state rather than invented entries. Claude Opus 5.5 is supported, existing Opus selections move to it automatically, and requests are checked against each model's declared capabilities before they are sent. The right panel now opens by default, matching the left. (#541)

### Under the hood

- fix(release): the feed gets its own job, and the release is documented (#542)

## v0.14.0 — Session groups, a right-hand panel, and voice capture that survives a cold model download

Released 2026-09-22. Notes: https://ai-game.dev/releases/0.14.0 · Markdown: https://ai-game.dev/docs-md/releases-0.14.0.md

Sessions are now organised into groups that travel with the project, a new right panel brings file browsing, search and git into the app, and voice input no longer loses the first thing you say.

### Featured

#### Session list rebuilt around groups and live working time

The sidebar now organises sessions into groups you can create, rename, colour and reorder, and the grouping is committed with the project so a clone on another machine opens the same layout. Each row carries a single indicator that says both what the AI is doing and whether the session is still in memory, and the right-hand column counts the AI's accumulated working time while it runs. (#526)

#### Right panel with Explorer, Search and Source Control

A right-hand panel adds the project's files as a live tree with git decoration, inline rename and create, drag-and-drop into the chat composer, a content search with include and exclude globs and replace-all, and a source control tab with branch, ahead/behind, diffstat, commit and pull. Titlebar buttons and keyboard shortcuts show and hide the side panels, and the panel draws from the existing themes so all five keep working. (#532)

### New

#### Search sessions by name

A magnifier next to the sidebar's add buttons opens a filter that matches session titles and group names and marks the matched text. A group matched by its own name keeps all of its sessions, closing the field always clears the query, and dragging is off while a filter is active so a drop can never land on a row you cannot see. (#527)

#### Mic meter and press-to-latch voice recording

The composer's mic button now shows what the microphone is actually picking up: five mirrored bars replace the glyph in place, so the composer never reflows and the hit target never moves. Hold to record while held and transcribe on release, or click to latch recording on for longer dictation, and a hand drifting off the button no longer cuts the sentence short. (#528)

#### Long pastes collapse to a thumbnail, and one voice pill

Pasting more than a few hundred symbols no longer floods the input box: it holds a symbol-count placeholder and sends the full text verbatim, and pasting the same text again reveals it in full. Mic and send moved into the composer's control row at the size of every other control, with the mic and voice-language chip merged into a single pill. (#530)

#### Curated release notes with a preflight gate and three channels

Release notes are now written and grouped from merged work, previewed and approved locally, and published to the release page, Discord and a public feed with no model calls and no pauses during the release run itself. Approval is attached to a commit, so a failed release can be retried as often as needed without asking again. (#534)

### Improved

#### Faster chat transcripts in both frontends

Long conversations are markedly quicker: opening a session, appending a message, streaming an answer and switching sessions dropped from seconds to milliseconds in the desktop app, and the terminal no longer burns seconds of CPU per update. The gains are measured, and the ones that could not be defended were left out. (#531)

#### Denser composer, rebuilt model list, one overlay rule

The composer now hides its controls in a fixed order as the window narrows, measured from the real labels rather than hardcoded, with context size the last thing to go and mic and send never hidden. The model list puts the tick, name and modality on one line with meters below, sorts models by IQ within each provider, and overlays everywhere follow a single placement rule. (#533)

#### Price, speed and IQ meters take half steps

The model picker's meters keep their ten pips but can now land between points, so two service tiers of the same model no longer look identical and a doubling in price reads as a change on every model rather than depending on which side of a rounding boundary it fell. The terminal build still rounds to whole pips, which says what a terminal can draw. (#535)

### Fixed

#### Voice capture survives a cold model download

Recording used to wait for the speech model to install, which threw away anything spoken during a first-use download of several hundred megabytes. Capture now starts immediately and the model loads alongside it, with early audio buffered and transcribed with the rest of the take, and live previews work as soon as the model is genuinely ready instead of failing silently. (#529)

#### Speed meter now follows the Flex/Standard switch

Flipping the service tier changed the price but left the speed meter describing the other class. Each class now carries its own speed, so the switch moves both readings together and the row reads as one choice rather than two unrelated numbers. (#536)

### Under the hood

- chore(release): 0.13.3 -> 0.14.0, with approved release notes and the GROUP/PROSE split (#537)
- chore(release-notes): scope the approval to generated_from_sha, and gate what merged after it (#538)
- chore(release): re-approve 0.14.0 after #538 (#539)

---

Source (HTML): https://ai-game.dev/releases
