Releases: blak0p/git-courer
Releases · blak0p/git-courer
Release list
v2.12.0
v2.12.0 — This release improves LLM prompt quality with structured data and enhances dependency grouping using community detection for more logical commits.
Prompt Quality for LLMs
- Emoji-based annotations were ambiguous and lost structural context, forcing the model to interpret strings without clear distinction between before/after changes or code relationships — now structured JSON (
annotated_diff,call_graph,cfg) delivers precise information on what changed, where, and how it relates to the rest of the system.
Dependency Grouping
- The previous algorithm (BFS) grouped files by traversal order rather than actual dependency strength, creating artificial clusters between unrelated files — now Louvain community detection uses modularity to identify natural groups based on real dependency weight, resulting in more coherent and logical commits.
Changelog
- 1deefbf fix: unborn-first-commit — soporte para repos recién inicializados (#207)
- 6438668 refactor: granular deny for 23 git subcommands, allow for uncovered ones (#209)
Full Changelog: v2.10.1...v2.12.0
v2.11.0
v2.11.0 — This release overhauls Git permission handling with a granular policy engine, adds native support for Pi environments, and fixes critical state calculation bugs in newly initialized repositories.
Advanced Git Permission Management
- Replaced the rigid all-or-nothing git command blocking with a flexible three-tier model (allow/ask/deny) to enable agents to perform essential setup tasks like
git initorgit configautonomously, while preserving security by requiring explicit confirmation for sensitive operations or redirecting them to MCP tools. - Fixed a critical policy evaluation bug where Go’s alphabetical map ordering inadvertently overrode specific permissions with general rules due to incorrect priority handling; implemented an ordered JSON constructor to ensure that "last match wins" logic correctly applies the most specific permission rule first.
Environment Support and Compatibility
- Integrated native support for Pi environments by automatically detecting the
@pi-lab/permissionspackage, eliminating the need for manual configuration of traditional hooks in these workspaces. - Resolved crashes in "unborn" repositories (those without initial commits) by properly handling null values during state calculations (
ahead/behind), preventing failures when querying history on freshly initialized projects.
Changelog
- 1deefbf fix: unborn-first-commit — soporte para repos recién inicializados (#207)
- 6438668 refactor: granular deny for 23 git subcommands, allow for uncovered ones (#209)
Full Changelog: v2.10.1...v2.11.0
v2.10.1
v2.10.1 — This release completely rewrites documentation to fix critical discrepancies, hardens security permissions in git-courer, and optimizes token consumption by eliminating duplicate diff outputs.
Documentation
- Existing documentation had over 31 inconsistencies with the actual code and omitted ~20 features — a complete rewrite now covers architecture, commands, MCP clients, hooks (new), troubleshooting, security, tests, and models to ensure accuracy and completeness.
Security and Permissions
- The previous permission model grouped all commands into a single container, creating gaps where dangerous operations like direct shell access lacked explicit blocking — dedicated deny keys for shell access have been added, and the OpenCode policy now directly denies git commands instead of prompting.
- Agent detection (OpenCode, Codex, Claude Code, Antigravity) was inconsistent or missing — detection is now unified via JSON keys in stdin, and output formats for Codex and Claude Code are corrected to properly emit
permissionDecision: "deny"instead of additional context.
Performance and Efficiency
- The system previously emitted both raw and annotated diffs simultaneously, unnecessarily doubling token costs (~2x) without added value — now the diff field is only emitted if the annotated version is empty.
Session Stability
- Discarding an active session left a dangling
activeSessionpointer to a non-existent worktree, causing failures in subsequent MCP tool calls —handleDiscard()now correctly cleans up the active session following the same pattern ashandleFinish().
Changelog
- c7b30e9 chore(deps): bump github.com/BurntSushi/toml from 1.4.0 to 1.6.0 (#173)
- 1acddf4 chore(deps): bump github.com/mark3labs/mcp-go from 0.47.0 to 0.55.1 (#174)
- 0b683fa feat(backup): rewrite PruneBackups to reachability+age and add auto-prune gate (#187)
- c622da1 feat(branch): add from param to branch CREATE + clarify sync PULL docs (#190)
- 35291fe fix(session): clear activeSession pointer on discard to prevent MCP server lockup (#201)
- b5272fe fix: deleted files produce
delete:commit type instead ofrefactor:(#188) - 2dc22a0 fix: omit raw diff when annotated content present (#203)
- 3a2753c fix: refactor git-courer permissions and update hook event tracking (#196)
- 69e6d1b fix: support multi-agent detection and deny git (#202)
Full Changelog: v2.9.0...v2.10.1
v2.10.0
v2.10.0 — This release corrects backup pruning logic to prevent data loss, separates read-only command optimizations from storage management, and refines commit classification for accurate history tracking.
Backup Overhead Reduction
- Removed automatic backup creation for 7 commands (PUSH, FETCH, branch CREATE,
stage RM/RESTORE, and stash SAVE/POP) where backup protection was unnecessary
because the operation is either reversible natively (FETCH, branch CREATE) or
already guarded by git-courers confirmation gates (stage, stash, PUSH). This
eliminates I/O overhead and storage churn without sacrificing safety.
Read-Only Command Optimization
- Removed automatic backup creation for 7 read-only commands (
PUSH,FETCH,branch CREATE,stage RM/RESTORE, andstash SAVE/POP) to drastically reduce redundant network operations like unnecessary PUSH or FETCH cycles during routine repository maintenance, separating this storage efficiency gain from the pruning logic.
Commit Classification Logic Refinement
- Fixed misclassification of file deletions as
refactor:by implementing higher-weight logic for removal operations; commits that delete files now correctly generatedelete:tags to ensure history accurately reflects operational intent rather than structural changes.
Security Hardening and Agent Control
- Enforced a strict deny policy for raw Git commands executed via Bash hooks to prevent agents from corrupting repository state outside of managed worktrees, blocking unauthorized direct execution that could bypass safety checks.
- Corrected the
Hook eventhandler to properly identify user prompts (UserPromptSubmit) before triggering security verifications, ensuring critical actions are validated only after explicit human intent is confirmed.
Documentation Accuracy and Reference Updates
- Rewrote the manual to eliminate discrepancies between implementation and guides: corrected descriptions of non-existent modes, added support for filters in
branchcommands, clarified thatfinishis strictly a cleanup operation, and updated Go version requirements while excluding test files from AI audits.
Changelog
- c7b30e9 chore(deps): bump github.com/BurntSushi/toml from 1.4.0 to 1.6.0 (#173)
- 1acddf4 chore(deps): bump github.com/mark3labs/mcp-go from 0.47.0 to 0.55.1 (#174)
- 0b683fa feat(backup): rewrite PruneBackups to reachability+age and add auto-prune gate (#187)
- c622da1 feat(branch): add from param to branch CREATE + clarify sync PULL docs (#190)
- b5272fe fix: deleted files produce
delete:commit type instead ofrefactor:(#188) - 7ce5f44 fix: refactor git-courer permissions and update hook event tracking
Full Changelog: v2.9.0...v2.10.0
v2.9.0
v2.9.0 — This release introduces a dual-mode execution strategy to provide flexibility between automated AI generation and manual control.
Developer Experience
- Introduced an LLM enablement toggle to allow developers to switch between two distinct operational modes, providing a way to manage costs or work in offline environments:
| Mode | Behavior | Purpose |
|---|---|---|
| LLM Mode | The release cli utilizes local LLMs to automatically generate intelligent commit messages and release notes. | Automates documentation workflows using AI intelligence. |
| Manual Mode | The agent performs commit operations using existing messages, while the release feature is deactivated. | Provides a fallback for when AI features are unavailable, preventing broken or empty automated outputs. |
Changelog
Full Changelog: v2.8.0...v2.9.0
v2.8.0
v2.8.0 — This update introduces an advanced session management system using git worktrees to enable parallel workflows and improves the robustness of agent execution rules.
Session Management and Isolation
- Implemented a system of isolated sessions using git worktrees to prevent multiple agents from interfering with each other by avoiding conflicts in the same working directory; this includes a full lifecycle with the ability to list sessions, select existing environments, and perform automatic cleanup (session finish) via slugified identifiers.
- Integrated the sessionGit wrapper directly into the MCP server, allowing Git operations to be aware of the current session context through automatic directory redirection.
Developer Experience and Configuration
- Improved agent instruction precision by refining golden rules, now prohibiting work in the repository root to enforce strict workspace isolation.
- Simplified client configuration by implementing automatic injection of prompt rule blocks into configuration files, ensuring the agent always follows updated guidelines.
- Optimized the TUI MCP initial configuration process by fixing a bug where clients were not being configured correctly during the setup step.
System Robustness and Refactoring
- Refactored the agent instruction structure, removing unnecessary tool maps and simplifying rules to improve model interpretability.
- Improved file cleanup in opencode using robust base names, preventing errors when encountering complex paths.
Changelog
- 5e1f5f4 Merge branch 'feature/session-finish'
- f9c9378 Merge branch 'git-courer-rules-rewrite'
- 5de28b1 Merge branch 'session-redirect-2'
- b63ea8b feat(session): PR 1/3 — Foundation (port interface + adapter + mock)
- 95f0933 feat(session): isolated git worktrees for parallel agent work (session start)
- 8c84bd5 feat: add session select, status list mode, and finish cleanup
- 204d59f feat: add sessionGit wrapper implementing ports.Git with worktree redirect
- 01b88b6 feat: add workDirFn to ExecAdapter for session-aware git operations
- c717001 feat: centralize metadata directory resolution logic
- 51f993c feat: emphasize workspace isolation and forbid working in repository root in golden rules
- c3965ab feat: implement full session lifecycle management and persistence
- b29c5f1 feat: implement slugified session IDs and custom branch support
- 02feae1 feat: inject prompt rules blocks in client config files
- ff05f1c feat: refine golden rules to enforce session start and use explicit git-courer tool commands
- e767736 feat: session finish no longer merges or deletes branches (#181)
- 7e37c09 feat: wire sessionGit wrapper into MCP server
- f0a2202 fix: TUI MCP setup step never configured clients
- e2dc944 fix: add 'git-courer setup' alias and fix install.sh command
- f4ae51f fix: allow interactive feedback editing during changelog regeneration
- c8ad1f7 fix: ignore codegraph index directory
- 0b25c4b fix: make opencode GIT_COURER.md cleanup robust using base name
- b8e34a9 fix: refactor and simplify golden rules instructions
- 814fdfb fix: rename PreInvocation to UserPromptSubmit in mcp_config
- 7199f1d fix: replace custom message prompt with guidance editor
- e09d812 fix: session finish no longer tries git switch main inside worktree
- 36d71b0 refactor: remove tool map from GIT_COURER.md, keep only golden rules
Full Changelog: v2.7.0...v2.8.0
v2.7.0
v2.7.0 — This release introduces an interactive release assistant and enhanced changelog formatting to streamline the deployment workflow.
Developer Experience
- Replaced a fragmented manual command sequence with an interactive release assistant; instead of remembering complex flags like
--tagor--message, runninggit-courer releasenow provides a guided, step-by-step workflow for versioning and automated changelog generation. - Upgraded the changelog preview from plain text to an enriched terminal interface with colors and structured formatting, making it significantly easier to audit changes before finalizing a release.
- Introduced iterative regeneration and editing capabilities; developers no longer have to settle for imperfect AI outputs because they can now request real-time rewrites or launch the changelog directly in their system editor for manual fine-tuning.
- Refactored the output logic using a dedicated command writer instead of direct
stdoutaccess; this architectural change prevents state loss duringedit (e)andregenerate (r)operations, ensuring that file paths and buffers remain consistent throughout the session.
Changelog Capabilities
- Expanded changelog template support to include Markdown tables, enabling developers to present structured comparisons within their release notes.
| Feature | Old Format | New Format |
|---|---|---|
| Data Structure | Unstructured text/lists | Structured Markdown Tables |
| Readability | Hard to compare versions | Clear side-by-side comparisons |
| Use Case | Simple change logs | Complex "Old vs. New" migrations |
Changelog
- 282ec48 feat: interactive release wizard with glamour preview and editor support (#170)
- f52510c fix: release wizard regenerate (r) and edit (e) actions lose state (#172)
- 36cc8b6 fix: update release prompt key to use y/n convention
Full Changelog: v2.6.0...v2.7.0
v2.6.0
v2.6.0 — This release introduces advanced hook extensibility, enhanced configuration recovery, and expanded support for MCP clients and Claude Code integrations.
Extensibility & Hooks
- Introduced a new HooksConfig architecture and lifecycle management—including
installHook,removeHook, andhooksStatus—to allow developers to programmatically extend the installers behavior via Codex hooks. - Implemented support for Antigravity pre-invocation hooks, enabling automated system checks or setup tasks to run immediately before a command is executed.
- Automated the hook installation process and added stdin support to streamline how external tools interact with the system during execution.
Configuration & State Management
- Added support for TOML configuration formats for MCP clients, providing developers with a more flexible and human-readable way to manage client settings.
- Implemented a new
restoresubcommand and TUI configuration recovery to ensure that user interface preferences and settings are not lost during system resets or crashes. - Refined the state transition logic for MCP and LLM configurations to prevent inconsistent states when updating model parameters or tool definitions.
Developer Experience & Tooling
- Integrated support for Claude Code hooks and updated diagnostic reporting to provide clearer feedback when integration issues arise.
- Enhanced the Global Agent Policy infrastructure (v2.6.0) to provide a shared foundation for standardized policy enforcement across the ecosystem.
- Improved the accuracy of the Git classifier and system doctor diagnostics to ensure more reliable detection of environment misconfigurations.
Changelog
- 52282ca feat: Antigravity CLI integration — hooks, permissions, pre-invocation-hook (#169)
- d965e04 feat: OpenCode Global Agent Policy (SDD 4)
- 8dbcf66 feat: SDD 2 — Codex CLI hooks (PreToolUse, SessionStart, SubagentStart) (#165)
- f6f28b6 feat: add shared infrastructure for v2.6.0 Global Agent Policy (SDD 1) (#157)
- a502bef feat: integrate Claude Code hook support and update diagnostics (SDD 3 — PR 1/2)
- 3553bac fix: remove 10 IDE/obsolete MCP client entries from MCPClients() (#156)
Full Changelog: v2.5.1...v2.6.0
v2.5.1
v2.5.1 — This release optimizes the MCP toolset for better LLM reliability and cleans up legacy code to improve system maintainability.
MCP Tooling & Agent Intelligence
- Reorganized the MCP tools from 22 down to 11 (Unit 1) to prevent agent confusion and invocation errors; the new structure uses predictable
git-courer_<verb>naming conventions and implements safety gates (such as dry-run, confirmation, and conflict detection) to ensure the LLM operates safely.
Codebase Maintenance & Refactoring
- Removed stackID and stackBranch from the codebase to eliminate dead code that was causing confusion; these fields were remnants of a stacked PR feature that was never utilized because git-courer does not configure a BaseBranch.
- Refactored the commit store and processing logic to remove stack metadata, simplifying the internal data model.
- Improved documentation and clarity for the why parameter and DescCommit to ensure more accurate commit descriptions.
Developer Experience
- Added an include_untracked flag to the diff functionality, allowing developers to see new (untracked) files alongside modified ones in a single command, eliminating the need for multiple separate checks.
Changelog
- 31c8e2c Feature/v2.5.1b (#149)
- 6073acf Revise roadmap with updated release information
- 1af6525 chore eliminar metadadot
- 4ae3b53 feat(diff): add include_untracked param to show untracked files in diff output
- 9e532fe refactor: remove dead stackID/stackBranch fields (#150)
Full Changelog: v2.5.0...v2.5.1
v2.5.0
v2.5.0 — This release moves metadata storage into the Git internal directory and implements custom refs to ensure changelog history survives squash merges.
Git Infrastructure & Storage
- Migrated all git-courer metadata from the
.git-courer/directory to the private.git/git-courer/area to prevent project clutter and ensure metadata no longer appears ingit status - Implemented custom refs (
refs/courer/<branch>) and sidecar synchronization to prevent loss of commit history during squash merges, ensuring that the changelog remains intact across clones - Developed an automatic metadata migration system within
ReleaseService.Prepare()to seamlessly transition legacy data to the new storage structure without requiring manual user intervention - Refactored the Git adapter and commit retrieval logic to utilize the new ref-based architecture and updated storage paths
Changelog
- 1247e77 feat: metadata-compartida tracker — shared metadata via .git/git-courer/ + refs (#130)
- 23c2180 feat: rewrite landing page with better structure, larger font, and focus on commit format + memory + release
Full Changelog: v2.4.0...v2.5.0