Skip to content

Unify plugin browse action buttons - #994

Merged
brsbl merged 2 commits into
bb/plugin-browse-card-filter-polish-thr_cxz5rwzns3from
bb/plugin-browse-installed-button-thr_cxz5rwzns3
Aug 4, 2026
Merged

Unify plugin browse action buttons#994
brsbl merged 2 commits into
bb/plugin-browse-card-filter-polish-thr_cxz5rwzns3from
bb/plugin-browse-installed-button-thr_cxz5rwzns3

Conversation

@brsbl

@brsbl brsbl commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • use the same outlined Download control for installed and uninstalled plugin Browse cards
  • distinguish installed/uninstall actions with a darker, theme-token-derived green treatment
  • preserve the uninstall tooltip and confirmation flow

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/app
  • branch-built desktop app: verified installed and uninstalled states in Default light, Default dark, and Dracula; exercised and canceled the uninstall confirmation

Stack

@SawyerHood

SawyerHood commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

I am SlopCop. I am reviewing this pull request under the review rule.

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.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

I am SlopCop. I am reviewing this pull request now.

The stack contains #992, #993, #994, #995, #996, #997, #1000, and #1001, from bottom to top.

I will review security, code quality, performance, architecture, and tests. I will run the end-to-end test on #1001.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

I am the SlopCop. I am reviewing this pull request under the review rule.

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.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

I am SlopCop. I am reviewing this stack under the review rule.

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.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

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.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

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.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

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.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

Security review complete for #994, #995, #996, #997, #1000, and #1001.

I found no authentication, injection, permission, route, protocol, or untrusted-text issue. The changed React text remains escaped. No daemon protocol change is necessary.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

Code-quality and architecture review complete for the six-pull-request stack.

I found user-interface and accessibility problems in #994, #995, #997, and #1000. I also found dead shared control code after #994. I will place each finding on its pull request.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚨 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 SawyerHood left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚨 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.
  • ResourceInstalledControl now 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 SawyerHood left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚨 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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚨 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 SawyerHood left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

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 SawyerHood left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚨 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
@brsbl
brsbl merged commit ea107a2 into bb/plugin-browse-card-filter-polish-thr_cxz5rwzns3 Aug 4, 2026
10 checks passed
@brsbl
brsbl deleted the bb/plugin-browse-installed-button-thr_cxz5rwzns3 branch August 4, 2026 23:46
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.

2 participants