Repository navigation
Convert CapScreen to an on-device desktop app with cloud sign-in - #1
Merged
Merged
Conversation
Desktop (Electron) app where cap tables, documents and screenings never leave the user's machine. The only cloud piece is account sign-in. Desktop shell (desktop/) - Electron main supervises three loopback sidecars: Watchman (self-built pure-Go binary, no libpostal), the Express backend and the Next.js UI. - capscreen://app protocol proxies UI + API; per-launch token gates the API. - Tray, native notifications, crash restart, clean shutdown, single instance. - Offline sanctions data: list snapshot cache, automatic fallback when an online start fails, automatic return to live lists. - Claude-Code-style sign-in: browser hand-off over RFC 8252 loopback + PKCE, session sealed in the OS keychain, 14-day offline grace. - electron-builder packaging (dmg/nsis/AppImage). Backend - SQLite storage via a MongoDB-driver-compatible store under mongoose (node:sqlite); all models and queries unchanged. - Pluggable LLM providers: Anthropic, native Ollama, OpenAI-compatible. - AI Control Center API: BYO keys (AES-256-GCM, keychain-sealed master key), model roles, local-only policy, Ollama model management. - Local files instead of R2, in-memory cache instead of Upstash. - Encrypted backup/restore, hash-chained audit export, watched folders, background re-screening, sanctions list versions stored on results. - Cloud auth service (src/authService) for Vercel: existing account system plus desktop token exchange and a hosted sign-in portal. - Fix: PDF ingestion (pdf-parse v2 API), refresh cookie path, persisted watchmanListInfo, misleading Watchman log. Frontend - AI Control Center and Data & Backup pages, desktop bridge, watched folder and PDF export controls, signed-in identity, offline banners. - New CapScreen brand (logo, favicon, app and tray icons). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e:sqlite Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…usions - .vercelignore keeps storage/ (JWT private key), env files and local data out of uploads (the Vercel CLI does not read .gitignore) - vercel.json: no framework auto-detection, empty static output, all routes to api/index.ts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CapScreen becomes an Electron desktop app. Cap tables, documents and screenings stay on the user's computer; the only cloud piece is account sign-in.
Desktop shell (
desktop/)capscreen://appprotocol and a per-launch API token.Backend
node:sqlite); models and queries unchanged.src/authService,api/index.ts), live at https://capscreen-auth.vercel.app.watchmanListInfo.Frontend
Verification
Known gaps
.env.productionno longer exists, so live sign-in returns 500 untilMONGODB_URIon Vercel points at a working cluster.🤖 Generated with Claude Code