Repository navigation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow up on #3284 by bringing its model-role, subagent, and composer behavior to the native iOS and Android apps. Shared model selection and message ownership stay in Kotlin; focus, keyboard, safe-area handling, and localized labels stay in the native surfaces.
primaryandfastselector rows and badges on configured concrete models. Resolve only enabled defaults; fast falls back to primary with a localized explanation. Preserve semantic selectors when sending to the host.isSubagent; keep orphan children in their own branch without repeating their content. Verify live updates preserve expanded cards.Add native English/Chinese role labels and focused shared/native regression coverage. Existing file preview and runtime-file behavior was regression-tested; Harmony-specific file diagnostics are not ported by this change.
Type and Areas
Type: bug fix / UI/UX / test.
Areas: native Android, native iOS, mobile shared core-domain and core-feature.
Motivation / Impact
Before this change, the native model picker exposes only concrete model IDs, marked Task owners can lose child steps, and a collapsed draft competes for space with a supplemental microphone. Both native apps now expose the same role choices and subagent ownership behavior as HarmonyOS, with compact draft previews and native bottom-inset handling.
Verification
Passed on the change before rebasing onto latest upstream/main. The intervening mobile changes affect only HarmonyOS i18n files; the native/shared files tested here are unchanged by the rebase.
:app:assembleDebugpassed. Dedicated emulator instrumentation passed on phone and wide configurations (3 tests each):StreamingPresentationUITests: semantic model-role selection, collapsed draft preservation and expanded-only microphone, subagent details/live completion, and full-shell keyboard/streaming visibility. Tests run withxcodebuild test -project OpenBitFun.xcodeproj -scheme OpenBitFun -parallel-testing-enabled NOand-only-testing:OpenBitFunUITests/StreamingPresentationUITests/<test>for:testComposerRoleRowsSelectSemanticModeltestCollapsedDraftKeepsTextAndShowsVoiceOnlyWhenExpandedtestSubagentDetailsMatchHarmonyPreviewAndThinkingtestFullShellRemainsVisibleThroughKeyboardAndStreamingTesting/run-pure-swift-tests.sh,pnpm run mobile:ui:check,pnpm run theme:color-audit:all, andgit diff --checkpassed.Existing failures reproduced on the untouched main baseline:
ConversationViewTest.insetsKeepTheEndsOfTheTranscriptClearOfTheFloatingOverlays, line 505: the short transcript does not move upward when bottom padding grows.RemoteSessionStoreTest.imageSendFailureDoesNotConsumeAttachmentsAndAckKeepsNewTyping.mobile:architecture: existing cross-surface read inClientBuildContractTestand existing exported default parameters inAccountUiState,RemoteSidebarPresentation, andConversationModels. No baselines or assertions were loosened.Reviewer Notes
Native validation uses remote-session fixtures and simulated transport; it is not a live remote-host end-to-end run. Remote Workspace, Peer Device Mode, and Detached Dispatch were not exercised.
RemoteCommand and persisted record shapes are unchanged. Existing concrete model IDs and the four-argument native ModelOption constructor remain supported. Android's existing default remains Simplified Chinese; explicitly chosen language settings remain intact.
Checklist