github Dicklesworthstone/coding_agent_session_search v0.11.0

6 days ago

cass v0.11.0

Search keeps answering while a lexical rebuild runs, cass timeline no longer runs out of memory, exports redact credentials by default, and cass index --watch stores and publishes new work it used to strand.

Upgrade notes:

  • The archive schema moves from v22 to v23 (forgotten_conversations) on first open. v0.10.0 still opens and searches an archive v0.11.0 has migrated.
  • The first cass index after upgrading re-reads every source once (new ingest contract; franken-agent-detection 0.3.10 changes what several connectors produce). The first cass index --semantic is a full pass, or the next cass models backfill batch records the new per-embedder watermark.
  • On macOS, run cass schedule install again: the scheduled jobs now set ProcessType=Interactive, and jobs installed earlier keep their I/O-throttled plist until you do.
  • Robot-mode argument errors now use the standard {"error": {...}} envelope (exit 2, kind usage). Scripts that read the old top-level status/error/kind fields need updating.
  • Exports (cass export, cass export-html, TUI export) redact recognized credentials by default; --include-secrets keeps them and marks the output sensitive.

Fixes reporters were waiting on:

  • #521: cass timeline no longer runs out of memory on a large archive, whatever its window or filters.
  • #509: cass index keeps committing after another tool reads the archive read-only (FrankenSQLite 0.4.9+), and cass schedule no longer reports a failing run as lock contention.
  • #516: FrankenSQLite 0.4.12 carries the upstream 0.4.10 data-integrity fixes.
  • #518: a two-word search no longer exhausts query fuel on a fragmented index.
  • #514: a read starts a catch-up index once the last source scan is five minutes old, even on a healthy index (CASS_AUTO_REFRESH_SOURCE_SCAN_SECS).
  • #537: cass forget --list, session previews, and explicit re-inclusion with --reinclude (then a plain cass index).
  • #522 / #523: the raw mirror no longer grows by an appended transcript's whole length on every run; cass mirror prune --keep-latest N; prune reclaims staging left by killed captures; a lexical rebuild killed between commits resumes.
  • #513: Codex sessions compressed to .jsonl.zst are indexed. #511: native Codebuff history indexes. #520: Factory, Vibe, Prime, Gemini and Cursor sessions synced from a remote source are indexed, and no longer also as Claude or Pi.
  • #519: OpenCode SQLite exports no longer panic at Windows process teardown. #524: keyword search keeps a named local source local. #531: cass sources add accepts a read-only rrsync key. #529: cass swarm status reads br 0.7.x.
  • #510: a conversation the watcher keeps deferring after a bounded NoMem backs off. #503: doctor repairs a 0.6.24-era archive with the #434 autoindex signature. #494, #381, #483, #426: rebuild resume and certification fixes, --rebuild-profile bounded, and source_ingest_reuse in capabilities.
  • #538 (still open until the reporter confirms): live watch gives each source a durable receipt only after its messages are stored and searchable, rescans after registering its watches, recovers lost and replaced roots, keeps retrying failed publications, spills large backlogs, and names the filesystem operation in flight in a stall report. cass status and cass health report pending.lexical_replay and call the index stale while watch recovery is pending.
  • #458 (still open): background index runs extend an existing semantic index instead of leaving it behind every ingest, and each embedder keeps its own watermark. They never build one from scratch.
  • #496 (still open): a stall report says when the rebuild was held below its memory reserve and names the variables that set it.
  • #539 (still open): small incremental runs do three fewer pieces of work proportional to the archive. End-to-end timings have not been measured.

Also fixed:

  • Starting a lexical rebuild no longer makes every search fail with maintenance-required on an archive over the automatic-repair budget, after an index run that committed to the live index was killed before its checkpoint.
  • Text and generic HTML exports include tool results; the raw mirror's size cap counts other cass processes' captures; VS Code workspace state with no Copilot chat is no longer mirrored, and Copilot chats committed only to state.vscdb-wal are indexed.
  • --verbose no longer turns on FrankenSQLite statement logging. A path through a symlink and then .. resolves as the filesystem resolves it.
  • Windows: semantic index replacement no longer fails with "Access is denied" or blocks on an open reader, --build-hnsw builds the graph, a stalled cass index exits 70 instead of crashing, and paths keep their drive.

Added:

  • cass guide repair-assets --apply and cass guide onboard-source --apply run the steps they used to only report.
  • Continue and Pi durable-harness sessions are indexed. Bookmark the selected TUI result with Alt+E.
  • Opt-in external embeddings (an OpenAI-compatible /v1/embeddings service, with CASS_EXTERNAL_EMBEDDINGS=1 consent) are listed by cass capabilities --json and cass robot-docs env.

Known open at release:

  • indexer::tests::gh515_targeted_watch_once_finishes_admitted_batch_after_stop is red (#515, new since v0.10.0): a targeted --watch-once asked to stop right after admitting its batch stores 2 of 4 messages.
  • Two daemon_client_integration SIGTERM tests are red (#515): while another process holds the database writer, a SIGTERM can wait for the 5-second busy timeout or forced exit, until FrankenSQLite's busy-retry loop observes cancellation (frankensqlite#524).
  • The strict whole-file UBS scan is still red, as at v0.10.0. The 174 critical findings new since v0.10.0 are in test code, development scripts and experiments, or flag == on values that are not secrets; see the CHANGELOG.
  • cass index checks whether another process has a session-log-named file (.jsonl, .json, .claude) open for writing. If that file is on a network or FUSE mount that has stopped answering, the run waits on the mount until it answers or the stall watchdog ends the run. v0.10.0 did not look at other processes' files. Other files on such a mount are not examined.
  • The Windows binary is cross-built. On Windows 11 x64 it ran a targeted index of one session, then status, health and search, all as expected; a full index of a real archive was not run on Windows.
  • franken-agent-detection is pinned to a git revision, so this version is not on crates.io.

Full details: CHANGELOG.md, section v0.11.0.

Don't miss a new coding_agent_session_search release

NewReleases is sending notifications on new releases.