Skip to content

fix(mobile): stabilize navigation and status controls - #407

Merged
rynfar merged 2 commits into
pylonfrom
upstream/2026-09-07-mobile-foundation
Sep 8, 2026
Merged

rynfar merged 2 commits into
pylonfrom
upstream/2026-09-07-mobile-foundation

Conversation

@rynfar

@rynfar rynfar commented Sep 8, 2026 •

Copy link
Copy Markdown
Collaborator

Mobile thread selection could be lost during native swipe-back, long presses could navigate while opening a menu, and connection projections and styling caused avoidable updates. This completes the remaining product portion of #8694 and integrates its related mobile style and status-control follow-ups.

The final behavior shares stable per-environment projections, isolates iOS symbols from Android icon loading, uses UIKit menu preparation/display/cancel events to decide taps, and keeps connection, message sync and working status in one floating control. Pressed, disabled, theme and data styles retain their conditions under Tailwind 4.3.3.

Pylon adaptations:

  • Retain Pylon app identity, fingerprint runtime policy, Android anchored menus and token-colored native menu icons. The development portion of #8694 already landed in perf(mobile): preserve cache and dispose replaced development runtimes #341; its upstream agent guidance and appVersion policy remain intentionally excluded. The home focus clock is already equivalent.
  • Preserve Prime's pending interaction guard, context-window display, session compaction state and selected-row behavior. Status spinners stop for reduced motion, inactive apps and unfocused screens; the duration clock pauses offscreen.
  • Preserve the fixed cross-client status colors documented in docs/user/status-indicators.md. Theme changes apply to controls, surfaces, warnings and errors without replacing that vocabulary.
  • Regenerate the lockfile from the two dependency patches and regenerate mobile themes with Pylon's generator.

Sources (bounded upstream head 062987b2fb0ef48cc7776d654931bd9f3bcf1f9f):

  • 1f8ed54add4133ac39effceded8fc1fff12d8e03 — fix(mobile): speed up dev iteration (#8694)
  • 85f2479ffe5c9d8ffa91f1bfae5234df4061292f — refactor(mobile): style plain views with Uniwind classes instead of the theme bridge (#9322)
  • 1f7a3c11ca864898b136a35011ad10777ea07544 — fix(mobile): pressed and disabled styles no longer apply unconditionally (#9355)
  • de025aa69ffb0ce1a45d30aed25c60454660b62d — fix(mobile): show loading and syncing in the working pill (#9466)
  • 1cb49c3df2e0fb4bc2c6e88b0f102c1f9eb8cee5 — fix(mobile): even out the working pill's spacing (#10209)
  • b438447f67b6b61bbe6f564d8b78fd90702117c5 — fix(mobile): use selected theme across input forms and controls (#10239)
  • bb5748bfac0fbeffe690875fa485a5cbe7b99132 — fix(mobile): show connection status in the floating pill instead of a second one (#10440)

Validation: 63 focused tests across 13 files; mobile typecheck and scoped lint; generated mobile themes; successful iOS development build (264 seconds) and installation on the isolated verification simulator. The integrated iOS pass verified theme selection, ordinary thread entry/back navigation, a 700 ms long press opening its native menu without navigating, a subsequent normal tap opening the thread, and one reconnect pill disappearing after the disposable server recovered. Router tests cover selection overlapping a native closing transition; that precise overlap was not reproduced interactively.

Android development bundle generation also passed, including the per-icon imports. The native Android UI was not exercised. Bundle switching triggered Expo development-launcher crashes during native permission/notification module registration; stopping the app and launching it cleanly succeeded and the complete interaction pass ran from that launch. No agent turns were sent and no live user database was changed.

Before and after the conditional-style/theme update (Grove):

Before After

Long-press menu, reconnecting, and recovered:

Menu without navigation Reconnecting Recovered

Gesture recording: https://github.com/user-attachments/assets/020ef90c-6d05-4002-8717-892cca34ef1a

Implemented with GPT-6 in the Codex desktop harness.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.6 KiB 13.7 KiB +98 B (+0.7%) 15.1 KiB ✅
Codex Thread snapshot wire 7.1 KiB 7.1 KiB +8 B (+0.1%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.6 KiB 6.6 KiB +90 B (+1.3%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 56.5 KiB 57.3 KiB +822 B (+1.4%) 66.4 KiB ✅
Codex Live turn messages 8 8 0 (0.0%) 21 ✅
Claude Total thread wire 13.7 KiB 13.8 KiB +172 B (+1.2%) 15.1 KiB ✅
Claude Thread snapshot wire 7.1 KiB 7.1 KiB −3 B (−0.0%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.6 KiB 6.7 KiB +175 B (+2.6%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 57.3 KiB 58.2 KiB +928 B (+1.6%) 66.4 KiB ✅
Claude Live turn messages 8 10 +2 (+25.0%) 21 ✅

Baseline: a641115 · PR result: 49cb968 · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 111.2 KiB
  • Claude decoded thread snapshot: 111.9 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@rynfar
rynfar marked this pull request as ready for review September 8, 2026 01:49
@rynfar
rynfar merged commit 566d2b2 into pylon Sep 8, 2026
18 checks passed
@rynfar
rynfar deleted the upstream/2026-09-07-mobile-foundation branch September 8, 2026 01:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant