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