Security
- Updated the IP-address parser to fix a regular-expression denial of service affecting address parsing in rate limiting and proxy connections.
- Failed MCP responses now have a total size limit even when they use an event stream, preventing oversized error responses from being buffered without a bound.
Added
- In the desktop app's This computer mode, bots can see and use Mac and Windows apps when Let bots use this computer is enabled. Screen access is limited to owner-started chats and asks for approval on the first use of each app in a Space (computer).
- See subscription allowances, reset times and remaining credits in the account menu and Settings > Usage, with the same breakdown on the mobile account screen.
- Voice connections can reuse a supported model sign-in for speech and transcription instead of requiring another key (voice and calls).
- Added another optional remote computer adapter with suspend and resume support (computer providers).
- Mobile now offers French, Hebrew, Hindi, Korean, Brazilian Portuguese and Turkish; Hebrew uses a right-to-left layout.
- Owners can delete an unpaid organization from the plan choice, with the existing type-the-name confirmation.
- Operators can cap an account's total hosted model-credit usage without deactivating it (billing).
Changed
- Deleting a bot on web or desktop names the group chats that will also be deleted, including their messages, files and pages.
- Bots retain earlier conversation by token budget rather than stopping at eight exchanges, helping them follow decisions made earlier in a chat. Longer retained history can use more input tokens.
- Bots receive a description of their Docker computer's tools and limits before starting work, and can offer the computer card when you need to see or scan its screen.
- Admin-granted credit now includes computer hours for organizations without a monthly plan; purchased top-ups remain unchanged.
- Mobile Activity replaces the regular chat list while the bell is on. Chat messages fade under the header and composer, page cards fill the message column, and Android answer options align to the left.
- Self-host monitoring now alerts on sustained CPU overload and low available memory.
Fixed
- Local and compatible model streams honor the configured timeouts without a hidden five-minute limit. Leading inline thought blocks are treated as reasoning instead of appearing in replies, and rejected thinking levels recover from more endpoint error formats.
- Unresponsive Docker computers recover instead of leaving commands hanging or blaming the model connection. Quiet long-running commands keep their connection alive; recovery retains home files but ends running programs.
- Team computer file choosers open on the screen that requested them, screen startup waits for a chooser still launching, and stale process records no longer interfere with other screens after a restart.
- Computer workspace saves avoid repeated large-buffer copies, and mounted-home checkpoints keep screens available. Kubernetes computers whose pods disappear are recognized as gone and replaced automatically.
- Concurrent page-browser calls no longer read partially written settings. Group computer screens refresh when control changes in another tab, and typed input appears sooner during takeover.
- Voice calls keep a steady audio session so replies play and the microphone keeps working. Web and desktop no longer transcribe the bot's own spoken reply, and failed playback reports an error.
- Switching bots returns the transcript to the latest messages reliably. Snoozed open chats suppress ordinary browser notifications, and computer takeover requests produce one notification.
- The Mac computer-view header clears the window buttons, page views show one scrollbar, and dated bot-to-bot messages are easier to scan.
- The bot style setting stays available when no preference has been saved, so either style can be chosen.
- Incoming voice notes and other supported attachments are accepted when their reported media type includes parameters.
- Group messages, handoffs and membership changes no longer deadlock against a finishing bot turn.
- Group messages keep author labels after a bot leaves or is deleted. Android incoming-call labels use the selected app language; Android 12 and later still use the phone language for system-provided Answer and Decline buttons.
- Mobile dictation keeps a pending transcription across backgrounding or screen blur, and Send stays disabled until recording and transcription finish.
- Android custom server settings show Save, sheets fit tablets and foldables, composer controls align with the text, and voice calls show a hang-up icon.
Self-host upgrade notes
- If you use hosted model-credit caps, finish updating both API and worker processes before relying on enforcement. Existing admitted calls can finish, and costs above their reservation can exceed a cap; personal model connections remain available (billing).
- Local and compatible model streams now fully respect
MODEL_STREAM_TIMEOUT_MSandMODEL_STREAM_IDLE_TIMEOUT_MS. Setting the idle timeout to0allows a stalled stream to wait until cancellation (model connections). - Mobile language resources require the new native mobile build; the desktop release does not distribute that build.
What's Changed
- Allow operators to cap model credit usage by @elie222 in #4142
- Group bot-to-bot message lines under their date by @Quack6765 in #4112
- Fix self-host command targets by @earsonlau in #4145
- Cache the CJK fonts package so E2E shards never fail on its download by @elie222 in #4144
- Share one set of translation catalogs between web and mobile by @elie222 in #4133
- Label pull requests the screenshot bot added screenshots to by @elie222 in #4146
- Raise ip-address to the release that fixes its ReDoS by @elie222 in #4148
- Pin the Expo build tool so mobile releases build again by @elie222 in #4149
- Translate new strings by @elie222 in #4152
- Keep earlier conversation by token budget, not just eight exchanges by @elie222 in #4125
- Log refused tool calls and loop-guard stops by @elie222 in #4136
- Offer six more languages on mobile by @elie222 in #4155
- Log why a bot's computer refused it as busy by @elie222 in #4156
- Alert when the host is CPU-overloaded or low on memory by @elie222 in #4157
- Log per-device push receipt failures as warnings by @elie222 in #4158
- Don't report a cleanup removal its deadline cut short as an error by @elie222 in #4159
- Say why a workspace archive failed, without its paths by @elie222 in #4160
- fix: give each Team screen its own file-chooser portal by @hphproton in #4162
- Limit a failed MCP response as one body by @zicochaos in #4168
- fix(adapters): read accepted reasoning efforts listed after a colon by @mgwals in #4147
- Replace the page browser settings file whole so concurrent calls never read it half written by @zicochaos in #4170
- fix: record process start time in Team screen pid files by @hphproton in #4173
- Say on the site that the mobile app runs on iPad and iPhone Duo by @elie222 in #4174
- Keep Android sheets inside their bounds on tablets and foldables by @elie222 in #4175
- Stop bots replying with a tool-call list instead of doing the work by @elie222 in #4182
- Speak and transcribe with xAI, using a key or the Grok sign-in by @raphaelbarreiros in #3911
- fix(www): refresh GitHub star fallback by @elie222 in #4183
- fix(www): keep desktop downloads visible without GitHub discovery by @elie222 in #4184
- Show only Activity when the bell is on in the mobile inbox by @elie222 in #4187
- Prepare mobile 1.0.14 by @elie222 in #4186
- Create a bot when the model leaves out computer_mode by @nicolaeser in #4085
- test(api): wait for the lease race instead of fixed sleeps by @zicochaos in #3805
- test(desktop): wait for the ready stack before the negative setup checks by @zicochaos in #3799
- fix(web): complete the stick-to-end after a bot switch remounts the transcript by @rykersun in #4095
- test(web): wait for the focus roster response in the bot CRUD journey by @zicochaos in #3668
- Show typed input sooner on a taken-over computer screen by @zicochaos in #3939
- Keep one audio session through a voice call so replies play and the mic keeps listening by @Quack6765 in #3379
- fix(db): lock a group without blocking thread writers' key checks by @elie222 in #3617
- Lift the hidden 5-minute cap on local and compatible model streams by @Chawron in #4116
- fix(mobile): show the Server Save action on Android (#3936) by @balabommablock-cpu in #3944
- Tell bots what their Docker computer has before they probe by @zicochaos in #4044
- Add InstaBox as a remote computer provider by @CarmenDou in #4122
- Recover a Docker computer that stops answering commands by @Chawron in #4192
- Load the OpenTelemetry SDK only when telemetry is configured by @zicochaos in #4204
- Run the tests that read eas.json and translation catalogs on affected-only CI by @zicochaos in #4205
- fix(mobile): keep a dictation transcription across blur and background by @zicochaos in #4209
- fix(web): respect snooze for notifications of the open chat by @zicochaos in #4220
- fix(web): refresh a group's computer screen when control changes in another tab by @zicochaos in #4226
- fix(web): show one notification when a bot asks for the screen by @zicochaos in #4222
- Revert "Stop bots replying with a tool-call list instead of doing the work" (#4182) by @elie222 in #4188
- Finish recovering a stuck Docker computer by @Chawron in #4240
- Update translation catalogs by @elie222 in #4185
- Give admin-granted credit its share of computer hours by @elie222 in #4241
- Show subscription allowances and credits in Usage by @elie222 in #4176
- Wait for a screen file chooser that is still starting by @elie222 in #4250
- Line up the usage card with the stats below it by @elie222 in #4249
- Show a hang-up icon on the Android end-call button by @elie222 in #4246
- Fix uneven spacing in the Android chat composer and option buttons by @elie222 in #4245
- Add a recall eval that reproduces copied tool-step lists, and fix eval shell gaps by @elie222 in #4257
- Keep the computer screen header clear of the macOS window buttons by @nilisteinbock in #4258
- fix(web): show one scrollbar on a page view by @balabommablock-cpu in #4193
- fix(mobile): keep Send off while a dictation is still recording by @zicochaos in #4207
- Let owners delete an unpaid organization from the plan choice by @elie222 in #4256
- Left-align option button labels on Android by @nilisteinbock in #4260
- Ask for the organization name before deleting it from the mobile plan choice by @elie222 in #4262
- Add an enterprise page to the website by @elie222 in #4263
- Offer to open the computer when the user needs to see its screen by @nilisteinbock in #4259
- Compare bot computers as multiples on the pricing page by @elie222 in #4261
- Keep a model's inline thoughts out of the reply by @Chawron in #4264
- Hide redundant device timezone shortcut by @elie222 in #4265
- Fade messages under the mobile header and composer by @elie222 in #4247
- Give page cards the full bubble width on mobile by @elie222 in #4252
- Make mobile compatibility checks use the pinned SDK by @elie222 in #4275
- Keep computer workspace saves responsive and document k3s mounted homes by @stupidcoderJung in #4270
- Report a missing Kubernetes pod as a computer that is gone by @rinseaid in #4273
- Keep mobile dependency checks reproducible offline by @elie222 in #4276
- Keep the bot style setting available without a saved preference by @elie222 in #4271
- fix(api): store WhatsApp voice notes by normalizing MIME type parameters by @Bobraynor2 in #4281
- Avoid a race while the screen file chooser starts by @elie222 in #4278
- fix: name the groups a bot delete removes in the delete dialog by @hphproton in #4283
- Let bots use apps on screen in the desktop app's local mode by @elie222 in #4177
- Remove the charged-in-error refund line from the terms by @elie222 in #4287
- Log API event-loop stalls by @elie222 in #4288
- Group run failure reports by provider and failure kind by @elie222 in #4291
- Keep the Android mapping id on forwarded native crash reports by @elie222 in #4289
- Show incoming-call labels in the app's language on Android by @elie222 in #4293
- fix: keep the author label on messages from bots that left a group by @hphproton in #4285
- Fix the screenshot bot's oversized prompts and flaky browser setup by @elie222 in #4292
- Release v0.10.0 by @elie222 in #4274
New Contributors
- @mgwals made their first contribution in #4147
- @raphaelbarreiros made their first contribution in #3911
- @rykersun made their first contribution in #4095
- @Chawron made their first contribution in #4116
- @CarmenDou made their first contribution in #4122
- @nilisteinbock made their first contribution in #4258
- @stupidcoderJung made their first contribution in #4270
- @Bobraynor2 made their first contribution in #4281
Full Changelog: v0.9.0...v0.10.0