Skip to content

fix(mobile): restore message times, file access and assistant controls - #3638

Merged
bobleer merged 4 commits into
GCWing:mainfrom
bobleer:bob/fix-mobile-conversation-details
Oct 31, 2026
Merged

bobleer merged 4 commits into
GCWing:mainfrom
bobleer:bob/fix-mobile-conversation-details

Conversation

@bobleer

@bobleer bobleer commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Fix mobile conversation details across Android, iOS, HarmonyOS and mobile-web:

  • Keep ordinary failed tool calls neutral and collapsible in legacy lists, ordered Read/Grep groups, subagent task cards, and nested subagent details while preserving their payload details, questions, approvals and reply-level failures.
  • Show localized user/assistant message timestamps, including host-record assistant times and legacy timestamp formats; omit missing/invalid times.
  • Allow explicit file preview/download outside the workspace on the selected execution provider. Automatic output delivery and runtime artifact URIs retain their existing root confinement.
  • Put assistant workspaces first and create Claw sessions directly from their native sidebar controls. Mobile-web already implements this assistant behavior.

Type and Areas

Type: bug fix / UI

Areas: native mobile, mobile-web, shared Kotlin presentation, remote file projection and Core host wiring.

Motivation / Impact

Routine tool failures should not dominate a successful conversation. Messages need visible times, temporary output such as /tmp/wxqr/qr.png must remain accessible, and assistant creation should use its dedicated mode. File access keeps the selected session/workspace/provider identity and never falls back to controller-local files. The file behavior requires an updated Desktop/CLI host; older hosts retain their existing explicit errors.

Verification

Passed locally before moving the unchanged patch to a clean worktree on current upstream/main:

  • Shared :core-feature:jvmTest with filters WorkspaceCatalogTest, RemoteSidebarPresentationTest, ConversationPresentationTest, ToolRowPresentationTest, SessionRecordReplicaTest: 47 tests; debug XCFramework generation.
  • Android :app:assembleDebug, :app:assembleDebugAndroidTest, and :app:connectedDebugAndroidTest for ChatMessageBubbleTest,ToolStatusRowTest: 24 tests each at compact and wide emulator sizes.
  • node --test src/mobile-web/tests/runtime-file-download.test.mjs src/mobile-web/tests/mobile-chat-regressions-browser.test.mjs src/mobile-web/tests/background-delivery-browser.test.mjs: 6 tests, including 390/768/1280px browser layouts.
  • Mobile-web type-check and production build; HarmonyOS assembleHap, workspace-catalog and host-text-retranslator Node tests.
  • iOS Testing/run-pure-swift-tests.sh and complete app Swift type-check. Native iOS UI execution is blocked locally by an installed SDK/simulator-runtime mismatch.
  • cargo test --locked -p openbitfun-services-integrations --no-default-features --features remote-connect --lib remote_connect::file_projection::tests: 6 tests.
  • cargo test --locked -p openbitfun-core --no-default-features --features remote-connect,git --lib service_agent_runtime::tests::controller_file_reads_support_absolute_and_relative_paths_outside_workspace: passed.
  • pnpm run theme:color-audit:all, pnpm run mobile:ui:check, pnpm run harmony:architecture, and git diff --check.

Known local baseline failures: mobile architecture has pre-existing findings in ClientBuildContractTest, AccountUiState, and ConversationModels; HarmonyOS's full LocalTest command reports 8 unrelated resource/i18n/login assertion failures even though hvigor returns success. The changed tool-collapse cases pass. The touched fixture now explicitly rejects an unused rollback call instead of missing the required interface method.

Additional review verification in the isolated worktree: mobile-web type-check, the expanded transcript/browser regressions, theme color audit, and GitHub configuration tests pass. The transcript and background-delivery browser suites now run in CI. Settled failed/cancelled read tools and failed/error/cancelled/rejected subagent task cards no longer appear to be continuously running. The added task-card cases also passed the browser suite, TypeScript check and all 28 theme audit surfaces.

Reviewer Notes

Latest main and related open PR diffs were checked before implementing. Related work on legacy assistant identity (#3428), CLI peer file surfaces (#3492), and mobile session model selection (#3544) does not cover these paths.

Remote coverage uses host-stream fixtures, local filesystem IO, and a simulated remote provider with a same-path controller file. No live SSH, relay, Peer Device, or Detached Dispatch connection was exercised. No persisted or wire schema changes and no user data migration are required.

Checklist

  • This PR is focused and does not include secrets, temporary prompts, generated scratch files, or unrelated artifacts.
  • Relevant verification is recorded above, or skipped checks are explained.
  • User-facing strings, docs, and locales are updated where applicable.

@bobleer
bobleer merged commit 1ba8213 into GCWing:main Oct 31, 2026
14 checks passed
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.

1 participant