Plugins page small adjustments & layout shift fix - #24
Merged
Conversation
Signed-off-by: Anna Effort <anna.effort@ibm.com>
The All/Enabled toggle already covers the enabled axis, and mode is still visible per-plugin in the details dialog, so the Mode select in the filters popover carried no distinct use case. Filters are now hook + tags. Signed-off-by: Anna Effort <anna.effort@ibm.com>
…hich are enabled when that functionality is added. Signed-off-by: Anna Effort <anna.effort@ibm.com>
Signed-off-by: Anna Effort <anna.effort@ibm.com>
The key was removed from en-US in cd6011e when the status badge came off the cards, but the translated bundles kept their entries. main's locales.test.ts asserts no locale defines a message id missing from en-US, so this would have failed CI on rebase. Signed-off-by: Anna Effort <anna.effort@ibm.com>
marekdano
approved these changes
Aug 14, 2026
marekdano
left a comment
Contributor
There was a problem hiding this comment.
The PR looks solid good!!!
LGTM 🚀
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🔗 Related Issue
Follow-up to #23, which landed the plugin catalog page. Contributes to #5766, left open on purpose, see Notes.
📝 Summary
Polish on the freshly merged plugin catalog, plus one layout bug that turned out not to be plugin-specific.
statusis derived frommode—status === "disabled"iffmode === "disabled"so a Status row next to a Mode row said the same thing twice, and every card rendered the same mutedDisableddot. Design when we can enable to add plugin action.src/index.css; details below.plugins.catalog.status,.disabled, and.allModesare gone from en-US, and the orphaned.disabledentries in es-ES and pt-BR go with them.📏 Reviewability
triage— n/a, this follows a merged PR🏷️ Type of Change
🎯 Why remove rather than fix
Status badges: the gateway exposes no non-admin enable/disable, and
statusis a restatement ofmode. In practice every card rendered a muted grey. Cards stay clean until enable/disable exists, at which point only enabled plugins get status marker(s) a badge.Mode filter: mode select in the popover carried no distinct use case.
The test fixture's
modemoved from"permissive"to"disabled"to match itsstatus: "disabled"🐛 Layout fix
Opening the
Viewdialog shifted the whole page ~7.5px to the left. So did opening the Hook dropdown inside the filters popover: same cause, different primitive.src/index.csssetsscrollbar-gutter: stableonhtmlso pages don't jump when their height crosses the viewport. Radix's dialog locks scroll throughreact-remove-scroll, which injects at runtime:That margin compensates for a scrollbar it expects to hide — but the stable gutter never releases the space, so it gets counted twice and everything centered slides left by half the scrollbar width. The fix cancels the compensation:
The
htmlprefix is load-bearing: the injected rule is also!importantand lands later in the cascade, so only higher specificity wins.Measured in headed Chrome with classic scrollbars, injecting the lock stylesheet the way
styleSingletondoes at runtime:Reviewers on a trackpad-only Mac will not be able to reproduce this. It needs scrollbars that take up layout space — Windows, Linux, or macOS with a mouse attached. Otherwise the measured gap is
0and nothing moves.The rule is global by necessity (the selector targets
body), so it fixes every Radix scroll lock, not just theViewdialog:@radix-ui/react-selectmountsRemoveScrollwith noenabledguard, so any open dropdown locks scroll. The Hook select inside the plugin filters popover shifted the page the same way, which is the more easily missed half of this bug: the popover opens without moving anything, then the page jumps when you open the dropdown inside it.PopoverContentNonModalskipsRemoveScroll), so the filters popover itself was never the trigger.🧪 Verification
npm run lintnpm run format:checknpm run testnpx vitest run --coverage --coverage.include='src/pages/Plugins.tsx' --coverage.include='src/components/plugins/**'Test changes in
Plugins.test.tsx:renders plugin cards with status→renders plugin cards without a status badge. It now asserts the description renders and that neitherEnablednorDisabledappears inside the results list, scoped withwithin(list)so the toolbar's Enabled filter button doesn't match. If someone adds a badge back, this fails and asks to be updated.filters by mode and reflects it in the URL→offers no mode filter: hook and tags only, asserting the Hook combobox is present and Mode is not.Statusrow is rendered, with the mode/status derivation written down next to it.Coverage stays above the ~95% client-wide target from the acceptance criteria.
🎥 Demo
plugins_adjustment.mp4