v0.5.0 — 2026-07-27¶
Workspace documents and citations become clickable over HTTP, the Librarian shows live extraction progress you can act on, the wiki gains content stewardship and shareable links, and Neo4j is retired from the stack.
Added¶
- Workspace documents are hosted over HTTP. Every uploaded workspace document now has a View
and Download action — the gateway hands the browser a short-lived signed URL and the file
streams straight from object storage (the gateway stays the auth boundary but never proxies the
bytes). Documents carry their real content type, so a
.docxopens as a document, not a zip. - Citations resolve to clickable deeplinks. Advisor answers (MCP + OpenAI-compatible) render each
source and wiki reference as a full, tenant-reachable link. Clicking a wiki link takes you to the
article; if you aren't signed in, you're sent through login and land on the article afterward.
Enable it per deployment with
DEEPLINK_OVERRIDE_URL(see Upgrade notes). - Shareable wiki links. The wiki "Copy link" button now mints an ephemeral signed link that a recipient can open to read the article without a session, until it expires.
- Live extraction monitoring in the Librarian. Large documents extract in chunks; the Librarian now shows per-document progress (chunk N/M) with a progress bar as it happens, streamed over SSE. A restart no longer silently loses in-flight work — interrupted extractions auto-resume on the next start.
- Restart a stuck or failed source. The Indexed documents panel is taller (~10 rows), filters
by state (Extracted / Extracting / Pending / Failed), and gives any
pending/failedsource a one-click restart so a stalled or errored extraction can be re-run. - Wiki content stewardship. Curators can propose an edit or flag for removal directly from a wiki article; both create a review item in the Librarian queue that another curator confirms — the wiki never mutates the corpus directly. Articles also gain an on-demand narrative synopsis (AI-authored, cite-verified, human-approved) and provenance chips showing where each section came from.
- Durable wiki deep links. Wiki articles are keyed by a stable entity id that survives rename and re-publish, so a shared or cited link keeps working across versions.
bb publish. A CLI command that re-certifies and re-publishes the current draft, with a runbook.- Tamper-evident audit ledger. The audit trail is now hash-chained, so any gap or edit is
detectable (
verify_chain()). - End-user User Guide. A task-oriented guide to the Brain Builder app for curators and readers.
Changed¶
- Large-document extraction is much faster. Chunk extraction now parallelizes by default on
endpoints that tolerate it (the serializing Kimi subscription endpoint stays serial), cutting a
large multi-chunk document from ~10+ minutes toward a few. Tune with
EXTRACT_CHUNK_CONCURRENCY. - Neo4j has been removed from the stack. The product only ever did vector search + 1-hop lookups, and Neo4j sat empty and unqueried. The knowledge graph now lives in git (authoritative) + a NetworkX GraphML lens + pgvector — one fewer container, dependency, and port to run, with no loss of functionality. Fully rebuildable from the corpus.
- Librarian "Indexed documents" panel was reworked for density and action (state filter, taller list, status-accented rows, restart affordance).
Fixed¶
- Workspace
.docxfiles downloaded as a generic archive — now served with the correct content type and a filename that keeps its extension. - Deleting a workspace file failed with "failed to fetch" — the gateway CORS policy now allows
DELETE. - Extractions interrupted by a gateway restart no longer sit stuck as pending forever — they auto-resume, and a restarted job now shows its progress in the review queue like a fresh one.
- Wiki fixes: entity names containing
/resolve on the article route; the wiki cache is invalidated after certify/publish; any Curator (not just the proposer) can confirm a curation proposal.
Upgrade notes¶
- Apply database migrations:
alembic upgrade head(curation proposals, hash-chained audit, durable entity-id registry, workspace document content type). - New optional config (all have safe defaults; set per deployment):
DEEPLINK_OVERRIDE_URL— tenant base for clickable citation/wiki deeplinks (empty → relative, the dev default).WEB_APP_BASE_URL— SPA origin the wiki deeplink redirect targets (dev:http://localhost:5174).WSHOSTING_OVERRIDE_URL— browser-reachable object-store endpoint used to sign workspace download URLs (empty → falls back toS3_ENDPOINT_URL).WIKI_SHARE_TTL_SECONDS— lifetime of ephemeral wiki share links (default 7 days).EXTRACT_CHUNK_CONCURRENCY— now defaults endpoint-aware (parallel on Together/Anthropic, serial on the Kimi subscription endpoint); override to pin a value.EXTRACTION_RESUME_ON_BOOT— auto-resume interrupted extractions on start (default on).
- Neo4j removed. Drop the
neo4jservice and anyNEO4J_*variables from custom compose/env files; nothing connects to it anymore. Existing data is unaffected (the graph rebuilds from the corpus). - SSE is now live. The browser event stream is mounted for real-time progress. Behind a reverse
proxy, make sure Server-Sent Events aren't buffered (the dev
uvicornline adds--timeout-graceful-shutdown 3so an open stream doesn't stall--reload).