Skip to content

fix(frontend/library): reorder library page layout and adjust UI elements - #12465

Closed
0ubbe wants to merge 4 commits into
devfrom
lluisagusti/secrt-2139-fixfrontendlibrary-reorder-library-page-layout-and-adjust-ui
Closed

fix(frontend/library): reorder library page layout and adjust UI elements#12465
0ubbe wants to merge 4 commits into
devfrom
lluisagusti/secrt-2139-fixfrontendlibrary-reorder-library-page-layout-and-adjust-ui

Conversation

@0ubbe

@0ubbe 0ubbe commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

Resolves SECRT-2139

Changes 🏗️

  • Move "Jump back in" alert below the search bar but above the agent list
  • Remove "My agents" header text from the library sub-header
  • Rename the "All" tab to "All agents"
  • Move the sort dropdown to be before (left of) the "Create folder" button
  • Make the sort dropdown font-size text-sm (both label and select)

Checklist 📋

For code changes:

  • I have clearly listed my changes in the PR description
  • I have made a test plan
  • I have tested my changes according to the test plan:
    • Verify "Jump back in" renders after search bar and before agent list
    • Verify "My agents" header is removed
    • Verify "All" tab now reads "All agents"
    • Verify sort dropdown appears before "Create folder" button
    • Verify sort dropdown uses text-sm font size
    • pnpm format && pnpm lint && pnpm types all pass

0ubbe and others added 2 commits March 18, 2026 15:43
Match the marketplace SearchBar styles to the standard Form text field
component (rounded-3xl, border, zinc colors, focus ring). Add p-4
padding and a subtle border (border-border/50) to StoreCard.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ents

- Move JumpBackIn alert below search bar but above agent list
- Remove "My agents" header text
- Rename "All" tab to "All agents"
- Move sort dropdown before "Create folder" button
- Make sort dropdown text-sm

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@0ubbe
0ubbe requested a review from a team as a code owner March 18, 2026 09:16
@0ubbe
0ubbe requested review from kcze and ntindle and removed request for a team March 18, 2026 09:16
@github-project-automation github-project-automation Bot moved this to 🆕 Needs initial review in AutoGPT development kanban Mar 18, 2026
@github-actions github-actions Bot added the platform/frontend AutoGPT Platform - Front end label Mar 18, 2026
@github-actions

github-actions Bot commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

🔍 PR Overlap Detection

This check compares your PR against all other open PRs targeting the same branch to detect potential merge conflicts early.

🔴 Merge Conflicts Detected

The following PRs have been tested and will have merge conflicts if merged after this PR. Consider coordinating with the authors.

🟢 Low Risk — File Overlap Only

These PRs touch the same files but different sections (click to expand)

Summary: 1 conflict(s), 0 medium risk, 2 low risk (out of 3 PRs with file overlap)


Auto-generated on push. Ignores: openapi.json, lock files.

@coderabbitai

coderabbitai Bot commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

The PR reorganizes sorting functionality in the library UI by moving the setLibrarySort prop from LibraryActionSubHeader to LibrarySubSection. Additionally, minor UI adjustments are made to marketplace components including SearchBar prop removal and StoreCard styling updates. The library page's first tab label is updated to "All agents" and component ordering is adjusted.

Changes

Cohort / File(s) Summary
Library Sorting Reorganization
LibraryActionSubHeader/LibraryActionSubHeader.tsx, LibraryAgentList/LibraryAgentList.tsx, LibrarySubSection/LibrarySubSection.tsx
Removed setLibrarySort prop from LibraryActionSubHeader component; passed it instead to LibrarySubSection. LibrarySubSection now accepts and wires the sort callback to LibrarySortMenu. Simplified LibraryActionSubHeader to display only agent count.
Library UI Text Updates
page.tsx, LibrarySortMenu/LibrarySortMenu.tsx
Updated first tab label from "All" to "All agents". Applied text-sm font sizing to sort label and SelectTrigger in LibrarySortMenu. Reordered JumpBackIn component placement in page render.
Marketplace SearchBar Simplification
marketplace/components/SearchBar/SearchBar.tsx, HeroSection/HeroSection.tsx
Removed color and styling props (backgroundColor, iconColor, textColor, placeholderColor) from SearchBar. Changed default height from h-[60px] to h-[2.875rem]. Removed explicit height prop usage in HeroSection.
Marketplace StoreCard Styling
marketplace/components/StoreCard/StoreCard.tsx
Added border styling and padding to container div via className update.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

review effort 3/5

Suggested reviewers

  • ntindle
  • kcze

Poem

🐰 A shuffle of sorts through the UI we go,
Props dance from header to section below,
Colors fade out, borders now shine,
The library's sorting is perfectly fine!
Hop, hop, hooray for this refactor spree!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main changes: reordering the library page layout and adjusting UI elements like tabs and font sizes.
Description check ✅ Passed The description is clearly related to the changeset, listing specific changes (Jump back in repositioning, header removal, tab renaming, sort dropdown movement, font-size adjustments) and a completed test checklist.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch lluisagusti/secrt-2139-fixfrontendlibrary-reorder-library-page-layout-and-adjust-ui
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx (1)

3-3: ⚠️ Potential issue | 🟠 Major

Replace Radix UI icon with Phosphor icon.
This component imports and uses MagnifyingGlassIcon from @radix-ui/react-icons, which violates the frontend icon standard requiring Phosphor Icons only.

🔧 Suggested change
-import { MagnifyingGlassIcon } from "@radix-ui/react-icons";
+import { MagnifyingGlass } from "@phosphor-icons/react";
@@
-      <MagnifyingGlassIcon className="h-5 w-5 text-zinc-400" />
+      <MagnifyingGlass className="h-5 w-5 text-zinc-400" weight="regular" />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@autogpt_platform/frontend/src/app/`(platform)/marketplace/components/SearchBar/SearchBar.tsx
at line 3, The SearchBar component currently imports and uses
MagnifyingGlassIcon from `@radix-ui/react-icons`; replace that with the Phosphor
icon equivalent by importing MagnifyingGlass from the Phosphor package (e.g.,
"phosphor-react") and update any JSX that renders <MagnifyingGlassIcon .../> to
render <MagnifyingGlass .../> preserving props like size/className and aria
attributes so styling and accessibility remain unchanged.
🧹 Nitpick comments (2)
autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx (1)

37-37: Use a semantic design-token shadow color in dark mode.

dark:hover:shadow-gray-700 is palette-specific; please switch it to a token-based shadow color for theme consistency.

As per coding guidelines, "Use Tailwind CSS only for styling with design tokens."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@autogpt_platform/frontend/src/app/`(platform)/marketplace/components/StoreCard/StoreCard.tsx
at line 37, The StoreCard.tsx className uses a palette-specific
dark:hover:shadow-gray-700; update the StoreCard component's root className to
use the theme design-token shadow instead (replace dark:hover:shadow-gray-700
with the appropriate token-based class, e.g.
dark:hover:shadow-[YOUR_SHADOW_TOKEN] or the project’s token like
dark:hover:shadow-elevated) so the hover shadow in dark mode uses the design
token system rather than a hardcoded palette color.
autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx (1)

12-14: Consider adding context to the agent count display.

The component now displays only the raw number without any label. While this aligns with the PR objective to remove "My agents," consider whether users might be confused seeing just "15" instead of "15 agents."

💡 Optional: Add context to the count
       <Text variant="body" data-testid="agents-count" className="text-zinc-500">
-        {agentCount}
+        {agentCount} {agentCount === 1 ? "agent" : "agents"}
       </Text>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@autogpt_platform/frontend/src/app/`(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
around lines 12 - 14, The agent count Text in LibraryActionSubHeader currently
renders only the raw agentCount value which can be ambiguous; update the
rendering of the Text (component LibraryActionSubHeader, element showing
agentCount) to include contextual wording and proper pluralization (e.g., "1
agent" vs "15 agents") or an explicit label/aria-label so users understand the
number represents agents while keeping the existing data-testid="agents-count".
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In
`@autogpt_platform/frontend/src/app/`(platform)/marketplace/components/SearchBar/SearchBar.tsx:
- Line 3: The SearchBar component currently imports and uses MagnifyingGlassIcon
from `@radix-ui/react-icons`; replace that with the Phosphor icon equivalent by
importing MagnifyingGlass from the Phosphor package (e.g., "phosphor-react") and
update any JSX that renders <MagnifyingGlassIcon .../> to render
<MagnifyingGlass .../> preserving props like size/className and aria attributes
so styling and accessibility remain unchanged.

---

Nitpick comments:
In
`@autogpt_platform/frontend/src/app/`(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx:
- Around line 12-14: The agent count Text in LibraryActionSubHeader currently
renders only the raw agentCount value which can be ambiguous; update the
rendering of the Text (component LibraryActionSubHeader, element showing
agentCount) to include contextual wording and proper pluralization (e.g., "1
agent" vs "15 agents") or an explicit label/aria-label so users understand the
number represents agents while keeping the existing data-testid="agents-count".

In
`@autogpt_platform/frontend/src/app/`(platform)/marketplace/components/StoreCard/StoreCard.tsx:
- Line 37: The StoreCard.tsx className uses a palette-specific
dark:hover:shadow-gray-700; update the StoreCard component's root className to
use the theme design-token shadow instead (replace dark:hover:shadow-gray-700
with the appropriate token-based class, e.g.
dark:hover:shadow-[YOUR_SHADOW_TOKEN] or the project’s token like
dark:hover:shadow-elevated) so the hover shadow in dark mode uses the design
token system rather than a hardcoded palette color.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b3f6c730-0d70-4111-9f17-4bc72b60919c

📥 Commits

Reviewing files that changed from the base of the PR and between 280a98a and 314735d.

📒 Files selected for processing (8)
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: end-to-end tests
  • GitHub Check: Check PR Status
🧰 Additional context used
📓 Path-based instructions (14)
autogpt_platform/frontend/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

autogpt_platform/frontend/**/*.{ts,tsx,js,jsx}: Use Node.js 21+ with pnpm package manager for frontend development
Always run 'pnpm format' for formatting and linting code in frontend development

autogpt_platform/frontend/**/*.{ts,tsx,js,jsx}: Run pnpm format to auto-fix formatting issues before completing work
Run pnpm lint to check for lint errors and fix any that appear before completing work

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/frontend/**/*.{tsx,ts}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

autogpt_platform/frontend/**/*.{tsx,ts}: Use function declarations for components and handlers (not arrow functions) in React components
Only use arrow functions for small inline lambdas (map, filter, etc.) in React components
Use PascalCase for component names and camelCase with 'use' prefix for hook names in React
Use Tailwind CSS utilities only for styling in frontend components
Use design system components from 'src/components/' (atoms, molecules, organisms) in frontend development
Never use 'src/components/legacy/' in frontend code
Only use Phosphor Icons (@phosphor-icons/react) for icons in frontend components
Use generated API hooks from '@/app/api/generated/endpoints/' instead of deprecated 'BackendAPI' or 'src/lib/autogpt-server-api/
'
Use React Query for server state (via generated hooks) in frontend development
Default to client components ('use client') in Next.js; only use server components for SEO or extreme TTFB needs
Use '' component for rendering errors in frontend UI; use toast notifications for mutation errors; use 'Sentry.captureException()' for manual exceptions
Separate render logic from data/behavior in React components; keep comments minimal (code should be self-documenting)

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/frontend/**/*.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

autogpt_platform/frontend/**/*.{ts,tsx}: No barrel files or 'index.ts' re-exports in frontend code
Regenerate API hooks with 'pnpm generate:api' after backend OpenAPI spec changes in frontend development

Run pnpm types to check for type errors and fix any that appear before completing work

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/frontend/**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

autogpt_platform/frontend/**/*.{js,jsx,ts,tsx}: Format frontend code using pnpm format
Never use components from src/components/__legacy__/*

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/frontend/src/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

autogpt_platform/frontend/src/**/*.{ts,tsx}: Structure components as ComponentName/ComponentName.tsx + useComponentName.ts + helpers.ts and use design system components from src/components/ (atoms, molecules, organisms)
Use generated API hooks from @/app/api/__generated__/endpoints/ with pattern use{Method}{Version}{OperationName} and regenerate with pnpm generate:api
Use function declarations (not arrow functions) for components and handlers
Separate render logic from business logic with component.tsx + useComponent.ts + helpers.ts structure
Colocate state when possible, avoid creating large components, use sub-components in local /components folder
Avoid large hooks, abstract logic into helpers.ts files when sensible
Use arrow functions only for callbacks, not for component declarations
Avoid comments at all times unless the code is very complex
Do not use useCallback or useMemo unless asked to optimize a given function

autogpt_platform/frontend/src/**/*.{ts,tsx}: Use function declarations (not arrow functions) for components and handlers
Use type-safe generated API hooks via Orval + React Query for data fetching
Use React Query for server state management and co-locate UI state in components/hooks
Separate render logic (.tsx) from business logic (use*.ts hooks)
Use only shadcn/ui (Radix UI primitives) with Tailwind CSS for UI components
Use Phosphor Icons only for all icon implementations
Use ErrorCard component for render errors, toast for mutations, and Sentry for exceptions
Use design system components from src/components/ (atoms, molecules, organisms)
Never use src/components/__legacy__/* components
Use generated API hooks from @/app/api/__generated__/endpoints/ with pattern use{Method}{Version}{OperationName}
Use Tailwind CSS only for styling with design tokens
Do not use useCallback or useMemo unless asked to optimize a specific function
Never type with any unless a variable/attribute can actually be of any type

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/frontend/**/*.{js,jsx,ts,tsx,css}

📄 CodeRabbit inference engine (AGENTS.md)

Use Tailwind CSS only for styling, use design tokens, and use Phosphor Icons only

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/frontend/src/**/*.tsx

📄 CodeRabbit inference engine (AGENTS.md)

Component props should be interface Props { ... } (not exported) unless the interface needs to be used outside the component

Use type Props = { ... } (not exported) for component props unless used outside the component

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Never type with any, if no types available use unknown

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/frontend/src/app/(platform)/**/*.tsx

📄 CodeRabbit inference engine (AGENTS.md)

If adding protected frontend routes, update frontend/lib/supabase/middleware.ts

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/frontend/src/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)

Fully capitalize acronyms in symbols, e.g. graphID, useBackendAPI

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/frontend/src/**/components/**/*.{ts,tsx}

📄 CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)

Put sub-components in a local components/ folder within the feature directory

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/frontend/src/**/[A-Z]*/**/*.{ts,tsx}

📄 CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)

Structure components as ComponentName/ComponentName.tsx + useComponentName.ts + helpers.ts

Files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
autogpt_platform/frontend/src/app/(platform)/**/page.tsx

📄 CodeRabbit inference engine (AGENTS.md)

Create pages in src/app/(platform)/feature-name/page.tsx with a usePageName.ts hook for logic and sub-components in local components/ folder

Files:

  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
autogpt_platform/frontend/src/app/(platform)/*/page.tsx

📄 CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)

Create pages in src/app/(platform)/feature-name/page.tsx

Files:

  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
🧠 Learnings (25)
📚 Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Separate render logic from data/behavior in React components; keep comments minimal (code should be self-documenting)

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
📚 Learning: 2026-02-26T21:29:44.105Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-26T21:29:44.105Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Use only shadcn/ui (Radix UI primitives) with Tailwind CSS for UI components

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
📚 Learning: 2026-02-26T21:29:44.105Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-26T21:29:44.105Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Use ErrorCard component for render errors, toast for mutations, and Sentry for exceptions

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
📚 Learning: 2026-02-26T21:29:44.105Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-26T21:29:44.105Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Use Tailwind CSS only for styling with design tokens

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
📚 Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Use Tailwind CSS utilities only for styling in frontend components

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
📚 Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/**/*.{js,jsx,ts,tsx,css} : Use Tailwind CSS only for styling, use design tokens, and use Phosphor Icons only

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
📚 Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Colocate state when possible, avoid creating large components, use sub-components in local `/components` folder

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
📚 Learning: 2026-02-27T10:45:49.499Z
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12213
File: autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunMCPTool/helpers.tsx:23-24
Timestamp: 2026-02-27T10:45:49.499Z
Learning: Prefer using generated OpenAPI types from '@/app/api/__generated__/' for payloads defined in openapi.json (e.g., MCPToolsDiscoveredResponse, MCPToolOutputResponse). Use inline TypeScript interfaces only for payloads that are SSE-stream-only and not exposed via OpenAPI. Apply this pattern to frontend tool components (e.g., RunMCPTool) and related areas where similar SSE/openapi-discrepancies occur; avoid re-implementing types when a generated type is available.

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx
📚 Learning: 2026-02-26T21:29:44.105Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-26T21:29:44.105Z
Learning: Applies to autogpt_platform/frontend/src/**/*.tsx : Use `type Props = { ... }` (not exported) for component props unless used outside the component

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
📚 Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{ts,tsx} : No barrel files or 'index.ts' re-exports in frontend code

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
📚 Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/src/**/*.tsx : Component props should be `interface Props { ... }` (not exported) unless the interface needs to be used outside the component

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
📚 Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Use PascalCase for component names and camelCase with 'use' prefix for hook names in React

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
📚 Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Use generated API hooks from '@/app/api/__generated__/endpoints/' instead of deprecated 'BackendAPI' or 'src/lib/autogpt-server-api/*'

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
📚 Learning: 2026-02-26T21:29:44.105Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-26T21:29:44.105Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx,js,jsx} : Fully capitalize acronyms in symbols, e.g. `graphID`, `useBackendAPI`

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
📚 Learning: 2026-02-26T21:29:44.105Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-26T21:29:44.105Z
Learning: Applies to autogpt_platform/frontend/src/app/(platform)/*/page.tsx : Create pages in `src/app/(platform)/feature-name/page.tsx`

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
📚 Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/src/app/(platform)/**/page.tsx : Create pages in `src/app/(platform)/feature-name/page.tsx` with a `usePageName.ts` hook for logic and sub-components in local `components/` folder

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
📚 Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Never use 'src/components/__legacy__/*' in frontend code

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
📚 Learning: 2026-02-26T21:29:44.105Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-26T21:29:44.105Z
Learning: Applies to autogpt_platform/frontend/src/**/[A-Z]*/**/*.{ts,tsx} : Structure components as ComponentName/ComponentName.tsx + useComponentName.ts + helpers.ts

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
📚 Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Structure components as `ComponentName/ComponentName.tsx` + `useComponentName.ts` + `helpers.ts` and use design system components from `src/components/` (atoms, molecules, organisms)

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
📚 Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/src/app/(platform)/**/*.tsx : If adding protected frontend routes, update `frontend/lib/supabase/middleware.ts`

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/page.tsx
📚 Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Use function declarations (not arrow functions) for components and handlers

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
📚 Learning: 2026-02-26T21:29:44.105Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-26T21:29:44.105Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Use design system components from `src/components/` (atoms, molecules, organisms)

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx
📚 Learning: 2026-02-26T21:29:44.105Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-26T21:29:44.105Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Use React Query for server state management and co-locate UI state in components/hooks

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
📚 Learning: 2026-01-28T18:29:34.362Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/src/tests/CLAUDE.md:0-0
Timestamp: 2026-01-28T18:29:34.362Z
Learning: Do not test third-party library internals (Radix UI, React Query)

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx
📚 Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Only use Phosphor Icons (phosphor-icons/react) for icons in frontend components

Applied to files:

  • autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx
🔇 Additional comments (7)
autogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsx (1)

33-33: Looks good — using the component default height here keeps the callsite cleaner.

autogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsx (1)

15-15: Nice simplification of SearchBar defaults and styling.
The updated default height and streamlined class composition are clear and maintainable.

Also applies to: 23-23, 31-31

autogpt_platform/frontend/src/app/(platform)/library/page.tsx (1)

13-13: LGTM!

The tab rename to "All agents" and repositioning of <JumpBackIn /> after <LibraryActionHeader /> correctly implement the PR objectives.

Also applies to: 42-43

autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsx (2)

22-26: LGTM on the text-sm styling changes.

The font size adjustments to text-sm for both the label (line 22) and SelectTrigger (line 26) correctly implement the PR objective.


3-11: Review comment contains real violations but suggests non-existent alternatives.

The violations are valid: the code uses prohibited legacy Select imports and lucide-react instead of Phosphor Icons. However, the suggested fixes are incorrect:

  1. @/components/ui/select does not exist—only @/components/__legacy__/ui/select is available
  2. SortDescendingIcon does not exist in @phosphor-icons/react; available alternatives are CaretDownIcon or CaretUpIcon

Before fixing these violations, clarify with the team whether:

  • A non-legacy Select component should be created in the design system, or
  • The legacy Select component should be refactored out of __legacy__/, or
  • An alternative approach should be taken

Once that's resolved, update the icon from lucide-react to an available Phosphor icon.

			> Likely an incorrect or invalid review comment.
autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx (1)

123-130: LGTM!

The prop wiring changes correctly relocate the sorting functionality:

  • LibraryActionSubHeader receives only agentCount (sorting removed)
  • LibrarySubSection now receives setLibrarySort to render the sort menu

This aligns with the PR objective to move the sort dropdown alongside the tabs.

autogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsx (1)

2-2: LGTM!

The changes correctly integrate the sorting functionality:

  • Uses generated LibraryAgentSort type from the API layer (line 2)
  • Adds setLibrarySort prop with proper typing (line 17)
  • Positions LibrarySortMenu before LibraryFolderCreationDialog (lines 53-54), implementing the PR objective to place the sort dropdown to the left of the "Create folder" button

Also applies to: 11-11, 17-17, 53-54

@0ubbe
0ubbe marked this pull request as draft March 18, 2026 16:32
@0ubbe
0ubbe marked this pull request as ready for review March 19, 2026 10:15
Comment on lines 124 to 131
{!selectedFolderId && (
<LibrarySubSection
tabs={tabs}
activeTab={activeTab}
onTabChange={onTabChange}
setLibrarySort={setLibrarySort}
/>
)}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: The sort dropdown menu is hidden when viewing agents inside a folder because it was moved into a component that only renders when no folder is selected.
Severity: MEDIUM

Suggested Fix

Move the LibrarySortMenu component out of the LibrarySubSection so that it is always visible, regardless of whether a folder is selected. Alternatively, adjust the conditional rendering logic in LibraryAgentList.tsx to ensure the sort menu is displayed even when selectedFolderId is truthy.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location:
autogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsx#L124-L131

Potential issue: The `LibrarySortMenu` component has been moved into the
`LibrarySubSection`, which is conditionally rendered only when `!selectedFolderId` is
true. Consequently, when a user navigates into a folder, the `selectedFolderId` is set,
causing the `LibrarySubSection` and the sort dropdown menu within it to be hidden. While
agents inside the folder are still sorted based on the current setting, the user loses
the ability to see or change the sort order from this view, creating a confusing user
experience.

Did we get this right? 👍 / 👎 to inform future reviews.

@autogpt-pr-reviewer autogpt-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

All 8 specialists have reported. Now compiling the final verdict.


PR #12465 — Reorder library page layout and adjust UI elements
Author: lluisagusti (Ubbe) | SHA: 758da7e36 | Files: 25 changed (+430/−760)

Key files: llm.py (+36/−53), builder/db.py (+82/−52), store/db.py (+52/−153), openai_responses.py (−150), openai_responses_test.py (−312), LibraryActionSubHeader.tsx, LibrarySubSection.tsx, SearchBar.tsx, StoreCard.tsx, TallyPopup.tsx, page.tsx, CI yaml, CLAUDE.md, skill docs

🎯 Verdict: REQUEST_CHANGES

What This PR Does

This PR was filed as a library page UI cleanup (SECRT-2139) but actually bundles ~13 unrelated changes: library layout reorder, marketplace SearchBar/StoreCard restyling, OpenAI Responses→Chat Completions API revert, builder search migration from in-memory to hybrid search, store search fallback simplification, embedding error handling change, GPT-3.5-turbo model addition, tutorial button, copilot heading style removal, CI artifact path fixes, and Claude skill doc simplification. The library changes themselves are clean; the bundled backend changes have issues.

Specialist Findings

🛡️ Security ✅ — No new vulnerabilities. The removal of raw SQL (_fallback_store_agent_search with query_raw_with_schema) in favor of Prisma ORM is a net security improvement — eliminates SQL injection surface. OpenAI credential handling is unchanged (SecretStr). The router.push("/build?resetTutorial=true") is hardcoded with no user input — no open redirect. The store=False removal from OpenAI calls is safe because Chat Completions API doesn't store by default.
⚠️ Embedding failure in ensure_embedding (store/db.py:1142) could theoretically be used to DoS admin approval flow, but attack surface is admin-only.

🏗️ Architecture ⚠️ — OpenAI Chat Completions revert is architecturally sound (Responses API was over-engineered for single-shot calls). However:
⚠️ New cross-feature coupling: builder/db.py now imports unified_hybrid_search from store.hybrid_search — builder depends on store's embedding infrastructure. Should be lifted to a shared module (backend.search or backend.data.search).
⚠️ Embedding error handling (store/db.py:1139-1154): Removing try/catch makes ensure_embedding blocking inside a transaction. If OpenAI embedding API is down → admin approvals fail, DB locks held during HTTP call. The old best-effort approach was intentionally resilient.
⚠️ GPT-3.5-turbo (llm.py:114): Adding a model deprecated by OpenAI since June 2024 — expands model surface area with no clear benefit. Cost=1, same as gpt-4o-mini which is cheaper and better.

Performance ⚠️ — Two significant issues:
⚠️ page_size=150 silently capped to 100 (builder/db.py:415): unified_hybrid_search enforces max 100. After post-filtering (disabled blocks, excluded IDs), significantly fewer results survive. This is a silent data loss bug in search results.
⚠️ Builder search latency regression: Old _text_search_blocks was sub-millisecond (in-memory over cached blocks). New _hybrid_search_blocks requires: OpenAI embedding API call (~50-200ms) + complex SQL query + still calls load_all_blocks(). For autocomplete-style block picker, this adds 100-300ms per keystroke.
⚠️ Store fallback downgrade: ts_rank_cd with GIN-indexed tsvector → Prisma ILIKE (contains). No relevance ranking, no index support, linear degradation with catalog size.

🧪 Testing ⚠️ — Net loss of 312 lines of well-structured tests. Critical gaps:
⚠️ extract_openai_tool_calls() (llm.py:725) — 0 tests (old equivalent had 4 tests). Used by every OpenAI/OpenRouter/Groq call path.
⚠️ extract_openai_reasoning() (llm.py:709) — 0 tests (old equivalent had 5 tests). Has a dead docstring admitting it "will likely not working" — shipped without tests for a known-broken function.
⚠️ _hybrid_search_blocks() — Complete rewrite of builder search, 0 tests.
⚠️ Updated test_llm.py mocks are correct (Chat Completions structure).

📖 Quality ⚠️ — Readability mostly maintained, with notable issues:
⚠️ Dead docstring at llm.py:711: """Note: This will likely not working...""" — second triple-quoted string is a no-op, not part of docstring. Also has a typo ("not working" → "not work").
⚠️ Missing type annotations: extract_openai_reasoning(response) and extract_openai_tool_calls(response) both lack type annotations on response parameter. The deleted functions had response: Any.
⚠️ --paginate removal from Claude skill docs: Old docs had an explicit CRITICAL warning about missing reviews past page 30. New simplified docs give no indication results may be truncated — silent data loss risk for anyone using these instructions.
⚠️ Inlined store fallback makes get_store_agents longer/harder to test vs. clean separate function.

📦 Product ⚠️ — Library layout changes are good UX, but several concerns:
⚠️ Orphaned agent count (LibraryActionSubHeader.tsx:12): After removing "My agents" heading, only a bare number like "42" is displayed. No label — confusing.
⚠️ SearchBar lost dark mode (SearchBar.tsx:23-24): Hardcoded bg-white, text-black. Previous version had dark:bg-neutral-800, dark:text-neutral-200.
⚠️ Tutorial button navigates away (TallyPopup.tsx:25): router.push("/build?resetTutorial=true") navigates away from current build page with no confirmation dialog — potential loss of unsaved work.
⚠️ Scope creep: PR title says "reorder library page layout" but diff touches 25 files across backend, frontend, CI, and docs with 13+ unrelated changes.

📬 Discussion ⚠️ — No human reviews yet (ntindle and kcze requested, neither has reviewed). Key unaddressed items:
⚠️ sentry[bot] flagged a real bug: Sort dropdown disappears inside folders. LibrarySortMenu moved into LibrarySubSection which only renders when !selectedFolderId (LibraryAgentList.tsx:124-131). Functional regression.
⚠️ Merge conflicts with #12462 (same author) on 3 marketplace files — not yet resolved.
⚠️ coderabbitai[bot] noted: Radix icon should be Phosphor (project standard), orphaned agent count, hardcoded dark mode shadow color. None addressed.

🔎 QA ✅ — Live testing confirmed all UI changes render correctly:
✅ Library: "My agents" removed, "All agents" tab, sort next to tabs, search above JumpBackIn
✅ Marketplace: SearchBar compact with border, StoreCards have subtle border + padding
✅ Build page: Tutorial button present in DOM
⚠️ Copilot heading styles partially flattened — sizes unified but headings still render as <h1>/<h2>/<h3> elements with bold styling in user bubbles

landing
library
marketplace
storecards
build
copilot-headings

Blockers (Must Fix)

  1. builder/db.py:415page_size=150 silently capped to 100: unified_hybrid_search enforces max 100. Post-filtering further reduces results. Either raise the internal cap or fix the mismatch. This is a correctness bug that degrades search quality. (Flagged by: Performance)

  2. LibraryAgentList.tsx:124-131 — Sort dropdown disappears inside folders: LibrarySortMenu is in LibrarySubSection which only renders when !selectedFolderId. Users inside folders lose sorting ability. Functional regression. (Flagged by: Discussion/sentry[bot])

  3. llm.py:709-723extract_openai_reasoning() has 0 tests and admits it's broken: Dead docstring at line 711 says "This will likely not working." Ship it tested or remove it. Also extract_openai_tool_calls() at line 725 has 0 tests — both are on the critical OpenAI call path. (Flagged by: Testing, Quality)

Should Fix (Follow-up OK)

  1. store/db.py:1139-1154 — Restore error handling around ensure_embedding: Making an external HTTP call blocking inside a transaction is fragile. If OpenAI embedding API is down, admin approvals fail. Add retry or catch-and-surface rather than silent transaction rollback. (Flagged by: Security, Architect, Performance)

  2. SearchBar.tsx:23-24 — Restore dark mode support: Hardcoded bg-white/text-black breaks dark theme. Add back dark: variants. (Flagged by: Product)

  3. LibraryActionSubHeader.tsx:12 — Add label to agent count: Bare number "42" with no context is confusing. Should say "42 agents" or restore a heading. (Flagged by: Product, Discussion/coderabbitai)

  4. llm.py:711 — Fix dead docstring: Second """...""" is a no-op string expression, not part of the docstring. Has typo ("not working"). Convert to # TODO: comment or merge into single docstring. (Flagged by: Quality)

  5. Claude skill docs — Restore --paginate on gh api calls: Removing --paginate from CLAUDE.md, pr-address/SKILL.md, pr-review/SKILL.md risks truncating results beyond page 1 (30-item default). The old docs explicitly warned about this. (Flagged by: Quality, Discussion)

  6. Consider splitting this PR: 13+ unrelated changes bundled into a single UI ticket. Backend changes (OpenAI revert, hybrid search, embedding handling) should be separate PRs for proper review. (Flagged by: Product, Discussion)

Risk Assessment

Merge risk: MEDIUM | Rollback: MODERATE (touches both backend search infrastructure and frontend layout)

The library UI changes are solid. The builder search page_size bug, folder sort regression, and untested critical-path functions need to be addressed before merge. The embedding error handling and dark mode issues can be follow-ups.

REVIEW_COMPLETE
PR: #12465
Verdict: REQUEST_CHANGES
Blockers: 3

@github-project-automation github-project-automation Bot moved this from 🆕 Needs initial review to 🚧 Needs work in AutoGPT development kanban Mar 19, 2026
@0ubbe

0ubbe commented Mar 19, 2026

Copy link
Copy Markdown
Contributor Author

Closing I'll follow up on #12462

@0ubbe 0ubbe closed this Mar 19, 2026
@github-project-automation github-project-automation Bot moved this to Done in Frontend Mar 19, 2026
@github-project-automation github-project-automation Bot moved this from 🚧 Needs work to ✅ Done in AutoGPT development kanban Mar 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

platform/frontend AutoGPT Platform - Front end size/m

Projects

Status: ✅ Done
Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant