Skip to content

feat(mobile): add the Issues tab and issue screens - #37040

Draft
juliusmarminge wants to merge 1 commit into
issues/5-linearfrom
issues/6-mobile
Draft

juliusmarminge wants to merge 1 commit into
issues/5-linearfrom
issues/6-mobile

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Nov 15, 2026 •

Copy link
Copy Markdown
Member

Part of the issue tracking stack, on top of #19274.

Problem

Issues can be browsed and worked on from web and desktop, but the mobile app has no way to see them.

What this adds

  • Issues tab. A fourth tab next to Chats, PRs and Usage. It lists issues across every connected environment, with search, state and involvement filters, paging, and the list + detail split on iPad and foldables. The tab remembers the issue it last showed, like the other tabs.
  • Issue screen. Description, activity (comments and events), linked pull requests, reactions, a comment box, close / reopen / change state, title and description edits, and label and assignee pickers. Opening an issue from the list shows the row's data immediately while the rest loads.
  • New issue. A sheet with a tracker scope picker and templates where the tracker has them.

How

  • The list grouping, paging, wording and permission rules moved out of the web page into client-runtime (issue-list, issue-presentation, and a shared cross-environment list atom), so web and mobile run the same logic. Web behaviour is unchanged.
  • The tab plumbing (workspace-tab-navigation, selection store, detail selection, column navigator) learned a third list + detail section instead of special-casing pull requests.
  • The native tab bars on iOS and Android each had a fixed list of tabs, so both get an issues entry. This changes the native fingerprint.
  • The Android list toolbar is now shared by pull requests and issues (ListSearchToolbar).

Not in this layer

  • Editing comments and @/# completions in the comment box (web's issue panel has neither).
  • Linked issues on the mobile thread screen.
  • State and involvement filters reset when the app restarts.

Testing

vp run check:changed passes. Run on an iPhone 17 Pro simulator (iOS 27.2) against a dev server with real GitHub data: the Issues tab, filters, the issue screen (state, labels, assignees, description, reactions, linked pull requests, activity, comment box) and the label picker. Not yet run on iPad, a foldable, or Android, and no write was sent from the device.

Claude Fable 5.2 via Claude Code

🤖 Generated with Claude Code

@github-actions github-actions Bot added vouch:trusted Author is trusted by repo permissions or the VOUCHED list. 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. size:XXL 1,000+ changed lines (additions + deletions). labels Nov 15, 2026
@github-actions

github-actions Bot commented Nov 15, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire — 5.0 KiB — 6.8 KiB ✅
Codex Thread snapshot wire — 3.8 KiB — 4.9 KiB ✅
Codex Live turn WebSocket wire — 1.2 KiB — 2.0 KiB ✅
Codex Live turn WebSocket decoded — 21.5 KiB — 24.4 KiB ✅
Codex Live turn messages — 1 — 8 ✅
Claude Total thread wire — 5.0 KiB — 6.8 KiB ✅
Claude Thread snapshot wire — 3.8 KiB — 4.9 KiB ✅
Claude Live turn WebSocket wire — 1.2 KiB — 2.0 KiB ✅
Claude Live turn WebSocket decoded — 21.9 KiB — 24.4 KiB ✅
Claude Live turn messages — 1 — 8 ✅

Other scenarios

No main baseline exists yet for these 64 scenario measurements.

