4.0 KB · updated 2026-07-06 · md

v0.12.0.md

docs/release-notes/v0.12.0.md

Tesserae v0.12.0 — multi-project by default

<!-- translations:start -->

한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch

<!-- translations:end -->

Released 2026-06-29 · PyPI · GitHub release · pip install --upgrade tesserae==0.12.0

There is no "active project" anymore. Every registered project is live at once — ask routes itself across them, serve serves them all under one site, and compile can now build the LLM concept layer the deterministic extractor omits.

No active project — a smart ask router

The "active project" concept is gone: tesserae projects activate and the activate_project MCP tool are removed, and every per-project command resolves the project from the directory you're standing in. All registered projects are equal.

A bare tesserae ask now routes itself:

  • names a project → that project;
  • comparative or general → federated (one merged, cross-referenced answer over the union);
  • a follow-up ("and why?") keeps the previous route; a topic shift ("what about other?") reroutes.

The clear cases resolve for free; an optional LLM tiebreaker handles the genuinely ambiguous middle, and a short per-conversation history keeps a multi-question thread coherent. Explicit --scope current|all-registered|federated still works.

One server for every project — tesserae serve

Bare tesserae serve now serves every registered project under a single server: a projects landing at /, each project at /<alias>/, a Projects switcher in the header, and per-project session views. The in-page ask widget works live, routed to the project of the page that asked. tesserae serve --project X still serves a single project. Requests are path-contained (no escaping a project's site dir) and the ask endpoint is same-origin gated with a request-size cap.

Build the concept layer in compile--extractor

tesserae compile --extractor claude-cli (or --extractor selective-claude --claude-include "<glob>" --claude-limit N) builds the concept/claim layer that the deterministic default leaves sparse — concepts, claims, capabilities, evidence spans, and typed edges. It's hardened for real corpora, where one noisy or slow document used to abort a whole compile:

  • an edge type outside the controlled vocabulary is dropped, not fatal;
  • a document that exceeds the per-doc timeout falls back to deterministic extraction for that file;
  • a transient invalid generation is retried (the model is non-deterministic, so a re-call almost always validates).

Also in this release

  • Cognee 1.0 compatibility — Cognee 1.0 removed the INSIGHTS search type Tesserae defaulted to, which silently broke the cognee ask backend. It now maps to GRAPH_COMPLETION (answer over the knowledge graph), so cognee works again; pass --cognee-search-type CHUNKS for raw retrieval.
  • tesserae setup — a top-level, interactive machine-wide setup (LLM provider/effort + which optional dependencies to install); flags skip the prompts, and installs work in pip-less uv tool environments.
  • Docs — README, quickstart, installation, the MCP guide, feature-map, and the integration guides updated for the above (no more "active project").

Upgrading from v0.11.x

Mostly drop-in. Breaking: tesserae projects activate and the activate_project MCP tool are removed — per-project commands resolve by current directory, and ask routes across your projects automatically. If you scripted projects activate, just delete it. Single-project use is unchanged.