Skip to content

🤖 fix: keep plugin card actions in one place on every card - #7754

Merged
ThomasK33 merged 3 commits into
mainfrom
plugin-ui-trte
Oct 30, 2026
Merged

ThomasK33 merged 3 commits into
mainfrom
plugin-ui-trte

Conversation

@ThomasK33

@ThomasK33 ThomasK33 commented Oct 30, 2026 •

Copy link
Copy Markdown
Member

Why

On Settings > Plugins, each card's action buttons (Manage components, Hooks, Update, Uninstall) moved around. Short cards showed them top right. A card with a long description dropped them to a row under the text, aligned left. This PR puts them in one place on every card.

What changed

  • The card header holds only the name, version, badges and the buttons. The description, vendor details and metadata render full width below it. The wrap of the buttons now depends on the title alone.
  • When the buttons wrap (phones), they start flush with the card text instead of sitting right-aligned with a gap.
  • The existing InstalledWithUpdateStates and InstalledPhoneViewport stories gain a long-description plugin and one placement check each. The desktop check fails on the old layout, and the phone check fails on a right-aligned wrap.

Scope

  • Layout and classes only. Button order, labels and handlers do not change.
  • Keyboard focus gaps that a bug bash found in the Hooks and Uninstall panels are older code and are tracked in 🤖 Settings > Plugins: Hooks and Uninstall panels drop focus and ignore Escape #7753.
  • Known gap: when a plugin name wraps to two lines, the buttons center against both lines instead of the first. This needs a name near the 64-character limit plus badges.

Tradeoffs

  • A container breakpoint (left-align below 512px) left right-aligned wrapped rows on cards between 512px and about 600px wide. Removing ml-auto and justify-end fixes every width, because the name block already grows and pushes the buttons right when they fit.

Blast Radius

Only the installed-plugin cards in Settings > Plugins. No logic changed.

Verification

  • Storybook, measured with agent-browser: at 1440px every card's last button ends 13px from the card edge on the name row. At 390px the first button and the name both start at x=29 on all cards. A sweep from 390px to 1440px held both.
  • Bug bash in the sandbox, 3 charters (phone, web, keyboard): no finding in the changed layout. $1.20.

Before (desktop, release-notes card):

Before: release-notes buttons drop below the text

After (desktop):

After: every card has its buttons on the name row

After (phone):

After on a phone: wrapped buttons start flush with the card text


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high • Cost: $2.38

The plugin card header wrapped the name, description, interface details and
metadata in one column next to the action buttons. A long description made that
column full width, so flex-wrap dropped the buttons to a left-aligned row below.

The header now holds only the name, version and badges plus the buttons, so the
buttons stay top-right on desktop and wrap right-aligned on phones. Description,
interface details and metadata render full width below. Adds InstalledList
Desktop/Phone stories with the mix of cards that showed the bug.

