Terminals on desktop and phones, a pull requests tab, and a real mobile chat
5 highlights4 new features6 improvements7 fixes
An integrated terminal now runs on the host and reaches paired phones, the desktop right panel gains a Pull requests tab, and the iOS and Android apps get a full new-chat flow, composer, agents, model picker, files and a terminal of their own.
Featured
New chat, composer and agents on phones
Creating a chat on iOS and Android opens full screen with the last machine and project preselected, and the first message is sent in the new chat after the usual biometric confirmation. The composer attaches photos and files and dictates by voice, the header shows project, machine and link state, a status pill reports syncing, working or waiting on subagents with a Stop button, and an Agents sheet follows subagents as they run. (#1259)
Pull requests tab in the desktop panel
A read-only Pull requests tab lists the GitHub pull requests of the selected project's repository, summarises check results as passing, failing or pending, and marks the request for the checked-out branch. When no list can be read, the tab says what to do next instead of failing quietly. (#1260)
Integrated terminal on the host
A terminal panel sits under the chat and the right panel, shown and hidden from the title bar or with Ctrl+J, resizable, with several tabs per project. The shells run on the host and keep their scrollback, so terminals survive reconnects and can later appear on paired phones. (#1261)
Remote terminal on iOS and Android
A Terminal button in the chat header and on the machine screen opens a full-screen terminal for the project, with tabs, an accessory key row, text size, copy screen and restart for an exited shell. It reattaches and restores history when the link returns, and follows the same biometric confirmation and access grants as other control actions. (#1268)
Model picker, file browser and pull requests on phones
The composer gains a model chip that lists each model's reasoning efforts, recommends one, and remembers your choice per machine. Chats also get a read-only file browser with search, paging and image preview, and a fourth tab lists pull requests across paired machines with a project filter and the host's own explanation when a list cannot be read. (#1269)
New
Mobile interface refresh on iOS and Android
Project badges take their colour from the project name, search is a glass field that raises the keyboard once, and filter menus now say what they filter. The floating tab bar is icons only with the chosen tab in blue, new chat pickers are grouped cards with connection status and a search field, and Settings becomes an index with its own Connections, Appearance, Chats, Security and About pages. (#1258)
Phone protocol gains models, files, pull requests and terminals
The host can now serve a phone's model list with reasoning efforts, read-only project files, pull request lists and terminals, and a new chat can start at a chosen reasoning effort. Every read is scoped to the project and refuses paths outside it, and an older host answers with a clear unavailable message instead of an error. (#1262)
The agent finds and installs engine extensions
Searches now return the engine extensions available for the project's engine, installed or not, with readiness, version and what each one adds. The agent can request an install, which opens the usual trusted review; nothing installs silently and a declined install cannot be reopened. (#1275)
Unreal extensions from a local checkout in dev builds
A development-only setting points Unreal extension catalog reads and installs at a local checkout, so fixes can be exercised in a lab run before a release. Rows and reviews state plainly that the source is a local checkout, and production builds ignore the override. (#1278)
Improved
Repeatable agent-lab iterations
A written procedure and helper tooling now cover standing up an isolated dev stand, giving an agent a blind engine task, observing and measuring the run, and recording it in a ledger so successive iterations can be compared. (#1265)
Faster diagnosis when an engine editor crashes or hangs
A crashed or stuck editor is now identified in seconds with the reason and the next step, instead of two minutes of silence followed by a generic timeout. Connecting can restart the editor on request, and engine tool discovery is named clearly so the agent stops hunting for the right call. (#1263)
Smaller screenshots in long engine sessions
Engine screenshots are re-encoded before they enter the conversation, cutting a 39-image request from roughly 14 MB to under 2 MB with the same model cost and about half the latency. (#1264)
C++ rebuilds, scoped shell commands and a safer PowerShell path
On Unreal, connecting with restart closes and reopens the editor through the normal launch flow, which runs the pre-launch C++ build, so the agent no longer quits the editor and relaunches it by hand. Shell commands that touch the engine process or read outside the project now ask for permission, including PowerShell invocations that were previously not scope-checked. (#1281)
Detects an editor blocked by a modal dialog
An editor sitting on a modal dialog is now recognised as blocked rather than merely unresponsive, and the message names the dialog, warns that a pending action's outcome is unknown, and offers a restart. Restart also applies to a live editor that no longer answers. (#1285)
Tool search now finds engine extensions you have not installed
When the agent searches for tools or models, the results now also include matching engine extensions from the catalog that are not installed or are disabled, shown as installable candidates. Previously such a search only looked at what was already registered, so the agent could conclude nothing suitable existed and hand-write code instead of installing the extension built for the job. (#1288)
Fixed
A long turn no longer loses its chat view
Foreground shell tasks are no longer kept as sub-agent records that could evict history and invalidate the whole view. When a view is lost, the reason is shown and Reconnect, Stop and worker death behave instead of leaving the chat stuck on Working. (#1266)
Dev stands use their own engine credential store
A dev profile or sandboxed home now also points the Godot and Unreal bridges at the stand's credential store, so a lab run cannot touch the account's real credentials. The stand's log line names where each engine's bridges look. (#1267)
Unity plugin uses the stand's credential store
The dev stand exports the Unity credential directory alongside Godot and Unreal, so an editor started from a sandboxed stand reads the stand's store, and the log line reports it. Older Unity plugins ignore the variable, which the notes now say. (#1271)
Screenshots stored by reference so long chats stay responsive
Tool-result images are stored once and referenced from the chat history instead of being inlined in every capture, so a chat full of engine screenshots no longer freezes the window or becomes impossible to reopen. (#1273)
Long reasoning turns keep their chat view
A turn with a large streamed reasoning block no longer fences its own history and drops the chat view, and a permission request raised while a view was lost stays visible and answerable from the app and from the command line. (#1276)
Waits for another Unreal build before failing
When another UnrealBuildTool holds the machine-wide lock, the pre-launch build now reports it, waits and retries with bounded backoff instead of failing in under a second and sending the agent hunting through processes. (#1284)
Unreal restarts only when nothing is unsaved
Asking for a restart of a running Unreal editor now checks with the editor first: if any map, content package or asset editor still has unsaved work, the restart is refused straight away and nothing is saved or discarded. The agent is told how many packages changed and which ones, so it can save what it touched and ask you about the rest. When an asset editor is open, or the editor cannot be asked, the previous close-request path is used, and the restart guidance now says to save changes first. (#1289)
Under the hood
- test(agent-lab): run scripts/agent-lab tests in CI (#1270)
- chore(deps): engine CLIs to the latest releases (godot 0.36.0, unity 1.7.1, unreal 0.27.1) (#1272)
- docs(agent-lab): iteration 2 (fire task), six extension tasks, pending-call helper (#1274)
- docs(agent-lab): iteration 3 (pcg-forest-scatter, 83%), first live extension install by the agent (#1277)
- docs(agent-lab): iteration 4 (input controls, 70%): extension bypassed, editor rebuilt outside the App (#1279)
- docs(agent-lab): iteration 5 (GAS fireball, 75%): extension bypassed, permission scope gaps (#1280)
- docs(agent-lab): iteration 6 (control rig, 50%, not comparable): template pre-solved foot IK (#1282)
- docs(agent-lab): iteration 7 — Landscape island task (100%) (#1283)
- docs(agent-lab): iterations 8 and 9 — PCG forest rerun (100%), Enhanced Input rerun (70%) (#1287)
- docs(agent-lab): iteration 10 — GAS fireball rerun (83%) (#1290)
- docs(agent-lab): iteration 11 — Niagara campfire (67%), extension found by tool search (#1291)