Skip to content

fix: batch backport tracyjohnsonux UI fixes for Agents and Coder admin area to release/2.37 - #28673

Merged
mtojek merged 12 commits into
release/2.37from
backport/2.37/tracyjohnsonux-batch
Aug 27, 2026
Merged

fix: batch backport tracyjohnsonux UI fixes for Agents and Coder admin area to release/2.37#28673
mtojek merged 12 commits into
release/2.37from
backport/2.37/tracyjohnsonux-batch

Conversation

@tracyjohnsonux

@tracyjohnsonux tracyjohnsonux commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Batch backport of @tracyjohnsonux's PRs that merged into main after the release/2.37 branch point (c275327f, #28369) and were not yet on the release branch.

Commits are git cherry-pick -x of the original squash commits in main merge order. Ten are verbatim; the last two carry manual conflict resolutions, documented below. pnpm run lint:types and the affected Storybook suites (311 tests) pass on the branch.

Included (12)

PR Commit on main Notes
#28427 fix(site/src): delete DateTimeRangeFilter and unify on the picker's time range type 607a1d06 verbatim
#28481 fix(site/src/pages/AIBridgePage): move AI Sessions docs link inline into subtitle 0452ff7e verbatim
#28477 fix(site/src/pages/AIBridgePage): align token badges with neighboring badge sizing e98e2b9b verbatim
#28561 fix(site): use robot icon for subagent toggle in chat kebab menu 94f312df verbatim
#28557 fix: use medium badges and shorter shared key label on agent API keys page c07bde80 verbatim
#28560 fix(site/src/pages/AgentsPage): use outlined empty state and kebab menu for personal skills 74e5a680 verbatim
#28559 fix(site/src/pages/AgentsPage): add organization filter to compaction settings 2eee703e verbatim
#28527 fix(site/src): use md badges for provisioner tags and network call pills f31b7597 verbatim
#28613 fix(site/src): use default combobox dropdown surface 2eb9e4fb verbatim
#28478 fix(site): match sessions date/time picker icon to search field icon 769decbe verbatim
#28612 fix(site/src): move deployment docs links inline as View docs text links 046a532a resolved
#28564 fix(site/src): reposition org pickers in AI settings models and MCP pages 78c65ea5 resolved, ported

Conflict resolutions

Excluded

Decision log

Created by Coder Agents on behalf of @tracyjohnsonux.

@github-actions

github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Docs preview

Check off each page once it's been reviewed. If a page changes in a later push, its checkbox clears automatically so it gets a fresh look. Pages not yet wired into the docs navigation aren't listed here.

@github-actions

Copy link
Copy Markdown
Contributor

πŸ‘‹ Hey @tracyjohnsonux!

This PR is targeting the release/2.37 release branch, but its title does not start with fix: or fix(scope):.

Only bug fixes should be cherry-picked to release branches. If this is a bug fix, please update the PR title to match the conventional commit format:

fix: description of the bug fix
fix(scope): description of the bug fix

If this is not a bug fix, it likely should not target a release branch.

…r's time range type (#28427)

Completes the deduplication agreed in #28392 (review): now that
`DateTimeRangePicker` has replaced the text-expression
`DateTimeRangeFilter` on the AI Gateway sessions page, the old component
and its `TimeRange` type are deleted, leaving a single time-range value
shape.

- Deletes `site/src/components/DateTimeRangeFilter/` (component,
stories, `timeRange.ts` helpers, tests); nothing imported it except the
sessions page type alias.
- The sessions page helpers in `ListSessionsPage/timeRange.ts` now use
neutral `{start, end}` naming derived from the picker's
`DateTimeRangeValue` (`type TimeRange = Pick<DateTimeRangeValue, "start"
| "end">`), removing the `startedAfter`/`startedBefore` field mapping
the page previously did by hand.

No behavior changes: the query-string serialization
(`started_after`/`started_before` RFC 3339 params) is untouched, and all
existing unit tests pass with only field renames.

---

Generated by Coder Agents on behalf of @tracyjohnsonux.

(cherry picked from commit 607a1d0)
…ine into subtitle (#28481)

Replaces the "Read the docs" header button on the AI Sessions page with
an inline "View docs" link at the end of the subtitle sentence, matching
the pattern used on the Providers and Provisioner Jobs pages.

---

_Created by a Coder Agent on behalf of the PR author._

(cherry picked from commit 0452ff7)
… badge sizing (#28477)

The in/out token pills on the AI Gateway sessions pages looked out of
place next to the provider/client/model badges: they used `Badge
size="sm"` while their neighbors use the default `md`, and their arrow
icons were `size-icon-lg` (24px) β€” taller than the badge itself,
inflating the pill height.

> [!NOTE]
> The underlying font-size problem (`Badge sm` = 10px `text-2xs`) is
fixed globally in #28517. This PR handles what that one doesn't: the
token pills' size variant, icon sizing, and API cleanup.

## Changes

- Token pills use Badge's default `md` size, matching the
provider/client/model badges next to them.
- Arrow icons drop from `size-icon-lg` (24px) to `size-icon-xs` (14px),
the same icon size the neighboring badges use, with `gap-0.5` between
icon and count.
- Removed the unused `size` prop from `TokenBadges` β€” no call site ever
passed one β€” and dropped the now-meaningless `SizeXs`/`SizeMd` stories.

Affects every `TokenBadges` consumer: the sessions list, the session
summary card, and the timeline prompt/tool-call tables.

> πŸ€– Generated by Coder Agents on behalf of @tracyjohnsonux

(cherry picked from commit e98e2b9)
…#28561)

Replaces the rotated `GitForkIcon` on the "Show/Hide subagents" item in
the chat kebab menu with lucide's `BotIcon`, matching the robot icon
already used for subagents in the chat stream (`SubagentTool`,
`ToolIcon`).

---

*This PR was generated by Coder Agents on behalf of @tracyjohnsonux.*

(cherry picked from commit 94f312d)
… page (#28557)

On `/agents/settings/api-keys`, bumps the provider key status badge and
the enabled model badges from `sm`/`xs` to the medium (`md`) size, and
shortens the status label "Using shared key" to "Shared key". Updates
the matching Storybook assertion and the status indicator name in
`docs/ai-coder/agents/models.md`.

Verified with `tsc` and the page's Storybook tests (15 passing).

---

*Created by Coder Agents on behalf of @tracyjohnsonux.*

(cherry picked from commit c07bde8)
…nu for personal skills (#28560)

Polishes the `/agents/settings/personal-skills` page to match the table
patterns used elsewhere (e.g. the AI Gateway keys page):

- The table now renders in every state, so the content area always keeps
its outline: `TableLoader` while loading, a `TableEmpty` with a Retry
CTA on error (with the `ErrorAlert` above), and a `TableEmpty` with an
Add skill CTA when there are no skills.
- The per-row Download / Edit / Delete buttons are replaced with a kebab
(`EllipsisVertical`) dropdown menu, following the pattern in
`CustomRolesPageView`. The trigger shows a spinner and disables while a
download is in flight, and the Actions column header is now
screen-reader only.

Storybook interaction coverage: `RowMenuActions` opens the kebab and
exercises Download, Edit, and Delete; `DownloadingSkill` asserts the
disabled trigger.

<details>
<summary>Review notes</summary>

Self-audited the diff against the FE1-FE10 rules in
`.claude/docs/FRONTEND_PATTERNS.md`: all rules pass. All 22 stories pass
locally, along with Biome and `tsc`.

</details>

---

Generated by Coder Agents on behalf of @tracyjohnsonux.

(cherry picked from commit 74e5a68)
@tracyjohnsonux
tracyjohnsonux force-pushed the backport/2.37/tracyjohnsonux-batch branch from 2dd0e21 to c45ca12 Compare August 26, 2026 21:23
@tracyjohnsonux tracyjohnsonux added the backport/v2.37 Backport PR targeting release/2.37 label Aug 26, 2026
@tracyjohnsonux
tracyjohnsonux marked this pull request as ready for review August 26, 2026 21:44
@tracyjohnsonux tracyjohnsonux changed the title chore: batch backport tracyjohnsonux UI fixes to release/2.37 fix: batch backport tracyjohnsonux UI fixes to release/2.37 Aug 26, 2026
@tracyjohnsonux tracyjohnsonux changed the title fix: batch backport tracyjohnsonux UI fixes to release/2.37 fix(scope): batch backport tracyjohnsonux UI fixes for Agents and Coder admin area to release/2.37 Aug 26, 2026
@tracyjohnsonux
tracyjohnsonux requested a review from mtojek August 26, 2026 21:46
@tracyjohnsonux tracyjohnsonux changed the title fix(scope): batch backport tracyjohnsonux UI fixes for Agents and Coder admin area to release/2.37 fix: batch backport tracyjohnsonux UI fixes for Agents and Coder admin area to release/2.37 Aug 26, 2026
@tracyjohnsonux tracyjohnsonux changed the title fix: batch backport tracyjohnsonux UI fixes for Agents and Coder admin area to release/2.37 fix(site): batch backport tracyjohnsonux UI fixes for Agents and Coder admin area to release/2.37 Aug 26, 2026
@tracyjohnsonux tracyjohnsonux changed the title fix(site): batch backport tracyjohnsonux UI fixes for Agents and Coder admin area to release/2.37 fix: batch backport tracyjohnsonux UI fixes for Agents and Coder admin area to release/2.37 Aug 26, 2026
tracyjohnsonux and others added 6 commits August 26, 2026 23:59
…n settings (#28559)

Adds an organization picker above the compaction thresholds table on
`/agents/settings/compaction`, matching the organization dropdowns in
the agents admin area (`OrganizationAutocomplete`, as used by the Models
and MCP Servers pages). The picker only appears when enabled models span
more than one organization, defaults to the default organization, and
the table shows the selected organization's models. Save tracking still
covers all models so an edited row hidden by the picker is not dropped.

Also removes the organization name text under each model badge (the
organization remains in the accessible labels to disambiguate duplicate
model names) and changes the model badge size from `sm` to `md`.

_This PR was generated by Coder Agents on behalf of @tracyjohnsonux._

(cherry picked from commit 2eee703)
…lls (#28527)

Several badges render at `text-2xs` (10px) via `Badge size="sm"` and
read as broken next to their surroundings, especially since the
MUI/Emotion removal (#27821) dropped the 14px `CssBaseline` body
typography that used to soften the contrast. Most visible on the
provisioner jobs page (Type and Tags columns) and the AI Gateway
sessions list (network call pills).

Rather than changing what `Badge sm` means globally (explored in #28517,
closed in favor of this), this switches the affected call sites to the
default `md` size (`text-xs`, 12px), matching the other badges around
them.

## Changes

- `ProvisionerTags.tsx`: `ProvisionerTag` and the `+N` overflow badge β†’
default `md`. Covers the provisioner jobs Tags column, job detail
expansion, and other provisioner tag consumers.
- `JobRow.tsx`: the job Type badge β†’ default `md`.
- `NetworkCallBadges.tsx`: the total/blocked pills on the sessions list
β†’ default `md`, consistent with the token pills in #28477.

The `Badge` component itself is untouched; `sm` remains available for
intentionally dense contexts.

Related: #28477 (AI session token badges).

> πŸ€– Generated by Coder Agents on behalf of @tracyjohnsonux

(cherry picked from commit f31b759)
Combobox dropdowns were forcing the migrated menu styling in a few
places: secondary menu surfaces, surface-quaternary borders, square item
highlights, tertiary selected-row highlights, and a tertiary footer
hover in the workspace template dropdown.

Use the shared combobox defaults instead: primary menu surfaces,
`border-border-default`, padded lists so highlights do not run to the
edge, rounded item highlights, and the standard secondary selected-row
highlight. Remove callsite overrides that were preventing the shared
defaults from applying to workspace, filter, and version dropdowns.

> This PR was generated by Coder Agents on behalf of @tracyjohnsonux.

(cherry picked from commit 2eb9e4f)
…28478)

Makes the date/time range picker trigger on the AI Gateway sessions page
visually consistent with the adjacent search field and filter dropdowns.
Button size is unchanged (`lg`, h-10).

- **Calendar icon size:** now `size-icon-sm` (18px), identical to the
search icon. Previously the Button's `[&>svg]:size-icon-lg` +
`[&>svg]:p-0.5` child selectors (specificity 0-1-1) overrode the icon's
authored `size-4` class (0-1-0), inflating it to a 24px box at
`size="lg"`. The calendar's classes are marked important (`!size-icon-sm
!p-0`) to win that fight.
- **Calendar line weight:** at equal geometry the calendar reads heavier
than the magnifier because its glyph is denser, so its stroke is
`strokeWidth={1.75}` for optical parity with the search icon.
- **Chevron:** now `size-icon-sm` with no color class, inheriting the
button's `text-content-primary` β€” exactly matching `ComboboxButton`,
which backs the other filter dropdowns (previously it was
`text-content-secondary`).
- **Spacing:** trigger uses `gap-2 pr-1.5` like `ComboboxButton`, giving
8px icon-to-text (matching the search field's `pr-2` addon spacing) and
the same label-to-chevron gap and right padding as the other dropdowns.

**Scope:** `DateTimeRangePicker`'s only production consumer is the AI
Gateway sessions filter, so the change affects only this page (plus
Storybook).

---
*This PR was generated by Coder Agents on behalf of @tracyjohnsonux.*

(cherry picked from commit 769decb)
…links (#28612)

Moves documentation CTAs that were previously rendered as header buttons
into inline `View docs` external text links under the relevant header or
section copy.

Deployment settings:
- `/deployment/overview`
- `/deployment/appearance`
- `/deployment/external-auth`
- `/deployment/oauth2-provider/apps`
- `/deployment/network`
- `/deployment/workspace-proxies`
- `/deployment/idp-org-sync`
- `/deployment/notifications`
- `/deployment/userauth`
- `/deployment/security`
- `/deployment/observability`
- `/deployment/premium`
- `/deployment/ai-governance`

Organization and user settings:
- `/organizations/:organization/groups`
- `/organizations/:organization/roles`
- `/organizations/:organization/idp-sync`
- `/organizations/new`
- `/organizations/:organization/provisioners`
- `/organizations/:organization/provisioner-keys`
- workspace sharing settings

Other admin/tool pages:
- `/ai/settings/gateway-keys`
- `/audit`
- `/connectionlog`
- template permissions settings

- `SettingsHeaderDocsLink` now renders the shared inline `Link`
component with the default label `View docs`, external icon, and
screen-reader text for new-tab behavior.
- Right-side header actions now remain reserved for real actions such as
`Add application`, `Create key`, or export buttons.
- `/deployment/security`: removed the duplicate Browser-Only Connections
badge and vertically aligned the remaining badge with the section
heading.
- `/deployment/observability`: kept docs links scoped to Audit Logging
and Monitoring, and removed the top-level observability docs link.
- Notification misconfiguration alerts now use the same `View docs`
text-link treatment.
- Storybook stories updated to assert the new link labels and hrefs
where covered.

- `pnpm check`
- `pnpm lint:types`
- Targeted Storybook interaction tests for the updated pages.

_This PR was generated by Coder Agents on behalf of @tracyjohnsonux._

(cherry picked from commit 046a532)
)

Repositions the organization picker on the AI settings models and MCP
servers pages so it lives with the content it scopes instead of floating
above the page header.

**Models** (`/ai/settings/models`)

- The picker moved out of `OrganizationModelsLayout` into a shared
`ModelOrganizationSelect` component that preserves the current path and
auxiliary query params when switching orgs.
- List page: rendered in the filter row to the right of search.
- Add/edit model form: rendered as row 3 of the form grid at 50% width,
labeled "Organization". On the edit page it is informational only (a
static value, not a picker), since switching org there would 404 the
model. Also rendered in the no-provider fallback and "Provider not
found" states so the switcher never disappears on those pages.

**MCP servers** (`/ai/settings/mcp-servers`)

- List page: new client-side search input (matches display name, slug,
and URL) with the org picker beside it, label hidden.
- Add/edit server form: the picker moved into the form as the third cell
of the first row (slug, display name, organization), making it a 3-up.
- `OrganizationPicker` now renders a static read-only value instead of a
disabled button when the org cannot be changed (no handler or single
org). This fixes the muted `content-disabled` text on the update page.
The read-only rendering is shared with the models edit page via a new
`OrganizationValue` component beside `OrganizationAutocomplete`.

**Status columns** (both list tables)

- The visible "Status" header and the Enabled/Disabled badges are
removed; both list tables drop the status column entirely. Models whose
provider is deleted or disabled show a warning "Unavailable" badge (with
an explanatory tooltip) beside the name.
- Disabled models and MCP servers show a "Disabled" badge beside the
name, matching the existing "Default" badge placement, and the row dims
like disabled providers: avatar/icon at half opacity, text in
`content-disabled`.

<details>
<summary>Decision log</summary>

- `ModelOrganizationSelect` reuses `OrganizationAutocomplete` and reads
accessible organizations from the models context
(`accessibleOrganizations` added to `OrganizationModelsContext`), rather
than duplicating the layout's navigation logic per page.
- Navigation semantics are unchanged: switching orgs rewrites the `org`
search param and preserves the path and remaining params, exactly as the
old layout-level picker did.
- The MCP `OrganizationPicker` read-only state uses an `<output>`
element (labelable, keeps the `Label` association) rather than a
disabled button, so non-interactive values do not render with disabled
styling or sit in the tab order.
- The add MCP server page keeps a standalone picker above the "cannot
add servers" alert since the form (and its picker slot) is not rendered
in that state.
- Story review: one interaction story per new behavior. A
`ModelsPageView` story duplicating the shared picker's
select-and-navigate flow was deliberately dropped; list-page placement
is covered by the `OrganizationModelsLayout` stories that mount the real
`ModelsPage`. The `ModelForm` fallback-branch picker has no dedicated
story since its sibling branch and the shared flow are covered.

</details>

Verification: `pnpm lint:types`, `pnpm check`, and all affected
Storybook tests pass (ModelsPage and MCPServersPage: 140), plus the
`organizationModels` and `mcpServerFormLogic` unit tests.

---

πŸ€– This PR was generated by Coder Agents on behalf of @tracyjohnsonux.

---------

Co-authored-by: Michael Suchacz <203725896+ibetitsmike@users.noreply.github.com>
(cherry picked from commit 78c65ea)
@tracyjohnsonux
tracyjohnsonux force-pushed the backport/2.37/tracyjohnsonux-batch branch from 9948cc6 to 634ebfd Compare August 27, 2026 00:00
@mtojek
mtojek merged commit ba7e184 into release/2.37 Aug 27, 2026
32 checks passed
@mtojek
mtojek deleted the backport/2.37/tracyjohnsonux-batch branch August 27, 2026 06:53
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 27, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

backport/v2.37 Backport PR targeting release/2.37

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants