Skip to content

Skip desktop first-run password, database, and admin wizard - #18

Merged
XYAIStudio merged 1 commit into
mainfrom
cursor/desktop-first-run-skip-wizard-90dc
Sep 15, 2026
Merged

XYAIStudio merged 1 commit into
mainfrom
cursor/desktop-first-run-skip-wizard-90dc

Conversation

@XYAIStudio

Copy link
Copy Markdown
Owner

Summary

Desktop first open no longer walks through the three server-style setup steps (verify boot password, choose database, create admin). With OCTOP_DESKTOP / FREEOS_DESKTOP, FreeOS binds local SQLite, provisions the existing guest / local-session, and lands on configure LLM API key. Users can 跳过,进入工作台 and set the model later in Settings.

Self-hosted / non-desktop installs keep the existing multi-step wizard.

Target branch

  • Base is develop (feature / fix — default)
  • Base is main (FreeOS shipping branch)

Type of change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Refactor / chore
  • Release / hotfix

Desktop first-run behavior

  1. Host starts with OCTOP_DESKTOP=1 → bind default local SQLite, do not write octop-login.txt, provision the local guest if no users exist.
  2. GET /api/setup/status reports desktop: true, wizard_password_required: false, setup_required: false after provision.
  3. Dashboard AuthGuard / Login use /auth/local-session (no longer blocked by setup lockdown) and send first launch to /setup only for the model step.
  4. Desktop /setup hides password / database / admin steps and the 5-step chrome. Footer is 跳过,进入工作台 (or Skip and enter workspace).
  5. Skip or save marks freeos:model-onboarding-done and enters /chat. Model settings remain available later.

Key files

  • src/octop/infra/server.py — desktop auto-bind SQLite + guest provision; skip wizard password file
  • src/octop/api/routers/setup.py — desktop / has_providers; no boot-password on desktop
  • dashboard/src/api/request.ts — allow /auth/local-session during lockdown; keep ?desktop=1 on redirect
  • dashboard/src/pages/Setup/index.tsx — model-only desktop flow + skip-to-workspace
  • dashboard/src/components/AuthGuard.tsx, dashboard/src/pages/Login/index.tsx
  • dashboard/src/utils/desktopOnboarding.ts

Test plan

  • make precommit (ruff + mypy + pytest-testmon): 3079 passed, 42 skipped
  • Dashboard npx tsc --noEmit and npm run build
  • Targeted: tests/integration/test_local_session.py, test_server_lifecycle.py, test_setup_wizard.py; vitest Setup / AuthGuard / Login / request lockdown
  • CI: Python + Windows Python + Desktop Package windows-amd64/arm64

How to verify on Windows

  1. Install or run the desktop build (FreeOS.exe / portable). Confirm host env has OCTOP_DESKTOP=1.
  2. Use a fresh profile (%USERPROFILE%\.freeos or a clean FREEOS_HOME) so first-run applies.
  3. Open the app. You should not see 验证密码 / 选择数据库 / 创建管理员, and should not see octop-login.txt help text.
  4. You should land on 配置模型 (API key). Use 跳过,进入工作台 to enter chat without a key.
  5. Later, open Settings → Models and add a provider. Re-open the app: model step should not appear again.
  6. Confirm no leftover Octop login wall / WebView2 panic from PR Fix WebView2 Navigate panic and leftover Octop login wall #17.

Checklist

  • Updated CHANGELOG.md (if user-facing)
  • README / docs updated (if needed) — OpenAPI auth note only; no README change

Do not merge this PR or replace GitHub Release assets. Coordinator ships after review.

Open in Web Open in Cursor 

Desktop (OCTOP_DESKTOP) now binds local SQLite, provisions the guest
session, and opens on the model / API-key step with a skip-to-workspace
path. Self-hosted installs keep the password, database, and admin wizard.
@XYAIStudio
XYAIStudio marked this pull request as ready for review September 15, 2026 17:16
@XYAIStudio
XYAIStudio merged commit db20b43 into main Sep 15, 2026
5 checks passed
@XYAIStudio
XYAIStudio deleted the cursor/desktop-first-run-skip-wizard-90dc branch September 15, 2026 17:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants