{"id":23468364,"url":"https://github.com/dikkadev/turbocommit","last_synced_at":"2025-04-05T05:08:49.263Z","repository":{"id":114578067,"uuid":"609947880","full_name":"dikkadev/turboCommit","owner":"dikkadev","description":"turbocommit is a Rust-based CLI tool that generates high-quality git commit messages in accordance with the Conventional Commits specification, using OpenAI API compatible service. It is easy to use and a cost-effective way to keep git commit history at a higher quality, helping developers stay on track with their work.","archived":false,"fork":false,"pushed_at":"2025-03-15T16:44:41.000Z","size":429,"stargazers_count":57,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T12:12:32.652Z","etag":null,"topics":[],"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/dikkadev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["Sett17"]}},"created_at":"2023-03-05T17:55:41.000Z","updated_at":"2025-03-19T11:15:37.000Z","dependencies_parsed_at":"2023-05-25T12:00:43.500Z","dependency_job_id":"24549ca9-0bb4-430a-8cf5-7bda740bdcdc","html_url":"https://github.com/dikkadev/turboCommit","commit_stats":{"total_commits":106,"total_committers":2,"mean_commits":53.0,"dds":"0.018867924528301883","last_synced_commit":"bf8d3ba5edfe581ba579790f1e73038795153ff8"},"previous_names":["dikkadev/turbocommit"],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dikkadev%2FturboCommit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dikkadev%2FturboCommit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dikkadev%2FturboCommit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dikkadev%2FturboCommit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dikkadev","download_url":"https://codeload.github.com/dikkadev/turboCommit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247289428,"owners_count":20914464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-12-24T13:52:51.850Z","updated_at":"2025-04-05T05:08:49.249Z","avatar_url":"https://github.com/dikkadev.png","language":"Rust","funding_links":["https://github.com/sponsors/Sett17"],"categories":[],"sub_categories":[],"readme":"# turboCommit\n\n![Crates.io](https://img.shields.io/crates/v/turbocommit)\n![Crates.io](https://img.shields.io/crates/d/turbocommit)\n![Crates.io](https://img.shields.io/crates/l/turbocommit)\n\nA powerful CLI tool that leverages OpenAI's GPT models to generate high-quality, conventional commit messages from your staged changes.\n\n## Features\n\n- 🤖 Uses OpenAI's GPT models to analyze your staged changes\n- 📝 Generates conventional commit messages that follow best practices\n- 🎯 Interactive selection from multiple commit message suggestions\n- ✏️ Edit messages directly or request AI revisions\n- 🧠 Advanced reasoning mode for enhanced AI interactions\n- 🔍 Comprehensive debugging capabilities with file or stdout logging\n- ⚡ Streaming responses for real-time feedback\n- 🔄 Auto-update checks to keep you on the latest version\n- 🎨 Beautiful terminal UI with color-coded output\n- ⚙️ Configurable settings via YAML config file\n\n## Installation\n\n```bash\ncargo install turbocommit\n```\n\nPro tip: Add an alias to your shell configuration for quicker access:\n```bash\n# Add to your .bashrc, .zshrc, etc.\nalias tc='turbocommit'\n```\n\n## Usage\n\n1. Stage your changes:\n```bash\ngit add .  # or stage specific files\n```\n\n2. Generate commit messages:\n```bash\nturbocommit  # or 'tc' if you set up the alias\n```\n\nAfter generating commit messages, you can:\n- Select your preferred message from multiple suggestions\n- Edit the message directly before committing\n- Request AI revisions with additional context or requirements\n- Commit the message once you're satisfied\n\n### Options\n\n- `-n \u003cnumber\u003e` - Number of commit message suggestions to generate\n- `-t \u003ctemperature\u003e` - Temperature for GPT model (0.0 to 2.0) (no effect in reasoning mode)\n- `-f \u003cfrequency_penalty\u003e` - Frequency penalty (-2.0 to 2.0)\n- `-m \u003cmodel\u003e` - Specify the GPT model to use\n- `-r, --enable-reasoning` - Enable support for models with reasoning capabilities (like o-series)\n- `--reasoning-effort \u003clevel\u003e` - Set reasoning effort for supported models (low/medium/high, default: medium)\n- `-d, --debug` - Show basic debug info in console\n- `--debug-file \u003cpath\u003e` - Write detailed debug logs to file (use '-' for stdout)\n- `--auto-commit` - Automatically commit with the generated message\n- `--amend` - Amend the last commit with the generated message (useful with Git hooks)\n- `--api-key \u003ckey\u003e` - Provide API key directly\n- `--api-endpoint \u003curl\u003e` - Custom API endpoint URL\n- `-p, --print-once` - Disable streaming output\n\n#### Reasoning Mode\nWhen using models that support reasoning capabilities (like OpenAI's o-series), this mode enables their built-in reasoning features. These models are specifically designed to analyze code changes and generate commit messages with their own reasoning process.\n\nExample usage:\n```bash\nturbocommit -r -m o3-mini -n 1  # Enable reasoning mode with default effort\nturbocommit -r --reasoning-effort high -m o3-mini -n 1  # Specify reasoning effort\n```\n\n#### Debugging\nDebug output helps troubleshoot API interactions:\n```bash\nturbocommit -d  # Basic info to console\nturbocommit --debug-file debug.log  # Detailed logs to file\nturbocommit --debug-file -  # Detailed logs to stdout\n```\n\nThe debug logs include:\n- Request details (model, tokens, parameters)\n- API responses and errors\n- Timing information\n- Full request/response JSON (in file mode)\n\n### Model-Specific Notes\n\nDifferent models have different capabilities and limitations:\n\n#### O-Series Models (e.g., o3-mini)\n- Support reasoning mode\n- Do not support temperature/frequency parameters\n- May not support multiple choices (`-n`)\n- Optimized for specific tasks\n\n#### Standard GPT Models\n- Support all parameters\n- Multiple choices available\n- Temperature and frequency tuning\n- Standard reasoning capabilities\n\nFor more options, run:\n```bash\nturbocommit --help\n```\n\n## Configuration\n\nturboCommit creates a config file at `~/.turbocommit.yaml` on first run. You can customize:\n\n- Default model\n- API endpoint\n- Temperature and frequency penalty\n- Number of suggestions\n- System message prompt\n- Auto-update checks\n- Reasoning mode defaults\n- And more!\n\nExample configuration:\n```yaml\nmodel: \"gpt-4\"\ndefault_temperature: 1.0\ndefault_frequency_penalty: 0.0\ndefault_number_of_choices: 3\nenable_reasoning: true\nreasoning_effort: \"medium\"\ndisable_print_as_stream: false\ndisable_auto_update_check: false\n```\n\n### Multiple Config Files\n\nYou can maintain multiple configuration files for different use cases (e.g., different providers or environments) and specify which one to use with the `-c` or `--config` option:\n\n```bash\n# Use a local config file\nturbocommit -c ./local-config.yaml\n\n# Use a different provider's config\nturbocommit -c ~/.turbocommit-azure.yaml\n\n# Use the default config\nturbocommit  # uses ~/.turbocommit.yaml\n```\n\nEach config file follows the same format as shown above. This allows you to easily switch between different configurations without modifying the default config file.\n\n## Contributing\n\nContributions are welcome! Feel free to open issues and pull requests.\n\n## License\n\nLicensed under MIT - see the [LICENSE](LICENSE) file for details.\n\n### Using turboCommit with --amend\n\nThe `--amend` option allows you to change the commit message of your last commit. This is useful when:\n- You want to improve the message of your last commit\n- You want to fix a typo in your commit message\n- You want to add more context to your commit message\n\nUsage:\n```bash\n# First, make sure you have no staged changes\ngit status  # Should show no staged changes\n\n# Then use --amend to improve the last commit's message\nturbocommit --amend  # This will analyze the last commit's changes and suggest a new message\n```\n\nImportant Notes:\n- When using `--amend`, you must not have any staged changes\n- The tool will analyze only the changes from your last commit\n- If you want to include new changes in the amended commit:\n  1. Either commit them first normally, then amend that commit\n  2. Or use `git commit --amend` manually to include them\n\nYou can also combine this with auto-commit for a quick message update:\n```bash\nturbocommit --amend --auto-commit  # Automatically amend with the first generated message\n```\n\n### Using turboCommit with Git Hooks\n\nIf your project uses Git hooks (e.g., linters, formatters), here's how to use turboCommit effectively:\n\n1. Stage and commit your changes normally:\n```bash\ngit add .\nturbocommit\n```\n\n2. If hooks fail:\n   - Fix the issues reported by hooks\n   - Stage the fixed files (`git add .`)\n   - Commit again\n\n3. If you want to improve the commit message after all hooks pass:\n```bash\n# Make sure you have no staged changes\ngit status\n\n# Then improve the message\nturbocommit --amend  # This will analyze the commit and suggest a better message\n```\n\nThis workflow ensures that:\n- Code quality checks run before the commit\n- You can improve the commit message after all checks pass\n- The final commit message is high-quality and descriptive","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdikkadev%2Fturbocommit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdikkadev%2Fturbocommit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdikkadev%2Fturbocommit/lists"}