🌐 US-Proxy
class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
Skip to content

feat(site): move Coder Agents settings to AI settings - #26692

Merged
DanielleMaywood merged 7 commits into
mainfrom
danielle/codagt-689-port-agents-settings-as-is-to-admin-ai
Jun 29, 2026
Merged

feat(site): move Coder Agents settings to AI settings#26692
DanielleMaywood merged 7 commits into
mainfrom
danielle/codagt-689-port-agents-settings-as-is-to-admin-ai

Conversation

@DanielleMaywood

@DanielleMaywood DanielleMaywood commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Moves the Coder Agents admin settings page into Admin Settings > AI as Coder Agents, with legacy /agents/settings/admin and /agents/settings/agents routes redirecting to the new location.

Updates the page to live under AISettingsPage/CoderAgentsPage and use the AI settings header with an Instructions-style bordered settings panel. The model override controls are restyled to match AI settings patterns, including conditional save actions and saved-state feedback.

Implementation plan
  • Add /ai/settings/coder-agents under AISettingsLayout.
  • Add a standard Coder Agents item to the AI settings sidebar.
  • Redirect old Agents settings admin routes to the new AI settings route.
  • Move the Coder Agents settings page and page-specific components under AISettingsPage/CoderAgentsPage.
  • Restyle the Coder Agents settings view to match Admin Settings > AI page patterns.
  • Preserve existing query, mutation, and permission behavior.

Note

🤖 This PR was written by Coder Agent on behalf of Danielle Maywood

@linear-code

linear-code Bot commented Jun 25, 2026

Copy link
Copy Markdown

CODAGT-689

@DanielleMaywood

Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@coder-agents-review

coder-agents-review Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Chat: Review posted | View chat
Requested: 2026-06-26 08:13 UTC by @DanielleMaywood
Spend: $75.09 / $100.00

Review history
  • R1 (2026-06-25): 15 reviewers, 3 Nit, 4 P2, 7 P3, COMMENT. Review
  • R2 (2026-06-25): 6 reviewers, 4 Nit, 4 P2, 8 P3, COMMENT. Review
  • R3 (2026-06-26): 4 reviewers, 4 Nit, 4 P2, 8 P3, COMMENT. Review

deep-review v0.9.0 | Round 3 | 1ae96fc..59e236c

Last posted: Round 3, 16 findings (4 P2, 8 P3, 4 Nit), COMMENT. Review

Finding inventory

Findings

# Sev Status Location Summary Round Reviewer Posted
CRF-1 P3 Author fixed (7c70085) SubagentModelOverrideSettings.tsx:41 Dead showHeader prop in interface R1 Netero, Meruem Nit Yes
CRF-2 P3 Author fixed (7c70085) AgentSettingLayout.tsx:1 New exported component without Storybook story R1 Netero Yes
CRF-3 P3 Author contested; panel closed R2 (2/3 accept) AdminPersonalModelOverridesSettings.tsx:70 Save button/form layout duplicated from AgentSettingLayout R1 Netero Yes
CRF-4 P2 Author fixed (7c70085) AgentSettingLayout.tsx:35 Forms lost aria-label, leaving four unlabeled form landmarks R1 Meruem P2, Hisoka P3, Mafuuu P3, Nami P3, Kite P3, Leorio Nit Yes
CRF-5 P2 Author fixed (7c70085) AdminPersonalModelOverridesSettings.tsx:107 ErrorAlert replaced with static string, losing server error details R1 Leorio P2, Hisoka P3, Pariston P3, Kite P3 Yes
CRF-6 P2 Author accepted R3 (product direction) AISettingsSidebarView.tsx:59 Sidebar link orphans page with no active state and misleading icon R1 Pariston P2, Nami P3, Hisoka Note, Zoro Note, Mafuuu Note Yes
CRF-7 P2 Author accepted R3 (product direction) CoderAgentsPage.tsx:1 Files moved out of React Compiler scope R1 Ging-react Yes
CRF-8 P3 Author fixed (7c70085) AdminPersonalModelOverridesSettings.tsx:67 hasError is true during normal loading, misleading variable name R1 Mafuuu P3, Gon P3, Leorio P3, Pariston Note Yes
CRF-9 P3 Author accepted R3 (PR scope) AgentSettingLayout.tsx:1 Duplicates existing LifecycleSettingLayout in sibling directory R1 Robin P3, Zoro P3 Yes
CRF-10 P3 Author fixed (7c70085) AdminPersonalModelOverridesSettings.tsx:82 Toggle lost behavioral description about non-destructive disable R1 Leorio Yes
CRF-11 P3 Author fixed (7c70085) CoderAgentsPageView.tsx:115 Title generation model description dropped fallback behavior docs R1 Leorio Yes
CRF-12 Nit Author fixed (7c70085) SubagentModelOverrideSettings.tsx:6 Deep relative imports instead of #/pages/ path aliases R1 Zoro Yes
CRF-13 Nit Author fixed (7c70085) AgentSettingLayout.tsx:9 leftControl prop declared and rendered but never passed by any caller R1 Gon Yes
CRF-14 Nit Author contested; panel closed R2 (2/3 accept) AdminPersonalModelOverridesSettings.tsx:12 Duplicated MutationCallbacks interface; should import from SubagentModelOverrideSettings R1 Meruem Yes
CRF-15 P3 Author fixed (59e236c) AdminPersonalModelOverridesSettings.tsx:113 Status container applies text-content-destructive over non-error loading content R2 Meruem Yes
CRF-16 P4 Dropped by orchestrator (enhancement, not regression) AdminPersonalModelOverridesSettings.stories.tsx:132 No story exercises Saved feedback loop end-to-end R2 Bisky No
CRF-17 Nit Author fixed (59e236c) SubagentModelOverrideSettings.tsx:124 Unvoided form.setFieldValue return value; inconsistent with line 149 R2 Meruem Yes

