-
Notifications
You must be signed in to change notification settings - Fork 2.4k
T3 Code Mobile [WIP] #2013
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
T3 Code Mobile [WIP] #2013
Changes from all commits
Commits
Show all changes
77 commits
Select commit
Hold shift + click to select a range
096cab8
Add T3 Code mobile app and shared remote runtime
juliusmarminge 42913c2
Enhance mobile review comments with diff previews
juliusmarminge a446e04
get native highlighter setup properly
juliusmarminge 72b0cd4
shiki loading changes
juliusmarminge d98ca60
Improve mobile review diff rendering
juliusmarminge 542bd4d
feat(mobile): Add terminal powered by libghostty (#2056)
juliusmarminge 7e9abc4
Set mobile config scheme per app variant
juliusmarminge 2d4404f
Stage remote terminal launches and replay hydrated buffers
juliusmarminge f04e66b
Fix post-rebase mobile typecheck issues
juliusmarminge 9682ccc
move some stuff around
juliusmarminge 84da19e
Refactor remote terminal session state handling
juliusmarminge 19b3abb
Extract WebSocket RPC client into shared runtime package
juliusmarminge 0bbfe42
Ignore fast mode updates for Opencode models
juliusmarminge 8c32f0b
terminals
juliusmarminge 10a7f1f
Add mobile review profiling and syntax highlight debug tools
juliusmarminge 0945566
Add native mobile review diff rendering and static checks
juliusmarminge 06abaab
Add mobile source control discovery runtime state
juliusmarminge 1852930
Use branded ids in mobile runtime flows
juliusmarminge c11a2d1
Fix terminal attach session launch context
juliusmarminge 9f42a78
feat: ios16 support (#2469)
Yash-Singh1 b5cc012
Fix saved environment runtime test mocks
juliusmarminge e302278
Add inline review comment selection to mobile diffs
juliusmarminge ce357c9
Add remote review diff plumbing
juliusmarminge 8f5cd83
Switch review preview timestamps to DateTimeUtc
juliusmarminge 41b4536
rm
juliusmarminge 1781937
use custom react-native-nitro-markdown
Yash-Singh1 de250a5
Restrict review diff preview to workspace roots
juliusmarminge 620d15f
Refactor review sheet into focused native review hooks
juliusmarminge 364760b
Fix mobile native static check typecheck
juliusmarminge f355314
Refactor mobile remote search and review state
juliusmarminge ed36e45
Handle truncated git review diff previews safely
juliusmarminge 9f00b5d
Rename branch state to VCS refs
juliusmarminge d4e3351
Replace git react-query layer with vcsRefManager and source control acti
juliusmarminge 4a29fb2
Refactor client runtime state refresh handling
juliusmarminge f9b3e8d
Rename git state to VCS and add diff preview caching
juliusmarminge 8ebdd91
Fix browser VCS status test mocks
juliusmarminge cc11ac4
Harden remote connect and subscription handling
juliusmarminge 078328a
Normalize branch and model selection handling
juliusmarminge a3b05d2
Refactor collection handling for mobile remote connect
juliusmarminge 0e0cc9c
Refactor mobile ordering and catalog assembly
juliusmarminge 0e283de
Refine mobile environment connection flows
juliusmarminge 61c162f
Sync mobile remote branch with main
juliusmarminge 0ff6780
Fix CI regressions after branch sync
juliusmarminge a64933c
Handle intentional WS closes and heartbeat freshness
juliusmarminge c074c0d
Add mobile project onboarding flow
juliusmarminge 7a80352
Unify mobile new-task and project sheet headers
juliusmarminge ee3a8aa
Add shared remote runtime for mobile and web
juliusmarminge 0179c26
Adapt mobile runtime to Effect base
juliusmarminge 25fb1e5
Move mobile and shared runtime cleanups below relay
juliusmarminge 99343f6
Remove stale web UUID import
juliusmarminge 2b56810
Upgrade mobile app to Expo SDK 56
juliusmarminge 88e0887
Use repository TypeScript catalog in mobile app
juliusmarminge 7d330f8
Restore checkpoint reactor error type imports after rebase
juliusmarminge 80c4c55
Remove unrelated server cleanup from mobile stack
juliusmarminge a631bdb
Simplify terminal test finalizer registration
juliusmarminge 3d9df26
Fix remote terminal and connection lifecycle races
juliusmarminge 9e90479
Restore default terminal creation on drawer open
juliusmarminge 9e4b67f
Make mobile terminal avoid the keyboard
juliusmarminge 3fc58bd
Correct terminal keyboard viewport sizing
juliusmarminge 8f8d87e
Refine mobile terminal keyboard controls
juliusmarminge fb8e2e5
Polish mobile terminal keyboard controls
juliusmarminge e31f360
Make terminal keyboard trigger hot reloadable
juliusmarminge f3e8fa6
Add terminal accessory clear action and fades
juliusmarminge 2e5ba9b
Align terminal accessory toolbar controls
juliusmarminge 4b864ba
Restore compact terminal accessory sizing
juliusmarminge f6372aa
Use transparent glass for terminal keyboard trigger
juliusmarminge 67b9976
Align mobile review selection actions
juliusmarminge bf4f9db
Fix review comment keyboard layout
juliusmarminge 1785ad8
Refine review comment sheet layout
juliusmarminge 4e387fd
Fill review comment text input
juliusmarminge 57b240c
Keep review comment keyboard active
juliusmarminge e26d6dc
Balance review comment action row
juliusmarminge fc30d16
Stop refocusing review composer during dismissal
juliusmarminge cde7113
Let native sheet dismiss review keyboard
juliusmarminge e7d5cb3
Tighten new task keyboard toolbar spacing
juliusmarminge 78d02ba
Align Expo menu toolbar triggers
juliusmarminge 9a20e0b
Fix mobile composer menu trigger alignment
juliusmarminge File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| root = false | ||
|
|
||
| [*.{kt,kts}] | ||
| indent_size = 2 | ||
| ktlint_code_style = android_studio | ||
| ktlint_standard_blank-line-between-when-conditions = disabled | ||
| ktlint_standard_class-signature = disabled | ||
| ktlint_standard_function-signature = disabled | ||
| ktlint_standard_import-ordering = disabled | ||
| ktlint_standard_multiline-expression-wrapping = disabled | ||
| ktlint_standard_trailing-comma-on-call-site = disabled | ||
| ktlint_standard_when-entry-bracing = disabled |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,41 @@ | ||
| # Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files | ||
|
|
||
| # dependencies | ||
| node_modules/ | ||
|
|
||
| # Expo | ||
| .expo/ | ||
| dist/ | ||
| web-build/ | ||
| expo-env.d.ts | ||
|
|
||
| # Native | ||
| .kotlin/ | ||
| *.orig.* | ||
| *.jks | ||
| *.p8 | ||
| *.p12 | ||
| *.key | ||
| *.mobileprovision | ||
|
|
||
| # Metro | ||
| .metro-health-check* | ||
|
|
||
| # debug | ||
| npm-debug.* | ||
| yarn-debug.* | ||
| yarn-error.* | ||
|
|
||
| # macOS | ||
| .DS_Store | ||
| *.pem | ||
|
|
||
| # local env files | ||
| .env*.local | ||
|
|
||
| # typescript | ||
| *.tsbuildinfo | ||
|
|
||
| # generated native folders | ||
| /ios | ||
| /android |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| included: | ||
| - ios/T3Code | ||
| - modules/t3-terminal/ios | ||
| - modules/t3-review-diff/ios | ||
|
|
||
| excluded: | ||
| - ios/Pods | ||
| - ios/build | ||
| - modules/t3-terminal/Vendor | ||
|
|
||
| reporter: xcode | ||
|
|
||
| disabled_rules: | ||
| - file_length | ||
| - function_body_length | ||
| - identifier_name | ||
| - line_length | ||
| - lower_acl_than_parent | ||
| - modifier_order | ||
| - trailing_comma | ||
| - type_body_length | ||
|
|
||
| opt_in_rules: | ||
| - array_init | ||
| - closure_end_indentation | ||
| - closure_spacing | ||
| - collection_alignment | ||
| - contains_over_filter_count | ||
| - contains_over_filter_is_empty | ||
| - contains_over_first_not_nil | ||
| - contains_over_range_nil_comparison | ||
| - empty_collection_literal | ||
| - empty_count | ||
| - empty_string | ||
| - enum_case_associated_values_count | ||
| - fallthrough | ||
| - fatal_error_message | ||
| - first_where | ||
| - flatmap_over_map_reduce | ||
| - force_unwrapping | ||
| - implicitly_unwrapped_optional | ||
| - last_where | ||
| - legacy_multiple | ||
| - legacy_random | ||
| - operator_usage_whitespace | ||
| - overridden_super_call | ||
| - prefer_self_type_over_type_of_self | ||
| - private_action | ||
| - private_outlet | ||
| - prohibited_super_call | ||
| - reduce_into | ||
| - redundant_nil_coalescing | ||
| - sorted_first_last | ||
| - static_operator | ||
| - toggle_bool | ||
| - unneeded_parentheses_in_closure_argument | ||
| - vertical_parameter_alignment_on_call | ||
| - yoda_condition |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| brew "swiftlint" | ||
| brew "ktlint" | ||
| brew "detekt" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,81 @@ | ||
| # T3 Code Mobile | ||
|
|
||
| > [!WARNING] | ||
| > T3 Code Mobile is currently in development and is not distributed yet. If you want to try it out, you can build it from source. | ||
|
|
||
| ## Quickstart | ||
|
|
||
| > [!NOTE] | ||
| > Uses native modules so using Expo Go is not supported. You need to use the Expo Dev Client. | ||
|
|
||
| This app has three variants: | ||
|
|
||
| - `development`: Expo dev client, installable side-by-side as `T3 Code Dev` | ||
| - `preview`: persistent internal preview build, installable side-by-side as `T3 Code Preview` | ||
| - `production`: store/release build as `T3 Code` | ||
|
|
||
| Run commands from `apps/mobile`. | ||
|
|
||
| ## Development | ||
|
|
||
| Start Metro for the dev client: | ||
|
|
||
| ```bash | ||
| bun run dev:client | ||
| ``` | ||
|
|
||
| Build and run the local iOS dev client: | ||
|
|
||
| ```bash | ||
| bun run ios:dev | ||
| ``` | ||
|
|
||
| Build and run the local iOS preview app: | ||
|
|
||
| ```bash | ||
| bun run ios:preview | ||
| ``` | ||
|
|
||
| Force the review diff highlighter engine: | ||
|
|
||
| ```bash | ||
| EXPO_PUBLIC_REVIEW_HIGHLIGHTER_ENGINE=javascript bun run ios:dev | ||
| ``` | ||
|
|
||
| `javascript` is the default and recommended setting for the review diff screen. Set `EXPO_PUBLIC_REVIEW_HIGHLIGHTER_ENGINE=native` only when you explicitly want to test the native Shiki engine. | ||
|
|
||
| Inspect the resolved Expo config for a variant: | ||
|
|
||
| ```bash | ||
| bun run config:dev | ||
| bun run config:preview | ||
| ``` | ||
|
|
||
| Run static checks for mobile native code: | ||
|
|
||
| ```bash | ||
| node ../../scripts/mobile-native-static-check.ts | ||
| ``` | ||
|
|
||
| The native lint task runs SwiftLint for Swift plus ktlint and detekt for Kotlin. Missing native tools are reported as warnings and skipped locally. CI installs the default toolset from `apps/mobile/Brewfile` before running the native checks. | ||
|
|
||
| ## EAS Builds | ||
|
|
||
| Create a cloud dev-client build: | ||
|
|
||
| ```bash | ||
| bun run eas:ios:dev | ||
| ``` | ||
|
|
||
| Create a persistent preview build: | ||
|
|
||
| ```bash | ||
| bun run eas:ios:preview | ||
| ``` | ||
|
|
||
| Android equivalents: | ||
|
|
||
| ```bash | ||
| bun run eas:android:dev | ||
| bun run eas:android:preview | ||
| ``` |
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CI lint step silently skips execution with
nodeMedium Severity
The CI step runs
node scripts/mobile-native-static-check.ts, but the script's entry-point guard usesimport.meta.main— a Bun/Deno API that doesn't exist in Node.js (it evaluates toundefined/falsy). This means the lint step will load the module but never callCommand.run, silently passing without executing any checks. The rest of the project usesbunto run scripts; this step likely needsbuninstead ofnode.Additional Locations (1)
scripts/mobile-native-static-check.ts#L201-L208Reviewed by Cursor Bugbot for commit ef1ed88. Configure here.