SurfSense/surfsense_desktop
CREDO23 9bcbbff9d2
Some checks failed
Obsidian Plugin Lint / lint (push) Has been cancelled
Build and Push Docker Images / compute_version (push) Waiting to run
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, , production, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda126, production, true, cuda126) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda126, production, true, cuda126) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda, production, true, cuda) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, , production, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda, production, true, cuda) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64, , runner, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64, , runner, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / verify_digests (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend, , cpu) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda, cuda) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda126, cuda126) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (web, surfsense-web, , cpu) (push) Blocked by required conditions
Build and Push Docker Images / finalize_release (push) Blocked by required conditions
feat: bumped version to 0.0.36
2026-08-06 18:29:48 +02:00
..
assets fix(desktop): ship multi-size icons so linux launchers can find them 2026-05-22 20:04:21 +02:00
build feat(desktop): enable hardened runtime and entitlements for mac signing 2026-04-30 15:39:30 -07:00
scripts feat: fix desktop auth issues 2026-06-25 20:58:50 -07:00
src feat(window): maximize main window on ready-to-show event 2026-07-24 15:30:43 -07:00
.env.example feat(oauth): implement OAuth page rendering and enhance authentication flow 2026-06-24 18:37:04 +05:30
.gitignore chore: add .env to desktop gitignore 2026-04-11 10:45:01 +02:00
.npmrc feat: add native module support for desktop autocomplete 2026-04-02 13:18:20 +02:00
electron-builder.yml fix(desktop): ship multi-size icons so linux launchers can find them 2026-05-22 20:04:21 +02:00
package.json feat: bumped version to 0.0.36 2026-08-06 18:29:48 +02:00
pnpm-lock.yaml chore: update package dependencies and configuration 2026-08-04 09:18:17 -07:00
pnpm-workspace.yaml chore: update pnpm workspace configuration to include root package 2026-03-18 13:20:37 -07:00
README.md Extend desktop package scripts and local dependency compose 2026-04-24 19:15:02 +02:00
tsconfig.json feat(rename): complete searchSpace to workspace transition across frontend and backend 2026-07-06 15:12:40 +05:30

SurfSense Desktop

Electron wrapper around the SurfSense web app. Packages the Next.js standalone build into a native desktop application with OAuth support, deep linking, and system browser integration.

Prerequisites

  • Node.js 18+
  • pnpm 10+
  • The surfsense_web project dependencies installed (pnpm install in surfsense_web/)

Development

pnpm install
pnpm dev

This starts the Next.js dev server and Electron concurrently. Hot reload works — edit the web app and changes appear immediately.

On Linux, pnpm dev runs Electron through scripts/electron-dev.mjs: it sets ELECTRON_DISABLE_SANDBOX=1 for the sandbox issue and passes --ozone-platform=x11 (XWayland) unless SURFSENSE_ELECTRON_WAYLAND=1 is set, so dev tends to behave closer to X11 for shortcuts and Ozone. Packaged Linux builds are unchanged.

Configuration

Two .env files control the build:

surfsense_web/.env — Next.js environment variables baked into the frontend at build time:

surfsense_desktop/.env — Electron-specific configuration:

Set these before building.

Build & Package

Step 1 — Build the Next.js standalone output:

cd ../surfsense_web
pnpm build

Step 2 — Compile Electron and prepare the standalone output:

cd ../surfsense_desktop
pnpm build

Step 3 — Package into a distributable (after steps 12):

pnpm dist:mac      # macOS (.dmg + .zip)
pnpm dist:win      # Windows (.exe)
pnpm dist:linux    # Linux (.deb + .AppImage)
pnpm pack:dir      # optional: unpacked app only → release/… (run that binary yourself)

Step 4 — Find the output:

ls release/