Release · 2026-08-10T11:23:17+02:00 · By Threadnote
Threadnote 4.1.0
Threadnote 4.1 is a substantial code-graph reliability and performance release. It keeps existing 4.0.10 graphs available through upgrades, makes graph storage self-maintaining across worktrees, adds bounded incremental reuse for large repositories, and gives operators precise repair, removal, retention, and progress controls. It also hardens shared-memory lifecycle operations and introduces persistent read-only shared teams.
What's new
Threadnote 4.1 is a substantial code-graph reliability and performance release. It keeps existing 4.0.10 graphs available through upgrades, makes graph storage self-maintaining across worktrees, adds bounded incremental reuse for large repositories, and gives operators precise repair, removal, retention, and progress controls. It also hardens shared-memory lifecycle operations and introduces persistent read-only shared teams.
Non-disruptive graph upgrades and recovery
- Ready 4.0.10 graphs remain queryable while additive lease, reconciliation, and retention schema migrations run in the background. Supported legacy databases are reported as migrating instead of incompatible.
- Query leases can use the verified legacy read surface during migration. Partial schema publication and interrupted extension revisions converge on the next writer open without discarding ready snapshots.
- Doctor, repair, graph status, and Manager distinguish usable migration-pending data from corruption, count only readable snapshots as ready, and no longer recommend destructive recovery for an additive upgrade.
threadnote graph repairnow targets the current repository by default. Use--cwdor--checkout-idfor another exact checkout, or--allfor home-wide maintenance. A targeted repair does not block unrelated graph indexing.- Deep repair runs SQLite integrity diagnostics in a killable child process. SIGTERM now stops promptly and releases maintenance, checkout, worktree, and database-writer locks.
- Unreadable or transiently unavailable graph stores are preserved. Destructive recovery is limited to data proven disposable after a deep check, while failed refreshes keep the prior ready graph usable.
Automatic lifecycle, retention, and storage control
- Graph views carry durable checkout and worktree provenance with verified, missing, stale, invalid, or legacy-unknown state. Mutable paths do not become part of snapshot identity, and public/MCP errors remain path-free.
- Active views are separate from reusable snapshot caches. Removing a view cannot be undone by a leased historical snapshot or an older writer, while a verified current promotion can recreate it intentionally.
- Exact view removal is available from the CLI and Manager. Missing-worktree mappings are reconciled only from authority-proven local state, so temporarily offline or merely unreadable worktrees are preserved.
- Snapshot retention bounds detached clean and dirty generations, retires abandoned and superseded builds, protects live leases and reusable bases, and reclaims unreferenced parser facts and vector data in bounded batches.
- Reviewed purge and compaction previews report their exact target and reclaimable storage. Selected snapshot/view retirement is available without purging an entire repository.
- Routine maintenance and safe automatic recovery run alongside ordinary graph use. Active writers, queued targets, attach operations, and reusable clean generations remain protected by typed lock and ownership contracts.
- Cross-process disk reservations and native capacity probes prevent concurrent builds from overcommitting storage. Admission, temporary SQLite growth, WAL reuse, vector staging, and cleanup all use bounded capacity accounting.
- Storage diagnostics attribute bytes to tables, indexes, snapshots, caches, vectors, WAL/SHM files, and obsolete stores. Cleanup decisions remain conservative when filesystem or database evidence is incomplete.
Faster incremental graphs and large-repository analysis
- Clean commits can reuse the nearest compatible persisted graph. Dirty worktrees rebuild a conservative Nx, TypeScript, and workspace reverse-dependent closure while preserving full-rebuild query parity.
- Interrupted materialization resumes from durable checkpoints. Stale completed commits remain queryable while the latest target is queued, and isolated builders publish their exact result without a completion race.
- Compressed, identity-validated parser fact envelopes reduce repeated extraction and write amplification. Corrupt or mismatched cached shards become bounded misses and self-heal through an ordinary rebuild.
- Inventory policy excludes oversized or low-signal generated data before extraction, shares source-line indexes, and bounds parser lanes, cache capacity, resolution passes, and materialization work under contention.
- Nx, pnpm, Bazel, and TypeScript workspace components retain stable identities, declared dependencies, source roots, diagnostics, and precomputed cross-component aggregates for architecture analysis.
- Android XML and Apple plist, storyboard, XIB, and asset-catalog identifiers participate in graph search. Corpus and schema extractors use bounded structural policies for documentation and data files.
- Package-scoped graph queries report honest local absence hints.
graph query --worksetreturns bounded results with repository and snapshot provenance instead of implicitly building cold repositories. - Watcher, progress, and build-status telemetry are path-free and bounded. Phase metrics, queue state, ownership, materialization mode, storage high-water marks, and estimated current-phase progress are available to CLI, MCP, and Manager consumers.
Manager and MCP experience
- Manager streams graph indexing and maintenance state while work is active, keeps graph reads responsive during builds, validates cached view leases, and refreshes view counts immediately after removal.
- Graph administration uses one inline remove action, omits duplicate folder text, bounds historical job output, and gives the query workspace full width on desktop and mobile layouts.
- Manager binds only to loopback, and its catalog revision contract prevents stale responses from restoring removed views or overwriting newer graph state.
- MCP recall and graph operations preserve cancellation, stream bounded progress, cap semantic candidate selection, and avoid unbounded payload hydration.
- MCP exposes bounded Threadnote resources for discoverable local context while keeping production diagnostics and graph failures path-free.
Shared memory and local data safety
- Share rename and unpublish are retry-safe around their Git commit points. A post-commit warning no longer reports an already-applied rename as failed, and unpublish dry-run uses the same destination-collision preflight as apply.
- Persistent read-only teams can fetch, rebase, ingest, recall, report status, and install artifacts without publishing
or pushing. Configure them with
share init --read-onlyorshare set-access --mode read-only. - Read-only sync refuses dirty worktrees and local commits ahead of upstream instead of auto-committing them. Memory,
artifact, pack, unpublish, and local/merged conflict publication fail before mutation;
--take sharedremains available for remote-authoritative conflict resolution. - Recursive shared-subtree forget now removes only the selected subtree, preserves siblings, and reports resource-lock and filesystem failures through the native store contract. Collection roots remain protected from accidental deletion.
CLI, runtime, and release engineering
- Compatibility aliases preserve established CLI spellings while the exact installed command help remains authoritative.
- Bun/Effect platform adapters now own filesystem, command, process, disk-capacity, and runtime boundaries without production Node built-in imports. Process identity probes are bounded and superseded development runtimes can be terminated safely after exact-HEAD installation.
- The native code-graph store was split into focused modules with narrow schema, lifecycle, query, staging, reconciliation, retention, vector, and visualization responsibilities.
- Intel macOS uses a bounded capacity fallback verified on the release runner. macOS arm64/x64 and Linux arm64/x64 remain the published standalone targets, with Windows and musl builds retained as compile gates.
- Release builds reuse a checksum-verified embedding model artifact, require exact v4 tag provenance and immutable GitHub releases, and retain bounded production-large and heavy-tail evidence without presenting it as a portable latency SLA.
- The CI plan now isolates stateful, parser-heavy, property, lifecycle, and OS-contention suites within the hosted runner quota, while keeping standard tests, cross-platform compilation, installed-release E2E, recall quality, and self-contained payload checks mandatory for release source.