What's Changed
- Restart a self-hosted server from the server menu by @NorbertBodziony in #8373
- Keep the saved OpenCode key away from the free models by @Sniezka1927 in #8374
- Add an app icon picker to the mobile app by @nrb-dev in #8376
- Add the shared test Google account to the development settings by @NorbertBodziony in #8378
- Show the cloud server plans in mobile Settings > Billing by @nrb-dev in #8382
- Open a new agent after you create it by @NorbertBodziony in #8384
- Keep a same-page sign-in after a secure password fill by @Sniezka1927 in #8383
- Let the user choose the agents of each Vault item by @NorbertBodziony in #8377
- Add two-step codes to Vault logins in the mobile app by @nrb-dev in #8379
- build(nix): install OpenBot 0.69.0 by @github-actions[bot] in #8385
- Show a notice when a Codex model is at capacity by @NorbertBodziony in #8394
- Continue an agent turn that ends on a Portuguese or status next step by @Sniezka1927 in #8393
- Add Image and Video steps to workflows by @NorbertBodziony in #8389
- Play M4A, WAV and AAC attachments in the chat by @Sniezka1927 in #6831
- Ask before closing the window stops working agents on Windows and Linux by @Sniezka1927 in #6841
- Show the agent's text above a waiting question in the mobile app by @nrb-dev in #8405
- Offer the Android app as an APK on openbot.run by @nrb-dev in #8404
- Let users copy the cause behind the general agent error by @Sniezka1927 in #6842
- Add the Agents page to mobile Settings and Server Settings by @nrb-dev in #8396
- End failed channel replies when their run completes by @Sniezka1927 in #8402
- Retry a flaky smoke item one time in smoke-and-ship by @Sniezka1927 in #8410
- Let admins edit a custom provider of a server in the mobile app by @nrb-dev in #8413
- Add Ultrafast and Claude fast mode to the mobile app by @nrb-dev in #8422
- Keep a host answering devices when one device's setup stops by @Sniezka1927 in #8423
- Report a shared database failure from list_tables, not an empty list by @Sniezka1927 in #6685
- Explain a Hermes turn that fails with admitted_turn_failed by @Sniezka1927 in #8424
- Fill a password and its confirmation in one secure fill by @Sniezka1927 in #8426
- Send the skill card's yes to the chat where Save was clicked by @Sniezka1927 in #8433
- Replace an OpenCode session of another folder by @Sniezka1927 in #8432
- Let a channel task save a key that the user wrote in its request by @Sniezka1927 in #8415
- Open the workflow when its notification is clicked by @Sniezka1927 in #8430
- Tell the agent that a WhatsApp list has only the allowed chats by @Sniezka1927 in #6683
- Count half of the active file cache as free server memory by @Sniezka1927 in #8439
- Let the user run their own provider CLI again after an update by @Sniezka1927 in #8438
- Send a WhatsApp post to an allowed number in any written form by @Sniezka1927 in #8453
- Skip a channel routine occurrence while its earlier run has open work by @Sniezka1927 in #6603
- Tell the channel when another Codex app holds the agent's chat by @Sniezka1927 in #8467
- Open the Vault dialog for an API key request by @NorbertBodziony in #8475
- Keep a WhatsApp turn silent when the agent must not answer by @Sniezka1927 in #8477
- Fill a saved card in a payment frame inside another payment frame by @Sniezka1927 in #8485
- Put the browser message box at the bottom centre again by @NorbertBodziony in #8490
- Keep the browser live view open on a slow server connection by @Sniezka1927 in #8482
- Send the server pool snapshot each minute by @NorbertBodziony in #8501
- Set up a custom Leaseweb server with one command by @NorbertBodziony in #8496
- Show the third usage window on a joined server by @Sniezka1927 in #8508
- Let owners set how many agent threads run at the same time by @NorbertBodziony in #8517
- Show agents with new messages on the agent dock by @NorbertBodziony in #8518
- Open the Add a server pricing page faster by @NorbertBodziony in #8514
- Fill a Vault authenticator code into fields named by their label by @NorbertBodziony in #8524
- Give GitHub Copilot agents Computer Use and their stdio MCP servers by @Sniezka1927 in #8519
- Open the app faster when chats are long by @Sniezka1927 in #8528
- Let a browser drag render one frame before the drop by @Sniezka1927 in #8529
- Show OpenCode replies after a background shell command by @Sniezka1927 in #8538
- Send the server pool snapshot each 5 minutes by @NorbertBodziony in #8543
- Send fewer requests to the account service by @NorbertBodziony in #8547
- Accept a form post on the MCP sign-in callback by @Sniezka1927 in #8549
- Say plainly when a sign-in server refuses the OpenBot app name by @Sniezka1927 in #8551
- Show the replies to a steered message below it in the agent chat by @Sniezka1927 in #8558
- Show a new server as ready only when it is online, and welcome its owner by @NorbertBodziony in #8561
- Move the Agents settings to Server settings for each server by @NorbertBodziony in #8559
- Keep skill scripts executable after install by @Sniezka1927 in #8571
- Check Pi again when its models.json changes by @Sniezka1927 in #8577
- Report an Akamai check only on a short page by @Sniezka1927 in #8579
- Keep JSON examples that redaction does not change as written by @Sniezka1927 in #8576
- Get the page files again when the browser reloads a tab by @Sniezka1927 in #8593
- Read a drawn page when its main container is hidden from the snapshot by @Sniezka1927 in #8595
- Add Sunra to the Apps marketplace and the Workflows canvas by @NorbertBodziony in #8589
- Move the Settings close button to the corner of the window by @NorbertBodziony in #8562
- Ask for the authorization server scopes when an MCP server has no resource metadata by @Sniezka1927 in #8604
- Draw light HTML previews on the light chat background by @Sniezka1927 in #8602
- Post a channel result once when the task has assigned work by @Sniezka1927 in #8603
- Show the correct plan storage of a hosted server on a virtual server by @NorbertBodziony in #8611
- Add TryPost to the Apps marketplace by @paulocastellano in #8363
- Do not list a provider that cannot run in list_models by @Sniezka1927 in #8619
- Make transparent pictures on the Canvas and paste pictures into it by @NorbertBodziony in #8634
- Name the MCP server that Codex could not start by @Sniezka1927 in #8641
- Resume an unloaded Codex session before a compaction by @Sniezka1927 in #8644
- Use the saved code length for a Vault authenticator fill by @Sniezka1927 in #8646
- Show the agent title after its name in the chat header by @NorbertBodziony in #8642
- Open chat file links from an agent's added folders and tool history by @Sniezka1927 in #8650
- Give a person's channel request to the lead when routing answers idle by @Sniezka1927 in #8655
- Make Computer Use ready after a grant while OpenBot runs by @Sniezka1927 in #8662
- Name the spent model in the backup switch note by @Sniezka1927 in #8667
- Start an agent's long job in its own process group by @Sniezka1927 in #8673
- Read the Hermes version without its update check by @Sniezka1927 in #8684
- Ask the teammate again for the status of its work in external chats by @Sniezka1927 in #8688
- Count the owner of a server on this computer as this computer's user by @Sniezka1927 in #8695
- Make a new browser background window after Linux closes it by @Sniezka1927 in #8701
- Connect Dropbox by registering the /callback path when a server refuses /mcp-auth by @Sniezka1927 in #8703
- Tell the agent which reload lets a saved login fill again by @Sniezka1927 in #8707
- Say why a member's computer did not open a local address by @Sniezka1927 in #8711
- Keep a model that only the agent's second account lists by @Sniezka1927 in #8717
- Start a new Hermes session when Hermes reports it as not_found by @Sniezka1927 in #8740
- Show only the redo when a Stop hook blocks a Claude reply by @Sniezka1927 in #8742
- Tell the user when Grok cannot start an MCP server by @Sniezka1927 in #8755
- Copy agents to another server in the mobile app by @nrb-dev in #8449
- Let ChatGPT start on computers with root certificates that Codex cannot read by @Sniezka1927 in #8760
- Add Library folders to the mobile app and sync them live by @nrb-dev in #8440
- Start on XWayland when software rendering is on under Wayland by @Sniezka1927 in #8765
- Fix the stage of the Android APK after a store build by @nrb-dev in #8768
- Find chat history by every word, and list the current chat by @Sniezka1927 in #8766
- Hide the Codex model mismatch warning after a model change by @Sniezka1927 in #8771
- Keep the turn trace out of channel history pages by @Sniezka1927 in #8776
- Send a smaller copy of each photo from the mobile app by @nrb-dev in #8778
- Clear the working state when a quiet routine run's subagents end by @Sniezka1927 in #8785
- Show a channel question card only while the agent waits for it by @Sniezka1927 in #8784
- Write only changed messages when the chat cache misses by @Sniezka1927 in #8794
- Open a mobile chat at the NEW section when it has unread messages by @nrb-dev in #8798
- Add a reply haptics switch to mobile settings by @nrb-dev in #8805
- Send the mobile chat draft with Return on a hardware keyboard by @nrb-dev in #8807
- Ask the user for MCP tool consent from Codex subagents by @Sniezka1927 in #8819
- Offer the APK of Android 1.4.9 on openbot.run by @nrb-dev in #8821
- Name the teammate's work in the note for a turn with no answer by @Sniezka1927 in #8822
- Show the full text of long approvals on the phone, desktop and web by @nrb-dev in #8830
- Name the account in the backup switch note when only the account changes by @Sniezka1927 in #8832
- Use the client metadata document when a server refuses registration by @Sniezka1927 in #8618
- Show a plain message when GitHub Copilot's model refuses the thinking setting by @Sniezka1927 in #8831
- Show an agent's MCP Sign in card in the channel by @Sniezka1927 in #6617
- Keep the urgent Live Activity updates for the events that the member must see by @nrb-dev in #8808
- Do not ask for edits in an added folder of a Workspace only Cursor agent by @Sniezka1927 in #6548
- Add the List Agents and Send Message shortcuts to the iPhone app by @nrb-dev in #8820
- Load all server data after a refresh asked for in the background by @nrb-dev in #8792
- Try the GPU again after a Linux start that stopped with no crash by @Sniezka1927 in #8842
- Keep a question open when the agent cannot wait for the answer by @Sniezka1927 in #8844
- Add more than one Cursor account, each from an API key by @Sniezka1927 in #8843
- Keep the last known efforts of a model that the effort sweep does not reach by @Sniezka1927 in #8858
- Do not take an image of a page with no root element by @Sniezka1927 in #8866
- Tell browser agents that the user does not see their page images by @Sniezka1927 in #8823
- Show paid OpenCode Zen models when an OpenCode Go key is saved, and read the OpenCode list again after start by @Sniezka1927 in #8865
- Hide the Android APK download on openbot.run by @nrb-dev in #8877
- Profile the main process when its loop stalls again by @NorbertBodziony in #8848
- Ask for a billing address, a tax ID and agreement to the terms in Checkout by @NorbertBodziony in #8875
- Make the mobile chat smoother while a reply arrives by @nrb-dev in #8878
- End a Grok process that does not answer when a session opens again by @Sniezka1927 in #8886
- Keep the AppImage files after OpenBot restarts itself by @Sniezka1927 in #8887
- Load a joined-server workspace one time and start signed in from the saved session by @NorbertBodziony in #8888
- Add Adobe Analytics to the Apps marketplace by @NorbertBodziony in #8893
- Prepare the v0.70.0 release by @NorbertBodziony in #8892
New Contributors
- @paulocastellano made their first contribution in #8363
Full Changelog: v0.69.0...v0.70.0