Repository navigation
Keep the permission pill inside Arguments and share the Permissions menu - #32971
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
Walkthrough
Priority: Merge Risk:
|
There was a problem hiding this comment.
Actionable comments posted: 2
ℹ️ Review info
-
⚙️ Run configuration
-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
79b0fef5-fb9f-4aa3-86f7-02aef737db3a
📒 Files selected for processing: 26
-
src/main/runtime/rpc/methods/agent-launch-settings-work.test.tssrc/main/runtime/rpc/methods/client-ui.tssrc/main/runtime/runtime-client-agent-launch-settings-durability.test.tssrc/main/runtime/runtime-client-agent-launch-settings.test.tssrc/main/runtime/runtime-client-settings.tssrc/renderer/src/components/native-chat/NativeChatPermissionModePicker.test.tsxsrc/renderer/src/components/native-chat/NativeChatPermissionModePicker.tsxsrc/renderer/src/components/settings/AgentCatalogRow.tsxsrc/renderer/src/components/settings/AgentLaunchDefaultsEditor.test.tsxsrc/renderer/src/components/settings/AgentLaunchDefaultsEditor.tsxsrc/renderer/src/components/settings/AgentLaunchSettingsCatalog.tsxsrc/renderer/src/components/settings/AgentLaunchSettingsSection.test.tsxsrc/renderer/src/components/settings/AgentLaunchSettingsSection.tsxsrc/renderer/src/components/settings/AgentPermissionChoiceControls.tsxsrc/renderer/src/components/settings/AgentsPane.test.tsxsrc/renderer/src/components/settings/HostAgentLaunchSettings.test.tsxsrc/renderer/src/components/settings/HostAgentLaunchSettings.tsxsrc/renderer/src/components/settings/agent-launch-settings-transport.test.tssrc/renderer/src/components/settings/agent-launch-settings-transport.tssrc/renderer/src/components/settings/agent-permission-conversion-persistence.test.tsxsrc/renderer/src/components/settings/agent-permission-reset-notice.tsxsrc/renderer/src/i18n/en-runtime-required.jsonsrc/renderer/src/i18n/locales/en.jsonsrc/shared/agent-launch-permission-updates.tssrc/shared/agent-launch-runtime-capability.tssrc/shared/agent-launch-settings.ts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 3 remain after this review.
-
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

Major · Preserve the choices replaced by a global permission… · AgentLaunchSettingsCatalog.tsx:258-268
src/renderer/src/components/settings/AgentLaunchSettingsCatalog.tsx:258-268
🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy liftPreserve the choices replaced by a global permission change.
When a host supports
AGENT_LAUNCH_PERMISSION_CHOICE_CAPABILITY, selecting either global permission control applies a global update throughpermissionUpdates. The mutation response returns only the resulting settings, so the UI receives neither the replaced choices nor reset entries. The prior per-agent choices cannot be restored through this UI, and no global reset toast or scoped Undo is rendered.Carry the affected agents’ previous choices through the mutation result and render the reset toast with scoped Undo when the host returns them. Keep the older-host path notice-only without Undo.

Minor · Replace pasted line breaks with a space, not an empty… · AgentLaunchDefaultsEditor.tsx:173-183
src/renderer/src/components/settings/AgentLaunchDefaultsEditor.tsx:173-183
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winReplace pasted line breaks with a space, not an empty string.
The textarea
onChangedeletes every CR and LF. Pasting--foofollowed by a newline and--barsaves--foo--bar. The posix tokenizer treats that as one argument. The launch command then passes one malformed flag instead of two. Replacing the line break with a space keeps the tokens separate.Suggested fix
- onChange={(event) => setDraft(event.target.value.replace(/[\r\n]/g, ''))} + onChange={(event) => setDraft(event.target.value.replace(/[\r\n]+/g, ' '))}

Review info
-
Run configuration-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
ca904e73-4faf-428a-bb9d-b999cf60d569
Files selected for processing: 7-
src/renderer/src/components/settings/AgentCatalogRow.tsxsrc/renderer/src/components/settings/AgentLaunchDefaultsEditor.tsxsrc/renderer/src/components/settings/AgentLaunchSettingsSection.tsxsrc/renderer/src/components/settings/AgentPermissionChoiceControls.tsxsrc/renderer/src/components/settings/HostAgentLaunchSettings.tsxsrc/renderer/src/components/settings/agent-permission-conversion-persistence.test.tsxsrc/renderer/src/i18n/locales/en.json
Files skipped from review as they are similar to previous changes: 1-
- src/renderer/src/i18n/locales/en.json
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 6 remain after this review.
-
There was a problem hiding this comment.
Actionable comments posted: 1

Review info
-
Run configuration-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
5ab9a66c-b3d8-441b-b3d1-2a34fe4c6f3d
Files selected for processing: 2-
src/renderer/src/components/settings/AgentLaunchDefaultsEditor.tsxsrc/renderer/src/components/ui/textarea.tsx
Files skipped from review as they are similar to previous changes: 1-
- src/renderer/src/components/settings/AgentLaunchDefaultsEditor.tsx
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.
-
There was a problem hiding this comment.
Actionable comments posted: 1

