today

Version, currently main branch1 version
  • main branchlatestJul 6, 2026

github.com/wuisabel-gif/today

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

0 stars
0 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  today:
    github: wuisabel-gif/today
    branch: main

main is a branch, not a release, so this tracks it rather than pinning a version.

Then run:

shards install

shard.yml

Crystal
>= 1.10.0
Target
  • today from src/today.cr

Dependencies

This version declares no dependencies.

README

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