{"id":41513367,"url":"https://github.com/jfheinrich-eu/commit-wizard","last_synced_at":"2026-01-23T20:11:18.366Z","repository":{"id":324050539,"uuid":"1095316190","full_name":"jfheinrich-eu/commit-wizard","owner":"jfheinrich-eu","description":"🧙 AI-powered CLI tool for creating conventional commit messages with interactive TUI, smart file grouping, and integrated diff viewer","archived":false,"fork":false,"pushed_at":"2025-12-27T13:29:01.000Z","size":689,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-28T11:24:08.091Z","etag":null,"topics":["ai-powered","cli","code-quality","commit","conventional-commits","developer-tools","git-workflow","github-copilot","interactive","ratatui","rust","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jfheinrich-eu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-12T22:17:16.000Z","updated_at":"2025-12-26T22:07:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jfheinrich-eu/commit-wizard","commit_stats":null,"previous_names":["jfheinrich-eu/commit-wizard"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/jfheinrich-eu/commit-wizard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfheinrich-eu%2Fcommit-wizard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfheinrich-eu%2Fcommit-wizard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfheinrich-eu%2Fcommit-wizard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfheinrich-eu%2Fcommit-wizard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jfheinrich-eu","download_url":"https://codeload.github.com/jfheinrich-eu/commit-wizard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfheinrich-eu%2Fcommit-wizard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28699373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T17:25:48.045Z","status":"ssl_error","status_checked_at":"2026-01-23T17:25:47.153Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-powered","cli","code-quality","commit","conventional-commits","developer-tools","git-workflow","github-copilot","interactive","ratatui","rust","terminal","tui"],"created_at":"2026-01-23T20:11:13.313Z","updated_at":"2026-01-23T20:11:18.359Z","avatar_url":"https://github.com/jfheinrich-eu.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"docs/assets/logo.png\" height=200 alt=\"commit-wizard\"\u003e\n\u003c/div\u003e\n\n---\n\nA CLI tool to help create better commit messages.\n\n[![Latest Release](https://img.shields.io/github/v/release/jfheinrich-eu/commit-wizard?label=latest%20release)](https://github.com/jfheinrich-eu/commit-wizard/releases/latest)\n[![CodeQL](https://github.com/jfheinrich-eu/commit-wizard/actions/workflows/codeql.yml/badge.svg)](https://github.com/jfheinrich-eu/commit-wizard/actions/workflows/codeql.yml)\n[![Rust Tests](https://github.com/jfheinrich-eu/commit-wizard/actions/workflows/rust-tests.yml/badge.svg)](https://github.com/jfheinrich-eu/commit-wizard/actions/workflows/rust-tests.yml)\n[![codecov](https://codecov.io/gh/jfheinrich-eu/commit-wizard/branch/main/graph/badge.svg)](https://codecov.io/gh/jfheinrich-eu/commit-wizard)\n\n---\n\n- [Features](#features)\n- [Installation](#installation)\n  - [Quick Install](#quick-install)\n    - [Linux (any distro)](#linux-any-distro)\n    - [Debian/Ubuntu](#debianubuntu)\n    - [Fedora/RHEL/CentOS](#fedorarhelcentos)\n    - [Alpine Linux](#alpine-linux)\n    - [macOS](#macos)\n    - [From Source](#from-source)\n- [Usage](#usage)\n  - [Basic Usage](#basic-usage)\n  - [AI-Powered Mode](#ai-powered-mode)\n    - [Testing Your Setup](#testing-your-setup)\n  - [Keyboard Controls](#keyboard-controls)\n    - [Main Interface](#main-interface)\n    - [Editor Mode](#editor-mode)\n    - [Diff Viewer](#diff-viewer)\n  - [Advanced Options](#advanced-options)\n- [Development](#development)\n  - [Prerequisites](#prerequisites)\n  - [Dev Container (Recommended)](#dev-container-recommended)\n    - [Quick Start](#quick-start)\n  - [Building](#building)\n    - [Release Builds](#release-builds)\n  - [Running](#running)\n  - [Testing](#testing)\n  - [Linting](#linting)\n  - [Formatting](#formatting)\n  - [Pre-commit Hooks](#pre-commit-hooks)\n  - [Contributing](#contributing)\n  - [CI/CD Workflows](#cicd-workflows)\n- [License](#license)\n- [Credits](#credits)\n\n---\n\n# Features\n\n- ✅ **Interactive TUI**: Review and manage commit groups with keyboard navigation\n- ✅ **Conventional Commits**: Automatically follows the Conventional Commits specification\n- ✅ **Smart Grouping**: Intelligently groups files by commit type and scope\n- ✅ **AI-Powered**: Generate commit messages using GitHub Copilot (optional)\n- ✅ **Integrated Editor**: Built-in vim-style editor with keyboard shortcuts help\n- ✅ **Diff Viewer**: View file changes with syntax highlighting\n- ✅ **Ticket Detection**: Automatically extracts ticket numbers from branch names\n\n# Installation\n\n## Quick Install\n\n### Linux (any distro)\n\n```bash\nVERSION=\"0.1.0\"\ncurl -LO \"https://github.com/jfheinrich-eu/commit-wizard/releases/download/$VERSION/commit-wizard-$VERSION-linux-x86_64-musl.tar.gz\"\ntar xzf \"commit-wizard-$VERSION-linux-x86_64-musl.tar.gz\"\nsudo mv \"commit-wizard-$VERSION-linux-x86_64-musl/commit-wizard\" /usr/local/bin/\n```\n\n### Debian/Ubuntu\n\n```bash\nVERSION=\"0.1.0\"\nwget \"https://github.com/jfheinrich-eu/commit-wizard/releases/download/$VERSION/commit-wizard_${VERSION}_amd64.deb\"\nsudo dpkg -i \"commit-wizard_${VERSION}_amd64.deb\"\n```\n\n### Fedora/RHEL/CentOS\n\n```bash\nVERSION=\"0.1.0\"\nwget \"https://github.com/jfheinrich-eu/commit-wizard/releases/download/$VERSION/commit-wizard-${VERSION}-1.x86_64.rpm\"\nsudo dnf install \"./commit-wizard-${VERSION}-1.x86_64.rpm\"\n```\n\n### Alpine Linux\n\n```bash\nVERSION=\"0.1.0\"\nwget \"https://github.com/jfheinrich-eu/commit-wizard/releases/download/$VERSION/commit-wizard-${VERSION}-alpine-x86_64.tar.gz\"\nsudo tar xzf \"commit-wizard-${VERSION}-alpine-x86_64.tar.gz\" -C /\n```\n\n### macOS\n\n```bash\nVERSION=\"0.1.0\"\n\n# For Intel Macs (x86_64):\ncurl -LO \"https://github.com/jfheinrich-eu/commit-wizard/releases/download/$VERSION/commit-wizard-$VERSION-macos-x86_64.tar.gz\"\ntar xzf \"commit-wizard-$VERSION-macos-x86_64.tar.gz\"\nsudo mv \"commit-wizard-$VERSION-macos-x86_64/commit-wizard\" /usr/local/bin/\n\n# For Apple Silicon (M1/M2/M3 - aarch64):\ncurl -LO \"https://github.com/jfheinrich-eu/commit-wizard/releases/download/$VERSION/commit-wizard-$VERSION-macos-aarch64.tar.gz\"\ntar xzf \"commit-wizard-$VERSION-macos-aarch64.tar.gz\"\nsudo mv \"commit-wizard-$VERSION-macos-aarch64/commit-wizard\" /usr/local/bin/\n```\n\n### From Source\n\n```bash\ncargo install --path .\n```\n\n**📦 For detailed installation instructions**, see the [Installation Guide](docs/INSTALLATION.md).\n\n# Usage\n\n## Basic Usage\n\nYou don't need to stage your changes to run the wizard:\n\n```bash\ncommit-wizard\n```\n\n## AI-Powered Mode\n\nGenerate commit messages and group files intelligently using GitHub Copilot CLI:\n\n```bash\n# Prerequisites: GitHub CLI and Copilot CLI must be installed and authenticated\n# 1. Install GitHub Copilot CLI\n#    Choose one of the following methods:\n\n# Option A: Install with npm (recommended)\nnpm install -g @github/copilot\n\n# Option B: Install with Homebrew (macOS/Linux)\nbrew install copilot-cli\n\n# Option C: Install with WinGet (Windows)\nwinget install GitHub.Copilot\n\n# 2. Authenticate Copilot CLI\n#    Launch 'copilot' and follow the prompts:\ncopilot\n#    Then in the interactive session, type:\n#    /login\n\n# Run with AI enabled (default)\ncommit-wizard\n\n# Or explicitly disable AI and use heuristic grouping\ncommit-wizard --no-ai\n```\n\n**Note:** AI features are enabled by default. The tool will automatically fall back to heuristic grouping if Copilot CLI\nis not available or not authenticated.\n\n### Testing Your Setup\n\nBefore using AI features, verify your Copilot authentication:\n\n```bash\n# Quick test - will prompt for authentication if needed\ncopilot -p \"Hello, world\"\n\n# Or start the tool with verbose output to see AI availability\ncommit-wizard --verbose\n```\n\nThe tool will automatically check:\n\n- GitHub CLI installation\n- Copilot CLI availability\n- Authentication status\n- Interactive login if needed\n\n## Keyboard Controls\n\n### Main Interface\n\n- `↑`/`↓` or `k`/`j` - Navigate between commit groups\n- `Tab` / `Shift+Tab` - Switch between panels (Groups, Message, Files)\n- `e` - Edit commit message in integrated editor\n- `d` - View diff for selected file\n- `c` - Commit selected group\n- `C` - Commit all groups\n- `Ctrl+L` - Clear status message\n- `q` or `Esc` - Quit\n\n### Editor Mode\n\n- `?` - Toggle help popup (shows all vim commands)\n- `Ctrl+S` - Save and close editor\n- `Ctrl+C` - Cancel without saving\n- Vim-style navigation: `h`/`j`/`k`/`l`, `w`/`b`, `gg`/`G`, `0`/`$`\n- Vim-style editing: `i`/`a`/`o`, `x`/`dd`, `yy`/`p`, `u`/`Ctrl+R`\n\n### Diff Viewer\n\n- `↑`/`↓` or `k`/`j` - Scroll through diff\n- `Esc` - Close diff viewer\n\n## Advanced Options\n\n```bash\n# Specify repository path\ncommit-wizard --repo /path/to/repo\n\n# Enable verbose output\ncommit-wizard --verbose\n\n# Disable AI and use heuristic grouping only\ncommit-wizard --no-ai\n\n# Combine options\ncommit-wizard --verbose --repo /path/to/repo\n```\n\n# Development\n\n## Prerequisites\n\n- Rust 1.70 or later\n- Cargo\n\n## Dev Container (Recommended)\n\nThis project includes a VS Code dev container with all tools pre-configured:\n\n- ✅ Rust toolchain with clippy, rustfmt, rust-src\n- ✅ musl-tools for Alpine Linux static builds\n- ✅ x86_64-unknown-linux-musl target pre-installed\n- ✅ All cargo development tools\n- ✅ Git, GitHub CLI, and SSH/GPG support\n\nSee [.devcontainer/README.md](.devcontainer/README.md) for details.\n\n### Quick Start\n\n1. Open project in VS Code\n2. Press `Ctrl/Cmd + Shift + P`\n3. Select \"Dev Containers: Reopen in Container\"\n\n## Building\n\n```bash\n# Standard build\ncargo build\n\n# Release build\ncargo build --release\n# or\nmake release\n```\n\n### Release Builds\n\nThe project includes parametrized Makefile targets for creating release artifacts identical to those in CI/CD:\n\n```bash\n# Build for specific target\nmake build-target TARGET=x86_64-unknown-linux-musl PLATFORM_NAME=linux-x86_64-musl\n\n# Create release archive\nmake build-archive TARGET=x86_64-unknown-linux-musl PLATFORM_NAME=linux-x86_64-musl VERSION=1.0.0\n\n# Build all Linux packages (deb, rpm, alpine)\nmake build-all-packages VERSION=1.0.0\n```\n\nSee [docs/MAKEFILE_RELEASE_BUILDS.md](docs/MAKEFILE_RELEASE_BUILDS.md) for complete documentation.\n\n## Running\n\n```bash\ncargo run\n```\n\n## Testing\n\n```bash\ncargo test\n```\n\n## Linting\n\n```bash\ncargo clippy\n```\n\n## Formatting\n\n```bash\ncargo fmt\n```\n\n## Pre-commit Hooks\n\nThis project uses [pre-commit](https://pre-commit.com/) hooks to ensure code quality:\n\n```bash\n# Install hooks (one-time setup)\nmake pre-commit-install\n\n# Run manually on all files\nmake pre-commit-run\n```\n\n**What it checks:**\n\n- 🦀 Rust formatting (rustfmt) and linting (clippy)\n- 📦 Unused dependencies (cargo-machete)\n- 🔒 Security vulnerabilities (cargo-audit, gitleaks)\n- 📝 Markdown linting\n- ✅ Conventional commit messages\n- 🐚 Shell script validation\n\nSee [docs/PRE_COMMIT.md](docs/PRE_COMMIT.md) for detailed documentation.\n\n## Contributing\n\nPlease read [BRANCH_PROTECTION.md](.github/BRANCH_PROTECTION.md) for details on our branch protection rules and the\nprocess for submitting pull requests.\n\nAll changes must:\n\n- Go through a Pull Request (no direct pushes to main)\n- Receive approval from at least 1 Code Owner\n- Pass all CI checks (Rust Tests workflow)\n\n## CI/CD Workflows\n\n- **Rust Tests** - Runs formatting, clippy, build, and tests on every PR\n- **Automated Bot Review** - Automatically reviews PRs when all checks pass\n- **Dependabot** - Weekly automated dependency updates (Cargo \u0026 GitHub Actions)\n\n# License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n# Credits\n\n- [@jfheinrich](mailto:joerg@jfheinrich.eu): Initiator and code owner\n- With assistance of GitHub Copilot\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjfheinrich-eu%2Fcommit-wizard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjfheinrich-eu%2Fcommit-wizard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjfheinrich-eu%2Fcommit-wizard/lists"}