---
_Generated with [`xum`](https://github.com/coder/xum) • Model: `anthropic:claude-opus-5-5` • Thinking: `high`_
When a plugin card's actions wrap under the title (phones), they were
right-aligned and sat indented from the card text. Drop ml-auto and
justify-end: the flex-1 name block already pushes the actions right on
the name row, and once wrapped they start flush with the card text.

---
_Generated with [`xum`](https://github.com/coder/xum) • Model: `anthropic:claude-opus-5-5` • Thinking: `high`_
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-30T11:07:55.971462Z 8856dd9 Manual request
🔒 Security Review ✅ Completed 2026-10-30T11:08:22.966669Z 8856dd9 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

🟢 e2e stories (Haiku): 14 passed

22 agent steps · 7 replayed from cache · 15 model calls · 46.2k tokens (24% cached)
Spend: $0.09 of the $1.00 cap (proxy ledger)

All 14 tests in 9 files
Test Agent Time
🟢 chatRestart.e2e.ts · 1 passed 1 step · 1 call 5.3s
🟢 a chat survives a restart of the server 1 step · 1 call 5.3s
🟢 compaction.e2e.ts · 1 passed 1 step · 1 call 4.4s
🟢 /compact replaces the old chat with a summary 1 step · 1 call 4.4s
🟢 pluginTrustRestart.e2e.ts · 1 passed 4 steps · 2 calls 10.5s
🟢 a trusted plugin hook stays trusted after the server restarts 4 steps · 2 calls 10.5s
🟢 settingsRoundTrip.e2e.ts · 1 passed 2 steps · 1 call 9.8s
🟢 a chat survives trips through Settings 2 steps · 1 call 9.8s
🟢 sidebarPerWorkspace.e2e.ts · 1 passed 4 steps · 1 call 4.5s
🟢 a new workspace starts with its right sidebar collapsed while another keeps it open 4 steps · 1 call 4.5s
🟢 smoke.e2e.ts · 1 passed 2 steps · 1 call 2.9s
🟢 the agent opens the playground workspace 2 steps · 1 call 2.9s
🟢 streamErrors.e2e.ts · 1 passed 1 step · 1 call 6.7s
🟢 stream errors show in the chat, and the chat recovers 1 step · 1 call 6.7s
🟢 todoNudge.e2e.ts · 1 passed 1 step · 1 call 3.1s
🟢 the agent finishes open TODO items after the turn-end nudge 1 step · 1 call 3.1s
🟢 touchAlignment.e2e.ts · 6 passed 6 steps · 6 calls 29.9s
🟢 the Settings close button is level with the title on a touch screen 390px wide 1 step · 1 call 3.7s
🟢 the Settings close button is level with the title on a touch screen 768px wide 1 step · 1 call 4.2s
🟢 Backup settings checkboxes are small and level with their labels on a touch phone 1 step · 1 call 5.1s
🟢 the heartbeat checkbox is small and level with its label on a touch phone 1 step · 1 call 10.4s
🟢 a reply's model and time stay on one line on a touch phone 1 step · 1 call 3.2s
🟢 the workspace actions menu stays on the title row on a touch phone 1 step · 1 call 3.3s

e2e 0.20.0 · 1m 20s · web · run artifacts

🟢 e2e Electron stories (Haiku): 3 passed

3 agent steps · 3 model calls · 8.0k tokens (22% cached)
Spend: $0.02 of the $1.00 cap (proxy ledger)

All 3 tests in 3 files
Test Agent Time
🟢 electron/deepLink.e2e.ts · 1 passed 1 step · 1 call 7.7s
🟢 a deep link of a second launch starts a chat in the running app 1 step · 1 call 7.7s
🟢 electron/menuBar.e2e.ts · 1 passed 1 step · 1 call 5.8s
🟢 the workspace menu bar is the desktop title bar 1 step · 1 call 5.8s
🟢 electron/smoke.e2e.ts · 1 passed 1 step · 1 call 7.9s
🟢 Xum Electron opens the playground workspace 1 step · 1 call 7.9s

e2e 0.20.0 · 23.6s · electron · run artifacts

🟢 e2e agent repros (Haiku): no tests selected

Spend: $0.00 of the $1.00 cap (proxy ledger)

e2e 0.20.0 · 5.3s · 2 targets (web, phone) · run artifacts

Drop the extra App installed-list stories (their phone play threw on the
missing group) and assert action placement in the existing Settings
stories instead: deploy-tools gets a long description, the desktop play
checks Uninstall stays above it, and the phone play checks wrapped
actions start flush with the plugin name.

_Generated with [`xum`](https://github.com/coder/xum) • Model: `anthropic:claude-opus-5-5` • Thinking: `high`_

Signed-off-by: Thomas Kosiewski <tk@coder.com>
@ThomasK33

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: 8856dd97f9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 8856dd97f9

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@ThomasK33
ThomasK33 added this pull request to the merge queue Oct 30, 2026
Merged via the queue into main with commit 2108696 Oct 30, 2026
33 of 34 checks passed
@ThomasK33
ThomasK33 deleted the plugin-ui-trte branch October 30, 2026 11:26
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.

1 participant