fix(mobile): use native settings and snooze controls - #12512
Conversation
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR substantially changes customer-facing mobile interactions, including native snooze navigation, model refresh behavior, Android filtering, and settings presentation across iOS and Android. The nested navigation and replacement control flows are beyond a small isolated UI adjustment and merit human review. You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: pingdotgg/t3code/.coderabbit.yaml Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review. 📝 WalkthroughWalkthroughThe pull request standardizes mobile settings section styling, updates Android and iOS custom snooze sheet presentation, and changes thread provider catalog controls to use pull-to-refresh and an anchored Android filter menu. ChangesSettings presentation
Custom snooze sheet
Thread provider catalog controls
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Bug fix Sequence Diagram(s)sequenceDiagram
participant User
participant ThreadSettingsMainContent
participant ProviderCatalogRunner
participant Alert
User->>ThreadSettingsMainContent: Pull to refresh provider catalog
ThreadSettingsMainContent->>ProviderCatalogRunner: Run provider discovery
ProviderCatalogRunner-->>ThreadSettingsMainContent: Return refresh result
ThreadSettingsMainContent->>Alert: Display reported error
Suggested reviewers: Merge Risk: ⚪ Minimal · up to The reviewed mobile changes present no concrete merge-blocking regression. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Comment |
## What's Changed * fix(mobile): use singular label for one settings environment by @juliusmarminge in pingdotgg/t3code#12282 * feat(mobile): add copy thread ID to thread list actions by @jakeleventhal in pingdotgg/t3code#12228 * fix(mobile): remove Android input underline backgrounds by @juliusmarminge in pingdotgg/t3code#12394 * chore(deps): upgrade Effect to rc.115 and Alchemy to beta.78 by @juliusmarminge in pingdotgg/t3code#12326 * chore(refs): sync Effect and Alchemy references to rc.115 and beta.78 by @juliusmarminge in pingdotgg/t3code#12327 * chore(relay): deploy with the Alchemy CLI and publish client config through an Action by @juliusmarminge in pingdotgg/t3code#12401 * chore(deps): bump the npm_and_yarn group across 1 directory with 3 updates by @dependabot[bot] in pingdotgg/t3code#12411 * fix(git): prevent stale branch selections from restoring files by @yashranaway in pingdotgg/t3code#10574 * chore(deps): bump parents that carry vulnerable transitive dependencies by @juliusmarminge in pingdotgg/t3code#12417 * fix(web): keep a file-to-symlink type change from crashing the diff view by @Mnigos in pingdotgg/t3code#11075 * Use T3 Device panel for mobile testing by @juliusmarminge in pingdotgg/t3code#12414 * fix(web): client spans reach the trace proxy again by @yordis in pingdotgg/t3code#12332 * fix(bitbucket): preserve rate limits from optional PR reads by @juliusmarminge in pingdotgg/t3code#12486 * fix(mobile): synchronize native permission registry access by @juliusmarminge in pingdotgg/t3code#12482 * fix(build): retain multiple license notices for one package by @juliusmarminge in pingdotgg/t3code#12489 * fix(build): parse executable imports without matching source strings by @juliusmarminge in pingdotgg/t3code#12488 * fix(mobile): synchronize native notification delegates by @juliusmarminge in pingdotgg/t3code#12483 * fix(relay): accept delegated thread IDs in activity routes by @juliusmarminge in pingdotgg/t3code#12484 * fix(git): explain fetch failures without exposing remote output by @juliusmarminge in pingdotgg/t3code#12485 * fix(web): sidebar search matches message content by @koushikxd in pingdotgg/t3code#11761 * fix(server): restore secrets when settings persistence fails by @juliusmarminge in pingdotgg/t3code#12487 * fix(ci): accept V2 transfer reports without cross-scenario comparisons by @juliusmarminge in pingdotgg/t3code#12492 * fix(web): speed up PR previews with fewer GitHub requests by @dominic-r in pingdotgg/t3code#11825 * fix(server): retry transient git failures during checkpoint capture by @saphid in pingdotgg/t3code#11665 * fix(mobile): keep archived threads visible during iOS search by @juliusmarminge in pingdotgg/t3code#12420 * perf(mobile): isolate Material You conversion on Android by @juliusmarminge in pingdotgg/t3code#12379 * perf(mobile): isolate iOS Live Activity imports by @juliusmarminge in pingdotgg/t3code#12380 * refactor(mobile): split home headers by platform by @juliusmarminge in pingdotgg/t3code#12381 * refactor(mobile): split native menus by platform by @juliusmarminge in pingdotgg/t3code#12382 * refactor(mobile): isolate thread row appearance by platform by @juliusmarminge in pingdotgg/t3code#12383 * refactor(mobile): split settings selection rows by platform by @juliusmarminge in pingdotgg/t3code#12384 * refactor(mobile): centralize platform header rendering by @juliusmarminge in pingdotgg/t3code#12388 * refactor(mobile): configure thread headers through the shared core by @juliusmarminge in pingdotgg/t3code#12389 * refactor(mobile): share file header actions and search configuration by @juliusmarminge in pingdotgg/t3code#12390 * refactor(mobile): share terminal header and menu configuration by @juliusmarminge in pingdotgg/t3code#12391 * refactor(mobile): share archived thread header configuration by @juliusmarminge in pingdotgg/t3code#12399 * refactor(mobile): compose review menus through the shared header by @juliusmarminge in pingdotgg/t3code#12400 * feat(mobile): search projects when starting a task by @juliusmarminge in pingdotgg/t3code#12496 * fix(mobile): preserve multiple model favorites by @juliusmarminge in pingdotgg/t3code#12505 * feat(server): export log records over OTLP by @yordis in pingdotgg/t3code#12493 * fix(mobile): use native settings and snooze controls by @juliusmarminge in pingdotgg/t3code#12512 * feat(web): sort pull requests by what is blocked on me by @flamboh in pingdotgg/t3code#12508 * fix(mobile): prefer pull-to-refresh on list screens by @juliusmarminge in pingdotgg/t3code#12515 * fix(acp): accept SDK elicitation requests by @shivamhwp in pingdotgg/t3code#11294 * fix(release): read relay configuration without loading deployment providers by @juliusmarminge in pingdotgg/t3code#12518 * fix(ci): reconcile native change labels against pinned commits by @juliusmarminge in pingdotgg/t3code#12517 * fix(release): strip Alchemy progress before parsing relay state by @juliusmarminge in pingdotgg/t3code#12519 * refactor: remove obsolete code by @t3dotgg in pingdotgg/t3code#9917 * fix(server): release oversized pull request diff cache entries by @juliusmarminge in pingdotgg/t3code#12523 * feat(mobile): view and control agent devices by @juliusmarminge in pingdotgg/t3code#12531 * fix(preview): recover host registration after request timeouts by @juliusmarminge in pingdotgg/t3code#12535 * fix(mobile): align built-in theme colors with desktop by @juliusmarminge in pingdotgg/t3code#12534 * feat(desktop): export main process telemetry over OTLP by @yordis in pingdotgg/t3code#12520 * fix(codex): surface app permission requests as approvable by @Exotic209093 in pingdotgg/t3code#7861 * chore(desktop): leave main process metrics export off until a metric exists by @juliusmarminge in pingdotgg/t3code#12540 * fix(release): drop placeholder allowBuilds entry that broke desktop builds by @juliusmarminge in pingdotgg/t3code#12544 ## New Contributors * @dependabot[bot] made their first contribution in pingdotgg/t3code#12411 * @koushikxd made their first contribution in pingdotgg/t3code#11761 **Full Changelog**: pingdotgg/t3code@v0.0.43-nightly.20260918.1895...v0.0.43-nightly.20260919.1948 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.43-nightly.20260919.1948
What Changed
Why
The model picker, settings groups, and custom snooze controls had drifted from native platform conventions. The handmade snooze header and filled action were especially inconsistent in dark and custom themes.
UI Changes
Settings in a custom dark theme. Before on the left, after on the right. Captured from main at
82cd1d1aabeand this branch with matching simulator, data, and scroll position.Custom snooze in the same theme and duration mode. Before on the left, after on the right.
Android model filters after:
Native pull-to-refresh recording:
https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/84b05ba8b52ceda8/t3-polish-pr-pull-to-refresh.mp4
Verified on iOS 26.5 and Android 16 simulators in light, dark, and custom themes. The mobile typecheck and 18 focused tests passed. Rechecked both snooze modes after constraining the SwiftUI host width. Metro development builds are installed on Pixel 7a and iPhone 16 Pro with EAS preview environment variables.
This change is confined to the mobile client. Provider requests, shared contracts, web, and desktop are unchanged.
Checklist
Prepared with Codex.