feat(rename): complete searchSpace to workspace transition across frontend and backend

- Introduced a comprehensive specification for renaming `searchSpace` to `workspace` in `surfsense_web` and `surfsense_desktop`, ensuring all TypeScript identifiers, React props, and local data structures are updated.
- Implemented migration shims for persisted local state to prevent data loss during the transition.
- Updated observability metrics and IPC channels to reflect the new naming convention.
- Removed legacy `active-search-space` module and replaced it with `active-workspace` to maintain consistency.
- Ensured no behavioral changes or data loss for users during the renaming process.
This commit is contained in:
Anish Sarkar 2026-07-06 15:12:40 +05:30
parent 2a020629c5
commit a8c1fb660d
259 changed files with 5480 additions and 2285 deletions

View file

@ -93,7 +93,7 @@ Baidu Search does not create indexed documents in your knowledge base. It runs w
**No Baidu results appear**
- Confirm the Baidu Search connector is active in the current search space.
- Confirm the Baidu Search connector is active in the current workspace.
- Try a Chinese query with clear search intent, for example `百度智能云千帆 AppBuilder 最新功能`.
- Check whether other web search engines are returning results. If none are, review the general [Web Search](/docs/how-to/web-search) setup.

View file

@ -44,7 +44,7 @@ The Circleback connector uses a **webhook-based integration**. Unlike other conn
3. Click **Connect** to create the connector
<Callout type="info" title="No Credentials Needed">
Circleback uses webhooks, so no API key or authentication is required. The webhook URL is unique to your search space.
Circleback uses webhooks, so no API key or authentication is required. The webhook URL is unique to your workspace.
</Callout>
### Step 2: Copy Your Webhook URL
@ -57,7 +57,7 @@ After creating the connector:
The webhook URL looks like:
```
https://your-surfsense-url/api/v1/webhooks/circleback/{search_space_id}
https://your-surfsense-url/api/v1/webhooks/circleback/{workspace_id}
```
### Step 3: Configure Circleback Automation
@ -101,7 +101,7 @@ Once configured, new meetings will automatically appear in SurfSense after Circl
1. Attend or process a meeting with Circleback
2. Wait for Circleback to complete processing (usually a few minutes after the meeting ends)
3. Check your SurfSense search space for the new meeting document
3. Check your SurfSense workspace for the new meeting document
Each meeting document includes:
- A direct link to view the meeting on Circleback

View file

@ -29,7 +29,7 @@ This works for cloud and self-hosted deployments, including desktop and mobile c
3. In Obsidian, open **Settings → SurfSense**.
4. Paste your SurfSense API token from the user settings section.
5. Paste your Server URL in the plugin setting: either your SurfSense main domain (if `/api/v1` rewrites are enabled) or your direct backend URL.
6. Choose the Search Space in the plugin, then the first sync should run automatically.
6. Choose the Workspace in the plugin, then the first sync should run automatically.
7. Confirm the connector appears as **Obsidian - &lt;vault&gt;** in SurfSense.
## Install via BRAT (recommended)
@ -55,7 +55,7 @@ If you previously used the legacy Obsidian connector architecture, migrate to th
## Troubleshooting
**Plugin connects but no files appear**
- Verify the plugin is pointed to the correct Search Space.
- Verify the plugin is pointed to the correct Workspace.
- Trigger a manual sync from the plugin settings.
- Confirm your API token is valid and not expired.

View file

@ -5,17 +5,17 @@ description: How to invite teammates, share chats, and collaborate in realtime o
# Realtime Collaboration
SurfSense supports realtime collaboration so your team can work together on shared Search Spaces and chats. This guide walks you through the full setup.
SurfSense supports realtime collaboration so your team can work together on shared Workspaces and chats. This guide walks you through the full setup.
## Step 1: Invite Members
Go to the **Manage Members** page in your Search Space and create an invite for your teammates.
Go to the **Manage Members** page in your Workspace and create an invite for your teammates.
<img src="/homepage/hero_realtime/InviteMembersGif.gif" alt="Invite Members" style={{ width: '100%', borderRadius: '12px' }} />
## Step 2: Teammate Joins
Your teammate accepts the invite and the Search Space becomes shared between you.
Your teammate accepts the invite and the Workspace becomes shared between you.
<img src="/homepage/hero_realtime/InviteJoinFlow.gif" alt="Invite Join Flow" style={{ width: '100%', borderRadius: '12px' }} />

View file

@ -6,7 +6,7 @@ description: Connect LM Studio to SurfSense
# Connect LM Studio
Connect to your LM Studio local server. Add it from
**Search Space Settings > Models**.
**Workspace Settings > Models**.
## Base URL
@ -51,7 +51,7 @@ Replace `<host>` with the LAN IP or domain for that machine.
## Add the Connection
1. Open Search Space Settings.
1. Open Workspace Settings.
2. Go to Models.
3. Select LM Studio.
4. Set API Base URL.

View file

@ -6,7 +6,7 @@ description: Connect Ollama to SurfSense
# Connect Ollama
Connect to your Ollama local server. Add it from
**Search Space Settings > Models**.
**Workspace Settings > Models**.
## Base URL
@ -52,7 +52,7 @@ Replace `<host>` with the LAN IP or domain for that machine.
## Add the Connection
1. Open Search Space Settings.
1. Open Workspace Settings.
2. Go to Models.
3. Select Ollama.
4. Set API Base URL.

View file

@ -56,7 +56,7 @@ http://<host>:<port>/v1
## Add the Connection
1. Open Search Space Settings.
1. Open Workspace Settings.
2. Go to Models.
3. Select OpenAI Compatible.
4. Set API Base URL.

View file

@ -685,7 +685,7 @@ To verify your installation:
1. Open your browser and navigate to `http://localhost:3000`
2. Sign in with your Google account (or local credentials if `AUTH_TYPE=LOCAL`)
3. Create a search space and try uploading a document
3. Create a workspace and try uploading a document
4. Watch the upload status update live without refreshing. This confirms zero-cache is wired up correctly
5. Test the chat functionality with your uploaded content
@ -709,7 +709,7 @@ To verify your installation:
Now that you have SurfSense running locally, you can explore its features:
- Create search spaces for organizing your content
- Create workspaces for organizing your content
- Upload documents or use the browser extension to save webpages
- Ask questions about your saved content
- Explore the advanced RAG capabilities

View file

@ -64,7 +64,7 @@ callback.
1. Discord sends a `MESSAGE_CREATE` event over its WebSocket API.
2. SurfSense stores the event in the durable gateway inbox.
3. SurfSense resolves the Discord user binding to a SurfSense user and search space.
3. SurfSense resolves the Discord user binding to a SurfSense user and workspace.
4. SurfSense runs the backend agent with that user's permissions.
5. The agent reply is posted back to the same Discord channel.

View file

@ -79,6 +79,6 @@ the Slack app to your workspace so Slack grants the updated permissions.
1. Slack sends an `app_mention` event to SurfSense.
2. SurfSense verifies the Slack signature and stores the event in the gateway inbox.
3. SurfSense resolves the Slack user binding to a SurfSense user and search space.
3. SurfSense resolves the Slack user binding to a SurfSense user and workspace.
4. SurfSense runs the backend agent with that user's permissions.
5. The agent reply is posted back in the same Slack thread.

View file

@ -59,4 +59,4 @@ webhook or pending `getUpdates` session before relying on the new mode.
2. The user starts Telegram pairing.
3. SurfSense provides a pairing code or bot link.
4. The user sends the pairing command to the Telegram bot.
5. SurfSense binds that Telegram chat to the selected search space.
5. SurfSense binds that Telegram chat to the selected workspace.

View file

@ -63,4 +63,4 @@ Check that:
- Message Content Intent is enabled.
- The bot can view and send messages in the channel.
- Exactly one backend process is running the Discord listener.
- The Discord user is paired to a SurfSense user and search space.
- The Discord user is paired to a SurfSense user and workspace.

View file

@ -101,5 +101,5 @@ import pytest
pytestmark = pytest.mark.integration # or pytest.mark.unit
```
3. Use fixtures from `conftest.py` — `client`, `headers`, `search_space_id`, and `cleanup_doc_ids` are available to integration tests. Unit tests get `make_connector_document` and sample ID fixtures.
3. Use fixtures from `conftest.py` — `client`, `headers`, `workspace_id`, and `cleanup_doc_ids` are available to integration tests. Unit tests get `make_connector_document` and sample ID fixtures.
4. Register any new markers in `pyproject.toml` under `markers`.