Cairn v0.9.2
v0.9.2
New features
Onboarding wizard
The first-run experience is now a guided multi-step wizard replacing the minimal folder-picker dialog.
Steps:
- Choose folder — pick where Cairn stores your notes and project data
- Workspace details — name your workspace and choose an icon
- Appearance — live-preview theme (Dark / Light) and font scale
- AI setup — enable or disable in-app AI, choose an endpoint (OpenAI, Ollama, LM Studio, or custom), enter an API key, and pick a model from contextual suggestions
- MCP server — connect your AI coding agent (Claude Desktop, OpenCode, Cursor, Cline, or Windsurf) with a one-click copy of the correct config snippet
- Done — feature orientation cards before entering the app
Progress dots track your position through steps 3–6. Theme and font scale apply live as you adjust them.
AI enable / disable toggle
A global Enable AI toggle has been added to Settings → AI. When off, all AI surfaces are hidden app-wide: the Chat button, ⌘/ shortcut, Spawn Tasks button, AI toolbar row in the notes editor, PRD buttons, Fix with AI in dashboards, and the AI Summary node generate button in Idea Flow. The formatting toolbar is unaffected.
No restart after workspace setup
Selecting a workspace folder during onboarding no longer requires an app restart. The main process swaps the SQLite database, file watcher, and asset protocol handler in place, then signals the renderer to re-hydrate — the wizard continues without interruption.
Bug fixes
IPC channel names corrupted after refactor
A bulk rename during the DbContext refactor mangled all 33 IPC channel name strings (e.g. "db:snapshot" became "ctx.db:snapshot"), silently breaking every database call. All channel names are restored; only the call-site arguments were intended to change.
Architecture notes
registerIpcHandlersnow accepts aDbContextobject ({ db, workspacePath }) instead of two separate parameters. All 60+ handlers read from the context object at call time, allowing the main process to swap the active database without re-registering handlers.registerAppHandlersaccepts an optionalonReinitialisecallback used byapp:initWorkspaceto open the new DB, restart the file watcher, re-register theasset://protocol, and notify the renderer — replacing the previous relaunch approach.app:mcpServerPathis now used by the MCP onboarding step to resolve the correct binary path per platform (.exeon Windows,-linuxsuffix on Linux), replacing a hardcoded macOS path.- The onboarding wizard is split across
src/components/onboarding/—index.tsxorchestrates state,shared.tsxholds theShelllayout, progress dots,NavRow, and MCP agent configs, and each step is its own file.