Commit graph

3122 commits

Author SHA1 Message Date
Anish Sarkar
ee3a6dc45f refactor: enhance DesktopContent and HotkeysContent components with improved loading states, updated styling, and consistent use of separators 2026-05-19 18:22:30 +05:30
Anish Sarkar
1169b43196 refactor: improve styling of MemberRow component and clean up agent tools imports 2026-05-19 17:41:48 +05:30
Anish Sarkar
8fd52d340f refactor: update styling and structure of team content, comment panel, and UI components 2026-05-19 17:34:59 +05:30
Anish Sarkar
a5bd2bea9c feat: integrate collapsible sections for connector management in ComposerAction, add new connector icons for Discord, Teams, and Luma 2026-05-19 16:45:16 +05:30
Anish Sarkar
78ad19dd6a refactor: enhance PromptsContent with dropdown menu for actions, update loading states, and improve styling consistency 2026-05-19 12:59:02 +05:30
Anish Sarkar
3b168e987d feat: add TeamPage component and remove TeamDialog for improved team management interface 2026-05-19 11:40:06 +05:30
Anish Sarkar
49e1395299 refactor: enhance user settings components with updated icons, improved loading states, and consistent alert structures 2026-05-19 11:11:14 +05:30
Anish Sarkar
c8f0f7cb1b refactor: update alert components to use warning variant and clean up unused alerts in settings manager 2026-05-19 01:41:09 +05:30
Anish Sarkar
d129ddd8f7 refactor: implement new layout structure for search space and user settings with clear ownership 2026-05-19 01:04:59 +05:30
Anish Sarkar
22f6b9dfe4 refactor: update Slack configuration styling and remove unused icon in general settings 2026-05-19 00:51:06 +05:30
Anish Sarkar
b7a6e3af3d refactor: update alert components across various files to use a consistent structure and styling 2026-05-18 23:46:16 +05:30
Anish Sarkar
e0ecea61f8 refactor: extract user avatar color and initials logic into a new utility module, update related components to use the new functions 2026-05-18 21:40:23 +05:30
Anish Sarkar
87caa4b6d0 Merge remote-tracking branch 'upstream/dev' into feat/ui-revamp 2026-05-18 09:39:35 +05:30
Rohan Verma
8fc4b98593
Merge pull request #1402 from guangyang1206/fix/extract-domain-helper-1368
Fix/extract domain helper 1368
2026-05-17 18:17:25 -07:00
Rohan Verma
ac76d50ec7
Merge pull request #1400 from guangyang1206/fix/cachekeys-order-stable-1370
Fix/cachekeys order stable 1370
2026-05-17 18:16:30 -07:00
Anish Sarkar
b6aed05683 refactor: implement SearchSpaceSettingsPage and SearchSpaceSettingsPanel components, replacing the previous settings dialog and enhancing tab navigation for search space settings 2026-05-18 02:02:45 +05:30
Anish Sarkar
08142f9add refactor: implement UserSettingsPage and UserSettingsPanel components, replacing UserSettingsDialog and enhancing user settings navigation 2026-05-18 01:51:31 +05:30
Anish Sarkar
5bcda6b83b refactor: replace action log sheet with dialog component and update related references 2026-05-18 01:34:41 +05:30
Anish Sarkar
c580addc04 refactor: enhance Google login functionality and button styles across multiple components 2026-05-18 01:17:37 +05:30
Anish Sarkar
10527ddb7c refactor: implement tab navigation in BuyMorePage and enhance button styles in BuyPagesContent and BuyTokensContent 2026-05-17 23:29:41 +05:30
Anish Sarkar
88a43cdd65 refactor: enhance ConnectToolsBanner functionality and update sidebar navigation handling 2026-05-17 16:46:34 +05:30
Anish Sarkar
a49ee05456 refactor: enhance layout structure by introducing WorkspacePanel and updating component styles 2026-05-17 03:17:12 +05:30
Anish Sarkar
bd1d1c42a7 refactor: adjust thread max width and update button sizes in ComposerAction for improved UI consistency 2026-05-17 02:57:00 +05:30
Anish Sarkar
b52e578021 refactor: replace Popover with DropdownMenu in ComposerAction and clean up unused state management 2026-05-17 00:57:35 +05:30
Anish Sarkar
af1d2fa430 Merge remote-tracking branch 'upstream/dev' into fix/zero-cache-stale-replica-1355 2026-05-16 19:30:09 +05:30
Anish Sarkar
f65bc81509 Merge remote-tracking branch 'upstream/dev' into feat/ui-revamp 2026-05-16 19:26:36 +05:30
Anish Sarkar
9c5a8c00b9 refactor: improve error handling layout in CitationPanel and update Separator styling across multiple components for consistency 2026-05-16 19:16:28 +05:30
guangyang1206
f096548a16 fix(web): extract single tryGetHostname helper (DRY, unified fallback)
Fixes #1368

Previously,  was duplicated in 4 places with 3 subtly different fallback behaviors:
1. inline-citation.tsx: returned  on error
2. markdown-text.tsx: returned  on error
3. assistant-message.tsx: returned  on error
4. citation.tsx: returned  on error

Created canonical  in  that:
- Returns
- Strips  prefix from hostname
- Returns  on invalid URL (safest contract)

Updated all 4 call sites:
- inline-citation.tsx:  (preserves original fallback)
- markdown-text.tsx:  (preserves original fallback)
- assistant-message.tsx:  (drop-in, both return )
- citation.tsx:  (drop-in, both return )

Co-authored-by: guangyang1206 <guangyang1206@users.noreply.github.com>
2026-05-16 12:15:16 +08:00
guangyang1206
3504be3413 fix(web): make cacheKeys.*.withQueryParams order-stable (sort entries)
Fixes #1370

Object.values() produces order-dependent cache keys because the order of values depends on the order of keys in the object. This causes the same logical query to produce different cache keys when the parameter object has keys in different orders.

Added stableEntries() helper that:
1. Filters out undefined values
2. Sorts entries by key name
3. Returns flat array of [key, value] pairs

This ensures cache key identity is stable regardless of parameter object key order.

Co-authored-by: guangyang1206 <guangyang1206@users.noreply.github.com>
2026-05-16 12:10:04 +08:00
DESKTOP-RTLN3BA\$punk
c187b04e82 chore: linting 2026-05-15 17:33:44 -07:00
DESKTOP-RTLN3BA\$punk
219a5977b7 fix: update URLs to use the "www" subdomain across the application
This commit modifies various metadata and canonical URLs in the SurfSense application to ensure consistency by using "https://www.surfsense.com" instead of "https://surfsense.com". Changes were made in layout files, blog posts, and SEO components to reflect this update.
2026-05-15 12:35:15 -07:00
DESKTOP-RTLN3BA\$punk
dc88ce0277 Merge branch 'dev' of https://github.com/MODSetter/SurfSense into dev 2026-05-15 11:55:40 -07:00
DESKTOP-RTLN3BA\$punk
52a64fb96c feat: added blog posts 2026-05-15 11:55:30 -07:00
Rohan Verma
953c654452
Merge pull request #1398 from mvanhorn/osc/1373-platefile-jsdoc-mod-shift-s-dev
docs(editor): align PlateEditor onSave JSDoc with Mod+Shift+S chord
2026-05-15 11:28:15 -07:00
Rohan Verma
1afecc9194
Merge pull request #1397 from voidborne-d/fix/suppress-global-error-toast-mutations-dev
fix(web): suppress global error toast on mutations that own their toast UX
2026-05-15 11:27:40 -07:00
Matt Van Horn
f0a51fad6f
docs(editor): align PlateEditor onSave JSDoc with Mod+Shift+S chord
Per #1373, the registered save chord is Mod+Shift+S (not Mod+S, which
collides with the browser's Save-Page-As). The JSDoc on PlateEditorProps.onSave
still claims Mod+S, which is misleading for downstream consumers of the
component. Update the JSDoc to match the actual chord and call out why.

Targeting dev per maintainer request.
2026-05-15 09:06:42 -07:00
voidborne-d
bf2b4ebeb0 fix(web): suppress global error toast on mutations that own their toast UX
Closes #1371. Retarget of #1385 onto dev per maintainer request.

surfsense_web/lib/query-client/client.ts configures a global
MutationCache.onError that shows an error toast for every failed
mutation unless meta.suppressGlobalErrorToast is set. The opt-out
hook existed in the consumer but had zero producers — every mutation
atom that already had its own onError: toast.error(...) was
double-toasting on failure.

Add meta: { suppressGlobalErrorToast: true } to the 30 mutations
across 9 atom files that own their own error toast:

- atoms/prompts/prompts-mutation.atoms.ts (4)
- atoms/invites/invites-mutation.atoms.ts (4)
- atoms/chat-comments/comments-mutation.atoms.ts (4)
- atoms/new-llm-config/new-llm-config-mutation.atoms.ts (4)
- atoms/members/members-mutation.atoms.ts (3)
- atoms/roles/roles-mutation.atoms.ts (3)
- atoms/image-gen-config/image-gen-config-mutation.atoms.ts (3)
- atoms/vision-llm-config/vision-llm-config-mutation.atoms.ts (3)
- atoms/public-chat-snapshots/public-chat-snapshots-mutation.atoms.ts (2)

