You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
a48ff50 Refactor AI message generation and improve file selection handling
14834aa Refactor command flags to use shorthand options in gen_cm.go
64a1bf1 Refactor commit message generation command to include loading spinner; update dependencies in go.mod and go.sum
1634c3f Refactor git clone URL in CONTRIBUTING.md and add password print statement in cmd/root.go, update go.mod with go-diff dependency, and implement diff safety check function in internal/ai/ai.go.
e6a71af Refactor git.PushChanges to git.Push and update git.Push usage in cmd/gen_cm.go. Update checksums for github.com/atotto/clipboard and add github.com/sahilm/fuzzy to go.sum. Add functions GetChangedFiles, GetChangesForFiles, Commit, and Push to internal/git
5030538 Refactor styles in file selector to use shared styles for consistency
ce0c48e Refactor(ai): Standardize AI model parameters and optimize message compression Standardize maxToken and temperature parameters using constants for AI model calls. Introduce whitespace compression for diff and status messages to optimize token usage. Improve error handling for context deadlines in CallOllama.
9bb7803 Remove AI commit flow and related components; add suggest command for AI-generated commit messages
af81ca7 Remove debug print statement from GetChangesForFiles function
2a827e2 Remove unused files and directories, including .gitignore, LICENSE, README.md, Makefile, and AI-related code, to streamline the project structure.
52bcfd9 Remove unused screenshot from assets to streamline project resources.
97fe2de Revert "Refactor git clone URL in CONTRIBUTING.md and add password print statement in cmd/root.go, update go.mod with go-diff dependency, and implement diff safety check function in internal/ai/ai.go."
50c5803 Update Makefile with install target and move binary to /usr/local/bin/
90e2242 Update README with Gitai branding and features, and add contributing guidelines and license information.
71e39ec Update README with new features, aliases, and build instructions; add interactive loader section; update shorthand flags for convenience; status: README.md modified.
5e95686docs(README): Add Jonathan Artback to authors list
52f9279docs(readme): add Homebrew installation and release instructions - Add Homebrew installation instructions for macOS and Linux. - Document the release process with GoReleaser and GitHub Actions.
7c7bb6efix(release): Add macOS quarantine workaround for Homebrew installs - Add `post-install` hook to `.goreleaser.yaml` for Homebrew casks. - This hook removes the `com.apple.quarantine` attribute from the `gitai` binary on macOS. - Bump application version to `0.1.1`.
238ae91 build(goreleaser): update config to use plural fields for formats and binaries - Migrate format to formats array. - Migrate binary to binaries array.
ee3736b chore(assets): move demo.tape, add CI automation, and ignore temp files
8a34334 chore(ci): Update golangci-lint configuration and workflow
f9d6e65 chore(deps): update and tidy Go modules * Remove unused gopkg.in/yaml.v3. * Add new dependencies for heredoc, go-udiff, charmbracelet/x/exp/golden, and kylelemons/godebug. * Synchronize go.mod and go.sum.
4aa2dce chore(docs, README): update Gemini CLI installation instructions and personalized keywords setup. Use dot list for changes.
3a408c4 chore(internal/tui): update AI message handling logic. - Include security warning message handling. - Add safety check for code differences. - Display warning for vulnerable information in files. - Prompt user for confirmation before continuing.
762b5bc chore(internal/tui): update AI message model fields - Update savedDiff and savedStatus fields in AIMessageModel - savedDiff and savedStatus now have explicit spacing
fc7e119 chore(security, internal): update sensitive data handling - Remove unused 'api_key' variable - Update CheckDiffSafety function to not print 'api_key' value
9ba8ab7 chore: setup goreleaser for semantic versioning
3cf783b ci(auto-tag): Configure checkout with token and full history - Add token to actions/checkout for authentication. - Set fetch-depth: 0 to fetch full git history.
152a64c ci(github-actions): use TAP_GITHUB_TOKEN for auto-tag workflow * Use TAP_GITHUB_TOKEN for checkout action. * Use TAP_GITHUB_TOKEN for pushing tags.
26cd30f ci(goreleaser): Migrate Homebrew distribution to Cask - Update .goreleaser.yaml to use homebrew_casks. - Changed Homebrew repository from huseynovvusal/homebrew-tap to artback/homebrew-gitai. - Added url.verified and binary fields for Homebrew Cask. - Updated maintainer name in nfpms section.
3aab945 ci(release): Add auto-tag workflow and version file - Add GitHub Actions workflow for automatic tagging on releases. - Introduce VERSION file for release management.
3ed01bb ci(workflow): update goreleaser action and version * Update goreleaser/goreleaser-action from v5 to v6. * Update goreleaser version from latest to ~> v2.
d9c3c72 ci(workflows): Prefer GH_PAT for GitHub Actions tokens - Update workflow configurations to prioritize secrets.GH_PAT. - Fallback to secrets.GITHUB_TOKEN or secrets.TAP_GITHUB_TOKEN if GH_PAT is not set. - Improves consistency and security practices across CI/CD workflows.
f73b77b ci: manually install ffmpeg for vhs action
92c4d3d ci: replace vhs-action with manual install to fix ffmpeg error
a438806 deps(go.mod): update go module dependencies
77e5dc1 docs(README): Clarify zero external dependencies
0dd9e78 docs(README): Update Go version prerequisites - The minimum Go version for running the project has been updated from 1.24+ to 1.20+. - Added a note recommending Go 1.24+ for development, aligning with CONTRIBUTING.md.
49720ff docs(README): Update documentation links to GitHub Wiki - Replaced local docs/wiki paths with GitHub Wiki URLs.
7f3b3df docs(readme): update project description, testing, and release process Update README.md to reflect recent changes and improvements: * Revise project description to highlight interactive and targeted modes. * Enhance testing section with 'make test' and linter instructions. * Streamline release process documentation for automated tagging via VERSION file.
0741935 feat(ai): Improve AI commit message generation and diff processing . Update system prompt for more precise conventional commit generation . Refactor AI model calls for better testability and flexibility . Export whitespace compression for broader reuse . Remove pre-compression of diff/status before sending to AI models . Enhance git diff command with -U0 and --minimal flags for concise output . Update Go module dependencies
873876d feat(ai): Post-process AI-generated commit messages - Implement cleanCommitMessage to strip markdown code fences and language identifiers. - Apply cleanCommitMessage to the output of all AI providers. - Add comprehensive unit tests for cleanCommitMessage. - Include benchmarks for cleanCommitMessage to ensure performance.
3860e37 feat(ai, tui): Allow user to provide hints for AI commit message generation - Add hint parameter to ai.GenerateCommitMessage and incorporate it into the AI prompt. - Update system_prompt.md to reflect the use of user context hints. - Introduce hint_input.go and HintInputModel for capturing user input as hints. - Integrate hint input into suggest_flow.go to pass user-provided hints to ai_message.go. - Modify ai_message.go to accept and utilize the hint for AI commit message generation. - Update ai_test.go to accommodate the new hint parameter. - Refactor git.GetGitRoot to use an internal command function instead of os/exec.
6a969f8 feat(ci): Add Go test and coverage workflow - New GitHub Actions workflow for Go tests and coverage. - Workflow runs on pull requests and manual dispatch. - Integrates robherley/go-test-action for detailed test reports. - Posts test outcome (success/failure badge) as a PR comment.
e9a6db7 feat(config): Implement flexible configuration management with Viper - Centralize configuration loading using spf13/viper. - Support configuration from CLI flags, environment variables, and multiple config file search paths (/etc/gitai/, $HOME/.config/gitai/, $HOME/.gitai/, current working directory). - Update AI service calls (CallGPT, CallGemini, CallOllama) to retrieve API keys and Ollama path via Viper. - Introduce context.Context propagation throughout AI and TUI functions for better cancellation and timeout management. - Add specific error types for missing API keys (ErrAPIKeyNotSet) and Ollama path (ErrOllamaPathMissing). - Update README.md to reflect the new configuration precedence, supported keys, and examples. - Update go.mod and go.sum to include viper and its dependencies. BREAKING CHANGE: The configuration system has been refactored to use Viper. While environment variables and CLI flags are still supported, the precedence and config file search paths have changed. Users relying on the old 'gitai.yaml' structure or specific environment variable behavior should review the updated README.md for details on the new configuration hierarchy.
068aa14 feat(config): centralize configuration management in gitai.yaml for API keys and settings
84e37e1 feat(config): implement configuration loading from gitai.yaml for AI settings chore(gitignore): add gitai.yaml to .gitignore fix(suggest): update suggest command to use loaded config for AI provider fix(ai): retrieve API key from loaded configuration
271f9cf feat(core): Improve error handling, AI provider architecture, and TUI
63d39a5 feat(git): Add authentication resolution and integrate golangci-lint
392c4dd feat(git): Enhance Git diff generation and URL normalization
60834ad feat(git): Enhance git functionality and testing
d26eca8 feat(git): Generate unified diffs with git-compatible formatting
a8259da feat(git): Implement improved SSH authentication for git operations
d387bfc feat(git): Improve SSH authentication and key management
9e525c7 feat(git): Improve file path handling and commit robustness - Refactor file path processing by introducing expandFiles and cleanPath utilities. - Enhance Commit function to correctly manage staged and unstaged deletions and renames. - Ensure GetStatusForFiles and GetChangesForFiles consistently handle expanded file paths. - Add fileExists helper function. - Clarify error message comment in gitroot.go.
e6781dc feat(git): Introduce GetStatusForFiles and enhance git command precision * Introduce GetStatusForFiles to retrieve git status --porcelain output for specific files. * Refactor Commit to stage and commit only the explicitly provided files, improving precision and safety. * Simplify Push error handling to directly expose Git's output for better user guidance. * Update GetStatus to use git status --porcelain. * Improve GetChangesForFiles argument handling and error reporting. * Adapt tui/suggest to utilize the new GetStatusForFiles function.
463824b feat(git): Properly determine commit author and committer
a61a39a feat(git/pr): Generate pull request URL after push - Add GetCurrentBranch function to retrieve the current Git branch name. - Add GetRemoteURL function to fetch the URL of a specified Git remote. - Implement GetPullRequestURL to construct PR URLs for GitHub, GitLab, and Bitbucket, including SSH to HTTPS conversion. - Integrate GetPullRequestURL into the suggest flow to display a direct PR link after a successful push. - Include comprehensive unit tests for the GetPullRequestURL function.
6f55d1e feat(release-detection): Implement smart version detection for automated release commits
e40bbcd feat(security): Add comprehensive tests and improve keyword handling
4cecd3e feat(security): Unify sensitive keyword configuration - Removed install-personalized-keys Makefile target and updated documentation. - Migrated sensitive keyword configuration to use viper. - Added default sensitive keywords in cmd/root.go. - security.keywords can now be configured via GITAI_SENSITIVE_KEYWORDS environment variable or gitai.yaml config file.
8a65392 feat(security, git, tui): implement handling of sensitive data in codebase - Refactored git.Push function to include additional error handling and branch tracking - Updated variable name from secret to api_key in security package - Adjusted user input handling in ai_message module
123dfd5 feat(security, internal): update sensitive data handling in security package
bd964b6 feat(security,sensitive-data-detection): add support for customizable sensitive keywords in build process - Added functionality to allow setting sensitive keywords at build time - Updated Makefile to include new target for installing personalized keys - Modified internal/security/security.go to support custom sensitive keywords - Used environment variable GITAI_SENSITIVE_KEYWORDS to set sensitive keywords if provided - Added ability to override defaults using BuildKeywordsCSV during build process.
d397b5a feat(ssh): Improve SSH authentication by extracting user from URL
e5d6ed5 feat(suggest): Add CLI flags for hint input and skipping
7b474dc feat(suggest): Implement edit and regenerate functionality for AI suggestions - Add support for internal and external editors for commit messages. - Introduce suggest.editor configuration option and --editor flag. - Allow editing (e) and regenerating (r) AI suggestions within the TUI. - Update README to reflect new features and configuration.
4bc48fe feat(suggest): add amend and force push capabilities
2694e4f feat(suggest): improve commit message editor configurability - Reworked editor option 'external' to 'system' to reflect OS environment variables. - Renamed TUI editor option from 'internal' to 'builtin'. - Enabled direct command input for --editor flag and config, allowing any custom editor. - Updated documentation and default values for editor options.
4f6e811 feat(suggest, git): Allow passing files and directories to suggest command - The gitai suggest command now accepts direct file and directory arguments. - Users can specify paths like gitai suggest internal/main.go README.md or gitai suggest internal/. - Bypasses the interactive file selection TUI when arguments are provided. - Implemented internal/git.ResolvePath to translate user-provided paths into git-tracked files, supporting globs and directories. - Added validation and warning messages for specified files that are not found, ignored, or haven't changed. - Updated README.md with usage examples for the new feature. - Version bumped from 0.1.1 to 0.2.0.
aebaf07 feat(suggest,cli): Add shell autocompletion and refactor suggest command flow - Implement shell autocompletion for gitai suggest command, suggesting changed files based on git status. - Refactor suggest command's execution logic into a Flow struct, improving modularity and testability. - Extract file selection, hint input, and pull request link display into dedicated helper functions. - Enhance argument parsing for file selection with improved path resolution and warnings for non-tracked or unchanged files. - Correct grammar in README.md.
536d80f feat(tui): Implement improved file selection with multilist component . Add github.com/sahilm/fuzzy dependency. . Introduce new TUI multilist component for enhanced list management. . Refactor file selection in suggest command to use multilist component. . Add multi-selection capability to file selector (space to toggle, 'a' to select all). . Implement regex filtering for file selection within the multilist component. . Improve git.GetChangesForFiles to gracefully handle repositories without a HEAD by reading file content directly. . Add DocStyle to shared TUI styles.
8f8bcc6 feat(tui): Implement simplified wildcard support in multilist regex filtering
cab4264 feat(tui/suggest): Display pull request links after successful push - git.Push function now returns the command output in addition to any error. - pushResultMsg and AIMessageModel updated to store the git push command's output. - Extract remote repository URLs from the git push output and suggest pull request creation links to the user.
d154350 feat: Add Gemini CLI as an AI provider option This commit introduces the ability to use the Gemini CLI as an AI provider for generating commit messages. - Integrates github.com/yubiquita/gemini-cli-wrapper for interacting with the Gemini CLI. - Adds geminicli as a new Provider option, including parsing and validation logic. - Implements CallGeminiCLI to handle requests to the Gemini CLI. - Updates README.md with installation requirements and usage examples for the new provider.
3043c03 feat: Improve AI message error handling Introduces aiErrorMsg to gracefully handle errors during AI message generation. Replaces panic calls with error returns and updates the UI to display AI-related errors.
721a1eb feat: Introduce security scanning, smart ticket extraction, and conventional commit support - Add local security scanning for sensitive data in diffs. - Implement smart ticket extraction from Jira/GitHub URLs in hints. - Generate commit messages following Conventional Commits specification. - Update README.md to document new features, refined API key usage, and provider naming. - Allow GOOGLE_API_KEY to be used for Gemini API. - Standardize provider name gemini_cli to geminicli. - Refactor configuration by removing internal/config/config.go.
145d052 fix(cmd, single, highest-level component): fix issue with provider variable assignment in suggest command - Assign provider variable using the value from the "provider" flag - Removed hard-coded provider value "gpt" in suggest command
c8d3168 fix(git): handle file arguments correctly in commit command - Ensure file paths are explicitly separated from options using -- when calling git commit.
015375e refactor(ai): introduce AI provider interface and restructure AI service
5842f3f refactor(comments): Remove redundant and unnecessary comments - Removed verbose configuration comments in cmd/root.go. - Cleaned up test-related comments in internal/ai/ai_test.go and internal/git/git_test.go. - Eliminated self-explanatory comments in internal/git/git.go and internal/tui/multilist/list.go. - Simplified state transition comments in internal/tui/suggest/ai_message.go.
3847a14 refactor(config): Move suggest command flag registration and parsing
a955216 refactor(config): centralize and streamline configuration handling
5b7f81a refactor(docs, build): streamline documentation and build process - Restructured README.md to be more concise and user-friendly. - Delegated detailed explanations for configuration, AI providers, customization, security, and internals to their respective wiki pages. - Updated usage examples for interactive and targeted modes. - Removed obsolete keyword parsing and target ignore logic from Makefile.
a06859c refactor(git): Extract utilities to new file and simplify repository root discovery
9f02f7f refactor(git): Improve Git operations and modularity
3a23265 refactor(git): Improve testability of git command execution - Introduce command variable to allow mocking exec.Command calls for testing. - Update git package functions to utilize the mockable command variable. - Add comprehensive unit tests for GetStatusForFiles, GetChangedFiles, GetChangesForFiles, Commit, and Push. - Add unit tests for GetGitRoot. - Refactor GetStatusForFiles by introducing filterStatusLines for clearer logic. - Remove unused GetDiff and GetStatus functions.
6e0bf05 refactor(git): Introduce GitService and interfaces for better testability
af91758 refactor(git): Migrate git operations to go-git library
f95735e refactor(git): Refactor and enhance Git operations
1ad0fc8 refactor(git): align diff generation with standard git output for LLMs
df3432e refactor(git): improve test clarity and formatting in git package * Clarify expected empty slice in TestGetChangedFiles * Fix indentation in TestPush and TestGetPullRequestURL
d316b8e refactor(git): streamline git interactions and authentication
a635933 refactor(internal/git, internal/tui): Remove unnecessary context.Context from Git methods
d359a2f refactor(security): Improve diff parsing in security checks
8b4ff0c refactor(suggest): introduce gitService interface for dependency injection
f45537e refactor(tui-suggest): clarify hint input UI text - Update header from "User context instruction provided:" to "Hint provided:". - Update prompt from "Provide a user context message for the AI (optional):" to "Provide a hint for the AI (optional):". - Improves clarity and conciseness of the user interface.
c71898e refactor(tui/suggest): extract regex for PR link detection - Compile LinksRegex once globally for efficiency. - Improve readability by centralizing regex definition. - Remove redundant regex compilation within RunSuggestFlow.
dcf17f7 test(ai_test): refactor prompt iteration test - Remove math import. - Clarify purpose of TestPromptIterations_TokenCounts with a comment. - Remove wantBest field from test cases. - Update test case names for clarity. - Remove logic for determining the "best" prompt based on token count.