Skip to content

feat(ui): Unify notifications, sidebar, and API playground UX#1585

Merged
AnishSarkar22 merged 27 commits into
MODSetter:mainfrom
AnishSarkar22:fix/ci-ui-changes
Jul 7, 2026
Merged

feat(ui): Unify notifications, sidebar, and API playground UX#1585
AnishSarkar22 merged 27 commits into
MODSetter:mainfrom
AnishSarkar22:fix/ci-ui-changes

Conversation

@AnishSarkar22

@AnishSarkar22 AnishSarkar22 commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Description

  • Removed legacy Inbox/sidebar panel components and integrated the streamlined NotificationsDropdown.
  • Enhanced notifications with total counts, filtering, mobile drawer support, and simplified UI.
  • Improved sidebar UX with mobile submenus, active chat highlighting, better badges, and layout consistency.
  • Added the API Playground layout/navigation structure and refined API runs, schema form, artifacts library, and capability documentation UI.
  • Updated terminology and placeholder text across assistant UI, hero chat demo, user settings, and playground flows.

Motivation and Context

FIX #

Screenshots

API Changes

  • This PR includes API changes

Change Type

  • Bug fix
  • New feature
  • Performance improvement
  • Refactoring
  • Documentation
  • Dependency/Build system
  • Breaking change
  • Other (specify):

Testing Performed

  • Tested locally
  • Manual/QA verification

Checklist

  • Follows project coding standards and conventions
  • Documentation updated as needed
  • Dependencies updated as needed
  • No lint/build errors or new warnings
  • All relevant tests are passing

High-level PR Summary

This PR implements major UI improvements across the application, including a complete redesign of the Playground navigation using a new RoutedSectionShell component with drawer-based mobile navigation, replacing the old slide-out inbox sidebar with a compact notifications dropdown, removing the dedicated API keys section from Playground in favor of directing users to user settings, adding documentation URLs to backend capability definitions, shortening capability descriptions for better UI display, and making numerous refinements to components including "New" badges, improved empty states, better mobile menus, terminology changes from "auto-reload" to "top-ups", and visual polish across buttons, icons, and layouts.

⏱️ Estimated Review Time: 30-90 minutes

💡 Review Order Suggestion
Order File Path
1 surfsense_web/app/dashboard/[workspace_id]/playground/layout.tsx
2 surfsense_web/app/dashboard/[workspace_id]/playground/layout-shell.tsx
3 surfsense_web/components/layout/ui/RoutedSectionShell.tsx
4 surfsense_web/components/layout/ui/index.ts
5 surfsense_web/app/dashboard/[workspace_id]/user-settings/layout-shell.tsx
6 surfsense_web/app/dashboard/[workspace_id]/workspace-settings/layout-shell.tsx
7 surfsense_web/app/dashboard/[workspace_id]/playground/components/playground-index.tsx
8 surfsense_web/app/dashboard/[workspace_id]/playground/components/playground-runner.tsx
9 surfsense_web/app/dashboard/[workspace_id]/playground/components/api-reference.tsx
10 surfsense_web/app/dashboard/[workspace_id]/playground/components/output-viewer.tsx
11 surfsense_web/app/dashboard/[workspace_id]/playground/components/runs-table.tsx
12 surfsense_web/app/dashboard/[workspace_id]/playground/components/schema-form.tsx
13 surfsense_web/app/dashboard/[workspace_id]/playground/api-keys/page.tsx
14 surfsense_web/app/dashboard/[workspace_id]/playground/components/api-keys-section.tsx
15 surfsense_backend/app/capabilities/core/access/rest.py
16 surfsense_backend/app/capabilities/core/types.py
17 surfsense_backend/app/capabilities/google_maps/reviews/definition.py
18 surfsense_backend/app/capabilities/google_maps/scrape/definition.py
19 surfsense_backend/app/capabilities/google_search/scrape/definition.py
20 surfsense_backend/app/capabilities/reddit/scrape/definition.py
21 surfsense_backend/app/capabilities/web/crawl/definition.py
22 surfsense_backend/app/capabilities/youtube/comments/definition.py
23 surfsense_backend/app/capabilities/youtube/scrape/definition.py
24 surfsense_web/components/layout/ui/sidebar/NotificationsDropdown.tsx
25 surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx
26 surfsense_web/hooks/use-inbox.ts
27 surfsense_web/components/layout/ui/icon-rail/IconRail.tsx
28 surfsense_web/components/layout/providers/LayoutDataProvider.tsx
29 surfsense_web/components/layout/providers/FreeLayoutDataProvider.tsx
30 surfsense_web/components/layout/ui/shell/LayoutShell.tsx
31 surfsense_web/atoms/layout/playground.atom.ts
32 surfsense_web/components/layout/ui/sidebar/PlaygroundSidebar.tsx
33 surfsense_web/components/layout/ui/sidebar/SidebarSlideOutPanel.tsx
34 surfsense_web/components/layout/ui/sidebar/Sidebar.tsx
35 surfsense_web/components/layout/ui/sidebar/SidebarButton.tsx
36 surfsense_web/components/layout/ui/sidebar/SidebarUserProfile.tsx
37 surfsense_web/components/layout/ui/sidebar/MobileSidebar.tsx
38 surfsense_web/components/layout/ui/sidebar/index.ts
39 surfsense_web/components/mcp/connect-agent-dialog.tsx
40 surfsense_web/components/layout/ui/sidebar/DocumentsSidebar.tsx
41 surfsense_web/components/documents/FolderNode.tsx
42 surfsense_web/components/layout/ui/sidebar/ChatListItem.tsx
43 surfsense_web/components/layout/ui/sidebar/CreditBalanceDisplay.tsx
44 surfsense_web/components/assistant-ui/thread.tsx
45 surfsense_web/components/homepage/hero-chat-demo.tsx
46 surfsense_web/features/artifacts-library/ui/artifacts-library.tsx
47 surfsense_web/components/settings/auto-reload-settings.tsx
48 surfsense_web/app/dashboard/[workspace_id]/user-settings/components/PurchaseHistoryContent.tsx
49 surfsense_web/components/pricing/pricing-section.tsx
50 surfsense_web/components/ui/tabs.tsx
51 surfsense_web/contracts/types/scraper.types.ts
52 surfsense_web/components/layout/index.ts
53 surfsense_web/public/connectors/reddit.svg
54 surfsense_web/public/connectors/web.svg

Need help? Join our Discord

Summary by CodeRabbit

  • New Features

    • Added documentation links to capability pages and surfaced them in the UI where available.
    • Introduced a notifications dropdown in the app navigation, with unread counts and quick actions.
    • Updated the playground with a new section layout, clearer run feedback, copyable endpoints, and improved schema badges.
  • Bug Fixes

    • Simplified dashboard navigation by removing outdated inbox/playground side panels and redirecting API keys to the main settings area.
    • Improved sidebar and dropdown behavior on mobile and desktop for smoother navigation.

…ropdown

- Eliminated the Inbox component and its related logic from FreeLayoutDataProvider and LayoutDataProvider.
- Introduced NotificationsDropdown to handle notifications in the sidebar and mobile sidebar.
- Updated Sidebar and LayoutShell components to accommodate the new notifications structure, enhancing user experience and code clarity.
…nents

- Deleted InboxSidebar and SidebarSlideOutPanel components to streamline the sidebar structure.
- This change simplifies the layout and prepares for future enhancements in notification handling.
…and improved filtering

- Added totalCount to comments and status notifications for better tracking.
- Updated NotificationsDropdown to support new filters and improved loading behavior.
- Refactored notification display logic to accommodate the new structure, enhancing user experience.
…hance UI components

- Added Drawer component to NotificationsDropdown for improved mobile experience.
- Refactored notification trigger button and panel content for better accessibility and usability.
- Enhanced loading states and notification filtering options to streamline user interaction.
- Updated MobileSidebar to include a right border for improved visual separation.
- Modified SidebarUserProfile to add a relative positioning and a top border for better layout consistency.
- Added mobile submenus for theme, language, and learn more options in SidebarUserProfile.
- Integrated Drawer component for improved mobile navigation experience.
- Enhanced UI with new dropdown items and improved accessibility for user settings.
- Integrated Drawer component in EmbeddedDocumentsMenu for mobile-friendly document type filtering.
- Updated UI to improve accessibility and user experience with new button interactions and layout adjustments.
- Refactored document type display logic to streamline filtering options and enhance visual clarity.
…ve unused components

- Simplified the styling of notification count indicators for better visual consistency.
- Enhanced the empty state layout for improved user experience.
- Removed the ConnectAgentDialog from PlaygroundSidebar to declutter the UI.
- Introduced PlaygroundLayoutShell component for managing the layout and navigation of the API Playground.
- Added PlaygroundLayout component to handle workspace-specific rendering.
- Removed PlaygroundSidebar and related state management to simplify the UI and enhance mobile responsiveness.
- Updated LayoutDataProvider and LayoutShell components to reflect the new Playground structure.
- Enhanced header styles across Playground components to include text-foreground and responsive sizing.
- Updated API Playground, API Keys, Runs Table, and other sections for a unified look and feel.
- Improved accessibility and readability with consistent font sizes and colors.
- Reduced button sizes in EmbeddedDocumentsMenu and EmbeddedImportMenu for better alignment.
- Updated layout spacing in SidebarButton to enhance visual clarity and consistency.
- Added a new badge to the Sidebar component to indicate new items, improving user awareness.
- Added SidebarButtonBadge component to encapsulate badge styling and functionality.
- Updated Sidebar to utilize SidebarButtonBadge for displaying new item notifications, enhancing visual clarity.
- Adjusted SidebarUserProfile layout for better alignment in collapsed view.
…nectAgentDialog UI

- Removed unused `useReducedMotion` hook from ConnectedScraperIcons for cleaner code.
- Replaced `Cable` icon with a masked SVG in ConnectAgentDialog for improved visual representation.
- Enhanced layout in ConnectAgentDialog to include a badge indicating new items, improving user awareness.
- Removed redundant text from the API Playground description to enhance readability.
- Improved layout in FolderNode by adding dropdown state management for better user interaction.
- Updated Sidebar component styles for improved visual consistency and user experience.
…st Sidebar layout

- Updated aria-label in NotificationsDropdown for improved accessibility and clarity.
- Adjusted Sidebar layout to enhance spacing and visual consistency.
- Deleted the ApiKeysSection component to streamline the Playground layout.
- Updated PlaygroundLayoutShell and PlaygroundIndex to remove references to API Keys.
- Redirected API Keys page to User Settings for improved navigation flow.
…igation and component structure

- Added new TopLevelNavLink and ProviderNavGroup components for better organization of navigation items.
- Updated state management for expanded providers and active navigation items.
- Refactored navigation item structure to simplify rendering and improve clarity.
- Integrated ChevronRight icon for visual indication of expandable sections.
- Introduced RoutedSectionShell to unify navigation structure across Playground, User Settings, and Workspace Settings layouts.
- Replaced individual navigation implementations with a more cohesive and reusable component.
- Updated navigation items to include href properties for better routing.
- Enhanced mobile navigation experience with drawer support and improved scroll handling.
- Introduced an Alert component to provide a concise description of API runs in the workspace.
- Replaced the previous header and description with the new alert for improved clarity and user experience.
…t features

- Replaced instances of "auto-reload" with "top-ups" for consistency and clarity across user settings and pricing sections.
- Enhanced user feedback messages related to credit balance and top-up settings.
- Improved comments and descriptions in the Purchase History and Credit Balance Display components for better understanding.
…r API runs

- Changed label from "Runs" to "API Runs" in PlaygroundLayoutShell and PlaygroundIndex for clarity.
- Improved the API reference UI by adding a ChevronRight icon for expandable sections and enhancing the summary layout.
- Introduced an EndpointCopyButton component for easier copying of API endpoint details, improving user experience.
… Reddit scrape capability

- Introduced a `docs_url` field to the `Capability` and `CapabilitySummary` classes for better documentation access.
- Updated the `REDDIT_SCRAPE` capability to include a specific documentation link.
- Enhanced the PlaygroundRunner component to display the documentation link when available, improving user guidance.
…nd web crawl capabilities

- Introduced a `docs_url` field to the Google Maps reviews, scrape, YouTube comments, YouTube scrape, and web crawl capabilities for improved documentation access.
- Simplified descriptions for each capability to enhance clarity and user understanding.
- Replaced required/optional text with Badge component in schema form for better visual distinction.
- Updated EmptyState in artifacts library to include a more informative and visually appealing layout with an icon and description.
… and hero chat demo

- Revised placeholder text to improve readability and user understanding by replacing the dash with a period and adding "Use" for prompts and docs.
@vercel

vercel Bot commented Jul 7, 2026

Copy link
Copy Markdown

@AnishSarkar22 is attempting to deploy a commit to the Rohan Verma's projects Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9d6f1b97-60a9-4195-948f-bbb42cf23444

📥 Commits

Reviewing files that changed from the base of the PR and between ac856ca and 3eb963b.

⛔ Files ignored due to path filters (2)
  • surfsense_web/public/connectors/reddit.svg is excluded by !**/*.svg
  • surfsense_web/public/connectors/web.svg is excluded by !**/*.svg
📒 Files selected for processing (52)
  • surfsense_backend/app/capabilities/core/access/rest.py
  • surfsense_backend/app/capabilities/core/types.py
  • surfsense_backend/app/capabilities/google_maps/reviews/definition.py
  • surfsense_backend/app/capabilities/google_maps/scrape/definition.py
  • surfsense_backend/app/capabilities/google_search/scrape/definition.py
  • surfsense_backend/app/capabilities/reddit/scrape/definition.py
  • surfsense_backend/app/capabilities/web/crawl/definition.py
  • surfsense_backend/app/capabilities/youtube/comments/definition.py
  • surfsense_backend/app/capabilities/youtube/scrape/definition.py
  • surfsense_web/app/dashboard/[workspace_id]/playground/api-keys/page.tsx
  • surfsense_web/app/dashboard/[workspace_id]/playground/components/api-keys-section.tsx
  • surfsense_web/app/dashboard/[workspace_id]/playground/components/api-reference.tsx
  • surfsense_web/app/dashboard/[workspace_id]/playground/components/output-viewer.tsx
  • surfsense_web/app/dashboard/[workspace_id]/playground/components/playground-index.tsx
  • surfsense_web/app/dashboard/[workspace_id]/playground/components/playground-runner.tsx
  • surfsense_web/app/dashboard/[workspace_id]/playground/components/runs-table.tsx
  • surfsense_web/app/dashboard/[workspace_id]/playground/components/schema-form.tsx
  • surfsense_web/app/dashboard/[workspace_id]/playground/layout-shell.tsx
  • surfsense_web/app/dashboard/[workspace_id]/playground/layout.tsx
  • surfsense_web/app/dashboard/[workspace_id]/user-settings/components/PurchaseHistoryContent.tsx
  • surfsense_web/app/dashboard/[workspace_id]/user-settings/layout-shell.tsx
  • surfsense_web/app/dashboard/[workspace_id]/workspace-settings/layout-shell.tsx
  • surfsense_web/atoms/layout/playground.atom.ts
  • surfsense_web/components/assistant-ui/thread.tsx
  • surfsense_web/components/documents/FolderNode.tsx
  • surfsense_web/components/homepage/hero-chat-demo.tsx
  • surfsense_web/components/layout/index.ts
  • surfsense_web/components/layout/providers/FreeLayoutDataProvider.tsx
  • surfsense_web/components/layout/providers/LayoutDataProvider.tsx
  • surfsense_web/components/layout/ui/RoutedSectionShell.tsx
  • surfsense_web/components/layout/ui/icon-rail/IconRail.tsx
  • surfsense_web/components/layout/ui/index.ts
  • surfsense_web/components/layout/ui/shell/LayoutShell.tsx
  • surfsense_web/components/layout/ui/sidebar/ChatListItem.tsx
  • surfsense_web/components/layout/ui/sidebar/CreditBalanceDisplay.tsx
  • surfsense_web/components/layout/ui/sidebar/DocumentsSidebar.tsx
  • surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx
  • surfsense_web/components/layout/ui/sidebar/MobileSidebar.tsx
  • surfsense_web/components/layout/ui/sidebar/NotificationsDropdown.tsx
  • surfsense_web/components/layout/ui/sidebar/PlaygroundSidebar.tsx
  • surfsense_web/components/layout/ui/sidebar/Sidebar.tsx
  • surfsense_web/components/layout/ui/sidebar/SidebarButton.tsx
  • surfsense_web/components/layout/ui/sidebar/SidebarSlideOutPanel.tsx
  • surfsense_web/components/layout/ui/sidebar/SidebarUserProfile.tsx
  • surfsense_web/components/layout/ui/sidebar/index.ts
  • surfsense_web/components/mcp/connect-agent-dialog.tsx
  • surfsense_web/components/pricing/pricing-section.tsx
  • surfsense_web/components/settings/auto-reload-settings.tsx
  • surfsense_web/components/ui/tabs.tsx
  • surfsense_web/contracts/types/scraper.types.ts
  • surfsense_web/features/artifacts-library/ui/artifacts-library.tsx
  • surfsense_web/hooks/use-inbox.ts

📝 Walkthrough

Walkthrough

This PR adds an optional docs_url field to capability definitions across backend and frontend, redesigns the Playground feature (layout, index, runner, output viewer, forms), replaces custom sidebar/layout navigation with a shared RoutedSectionShell component, removes the Inbox and Playground slide-out sidebars in favor of a new NotificationsDropdown, renames auto-reload to top-ups terminology, and applies several unrelated cosmetic UI tweaks.

Changes

Capability docs_url field

Layer / File(s) Summary
Capability docs_url contract
surfsense_backend/app/capabilities/core/types.py, surfsense_backend/app/capabilities/core/access/rest.py, surfsense_web/contracts/types/scraper.types.ts
Adds an optional docs_url field to Capability, CapabilitySummary, and the frontend scraperCapability schema.
Native connector capability definitions
surfsense_backend/app/capabilities/google_maps/..., google_search/scrape/definition.py, reddit/scrape/definition.py, web/crawl/definition.py, youtube/...
Updates description text and adds/preserves docs_url values for each native connector capability.

Playground feature UI overhaul

Layer / File(s) Summary
API keys redirect
.../playground/api-keys/page.tsx
Redirects to the user-settings API key page instead of rendering ApiKeysSection.
Playground layout shell
.../playground/layout-shell.tsx, .../playground/layout.tsx
Adds PlaygroundLayoutShell/PlaygroundLayout building navigation from the platform catalog via RoutedSectionShell.
Playground index updates
.../playground/components/playground-index.tsx
Replaces header with an API-key creation alert and relabels the Runs card.
Playground runner feedback
.../playground/components/playground-runner.tsx
Replaces inline error panel with toast notifications, adds endpoint copy button, redesigns Run/Cancel controls.
Output viewer tabs
.../playground/components/output-viewer.tsx
Migrates view toggle to shared Tabs component and updates JSON copy UI/hint text.
Runs table, schema form, API reference
.../playground/components/runs-table.tsx, schema-form.tsx, api-reference.tsx
Updates header alerts, required/optional badges, and copy button/schema styling.

Layout shell and sidebar refactor

Layer / File(s) Summary
RoutedSectionShell component
components/layout/ui/RoutedSectionShell.tsx, components/layout/index.ts, components/layout/ui/index.ts
Adds shared navigation shell with desktop sidebar/groups and mobile scroll/drawer modes.
Settings layouts adoption
.../user-settings/layout-shell.tsx, .../workspace-settings/layout-shell.tsx
Replaces custom navigation with RoutedSectionShell.
LayoutShell core refactor
components/layout/ui/shell/LayoutShell.tsx
Removes inbox slide-out panel/playground sidebar wiring, adds notifications prop.
Layout data providers
components/layout/providers/FreeLayoutDataProvider.tsx, LayoutDataProvider.tsx
Removes Inbox/playground sidebar state and passes totalCount into notifications.
NotificationsDropdown feature
components/layout/ui/sidebar/NotificationsDropdown.tsx, IconRail.tsx, MobileSidebar.tsx, sidebar/index.ts, hooks/use-inbox.ts
Adds filtered/paginated notifications dropdown with mark-as-read/routing and totalCount support.
Sidebar nav cleanup
components/layout/ui/sidebar/Sidebar.tsx, SidebarButton.tsx, components/mcp/connect-agent-dialog.tsx
Removes Inbox rendering, adds New badges via SidebarButtonBadge, reworks credits footer.
Profile mobile submenu
components/layout/ui/sidebar/SidebarUserProfile.tsx
Adds topContent slot and drawer-based mobile submenu flow.
Chat item highlight & documents filter
components/layout/ui/sidebar/ChatListItem.tsx, DocumentsSidebar.tsx
Adds combined highlight state and mobile drawer document type filter.

Auto-reload to top-ups renaming

Layer / File(s) Summary
Top-ups settings and copy
components/settings/auto-reload-settings.tsx, components/pricing/pricing-section.tsx, components/layout/ui/sidebar/CreditBalanceDisplay.tsx
Renames auto-reload to top-ups terminology and reworks settings layout/error handling.

Miscellaneous cosmetic UI tweaks

Layer / File(s) Summary
Thread scraper icons & placeholder
components/assistant-ui/thread.tsx
Replaces animated icon row with AvatarGroup/tooltip layout, updates composer placeholder.
FolderNode dropdown state
components/documents/FolderNode.tsx
Controls folder dropdown open state and styling.
Misc copy/style
components/homepage/hero-chat-demo.tsx, components/ui/tabs.tsx, features/artifacts-library/ui/artifacts-library.tsx, .../PurchaseHistoryContent.tsx
Updates placeholder text, tab active styling, empty-state UI, and a code comment.

Estimated code review effort: 4 (Complex) | ~75 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant NotificationsDropdown
  participant useInbox
  participant Router

  User->>NotificationsDropdown: click notification item
  NotificationsDropdown->>useInbox: markItemAsRead(item)
  useInbox-->>NotificationsDropdown: updated read state
  NotificationsDropdown->>Router: navigate based on notification metadata
Loading

Related PRs

  • None identified from provided data.

Suggested labels: frontend, backend, refactor, ui

Suggested reviewers: MODSetter

A rabbit hopped through sidebars wide,
Swapped inbox drawers for tabs inside,
Docs URLs now light the way,
Top-ups replace old auto-pay,
Hop, hop—review complete today! 🐇

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@AnishSarkar22 AnishSarkar22 changed the title feat: UI changes feat(ui): Unify notifications, sidebar, and API playground UX Jul 7, 2026
@AnishSarkar22 AnishSarkar22 merged commit ba08d63 into MODSetter:main Jul 7, 2026
4 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant