Commit graph

4000 commits

Author SHA1 Message Date
CREDO23
296b95ba5b use type panel for floating non-focus-stealing window 2026-03-24 20:45:56 +02:00
CREDO23
985299b72d toggle, blur-dismiss, and titlebar for quick-ask window 2026-03-24 20:32:27 +02:00
CREDO23
d033e1cb48 open quick-ask as mini window at cursor position 2026-03-24 20:12:49 +02:00
CREDO23
8750462637 listen for quick-ask text in Composer 2026-03-24 19:28:41 +02:00
CREDO23
f9be80ab76 re-add initialText prop to InlineMentionEditor 2026-03-24 19:26:13 +02:00
CREDO23
71a262b2e7 wire quick-ask in main.ts 2026-03-24 19:24:41 +02:00
CREDO23
032ccd9541 add onQuickAskText type to ElectronAPI 2026-03-24 19:24:02 +02:00
CREDO23
45e9113522 expose onQuickAskText in preload 2026-03-24 19:23:24 +02:00
CREDO23
801c07291e add quick-ask IPC channel and shortcut module 2026-03-24 19:22:43 +02:00
CREDO23
59e7f8f068 remove tray and clipboard-to-chat feature 2026-03-24 19:12:04 +02:00
CREDO23
f783b00d2e fix(desktop): bind to 0.0.0.0 and silence auto-updater 404 2026-03-24 18:40:07 +02:00
CREDO23
a1119c401f Merge branch 'feat/migrate-electric-to-zero' into electon-desktop 2026-03-24 18:38:17 +02:00
CREDO23
5d8a62a4a6 merge upstream/dev into feat/migrate-electric-to-zero
Resolve 8 conflicts:
- Accept upstream deletion of 3 composio_*_connector.py (unified Google connectors)
- Accept our deletion of ElectricProvider.tsx, use-connectors-electric.ts,
  use-messages-electric.ts (replaced by Zero equivalents)
