fix(frontend/library): reorder library page layout and adjust UI elements - #12465
fix(frontend/library): reorder library page layout and adjust UI elements#124650ubbe wants to merge 4 commits into
Conversation
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>
🔍 PR Overlap DetectionThis check compares your PR against all other open PRs targeting the same branch to detect potential merge conflicts early. 🔴 Merge Conflicts DetectedThe following PRs have been tested and will have merge conflicts if merged after this PR. Consider coordinating with the authors.
🟢 Low Risk — File Overlap OnlyThese 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: |
WalkthroughThe PR reorganizes sorting functionality in the library UI by moving the Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
📝 Coding Plan
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. Comment |
There was a problem hiding this comment.
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 | 🟠 MajorReplace Radix UI icon with Phosphor icon.
This component imports and usesMagnifyingGlassIconfrom@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-700is 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
📒 Files selected for processing (8)
autogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryAgentList/LibraryAgentList.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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}: Runpnpm formatto auto-fix formatting issues before completing work
Runpnpm lintto check for lint errors and fix any that appear before completing work
Files:
autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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 developmentRun
pnpm typesto check for type errors and fix any that appear before completing work
Files:
autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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 usingpnpm format
Never use components fromsrc/components/__legacy__/*
Files:
autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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 asComponentName/ComponentName.tsx+useComponentName.ts+helpers.tsand use design system components fromsrc/components/(atoms, molecules, organisms)
Use generated API hooks from@/app/api/__generated__/endpoints/with patternuse{Method}{Version}{OperationName}and regenerate withpnpm 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/componentsfolder
Avoid large hooks, abstract logic intohelpers.tsfiles 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 useuseCallbackoruseMemounless 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*.tshooks)
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 fromsrc/components/(atoms, molecules, organisms)
Never usesrc/components/__legacy__/*components
Use generated API hooks from@/app/api/__generated__/endpoints/with patternuse{Method}{Version}{OperationName}
Use Tailwind CSS only for styling with design tokens
Do not useuseCallbackoruseMemounless asked to optimize a specific function
Never type withanyunless a variable/attribute can actually be of any type
Files:
autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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 componentUse
type Props = { ... }(not exported) for component props unless used outside the component
Files:
autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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 useunknown
Files:
autogpt_platform/frontend/src/app/(platform)/marketplace/components/StoreCard/StoreCard.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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.tsxwith ausePageName.tshook for logic and sub-components in localcomponents/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.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_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.tsxautogpt_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.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_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.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/HeroSection/HeroSection.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySubSection/LibrarySubSection.tsxautogpt_platform/frontend/src/app/(platform)/marketplace/components/SearchBar/SearchBar.tsxautogpt_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.tsxautogpt_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.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibraryActionSubHeader/LibraryActionSubHeader.tsxautogpt_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.tsxautogpt_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.tsxautogpt_platform/frontend/src/app/(platform)/library/page.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_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.tsxautogpt_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.tsxautogpt_platform/frontend/src/app/(platform)/library/components/LibrarySortMenu/LibrarySortMenu.tsxautogpt_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.tsxautogpt_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.tsxautogpt_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.tsxautogpt_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-smfor both the label (line 22) andSelectTrigger(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:
@/components/ui/selectdoes not exist—only@/components/__legacy__/ui/selectis availableSortDescendingIcondoes not exist in@phosphor-icons/react; available alternatives areCaretDownIconorCaretUpIconBefore 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-reactto 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:
LibraryActionSubHeaderreceives onlyagentCount(sorting removed)LibrarySubSectionnow receivessetLibrarySortto render the sort menuThis 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
LibraryAgentSorttype from the API layer (line 2)- Adds
setLibrarySortprop with proper typing (line 17)- Positions
LibrarySortMenubeforeLibraryFolderCreationDialog(lines 53-54), implementing the PR objective to place the sort dropdown to the left of the "Create folder" buttonAlso applies to: 11-11, 17-17, 53-54
…rder-library-page-layout-and-adjust-ui
…rder-library-page-layout-and-adjust-ui
| {!selectedFolderId && ( | ||
| <LibrarySubSection | ||
| tabs={tabs} | ||
| activeTab={activeTab} | ||
| onTabChange={onTabChange} | ||
| setLibrarySort={setLibrarySort} | ||
| /> | ||
| )} |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
ensure_embedding (store/db.py:1142) could theoretically be used to DoS admin approval flow, but attack surface is admin-only.
🏗️ Architecture
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).
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.
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
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.
_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.
ts_rank_cd with GIN-indexed tsvector → Prisma ILIKE (contains). No relevance ranking, no index support, linear degradation with catalog size.
🧪 Testing
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.
test_llm.py mocks are correct (Chat Completions structure).
📖 Quality
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").
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.
get_store_agents longer/harder to test vs. clean separate function.
📦 Product
LibraryActionSubHeader.tsx:12): After removing "My agents" heading, only a bare number like "42" is displayed. No label — confusing.
SearchBar.tsx:23-24): Hardcoded bg-white, text-black. Previous version had dark:bg-neutral-800, dark:text-neutral-200.
TallyPopup.tsx:25): router.push("/build?resetTutorial=true") navigates away from current build page with no confirmation dialog — potential loss of unsaved work.
📬 Discussion
LibrarySortMenu moved into LibrarySubSection which only renders when !selectedFolderId (LibraryAgentList.tsx:124-131). Functional regression.
🔎 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
<h1>/<h2>/<h3> elements with bold styling in user bubbles
Blockers (Must Fix)
-
builder/db.py:415—page_size=150silently capped to 100:unified_hybrid_searchenforces 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) -
LibraryAgentList.tsx:124-131— Sort dropdown disappears inside folders:LibrarySortMenuis inLibrarySubSectionwhich only renders when!selectedFolderId. Users inside folders lose sorting ability. Functional regression. (Flagged by: Discussion/sentry[bot]) -
llm.py:709-723—extract_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. Alsoextract_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)
-
store/db.py:1139-1154— Restore error handling aroundensure_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) -
SearchBar.tsx:23-24— Restore dark mode support: Hardcodedbg-white/text-blackbreaks dark theme. Add backdark:variants. (Flagged by: Product) -
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) -
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) -
Claude skill docs — Restore
--paginateongh apicalls: Removing--paginatefromCLAUDE.md,pr-address/SKILL.md,pr-review/SKILL.mdrisks truncating results beyond page 1 (30-item default). The old docs explicitly warned about this. (Flagged by: Quality, Discussion) -
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
|
Closing I'll follow up on #12462 |






Resolves SECRT-2139
Changes 🏗️
text-sm(both label and select)Checklist 📋
For code changes:
pnpm format && pnpm lint && pnpm typesall pass