Skip to content

chore: promote develop to main for 0.7.2 - #512

Merged
RasulOs merged 25 commits into
mainfrom
develop
Oct 25, 2026
Merged

RasulOs merged 25 commits into
mainfrom
develop

Conversation

@RasulOs

@RasulOs RasulOs commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator

Promote all of develop to main for the Mobilerun 0.7.2 release.

Validation

  • develop at 25c3e58 has exactly the validated release tree 62603cc.
  • 108 unittest tests passed. The locked suite and the installed wheel with fresh PyPI dependencies both passed 1,382 tests + 41 subtests.
  • All four artifacts passed Twine; a clean export rebuilds them byte-identically. SHA-256 values are in chore(release): 0.7.2 #511.
  • The shim with the [anthropic] extra resolves to Mobilerun 0.7.2 without conflicts.
  • Android 16 emulator, installed wheel: ping passed, the gpt-6.1-sol smoke completed, and claude-sonnet-5 completed a Settings task with no usage warnings.
  • Portal map Map mobilerun 0.7.2 to Portal 0.7.27 gists#8 (0.6.19-0.7.2 → 0.7.27) must merge before the tag.

Merge with Create a merge commit. After approval and merge, verify main matches the tested tree, push the annotated tag v0.7.2, and create the GitHub Release after PyPI succeeds.

🤖 Generated with Claude Code

RasulOs and others added 25 commits October 21, 2026 13:22
Accept an http(s):// Portal URL as the Android device for run, ping, and
the device subcommands. The framework then uses AndroidPortalHttpDriver
with the Portal auth token (MOBILERUN_DEVICE_TOKEN or device.auth_token)
and skips ADB serial resolution, Portal auto-setup, and keyboard cleanup.
External agents still need an ADB device. Device date is now optional
when the driver cannot report it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The warning suggested the nonexistent mobilerun[phoenix] extra and ran its
two install lines together. Phoenix tracing dependencies ship with
Mobilerun, so suggest a reinstall instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lock patched releases of banks, idna, mcp, multidict, nltk,
opentelemetry, pydantic-settings, setuptools, tinytag, and authlib.
Bump the Black dev pin and lint action to 26.10.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ories

Upgrade dependencies with remaining advisories
Persistent MCP connections were opened in the tool-call task and closed
from agent finalization, which anyio rejects with "Attempted to exit
cancel scope in a different task". Each connection now runs in its own
task that enters and exits the transport.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Phoenix handler imports its OpenTelemetry dependencies lazily, so a
missing package raised ModuleNotFoundError and aborted the run instead
of showing the reinstall hint. Catch import failures from handler
creation as well.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GPT-6 Luna answers the XML tool-call protocol with announcements only and
never emits a <function_calls> block, so direct-mode tasks ran out of
steps. OpenAI API and ChatGPT OAuth models now receive FastAgent tools as
Responses API function tools and get tool results back as
function_call_output items. Other providers keep the XML protocol, and
fast_agent.tool_calling: xml restores it for OpenAI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A timed-out get_ui_tree means the device side is still busy with the
request we abandoned. Portal and the mobilerun-ios portal (WDA) serve
state one request at a time, so the old 7-attempt schedule queued six
more reads behind a stuck app: up to ~4 minutes of `device ui --ios`
with nothing printed for the first 30s (DROID-305, mobilerun#484).

- Timeouts (TimeoutError, httpx.ReadTimeout) now get one retry, preceded
  by the recovery callback; other errors keep the full backoff schedule
  and late recovery. Connect timeouts are not treated as a busy device.
- Log "Waiting for the UI state from the device..." at INFO once when a
  fetch runs past 3s.
- `mobilerun device ui` sends INFO progress to stderr when no handler is
  configured, so the notice is visible and stdout stays the tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
grok-4.7 answers the XML protocol with announcements only on most tasks,
like GPT-6 Luna. xAI's Responses API accepts the same function tools, so
the XAI provider and xAI OAuth now use native tool calling as well.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tries

fix(state): retry timed-out state reads once and say when we are waiting
Streamed Anthropic responses never reported usage: the LlamaIndex adapter
only yields content deltas, so the usage on message_start and
message_delta never reached the caller and every step logged
"Could not get usage: 'usage'". MobilerunAnthropic now records that usage
from the SDK stream and yields a final chunk carrying it.

MiniMax streams carry no usage unless stream_options.include_usage is
sent, so MiniMax profiles now request it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The extra usage chunk came after LlamaIndex's callback wrapper had already
ended the event with the last content chunk, so track_usage() still
recorded zero tokens. Usage is now written onto the last yielded chunk
while the stream finishes, before the wrapper reads it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
deepseek-flash often wrote its own tool-call markup inside the XML
block, so FastAgent had to ask it to retry. DeepSeek now receives the
tools as Chat Completions function definitions. The tool choice stays
auto because DeepSeek thinking mode rejects a required tool call.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Use native tool calling in FastAgent for OpenAI and xAI models
…epseek

Use native tool calling for DeepSeek models
Timeouts from the Portal HTTP driver have no message, so failed actions
read "Failed to swipe: ". Error descriptions now fall back to the error
type. State reads on a driver without an ADB device no longer run or
report accessibility recovery, which needs ADB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
feat(android): connect over Portal HTTP without ADB
Record token usage for streamed Anthropic and MiniMax responses
Close MCP connections in the task that opened them
…warning

Show Phoenix reinstall hint when handler imports fail
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@RasulOs
RasulOs merged commit 8df7783 into main Oct 25, 2026
10 checks passed
@mintlify

mintlify Bot commented Oct 25, 2026

Copy link
Copy Markdown

Docs PR opened: https://github.com/droidrun/mobilerun-docs/pull/166

The docs now cover FastAgent's new tool_calling setting and no longer say FastAgent always uses XML tool calls.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants