Skip to content

feat(local): polish local app UI: artifact filtering, settings, and sidebar - #1779

Merged
AnishSarkar22 merged 9 commits into
MODSetter:devfrom
AnishSarkar22:fix/local-app-ui
Sep 14, 2026
Merged

AnishSarkar22 merged 9 commits into
MODSetter:devfrom
AnishSarkar22:fix/local-app-ui

Conversation

@AnishSarkar22

@AnishSarkar22 AnishSarkar22 commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

Description

  • Add a per-workspace type filter (with icons and counts) to the generated artifacts list
  • Add an artifact count badge to the Artifacts tab icon
  • Swap the Network settings icon and reuse the shared Checkbox component in settings
  • Add a Plugins sidebar button with a "Coming soon" badge, plus new xl/2xl Button sizes
  • Require Cmd/Ctrl+Shift+D to toggle the theme, to avoid accidental toggles
  • Enable rich toast colors and stop showing raw error text in artifact-failure toasts
  • Suggest a base URL from common endpoints when adding a connection

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 UI polish and fixes for the local app, focusing on three main areas: (1) Adding retry functionality for failed artifacts with both backend API support and frontend UI including retry buttons, error tooltips, and toast notifications; (2) Implementing artifact filtering by type with a dropdown filter in the artifacts panel that persists per workspace; (3) Adding various UI improvements including a combobox component with common model endpoints, better error messaging patterns (showing generic hints on hover with detailed errors on Ctrl/Cmd+hover), a Plugins navigation action with "Coming soon" badge, theme toggle keyboard shortcut refinement (now Cmd/Ctrl+Shift+D), artifact count badges, and numerous component styling fixes across buttons, checkboxes, and form elements.

⏱️ Estimated Review Time: 30-90 minutes

💡 Review Order Suggestion
Order File Path
1 surfsense_local/frontend/src/components/ui/button.tsx
2 surfsense_local/frontend/src/components/ui/input-group.tsx
3 surfsense_local/frontend/src/components/ui/combobox.tsx
4 surfsense_local/frontend/src/components/ui/icons.tsx
5 surfsense_local/frontend/src/hooks/use-modifier-held.ts
6 surfsense_local/frontend/src/components/theme-provider.tsx
7 surfsense_local/frontend/src/components/ui/sonner.tsx
8 surfsense_local/backend/modules/artifacts/service.py
9 surfsense_local/backend/modules/artifacts/router.py
10 surfsense_local/backend/tests/integration/artifacts/test_routes.py
11 surfsense_local/frontend/src/features/studio/api.ts
12 surfsense_local/frontend/src/features/studio/studio-formats.ts
13 surfsense_local/frontend/src/features/studio/use-studio.ts
14 surfsense_local/frontend/src/features/studio/use-studio.test.ts
15 surfsense_local/frontend/src/features/studio/artifact-list.tsx
16 surfsense_local/frontend/src/features/studio/artifact-list.test.tsx
17 surfsense_local/frontend/src/features/studio/studio-panel.tsx
18 surfsense_local/frontend/src/features/studio/studio-panel.test.tsx
19 surfsense_local/frontend/src/features/sources/sources-panel.tsx
20 surfsense_local/frontend/src/features/sources/source-upload.test.tsx
21 surfsense_local/frontend/src/features/model-selection/connection-form.tsx
22 surfsense_local/frontend/src/features/egress/network-settings.tsx
23 surfsense_local/frontend/src/features/updates/update-settings.tsx
24 surfsense_local/frontend/src/features/updates/update-settings.test.tsx
25 surfsense_local/frontend/src/features/chat/thread-list.tsx
26 surfsense_local/frontend/src/features/chat/thread-list.test.tsx
27 surfsense_local/frontend/src/features/dashboard/right-panel.tsx
28 surfsense_local/frontend/src/features/dashboard/dashboard-page.tsx
29 surfsense_local/frontend/src/features/dashboard/dashboard-page.test.tsx
30 surfsense_local/frontend/src/features/workspaces/workspace-rail.tsx
31 surfsense_local/frontend/src/features/settings/settings-dialog.tsx

Need help? Join our Discord

@vercel

vercel Bot commented Sep 14, 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 Sep 14, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: d55203b2-5c0d-424d-85bc-3444051317c7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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 Fix/local app UI feat(local): polish local app UI: artifact filtering, settings, and sidebar Sep 14, 2026
@AnishSarkar22
AnishSarkar22 merged commit 69ad10d into MODSetter:dev Sep 14, 2026
4 of 8 checks passed
CREDO23 added a commit to CREDO23/SurfSense that referenced this pull request Sep 15, 2026
Anish's artifact list work (MODSetter#1779) landed on dev while this branch was
open, and both sides grew the same three features. Resolved by keeping one
implementation of each, not both:

- Retry/regenerate: dev added POST /artifacts/{id}/retry (failed only),
  this branch POST .../regenerate (failed or finished, checks the model is
  still selected, bumps generation so the row's files are re-read). Kept
  regenerate and pointed dev's retry affordances at it; the row still says
  "Retry" when it failed and "Regenerate" when it is ready. Carried dev's
  re-enqueue assertion into the regenerate test.
- Format icons: dev extracted FORMAT_ICONS to studio-formats.ts, this
  branch to catalog.ts. Kept studio-formats.ts (already on dev), moved
  STUDIO_CATALOG into it, deleted catalog.ts and its now-unused
  formatLabel: the backend catalog supplies the filter's labels.
- Type filter: kept dev's version (per-type counts, per-workspace
  persistence, clear-filter, its own empty state) over this branch's
  simpler one, plus this branch's two additions — the row's relative
  timestamp, and hiding the filter until a second type exists.

Also carried by hand where the auto-merge produced valid-looking but
broken files: one FilterIcon in icons.tsx (both sides added it), one
artifact action prop in dashboard-page.tsx, and the artifacts test's queue
import, which this branch split into ingest_queue and studio_queue.

Backend 296 pass, frontend 121 pass. The one failing frontend test
(app-bootstrap composer chip) and the lint errors in chat/use-chat-runtime
and chat/inline-citation arrive with dev and fail there identically.
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