Commitsum turns your GitHub commits into a clean, shareable summary in seconds. Itβs a beautiful Go-powered CLI with a modern Bubble Tea TUI, plus local caching and detailed logs so you can move fast and troubleshoot quickly.
See the complete keyboard-driven flow: date selection β repo selection/filtering β summary β export.
- π Flexible date selection β Today, yesterday, last week, last month, or custom date
- π Repository filtering β Filter repos by pattern (e.g.,
*project*ororg/*) - π― Multi-repository support β See all your commits across different repositories
- β Smart selection β Select all, none, or individual repositories
- π One-click copy β Cross-platform clipboard support (macOS, Linux, Windows)
- π€ Multiple export formats β Export to Text, Markdown, or JSON
- π Commit statistics β Visualize commits per repository with charts
- ποΈ Local caching β Speeds up repeated queries with a short-lived cache
- π§Ύ Logs for debugging β Daily log files stored locally
- βοΈ Configuration file β Optional. You can create
~/.config/commitsum/config.jsonmanually to set defaults - π¨ Modern terminal UI β Beautiful interface with soft purple gradient theme
- β¨οΈ Keyboard navigation β Efficient keyboard-driven workflow
- Go
- GitHub CLI (gh) must be installed and authenticated
- Terminal with ANSI color support
Download the appropriate archive for your OS/CPU from the GitHub Releases page and extract it:
https://github.com/DementevVV/commitsum/releases
curl -fsSL https://raw.githubusercontent.com/DementevVV/commitsum/master/install.sh | shirm https://raw.githubusercontent.com/DementevVV/commitsum/master/install.ps1 | iex# Clone the repository
git clone https://github.com/DementevVV/commitsum.git
cd commitsum
# Install dependencies
go mod tidy
# Build the binary
go build -o commitsum ./cmd/commitsum
# Run the application
./commitsumgo run ./cmd/commitsum- Select time range β Choose from presets or enter custom date
- Today, Yesterday, Last 7 days, Last 30 days
- Or enter a custom date (YYYY-MM-DD format)
- Review commits β Browse your commits across all repositories
- Filter repositories β Press
fto filter by pattern (optional) - Select repositories β Use
spaceto toggle,afor all,nfor none - Generate summary β Press
Enterto view the formatted summary - Export or copy β Press
cto copy,eto export to file
That's it! You now have a beautiful summary of your day's work.
| Key | Action |
|---|---|
j or β |
Move cursor down |
k or β |
Move cursor up |
enter |
Select date range |
esc |
Quit application |
q |
Quit application |
| Key | Action |
|---|---|
space |
Select/unselect repository |
a |
Select all repositories |
n |
Deselect all |
f or / |
Filter by pattern |
s |
Show statistics |
r |
Change date range |
j or β |
Move cursor down |
k or β |
Move cursor up |
enter |
Show summary |
q |
Quit application |
| Key | Action |
|---|---|
c |
Copy to clipboard |
e |
Export to file |
s |
Show statistics |
b |
Back to selection |
esc |
Back to selection |
q |
Quit application |
| Key | Action |
|---|---|
enter |
Save to file |
c |
Copy in selected format |
b |
Back to summary |
esc |
Back to summary |
q |
Quit application |
Commit Summary - 2026-02-02
[username/project-one]
- Add new feature for user authentication
- Fix bug in login flow
---
Statistics: 5 commits across 2 repositories
Most active: username/project-one (3 commits)
# Commit Summary
**Date:** 2026-02-02
## Statistics
- **Total Commits:** 5
- **Repositories:** 2
- **Most Active:** username/project-one (3 commits)
## Commits
### username/project-one
- Add new feature for user authentication
- Fix bug in login flow
---
_Generated by commitsum on 2026-02-02 09:41:12_{
"date": "2026-02-02",
"total_repos": 2,
"total_commits": 5,
"commits": {
"username/project-one": [
{ "repository": "username/project-one", "message": "Add new feature" }
]
},
"stats": {
"total_commits": 5,
"total_repositories": 2,
"most_active_repo": "username/project-one",
"max_commits": 3,
"commits_per_repo": { "username/project-one": 3 }
},
"generated_at": "2026-02-02T09:41:12Z"
}Configuration is optional and is read from ~/.config/commitsum/config.json if the file exists. You can create it manually:
{
"default_date_range": "today",
"repo_filter": "",
"output_format": "text",
"custom_template": "",
"auto_copy": false,
"show_stats": true
}| Option | Description |
|---|---|
default_date_range |
Default preset: today, yesterday, week, month (reserved for UI) |
repo_filter |
Default repository filter pattern (pre-fills the filter input) |
output_format |
Default export format: text, markdown, json (reserved for export UI) |
custom_template |
Custom template for exports (use case available, UI pending) |
auto_copy |
Automatically copy summary to clipboard (reserved for UI) |
show_stats |
Show statistics in summaries (reserved for UI) |
# Build for current platform
go build -o commitsum ./cmd/commitsum
# Build for all platforms
GOOS=linux GOARCH=amd64 go build -o commitsum-linux-amd64 ./cmd/commitsum
GOOS=darwin GOARCH=amd64 go build -o commitsum-darwin-amd64 ./cmd/commitsum
GOOS=darwin GOARCH=arm64 go build -o commitsum-darwin-arm64 ./cmd/commitsumcommitsum/
βββ cmd/
β βββ commitsum/ # Application entry point
βββ internal/
β βββ domain/ # Entities and domain contracts
β βββ infrastructure/ # GitHub client, config, cache, clipboard, logger
β βββ ui/ # Bubble Tea UI state, views, and styles
β βββ usecase/ # Business logic (commits + export)
βββ docs/ # Images and docs assets
βββ go.mod # Go dependencies
βββ go.sum # Dependency checksums
βββ Makefile # Build automation
βββ README.md # This file
βββ LICENSE # MIT License
- GitHub CLI Integration β Uses
ghCLI to authenticate and fetch commit data - GitHub Search API β Queries commits by author and date using GitHub's search API (up to 1000 results)
- Local Cache β Stores short-lived results in
~/.config/commitsum/cachefor faster repeat runs - Interactive UI β Bubble Tea framework provides the terminal user interface
- Lipgloss Styling β Modern terminal styling with soft purple/violet gradient theme
- Logs β Writes daily logs to
~/.config/commitsum/logs
# Login to GitHub CLI
gh auth login- Ensure you have commits on the selected date
- Verify GitHub CLI has access to your repositories
- Check that your commits are authored with the correct GitHub email
- Use the format YYYY-MM-DD (e.g., 2026-02-02)
- Year must be 4 digits, month and day must be 2 digits
- Install one of:
xclip,xsel, orwl-copy
- Logs are written to
~/.config/commitsum/logs - Set
DEBUG=1to also print logs to stderr
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/commitsum.git - Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and test thoroughly
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Please ensure your code:
- Follows Go best practices and conventions
- Includes comments for exported functions
- Is properly formatted with
gofmt
This project is licensed under the MIT License - see the LICENSE file for details.
- Bubble Tea β The TUI framework powering the interface
- Lip Gloss β Terminal styling and layout
- Bubbles β Reusable TUI components (textinput)
- GitHub CLI β GitHub integration and authentication
If you have any questions or issues, please:
- Check existing Issues
- Create a new issue with details (OS, Go version, error messages)
- Provide steps to reproduce any problems
-
Cross-platform clipboard support (Linux, Windows) -
Export summaries to file (Markdown, JSON) -
Date range selection (e.g., last week, last month) -
Filter commits by repository pattern -
Commit statistics and visualization -
Configuration file support - Template-based exports (use case available, UI pending)
- Git integration (local repository commits)
- Multiple GitHub accounts support
- Interactive commit message editing
- Slack/Discord integration
- Daily/weekly digest scheduling
Made with β€οΈ by DementevVV