- Keep both new deps in package.json (@rocicorp/zero + @slate-serializers/html)
- Regenerate pnpm-lock.yaml
2026-03-24 17:40:34 +02:00
CREDO23
5bf2734e8c add migration to clean up Electric SQL artifacts 2026-03-24 17:19:07 +02:00
CREDO23
65539b5381 revert changelog - keep historical ElectricSQL reference 2026-03-24 17:08:21 +02:00
CREDO23
0916c1addd remove stale ElectricSQL references from changelog and test fixtures 2026-03-24 17:07:11 +02:00
CREDO23
657f546908 fix: always render ZeroProvider, allow anon queries without 401 2026-03-24 16:59:42 +02:00
CREDO23
54ffdc5aad fix: always init Zero when user exists, pass auth as optional 2026-03-24 16:39:37 +02:00
CREDO23
5c98f1c717 add ZERO_MUTATE_URL and no-op mutate endpoint for zero-cache auth passthrough 2026-03-24 16:25:13 +02:00
CREDO23
0e49cc33f8 format: auto-fix via pnpm format:fix 2026-03-24 16:07:28 +02:00
CREDO23
a74aa4da4f add auth to Zero query endpoint and ZeroProvider 2026-03-24 16:06:20 +02:00
CREDO23
cab33d9f4c fix: make ZERO_QUERY_URL portable across all environments
- Default to Docker service networking (http://frontend:3000) in both
  compose files — works when all services run in Docker
- Add extra_hosts (host.docker.internal:host-gateway) for cross-platform
  host access when running frontend outside Docker
- Document override examples in .env.example for local dev and
  custom domain setups
2026-03-24 15:06:58 +02:00
DESKTOP-RTLN3BA\$punk
2800878f9d Merge commit '354d80bf7a' into dev 2026-03-24 00:19:04 -07:00
Rohan Verma
354d80bf7a
Merge pull request #923 from mvanhorn/osc/905-catch-error-handling
fix: add error logging to empty catch blocks in useMessagesElectric
2026-03-24 00:14:50 -07:00
Rohan Verma
3776d3d6bc
Merge pull request #922 from mvanhorn/osc/904-console-log-guard
fix: gate console.log calls behind development check
2026-03-24 00:12:44 -07:00
Matt Van Horn
15e9f113e5
fix: add error logging to empty catch blocks in useMessagesElectric
Replaces 4 silent catch blocks with console.warn calls so sync
failures are observable in the browser console. Cleanup catches
at lines 147/155 stay silent since PGlite may already be closed.

Fixes #905
2026-03-23 23:34:17 -07:00
Matt Van Horn
b240057c61
fix: gate console.log calls behind development check
Wraps unguarded console.log statements in use-connectors-electric,
mcp-config-validator, and ElectricProvider behind an IS_DEV guard,
matching the existing pattern in lib/electric/client.ts. Keeps
console.error calls untouched so real errors still surface.

Fixes #904
2026-03-23 23:29:16 -07:00
DESKTOP-RTLN3BA\$punk
3c4bdc12f0 Merge commit '5da2d95d80' into dev 2026-03-23 18:22:00 -07:00
Rohan Verma
c5d740f162
Merge pull request #896 from AnishSarkar22/feat/human-in-the-loop
feat: sensitive actions using HITL & unified indexing pipeline for google connectors
2026-03-23 18:20:45 -07:00
CREDO23
8dd539c384 feat: add Zero query endpoint and configure ZERO_QUERY_URL
- Create app/api/zero/query/route.ts — resolves named queries to ZQL
  using handleQueryRequest and mustGetQuery from @rocicorp/zero
- Add ZERO_QUERY_URL to both docker-compose files:
  - dev: http://host.docker.internal:3000 (reaches local Next.js from Docker)
  - prod: http://frontend:3000 (Docker service networking)

Without this endpoint, zero-cache cannot resolve named queries and
no data syncs to the client.
2026-03-23 20:58:42 +02:00
CREDO23
4efb4fab4b fix: make migration 107 idempotent for video_presentations table
Check information_schema before creating table to avoid
DuplicateTableError when table already exists from model metadata.
Original op.create_table preserved exactly, only skipped if exists.
2026-03-23 20:27:09 +02:00
CREDO23
29b9cc814f fix: make migration 104 idempotent with if_not_exists on index creation
The notification composite indexes may already exist from the model's
__table_args__, causing DuplicateTableError on fresh migrations.
2026-03-23 20:22:48 +02:00
CREDO23
7d7d032e78 docs: add database permission requirements for Zero in managed environments
Document that the Postgres user needs REPLICATION and CREATE privileges
for zero-cache. Docker setup handles this automatically (superuser), but
managed databases (RDS, Supabase, etc.) may need explicit grants.
2026-03-23 20:01:06 +02:00
CREDO23
cf21eaacfc fix: critical timestamp parsing and audit fixes
- Fix timestamp conversion: String(epochMs) → new Date(epochMs).toISOString()
  in use-messages-sync, use-comments-sync, use-documents, use-inbox.
  Without this, date comparisons (isEdited, cutoff filters) would fail.
- Fix updated_at: undefined → null in use-inbox to match InboxItem type
- Fix ZeroProvider: skip Zero connection for unauthenticated users
- Clean 30+ stale "Electric SQL" comments in backend Python code
2026-03-23 19:49:28 +02:00
CREDO23
f04ab89418 refactor: rename Electric hooks and clean consumer components
Rename hooks to remove Electric branding:
- use-connectors-electric → use-connectors-sync (useConnectorsSync)
- use-messages-electric → use-messages-sync (useMessagesSync)
- use-comments-electric → use-comments-sync (useCommentsSync)

Clean all Electric/PGlite references in consumer components:
connector-popup.tsx, thread.tsx, page.tsx, use-indexing-connectors.ts,
use-connector-dialog.ts
2026-03-23 19:29:08 +02:00
CREDO23
a02bc54e40 feat: rewrite use-inbox and use-documents hooks from Electric to Zero
use-inbox: Keep all API calls (initial load, pagination, unread counts,
markAsRead/markAllAsRead optimistic updates). Replace Electric
sync+PGlite with Zero useQuery. Category filtering in JS. 458 → 273 lines.

use-documents: Keep all API calls (initial load, pagination, type counts,
user enrichment). Replace Electric sync+PGlite with Zero useQuery.
Remove baseline dedup. 511 → 361 lines.

All 7 Electric hooks are now rewritten to use Zero.
2026-03-23 19:21:20 +02:00
CREDO23
833fbb2a76 feat: rewrite use-documents hook from Electric to Zero
Keep all API calls (initial load, pagination, type counts, user
enrichment). Replace Electric sync+PGlite with Zero useQuery for
real-time deltas. Remove baseline dedup. 511 → 361 lines.
2026-03-23 19:16:38 +02:00
CREDO23
cd9d8ca991 feat: rewrite use-comments-electric hook from Electric to Zero
Replace PGlite sync+live query+stream subscriber with Zero useQuery.
All transformation logic preserved exactly: nested comments, mention
rendering, permissions, React Query cache writes. 414 → 207 lines.
2026-03-23 19:08:17 +02:00
CREDO23
5dd101b203 feat: rewrite use-documents-processing hook from Electric to Zero
Replace PGlite aggregate SQL (SUM/CASE) with Zero useQuery + client-side
status counting. State machine (idle/processing/success/error) preserved
exactly. 167 → 79 lines.
2026-03-23 19:06:32 +02:00
CREDO23
c60d2f071c feat: rewrite use-connectors-electric hook from Electric to Zero
Replace PGlite sync+live query with Zero useQuery. Maps camelCase
to snake_case for SearchSourceConnector type. 217 → 44 lines.
2026-03-23 19:04:51 +02:00
CREDO23
5ad25d10ea feat: rewrite use-messages-electric hook from Electric to Zero
Replace PGlite sync+live query with Zero useQuery. Maps camelCase
output to snake_case to preserve consumer contract. 162 → 38 lines.
2026-03-23 19:00:20 +02:00
CREDO23
b27061e44a feat: rewrite use-chat-session-state hook from Electric to Zero
Replace @electric-sql/react useShape with @rocicorp/zero/react useQuery.
Same Jotai atom update, same logic, same consumer contract.
2026-03-23 18:56:32 +02:00
CREDO23
6ad5ead320 docs: add Zero sync documentation and update existing docs
- Create how-to/zero-sync.mdx setup guide
- Update docker-compose.mdx with zero-cache service, env vars, troubleshooting
- Update dev-compose.mdx with Zero build arg
- Update install-script.mdx with zero-cache URL
- Update manual-installation.mdx with Zero frontend env var
- Add Zero sync page to how-to index, meta.json, and sitemap
2026-03-23 18:35:39 +02:00
CREDO23
f29a3edcab chore: update postgresql.conf and contracts comments for Zero
- Replace Electric SQL references in postgresql.conf with Zero-cache
- Clean Electric SQL comments in chat-comments.types.ts and chat-messages.types.ts
2026-03-23 18:30:49 +02:00
CREDO23
f9ba7e52d9 feat: add Zero infra — docker-compose, env vars, Dockerfile, CI workflows
- Add zero-cache service to docker-compose.yml and docker-compose.dev.yml
- Add ZERO_* env vars to docker/.env.example
- Add NEXT_PUBLIC_ZERO_CACHE_URL to surfsense_web/.env.example
- Add NEXT_PUBLIC_ZERO_CACHE_URL placeholder ARG/ENV to Dockerfile
- Add NEXT_PUBLIC_ZERO_CACHE_URL runtime substitution to docker-entrypoint.js
- Add NEXT_PUBLIC_ZERO_CACHE_URL build arg to docker-build.yml and desktop-release.yml
2026-03-23 18:27:18 +02:00
CREDO23
61610106f4 feat: add zero-cache service to production docker-compose
- Add rocicorp/zero:0.26.2 service with Postgres connection,
  SQLite replica volume, healthcheck, and admin password
- Add NEXT_PUBLIC_ZERO_CACHE_URL to frontend env vars
- Frontend now depends on zero-cache health
2026-03-23 18:19:37 +02:00
CREDO23
6143a91406 feat: add ZeroProvider and wire into app layout
- Create components/providers/ZeroProvider.tsx with schema, queries,
  userID, context, and cacheURL configuration
- Wire ZeroProvider into app/layout.tsx wrapping GlobalLoadingProvider
  inside ReactQueryClientProvider (same position ElectricProvider had)
2026-03-23 18:09:59 +02:00
CREDO23
da8f90bfe2 feat: add Zero queries for all 6 synced tables
Define named queries matching each Electric hook's data needs:
- notifications.byUser (use-inbox)
- documents.bySpace (use-documents, use-documents-processing)
- connectors.bySpace (use-connectors-electric)
- messages.byThread (use-messages-electric)
- comments.byThread (use-comments-electric)
- chatSession.byThread (use-chat-session-state)

Also moves schema files from zero/tables/ to zero/schema/ for
consistent modular folder structure.
2026-03-23 17:54:43 +02:00
CREDO23
af2bd744fb feat: add Zero schema with 6 table definitions and relationships
- Create zero/tables/inbox.ts (notifications)
- Create zero/tables/documents.ts (documents, search_source_connectors)
- Create zero/tables/chat.ts (new_chat_messages, chat_comments, chat_session_state)
- Create zero/schema.ts (combines tables, defines relationships, exports zql)
- Consolidate Zero type augmentations into types/zero.d.ts
2026-03-23 17:44:05 +02:00
CREDO23
8298aad2d7 feat: add @rocicorp/zero package and auth context type
- Install @rocicorp/zero@0.26.2 (replaces 4 @electric-sql/* packages)
- Add types/zero-auth.d.ts with Context type for Zero's permission system
2026-03-23 17:23:49 +02:00