Uh oh!
There was an error while loading. Please reload this page.
T3 Code Mobile [WIP] - #2013
Merged
Merged
Conversation
Loading
Uh oh!
There was an error while loading. Please reload this page.
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
packages/client-runtimeandpackages/sharedso web and mobile can share the same behavior.Testing
Note
High Risk
Large greenfield surface (native modules, vendored Ghostty, new RPC/review paths) plus cross-platform refactors to shared runtime and terminal ID defaults that can break persisted client state.
Overview
Adds a new Expo/React Native mobile client under
apps/mobile(dev/preview/production variants, EAS, Uniwind theming, Expo Router) that talks to the same backend via@t3tools/client-runtimeand@t3tools/shared.Native surfaces: an iOS Ghostty-backed terminal module (
t3-terminal, vendoredGhosttyKit.xcframework) and an iOS native review diff renderer (t3-review-diff) with JSON-driven rows, token patches, and gestures; review highlighting defaults to JavaScript/Shiki via Metro workspace resolution.Tooling & CI: new macOS job Mobile Native Static Analysis (
swiftlint/ktlint/detektviascripts/mobile-native-static-check.ts),bun lint:mobiledocumented inAGENTS.md, and formatter/linter ignore patterns for generatedios/androidtrees.The broader PR (per description) also refactors web/desktop connection, terminal IDs, VCS/git state, and server review/terminal streaming to align with the shared runtime—treat persisted terminal IDs and RPC contracts as migration-sensitive.
Reviewed by Cursor Bugbot for commit 9a20e0b. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add mobile app with terminal, review diff, and Git action support
apps/mobileReact Native/Expo app with routing, navigation, and theming; includes home, thread, review, terminal, and connection management screensT3TerminalSurfacenative module with input/resize events and buffer replay logicT3ReviewDiffSurfacewith Shiki-based syntax highlighting, word-level diff ranges, and a review comment composer sheet with selection controllerpackages/contractswithterminal.attach,subscribeTerminalMetadata, andreview.getDiffPreviewRPC endpoints; updatesWsRpcClientand server WS layer accordinglyReviewServiceon the server with workspace-bound cwd validation andGitVcsDriver.getReviewDiffPreviewproducing dirty and branch-range diff sources with SHA-256 hashesterminalStateStoreto a newterminalUiStateStore(Zustand, persisted) with stable incremental terminal IDs (term-1,term-2, …) and server-side terminal open callsclient-runtimemodules:WsTransport,terminalSessionState,vcsStatusState,vcsRefState,vcsActionState,threadDetailState,checkpointDiffState,composerPathSearchState,archivedThreadsState,environmentConnection, and othersterminalIdis now required (no default) inTerminalSessionInput,TerminalWriteInput,TerminalResizeInput, andTerminalClearInput; callers not providing an explicit id will fail schema decodingMacroscope summarized 9a20e0b.