All 64 scenario measurements
Provider Scenario Metric Main baseline This PR Impact PR ceiling
Codex short turn resume WebSocket decoded — 10.5 KiB — 12.7 KiB ✅
Codex short turn resume WebSocket messages — 2 — 2 ✅
Codex long turn running, cold open HTTP decoded — 281.7 KiB — 302.7 KiB ✅
Codex long turn running, cold open rows — 75 — 75 ✅
Codex long turn running, history page HTTP decoded — 92.4 KiB — 107.4 KiB ✅
Codex long turn running, history page rows — 75 — 75 ✅
Codex long turn finished, cold open HTTP decoded — 381.5 KiB — 410.2 KiB ✅
Codex long turn finished, cold open rows — 151 — 151 ✅
Codex long turn finished, socket cold open WebSocket decoded — 381.6 KiB — 410.2 KiB ✅
Codex long turn finished, socket cold open WebSocket messages — 2 — 2 ✅
Codex long turn finished, socket cold open rows — 151 — 151 ✅
Codex long turn finished, work page HTTP decoded — 186.2 KiB — 200.2 KiB ✅
Codex long turn finished, work page rows — 150 — 150 ✅
Codex idle thread resume WebSocket decoded — 65 B — 200 B ✅
Codex idle thread resume WebSocket messages — 1 — 1 ✅
Codex fleet shell snapshot HTTP decoded — 42.4 KiB — 53.7 KiB ✅
Codex fleet shell snapshot rows — 27 — 27 ✅
Codex fleet shell subscribe WebSocket decoded — 65 B — 200 B ✅
Codex fleet shell subscribe WebSocket messages — 1 — 1 ✅
Codex fleet shell resume check HTTP decoded — 18 B — 100 B ✅
Codex fleet shell resume check rows — 0 — 0 ✅
Codex stale shell reload HTTP decoded — 42.4 KiB — 53.7 KiB ✅
Codex stale shell reload rows — 27 — 27 ✅
Codex stale shell resume WebSocket decoded — 140 B — 400 B ✅
Codex stale shell resume WebSocket messages — 2 — 2 ✅
Codex stale todo list cold open HTTP decoded — 72.4 KiB — 83.0 KiB ✅
Codex stale todo list cold open rows — 75 — 75 ✅
Codex stale todo list cold open nodes — 2 — 4 ✅
Codex stale todo list cold open subagents — 2 — 4 ✅
Codex stale todo list cold open plans — 1 — 2 ✅
Codex stale todo list cold open providerTurns — 1 — 2 ✅
Codex stale todo list cold open checkpoints — 1 — 2 ✅
Claude short turn resume WebSocket decoded — 10.6 KiB — 12.7 KiB ✅
Claude short turn resume WebSocket messages — 2 — 2 ✅
Claude long turn running, cold open HTTP decoded — 283.3 KiB — 302.7 KiB ✅
Claude long turn running, cold open rows — 75 — 75 ✅
Claude long turn running, history page HTTP decoded — 93.4 KiB — 107.4 KiB ✅
Claude long turn running, history page rows — 75 — 75 ✅
Claude long turn finished, cold open HTTP decoded — 384.2 KiB — 410.2 KiB ✅
Claude long turn finished, cold open rows — 151 — 151 ✅
Claude long turn finished, socket cold open WebSocket decoded — 384.3 KiB — 410.2 KiB ✅
Claude long turn finished, socket cold open WebSocket messages — 2 — 2 ✅
Claude long turn finished, socket cold open rows — 151 — 151 ✅
Claude long turn finished, work page HTTP decoded — 188.1 KiB — 200.2 KiB ✅
Claude long turn finished, work page rows — 150 — 150 ✅
Claude idle thread resume WebSocket decoded — 66 B — 200 B ✅
Claude idle thread resume WebSocket messages — 1 — 1 ✅
Claude fleet shell snapshot HTTP decoded — 43.0 KiB — 53.7 KiB ✅
Claude fleet shell snapshot rows — 27 — 27 ✅
Claude fleet shell subscribe WebSocket decoded — 66 B — 200 B ✅
Claude fleet shell subscribe WebSocket messages — 1 — 1 ✅
Claude fleet shell resume check HTTP decoded — 18 B — 100 B ✅
Claude fleet shell resume check rows — 0 — 0 ✅
Claude stale shell reload HTTP decoded — 43.0 KiB — 53.7 KiB ✅
Claude stale shell reload rows — 27 — 27 ✅
Claude stale shell resume WebSocket decoded — 140 B — 400 B ✅
Claude stale shell resume WebSocket messages — 2 — 2 ✅
Claude stale todo list cold open HTTP decoded — 73.4 KiB — 83.0 KiB ✅
Claude stale todo list cold open rows — 75 — 75 ✅
Claude stale todo list cold open nodes — 2 — 4 ✅
Claude stale todo list cold open subagents — 2 — 4 ✅
Claude stale todo list cold open plans — 1 — 2 ✅
Claude stale todo list cold open providerTurns — 1 — 2 ✅
Claude stale todo list cold open checkpoints — 1 — 2 ✅

Baseline: unavailable · PR result: 06cb8f6 · 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: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

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

@github-actions

github-actions Bot commented Nov 15, 2026 •

Copy link
Copy Markdown
Contributor

🤖 Android preview

  🤖 Android
Fingerprint 4d8f7b0a47340c0caa8ab2ff11ffeea71183938b
Dev client Install
Update Details Update Permalink
Update QR

@github-actions

github-actions Bot commented Nov 15, 2026 •

Copy link
Copy Markdown
Contributor

🚀 Expo continuous deployment is ready!

  • Project → t3-code
  • Platform → ios
  • Scheme → t3code-preview
  🤖 Android 🍎 iOS
Fingerprint n/a bd32409f23d66c57770230ba7bb4faf674e1ef03
Build Details n/a Build Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: bd32409f23d66c57770230ba7bb4faf674e1ef03
App version: 2.3.0
Git commit: 042ed202f68fa30d7b9bec51974d4b17198a5dcc
Update Details n/a Update Permalink
DetailsBranch: pr-37040
Runtime version: bd32409f23d66c57770230ba7bb4faf674e1ef03
Git commit: d526a26daf5a0adbf9da335ea520a36893569fbc
Update QR n/a

Mobile gets a fourth tab that lists issues across environments, and an
issue screen with the same reach as the web panel: description, activity,
linked pull requests, reactions, comments, state changes, title and
description edits, labels, assignees, and new issues with templates.

The list grouping, paging and permission rules move from the web page into
client-runtime so both clients share them.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🚀 Mobile Continuous Deployment Trigger Expo preview build 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. size:XXL 1,000+ changed lines (additions + deletions). vouch:trusted 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