Repository navigation
fix(desktop): disable blocked t3 CLI installation - #27286
NathanGlasby wants to merge 2 commits into
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — The Install button now reflects the existing backend restriction when another t3 executable takes precedence on PATH. Removal remains available, and installation behavior and product defaults are unchanged. You can add or adjust custom eligibility rules. Learn more. |
|
Important Review skippedReview was skipped as selected files did not have any reviewable changes.
|
| Layer / File(s) | Summary |
|---|---|
Shadowed install button state apps/web/src/components/settings/CliCommandSettingsRow.tsx, apps/web/src/components/settings/CliCommandSettingsRow.browser.test.tsx |
The row disables Install when the command is not installed and another t3 shadows it. The browser test checks that Install is enabled after shadowing clears and that an installed command can still be removed. |
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Bug fix · Severity of issue fixed: Low
Possibly related PRs
- pingdotgg/t3code#25417: Adds the desktop CLI installation and shadow-detection state that this change uses.
- pingdotgg/t3code#22375: Changes how the desktop CLI identifies its own launcher when detecting shadowing.
- pingdotgg/t3code#22046: Changes which PATH entries count when determining the shadowing state.
Suggested labels: bugfix, size:S
Suggested reviewers: juliusmarminge
Merge Risk: 
Minimal · previous review 2815f
-
The change preserves removal while preventing blocked installations. No merge-blocking issue was identified.
Pre-merge checks: 
4
-
Full details: Title check
-
Explanation
The title "fix(desktop): disable blocked t3 CLI installation" matches the main change. The raw summary shows the CLI command button is now disabled when installation is not active and state.shadowedBy is set. The PR objectives say Install is disabled when another t3 executable blocks installation, and Remove stays available for an installed but shadowed launcher. The title is concise, follows conventional commit form, and names the scope (desktop) and the action (disable blocked installation).
Full details: Description check
-
Explanation
The description follows the template's main sections. Problem explains that Settings offers Install when another t3 executable is first on PATH, and the desktop service rejects that install. Change explains the disabled Install state and the preserved Remove action for a shadowed launcher. Scope and approval links issue
#27093and explains why the small obvious-bug exception applies. Verification lists the browser regression test, the vp test run command with its pass result, the check:changed results, and before/after screenshots. It also states what was not checked: packaged Electron and real filesystem installation and removal. The template asks for a model and harness line at the end, and the author included one. Two gaps remain. The before/after screenshots link to a GitHub release on a fork, so reviewers may not be able to confirm the assets resolve. The Scope section cites the exception without a maintainer approval comment, which the template also mentions for issues that are not very small. Overall the description is mostly complete.
Full details: Linked Issues check
-
Explanation
Issue
#27093requires the Settings row to prevent a failing Install action when anothert3is reported byshadowedBy, while retaining the existing explanation and allowing removal of T3 Code's installed launcher.CliCommandSettingsRow.tsxnow disables the button only when!installedandstate.shadowedByis set. The existingshadowedBydescription remains unchanged. The browser test covers blocked Install, enabled Install after the conflict clears with an off-PATH destination, and enabled Remove when an installed launcher is shadowed.
Full details: Out of Scope Changes check
-
Explanation
The pull request changes only
CliCommandSettingsRow.tsxand its focused browser test. The component change implements issue#27093directly. The test verifies the required UI states and the Remove action. No unrelated product behavior or unrelated files are changed.
-
Finishing Touches
-
🧪 Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Comment @coderabbitai help to get the list of available commands.
|
Note 🤖 GPT-6.1-Sol responding on behalf of NathanGlasby @codex review The initial review could not complete. Please retry on the current head. |
|
Codex Review: Something went wrong. Try again later by commenting “@codex review”. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
|
Note Written by kept verification at
unverified: packaged electron and actual filesystem install/removal. known limit for |


Problem
Settings → About offers Install when another
t3executable is first on PATH, even though the desktop service rejects installation in that state. Clicking it produces an error the UI already has enough information to prevent.Change
Disable Install while another
t3blocks installation. Keep the existing PATH explanation and allow Remove when T3 Code's own launcher is installed but shadowed.Scope and approval
Fixes #27093. This qualifies for the very small, focused obvious-bug exception: the existing desktop-only control now reflects the backend's established installation restriction.
Verification
vp test run apps/web/src/components/settings/CliCommandSettingsRow.browser.test.tsx: passed.vp run check:changedafter rebasing ontocba30591f958: formatting, lint, both Knip passes, affected typechecks, the browser regression, and React Compiler verification passed.Implemented with GPT-6.1-Sol through the Codex harness in T3 Code.