Skip to content

feat(settings): remove a downloaded agent runtime from its Settings row - #29140

Merged
brennanb2025 merged 6 commits into
mainfrom
brennanb2025/agy-chat-R2-runtime-remove-ui
Oct 18, 2026
Merged

brennanb2025 merged 6 commits into
mainfrom
brennanb2025/agy-chat-R2-runtime-remove-ui

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 2 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​56 $\color{#cf222e}{\Huge{\mathbf{−}}}$​15 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​41
Prod 14 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​387 $\color{#cf222e}{\Huge{\mathbf{−}}}$​119 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​268

ELI5

Antigravity chats need Google's separate Antigravity chat server. An earlier version of this stack downloaded it silently the first time a chat started: about 18 seconds of "Working for Ns" with no progress and no Cancel, and every extra chat opened started another download. Now nothing downloads until the person clicks Install, which shows the size, progress and Cancel in Settings and in the new chat.

This PR adds the way back out: a "Remove" link in Antigravity's status line in Settings deletes the server Orca downloaded. It asks first, because removing it stops running Antigravity chats. It also stops showing Antigravity's install state as a separate outlined box inside its provider row: the state is now the row's grey status line, like every other agent's "Installed".

What Changed

This revision: the install state moved out of the outlined box into the provider row's status line, with its actions as text links, and the dialog wording was tightened ("there" read oddly). Remove's reply goes through the same subscription-aware store as Install (#29048), and every client sees the outcome through the host's pushed status.

  • Before: the Antigravity row in Settings > Chat > Providers showed its install state in a bordered box nested inside the row (it rendered as a bright outline), offered Install, Reinstall and Update, and had no way to remove the download. Accounts > Antigravity showed the same box.
  • After: Antigravity's row has the same shape as the other agents' rows: its install state is the grey status line under the name, and its actions are text links in that line, the same way "Not installed · Install" works for the others. Accounts > Antigravity shows the same line.
    • Not installed: "Not installed · 112 MB download." with a solid primary Install button at the right of the row, next to the switch, so the one thing to do stands out. Downloading: "Downloading X MB of Y MB" with a thin progress bar, then "· Cancel". Cancelled or failed: the reason, then "· Try again".
    • Installed: "Installed · Remove". A healthy install no longer offers Reinstall; a damaged copy reads "… damaged · Reinstall · Remove", and an out-of-date one "Installed · Update · Remove".
    • Remove opens "Remove the downloaded Antigravity runtime from {host}?" with "Antigravity chats that are running stop. Their history is kept." and Cancel and Remove. {host} is the paired host's name, or "this computer".
    • While the host removes it, the row says "Removing…" with no buttons. When it is done the row reads not installed again, with Install, and a new Antigravity chat shows the Install card.
    • If the host refuses (for example, a process it couldn't stop), the line shows the host's reason and keeps "Remove" so you can try again.
  • Remove appears only in Settings, never in a chat, never while an install runs, and only when the host supports removal (managed-runtime.remove.v1). Whether a copy is there comes from the host's canRemove alone. New strings are translated into all six languages.
  • Mechanism: the row calls managedRuntime.remove (feat(runtime): remove an agent's downloaded runtime only once nothing on the host can still run it #29139) and applies the returned status to the shared per-host install status store when it belongs to the current subscription, as Install does; every row for that host, and that host's chat Install card, then follow the host's pushed status to the outcome.

Why

Removal is rare and destructive, so it is a quiet link in Settings behind a confirmation. Showing the state as the row's own status line, with the same inline links the other agents use, removes the nested outlined box and keeps every provider row the same shape. All the safety lives on the host (#29139). The row just asks, and shows what the host reports.

Linked Issue

N/A (maintainer; part of the Antigravity Chat UI stack).

Visual Proof

Screenshots from QA round 7 on macOS, dark theme, at this PR's head 95b3e264425 (hidden dev build, throwaway profile).

Providers card, Antigravity not installed

Accounts › Antigravity, not installed

Not installed, Install button (round 8)

Downloading with progress bar and Cancel

Installed · Remove

Accounts › Antigravity inline line

Remove dialog

After Remove: Not installed · Install

Testing

  • I manually tested these changes locally

  • Automated tests added/updated, or explained why not below

  • The row's label table gains the removal cases: "Removing…" with no buttons, a refused removal that keeps Remove beside the host's reason, a damaged copy that offers Reinstall and Remove, a healthy install with no Reinstall, and no Remove in a chat.

  • Lint, typecheck and the full test suite run in this PR's CI.

Review

Agent skill upstream boundary

  • Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

QA, round 2 (M4Air, 10-16, older build 2efa3308959 with the outlined box and the old dialog wording; Grok drove the hidden window over the Chrome DevTools Protocol only)

  • The Remove dialog read "Remove the downloaded Antigravity runtime from this computer?" / "Running Antigravity chats there stop. Your sign-in and chat history are kept.". Confirming showed "Removing…", then Install again in Settings, and both open chats showed the install card in the same frame. The runtime folder was gone afterwards.

Remove dialog Chats after Remove

Notes

  • SSH and remote hosts: the row talks to the host it belongs to. Settings > Chat > Providers is this machine only; the Accounts row follows the chosen host.
  • Mixed versions: a host without managed-runtime.remove.v1 shows no Remove link.
  • PR author: @BrennanKB5

Differences from the common pattern

  • Intended: Remove stops this host's running Antigravity chats first (the dialog says so) instead of refusing until the person stops them; it still keeps the files if any of them can't be confirmed stopped. The common pattern's own sign-out confirmation stops running chats the same way.
  • Intended: in this PR Remove stays enabled whatever else the host is doing, and a refusal from the host (for example during a sign-in) shows under the row. The sign-in row arrives in feat(settings): sign Antigravity chats in from Accounts #28705, which then disables Remove and Install while a sign-in runs, as the common pattern does.
  • Intended: removal shows "Removing…" on every connected client, not only the one that clicked, because the host runs it as a reported operation (feat(runtime): remove an agent's downloaded runtime only once nothing on the host can still run it #29139) that can take seconds while chats stop.
  • Intended: Remove appears only when the host supports removal, so an older paired host never gets a request it can't answer.
  • Intended: the confirmation is Orca's in-app dialog rather than a native one, as every Orca settings confirmation is.

Checklist

  • This PR is small and focused
  • I explained what changed and why (ELI5, the user-facing before/after, the mechanism, and why over the alternatives)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 5d27b4b to 3f15180 Compare October 15, 2026 11:07
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from 95372ef to aec9de8 Compare October 15, 2026 11:07
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 3f15180 to ecae7f8 Compare October 15, 2026 11:23
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from aec9de8 to bc38930 Compare October 15, 2026 11:23
@OrcaWin

OrcaWin commented Oct 15, 2026

Copy link
Copy Markdown
Collaborator

QA (dev build of #28705 head ae28388, which includes this PR, on macOS): Remove downloaded runtime — PASS

  • After install, a trash button appears with the tooltip "Remove downloaded runtime". It doesn't appear while installing (that state shows "Cancel installation").
  • The confirm dialog reads "Remove Antigravity from this host?" / "Running Antigravity chats stop. Chat history is kept." Cancel keeps everything installed.
  • Removing while a chat process was alive: "Removing…" showed for ~1s, the process exited 0.55–0.91s after confirm, and Settings settled at +0.99s back to "Install Antigravity". The runtime folder is deleted. The chat keeps its history and shows "Install Antigravity to start chatting." in place of the composer. Reinstalling brings the composer back.

Non-blocking: (1) while "Removing…" is showing, the Sign in button below still renders enabled for that ~1s. (2) After removing during a live turn, the chat shows "Antigravity couldn't start. Send your message to try again." even though the composer has been replaced by the install row.

Remove tooltip
Confirm dialog
Removing… with live chat process
Settings after remove
Chat after remove
Reinstalling from chat
Composer back

@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from ecae7f8 to de2e98f Compare October 15, 2026 13:34
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from bc38930 to 339c58a Compare October 15, 2026 13:34
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from de2e98f to 2865676 Compare October 15, 2026 13:40
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from 339c58a to 13f91a4 Compare October 15, 2026 13:40
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 2865676 to 37d2337 Compare October 15, 2026 13:58
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from 13f91a4 to e82466e Compare October 15, 2026 13:58
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 37d2337 to 94b7101 Compare October 15, 2026 14:25
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from e82466e to 217e01e Compare October 15, 2026 14:25
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 94b7101 to 3762271 Compare October 15, 2026 14:49
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from 217e01e to 28c2b42 Compare October 15, 2026 14:49
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 3762271 to 093a177 Compare October 15, 2026 14:51
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from 28c2b42 to 24acd09 Compare October 15, 2026 14:51
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 093a177 to 330a3b4 Compare October 15, 2026 15:08
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from 24acd09 to 9e9c277 Compare October 15, 2026 15:08
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 330a3b4 to 830b802 Compare October 15, 2026 16:03
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from 9e9c277 to d91fe6b Compare October 15, 2026 16:04
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 830b802 to 0fbe608 Compare October 15, 2026 16:30
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch 2 times, most recently from 08ee20a to 3a64a91 Compare October 15, 2026 16:49
@brennanb2025
brennanb2025 marked this pull request as ready for review October 15, 2026 17:09
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 0358165 to 9f88aab Compare October 15, 2026 19:57
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 9b1535a to de34102 Compare October 16, 2026 19:43
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch 2 times, most recently from c5d444f to f0efd4b Compare October 16, 2026 20:09
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from de34102 to 9316310 Compare October 16, 2026 20:10
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from f0efd4b to 84f074f Compare October 16, 2026 21:55
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 9316310 to ef64556 Compare October 16, 2026 21:55
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from 84f074f to 72372e5 Compare October 16, 2026 22:11
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from ef64556 to 0f84153 Compare October 16, 2026 22:11
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from 72372e5 to 70fb991 Compare October 16, 2026 22:23
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from 0f84153 to 0584cc0 Compare October 16, 2026 22:23
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from 70fb991 to f36427b Compare October 17, 2026 00:43
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch 2 times, most recently from 38152d9 to b045b47 Compare October 17, 2026 01:07
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from f36427b to 63eed88 Compare October 17, 2026 01:07
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R-runtime-remove branch from b045b47 to c2265b1 Compare October 18, 2026 07:47
When the host offers managed-runtime.remove.v1 and an Orca-installed copy is
there with nothing running, the Settings install row shows a trash button
("Remove downloaded runtime") that asks first: "Remove {agent} from this
host? Running {agent} chats stop. Chat history is kept." While the host removes
it the row says "Removing…"; a refused removal shows the host's reason and keeps
the button. Chats never show it.
…t the downloaded runtime leaves

The row offers Remove whenever the host says Orca's copy is there (canRemove), damaged included;
an older host without it keeps today's rule. The confirmation now reads "Remove the downloaded
{agent} runtime from {host}? Running {agent} chats there stop. Chat history is kept.", naming the
paired host, or this computer.
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-R2-runtime-remove-ui branch from 63eed88 to 0017412 Compare October 18, 2026 08:18
@brennanb2025
brennanb2025 changed the base branch from brennanb2025/agy-chat-R-runtime-remove to main October 18, 2026 08:18
@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: f3c6f143-d5b5-43da-aabb-7c4a40a96203
📥 Commits

Reviewing files that changed from the base of the PR and between 95b3e26 and b296a95.

📒 Files selected for processing: 5
  • src/renderer/src/components/managed-runtime/ManagedRuntimeInstallRow.tsx
  • src/renderer/src/components/managed-runtime/managed-runtime-install-view.test.ts
  • src/renderer/src/components/managed-runtime/managed-runtime-install-view.ts
  • src/renderer/src/components/settings/AntigravityAccountsSection.tsx
  • src/renderer/src/components/settings/NativeChatProvidersSetting.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

📝 Walkthrough

The managed runtime UI now reports whether a runtime can be removed and displays a confirmation dialog for eligible runtimes. Removal requests use shared operation handling with generation checks. The view model represents removal in progress and includes action labels, status, and download-size notes. The runtime status row uses an inline layout with install, cancel, and removal actions. Removal labels are added in English, Spanish, French, Japanese, Korean, and Chinese.

Priority: ⬇️ Low

Merge Risk: 🔵 Low · up to b296a

Removal remains available when the provider switch is off, but closing the confirmation can leave keyboard focus without a useful target. This is a bounded accessibility issue to address or explicitly accept before merging.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 18 functions across 10 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly and concisely describes the primary change: removing a downloaded agent runtime from its Settings row.
Description check Passed The description is complete and focused. It includes the required user-facing explanation, changes, rationale, testing notes, visual proof, compatibility considerations, and checklist. It also explain…
Full details: Description check

Explanation

The description is complete and focused. It includes the required user-facing explanation, changes, rationale, testing notes, visual proof, compatibility considerations, and checklist. It also explains that the PR is maintainer-owned and does not require a linked issue or AI disclosure.

  • Fix all pre-merge checks with AI
✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: eb68ff2d-caa3-4be2-ad3f-6d3c3f2025a2
📥 Commits

Reviewing files that changed from the base of the PR and between 6fd2172 and 0017412.

📒 Files selected for processing: 13
  • src/renderer/src/components/managed-runtime/ManagedRuntimeInstallRow.tsx
  • src/renderer/src/components/managed-runtime/ManagedRuntimeRemoveButton.tsx
  • src/renderer/src/components/managed-runtime/managed-runtime-install-view.test.ts
  • src/renderer/src/components/managed-runtime/managed-runtime-install-view.ts
  • src/renderer/src/components/native-chat/NativeChatStructuredSession.launch-lifecycle.test.tsx
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/fr.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/zh.json
  • src/renderer/src/runtime/managed-runtime-install-status.ts
  • src/renderer/src/runtime/use-managed-runtime-install.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.

Comment thread src/renderer/src/i18n/locales/fr.json Resolved
…vider's status line

The Antigravity row in Settings > Chat > Providers drew its install state as a
bordered box nested inside the row. It now reads like the other rows: one grey
status line under the name, with its actions as inline links joined by ' · '
(Installed · Remove, Not installed · Install · size, a thin progress bar with
Cancel while downloading, Reinstall · Remove for a damaged copy, Try again
after a failure). A healthy install no longer offers Reinstall. The Remove
confirmation now says running chats stop and their history is kept.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c578b16d-dc8f-4b8e-9714-11d5e088927e
📥 Commits

Reviewing files that changed from the base of the PR and between 0017412 and 95b3e26.

📒 Files selected for processing: 12
  • src/renderer/src/components/managed-runtime/ManagedRuntimeInstallRow.tsx
  • src/renderer/src/components/managed-runtime/ManagedRuntimeLinkButton.tsx
  • src/renderer/src/components/managed-runtime/ManagedRuntimeRemoveButton.tsx
  • src/renderer/src/components/managed-runtime/managed-runtime-install-view.test.ts
  • src/renderer/src/components/managed-runtime/managed-runtime-install-view.ts
  • src/renderer/src/components/settings/NativeChatProvidersSetting.tsx
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/fr.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/zh.json
🚧 Files skipped from review as they are similar to previous changes: 3
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 2 remain after this review.

Comment on lines +35 to +41
<ManagedRuntimeLinkButton
disabled={disabled}
aria-label={translate('components.managed-runtime.remove', 'Remove downloaded runtime')}
onClick={() => setConfirming(true)}
>
{translate('components.managed-runtime.removeConfirm', 'Remove')}
</ManagedRuntimeLinkButton>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🔎 Supported by static analysis

🏁 Script executed:

set -eu
printf '%s\n' '--- component ---'
nl -ba src/renderer/src/components/managed-runtime/ManagedRuntimeRemoveButton.tsx
printf '%s\n' '--- dialog-related imports and definitions ---'
rg -n -F --glob '*.{ts,tsx}' -e 'ManagedRuntimeRemoveButton' -e 'DialogContent' -e 'DialogTrigger' -e 'DialogPrimitive' -e 'function Dialog' -e 'const Dialog' src/renderer/src | head -200
printf '%s\n' '--- candidate dialog files ---'
rg --files src/renderer/src | rg '(^|/)(dialog|modal|Dialog)[^/]*\.(ts|tsx)$|components/.*/(dialog|modal|Dialog)[^/]*\.(ts|tsx)$' | head -100

Repository: stablyai/orca

Length of output: 25332


🏁 Script executed:

set -eu
printf '%s\n' '--- dialog wrapper ---'
nl -ba src/renderer/src/components/ui/dialog.tsx
printf '%s\n' '--- Radix dialog declaration ---'
rg -n -F --glob 'package.json' -e '@radix-ui/react-dialog' -e 'radix-ui' .

Repository: stablyai/orca

Length of output: 9175


🌐 Web query:

Radix UI dialog v1.6.7 DialogContent onCloseAutoFocus behavior when Dialog has no DialogTrigger controlled dialog

💡 Result:

Assuming you mean **`radix-ui@1.6.7`** (the umbrella package), not `@radix-ui/react-dialog@1.6.7`: the dialog package has a different version number. The available source for the current Dialog implementation is newer, so I can’t confirm that it exactly matches the implementation bundled in `radix-ui@1.6.7`. ([central.sonatype.com](https://central.sonatype.com/artifact/org.mvnpm/radix-ui/1.6.7?utm_source=openai))

For a **modal** dialog (the default), closing invokes `onCloseAutoFocus`; Radix’s internal handler prevents the browser’s default autofocus and then tries to focus `context.triggerRef.current`. Without a `DialogTrigger`, that ref is `null`, so Radix has no trigger to return focus to. **Inference:** focus restoration is therefore effectively skipped unless you handle it yourself. ([github.com](https://github.com/radix-ui/primitives/blob/main/packages/react/dialog/src/dialog.tsx))

If you need focus restored to the element that opened a controlled dialog, capture that element when opening and focus it in `DialogContent`’s `onCloseAutoFocus`. If you only want to suppress Radix’s default close-focus behavior, call `event.preventDefault()` in your handler. The exact v1.6.7 behavior remains unverified by the sources found.

Citations:

- 1: https://central.sonatype.com/artifact/org.mvnpm/radix-ui/1.6.7?utm_source=openai
- 2: https://github.com/radix-ui/primitives/blob/main/packages/react/dialog/src/dialog.tsx

🏁 Script executed:

set -eu
printf '%s\n' '--- lockfiles ---'
rg --files -g 'pnpm-lock.yaml' -g 'package-lock.json' -g 'yarn.lock' -g 'bun.lockb' -g 'bun.lock' .
printf '%s\n' '--- radix lock entries ---'
rg -n -F --glob 'pnpm-lock.yaml' -e 'radix-ui@' -e 'radix-ui:' -e '@radix-ui/react-dialog' . || true

Repository: stablyai/orca

Length of output: 2312


🌐 Web query:

@radix-ui/react-dialog 1.1.23 dialog.tsx onCloseAutoFocus triggerRef

💡 Result:

In `@radix-ui/react-dialog` **1.1.23**, `Dialog` creates a `triggerRef`, and `Dialog.Trigger` composes its forwarded ref with that internal ref. When modal content closes, Radix’s default `onCloseAutoFocus` prevents FocusScope’s default and focuses `triggerRef.current`. (GitHub discussion 3319 in radix-ui/primitives (link omitted to avoid creating a cross-reference))

Your `Dialog.Content` `onCloseAutoFocus` runs before that default handler. If yours calls `event.preventDefault()`, the composed handler won’t run, so Radix won’t restore focus to the trigger. The published package is version 1.1.23; the source view available here is the repository’s current `main` branch, not a version-pinned 1.1.23 source file, so exact source-level equivalence to that release is not independently established. ([app.unpkg.com](https://app.unpkg.com/%40radix-ui/react-dialog%401.1.23?utm_source=openai))

Citations:

- 1: GitHub discussion 3319 in radix-ui/primitives (link omitted to avoid creating a cross-reference)
- 2: https://app.unpkg.com/%40radix-ui/react-dialog%401.1.23?utm_source=openai

Restore focus to the Remove control when the dialog closes.

This controlled Radix dialog has no DialogTrigger, and the project wrapper does not add an onCloseAutoFocus handler. Radix therefore has no trigger element to focus when the dialog closes. Wrap the control in DialogTrigger asChild, or restore focus explicitly with onCloseAutoFocus.

Source: Learnings

…de the switch

Not installed now shows a high-contrast Install button at the row's right end in
Settings > Chat > Providers and Settings > AI Provider Accounts > Antigravity; the
status line keeps the sentences (Not installed · 112 MB download.). Every other
action stays a link in the line.
@brennanb2025
brennanb2025 merged commit 37a9eaa into main Oct 18, 2026
32 checks passed
@brennanb2025
brennanb2025 deleted the brennanb2025/agy-chat-R2-runtime-remove-ui branch October 19, 2026 04:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants