-
Notifications
You must be signed in to change notification settings - Fork 0
3.2 RC2 Release Notes
Release date: May 2026
Tag: v1.0.0-rc.2
RC2 is the first release after the ClioBrain fusion — the standalone ClioBrain project (now archived) has been absorbed into ClioDeck as the new Brainstorm mode. RC2 also ships an MCP server, three archive connectors (Europeana / Gallica / HAL), and Obsidian vault as a RAG source.
The strategy and implementation plan that drove the fusion live in docs/archive/fusion-cliobrain-strategy.md and docs/archive/fusion-cliobrain-implementation-plan.md — commits on this branch reference the step numbers defined there.
ClioDeck now has a dedicated chat mode for the exploratory phase of research, sitting between the corpus panels and the Write WYSIWYG editor. Highlights:
- Streamed chat through the typed
ProviderRegistry(5 providers: Ollama, OpenAI-compatible, Anthropic, Mistral, Gemini). - Agent loop with MCP tool-use (any MCP client you've configured contributes its tools).
-
.cliohintsinjection — a workspace-level system-prompt fragment from.cliodeck/hints.md. - Context compaction sized to the active model (keeps system + recent turns verbatim, summarises the middle).
- First-class
AbortControllercancellation per session.
The legacy RAG chat is still wired for safety; RC3 will deepen Brainstorm and retire it.
See: Brainstorm Mode Guide.
ClioDeck speaks the Model Context Protocol as both a client and a server.
-
MCP clients (Settings → MCP Clients) — register stdio or SSE MCP servers. Their tools become callable by the LLM inside a Brainstorm turn. Each client exposes a typed state machine (
unconfigured | spawning | handshaking | ready | degraded | failed | stopped), not aconnectedboolean; partial success is first-class. -
MCP server (Settings → MCP Server) — toggles a
bin/cliodeck-mcpbinary that exposes the workspace's corpus to Claude Desktop, Claude Code, or any other MCP client. Off by default. Every call is appended to.cliodeck/mcp-access.jsonlas a typed event. The Settings panel generates ready-to-paste snippets for Claude Desktop, Claude Code CLI, and Generic MCP (stdio) clients.
The server exposes 9 tools: search_documents, search_obsidian, search_tropy, search_zotero, graph_neighbors, entity_context, search_gallica, search_hal, search_europeana.
See: MCP Integration Guide.
Three public-archive connectors are wired as MCP tools on the built-in server:
- Gallica (BnF) — SRU public endpoint, no key.
- HAL (CCSD) — Solr public endpoint, no key.
-
Europeana — REST, requires a free
wskey. Configure in Settings → Archives.
API keys are stored via Electron's safeStorage (OS keychain on macOS, libsecret on Linux, DPAPI on Windows) — never in config.json. The Europeana key is read at call time from EUROPEANA_API_KEY, so it can be rotated without a restart.
See: Archive Connectors Guide.
ClioDeck can point at an Obsidian vault folder, index the notes inside, and treat them as a first-class source alongside PDFs (secondary) and Tropy archives (primary):
- Wikilinks, tags and frontmatter parsed.
- Indexed into the shared
.cliodeck/brain.db(obsidian_*-prefixed tables), alongside PDF and Tropy vectors — not a separateobsidian-vectors.dbfile, even at this tag. - Reachable from Brainstorm as the notes source-type and from external MCP clients via
search_obsidian. - Partial-success reporting (
indexed / skipped / failed).
See: Obsidian Vault Guide.
- All Settings sections are now collapsible (
CollapsibleSectionwrapper) so the Expert mode stops being a wall of forms. - Settings has Simple / Expert tabs — beginner-facing essentials by default, full surface on demand.
- Archives section fully internationalised (FR / EN).
The workspace is now flat — the previous nested .cliodeck/v2/* layout has been collapsed:
<project>/.cliodeck/
brain.db # consolidated SQLite: PDFs, Tropy primary sources, research history, AND Obsidian vault vectors
config.json # schema_version: 2
hints.md # .cliohints workspace context
recipes/, recipes-runs/
mcp-access.jsonl # MCP server audit log
security-events.jsonl # source-inspector events
ClioDeck auto-migrates the older nested layout (.cliodeck/v2/*), pre-fusion v1 layouts, and bare .cliobrain/ workspaces on project load — no manual action required (migrateWorkspaceToFlat in backend/core/workspace/migrator.ts). By this release, the db-fusion was already complete — and further along than an earlier version of this page said. It's not just vectors.db (PDFs) and primary-sources.db (Tropy) folded into brain.db: obsidian-vectors.db was folded in too, 5 days before this tag was cut (c044d42, verified an ancestor of v1.0.0-rc.2 via git merge-base --is-ancestor; obsidianStorePath() already returned the brain.db path at this exact tag). The migrator already renames the legacy vault tables in place (notes→obsidian_notes, chunks→obsidian_chunks, …) to avoid colliding with the PDF/Tropy tables sharing the same file. None of these four legacy files coexist as separate files at RC2.
-
RAG / BM25. Short acronyms (e.g.
KAQG,CIA) are now boosted on the exact-match path. Hybrid search takesmax(dense, sparse-synthetic)so BM25 hits no longer get drowned by semantic neighbours. BM25-only hits are surfaced through the grounding prompt instead of being silently dropped. -
Chat.
num_ctxis plumbed end-to-end; gemma3 / gemma4 families are recognised on the Ollama provider. Chat-engine logs the resolved model name (not the provider's display name). - PDF indexing. Worker drains stdout before exit so large payloads don't get truncated. PDF re-index for Zotero-only citations is repaired. Embedding input is capped to avoid Ollama 500s on outsized chunks. Packaged app probes Homebrew/nvm Node paths so it can find a Node runtime to index PDFs.
- Journal. Resolved model name is written into the AI-operation log. Sessions reload + error state clears when a project opens.
-
Pre-existing test failures. 21 tests fail under Vitest because of
better-sqlite3native bindings; Ollama live-backend tests time out when no Ollama is running. None of these affect the runtime. -
No React component tests yet. jsdom +
@testing-library/reactsetup is pending. - Brainstorm UX is inherited. The chat panel is still the legacy shape. RC3 will rework it (parallel scratch threads, branching, tool-call surfacing).
-
Per-tool toggle UI is minimal. Brainstorm can filter the MCP tool catalog (
enabledTools) but the renderer surface for this is bare-bones. -
Recipes
exportstep.document_idwas already honored at this tag (contrary to an earlier version of this page, which claimed it was ignored) — the real limitation was thatpdfExportService.exportToPDF()was called withprojectType: 'article'hardcoded, so a recipe run inside a book project exported a single file rather than the assembled manuscript. Fixed before RC3 (src/main/services/recipe-step-handlers.tsnow reads the real project type fromproject.jsonand callsassembleManuscript()for books). -
Ollama tool capability is whitelisted. Only
ministral-3:8b/14b,qwen3:8b/14b/32b,mistral-nemoadvertise tool-use. Llama 3.x / 4.x families gettools: false. SeeOLLAMA_TOOL_CAPABLE_PATTERNSinbackend/core/llm/providers/ollama.tsanddocs/archive/research-ollama-tools-1.8.md.
-
From RC1. Open your project — flat-layout migration runs automatically. No data loss; the previous
v2/directory is replaced in place. -
From ClioBrain. Migration is automatic on project load —
migrateWorkspaceToFlatdetects a.cliobrain/workspace (MigrationKind = 'cliobrain') and copies canonical artifacts into the flat.cliodeck/layout. Vault path, notes index and chat history carry over.
The fusion branch (feat/fusion-cliobrain) was ~190 commits ahead of main when it merged at this tag; it has since been merged and deleted, its history preserved on main.
Deeper Brainstorm work: parallel scratch threads, branching turns, better tool-call surfacing, the per-tool toggle UI, and the long-postponed retirement of the legacy chat service. Plus continued polish on the RAG retrieval pipeline.
For older release notes and implementation plans, see the archive folder.