Repository navigation
v1.1.0
Status line segments, dependencies between customizations, and per-customization
logs/cache — plus the first customization built on top of it, an HBAR price
ticker.
Highlights
- Status line segments —
statuslineis now a host: it contributes
nothing on its own, just collects segments declared by other
customizations (resources/statusline-segment.json+ an executable),
orders them, and joins the non-empty ones with a dim│separator. A
segment that fails or is missing becomes a red<name>!marker instead of
breaking the line. A segment's manifest names its executable by filename
only (e.g.hbar-segment.sh), resolved against the sharedbin/at
runtime rather than an absolute path baked in at install time — so the
same install keeps working if~/.claudeis later mounted somewhere with
a different$HOME(for example, inside a container). Full contract:
customizations/statusline/docs/statusline-segments.md. claude-session-info— the model/cwd/git-branch/tokens/cost line this
repo used to hard-code intostatuslineis now its own segment
customization, installable and replaceable independently.hbar-addicted— a new segment showing the HBAR/USD price with its
1h/24h change and last-update time. Builds its own price history locally
(cryptoprices.cc/HBARonly returns the current price), refetches in the
background so rendering never blocks on the network, and sets
statusLine.refreshIntervalso the line keeps updating during idle
sessions.- Dependencies between customizations — an optional
customization.meta.jsondeclaresdescriptionandrequires.
install-or-update.shexpands what you name to its full transitive
closure and tells you when it pulls in a dependency;uninstall.shrefuses
to remove one still required by an installed dependent. Settings fragments
are now merged in topological order (dependencies first) instead of
directory-name order, so a customization can override a setting from
something it requires. - Install manifest —
resources/installed.jsonis now the source of
truth for what's installed, fixinguninstall.sh's partial-uninstall path
(it used to assume every customization in the repo was installed). - Per-customization logs and cache —
logs/<name>/andcache/<name>/
are created for every installed customization and removed with it;
logs.shtakes an optional customization name. status.shcatalog — replaces the flat "customizations in repo" line
with a table of every customization, its dependencies, its description,
and whether it's installed.- Tested on Linux, not just verified at the surface —
scripts/test-linux.shnow
runs the entire test suite (tests/, which includes
enforcement/enforce-custom-claude-code-settings.py's tests)
against real Linux/GNU coreutils inside a container, in addition to its
existing install/status/enforce-now/uninstall verification. New
scripts/test-all.shis a single entry point: the full suite natively on
macOS, plus the Linux suite always (via Docker for the install/uninstall
verification; the test suite itself also runs without Docker when the host
is already Linux, e.g. a dev container — directly there instead of inside
a disposable container). This caught (and fixed)
two macOS-only assumptions that had slipped into this release's own new
code:hbar-price-fetch.sh's stale-lock check called BSD'sstat -f
before GNU'sstat -c, which crashes on Linux instead of falling back
(GNU's-fis a real, different flag, not an error); andstatus.sh's
catalog table used a multi-byte dash whose display width it computed with
a locale-dependent character count, misaligning columns under the plain
C/POSIXlocale common in minimal containers.
Behavior changes
statuslinealone is now silent. It used to render model/cwd/branch/
tokens/cost by itself; that behavior moved toclaude-session-info, which
you need to install too (install-or-update.shdoes this automatically
when installing everything, but not if you'd previously installed only
statuslineby name).- Installing by name is now a union, not a replacement. Previously,
install-or-update.sh some-customizationrebuiltsettings.enforced.json
from only the named customization(s), silently dropping enforcement of
everything else already installed. It now adds to the installed set; use
uninstall.shto remove something. - Logs moved:
hbar-price.log-style flat files are gone in favor of
logs/<name>/*.log; the watchdog's ownlogs/enforce.logis unaffected.
Requirements
jq, python3, macOS or Linux — unchanged. hbar-addicted additionally
needs curl and awk.
Upgrading
Re-run scripts/install-or-update.sh (with no arguments, to pick up
claude-session-info alongside statusline and get the status line back).