Skip to content

Cairn v0.9.2

Choose a tag to compare

@github-actions github-actions released this 03 May 20:45
· 1967 commits to main since this release

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:

  1. Choose folder — pick where Cairn stores your notes and project data
  2. Workspace details — name your workspace and choose an icon
  3. Appearance — live-preview theme (Dark / Light) and font scale
  4. 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
  5. MCP server — connect your AI coding agent (Claude Desktop, OpenCode, Cursor, Cline, or Windsurf) with a one-click copy of the correct config snippet
  6. 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

  • registerIpcHandlers now accepts a DbContext object ({ 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.
  • registerAppHandlers accepts an optional onReinitialise callback used by app:initWorkspace to open the new DB, restart the file watcher, re-register the asset:// protocol, and notify the renderer — replacing the previous relaunch approach.
  • app:mcpServerPath is now used by the MCP onboarding step to resolve the correct binary path per platform (.exe on Windows, -linux suffix on Linux), replacing a hardcoded macOS path.
  • The onboarding wizard is split across src/components/onboarding/ — index.tsx orchestrates state, shared.tsx holds the Shell layout, progress dots, NavRow, and MCP agent configs, and each step is its own file.