Skip to content

v1.5.0 — The One That Fits Your Terminal

Latest

Choose a tag to compare

@tpierrain tpierrain released this 11 Jul 19:35
· 5 commits to main since this release

Clepsydre — an always-on context-window status line for Claude Code.

This release makes the folder and branch names responsive to your terminal width. On a wide terminal you get the full names — no more second…rator when second-brain-generator fits with room to spare. On a narrow one the names shrink by exactly as much as the width demands, and every other segment — the token gauge, memory and the rate window — always stays visible. Nothing to configure. Follows v1.4.0.

Clepsydre status line, all segments visible

Highlights

  • Full names when there's room, truncation only when there isn't. The caps are no longer fixed — they're derived from the actually-available width, read from the terminal's COLUMNS. Clepsydre measures how many columns everything else takes (model badge, token gauge, git counts, memory and rate window) and hands whatever is left to the folder and branch names. If both fit, you see them in full — even on a very wide terminal; if not, they shrink by exactly as much as the width demands and no more. See ADR 0006.
  • Everything else stays visible — the names are the only thing that shrinks. Because the names are sized from what's left after the whole rest of the line, they can never push the gauge, the memory segment or the rate window off-screen — not even with pathologically long names. Under pressure the branch is kept and the folder yields first (it's the more redundant of the two — you usually know which project you're in), each with a small floor so neither vanishes.
  • On a genuinely tiny terminal, the names collapse to their icons. Below the width where even the floored names would just become unreadable stubs (se…or), they collapse to 📁 ⎇ ±6 — folder icon + branch symbol + git status, or just 📁 outside a repo — freeing their whole width so the gauge, memory and rate all stay visible far lower. The full degradation ladder: wide = full names → medium = names shrink (folder first) → very narrow = collapse to icons → extreme = the terminal clips the rate window last of all. The gauge is never the one to go.
  • A small width reserve keeps the tail safe. The status line doesn't get the whole terminal width — your statusLine.padding indents it, and Claude Code adds its own ellipsis when a line runs long. Clepsydre holds back a few columns (CLEPSYDRE_WIDTH_RESERVE, default 8) so the rate window isn't clipped for it. Bump it if you use a large padding, or set 0 to reclaim every column.

Here's the resize impact in one glance — the same line as the terminal narrows. Wide, both names show in full and everything's there:

Clepsydre status line on a wide terminal, names in full: [Opus 4.8 1M·H] folder second-brain-generator, branch test/rag-mutation-hardening ±6, 45.3k/300.0k (15%) green, MEMORY.md 9.1K, mem 140.0K/40f, rate window 7% resets in 4h12

Narrower, the names shrink (folder first, middle ellipsis) while everything else stays put — that's the second…rator / test/r…ening in the banner up top. And on a genuinely tiny terminal they collapse to their 📁 ⎇ icons, yet the token gauge, memory and rate window are all still there:

Clepsydre status line on a narrow terminal, names collapsed to icons: [Opus 4.8 1M·H] folder icon, branch symbol ±6, 45.1k/300.0k (15%) green, MEMORY.md 9.1K, mem 140.0K/40f, rate window 7% resets in 4h15 — everything still visible

Good to know

  • Zero regression, zero config. If the width is unknown (COLUMNS absent or unreadable), you get exactly the previous fixed caps (12 / 25). The adaptation only activates when the width is actually known.
  • Your explicit caps still win. A CLEPSYDRE_BRANCH_MAX / CLEPSYDRE_FOLDER_MAX you set (including 0 to show the name in full) overrides the automatic sizing for that segment.
  • Adapts on the next render, not live. Resize the terminal and the new width is picked up on the next status-line render (each turn), not mid-drag — so right after a resize the first line may look tight for a moment, then settle.

With thanks — this release exists because of you two 🎩

The richness of the line came from external contributors, and it's exactly that richness that made this release necessary:

Your ideas were great — they genuinely made Clepsydre more useful. But each new segment also made the one-line status longer, and on a narrow terminal that started to squeeze the things that matter most (the token gauge, memory, and your rate window) toward the right edge where they'd get clipped. This release is the answer: always keep what's important visible, and — when there just isn't enough room — quietly shrink and then hide what matters less, namely the folder and branch names (collapsed to their 📁 ⎇ icons), so the essentials never have to go. Thank you both. 🙏

Install / update

Already installed? Just git pull — no re-install, and the changes land on the next render. New here:

git clone git@github.com:tpierrain/clepsydre.git ~/clepsydre
cd ~/clepsydre && node install.mjs

Then restart Claude Code.

⚠️ Ignore the "Source code (zip / tar.gz)" archives below. GitHub attaches them automatically and they're useless for Clepsydre: the installer points your status line at an absolute path inside your clone, so updates land with a plain git pull — a downloaded archive has no git history to pull.