Git Heatmap (VS Code Extension)
Git Heatmap surfaces a GitHub-style contribution calendar directly inside Visual Studio Code by scanning local Git repositories. The extension runs fully offline, aggregates commit counts per day, and renders an interactive heatmap so you can review activity without leaving the editor.
Highlights
Git Heatmap main interface - GitHub-style contribution calendar
Multiple color schemes available
Flexible date range selection: choose from the last month, quarter, half-year, or full year to suit different analysis needs
Status bar showing last 7 days of Git activity
- Local & private: data stays on your machine; no network requests.
- Multi-repo workspace: auto-discovers repositories (including nested repos).
- Interactive heatmap: GitHub-style calendar with summary and recent commits.
- Daily commit details: click any cell to view the newest 200 commits for that day, with the complete daily total and repository info.
- Export capabilities: save your contribution calendar as SVG or PNG for sharing.
- Flexible filters: time range (month/quarter/half-year/year), user (current/all/custom email), include merges, date source (author/committer), color schemes.
- Accessibility: colorblind-friendly palette and internationalization support (English/简体中文).
- Gamification: achievement notifications to celebrate your coding milestones! 🎉
- Sticky preferences: your filters are saved and restored; reset anytime via
Git Heatmap: Reset Filter Settings.
- Status bar activity: shows last 7 days (Today/Week); click to open the panel quickly.
- Performance-first: Git output is streamed, UI payloads are bounded, and the in-memory LRU cache is limited to 8 entries with a 5-minute TTL.
Safe Upgrade in v0.0.7
Versions before v0.0.7 could accumulate generated heatmap results in VS Code extension state, eventually growing beyond 100 MB. On first activation, v0.0.7 automatically removes only the obsolete heatmap_ cache entries before starting background work. Saved filters, achievement progress, and other extension state are preserved.
Generated Git history is no longer persisted in VS Code state. The heatmap retains at most 50 recent commits for display, daily detail requests retain at most 200 commits while reporting the full count, and the status bar uses a dedicated seven-day count query.
Commands
Git Heatmap: Show – open the heatmap panel.
Git Heatmap: Refresh – trigger a data refresh (opens the panel if closed).
Git Heatmap: Select Repositories – placeholder for future custom scope selection.
Git Heatmap: Reset Filter Settings – reset filters to defaults.
Git Heatmap: Export as SVG – export your contribution calendar as SVG file.
Git Heatmap: Export as PNG – export your contribution calendar as PNG image.
Configuration
Flexible filter options - time range, user filtering, advanced settings
Configuration options in VS Code settings panel
gitHeatmap.scanMode (workspace | customPaths) – repository discovery strategy (defaults to workspace).
gitHeatmap.customPaths – additional folders to include when scanMode is customPaths.
gitHeatmap.metric (commits default) – statistic to visualize.
gitHeatmap.colorScheme (github default) – heatmap palette.
gitHeatmap.includeMerges (default false) – include merge commits.
gitHeatmap.dateSource (committer default) – which date field to aggregate.
gitHeatmap.statusBar.enabled (default true) – show last-7-days activity indicator in the status bar.
gitHeatmap.statusBar.updateInterval (default 300000 ms) – status bar refresh interval.
gitHeatmap.statusBar.displayMode (today | week, default week) – status bar display mode.
gitHeatmap.statusBar.showAchievements (default true) – show encouraging notifications when reaching new activity levels.
gitHeatmap.language (auto | en | zh-CN, default auto) – UI language preference.
What's New in v0.0.7
- Automatic storage repair: removes obsolete generated heatmap cache entries during upgrade without deleting user preferences.
- Bounded data pipeline: streams
git log output with concurrency, timeout, cancellation, and field-size limits.
- Stable memory cache: semantic query keys, single-flight request reuse, and an 8-entry LRU/TTL bound prevent refresh-driven growth.
- Lightweight status bar: collects only seven days of counts and merges overlapping refreshes.
- Bounded Webview messages: sends 366 daily cells, 50 recent commits, or 200 selected-day details at most; stale requests cannot overwrite newer results.
What's New in v0.0.5
- 🎯 Daily Commit Details Panel: Click any heatmap cell to view detailed commit information for that day, including commit messages, authors, and repositories.
- 📤 Export Functionality: Export your contribution calendar as SVG or PNG files to share your coding journey.
- 🎨 Colorblind-Friendly Palette: New
colorblind color scheme using orange gradients for better accessibility.
- 🌐 Internationalization: Full support for English and Simplified Chinese (简体中文), with auto-detection based on VS Code language.
- 🏆 Achievement System: Celebrate your coding milestones with encouraging notifications when you reach new activity levels.
- 🐛 Bug Fixes: Various stability improvements and performance optimizations.
License
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
This means:
- ✅ You can freely use, modify, and distribute this software.
- ✅ If you distribute modified versions, you must also make your source code available under GPL-3.0.
- ✅ You must retain copyright and license notices.
- ❌ You cannot distribute modified versions under a proprietary license.
For the full license text, see the LICENSE.md file or visit https://www.gnu.org/licenses/gpl-3.0.html.
Development
- Install dependencies:
npm install.
- Run unit tests:
npm test.
- Compile:
npm run compile (emits JS into out/).
- Launch the extension host from VS Code (
F5).
Contributing
Contributions are welcome! Please note that any contributions will be licensed under GPL-3.0. By submitting a pull request, you agree to license your contribution under the same terms.
Support
If you encounter any issues or have feature requests, please file them in the GitHub Issues.