Unify plugin browse action buttons - #994
Conversation
|
🚨 SLOP COP 🚨 · I am SlopCop. I am reviewing this pull request under the The stack contains #993, #994, #995, #996, #997, #1000, and #1001. All seven pull requests are ready for review, and @brsbl has write access. I will run security, code quality, performance, architecture, and end-to-end checks. I will post each phase result when it completes. |
|
🚨 SLOP COP 🚨 · I am the SlopCop. I am reviewing this pull request under the The stack contains #994, #995, #996, #997, #1000, and #1001. I will review each change separately. I will judge each change against the final stack state. I found no skipped pull requests. All stack pull requests are ready. The author has write access. I started parallel security, code quality, and performance reviews. I will test the top pull request once through the application, if possible. |
|
🚨 SLOP COP 🚨 · I am SlopCop. I am reviewing this stack under the The stack contains these pull requests, from bottom to top:
I will run security, code quality and architecture, performance, and one end-to-end phase on top PR #1001. I skipped no pull requests. |
|
🚨 SLOP COP 🚨 · Security phase complete. I found no security issue in this PR after I reviewed the complete stack. The changes do not add a trust-boundary change, unsafe render sink, data exposure, dependency risk, or protocol change. |
|
🚨 SLOP COP 🚨 · Performance phase complete. I found no performance or resource-use defects in this pull request. I reviewed it against the final seven-pull-request stack. I checked render work, value stability, filtering, sorting, memoization, requests, subscriptions, and test cost. |
|
🚨 SLOP COP 🚨 · Security phase complete. I found no security or privacy defects in this pull request. I reviewed it against the final seven-pull-request stack. I checked unsafe rendering, injection, links, actions, permissions, data disclosure, configuration, dependencies, and trust boundaries. |
|
🚨 SLOP COP 🚨 · Performance review complete for the six-pull-request stack. I found no material list-card, menu, or render-cost regression in #994, #995, #996, #997, or #1001. The shared Docs sidebar state in #1000 can update all matching panes during resize. I will include that result with the #1000 correctness finding. |
| const headerAction = | ||
| installedPluginId !== null ? ( | ||
| <ResourceInstalledControl | ||
| <ResourceInstallControl |
There was a problem hiding this comment.
🚨 slopcop/review — The installed state now depends on color alone.
Both branches show the same Download icon. Only the green color identifies the installed state. This design also presents an uninstall action as a download action.
Use a distinct installed icon. Preserve a destructive hover or focus signal before the confirmation dialog.
SawyerHood
left a comment
There was a problem hiding this comment.
🚨 SLOP COP 🚨 · review
Result: I found one medium user-interface issue and one low architecture issue.
- The installed button uses the same Download icon as the install button. The green color carries the installed state. The inline comment has the full finding.
ResourceInstalledControlnow has no users. Only its definition and re-export remain. Delete it, or move the installed appearance into a shared control variant.
The security review found no boundary issue. The performance review found no regression. The focused test passed with 6 tests. The app type check and current CI passed.
Inline finding: #994 (comment)
SawyerHood
left a comment
There was a problem hiding this comment.
🚨 SLOP COP 🚨 · review
Review complete.
I found no issues in this pull request after the complete stack lands.
The uninstall control has an exact label, tooltip, and confirmation. The final gate accepted the icon as intentional design.
I used a comment-only review. I did not approve or request changes.
| const headerAction = | ||
| installedPluginId !== null ? ( | ||
| <ResourceInstalledControl | ||
| <ResourceInstallControl |
There was a problem hiding this comment.
🚨 slopcop/review — The button shows a Download icon, but it opens an uninstall confirmation.
This visual signal conflicts with the accessible label, tooltip, and action. The shared ResourceInstalledControl already provides the installed Check state and the Trash uninstall state on hover or focus. Please reuse that control or show an uninstall icon.
SawyerHood
left a comment
There was a problem hiding this comment.
🚨 SLOP COP 🚨 · review
Final comment-only review for #994.
One medium finding.
The installed plugin button shows a Download icon but starts an uninstall action. I posted the finding on the changed line.
The security review found no defect. The performance review found no defect. The architecture scan found the existing shared installed control.
I ran the end-to-end attempt only on the top pull request. The shared host did not produce a ready development server.
GitHub CI passed on the latest stack head. The GPT-5.6 review gate approved this review result.
|
🚨 SLOP COP 🚨 · Performance phase complete. I found no material performance issue in this PR after I reviewed the complete stack. The render scope, allocations, bundle inputs, and pagination behavior stay stable. |
| const headerAction = | ||
| installedPluginId !== null ? ( | ||
| <ResourceInstalledControl | ||
| <ResourceInstallControl |
There was a problem hiding this comment.
🚨 slopcop/review — The Download icon now starts an Uninstall action.
The browser test confirmed that each installed card shows Download, but the button opens the uninstall dialog.
ResourceInstalledControl already shows Check and reveals Trash2 with destructive hover and focus styles. Use that control or an explicit uninstall state.
|
🚨 SLOP COP 🚨 · Code-quality and architecture phase complete. I left one behavior finding. Installed cards show a Download icon for an Uninstall action. I checked the full stack and checked later PRs before I reported each issue. |
SawyerHood
left a comment
There was a problem hiding this comment.
🚨 SLOP COP 🚨 · review
Review result: one behavior finding.
- Security review found no issue.
- Performance review found no material render, allocation, bundle, or pagination issue.
- Turbo type checks passed for the app, shared UI, Automations, and Docs packages.
- The affected tests passed after clean reruns. The latest Docs suite passed all 57 tests.
The installed control shows a Download icon for an Uninstall action. The browser test confirmed this mismatch.
## Summary - vertically center each capability glyph with its capability name - remove the prior one-pixel glyph offset - preserve table density, spacing, and description layout ## Verification - `pnpm exec turbo run test --filter=@bb/app -- --run src/components/tools/detail-page-recipes.test.tsx` (38 tests passed) - `pnpm exec turbo run typecheck --filter=@bb/app` - branch-built desktop app: captured pre/post screenshots on the Automations plugin detail page and verified all capability name/icon pairs are centered ## Stack - Parent: #994 - This PR: capability name/icon alignment
ea107a2
into
bb/plugin-browse-card-filter-polish-thr_cxz5rwzns3
Summary
Verification
pnpm exec turbo run test --filter=@bb/app -- --run src/components/plugin/management/BrowsePluginsTab.test.tsx(6 tests passed)pnpm exec turbo run typecheck --filter=@bb/appStack