sync: port upstream Auto mode, t3.json, dialog polish (#4272–#4350)#185
Conversation
|
Warning Review limit reached
Next review available in: 1 minute Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (54)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ff34606 to
1b6f0cd
Compare
2ef0d92 to
b07b944
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2ef0d92542
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "approval-required", | ||
| "auto-accept-edits", | ||
| "medium-access", | ||
| "auto", |
There was a problem hiding this comment.
Preserve persisted medium-access runtime values
Replacing medium-access without a compatibility transform or migration makes existing Droid threads unreadable after upgrade: projection_threads.runtime_mode is decoded through ProjectionThreadDbRow, and persisted orchestration payloads are decoded through RuntimeMode, so rows/events written with the previously valid value now fail schema decoding instead of loading. Preserve the literal for backward compatibility or migrate/normalize it before narrowing the schema.
AGENTS.md reference: AGENTS.md:L22-L25
Useful? React with 👍 / 👎.
| }, | ||
| }; | ||
|
|
||
| const runtimeModeOptions = Object.keys(runtimeModeConfig) as RuntimeMode[]; |
There was a problem hiding this comment.
Restrict Auto to providers that implement it
Building the runtime options from this provider-independent map exposes auto for every provider in the web composer (and the mobile menus do the same), although only the Codex and Claude adapters added support. For example, selecting Auto for Droid reaches toAutonomyLevelForRuntimeMode, whose switch has no auto case, and DroidAdapter consequently passes undefined as the SDK session's autonomyLevel; this can prevent the session from starting or silently apply unintended permissions. Keep provider-specific option filtering or implement an explicit mapping for every adapter before exposing the mode globally.
AGENTS.md reference: AGENTS.md:L22-L25
Useful? React with 👍 / 👎.
| "scripts": [ | ||
| { | ||
| "name": "Setup Worktree", | ||
| "command": "vp i && ln -sf $T3CODE_PROJECT_ROOT/.env .env && ln -sf $T3CODE_PROJECT_ROOT/infra/relay/.env infra/relay/.env", |
There was a problem hiding this comment.
Quote the project-root paths in the setup command
When the repository path contains whitespace or shell glob characters, both unquoted $T3CODE_PROJECT_ROOT expansions are word-split before ln runs. The setup action then fails after dependency installation and does not create the expected .env links, which is common for checkouts under directories such as ~/My Projects; quote each complete source path in this command.
Useful? React with 👍 / 👎.
| const load: T3ProjectFileLoader["Service"]["load"] = Effect.fn("T3ProjectFileLoader.load")( | ||
| function* (workspaceRoot) { | ||
| const filePath = path.join(workspaceRoot, T3_PROJECT_FILE_NAME); | ||
| const raw = yield* fileSystem.readFileString(filePath).pipe( |
There was a problem hiding this comment.
Bound t3.json reads before loading the whole file
Every favicon resolution now calls this loader before checking the normal icon candidates, and readFileString allocates the entire t3.json before schema validation. A project containing an accidentally generated or maliciously large file can therefore cause large repeated allocations or exhaust the server when its favicon is requested; apply a small size limit before reading, consistent with the existing bounded workspace-file reader.
Useful? React with 👍 / 👎.
| style={{ | ||
| bottom: position.bottom, | ||
| left: position.left, | ||
| maxHeight: position.maxHeight, |
There was a problem hiding this comment.
Constrain the portaled command menu contents
On short viewports or while a mobile keyboard is open, position.maxHeight can be much smaller than the command list's max-h-72, but this wrapper leaves overflow visible and does not pass the available height to the child. With enough completion items, the menu therefore extends beyond its computed box and overlaps the composer it is meant to remain above; clip/scroll the wrapper or size the list from the calculated available height.
Useful? React with 👍 / 👎.
| * Codec between the raw `t3.json` file contents (lenient JSONC string) and the | ||
| * decoded {@link T3ProjectFile}. | ||
| */ | ||
| export const T3ProjectFileFromJson = fromLenientJson(T3ProjectFile); |
There was a problem hiding this comment.
Parse trailing commas without rewriting string contents
Using fromLenientJson for executable project scripts exposes its trailing-comma regex to command text: unlike the comment-removal passes, that regex is not string-aware, so a valid command containing a sequence such as ,} or ,] is silently changed before JSON decoding. For example, "command": "printf ',}'" is imported as printf '}', causing T3 Code to execute a different command than the repository declares; make trailing-comma removal preserve quoted strings or use a real JSONC parser.
Useful? React with 👍 / 👎.
| name: fileScript.name, | ||
| command: fileScript.command, | ||
| icon: fileScript.icon ?? "play", | ||
| runOnWorktreeCreate: fileScript.runOnWorktreeCreate ?? false, |
There was a problem hiding this comment.
Confirm before replacing the existing setup action
If an imported file script has runOnWorktreeCreate: true, this passes the flag directly to onAddScript; saveProjectScript then silently clears that flag from every existing project script. Because the import menu displays only the file script's name and immediately imports it, a user with a working local setup action can unknowingly disable it by importing a repository action. Label setup imports and require confirmation before replacing the current setup action.
Useful? React with 👍 / 👎.
1b6f0cd to
67a273a
Compare
b07b944 to
26e5de4
Compare
67a273a to
6223cb9
Compare
26e5de4 to
0ae2efb
Compare
6223cb9 to
6b45ba1
Compare
0ae2efb to
2813c2c
Compare
6b45ba1 to
35d7acb
Compare
2813c2c to
b9fa327
Compare
35d7acb to
fec2c09
Compare
b9fa327 to
8d30b7f
Compare
fec2c09 to
cf779fe
Compare
8d30b7f to
c05b57c
Compare
cf779fe to
7506571
Compare
c05b57c to
38dfe0e
Compare
7506571 to
d9a29ca
Compare
38dfe0e to
02b4a3e
Compare
d9a29ca to
4a8a97e
Compare
02b4a3e to
f39e783
Compare
4a8a97e to
fd8bdc5
Compare
f39e783 to
efd2142
Compare
fd8bdc5 to
504ae4e
Compare
efd2142 to
fe68e62
Compare
504ae4e to
9a4f596
Compare
fe68e62 to
db1415b
Compare
9a4f596 to
662ccf6
Compare
85ec6e0 to
bef5161
Compare
…laude (pingdotgg#4272) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> (cherry picked from commit fbd7742)
(cherry picked from commit 1c9a6de)
- Restore light-mode glass, dialog, dropdown, and composer colors - Refine provider wizard, changed-file cards, sidebar controls, and buttons - Update wizard step tests for the new list structure (cherry picked from commit e51538b)
Co-authored-by: codex <codex@users.noreply.github.com> (cherry picked from commit 4d83436)
(cherry picked from commit b41e89e)
bef5161 to
37d9d8c
Compare
Co-authored-by: aaditagrawal <aaditagrawal@users.noreply.github.com>
Keep fork-only medium-access in RuntimeMode alongside upstream Auto so presentation maps and Droid autonomy mapping typecheck and behave. Co-authored-by: aaditagrawal <aaditagrawal@users.noreply.github.com>
Summary
Ports upstream Auto mode, t3.json, and dialog polish onto fork
main(after #181–#184, #183).Merge order
#181→#182→#184→#183(merged) →#185→#186→#187Test plan
mainbefore merge