Skip to content

0.9.4 — 2026-06-05

Choose a tag to compare

@github-actions github-actions released this 06 Jun 05:56
64746e5

Release Notes

Added

  • Per-invocation shim opt-out via GIT_PRISM_PASSTHROUGH / GIT_PRISM_DISABLE. Setting either env var to a truthy value (1 or case-insensitive true) makes the shim exec the real git / gh immediately — before telemetry::init_quiet() and before command classification — with near-zero added latency and no recording. This replaces the all-or-nothing PATH hack for agent workflows that shell git heavily in throwaway tmp repos, where per-call cold-start and telemetry overhead is unwanted and recording ephemeral repos is undesirable anyway. The opt-out exec is recursion-safe (it resolves and runs the real binary, not the shim symlink, even when the shim is first on PATH). (#362)
  • git-prism serve now self-terminates when its launching session dies. The MCP serve daemon polls its parent pid every 5 seconds and exits when it detects it has been reparented to init/launchd (ppid == 1) — the signal that the Claude Code session that spawned it exited without closing stdin. This prevents the orphaned-daemon accumulation observed in shim-heavy setups (multiple serve processes lingering for hours to days). The README now documents the shim-vs-MCP distinction and notes that shim-only users can drop the serve registration entirely (claude mcp remove git-prism). (#363)
  • serve now logs its lifecycle to stderr. A pid-tagged "started" line, an "orphan-watchdog active; polling every 5s" line (Unix), and a "stdin closed; shutting down cleanly" line on graceful exit let an operator reconstruct a daemon's full lifetime (started → [watchdog active] → orphaned-exit or clean shutdown) from stderr alone — useful when diagnosing where a serve process went. (#371)

Fixed

  • The manifest / history / snapshot / context CLI subcommands no longer panic when the current directory is unavailable. They resolved the default repo path with std::env::current_dir().expect(...), which panicked with a backtrace if the cwd was deleted or inaccessible (a real case for the shim running in agent-driven throwaway tmp repos). They now return a clean anyhow error instead. (#364)
  • The shim's structured-output path (git diff / log / show / blame) no longer stalls on an unreachable OpenTelemetry collector. The structured path flushed telemetry with an unbounded force_flush(), and main then dropped the TelemetryGuard, whose Drop ran unbounded shutdown() calls — so a single git diff could block for minutes (≈10 s per call was reproduced against a black-hole endpoint: 5 s tracer shutdown + 5 s meter shutdown). Both the explicit flush and the Drop-path shutdown are now time-bounded (500 ms each), mirroring the already-bounded passthrough path; a saturated or unreachable collector can no longer stall an intercepted git command. Telemetry still delivers normally when the collector is responsive (proven by an end-to-end data-loss guard against a live capture server). (#361)

Install git-prism 0.9.4

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mikelane/git-prism/releases/download/v0.9.4/git-prism-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/mikelane/git-prism/releases/download/v0.9.4/git-prism-installer.ps1 | iex"

Install prebuilt binaries via Homebrew

brew install mikelane/tap/git-prism

Download git-prism 0.9.4

File Platform Checksum
git-prism-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
git-prism-x86_64-apple-darwin.tar.xz Intel macOS checksum
git-prism-x86_64-pc-windows-msvc.zip x64 Windows checksum
git-prism-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
git-prism-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum