[codex] Fix mobile device builds and Android UI#3575
Conversation
📝 WalkthroughWalkthroughThe mobile app adds a personal-team iOS build path with bundle validation, conditional Expo plugin wiring, a release script, and updated build docs. It also introduces agent-awareness capability gating, a cross-platform symbol wrapper, platform-specific home header behavior, and updated home screen layout. ChangesiOS personal-team build mode
Home screen and header UI
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
@coderabbitai review |
✅ Action performedReview finished.
|
ApprovabilityVerdict: Needs human review This PR introduces new Android UI components and iOS Personal Team build support that changes push notification behavior. New platform features and configuration changes affecting runtime behavior warrant human review. You can customize Macroscope's approvability policy. Learn more. |
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/mobile/src/features/home/HomeHeader.tsx (1)
364-374: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winBind the iOS search bar to the current query state.
headerSearchBarOptionsdoesn’t expose a controlled text prop, so the iOS bar only reflects user input here. IfsearchQueryis cleared or prefills from route state, the native search text can stay stale unless it’s updated imperatively through the search bar ref.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/mobile/src/features/home/HomeHeader.tsx` around lines 364 - 374, The iOS search bar is currently only updated from user input, so its native text can drift from the current searchQuery state when the query is cleared or prefilled. Update the HomeHeader search bar setup to sync the native value imperatively through the existing search bar ref whenever searchQuery changes, using the headerSearchBarOptions configuration and the onChangeText/onCancelButtonPress handlers as the hook points.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/mobile/app.config.ts`:
- Around line 13-19: The Personal Team bundle identifier guard in app.config.ts
only checks for presence, so invalid values can still reach ios.bundleIdentifier
and fail later. Update the validation around personalTeamBundleIdentifier and
isIosPersonalTeamBuild to also reject non–reverse-DNS values such as single
labels, double dots, or whitespace, and throw an actionable error before the
config is used. Keep the check close to the existing
T3CODE_IOS_PERSONAL_TEAM_BUNDLE_ID validation so the failure happens in the same
place.
---
Outside diff comments:
In `@apps/mobile/src/features/home/HomeHeader.tsx`:
- Around line 364-374: The iOS search bar is currently only updated from user
input, so its native text can drift from the current searchQuery state when the
query is cleared or prefilled. Update the HomeHeader search bar setup to sync
the native value imperatively through the existing search bar ref whenever
searchQuery changes, using the headerSearchBarOptions configuration and the
onChangeText/onCancelButtonPress handlers as the hook points.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 3625b076-e6e6-41bb-9d02-58a6e7383c12
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (10)
apps/mobile/README.mdapps/mobile/app.config.tsapps/mobile/package.jsonapps/mobile/plugins/withoutIosPersonalTeamCapabilities.cjsapps/mobile/src/app/_layout.tsxapps/mobile/src/app/index.tsxapps/mobile/src/components/AppSymbol.tsxapps/mobile/src/components/ControlPill.tsxapps/mobile/src/features/home/HomeHeader.tsxapps/mobile/src/features/home/HomeScreen.tsx
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
Resolved pnpm-lock.yaml by re-running pnpm install against main's lockfile so the branch's Expo SDK bumps re-resolve on top of main. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The branch predated main's #3545 bump and pinned 1.21.6; keep main's version rather than silently downgrading it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Reopening — this branch is now merged up to date with
A review pass of the merged state flagged a few follow-ups worth a look (none blockers):
🤖 Generated with Claude Code |
What Changed
Why
The existing mobile UI relies on iOS SF Symbols and iOS navigation-bar behavior, leaving Android controls and the home header incomplete. Local iOS builds also assume capabilities that Apple Personal Teams cannot sign. This change provides platform-specific fallbacks while keeping the default production capability set unchanged.
UI Changes
Android now gets a dedicated home header with search, filter/sort, settings, and new-task controls. Personal Team iOS builds show notification and Live Activity controls as unavailable because those builds intentionally omit the required capabilities.
Screenshots/video were not captured because this pass did not run a dev server or native build. UI behavior is covered here by source review, type checking, static analysis, tests, and release smoke CI.
Validation
pnpm install --frozen-lockfileCI=1 pnpm --dir apps/mobile exec expo install --checkvp checkvp run typecheckvp run lint:mobilevp test— 536 files passed, 2 skipped; 4,099 tests passed, 7 skippedvp checkpassed with existing lint warnings. The mobile native lint task passed its static checks and reported that optional local SwiftLint, ktlint, and detekt binaries are not installed.Checklist
Summary by CodeRabbit
New Features
Bug Fixes
Note
Fix mobile builds and Android UI for iOS Personal Team and cross-platform support
isIosPersonalTeamBuildflag in app.config.ts, using a custom bundle identifier and a new withoutIosPersonalTeamCapabilities plugin that strips push, Sign in with Apple, and app groups entitlements.supportsAgentAwarenessPushin capabilities.ts, ensuring relay registration payloads reflect unavailable capabilities on Personal Team builds.HomeHeaderin HomeHeader.tsx with search, filter, and sort controls replacing the iOS-only header.SymbolViewwrapper in AppSymbol.tsx that maps SF Symbol names to Tabler icons on Android, falling back toprops.fallbackor null for unmapped symbols.HomeScreenswitchescontentInsetAdjustmentBehaviorto'never'and applies manual padding to avoid automatic inset adjustments.Macroscope summarized 3322fed.