today

A tiny Crystal terminal dashboard that shows what changed today in the repo you are working in.

today

today is a small terminal dashboard for quickly checking what is going on in the current folder.

Build it once, then run it from inside any project:

cd ~/path/to/a/repo
today

Example output:

────────────────────

Today's commits: 3

Files edited: 12

Current branch:

feature/notes

Calendar:

unavailable

Weather:

unavailable

Unread mail:

unavailable

Longest coding streak:

42m

What It Shows

  • Today's commits: commits in the current Git repo since midnight.
  • Files edited: unique files changed in today's commits plus currently uncommitted files.
  • Current branch: the active Git branch, or detached HEAD.
  • Calendar: optional value from TODAY_CALENDAR.
  • Weather: optional value from TODAY_WEATHER.
  • Unread mail: optional value from TODAY_UNREAD_MAIL.
  • Longest coding streak: estimated from today's Git commit timestamps, grouped when commits are within 30 minutes of each other.

If you run today outside a Git repo, it still reports files modified today in the current folder and marks Git-only fields as unavailable or zero.

Build

This project is written in Crystal.

shards build

If Crystal cannot write to its default cache directory, keep the cache local to this project:

CRYSTAL_CACHE_DIR=.crystal-cache shards build

The compiled binary is written to:

bin/today

Run

First open the folder where you keep this project. Then run:

./bin/today

Install Once

Open this project folder in your terminal, then add its bin folder to your shell path:

echo "export PATH=\"\$PATH:$(pwd)/bin\"" >> ~/.zshrc
source ~/.zshrc

Then run it from any repo:

cd ~/path/to/a/repo
today

You do not need to copy this project into every repo. The command reads whichever folder you run it from.

Optional Values

Some dashboard values need external data sources. Until those integrations exist, pass them in with environment variables:

TODAY_WEATHER="72°" \
TODAY_CALENDAR="2:00 Meeting" \
TODAY_UNREAD_MAIL="4" \
today

You can also override computed values:

TODAY_COMMITS="6" \
TODAY_FILES_EDITED="24" \
TODAY_BRANCH="feature/notes" \
TODAY_CODING_STREAK="2h13m" \
today

Development

Edit the source:

src/today.cr

Rebuild:

CRYSTAL_CACHE_DIR=.crystal-cache shards build

Smoke test:

./bin/today
Repository

today

Owner
Statistic
  • 0
  • 0
  • 0
  • 0
  • 0
  • about 7 hours ago
  • July 6, 2026
License

MIT License

Links
Synced at

Mon, 06 Jul 2026 07:06:24 GMT

Languages