A terminal tool to summarize your Git commit history for daily standups, using AI (Gemini API).
- Summarizes Git commit history for one or more projects
- Groups changes by day and topic
- Supports multiple repositories
- Customizable summary prompt
- Copy summary to clipboard with one keypress
- Mark commits with
m, view all marked withs
- Rust (for building)
- A Gemini API key
cargo install whathaveidoneYou must set your Gemini API key before running the app:
export GEMINI_API_KEY=your-key-hereAdd this line to your shell profile (e.g. ~/.zshrc) to make it persistent across terminal sessions.
whathaveidone uses a TOML file for configuration, allowing you to customize its behavior.
The application loads settings from up to three locations in the following order of precedence (lower numbers are overridden by higher numbers):
- Project Blueprint (
whid.toml): Awhid.tomlfile located in the project's root directory serves as the base configuration. This file is required and acts as a blueprint for user-specific settings. - User Configuration (
~/.config/whid/whid.toml): On the first run, the application copies the project'swhid.tomlto a user-specific directory. This file stores your personal default settings. - Local Override (
whid.toml): You can place awhid.tomlfile in the directory where you run thewhidcommand. Its settings will override any of the above, which is useful for project-specific configurations.
Here's an example of the whid.toml file and the available settings:
# The default Gemini model to use for summaries.
# This can be overridden by the --model command-line flag.
gemini_model = "gemini-2.0-flash"
# Optional: Path to a custom prompt template file.
# If provided, this file will be used for AI summaries.
# This can be overridden by the --prompt command-line flag.
custom_prompt_path = "path/to/your/prompt.txt"
# Default language for the AI summary.
# Can be overridden by the --lang command-line flag.
lang = "english"Run the app in your terminal:
whathaveidone
# or
whidYou can select the Gemini model version by setting the gemini_model in your whid.toml configuration file, or by using the --model <model> parameter as a command-line override. The default is gemini-2.0-flash.
Example:
whathaveidone --gemini gemini-1.5-pro
#or
whathaveidone --gemini gemini-2.5-flash-preview-05-20
The selected model will be shown in the summary popup while waiting for the AI response.
To use a specific language for the AI summary, add the --lang <language> parameter:
whathaveidone --lang german # German
whid --lang english # English (default)Note: The translation is performed by Gemini itself. The --lang command-line flag will always override the lang setting from your configuration file.
Use TAB or SHIFT-TAB for interval selection.
Alternativly: You can specify the start interval for commit history as parameter:
24ortoday(default)4872oryesterdayweekmonth
Example for 1 week in German:
whathaveidone week --lang germanYou can specify a custom date range for the commit history using the --from and --to parameters. The date format is YYYY-MM-DD.
--from YYYY-MM-DD: Start date for the commit history.--to YYYY-MM-DD: End date for the commit history. If not provided, it defaults to the current date.
Example:
whathaveidone --from 2023-01-01 --to 2023-01-31You can provide a custom prompt template file using the --prompt <filename.txt> option. Placeholders in your template will be replaced automatically:
{from}: Start date (YYYY-MM-DD){to}: End date (YYYY-MM-DD){project}or{projectname}: Project name{interval}: Interval label (e.g. "week"){lang}: Language (e.g. "german", "english"){commits}: Commit data to be summarized
Example:
whathaveidone --prompt myprompt.txtIf the file cannot be loaded, the default prompt will be used.
The --prompt command-line flag will always override the custom_prompt_path from your configuration file.
You can toggle a detailed, multi-line commit log view (similar to git log --format output) by pressing the d key in the commit list. This view shows the full commit message body and author for each commit, formatted in a pretty-printed, multi-line style.
Note: The detailed view is only recommended for smaller datasets (shorter timeframes or a single project). For large repositories or long timeframes, the output may be too large for the AI model to summarize effectively.
- Arrow keys / h j k l: Move between projects/commits
Tab/Shift+Tab: Change time intervald: Toggle detailed commit view (multi-line, git log style)aorA: Show AI summary popupc: Copy summary to clipboardm: Mark/unmark commits: Show popup with all marked commitsQ: Quit
coming soon