Releases: TracineHQ/convo
Releases · TracineHQ/convo
Release list
v2.0.1
v2.0.0
Breaking changes
- Default query semantics: phrase -> AND across tokens. Quoted strings remain
literal phrases. - Default
--limit: 50 -> 10. - JSON envelope: every command now returns
{schema_version: 2, <command>: {...}}.
v1schema_version: 1envelopes are gone. convo inspect --fullsemantics changed: was "no excerpt truncation," now
"no message cap."- Excerpt format:
\x02HIT\x02sentinels replaced with[match]brackets in
prose;indices: [[start, end]]char offsets in JSON.
Added
- Default output is structured prose (
--format=prose). JSON via
--format=jsonor--json. --excerpt-chars Nconfigures snippet window (default 600).--fields ts,session,command,excerptprojects fields tab-separated, one hit
per line.--session <prefix>filter restricts search to one session.--toolis now prefix-match by default.--tool-exactfor exact matching.--sinceaccepts ISO dates (2026-04-01) in addition to shorthand
(7d/24h).--projectaccepts basename/substring shorthand; ambiguous matches return a
helpful error.convo inspect --timelineshows per-message structured view with relative
timestamps.- New commands:
convo projects,convo tools,convo sessionsfor
discovery. - 0-hit responses include deterministic suggestions (hyphen-split, time-widen,
filter-drop). - Grep-style flags (
-A,-B,-C,-E,-i) and invented flags
(--quiet,--by-caller, etc.) rejected with helpful hints.
Removed
+tokenno longer changes behavior (was AND-required; now AND is default).- Top-level envelope keys outside the
<command>wrapper.
v1.1.0
Added
convo info--helpnow has an epilog describing the output sections.convo stats--helpepilog now lists thehooksfamily alongside the
legacy five.index,search,inspect, andstatsnow show concreteExamples:
blocks in their--helpoutput.convo --versionnow prints agh-style three-line block: name+version,
install path, repo URL.tests/test_stats_hooks.pycovers the previously-untestedstats hooks
analytics module (counts by hook/decision, since/project filters).tests/test_db_migrate.py::test_upgrade_v1_to_v2_preserves_dataexercises
the v1→v2 migration on a populated DB.seed_guard_decision()helper intests/_seed.pyforguard_decisions
rows..gitattributesenforces LF line endings on text files for Windows
parity.
Changed
convo index-guard --path /missing.jsonlnow exits 1 with
convo: path not found: ...to stderr. Auto-discovery with no--path
argument and no log present is unchanged (clean exit 0)..github/workflows/ci.ymltest+smoke jobs now usesetup-uv's
python-versioninput instead of a separateuv python pinstep,
saving roughly 28 s per Windows run.__main__.pynow also catchesOSErrorerrno 22/232 on Windows for
broken-pipe handling.- Three Windows skips in
tests/test_db_snapshots.pyconverted from
inlinepytest.skip()to@pytest.mark.skipif.
Fixed
.github/workflows/codeql.ymlgains a top-levelpermissions: contents: read
default. Closes ScorecardTokenPermissionsIDalert..github/workflows/ci.ymlactionlint installer is now SHA-pinned instead
of tag-pinned. Closes ScorecardPinnedDependenciesIDalert..claude/hooks/pre-bash-block-py-writes.shstrips shell line comments
before regex-matching (was triggering false positives on path tokens
inside#comments) and now also matches absolute-path redirects under
src/convo/andtests/..claude/hooks/post-edit-semgrep.shnow branches on semgrep's exit code
instead of grepping its stdout for emoji/keywords (the prior approach
silently passed if output formatting changed).- All four
.claude/hooks/*.shscripts now useset -euo pipefail.
Documented
SECURITY.mdnotes that POSIX mode bits (0o600) are silently ignored
on Windows; the DB inherits the parent directory's NTFS ACL.
v0.1.0
Initial public release.
Added
convo indexwalks~/.claude/projects/<slug>/*.jsonland populates a local
SQLite database (~/.claude/convo.dbby default;CONVO_DBoverrides).
Idempotent via sha256;--fullforces re-index. Per-file errors are contained.convo inforeports schema version, row counts, last index time, top projects,
and snapshot directory size.convo search "<query>" [--since SPAN] [--project P] [--tool T] [--limit N]
runs FTS5 trigram search across messages, tool calls, and tool results.
Supports+required/-excludedprefixes.convo inspect <session-id>renders a session timeline with inline tool calls.
Accepts a UUID prefix;--fulldumps untruncated content;--latestresolves
the most recent session.convo snapshotslists snapshot files withname | size | agecolumns.convo backup <dest>/convo backup --autowrites aVACUUM INTOsnapshot.
Snapshot files are written0600.convo restore <src>/convo restore --latestperforms an atomic-swap
restore from a snapshot; the source file is preserved.convo stats <family>aggregates over the corpus. Families:tools,
commands,sessions,files,model.convo summarycomposes all five stats families into one report.convo diffcompares the current window against the previous window of
equal length and reports per-bucket deltas.--jsonon every read and write command emits
{"schema_version": 1, "<command>": {...}}. Modeled errors emit
{"schema_version": 1, "error": {"message": "..."}}on stdout.--versionprints the installed CLI version.- Claude Code plugin packaging under
.claude-plugin/withconvo-searchand
convo-summaryskills and a thinbin/convowrapper that defers to the
convobinary onPATH.
Known limitations
- Windows:
os.replaceagainst an open DB raisesPermissionError. CI
runs on Ubuntu and macOS only. - Cross-filesystem restore:
$CONVO_BACKUP_DIRand~/.claude/convo.db
must share a filesystem; the atomic-replace requires it.