Contested and acknowledged

CRF-3 (P3, AdminPersonalModelOverridesSettings.tsx:70) - Save button/form layout duplicated from AgentSettingLayout

  • Finding: Reviewer proposed using AgentSettingLayout instead of reimplementing the save/form pattern.
  • Author defense: The custom markup intentionally mirrors the Instructions switch-row alignment, which has a structurally different layout (switch + label at top, save below) from AgentSettingLayout (title + description + children).
  • Panel closure (R2, 2/3): Mafuuu verified the switch-row vs title-description layouts are structurally different. Pariston confirmed against InstructionsPageView pattern. Meruem acknowledged layout difference but noted save-state rendering inside is identical; kept at P3 for the behavioral duplication. Majority accepts the structural defense.

CRF-14 (Nit, AdminPersonalModelOverridesSettings.tsx:12) - Duplicated MutationCallbacks interface

  • Finding: Reviewer proposed importing MutationCallbacks from SubagentModelOverrideSettings instead of re-declaring.
  • Author defense: Importing from a sibling component would create odd coupling.
  • Panel closure (R2, 2/3): Mafuuu and Meruem accepted; the code works and the fix (shared types file) is outside scope. Robin noted the coupling already exists through CoderAgentsPageView's import but was outvoted.

CRF-6 (P2, AISettingsSidebarView.tsx:59) - Sidebar link orphans page

  • Finding: Sidebar link targets old route, producing no active state on the Coder Agents page and showing a misleading external-link icon.
  • Author accepted R3 (product direction): "Explicitly accepting this gap for now. Product direction is to keep the redirect-style Manage Coder Agents link in the AI settings sidebar."

CRF-7 (P2, CoderAgentsPage.tsx:1) - Files moved out of React Compiler scope

  • Finding: Moving files from AgentsPage/ to AISettingsPage/ drops them from the React Compiler filter.
  • Author accepted R3 (product direction): "Explicitly accepting this gap for now. We are not expanding React Compiler scope in this PR."

CRF-9 (P3, AgentSettingLayout.tsx:1) - AgentSettingLayout duplicates LifecycleSettingLayout

  • Finding: Near-identical form/save layout component exists in sibling LifecyclePage directory.
  • Author accepted R3 (PR scope): "Accepting the local duplication for this PR. Unifying this with Lifecycle would broaden the change into a cross-page refactor." No ticket linked.

Round log

Round 1

Panel. 4 P2, 7 P3, 3 Nit. 15 reviewers (Bisky, Hisoka, Mafu-san, Mafuuu, Pariston, Gon, Leorio, Nami, Ging-react, Ging-ts, Robin, Zoro, Komugi, Meruem, Kite). Wildcards: Meruem, Kite. Reviewed against 1ae96fc..07f288d.

Round 2

Churn guard: PROCEED. 9 fixed, 4 contested. Panel: 6 reviewers (Bisky, Mafuuu, Pariston, Robin, Komugi, Meruem). Wildcard: Meruem. CRF-3 closed (2/3 accept), CRF-14 closed (2/3 accept). CRF-6, CRF-7, CRF-9 re-raised. 1 new P3, 1 new Nit. Reviewed against 1ae96fc..7c70085.

Round 3

Churn guard: PROCEED. CRF-15, CRF-17 fixed. CRF-6, CRF-7 accepted (product direction). CRF-9 accepted (PR scope, no ticket). Panel: 4 reviewers (Bisky, Mafuuu, Pariston, Chopper). Wildcard: Chopper. No new findings. Reviewed against 1ae96fc..59e236c.

