Skip to content

Releases: meirka8/volute

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 10:44
v0.7.0
de57424

Volute CVC v0.7.0

Volute CVC v0.7.0 adds a Claude Code harness: sessions of Anthropic's Claude Code agent are recorded from the transcript it writes, through its own lifecycle hooks, with no cooperation needed from the model, and the response that runs git commit is linked to the commit it created. The release also hardens the local store for parallel worktree sessions, closes two gaps in the consent gate, and smooths the first-run path across the CLI, the MCP server, and the VS Code extension.

CVC keeps explicitly available AI-assisted development context alongside Git history. It records only information exposed or supplied by its integrations; it neither retrieves hidden chain-of-thought nor promises a verbatim record of a black-box model's internal reasoning.

Full Changelog

Highlights

Claude Code harness

  • cvc harness install claude-code writes PostToolUse, Stop, and SessionEnd hook entries, carrying the absolute path of the running cvc, into the checkout's .claude/settings.local.json, and keeps that machine-specific file out of Git through info/exclude. The install is per checkout; each linked worktree needs its own. cvc harness uninstall claude-code removes exactly those entries. (#31)
  • cvc ingest claude-code records each completed assistant response of a session transcript as one private thought: the prompt or tool results it reacted to become the prompt, exposed thinking becomes model_cot, text becomes the response, and tool calls become tool executions carrying the status of their results. Paths the session read or edited inside the worktree become file context, subject to .thoughtignore. Ingestion is incremental from a per-session byte cursor and idempotent through deterministic interaction ids, so a hook run never duplicates a thought or disturbs a link it already earned. The hook form reads Claude Code's stdin payload, prints nothing, and never returns the blocking exit status; the explicit form takes --transcript <path> for a finished session or one recorded before the hooks existed.
  • Commit links from transcript evidence. The response that runs git commit reaches the store only after the post-commit hook has run, so the time-window linker could never reach it. Ingest now reads the commit the session's own git command created, verifies it against the repository, and links that response and the reasoning before it to the commit, segmented so each commit claims only the reasoning since the previous one. The commit is identified from the command's recorded output: git's own summary line, a hash at the start of a line as git log --oneline prints, a full hash, or the line the post-commit hook itself prints, which now names the commit, so a quiet git commit -q links too. A hash that does not resolve, or whose time contradicts the transcript, links nothing. (#70, #102)
  • Subagent transcripts stored beside the session are ingested in the same pass, each as its own conversation named <session>:agent-<id> and titled from Claude Code's metadata for the agent. (#71)
  • Conversations carry Claude Code's session title, the one you set or the one it generates, with the first prompt standing in until either exists. (#101)
  • Tolerant of unfamiliar content blocks. Claude Code adds content block types within a major version; one such block used to fail an entire session. A block type the parser does not know is now kept as a bracketed placeholder naming the type, never its content, and counted in the ingest summary. Entries outside the conversation chain, such as the request caches Claude Code 2.1.300 writes, are skipped whatever they carry. A transcript of another major version, or a chained entry of an unknown shape, is still refused whole. (#84, #110)
  • The harness is a passive channel: like the VS Code watcher, it records nothing until the repository-local capture acknowledgement exists, and captures are attributed to the worktree the hook ran in, so parallel checkouts cannot claim each other's thoughts. Scrubbing, .thoughtignore, per-conversation sharing, and per-destination consent apply unchanged.

Reliability under parallel sessions

  • The MCP server no longer loses its own thoughts. cvc-mcp inspected the database file outside SQLite, which on Unix released the process's WAL lock; the next CLI command or Git hook then checkpointed and removed the write-ahead log under the running server, and every later commit_thought landed in a file only that server could see. The server now derives its binding identity without opening the file, and the store treats a vanished write-ahead log as a failed write instead of a silent success. (#60)
  • Writers wait instead of failing. Every writing transaction begins immediately, so SQLite's busy handler always applies, and a writer waits up to 2 s for a competitor before giving up, up from 250 ms. "CVC Hook Warning: Failed to link artifacts: database is locked" no longer appears in normal parallel-worktree operation; hooks remain advisory and still fail closed past that patience. (#40)
  • Exact squash relinking works across linked worktrees. Range evidence gains a v2 identity hashed from the canonical common Git directory, so a range observed from two worktrees of one repository is one record, not two conflicting ones; existing duplicated v1 records are unified. Ranges that genuinely disagree still refuse to relink. (#39)
  • A linked worktree whose administrative directory holds a broken gitdir marker without a commondir is refused rather than treated as a standalone repository. (#42)

Consent gate

  • Typed acknowledgements come from the terminal, not from stdin. On Unix the challenge opens the controlling terminal directly, discards pending input immediately before the prompt is shown, and reads one byte at a time, so a pasted runbook or type-ahead cannot answer a challenge before it is displayed. (#22)
  • cvc share --push honours an existing auto-push grant for the destination instead of demanding a second I PUBLISH challenge for a decision already made; without that grant the challenge follows as before. (#24)

First-run polish

  • cvc --version and cvc --help print to stdout and exit 0; cvc-mcp reports its real version to MCP clients. (#85)
  • The stubbed cvc component and cvc auth subcommands, which simulated success, are removed along with the HTTP client and keyring dependencies they pulled in. (#86)
  • VS Code: Volute: Check Setup refreshes the CLI path and starts the language server after a mid-session CLI install, so the prompted first-run flow no longer needs a window reload, and a CLI task that cannot start says so instead of silently doing nothing. (#41)
  • cvc harness install claude-code tells you that hooks apply to new Claude Code sessions and how to verify capture; the README carries an ordered Claude Code quick start; the @volute_cvc/cvc-mcp npm package has a README. (#91)
  • Release engineering: the Marketplace publish step is convergent, so a rerun after a gallery timeout publishes only the missing platform targets. (#69)

Included components

  • cvc-core — Rust library for local storage, Git integration, policy enforcement, linking, sync data structures, and the Claude Code transcript adapter.
  • cvc-cli — the cvc command-line interface, including cvc harness and cvc ingest.
  • cvc-mcp — MCP server for explicitly submitted interaction records and local history access.
  • cvc-lsp — language server used by editor integrations.
  • cvc-plugin — VS Code extension for the supported local VS Code chat-session workflow.
  • cvc-reviewer — client-side React reviewer for GitHub-hosted CVC data.
  • @volute_cvc/cvc-mcp — npm launcher for released CVC binaries (cvc-mcp and cvc).

Install

GitHub release assets

Once the full release workflow completes, download an archive and SHA256SUMS.txt from the v0.7.0 GitHub release. Verify the archive against that manifest before extracting it, then put cvc (or cvc.exe) on PATH. Each archive includes cvc, cvc-mcp, and cvc-lsp.

Platform Archive
Linux x86-64 cvc-x86_64-unknown-linux-gnu.tar.gz
macOS x86-64 cvc-x86_64-apple-darwin.tar.gz
macOS ARM64 cvc-aarch64-apple-darwin.tar.gz
Windows x86-64 cvc-x86_64-pc-windows-msvc.zip

Expected additional release assets are LICENSE, THIRD-PARTY-NOTICES.md, install.sh, and install.ps1. Each native archive and VSIX also includes the mechanically generated third-party notice file. The standalone installer assets default to v0.7.0, select the matching supported archive, and verify its checksum; set CVC_RELEASE_VERSION to an explicit valid release tag to override that version. Review a script before running it.

From any Git working tree, get started with:

cvc init
cvc status
cvc conversations

Capture Claude Code sessions

With cvc installed, from the checkout you work in:

  1. `cvc ini...
Read more

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 10 Sep 13:03
v0.6.0
c099bde

Volute CVC v0.6.0

Volute CVC v0.6.0 makes the sharing workflow discoverable. Conversation ids — previously required by cvc share but displayed by nothing — now have a first-class listing, and a bare cvc share walks you through an interactive selection. The full flow from finished work to a populated Reviewer timeline is now: cvc conversations → cvc share → pick → type the challenge → cvc push --manual.

CVC keeps explicitly available AI-assisted development context alongside Git history. It records only information exposed or supplied by its integrations; it neither retrieves hidden chain-of-thought nor promises a verbatim record of a black-box model's internal reasoning.

Full Changelog

Highlights

  • cvc conversations — a read-only listing of conversations, most recent activity first, with thought and linked-commit counts and, for the selected (or origin) remote, each conversation's share and publication state ([private] / [shared, n/m published]). It answers "what would I be sharing?" without touching any consent surface.
  • Interactive share picker. A bare cvc share from a terminal lists the destination's unshared conversations and lets you pick one; the existing typed consent challenge then runs unchanged. The picker is gated on the same TTY check as the challenge, so no new non-interactive path exists — scripts must still name a conversation explicitly and are told so.
  • Legible consent. cvc share now prints the conversation's title, thought count, and activity range before the challenge, so what you are consenting to is visible at the gate. The challenge phrase itself is unchanged.
  • Reviewer: projections with no squash/rewrite evidence now render. The v5 format requires events/ and ranges/ trees, so an evidence-free repository correctly points them at Git's canonical empty tree — an object the GitHub API refuses to serve. The Reviewer no longer attempts to fetch that defined constant, fixing the silent empty Shadow Gallery for exactly the common case of a new repository's first published thoughts. (The Reviewer deploys continuously; this note is for completeness.)
  • Documentation: Privacy.md opens with a plain-language "How your data moves" lifecycle (capture → link → share → push, and where the irreversibility boundary sits); RELEASING.md gains the release-signing preflight and key-compromise response.

Included components

  • cvc-core — Rust library for local storage, Git integration, policy enforcement, linking, and sync data structures.
  • cvc-cli — the cvc command-line interface.
  • cvc-mcp — MCP server for explicitly submitted interaction records and local history access.
  • cvc-lsp — language server used by editor integrations.
  • cvc-plugin — VS Code extension for the supported local VS Code chat-session workflow.
  • cvc-reviewer — client-side React reviewer for GitHub-hosted CVC data.
  • @volute_cvc/cvc-mcp — npm launcher for released CVC binaries.

Install

GitHub release assets

Once the full release workflow completes, download an archive and SHA256SUMS.txt from the v0.6.0 GitHub release. Verify the archive against that manifest before extracting it, then put cvc (or cvc.exe) on PATH. Each archive includes cvc, cvc-mcp, and cvc-lsp.

Platform Archive
Linux x86-64 cvc-x86_64-unknown-linux-gnu.tar.gz
macOS x86-64 cvc-x86_64-apple-darwin.tar.gz
macOS ARM64 cvc-aarch64-apple-darwin.tar.gz
Windows x86-64 cvc-x86_64-pc-windows-msvc.zip

Expected additional release assets are LICENSE, THIRD-PARTY-NOTICES.md, install.sh, and install.ps1. Each native archive and VSIX also includes the mechanically generated third-party notice file. The standalone installer assets default to v0.6.0, select the matching supported archive, and verify its checksum; set CVC_RELEASE_VERSION to an explicit valid release tag to override that version. Review a script before running it.

From any Git working tree, get started with:

cvc init
cvc status
cvc conversations

VS Code Marketplace

After the full release workflow completes, Volute CVC (volute.cvc) is expected to be available from the VS Code Marketplace. The extension supports VS Code ^1.91.0 and uses the platform-specific bundled language server.

npm MCP launcher

After the full release workflow completes, the @volute_cvc/cvc-mcp launcher is expected to be available from npm:

npm install --global @volute_cvc/cvc-mcp@0.6.0

It provides cvc-mcp and cvc, downloads the matching release binary on first use, and verifies it against the release checksum manifest. Configure cvc-mcp in your MCP client as documented in the MCP setup guide.

Upgrade notes

  • No database migration and no wire-format change. The new listing is a read-only query; sync output remains byte-compatible v5, and v0.5.x binaries interoperate freely.
  • Dependency refresh across the workspace, including git2 0.19 → 0.20.4 (libgit2 1.9.x). No behavior changes.
  • Consent semantics are unchanged everywhere: same challenges, same per-destination boundaries, same inert bare cvc push without a standing auto-push grant.

Privacy and sharing

CVC is local-first, not local-only. Captures live under the repository's common Git directory in cvc/ and are private by default; linked worktrees share that private store. Remote publication is a separate, explicit action behind per-destination consent and an interactive challenge. See Privacy.md's new "How your data moves" section for the full lifecycle in plain language.

Review content before sharing and protect access to the repository and its common Git directory. Built-in scrubbing and .thoughtignore are defense in depth, not a guarantee. Once published to Git, content may remain in objects, clones, forks, reflogs, caches, and backups. Rotate an exposed credential first; local deletion and tombstones are suppression mechanisms, not guaranteed physical erasure.

Release security and hardening

  • Release tags must exactly match the Rust, VS Code extension, and npm package versions before publishing, and are SSH-signed by the dedicated release identity documented in RELEASING.md (fingerprint published there for pin-verification).
  • Release archives include a SHA-256 manifest; the installer and npm launcher verify the selected archive and reject unsafe redirects or archive members.
  • The workflow pins its GitHub Actions by full immutable Git object SHA, uses scoped job permissions, and publishes GitHub build provenance attestations for workflow assets: gh attestation verify <asset> --repo meirka8/volute.
  • npm publishing is configured to use npm trusted publishing.

The same-release SHA-256 checksums are corruption/integrity checks, not independent signatures. Download only from this repository and review installers before running them.

Known limitations

  • Linux ARM64 is not released. The installers and npm launcher support the same platform matrix and reject unsupported platforms before downloading an asset.
  • Sharing is explicit and per-conversation — by design; the new picker cheapens the act, never the deliberation.
  • The VS Code extension's Share command still asks for a conversation id by text input; a picker over the same summary data is a tracked follow-up (#65 covers the CLI; the extension part is noted there).
  • Exact squash relinking expects a range to be observed from one worktree (#39); affected thoughts stay floating rather than mislinked.
  • Very high concurrent capture volume can hit database lock contention (#40).
  • Hosted Reviewer requires deployment configuration. The default Reviewer mode is local PAT mode.

Trademarks and affiliation

GitHub, Copilot, and Visual Studio Code are trademarks of their respective owners. Volute is not affiliated with, sponsored by, or endorsed by GitHub, GitHub Copilot, or Visual Studio Code.

Learn more and contribute

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 03 Sep 15:04
v0.5.0
715c909

Volute CVC v0.5.0

Volute CVC v0.5.0 adds linked Git worktree support across every component. CVC now works from any checkout of a repository — git worktree add checkouts included — with one shared private store per repository and capture attribution per worktree. This release is aimed squarely at parallel, agent-driven workflows where several tasks proceed simultaneously in sibling worktrees of the same repository.

CVC keeps explicitly available AI-assisted development context alongside Git history. It records only information exposed or supplied by its integrations; it neither retrieves hidden chain-of-thought nor promises a verbatim record of a black-box model's internal reasoning.

Full Changelog

Highlights

  • Linked worktrees are fully supported by the CLI, MCP server, language server, and VS Code extension. The database, privacy/consent state, locks, and rewrite state live in $(git rev-parse --git-common-dir)/cvc and are shared by all worktrees of a repository; .thoughtignore, context resolution, and branch state remain local to each active worktree. Hooks resolve through Git's effective hooks path, and every entry point discovers the repository layout fail-closed — malformed worktree metadata is rejected rather than mistaken for a normal repository.
  • Automatic linking is scoped to the capturing worktree. Every capture records a local-only fingerprint of its active worktree, and the post-commit linker considers only thoughts captured in the committing worktree. Parallel checkouts can no longer claim each other's floating thoughts, either temporally or through a shared conversation. Rows captured before this release keep their historical eligibility.
  • The MCP server binds to one repository and worktree at startup and rejects cross-repository or sibling-worktree targets on every call, with filesystem-identity revalidation. One agent per worktree, one binding per server process.
  • Redaction plans are portable across worktrees. New plans use a v2 repository identity derived from the canonical common Git directory; historical v1 plans remain readable with their original, deliberately worktree-bound semantics. Plan files are now read with symlink, size, and duplicate/unknown-field rejection.
  • VS Code extension hardening. The extension requires a trusted workspace, ignores workspace-scoped binary path settings (a repository's .vscode/settings.json can no longer select the binaries the extension launches), binds exactly one repository folder per session, discovers repositories through VS Code's trusted Git binary, and launches CLI actions as argument-vector tasks instead of shell text.

Included components

  • cvc-core — Rust library for local storage, Git integration, policy enforcement, linking, and sync data structures.
  • cvc-cli — the cvc command-line interface.
  • cvc-mcp — MCP server for explicitly submitted interaction records and local history access.
  • cvc-lsp — language server used by editor integrations.
  • cvc-plugin — VS Code extension for the supported local VS Code chat-session workflow.
  • cvc-reviewer — client-side React reviewer for GitHub-hosted CVC data.
  • @volute_cvc/cvc-mcp — npm launcher for released CVC binaries.

Install

GitHub release assets

Once the full release workflow completes, download an archive and SHA256SUMS.txt from the v0.5.0 GitHub release. Verify the archive against that manifest before extracting it, then put cvc (or cvc.exe) on PATH. Each archive includes cvc, cvc-mcp, and cvc-lsp.

Platform Archive
Linux x86-64 cvc-x86_64-unknown-linux-gnu.tar.gz
macOS x86-64 cvc-x86_64-apple-darwin.tar.gz
macOS ARM64 cvc-aarch64-apple-darwin.tar.gz
Windows x86-64 cvc-x86_64-pc-windows-msvc.zip

Expected additional release assets are LICENSE, THIRD-PARTY-NOTICES.md, install.sh, and install.ps1. Each native archive and VSIX also includes the mechanically generated third-party notice file. The standalone installer assets default to v0.5.0, select the matching supported archive, and verify its checksum; set CVC_RELEASE_VERSION to an explicit valid release tag to override that version. Review a script before running it.

From any Git working tree — a primary checkout or a linked worktree — get started with:

cvc init
cvc status

VS Code Marketplace

After the full release workflow completes, Volute CVC (volute.cvc) is expected to be available from the VS Code Marketplace. The extension supports VS Code ^1.91.0 and uses the platform-specific bundled language server.

npm MCP launcher

After the full release workflow completes, the @volute_cvc/cvc-mcp launcher is expected to be available from npm:

npm install --global @volute_cvc/cvc-mcp@0.5.0

It provides cvc-mcp and cvc, downloads the matching release binary on first use, and verifies it against the release checksum manifest. Configure cvc-mcp in your MCP client as documented in the MCP setup guide.

Upgrade notes

  • The local database migrates additively on first open. A new nullable column records each capture's worktree origin. The migration is safe for mixed-version use: v0.4.2 binaries can still read and write a migrated database, and captures they write behave like pre-upgrade rows.
  • The sync wire format is unchanged. v0.5.0 reads formats v1–v5 and writes v5, byte-identical to v0.4.2 output; the worktree fingerprint is local-only and never projected. Cross-version push/pull interoperability is unaffected.
  • cvc run now refuses to run inside a bare repository instead of executing the command without capture. Run it from a worktree.
  • The MCP server must be started inside a repository worktree. It no longer creates state relative to an arbitrary working directory, and requests targeting a different repository or a sibling worktree fail with an explicit error.
  • The VS Code extension is inert in untrusted workspaces and multi-root workspaces (one repository folder per window is the supported mode), and machine-scoped binary path settings are now the only settings it honors for binary selection.
  • Capture acknowledgement, sharing consent, and auto-push remain per-repository CLI TTY challenges; linked worktrees share the repository's consent state. No consent boundary changed in this release.

Privacy and sharing

CVC is local-first, not local-only. Captures live under the repository's common Git directory in cvc/ and are private by default; linked worktrees share that private store. Remote publication is a separate, explicit action: sharing and sync can publish selected data through Git, while authentication and component-management commands can also use the network.

Review content before sharing and protect access to the repository and its common Git directory. Built-in scrubbing and .thoughtignore are defense in depth, not a guarantee: they can miss credentials, personal data, encoded values, or provider-specific formats. Once published to Git, content may remain in objects, clones, forks, reflogs, caches, and backups. Rotate an exposed credential first; local deletion and tombstones are suppression mechanisms, not guaranteed physical erasure.

Release security and hardening

  • Release tags must exactly match the Rust, VS Code extension, and npm package versions before publishing.
  • Release archives include a SHA-256 manifest; the installer and npm launcher verify the selected archive and reject unsafe redirects or archive members.
  • The workflow pins its GitHub Actions by full immutable Git object SHA, uses scoped job permissions, and will publish GitHub build provenance attestations for workflow assets. After downloading an asset, verify its provenance with GitHub CLI: gh attestation verify <asset> --repo meirka8/volute.
  • npm publishing is configured to use npm trusted publishing.

The same-release SHA-256 checksums are corruption/integrity checks, not independent signatures: because the archive and manifest are both hosted in the same GitHub release, they do not independently protect against a compromised release account. Download only from this repository and review installers before running them.

Known limitations

  • Linux ARM64 is not released. The shell installer, PowerShell installer, and npm launcher support the same platform matrix and reject unsupported platforms before downloading an asset.
  • Sharing is explicit. Capture acknowledgement, destination sharing consent, conversation sharing, manual publication, and auto-push are distinct consent boundaries. Auto-push is off by default.
  • Exact squash relinking expects a range to be observed from one worktree. Observing the same range from two different worktrees can create ambiguous evidence that conservatively blocks exact relinking for that range (#39); the affected thoughts remain floating rather than mislinked.
  • Very high concurrent capture volume can hit database lock contention. Simultaneous captures from many parallel worktrees may surface visible, fail-closed capture errors under contention (#40).
  • Hosted Reviewer requires deployment configuration. The default Reviewer mode is local PAT mode. Hosted Reviewer integration works only when a deployment explicitly sets VITE_HOSTED_MODE=true and provides VITE_PLATFORM_API_URL.

Trademarks and affiliation

GitHub, Copilot, and Visual Studio Code are trademarks of their respective owners. Volute is not affiliated with, sponsored by, or endorsed by GitHub, GitHub Copilot,...

Read more

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 04 Aug 09:26
v0.4.2
418ebc1

Volute CVC v0.4.2

Volute CVC v0.4.2 is the first public GitHub/Apache-2.0 OSS release of CVC (Cognitive Version Control). CVC keeps explicitly available AI-assisted development context alongside Git history: it uses a repository-local SQLite cache and can project content a user explicitly authorizes to refs/cvc/main.

This is not a claim to capture hidden model reasoning. CVC records only information exposed or supplied by its integrations; it neither retrieves hidden chain-of-thought nor promises a verbatim record of a black-box model's internal reasoning.

Full Changelog

Highlights

  • A public Apache-2.0 source release with release binaries, a VS Code extension, and an npm MCP launcher.
  • Local CVC workflows through cvc, including initialization, status, explicit command recording, local history, linking, and destination-specific sharing controls.
  • The supported VS Code workflow reads GitHub Copilot chat-session files stored locally by VS Code after the repository owner acknowledges local capture. This relies on VS Code/Copilot's locally stored, undocumented format, which may change.
  • cvc-mcp for MCP-compatible clients to submit concise interaction records and read local history. It cannot grant capture acknowledgement, sharing consent, or auto-push consent.
  • CVC Reviewer, a client-side React interface for GitHub-hosted CVC data. Its default local-PAT mode calls GitHub directly from the browser; hosted Reviewer mode is optional.

Included components

  • cvc-core — Rust library for local storage, Git integration, policy enforcement, linking, and sync data structures.
  • cvc-cli — the cvc command-line interface.
  • cvc-mcp — MCP server for explicitly submitted interaction records and local history access.
  • cvc-lsp — language server used by editor integrations.
  • cvc-plugin — VS Code extension for the supported local VS Code chat-session workflow.
  • cvc-reviewer — client-side React reviewer for GitHub-hosted CVC data.
  • @volute_cvc/cvc-mcp — npm launcher for released CVC binaries.

Install

GitHub release assets

Once the full release workflow completes, download an archive and SHA256SUMS.txt from the v0.4.2 GitHub release. Verify the archive against that manifest before extracting it, then put cvc (or cvc.exe) on PATH. Each archive includes cvc, cvc-mcp, and cvc-lsp.

Platform Archive
Linux x86-64 cvc-x86_64-unknown-linux-gnu.tar.gz
macOS x86-64 cvc-x86_64-apple-darwin.tar.gz
macOS ARM64 cvc-aarch64-apple-darwin.tar.gz
Windows x86-64 cvc-x86_64-pc-windows-msvc.zip

Expected additional release assets are LICENSE, THIRD-PARTY-NOTICES.md, install.sh, and install.ps1. Each native archive and VSIX also includes the mechanically generated third-party notice file. The standalone installer assets default to v0.4.2, select the matching supported archive, and verify its checksum; set CVC_RELEASE_VERSION to an explicit valid release tag to override that version. Review a script before running it.

From a Git working tree, get started with:

cvc init
cvc status

To record a command explicitly:

cvc run -- <command> [args...]
cvc log

VS Code Marketplace

After the full release workflow completes, Volute CVC (volute.cvc) is expected to be available from the VS Code Marketplace. The extension supports VS Code ^1.91.0 and uses the platform-specific bundled language server.

npm MCP launcher

After the full release workflow completes, the @volute_cvc/cvc-mcp launcher is expected to be available from npm:

npm install --global @volute_cvc/cvc-mcp@0.4.2

It provides cvc-mcp and cvc, downloads the matching release binary on first use, and verifies it against the release checksum manifest. Its published tarball includes THIRD-PARTY-NOTICES.md; the package stages an exact generated copy only while packing and cleans it afterward. Configure cvc-mcp in your MCP client as documented in the MCP setup guide.

Privacy and sharing

CVC is local-first, not local-only. Captures live under .git/cvc/ and are private by default. Remote publication is a separate, explicit action: sharing and sync can publish selected data through Git, while authentication and component-management commands can also use the network.

Review content before sharing and protect access to the repository and its .git directory. Built-in scrubbing and .thoughtignore are defense in depth, not a guarantee: they can miss credentials, personal data, encoded values, or provider-specific formats. Once published to Git, content may remain in objects, clones, forks, reflogs, caches, and backups. Rotate an exposed credential first; local deletion and tombstones are suppression mechanisms, not guaranteed physical erasure.

Release security and hardening

  • Release tags must exactly match the Rust, VS Code extension, and npm package versions before publishing.
  • Release archives include a SHA-256 manifest; the installer and npm launcher verify the selected archive and reject unsafe redirects or archive members.
  • The workflow pins its GitHub Actions by full immutable Git object SHA, uses scoped job permissions, and will publish GitHub build provenance attestations for workflow assets. After downloading an asset, verify its provenance with GitHub CLI: gh attestation verify <asset> --repo meirka8/volute.
  • npm publishing is configured to use npm trusted publishing.

The same-release SHA-256 checksums are corruption/integrity checks, not independent signatures: because the archive and manifest are both hosted in the same GitHub release, they do not independently protect against a compromised release account. Download only from this repository and review installers before running them.

Upgrade notes

From npm 0.4.1

Upgrade npm users to @volute_cvc/cvc-mcp@>=0.4.2. The npm 0.4.1 package carried UNLICENSED and legacy repository metadata; use >=0.4.2, which declares Apache-2.0 licensing, public npm publish configuration, and public Volute repository metadata. v0.4.2 is the first public GitHub release; do not treat v0.4.1 as a public GitHub release.

VS Code users should also ensure VS Code meets the new ^1.91.0 engine requirement.

Known limitations

  • Linux ARM64 is not released. The shell installer, PowerShell installer, and npm launcher support the same platform matrix and reject unsupported platforms before downloading an asset.
  • Sharing is explicit. Capture acknowledgement, destination sharing consent, conversation sharing, manual publication, and auto-push are distinct consent boundaries. Auto-push is off by default.
  • Hosted Reviewer requires deployment configuration. The default Reviewer mode is local PAT mode. Hosted Reviewer integration works only when a deployment explicitly sets VITE_HOSTED_MODE=true and provides VITE_PLATFORM_API_URL.

Trademarks and affiliation

GitHub, Copilot, and Visual Studio Code are trademarks of their respective owners. Volute is not affiliated with, sponsored by, or endorsed by GitHub, GitHub Copilot, or Visual Studio Code.

Learn more and contribute

Known issue: headless shell installer

In a process with no controlling TTY, install.sh can exit nonzero at its optional PATH prompt after the verified binaries were installed successfully. Interactive installs are unaffected. For unattended installation, use a native archive or the npm launcher, or add the displayed install directory to PATH manually. This is tracked in #16 and will be repaired forward; the signed v0.4.2 tag and assets will not be changed.