Skip to content

v1.1.0

Choose a tag to compare

@Neurone Neurone released this 12 Sep 02:32
· 2 commits to main since this release
d754764

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 — statusline is 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 shared bin/ at
    runtime rather than an absolute path baked in at install time — so the
    same install keeps working if ~/.claude is 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 into statusline is 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/HBAR only returns the current price), refetches in the
    background so rendering never blocks on the network, and sets
    statusLine.refreshInterval so the line keeps updating during idle
    sessions.
  • Dependencies between customizations — an optional
    customization.meta.json declares description and requires.
    install-or-update.sh expands what you name to its full transitive
    closure and tells you when it pulls in a dependency; uninstall.sh refuses
    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.json is now the source of
    truth for what's installed, fixing uninstall.sh's partial-uninstall path
    (it used to assume every customization in the repo was installed).
  • Per-customization logs and cache — logs/<name>/ and cache/<name>/
    are created for every installed customization and removed with it;
    logs.sh takes an optional customization name.
  • status.sh catalog — 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.sh now
    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.sh is 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's stat -f
    before GNU's stat -c, which crashes on Linux instead of falling back
    (GNU's -f is a real, different flag, not an error); and status.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/POSIX locale common in minimal containers.

Behavior changes

  • statusline alone is now silent. It used to render model/cwd/branch/
    tokens/cost by itself; that behavior moved to claude-session-info, which
    you need to install too (install-or-update.sh does this automatically
    when installing everything, but not if you'd previously installed only
    statusline by name).
  • Installing by name is now a union, not a replacement. Previously,
    install-or-update.sh some-customization rebuilt settings.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.sh to remove something.
  • Logs moved: hbar-price.log-style flat files are gone in favor of
    logs/<name>/*.log; the watchdog's own logs/enforce.log is 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).