Atoms intentionally left alone (no local onError, rely on global):
auth, user, search-spaces, logs, documents, connectors.

Local validation (against dev): pnpm biome check on the 9 touched
files is clean; tsc --noEmit shows no new errors in the touched files
(pre-existing errors elsewhere unrelated).

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 23:43:30 +08:00
CREDO23
4980f9f1ba Merge remote-tracking branch 'upstream/dev' into feature/multi-agent-with-task-parallelization 2026-05-15 16:44:22 +02:00
CREDO23
5327f3348c connector-popup: surface trusted-tools UI in MCP edit view; consolidate disconnect
- Slot MCPTrustedTools in mcp-service-config (gated on connector.id > 0) so
  any connected MCP-backed connector exposes a revoke surface for
  approve_always grants.
- Add new mcp-trusted-tools.tsx (audit + revoke list) and
  connectorsApiService.untrustMCPTool() that backs it.
- Drop the redundant row-level Disconnect from ConnectorAccountsListView:
  Manage now leads to the edit view whose own Disconnect is the single
  source of truth. Remove the now-dead onDisconnect prop, confirm-flow
  state, and handleDisconnectFromList hook callback + return entry.
2026-05-15 16:40:16 +02:00
CREDO23
1f1b6c5425 hitl/generic-approval: drop client-side MCP gate, dispatch approve_always
The 'Always Allow' button is now driven entirely by the server-supplied
allowed_decisions palette. The card no longer peeks at
context.mcp_connector_id to decide whether to render the button, and no
longer fires a separate trust-tool HTTP call on click - one
{type: 'approve_always'} dispatch is enough; the agent middleware
handles the in-memory promotion and (for MCP tools) the database save
via its trusted_tool_saver callback.

Drops the dead trustMCPTool / untrustMCPTool service helpers - they had
no remaining callers after this rework. The backing HTTP routes are
kept on the server as a programmatic surface.
2026-05-15 14:59:45 +02:00
CREDO23
c8b756ae8f hitl/wire: rename 'always' decision-type to 'approve_always'
Renames the SurfSense HITL extension decision-type from "always" to
"approve_always" so it sits in the same verb-first family as "approve",
"reject", and "edit". The Python constant is now SURFSENSE_DECISION_APPROVE_ALWAYS;
the wire value, the permission-domain decision_type, and the FE union members
all match (no wire/internal mismatch).

Both the multi_agent_chat permission middleware and the legacy new_chat one
accept the new wire value; the FE types.ts union is updated accordingly.

The "context.always" payload key is intentionally left untouched - it's the
patterns-to-promote field, semantically distinct from the decision type.
2026-05-15 14:47:32 +02:00
Rohan Verma
eea2d68098
Merge pull request #1396 from guangyang1206/fix/shared-thread-timestamp-formatter-1376
Some checks failed
Build and Push Docker Images / tag_release (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, production) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, production) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64, runner) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64, runner) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend) (push) Has been cancelled
Build and Push Docker Images / create_manifest (web, surfsense-web) (push) Has been cancelled
feat(shared): extract formatThreadTimestamp helper for chats sidebars…
2026-05-15 04:55:47 -07:00
Rohan Verma
7f66159af1
Merge pull request #1391 from guangyang1206/fix/log-mutations-invalidate-all-keys-1369
fix(web): invalidate all log cache keys on log mutations
2026-05-15 04:55:25 -07:00
Rohan Verma
4ab9544a66
Merge pull request #1382 from mvanhorn/osc/1372-use-canonical-log-types
refactor(use-logs): use canonical log types from contracts/types/log.types
2026-05-15 04:49:21 -07:00
Rohan Verma
4db3cf7fd5
Merge pull request #1377 from AnishSarkar22/feat/e2e-testing-ci
feat: add E2E CI and harden Docker build migrations
2026-05-15 04:47:26 -07:00
Anish Sarkar
8001cae1b4 refactor: update MessageInfoDropdown to accept chatTurnId prop and enhance RevertTurnButton integration for improved functionality 2026-05-15 10:48:57 +05:30
Anish Sarkar
5092bd3e8c refactor: integrate mobile preview functionality in citation components and enhance styling for improved usability 2026-05-15 04:13:58 +05:30
Anish Sarkar
4dd5871318 refactor: enhance citation components with mobile support and improved styling for better user experience 2026-05-15 03:56:01 +05:30
Anish Sarkar
01d7379914 refactor: add public URL handling for SurfSense documents across various components and schemas 2026-05-15 02:05:11 +05:30
Anish Sarkar
ea087d1d23 refactor: implement CitationHoverPopover component to enhance inline citation functionality and improve user interaction 2026-05-15 02:00:17 +05:30