Skip to content

sync: port upstream Auto mode, t3.json, dialog polish (#4272–#4350)#185

Merged
cursor[bot] merged 7 commits into
mainfrom
codex/sync-20260725-l5-auto-t3json-daf2
Jul 25, 2026
Merged

sync: port upstream Auto mode, t3.json, dialog polish (#4272–#4350)#185
cursor[bot] merged 7 commits into
mainfrom
codex/sync-20260725-l5-auto-t3json-daf2

Conversation

@aaditagrawal

@aaditagrawal aaditagrawal commented Jul 25, 2026

Copy link
Copy Markdown
Owner

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#187

Test plan

  • CI Check + Test green
  • Base is main before merge
Open in Web Open in Cursor 

@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@cursor[bot], you've reached your PR review limit, so we couldn't start this review.

Next review available in: 1 minute

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ffd4ee5a-5196-49e5-a567-072929673448

📥 Commits

Reviewing files that changed from the base of the PR and between 454fd79 and e29551e.

⛔ Files ignored due to path filters (2)
  • favicon.svg is excluded by !**/*.svg
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (54)
  • apps/marketing/package.json
  • apps/marketing/src/pages/schema/t3.json.ts
  • apps/marketing/vercel.ts
  • apps/mobile/src/features/threads/NewTaskDraftScreen.tsx
  • apps/mobile/src/features/threads/ThreadComposer.tsx
  • apps/server/src/assets/AssetAccess.test.ts
  • apps/server/src/project/ProjectFaviconResolver.test.ts
  • apps/server/src/project/ProjectFaviconResolver.ts
  • apps/server/src/project/T3ProjectFileLoader.test.ts
  • apps/server/src/project/T3ProjectFileLoader.ts
  • apps/server/src/provider/Layers/ClaudeAdapter.test.ts
  • apps/server/src/provider/Layers/ClaudeAdapter.ts
  • apps/server/src/provider/Layers/CodexSessionRuntime.test.ts
  • apps/server/src/provider/Layers/CodexSessionRuntime.ts
  • apps/server/src/provider/droid/DroidSdkMappings.ts
  • apps/server/src/server.test.ts
  • apps/server/src/server.ts
  • apps/web/src/components/ChatView.tsx
  • apps/web/src/components/GitActionsControl.tsx
  • apps/web/src/components/ProjectScriptsControl.tsx
  • apps/web/src/components/Sidebar.tsx
  • apps/web/src/components/SidebarV2.tsx
  • apps/web/src/components/chat/ChangedFilesTree.tsx
  • apps/web/src/components/chat/ChatComposer.tsx
  • apps/web/src/components/chat/ChatHeader.tsx
  • apps/web/src/components/chat/CompactComposerControlsMenu.tsx
  • apps/web/src/components/chat/ComposerCommandMenu.tsx
  • apps/web/src/components/chat/MessagesTimeline.tsx
  • apps/web/src/components/chat/runtimeModePresentation.ts
  • apps/web/src/components/clerk/T3ConnectSidebarSignIn.tsx
  • apps/web/src/components/desktopUpdate.logic.test.ts
  • apps/web/src/components/desktopUpdate.logic.ts
  • apps/web/src/components/settings/AddProviderInstanceDialog.tsx
  • apps/web/src/components/settings/AddProviderInstanceWizardSteps.test.tsx
  • apps/web/src/components/settings/AddProviderInstanceWizardSteps.tsx
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/sidebar/SidebarUpdatePill.tsx
  • apps/web/src/components/ui/alert-dialog.tsx
  • apps/web/src/components/ui/button.tsx
  • apps/web/src/components/ui/command.tsx
  • apps/web/src/components/ui/dialog-styles.ts
  • apps/web/src/components/ui/dialog.tsx
  • apps/web/src/hooks/useT3ProjectFileScripts.ts
  • apps/web/src/index.css
  • packages/contracts/src/index.ts
  • packages/contracts/src/orchestration.ts
  • packages/contracts/src/settings.test.ts
  • packages/contracts/src/settings.ts
  • packages/contracts/src/t3ProjectFile.test.ts
  • packages/contracts/src/t3ProjectFile.ts
  • packages/shared/package.json
  • packages/shared/src/t3ProjectFile.test.ts
  • packages/shared/src/t3ProjectFile.ts
  • t3.json
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/sync-20260725-l5-auto-t3json-daf2

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). labels Jul 25, 2026
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from ff34606 to 1b6f0cd Compare July 25, 2026 08:52
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from 2ef0d92 to b07b944 Compare July 25, 2026 08:52

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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[];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment thread t3.json
"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",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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(

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from 1b6f0cd to 67a273a Compare July 25, 2026 09:09
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from b07b944 to 26e5de4 Compare July 25, 2026 09:09
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from 67a273a to 6223cb9 Compare July 25, 2026 09:22
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from 26e5de4 to 0ae2efb Compare July 25, 2026 09:22
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from 6223cb9 to 6b45ba1 Compare July 25, 2026 09:26
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from 0ae2efb to 2813c2c Compare July 25, 2026 09:26
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from 6b45ba1 to 35d7acb Compare July 25, 2026 09:36
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from 2813c2c to b9fa327 Compare July 25, 2026 09:36
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from 35d7acb to fec2c09 Compare July 25, 2026 09:42
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from b9fa327 to 8d30b7f Compare July 25, 2026 09:42
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from fec2c09 to cf779fe Compare July 25, 2026 09:48
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from 8d30b7f to c05b57c Compare July 25, 2026 09:48
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from cf779fe to 7506571 Compare July 25, 2026 09:59
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from c05b57c to 38dfe0e Compare July 25, 2026 09:59
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from 7506571 to d9a29ca Compare July 25, 2026 10:04
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from 38dfe0e to 02b4a3e Compare July 25, 2026 10:04
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from d9a29ca to 4a8a97e Compare July 25, 2026 10:11
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from 02b4a3e to f39e783 Compare July 25, 2026 10:11
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from 4a8a97e to fd8bdc5 Compare July 25, 2026 10:16
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from f39e783 to efd2142 Compare July 25, 2026 10:16
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from fd8bdc5 to 504ae4e Compare July 25, 2026 10:22
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from efd2142 to fe68e62 Compare July 25, 2026 10:22
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from 504ae4e to 9a4f596 Compare July 25, 2026 10:31
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from fe68e62 to db1415b Compare July 25, 2026 10:31
@cursor
cursor Bot force-pushed the codex/sync-20260725-l4-glass-daf2 branch from 9a4f596 to 662ccf6 Compare July 25, 2026 10:39
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch 2 times, most recently from 85ec6e0 to bef5161 Compare July 25, 2026 10:43
t3dotgg and others added 5 commits July 25, 2026 10:48
…laude (pingdotgg#4272)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit fbd7742)
- 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)
@cursor
cursor Bot force-pushed the codex/sync-20260725-l5-auto-t3json-daf2 branch from bef5161 to 37d9d8c Compare July 25, 2026 10:49
@cursor
cursor Bot changed the base branch from codex/sync-20260725-l4-glass-daf2 to main July 25, 2026 10:49
cursoragent and others added 2 commits July 25, 2026 11:02
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>
@cursor
cursor Bot merged commit 25c6a6a into main Jul 25, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). 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.

5 participants