Repository navigation
Releases
Releases · iamgerwin/g3rm0n
g3rm0n v0.1.7
Changed
- A clearer header. It now shows the date and time in your time zone, instead of
the kernel version:
g3rm0n ● 96 Healthy workstation · Ubuntu 24.04.1 LTS · Oct 08 | 12:34PM PST.
The time updates with every refresh. In a narrow window the OS, host and date give
way first; the health score and time always stay. - The README starts with a 30-second, copy-and-paste quick start for Mac and Linux.
Its sample screens are now generated from g3rm0n's own drawing code, so they always
match what you'll see.
Added
- The header is built from parts (
logo,health,host,os,kernel,date,
time) thatheaderin the config can reorder or trim, e.g.
header = logo health time date. The kernel version is oneheaderentry away. - For contributors:
learnings/dump.md, a living record of past mistakes and the rules they led to.
It's imported byCLAUDE.md, required reading inAGENTS.md, and checked for
format bytests/docs.sh.scripts/readme-sample.shdraws the README screens.tests/docs.shfails when
they drift, andscripts/bump-version.shrefreshes them.lib/header.shholds the header components.
g3rm0n v0.1.6
Fixed
- Claude: far fewer "rate limited" states. Claude's usage endpoint limits frequent
callers, and g3rm0n asked it every minute, once per open window. Now:- Claude is asked every 5 minutes; its 5-hour and weekly numbers move slowly.
Change this withclaude.refreshin the config (any provider; never below 60
seconds). - After a rate limit, g3rm0n follows the server's
Retry-After, or else waits 5,
then 10, 20 and up to 60 minutes, and returns to normal after a success. - Only one g3rm0n at a time calls a provider, and all open windows share its
result.
- Claude is asked every 5 minutes; its 5-hour and weekly numbers move slowly.
- Rate limited or offline no longer hides your numbers. The last good reading
stays on screen with how old it is and when the next try is (12m ago · retry 4m),
instead of aStatus rate limitedrow andstale. If a window resets while
g3rm0n waits, the new window is shown as an estimate (~0%,new window) until
the next reading. - macOS: CPU temperature on Apple silicon. The Power panel showed
no sensors exposedon M-series Macs. g3rm0n now reads the IOKit temperature sensors, the same
unprivileged source iStat Menus uses, through JavaScript for Automation. No install
and no root are needed. Intel Macs still showno sensors exposed, because their
sensors sit in the SMC.
Added
g3rm0n sensorslists every temperature sensor g3rm0n can read, and which one the
Temp row shows. On macOS it also says what the system returned, which explains an
empty list.<provider>.refreshin the config sets how often that provider is asked, in seconds.
Changed
- The Temp row prefers the CPU: it shows the hottest CPU sensor, labelled
CPU, when
the machine names one (Apple silicon clusters and dies;coretemp,k10temp,
x86_pkg_tempand similar on Linux). Otherwise it shows the hottest sensor, as
before, labelledhottest sensor. - For contributors:
- New suite
tests/ai.shcovers refresh intervals, backoff,Retry-After, the
shared lock, the panel while rate limited, and window resets. - The macOS fixtures cover the IOKit sensors, and
plat_sensorsjoins the
platform contract.
- New suite
g3rm0n v0.1.5
Fixed
- macOS: two columns and the full height again. The dashboard measured the
window withtput, which on macOS can't see the terminal from where g3rm0n asked
and always answered 80×24. So Macs always got one column, the short footer, and
frames cut at 24 rows. g3rm0n now asks the terminal itself, the same way on every
platform. - macOS: the Claude panel appears. Claude Code keeps its login in the macOS
Keychain, so g3rm0n never found it. It now finds theClaude Code-credentialsitem
(reading only its name), and reads the token only when the panel refreshes.
g3rm0n setupshowsfound · macOS Keychain. - Folded titles whose summary was too long showed no summary at all. Common on Macs
(612 tasks · WindowServer 12%). Now only the last parts are dropped
(612 tasks). - Numbers no longer depend on the locale. With a comma-decimal locale (German, French,
Dutch, …) money showed$8.2 left of $25,00and timing could break; g3rm0n now
formats numbers with.everywhere and keeps your character set. - The folded Disk title on macOS said
/but showed the data volume; it now says~.
Added
- Credential references can point at the macOS Keychain:
keychain:<service>. - Tests:
tests/ui.sh: the live layout under a stand-in for macOS'stput(two columns,
full height, never overflowing) and summary trimming.tests/platform.sh: Keychain logins, the same layout and summaries from both
backends, and comma-decimal locales.
Fixed
- The installer no longer fails with
curl: (56) … 403on networks that share one
public IP (offices, schools, CI machines). It finds the latest release through
GitHub'sreleases/latestredirect instead of the rate-limited API, which is
kept as a fallback.
g3rm0n v0.1.4
Fixed
- Clicking anywhere other than a panel title (a panel's rows, the gap between
columns, empty space) quit the dashboard. Such clicks are now ignored; only a
title click folds, and onlyqor Ctrl-C quits. - Updating g3rm0n while it was running (reinstalling, or a
git pullin a linked
checkout) could printsyntax error near unexpected tokenwhen it exited,
because bash went on reading the changed file. g3rm0n now exits without reading
any further. - The macOS installer's "Using bash …" line no longer runs the version into the path.
g3rm0n v0.1.3
Added
- macOS support (macOS 12 or newer, Apple silicon and Intel), with the same
panels, keys, folding, setup and AI usage as on Linux. A new platform backend reads
the Mac with its stock tools (sysctl,vm_stat,iostat,netstat,ioreg,
pmset,df,ps,route) and never needssudo. Memory follows Activity Monitor,
and the disk panel shows the data volume where your files live. The Apple GPU is shown.
Where macOS keeps a reading for root, g3rm0n shows the closest one any user can
get: the core layout instead of per-core load, and no temperature. - The installer works on macOS. The same one-line
curl … | bashruns with
macOS's own bash 3.2, finds Homebrew's bash 5 (or saysbrew install bash), and
gives macOS-stylePATHhints (~/.zshrc,~/.bash_profile). - g3rm0n finds a bash 5 by itself when it's started by an older bash (macOS's
/bin/bash) or by bash in POSIX mode (sh g3rm0nwhereshis bash). install.sh --from DIRinstalls offline from an unpacked release or a checkout.- README: a Platforms section that lists what each platform reads and where
readings differ.
Changed
- Only run-time files are installed: the program, its modules, the backend for
your operating system, the completions and the license, about 100 KB instead of
the whole repository. Reinstalling removes files left by older installs, and
release tarballs no longer carry tests, rules, CI or contributor docs. - Everything OS-specific moved into platform backends (
lib/platform/linux.sh,
lib/platform/darwin.sh) behind one documented contract. g3rm0n refuses to start
with an incomplete backend. Linux output is unchanged. - Claude reset times are parsed in
jqinstead of with GNUdate, so they behave
the same everywhere. - The header shows the short host name (
mac-mini, notmac-mini.local) and
shortens very long ones, so the OS and kernel always stay visible. - For contributors: every test suite now runs on Ubuntu 22.04 and 24.04 and on macOS
14 and 15, through shared portable helpers (tests/lib/common.sh). Two new suites
join them.tests/platform.shchecks every backend against the contract and runs
the macOS backend on recorded macOS output on any machine.tests/install.shchecks
the installed file set, release tarballs and the installer under bash 3.2.
scripts/bump-version.shworks with BSD sed, and arelease-checkworkflow
installs every published release with the one-line installer on Linux and macOS.
Fixed
curl … | shis now refused with the "run this installer with bash" hint on
systems whereshis bash (macOS, Fedora), instead of running in POSIX mode.zsh g3rm0nfinds bash correctly (zsh doesn't split an unquoted$PATH).- fish: completing a comma-separated
--sectionsor--foldlist works on macOS too
(fish's own list helper needs GNU sed).
g3rm0n v0.1.2
Added
- Folding panels. Every panel folds, like an accordion, into a single title line
that keeps its key numbers, e.g.▸ ◫ Memory · 44% · 13.9G/31.2G. Open panels show
▾, folded ones▸. - Click to fold. Click a panel's title to fold or unfold it, per AI provider too.
This uses the standard xterm mouse protocol, so it works in the usual terminals on
Linux, macOS and Windows (Windows Terminal, iTerm2, Terminal.app, GNOME Terminal,
Konsole, kitty, Alacritty, WezTerm, VS Code, and tmux withmouse on). - Keyboard shortcuts.
1–8fold or unfold a section (the digit is shown on
each title),-folds everything,+unfolds everything,ror space refreshes,
andqquits.g3rm0n helplists them. - Folds are remembered between runs (
~/.local/state/g3rm0n/folded). -f,--fold LIST: start with sections or panels folded (allandnonework
too). With--once, it gives a compact snapshot.--no-mouseand the config keymouse = offleave the mouse to the terminal, for
its own text selection.ARCHITECTURE.md: the module map, the design patterns and the live loop.
Changed
- The live dashboard redraws immediately after a key press, click or window resize,
without re-sampling the machine, so rates stay accurate. Frames render about
twice as fast. - Panels are built through a registry (
lib/panel.sh), with input, key bindings and
fold state in their own modules (lib/input.sh,lib/keymap.sh,lib/fold.sh). g3rm0n setupkeeps config keys it doesn't manage (such asmouse) instead of
dropping them.- One-shot output (
--once, or piped) is unchanged and ignores saved folds unless
--foldis given. - For contributors: a new suite,
tests/ui.sh, unit-tests input decoding, the keymap,
fold state, titles and hit-testing, and drives the live dashboard with real keys
and mouse clicks in a pseudo-terminal. The docs check also covers key bindings,
config keys andARCHITECTURE.md.
g3rm0n v0.1.1
Added
- zsh completions (
completions/_g3rm0n).install.shinstalls them to
~/.local/share/zsh/site-functionsand prints thefpathline to add. - Hints in your shell's syntax. When g3rm0n or its installer tells you what to type
(exporting an API key, adding~/.local/bintoPATH), it now uses the syntax of
the shell you started it from: bash, zsh, fish, ksh, tcsh/csh, nushell, xonsh or elvish. g3rm0n setup --showexplains that API keys must be exported to be seen.- README: a Shells section (completions and key-export syntax per shell), a full
options table, and troubleshooting rows for unexported keys and a missingPATHentry. - For contributors:
- Documentation drift check (
tests/docs.sh). It fails when the README,
completions, rules or changelog disagree with the code, and when product code
changes arrive without aCHANGELOG.mdentry. It runs from a git pre-commit
hook (.githooks/pre-commit), a coding-agent stop hook (.claude/settings.json)
and CI. scripts/bump-version.shbumps the version and cuts the changelog section in one step.- Cross-shell test suite (
tests/shells.sh). It runs the dashboard, interactive
setup, installer and completions from bash, zsh, fish, dash, ksh, mksh, tcsh and
busybox sh. - New rule: documentation. There is also a project
CLAUDE.md, andAGENTS.mdis expanded.
- Documentation drift check (
Fixed
sh g3rm0n(and dash, ksh, mksh, zsh or busybox sh) now hands over to bash instead
of failing with syntax errors.curl … | shnow stops with "run this installer with bash" instead of a misleading
"Linux only" error.install.sh --helpworks when the installer is piped.- A piped install run from inside a folder that looks like a g3rm0n checkout no longer
links that folder instead of downloading the release. - Completing a comma-separated
--sectionslist in bash and fish keeps the items
already typed (cpu,me→cpu,memory). - The setup checklist accepts arrow keys from terminals in application cursor mode.
- Setup shortens home-folder paths to
~correctly even when$HOMEcontains
special characters. - The README now documents
--interval,--sectionsand--no-color.
Changed
install.sh --uninstallalso removes the zsh completion.- The installer's checkout detection was rewritten so older ShellCheck releases lint
it cleanly.
g3rm0n v0.1.0
First release of g3rm0n: a live terminal dashboard for your Linux machine and your AI usage.
curl -fsSL https://raw.githubusercontent.com/iamgerwin/g3rm0n/main/install.sh | bashAdded
- Live dashboard (
g3rm0n) with flicker-free redraws on the alternate screen;q
quits and any other key refreshes. - System panels: CPU (usage, per-core strip, load, model), Memory (used, swap,
available, cache), Disk (space on/and$HOME, read/write rates), Power (battery,
NVIDIA/AMD GPU, hottest sensor, uptime), Processes (task count, top three by CPU),
Network (throughput sparklines, interface, VPN). - Health score in the header (Healthy / Busy / Strained / Critical).
- AI Tokens panels for subscription limits: Claude, Codex, Z.ai (5-hour and
weekly windows, time to reset, headroom, plan). - AI Credits panels for prepaid APIs: DeepSeek (balance, topped-up/granted split)
and OpenRouter (credits left, spend per day/week/month, key cap). g3rm0n setup: an interactive picker for sections, AI providers and refresh
interval, plus--defaults,--showand--reset. It references credentials
(file:/env:) and never stores them.- One-shot mode (
--once, automatic when piped),--interval,--sections,
--no-ai,--no-colorandNO_COLORsupport. - User-level installer with fish PATH setup, bash and fish completions, and uninstall.
- Contribution rules in
rules/, smoke tests with a mockcurl, and CI on Ubuntu 22.04 and 24.04.