About deep-review

CRF = Coder Review Finding (P0-P4, Nit, Note)

Reviewer Focus
Bisky tests
Chopper ops/errors
Churn-guard change verification
Ging language modernization
Gon naming
Hisoka edge cases
Killua perf
Kite change integrity
Knov contracts
Knuckle SQL
Komugi flake/determinism
Kurapika security
Law decomposition
Leorio docs
Luffy product
Mafu-san process
Mafuuu contracts
Melody dispatch/pairing
Meruem structural
Nami frontend
Netero mechanical checks
Pariston premise testing
Pen-botter product gaps
Razor verification
Robin duplication
Ryosuke Go arch
Takumi concurrency
Zoro shape

🤖 Managed by Coder Agents.

@coder-agents-review coder-agents-review 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.

The relocation is clean: renames are consistent, redirects use replace to avoid history pollution, the <title> element was added, and stories were updated to match every behavioral change. The TemporarySavedState integration gives clearer save feedback.

Severity counts: 4 P2, 7 P3, 3 Nit.

The four P2s are: (1) forms lost their aria-label attributes, regressing accessibility for screen reader users; (2) ErrorAlert replaced with a hardcoded string, dropping server error details from the admin UI; (3) the AI sidebar link still targets the old route, leaving no active-state indicator on the Coder Agents page; (4) moved files silently fell out of React Compiler scope.

Process note: the PR summary says "preserving the existing model override controls and save behavior," but the diff changes save button visibility (always-visible-disabled to conditionally-rendered), adds TemporarySavedState flash on save, replaces ErrorAlert with a static string, and changes button sizes from sm to lg. The implementation plan items 5 and 6 are more accurate than the top-level summary. Worth updating the summary to say the save controls were restyled to match AI settings patterns. (Mafu-san)

Commit subject "refactor(site): align Coder Agents AI settings page" does not convey intent. "Align" is a mechanism word without a referent. A subject like "refactor(site): restyle Coder Agents page to match AI settings layout" would tell the reader what changed and why without opening the diff. (Leorio)

"An operator at 2 AM sees 'Failed to load personal model override settings' whether the cause is a network timeout, a 403, or a 500. That is exactly the kind of error message that tells someone 'you're sick' without naming the disease." (Leorio)


site/src/modules/management/AISettingsSidebarView.tsx:59-63

P2 [CRF-6] This link targets /agents/settings/agents, which this PR changed to a <Navigate replace /> redirect to /ai/settings/coder-agents. When the user lands on /ai/settings/coder-agents, NavLink compares to against the current path. Since /agents/settings/agents !== /ai/settings/coder-agents, nothing in the sidebar highlights. The user lands on a page with no sidebar indication of where they are.

The ArrowUpRightIcon communicates "this link leaves the current settings area," but the destination (after redirect) is inside AI settings. The icon's signal contradicts the actual destination.

The PR description says "for now" but no ticket is linked for the follow-up. Under no-follow-up assumptions, this ships permanently with an orphaned page in navigation.

Fix: change the href to /ai/settings/coder-agents, drop the ArrowUpRightIcon, and use a standard SidebarNavItem. (Pariston P2, Nami P3, Hisoka Note, Zoro Note, Mafuuu Note)

🤖

site/src/pages/AISettingsPage/CoderAgentsPage/CoderAgentsPage.tsx:1

P2 [CRF-7] The React Compiler filter in vite.config.mts:20 includes only /src\/pages\/AgentsPage\// and /src\/pages\/AIBridgePage\//. This PR moves components from AgentsPage/ to AISettingsPage/CoderAgentsPage/, which does not match either pattern. All moved files (CoderAgentsPage, CoderAgentsPageView, AdminPersonalModelOverridesSettings, SubagentModelOverrideSettings) and the new AgentSettingLayout silently lose compiler coverage. No build error, no diagnostic.

Fix: add /src\/pages\/AISettingsPage\// to the compilerPreset.rolldown.filter.id.include array in vite.config.mts. (Ging-react)

🤖

site/src/pages/AISettingsPage/CoderAgentsPage/components/SubagentModelOverrideSettings.tsx:41

P3 [CRF-1] showHeader?: boolean is declared in the interface but never destructured, never read, and no caller passes it. The old code used showHeader to toggle an inline header block; the refactor moved headers into AgentSettingLayout and removed the usage but left the type declaration. Remove line 41. (Netero, Meruem)

🤖

🤖 This review was automatically generated with Coder Agents.

Comment thread site/src/pages/AISettingsPage/CoderAgentsPage/components/AgentSettingLayout.tsx Outdated
Comment thread site/src/pages/AISettingsPage/CoderAgentsPage/components/AgentSettingLayout.tsx Outdated

