- Switch to infinite query with viewport-triggered pagination (loads more when user zooms out 3x past node bounds)
- Remove maxNodes cap so all data renders
- Remove background color and dot pattern from graph
- Make document-memory edges light grey
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- redirect to login when session is gone instead of blank screen
- show cached username while session restores so header doesn't flicker
- cleaned up redundant type casts and unused vars
Added workspace management to the onboarding flow with automatic organization creation and workspace validation throughout the app.
### What changed?
- Wrapped the app layout with an `EnsureWorkspace` component that redirects users without organizations to onboarding
- Enhanced the welcome page to automatically create an organization with a generated slug when users complete their name input
- Expanded the auth context to track organizations list, restoration state, and provide organization refetching capabilities
- Added utility functions for generating unique organization slugs and usernames from display names
- Implemented proper organization restoration logic that handles saved preferences and multiple organization scenarios
The subscription check on plugins, connections, and usage pages was hardcoded to only look at `api_pro`. Users on scale or enterprise plans saw "Upgrade to Pro" and couldn't create plugin keys or manage connections.
Also, the check only looked at product `status` but not the `allowed` flag from autumn — so users who downgraded but were still in their billing period got locked out early.
Adds multi-select and multi-file drag-and-drop on the Add Document Upload files tab, a per-file queue with status, retry for failed rows, and batched uploads to the existing `POST /v3/documents/file` endpoint with a client-side concurrency limit of 3.
Optional title/description apply only when a single file is queued. .md / .mdx (and text/markdown) are accepted.
Upload progress is shown as a bottom strip with a slow width animation
Updates docs to match the new behavior where metadata-only PATCH updates do not trigger reindexing:
- **update-delete-memories/overview.mdx** — Distinguishes content changes (reindex) vs metadata-only (no reindex), adds a note about `accepted`-style updates
- **document-operations.mdx** — Clarifies that only content changes trigger reprocessing
- **add-memories.mdx** and **add-memories/overview.mdx** — Add notes on metadata-only behavior
- **memory-api/ingesting.mdx** — Splits update behavior into content vs metadata-only
- **memory-api/creation/adding-memories.mdx** — Adds note for the “Adding Additional Metadata to Files” flow
fix: space deletion + new space not reflecting in selector
Deleting a space wasn't switching back to Nova Spaces because we were reading stale cache data
New spaces created from the add-document modal weren't showing up in the dropdown
Added single-select mode to the space selector in the add-document flow since you're picking one space, not multiple.
### fix: space selector state bugs on create and delete
Two related bugs in the space selector caused by query cache key mismatches in `use-project-mutations.ts`:
1. New spaces not appearing in dropdown until refresh — wrong query cache was being invalidated after creation.
2. App stuck on deleted space instead of switching to Nova Spaces — delete handler was reading from an empty cache, so the selection never updated.
### Implemented nova spaces multi-select
##### Summary
- Renamed "All Spaces" to "Nova Spaces" - now filters to only nova content (sm_project_*)
- Added multi-select spaces support via "Select Spaces" modal
- Projects API now returns `{ nova, developer }` instead of `{ projects }`
##### Changes
- `selectedProject` → `selectedProjects[]` (array-based selection)
- New `SelectSpacesModal` component for picking multiple spaces
- Selected spaces appear at top in modal
- Search works by containerTag
- Graphs filter by selected spaces