Skip to content

Make Browse the default Extensions tab - #1115

Merged
brsbl merged 4 commits into
mainfrom
bb/make-browse-first-extensions-tab-thr_7db2ut5247
Aug 7, 2026
Merged

Make Browse the default Extensions tab#1115
brsbl merged 4 commits into
mainfrom
bb/make-browse-first-extensions-tab-thr_7db2ut5247

Conversation

@brsbl

@brsbl brsbl commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • make Browse the default and first tab for Plugins and Skills
  • preserve independent Plugins and Skills routes while navigating within Extensions
  • reset Extensions navigation to Plugins → Browse after returning to the main app
  • keep installed/library detail breadcrumbs pointed at their explicit collection routes

Testing

  • pnpm exec vitest run --config vitest.config.ts src/hooks/useAppSettingsRouteMemory.test.tsx src/components/tools/ToolsSidebar.test.tsx src/components/plugin/PluginsOverview.test.tsx src/views/SkillsView.test.tsx src/components/layout/AppLayout.tools-breadcrumbs.test.ts src/App.legacy-skill-route.test.tsx
  • pnpm exec turbo run typecheck --filter=@bb/app
  • real desktop-app QA for default tabs, tab order, internal route preservation, and leave/reopen reset

@brsbl brsbl changed the title bb/make browse first extensions tab thr 7db2ut5247 Make Browse the default Extensions tab Aug 7, 2026
@SawyerHood

SawyerHood commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

I am the SlopCop. I am reviewing this pull request for security, code quality, performance, architecture, and end-to-end behavior.

The stack contains one pull request: #1115, “Make Browse the default Extensions tab.” I found no later stack pull requests after the required second search.

I confirmed that @brsbl has write access. I will post phase results as each review finishes.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

Security phase complete: no security findings.

I checked the new route memory, query parsing, same-origin navigation, injection risks, authorization boundaries, and registry requests. The changed code keeps navigation under /tools, uses fixed view values, and adds no unsafe HTML or persistent storage.

The security agent also ran 60 focused tests and the @bb/app typecheck. All checks passed.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

End-to-end phase complete: passed on the top and only stack PR.

I started the development app at head SHA 233b561d. I tested these browser paths:

  • /tools/plugins opened Browse first.
  • Installed changed the URL to ?view=installed.
  • /tools/skills opened Browse first.
  • Library changed the URL to ?view=library.
  • Sidebar switches restored each section route.
  • Back to app followed by Extensions reset the entry route to Plugins Browse.

Page titles, selected tabs, and URLs matched each expected state.

location.pathname === getRegistrySkillsRoutePath() ||
new URLSearchParams(location.search).get("view") === "browse";
(location.pathname === getSkillsRoutePath() &&
new URLSearchParams(location.search).get("view") !== "library");

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 default Skills route starts a large registry request set.

This condition enables the list request and both enrichment request sets on /tools/skills. Browser QA recorded 20 registry requests on one visit.

Please reduce focus refetches and cache the list response before Browse becomes the default.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in dc5b4c6. The Skills registry list now has a 30-minute stale window and disables focus refetches. Regression coverage verifies refocus and Library → Browse reuse the cached list without another request; the existing enrichment queries retain their longer caches and disabled focus refetches.

label={item.label}
to={
item.id === activeSection
? currentRoutePath

@SawyerHood SawyerHood Aug 7, 2026

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 active section row no longer returns to its list.

This target equals the current URL. A click on the active row now has no useful effect from a detail route.

Please use the section root for the active row. Keep the saved route for the other section.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in dc5b4c6. The active section row now targets its section root, while the inactive section continues to use its saved route. The detail-route regression now verifies Plugins returns to .

@SawyerHood

SawyerHood commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

Performance phase complete: one medium finding and two low findings.

  • The bare Skills route now starts one uncached list request and two enrichment request sets. Browser QA recorded 20 registry requests.
  • The static plugin catalog keeps a short stale time and allows focus refetches.
  • The legacy plugin Browse redirect still emits the old ?view=browse URL.

I posted an inline comment for the request fan-out. The focused tests and the app typecheck still pass.

function modeFromSearchParams(value: string | null): PluginsCollectionMode {
if (value === "browse") return value;
return "installed";
if (value === "installed") return value;

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 new default changes an old management redirect.

/settings/plugins still redirects to the bare Plugins path. It now opens Browse instead of Installed.

Please update that compatibility redirect to ?view=installed. Add a test for its search string.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in dc5b4c6. The exact compatibility route now redirects to , with an assertion covering both pathname and search string.

@SawyerHood

Copy link
Copy Markdown
Collaborator

🚨 SLOP COP 🚨 · review

Code quality and architecture phase complete: two user-visible defects remain.

  • /settings/plugins now redirects to Browse instead of Installed.
  • The active section row no longer returns from a detail page to its section list.

I confirmed both defects in browser QA and posted inline comments.

The owned-view mapping also appears in several files. A shared route helper can remove the repeated installed and library rules.

The broad review passed 531 tests, the app typecheck, and lint with no new warnings.

@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 for the one-PR stack: #1115.

Security review found no issues.

The review found three main issues:

  • The default Skills Browse route made 20 registry requests during browser QA.
  • /settings/plugins now opens Browse instead of Installed.
  • The active Extensions row no longer returns from a detail page to its section list.

Two low performance issues remain. The static plugin catalog can refetch on focus, and the old Browse redirect emits a noncanonical query.

The owned-view mapping appears in several files. A shared route helper can reduce this duplication.

Verification passed 531 tests, the app typecheck, and lint with no new warnings. End-to-end checks passed for defaults, tab memory, and Extensions re-entry.

I posted three inline comments with fixes. This review uses the comment-only state.

@brsbl
brsbl merged commit 7d2e55a into main Aug 7, 2026
10 checks passed
@brsbl
brsbl deleted the bb/make-browse-first-extensions-tab-thr_7db2ut5247 branch August 7, 2026 02:33
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