Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
9e86f37
feat(THU-549): Workspaces Foundation (#932)
raivieiraadriano92 Jun 16, 2026
0bdfb53
feat(THU-603): user-private scope for workspace resources (#998)
raivieiraadriano92 Jun 21, 2026
0ee0820
chore: merge BE migrations
raivieiraadriano92 Jun 21, 2026
a3bc600
chore(workspaces): resolve rebase against main
raivieiraadriano92 Jun 22, 2026
5aaa279
fix(agents): gate edit action by add_agents workspace permission
raivieiraadriano92 Jun 23, 2026
223a07e
feat(THU-622): seamless data migration for Workspaces v1 rollout (#1025)
raivieiraadriano92 Jun 27, 2026
4d8046f
fix(THU-622): run legacy reader inside a Worker
raivieiraadriano92 Jun 27, 2026
e0aa379
fix(backend): keep pglite in-memory when DATABASE_URL is a connection…
raivieiraadriano92 Jun 28, 2026
9637b81
fix(tauri): allow localhost:8080 in CSP for sync stream
raivieiraadriano92 Jun 28, 2026
97ecaa9
feat(workspaces): UI polish for v1 rollout
raivieiraadriano92 Jun 28, 2026
7b3dd85
fix(deploy): drop stale mcp_servers from workspace sync rules
raivieiraadriano92 Jun 28, 2026
db73a2c
refactor(cleanup): DI shared modules instead of mock.module
raivieiraadriano92 Jun 28, 2026
0e4c1aa
refactor(workspaces): unmount-on-close instead of useEffect reset in …
raivieiraadriano92 Jun 28, 2026
9fca6ec
refactor(workspaces): use shared permissionAllows in useWorkspacePerm…
raivieiraadriano92 Jun 28, 2026
2522a36
refactor(workspaces): extract useActiveUserId hook to dedupe selector
raivieiraadriano92 Jun 28, 2026
e6210f8
fix(crypto): printf-style logs in clearAllKeys to satisfy CodeQL
raivieiraadriano92 Jun 28, 2026
49ec550
fix: ui refinements
raivieiraadriano92 Jun 29, 2026
9ea9e0e
feat(e2ee): scope encryption to personal workspace
raivieiraadriano92 Jun 29, 2026
e5b89ab
feat(workspaces): make resource scope mutable post-create
raivieiraadriano92 Jun 30, 2026
ea02a2b
feat(workspaces): gate Permissions UI behind ALLOW_WORKSPACE_PERMISSI…
raivieiraadriano92 Jul 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 7 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# Thunderbolt Cloud URL (optional, defaults to http://localhost:8000)
# Thunderbolt Cloud URL — the default-server URL the boot decision tree fetches
# /v1/config from. Optional; defaults to http://localhost:8000.
VITE_THUNDERBOLT_CLOUD_URL="http://localhost:8000/v1"

# Boot decision flags. v1 production: standalone off + default URL set + user-added off
# (forced-server). The mode picker UI ships in a later PR; v1 production never reaches it.
# VITE_STANDALONE_MODE_ENABLED="false"
# VITE_ALLOW_USER_ADDED_SERVERS="false"

# Bypass waitlist routes for UI development (set to "true" to skip waitlist)
# Note: This only bypasses frontend routing, not backend auth
# VITE_BYPASS_WAITLIST="true"
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,13 @@ jobs:
cd backend
bun install --frozen-lockfile

# `shared/workspaces.ts` imports `uuid`. TS bundler-mode resolution from
# shared/ walks up to root `node_modules/` (never reaches backend/), so
# the backend type-check fails with "Cannot find module 'uuid'" unless
# the root deps are installed too.
- name: Install root dependencies (needed for shared/ type-check)
run: bun install --frozen-lockfile

- name: Type check backend
run: |
cd backend
Expand Down
18 changes: 17 additions & 1 deletion backend/.env.example
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
# Backend dev environment variables.
# Copy to .env: cp .env.example .env
# Then run `make doctor` — it generates BETTER_AUTH_SECRET for you.
# Then run `make doctor` — it generates BETTER_AUTH_SECRET and SERVER_ID for you.
#
# REQUIRED for the app to start:
# - BETTER_AUTH_SECRET (auto-generated by `make doctor`)
# - SERVER_ID (auto-generated by `make doctor`)
# - At least one AI provider key (ANTHROPIC_API_KEY / FIREWORKS_API_KEY / MISTRAL_API_KEY / THUNDERBOLT_INFERENCE_API_KEY)

# === Required: deployment identity ===
# Stable per-deployment UUID returned by GET /v1/config. The frontend uses this to
# namespace its trust-domain registry (auth token, device ID, encryption keys, DB filename
# are all keyed by it), so changing it in place is a hard reset for connected clients.
# Generate with `uuidgen` or run `make doctor`.
SERVER_ID=

# === Required: auth signing secret ===
# Used to sign bearer tokens and session cookies.
# Generate with `openssl rand -base64 32` or run `make doctor`.
Expand Down Expand Up @@ -46,7 +54,15 @@ POWERSYNC_TOKEN_EXPIRY_SECONDS=3600
AUTH_MODE=consumer
# Anonymous-session overlay. When false, the anonymous() plugin is NOT registered
# and /v1/api/auth/sign-in/anonymous returns 404. Frontend mirror: VITE_AUTH_ENABLE_ANONYMOUS.
# Surfaced to the UI via GET /v1/config as `allowAnonUsers`.
AUTH_ALLOW_ANONYMOUS=false

# === Workspace creation policy ===
# Surfaced to the UI via GET /v1/config; enforced by the PowerSync upload-handler factory
# (workspaces table). Both default to false to match v1 production posture
# (central-admin only); relax per deployment.
ALLOW_WORKSPACE_CREATION_BY_ANON=false
ALLOW_WORKSPACE_CREATION_BY_MEMBERS=false
# Backend's public URL used for OIDC redirect URIs (must match what's registered with your IdP)
BETTER_AUTH_URL=http://localhost:8000
TRUSTED_ORIGINS=http://localhost:1420,http://localhost:8180
Expand Down
9 changes: 8 additions & 1 deletion backend/bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading