# ascii-commit-graph: GitHub's heatmap in my terminal — then I made the cd hook fast

Source: https://www.michaelchurley.com/blog/ascii-commit-graph-terminal-heatmap-cd-hook-fastpath  
Published: 2026-07-31  
Author: Michael C. Hurley  
Tags: ascii-commit-graph, bash, cli, git, github, heatmap, contribution-graph, zoxide, terminal, gh, ripgrep, michaelmonetized

![Terminal heatmap](/blog/ascii-commit-graph-terminal-heatmap-cd-hook-fastpath/screenshots/terminal-heatmap.png)

## Who

I wanted GitHub's contribution calendar without leaving the shell, and on every `cd` via zoxide, not only when I opened a browser tab.

For operators who hang visual git context off directory changes, and who will delete an alias the moment it gets slow.

## What

I built **ascii-commit-graph**, public `https://github.com/michaelmonetized/ascii-commit-graph`. README **V1.0.4**. Script `ascii-commit-graph.sh`, 209 lines. HEAD `9221b76`. 13 commits. 1 star. CLI only.

Paints a GitHub-style week grid (Nerd Font glyph, ANSI greens). `GRID_ROWS=6`, `GRID_COLS=51` sliding weeks. Buckets 0/1/2/3+.

Flags: `--this-year`, `--full-width`, `--author`, `--show-issues`, `--show-todos`.

![Flags](/blog/ascii-commit-graph-terminal-heatmap-cd-hook-fastpath/screenshots/flags-panel.png)

v1.0.4 local path: one `git log` pass, O(1) bumps, GNU+BSD dates. `--author`: one `gh` GraphQL contributionCalendar call. Extras opt-in so default/cd path stays lean.

![Fast path](/blog/ascii-commit-graph-terminal-heatmap-cd-hook-fastpath/screenshots/fastpath-rewrite.png)

README zoxide `zcd` runs `--full-width --show-issues --show-todos` on every cd. That habit forced the Jul 2026 rewrite. ROADMAP still unchecked: Create a release for 1.0.4. Install snippet still references `michael-k/`.

## Where

Code: [github.com/michaelmonetized/ascii-commit-graph](https://github.com/michaelmonetized/ascii-commit-graph), public. No live web app. Clone + chmod + symlink.

![zoxide hook](/blog/ascii-commit-graph-terminal-heatmap-cd-hook-fastpath/screenshots/zoxide-cd-hook.png)

## When

**2024-06-06.** rc + docs + PNGs + PR #1.

**2024-06-08.** customization; v1.0.3-rc prep.

**2026-06-03.** compatibility.

**2026-07-31.** HEAD `9221b76`: Speed up heatmap: single git pass and one GraphQL author fetch.

![Commit arc](/blog/ascii-commit-graph-terminal-heatmap-cd-hook-fastpath/screenshots/commit-arc.png)

## Why

Browser greens are a context switch. A cd-hook heatmap makes latency a product bug. One git pass plus one GraphQL call is the honest fix, and an unchecked release checkbox beats a fake tag.

**Engagement Q:** If your cd alias paints a heatmap, what latency makes you delete the alias?
