# AI Game Developer v0.25.15 — Chats get a generation budget, a project Models screen, a Media tab and on-demand local models

Chats now run cloud generation on a budget you can raise from the chat, and a new project Models screen lists every model the agent may use. The right panel adds a Media tab, messages sent while the agent works steer the running turn by default, and local models load only when a job needs them.

_Last updated: 2026-11-06_

Released 2026-11-06. All releases: https://ai-game.dev/releases

## Featured

### Chat generation budget, on by default

A new chat allows cloud generation with a budget of 30% of your allowance, in a No questions within budget mode that only asks when a job would not fit. You can switch to Ask before each operation or Off, and when the budget runs out the agent is told how much is left and points you to the Raise budget card. Nothing is charged for a refused job, and only you can raise the budget. (#1223)

### Project Models screen

Packages, then Models, then All models is one project table of every model the agent could use, local and cloud, with kind, where it runs, state, release date and whether the agent may use it. Every column sorts on click and the default is newest release date first, with unknown dates last. A local image or video model that is not downloaded offers Download right in its row. (#1222)

### Messages steer the running turn by default

A message sent while the agent is working now steers that turn instead of waiting; Settings, then Assistant, switches to Queue for desktop and CLI, and Ctrl or Command with a click or Enter sends a single message the other way. The desktop chat also gained a configurable chat width, a round send button that becomes Stop, Send, Steer or Queue, and a message minimap down the left edge. (#1232)

### One generation surface for images, video, audio and 3D

The agent now generates images, video, audio and 3D through one set of tools, with Tripo running behind model_generate and image_generate instead of as its own tool group. Job tools also handle cloud work, so the agent can wait and save, check status, watch or list jobs for a chat or a project. (#1233)

### Generated Media tab in the right panel

A Media tab shows generated images, video, audio and 3D as a grid of thumbnails, scoped to this chat or to the whole project, newest first with a cap and a Refresh button. Clicking a tile opens the file preview and a double click pins it, and thumbnails are built off the UI thread and cached on disk so hundreds of files scroll smoothly. (#1235)

### Local models load on demand and unload when idle

Opening a chat no longer keeps a local image model resident: a model loads when a job needs it and unloads after an idle window, 10 minutes by default and configurable up to 7 days. The agent's image tool says the first image of a chat may wait for the load, and an idle chat holds nothing. (#1240)

## New

### Cite assistant text into the composer

Selecting text in an assistant reply raises a Cite button; saving puts the quote, with an optional comment, into the composer as a chip you can reopen, delete whole, or leave for send. On send each chip becomes a quoted reference the agent reads, and sent messages show the chips again. (#1218)

### Group switches and a Budget button in the Tools bar

The Tools bar now leads with Images, Video, Audio and 3D as plain switches that turn on every member the project has, then a separator and the other tools. A collapsed bar keeps the icons of the enabled items and adds a Budget button whose tooltip reports how much of the allowance is left; the same group commands and budget view are in the CLI. (#1224)

### The agent can ask for tools in the chat

An always-loaded request_tools tool lets the agent ask you to turn on tools that are off, or to allow a model the project blocks, with a one-sentence reason, and then continue the same turn. It uses the Tools bar's own names, and approving enables exactly what the matching switch enables. (#1225)

### Context meter and Compact or Keep before sending

The composer's context percentage becomes a ring whose popover shows usage, prompt-cache warmth and the auto-compaction note, with a Compact context action and a way into the context details. A long chat whose cache expired gets a Compact or Keep choice beside Send, and /compact runs the same compaction. (#1243)

### Allow for this chat on the image approval card

The image approval card gains a third answer beside Allow once and Deny: Allow for this chat approves the image, turns the Images group on in that chat, and lets later images run without a card while the chat's budget covers them. (#1244)

## Improved

### Model release dates

Model entries can carry an optional release date from the server, and the project Models screen shows it in its Release date column. A malformed date drops only the date, never the model. (#1221)

### The agent picks the model and the operation

Unless you blocked them on the project Models screen, the agent now chooses the model and variant for each job, and it reports why something is unavailable along with typical usage as a percentage of the allowance. A model search opens with a compact overview of what is available, what is not and why, and how much of the chat budget is left. (#1229)

### The budget indicator keeps itself current

The Budget button, the Cloud generation chip and the budget window update when the mode, the grants or the usage of their chat change, including jobs started from another window. Images approved in Ask mode draw on the same chat budget. (#1236)

### Every text says chat instead of session

Messages, labels, tooltips, tool descriptions and in-app guides across desktop, CLI and first-party packages now say chat rather than session, for about two thousand strings. Sign-in sessions, transport sessions and the things other programs read keep their old wording. (#1252)

### Mobile apps say chat instead of session

The Sessions tab on iOS and Android is now Chats, and session info, session name, about this session and new session all read as chat, translated into every catalog language. Stored data and older app versions keep working unchanged. (#1255)

## Fixed

### Intermittent build failures fixed at their cause

The download hold, the write-conflict classification and the drain shutdown case now behave the same on every run, without retries, skipped tests or longer timeouts. (#1217)

### Legacy image and video rows leave the Tools bar

Two backend aliases no longer appear as separate Image Gen and Video rows that could never change state. The notice after a toggle now names what actually changed, such as Images turned off. (#1220)

### Several groups approved at once apply in one refresh

A single approval that turns on several groups, each with package members behind it, now lands as one change instead of the later groups failing and the agent being asked to try again. (#1227)

### Dev stands and build reliability

Parallel development stands no longer share the installed app's Kernel, and the intermittent build failures behind that are fixed at their causes. (#1228)

### A file preview can no longer hold a turn open

A preview request that nothing answers now ends with a reason after 15 seconds instead of running for minutes until you stop the turn. Tool failures and hangs are reported so they can be diagnosed. (#1230)

### A group switch is one change

Clicking a group and sending a message right after now gets the whole group instead of half of it, and a request_tools card opens in the window that shows its chat. (#1231)

### Windows answer file previews without the right panel

File previews and package dialogs are answered by the window itself rather than the Explorer panel, so they work with the panel closed and come back after a reconnect or a Kernel restart. (#1234)

### Budget editor offers only packages you can use

The budget editor lists only packages your account is eligible for, and a refusal from the server now shows its reason instead of locking approval for the rest of the session. An account with no eligible package sees why and can start a free trial instead of the approve controls. (#1237)

### Refusals and discovery name the real reason

A generation refusal and model discovery now say why a job cannot run instead of pointing at a tool that is already on and sending the agent in circles. On a local development stand, a pinned Tripo version is installed after a pin bump. (#1241)

### Directory hints age on the server's clock

Media directory hints are now aged by one clock, so a machine whose clock differs from the server no longer loses its ranking and its models stay on the first page the agent sees. (#1242)

### This chat media follows renames, quieter recovery notices

A generated image the agent renames stays listed under its new name instead of showing as deleted, and adding or removing an image no longer raises a large recovery panel above the composer. (#1246)

### Message minimap stays visible

The strip of one bar per message stays on screen at every chat width, including narrow windows and overlay scrollbars, and its thin connecting line is gone. (#1247)

### Local stand reloads nginx configuration

The local development stand reloads nginx with the Server checkout's current configuration on every start. (#1248)

### Media follows wildcards, no write-back, Tripo files in place

This chat media now follows wildcard renames and commands that ended with an error, a delivered image is never written back after the agent moves it, Tripo saves into the generated-models folder so its files appear in Project, and 3D tiles get a still image. (#1249)

### Long idle chats stop re-reading their history

A long chat that has been idle no longer re-reads and re-renders its whole history once a second, which had pushed the window to full processor use and over a gigabyte of memory. (#1250)

### Local stand login after the nginx reload

The local development stand's login no longer fails on a pooled connection the reloaded nginx had already closed. (#1251)

### Idle engine-project chats stop re-reading history

An idle chat in an engine project no longer re-reads its history every half minute because of the editor connectivity probe, so the worker stays quiet between turns. (#1254)

### No false stall on a healthy cloud generation wait

A long but healthy Tripo rig wait is no longer reported as stalled at 15 minutes; generation and job tools now get a stall budget that matches their own timeout. Rig inputs also describe the formats Tripo actually accepts. (#1256)

## Under the hood

- chore(deps): unity-mcp-cli 1.7.0, godot-cli 0.35.0, unreal-mcp-cli 0.27.0, gamedev-cli-core 0.8.0 (#1215)
- chore(deps): re-resolve known-vulnerable transitive packages (#1216)
- docs(plans): wave 1 status and wave 2 owner decisions (#1226)
- test: fix six flaky core tests at their causes (round 2) (#1239)
- test(chat): a follow-up sent during a running turn survives Stop (CLI + desktop, steer + queue) (#1238)
- test: shared 5 s default for vi.waitFor in every vitest pass (#1245)
- test(core): the idle-cost history test no longer races real I/O against fake time (#1253)

---

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