Skip to content

T3 Code Mobile [WIP]#2013

Open
juliusmarminge wants to merge 47 commits into
mainfrom
t3code/mobile-remote-connect
Open

T3 Code Mobile [WIP]#2013
juliusmarminge wants to merge 47 commits into
mainfrom
t3code/mobile-remote-connect

Conversation

@juliusmarminge
Copy link
Copy Markdown
Member

@juliusmarminge juliusmarminge commented Apr 14, 2026

⚠️ WARNING :: VERY EARLY

Summary

  • Add a new Expo-based mobile client with remote connection setup, thread browsing, new-thread flows, composer UI, and git action sheets.
  • Move shared remote/runtime, git, thread-detail, and WebSocket state into packages/client-runtime and packages/shared so web and mobile can share the same behavior.
  • Refactor desktop startup and readiness handling to rely on HTTP session readiness, simplify window bootstrap, and remove the old listening-detector path.
  • Rework web connection, composer, sidebar, and git action flows to use the new shared runtime and state management.

Testing

  • Not run (PR content only).

Note

High Risk
High risk due to large new iOS native surface implementation (T3ReviewDiffView.swift) plus vendored native terminal framework, and new CI enforcement for native linting which can break builds/tooling on macOS runners.

Overview
Adds a new apps/mobile Expo app scaffold with variant-aware app.config.ts, Metro/Babel setup (including Uniwind + Shiki resolution), styling tokens in global.css, and supporting repo hygiene files (.gitignore, .editorconfig, README, eas.json).

Introduces native iOS modules for mobile: a native review diff surface (T3ReviewDiffSurface via T3ReviewDiffModule.swift + large T3ReviewDiffView.swift) and a terminal module podspec that vendors GhosttyKit.xcframework (with third-party notices).

Updates tooling/CI to support mobile native code: adds a macOS mobile_native_static_analysis GitHub Actions job that installs swiftlint/ktlint/detekt from apps/mobile/Brewfile and runs scripts/mobile-native-static-check.ts, expands oxfmt/oxlint ignore patterns for generated apps/mobile/android/ios folders, and documents the new bun lint:mobile requirement in AGENTS.md.

Reviewed by Cursor Bugbot for commit 554a1d2. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add mobile app foundation with terminal, review, and git screens to T3 Code

  • Introduces the React Native mobile app (apps/mobile) with Expo Router navigation, global atom registry, and environment connection management including QR-code pairing and secure storage of credentials.
  • Adds native terminal views for iOS (GhosttyKit-backed) and Android (ScrollView fallback) exposed as Expo modules (T3TerminalSurface), with a full ThreadTerminalRouteScreen managing session attach, input, resize, and font-size controls.
  • Adds a review diff system including a native T3ReviewDiffSurface iOS module, Shiki-based syntax highlighting, word-level diff ranges, and review comment composition with inline diff previews.
  • Adds git action sheets (overview, commit, branches, confirm) wired to a shared vcsActionManager and useSelectedThreadGitActions hook that orchestrates operations via the server.
  • Refactors the web app's terminal state from terminalStateStore to terminalUiStateStore, introduces terminalSessionState backed by attachStream/subscribeMetadata RPC, and replaces React Query-based git/VCS hooks with new useVcsStatus, useVcsRefs, and useCheckpointDiff state managers.
  • Adds server-side ReviewService and getReviewDiffPreview to GitVcsDriverCore, exposing working-tree and branch-range diff sources over a new review.getDiffPreview WS RPC endpoint.
  • Extends the WS RPC layer with terminal.attach and subscribeTerminalMetadata streaming endpoints; terminal session snapshots now carry monotonically increasing sequence numbers and dynamic labels (including child process names).
  • Adds shared client-runtime modules: WsTransport, wsRpcProtocol (configurable backoff and telemetry), threadDetailState, vcsStatusState, vcsRefState, vcsActionState, terminalSessionState, checkpointDiffState, composerPathSearchState, and archivedThreadsState.
  • Risk: DEFAULT_TERMINAL_ID changes from "default" to "term-1" and terminalId is now required on all TerminalSessionInput; any clients using the old default or omitting the field will break.

Macroscope summarized 554a1d2.

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

Labels

size:XXL 1,000+ changed lines (additions + deletions). 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.

2 participants