Review info
-
Run configuration-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
bd1cf31f-7654-4b9d-9857-98158277a562
Files selected for processing: 2-
src/renderer/src/components/settings/agent-permission-conversion-persistence.test.tsxsrc/renderer/src/i18n/en-runtime-required.json
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.
-
|
The permission pill previously left long Arguments text in a narrow column. It now shares the first text line, with later lines using the full box width. The existing textarea and field owner remain; × or two distinct Backspaces remove the pill, recognized flags convert to it, and removal cannot resurrect a safely recognized flag from the unsaved draft. IME and pending writes retain their behavior. The approved Settings → Agents layout A also places the all-agents Permissions dropdown immediately after its label, using the existing per-agent row pattern. The description and reset warning are underneath. Approve for me still exposes the Agents without Approve for me control. The reset warning is temporary, removed by #33018; #32971 alone still resets separately configured agents when the all-agents choice changes. Review: full review, reference comparison, performance and readiness evidence carries for untouched code. The bounded layout audit found a lost loading-width reservation in Verification on Evidence carry: the main integration For Brennan’s review: |
338 commits landed on main between dbde821 and fd25eb0. All seven catalogs and en-runtime-required.json conflicted, so they are taken from main and the prune is recomputed in one pass: the previous 1,633 keys plus 4, none left the set. stablyai#32971 dropped the readers of settings.agents.loadingHost and permissionChoiceDescription, stablyai#32334 the reader of permissionEachOwnDescription, and stablyai#31859 the reader of auto.hooks.useIpcEvents.56d3ec4203. The two permission descriptions exist only in en.json, so en.json sheds 1,637 and the other six catalogs 1,635. en.json goes from 17,143 entries to 15,506; en-runtime-required.json keeps 643 of them. catalog-nested-settings.test.ts listed loadingHost among the agent settings it checks across catalogs; with its last reader gone, the key comes off that list and the test checks the other ten. native-chat-shared-copy-matches-catalog.test.ts merged cleanly again and still differs from main by exactly the branch's edit.








The permission pill occupied its own column inside Arguments, leaving long text wrapped in a narrow strip. It now shares the first text line: arguments follow it immediately, and wrapped lines use the full width beneath it. The pill and text share one native scroll area, keeping the remove button visible when reached by keyboard.
In Settings → Agents, the all-agents Permissions dropdown now sits immediately after its label, matching the per-agent row. The description and existing reset warning appear underneath. Selecting Approve for me still exposes the Agents without Approve for me control.
The existing textarea and save ownership remain in place. × or two distinct Backspaces at the start remove the pill and select the agent’s own settings. Recognized typed flags still convert to the pill, and removal clears a safely recognized flag from the unsaved draft so leaving the field cannot restore it. Pending writes and IME keep their existing behavior. Settings also shares the chat composer’s permission menu rendering.
Review path: full. This PR changes a saved-choice interaction and the review reproduced a permission resurrection regression. No saved format, request or capability changes are included.
Temporary: “Picking a mode here resets agents you set separately.” is temporary, removed by #33018. This PR alone still resets separately configured agents when the all-agents mode changes. No permission behavior changes are included in the layout update. The generated, removable Settings permission flag and each agent’s own settings are intended adaptations to the existing setting. Existing chat support for an agent’s own settings is tracked in #32334.
Validation: 24 focused renderer/persistence tests passed on 402f8d5, with earlier unchanged IME coverage retained. CI is green on that head: static analysis/typecheck, all five Node 24 unit shards, and macOS/Windows packages. Independent final review completed the reference, performance and readiness checks. The affected long-field flow and stationary keyboard tooltip check passed on the same head; text, caret, permission choice and save ownership were preserved. The shared tooltip normally dismisses during ancestor scrolling and remains available at rest. No agents were launched. Screenshots cover macOS dark at the recorded viewport; native scrollbar drag was source-traced, not exercised.
Follow-up to #31315.
Screenshots
Menu, custom arguments and removal images carry from bf6bc67 because those states remain unchanged. The long-field and keyboard-focus images are new on 402f8d5.
Main integration (10-25): merged the exact fetched main tip once as
97e2d9421940, resolving the comment-audit conflict while retaining the shared exported permission-name component. Bounded reviewer acceptance and 33 named tests passed. CI is green on this merge head, including static analysis/typecheck, all five Node24 test shards and both package jobs (run40193482426; no retry). Existing screenshot/QA evidence carries without a rerun.Approved layout A update (10-25): the all-agents Permissions dropdown sits directly after its label, with the description and temporary reset warning below. The existing Approve for me fallback control is unchanged. Bounded review caught and corrected the loading-width reservation; the final head
2c054aaebdcc2c65d5a425c207da55cce39d6c53retains it. All 65 tests in the three existing Settings suites and the normal hook passed. CI run 40226321532 is fully green, including all five unit shards, static analysis/typecheck and both platform packages, with no retry. One qa-gate/qa-drive screenshot run on this head verified both row states and saved Own settings/Full access transitions. Earlier untouched flows carry their existing evidence; no agents were launched or earlier flows replayed. QA copies stopped gracefully, real-config hashes are unchanged, and ticket 2372 is released. No later main or stack merge was made.