Copy link
Copy Markdown
Contributor Author

🤖 This comment was written by Coder Agent on behalf of Danielle Maywood 🤖

CRF-6

Keeping the redirect-style sidebar link for now by product direction. The page itself still lives at /ai/settings/coder-agents, and the old /agents/settings/agents route redirects there.

Copy link
Copy Markdown
Contributor Author

🤖 This comment was written by Coder Agent on behalf of Danielle Maywood 🤖

CRF-7

Skipping the React Compiler scope change for now by product direction.

Copy link
Copy Markdown
Contributor Author

🤖 This comment was written by Coder Agent on behalf of Danielle Maywood 🤖

CRF-1

Fixed in 7c70085cfe. Removed the unused showHeader prop.

@DanielleMaywood

Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@coder-agents-review coder-agents-review 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.

Nine of 14 findings fixed in 7c70085, all verified. The fixes are clean: aria-label on both forms, ErrorAlert restored, showStatusArea rename, toggle description added, title fallback documented, path aliases used, dead props removed, and a new Storybook story for AgentSettingLayout.

Panel closed CRF-3 (switch-row layout differs from AgentSettingLayout; 2/3 accept) and CRF-14 (duplicated MutationCallbacks; nit-level, code works; 2/3 accept).

Three contested findings remain open: CRF-6 (sidebar link, P2), CRF-7 (React Compiler scope, P2), and CRF-9 (LifecycleSettingLayout duplication, P3). All three cite "product direction" or scope-avoidance with no linked ticket. These need a human decision: file a ticket to track the follow-up, or explicitly accept the gap.

One new P3 and one new Nit from this round's panel.

Severity counts this round: 1 new P3, 1 new Nit, plus 2 open P2 and 1 open P3 from R1.

"'Product direction' is a decision, not a technical defense; the redirect is a regression from the pre-PR behavior where the page rendered directly at the linked URL." (Meruem)

🤖 This review was automatically generated with Coder Agents.

Copy link
Copy Markdown
Contributor Author

🤖 This comment was written by Coder Agent on behalf of Danielle Maywood 🤖

CRF-6

Explicitly accepting this gap for now. Product direction is to keep the redirect-style Manage Coder Agents link in the AI settings sidebar.

Copy link
Copy Markdown
Contributor Author

🤖 This comment was written by Coder Agent on behalf of Danielle Maywood 🤖

CRF-7

Explicitly accepting this gap for now. We are not expanding React Compiler scope in this PR.

@DanielleMaywood

Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@coder-agents-review coder-agents-review 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.

CRF-15 and CRF-17 verified fixed in 59e236c. All 11 code findings across 3 rounds are resolved (fixed or panel-closed). Panel found no new issues. The code is clean.

Three author-accepted gaps remain for human reviewer confirmation:

  • CRF-6 (P2): Sidebar "Manage Coder Agents" link targets /agents/settings/agents (redirects to /ai/settings/coder-agents), producing no active-state indicator. Author cites product direction.
  • CRF-7 (P2): Files moved from AgentsPage/ to AISettingsPage/ fall outside the React Compiler filter in vite.config.mts. Author cites product direction.
  • CRF-9 (P3): AgentSettingLayout duplicates LifecycleSettingLayout save/saved pattern. Author accepts for this PR's scope. No ticket linked.

These are product/scope decisions that the review panel cannot close. A human reviewer should confirm the acceptances or file tickets.

17 findings total across 3 rounds: 11 fixed, 2 panel-closed, 3 author-accepted, 1 dropped.

🤖 This review was automatically generated with Coder Agents.

@DanielleMaywood
DanielleMaywood marked this pull request as ready for review June 26, 2026 10:22
@coder-tasks

coder-tasks Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Documentation Check

Updates Needed

  • docs/ai-coder/agents/models.md (lines 247-248) - The "Model overrides" section directs users to configure subagent overrides at Agents > Settings > Manage Agents > Agents. This PR moves that page to Admin Settings > AI > Coder Agents (/ai/settings/coder-agents). Update the navigation path to match the new location.

Automated review via Coder Agents

@DanielleMaywood
DanielleMaywood force-pushed the danielle/codagt-689-port-agents-settings-as-is-to-admin-ai branch from 05345be to 9c9854e Compare June 29, 2026 12:10
@DanielleMaywood
DanielleMaywood enabled auto-merge (squash) June 29, 2026 12:19
@DanielleMaywood
DanielleMaywood merged commit b4a7b25 into main Jun 29, 2026
47 of 52 checks passed
@DanielleMaywood
DanielleMaywood deleted the danielle/codagt-689-port-agents-settings-as-is-to-admin-ai branch June 29, 2026 12:28
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 29, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants