Streakode is a powerful Git analytics and search tool that combines advanced commit history exploration with insightful coding statistics. Perfect for developers who want to understand their coding patterns, search through their Git history efficiently, and maintain productive coding streaks across multiple repositories.
- Lightning-fast commit history search powered by
fzf
andripgrep
- Interactive fuzzy search with real-time preview
- Rich commit details including diffs, stats, and branch information
- Smart repository detection and automatic GitHub links
- Efficient caching system for quick subsequent searches
- Detailed commit patterns and coding streaks
- Code changes tracking (+/-) per repository
- Language statistics and peak coding hours
- Project engagement metrics
- Weekly and monthly activity summaries
- Weekly commit goals and progress tracking
- Multiple profile support (work/personal separation)
- Customizable activity indicators
- Smart caching for fast repository scanning
- Selective cache updates and version-aware management
- Modern, colorful terminal UI
- Configurable table layouts and themes
- Multiple insight views
- Flexible display options
- Profile-specific configurations
- π Enhanced commit tracking and statistics
- Detailed weekly/monthly commit patterns
- Code changes tracking (+/-) per repository
- Language statistics and peak coding hours
- Customizable activity indicators
- π¨ Highly configurable display options
- Customizable table layouts and styles
- Color themes support
- Multiple insight views
- π Smart caching system
- Efficient repository scanning
- Selective cache updates
- Version-aware cache management
- π― Advanced goal tracking
- Weekly commit goals
- Progress visualization
- Customizable thresholds
- π€ Profile management
- Work/personal separation
- Profile-specific configurations
- Easy profile switching
- Go 1.19 or higher
- Git
- fzf (required for interactive search)
- ripgrep (optional, enhances search capabilities)
Download the latest release for your platform from the releases page.
git clone https://github.com/AccursedGalaxy/streakode.git
cd streakode
make install
# Show version information
streakode version
# View Git author configuration
streakode author
# Display repository statistics
streakode stats [repository]
# Interactive commit history search
streakode history search
# Advanced commit search with filters
streakode history search --author="name" --since="2 weeks ago"
# Repository cache management
streakode cache reload # Refresh cache
streakode cache clean # Clear cache
# Profile management
streakode profile work # Switch to work profile
streakode profile home # Switch to home profile
The history search
command provides powerful interactive search capabilities:
- Fuzzy search through commit history
- Real-time commit preview with diff
- Branch information and GitHub links
- File change statistics
- Multiple selection support
- Advanced filtering options
Enable debug mode with --debug
or -d
flag for any command:
streakode history search --debug
streakode stats --debug
This shows additional information about:
- Search parameters and filters
- Cache operations
- Configuration details
- Performance metrics
Create a configuration file at ~/.streakodeconfig.yaml
. See the example configuration for all available options.
Key configuration sections:
# Author and scanning settings
author: "YourName"
scan_directories:
- "~/github"
- "~/work/repos"
# Search and display settings
search_settings:
max_results: 1000
cache_timeout: 3600
use_fuzzy_search: true
# UI customization
display_settings:
theme: "modern"
color_scheme: "dark"
show_previews: true
Logic for updating is currently not implemented.
If you want to update, you can manually download the latest release from the releases page and replace the current binary.
Or if you cloned the repository, you can pull the latest changes and build the project again.
git pull
make clean
make build
make install
To completely remove Streakode from your system:
# Remove the binary
go clean -i github.com/AccursedGalaxy/streakode
# Remove configuration and cache files
rm ~/.streakodeconfig*.yaml # Removes all config files including profiles
rm ~/.streakode*.cache # Removes all cache files including profiles
rm ~/.streakode.state # Removes the state file
# Single Command For All Files and Configs (Linux/MacOS)
rm /usr/local/bin/streakode && rm ~/.streakodeconfig* ~/.streakode*.cache ~/.streakode.state
# For Windows users (PowerShell):
Remove-Item "$env:USERPROFILE\.streakodeconfig*.yaml"
Remove-Item "$env:USERPROFILE\.streakode*.cache"
Remove-Item "$env:USERPROFILE\.streakode.state"
Note: If you installed Streakode from a release binary instead of go install
, simply delete the binary and the configuration files as shown above.
# Clone the repository
git clone https://github.com/AccursedGalaxy/streakode.git
cd streakode
# Install development dependencies
make dev-deps
# Run tests
make test
# Build for development
make dev
streakode/
βββ cmd/ # Command implementations
βββ cache/ # Caching system
βββ config/ # Configuration management
βββ scan/ # Repository scanning
βββ search/ # Search functionality
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
Please read our Contributing Guidelines for details on our code of conduct and development process.
- Enhanced search capabilities with advanced filters
- Team analytics and collaboration features
- Integration with CI/CD platforms
- Machine learning-based commit pattern analysis
- Custom plugin system
- Web interface (planned)
If you find Streakode helpful:
- Give it a β on GitHub
- Share it with your network
- Report issues or contribute
- Follow the project for updates
This project is licensed under the MIT License - see the LICENSE file for details.
Built with:
Special thanks to all contributors who have helped shape Streakode into what it is today.
A powerful tool for developers who care about their Git history