Skip to content

T3 Code Mobile [WIP]#2013

Open
juliusmarminge wants to merge 39 commits intomainfrom
t3code/mobile-remote-connect
Open

T3 Code Mobile [WIP]#2013
juliusmarminge wants to merge 39 commits intomainfrom
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 introducing substantial new mobile/native iOS code (including a vendored GhosttyKit.xcframework) and adding new CI/static-analysis steps that can affect build reliability.

Overview
Adds an initial Expo-based mobile app under apps/mobile, including variant-driven app.config.ts, Metro/Uniwind setup (global.css), build configs (eas.json), and mobile-specific repo hygiene files.

Introduces native iOS Expo modules for a terminal and a review diff surface (new podspecs and Swift sources), and vendors the Ghostty terminal framework.

Extends CI with a macOS job to install swiftlint/ktlint/detekt from apps/mobile/Brewfile and run scripts/mobile-native-static-check.ts, and updates formatter/linter ignores and contributor guidance to account for generated mobile types and native linting.

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

Note

Add React Native mobile app with terminal, git, and review diff support

  • Introduces a new Expo/React Native mobile app (apps/mobile) with full navigation: home, connections, thread detail, terminal, git controls, and review diff screens.
  • Adds a native iOS terminal surface backed by GhosttyKit (vendored libghostty) and an Android fallback using a scrollable text view; both emit onInput/onResize events to JS.
  • Overhauls the terminal system: adds attachStream and subscribeMetadata APIs to the server's TerminalManagerShape, introduces event sequencing, subprocess child-command label inference, and a new TerminalMetadataStreamEvent (snapshot/upsert/remove). DEFAULT_TERMINAL_ID changes from 'default' to 'term-1'.
  • Adds three new WebSocket RPCs — terminal.attach, subscribeTerminalMetadata, and review.getDiffPreview — wired through contracts, server handlers, and client runtime.
  • Expands @t3tools/client-runtime with state managers for terminal sessions, thread detail, git branches/status/actions, shell snapshots, environment runtime, reconnect backoff, and a BaseWsTransport class.
  • Adds a ReviewService with getDiffPreview that produces working-tree and branch-range diffs with SHA-256 hashes and byte-limit truncation; mobile renders diffs via Shiki with word-level inline diff highlighting.
  • Migrates web terminal state from terminalStateStore to a split terminalUiStateStore (UI layout) + terminalSessionState (server session) model; orphan cleanup, keyboard shortcuts, and sidebar indicators all updated accordingly.
  • Risk: terminalId is no longer defaulted server-side; all callers must provide an explicit terminalId, and any persisted 'default' IDs will not match the new 'term-1' default.

Macroscope summarized fd93d7f.

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