Skip to content

Releases: CVERInc/clikae

v0.6.0 — vertical orchestration

14 Jun 05:45
8761936

Choose a tag to compare

[0.6.0] — 2026-06-14

The vertical-orchestration step: clikae grows the muscle for directing a fleet of
AI CLIs that each burn their own subscription — and a sibling Claude Code skill
(conductor) stands on it. All additive; the existing command surface is unchanged.

Added

  • clikae conduct (BETA) — fan ONE prompt across N accounts in parallel,
    each running headless read-only on its own tank (its own quota), then collect
    every leg's full output and print a captured/dry table. clikae does not judge —
    it hands you N result files and an honest table; you (or a session model acting as
    conductor) pick the winner. Read-only by design so legs can't clobber a shared
    tree. New optional adapter hook adapter_audit_flags (claude, codex).
  • clikae git-id <engine> <tank> --name … --email … (issue #22) — give a tank
    an optional git commit identity. When set, clikae env also exports
    GIT_AUTHOR_* / GIT_COMMITTER_*, so commits made in that shell are stamped with
    the identity you intended — not the engine's account email (the HANDOFF §13
    mis-attribution incident). git env vars beat git config; honest limits (loses to
    an explicit git -c user.email=…, per-shell only, future commits only) are
    documented in the command's help and docs/grammar.md.
  • clikae burn --prompt-file <f> / --prompt <str> / --add-dir <dir> (issue
    #24) — the easy way to burn a write-task: clikae fills each engine's headless-write
    flags from a new optional adapter hook adapter_burn_flags (claude, codex), so you
    no longer hand-assemble -p … --dangerously-skip-permissions / exec -s workspace-write …. A cross-engine --to reroute now regenerates the flags for the
    new engine (previously it shipped the wrong engine's flags). The explicit -- <cmd…>
    form keeps working unchanged.

Fixed

  • The new adapter_burn_flags / adapter_audit_flags recipes are NUL-separated,
    not newline-separated, so a multi-line prompt survives as a single argv item (a
    newline framing shattered a prompt that itself contained newlines).
  • clikae conduct classifies a leg by its captured output, not the result file's
    size, so an empty (failed) leg is reported as a real failure rather than a false
    "captured" (an empty printf still writes a trailing newline).

v0.5.14 — final polish (released tarball == main)

07 Jun 05:32

Choose a tag to compare

Docs/comment-only, no behaviour change. Folds the post-v0.5.13 cleanups into a release so the published tarball matches main: dropped a phantom $CLIKAE_HOME/adapters TODO comment (adapter overrides live in lib/adapters/) and marked docs/HANDOFF-world-class-gaps.md historical (punch-list cleared). All v0.5.13 functionality unchanged.

v0.5.13 — burn hardening + accurate agy docs

06 Jun 15:16
5195a6c

Choose a tag to compare

Hardens clikae burn (two dogfoods) and corrects inaccurate agy docs/strings.

burn

  • Stale artifact no longer counts as success — judged by mtime change (GNU-stat-first _clikae_mtime); new --fresh clears it first.
  • --timeout falls back to a perl alarm when coreutils timeout/gtimeout is absent.
  • One-line run summary (tank / reroutes / elapsed / artifact size); usage boundary docs.

agy docs/i18n

  • State follows $HOME, but login is one global Keychain entry (so accounts switch globally, not per-shell). Removed a dead "can't rename" string; remove now names a concrete other tank.

Testing: full bats suite green on macOS and ubuntu CI; shellcheck clean; real-engine e2e validated dry/reroute/timeout/summary on macOS. macOS-developed — Linux/BSD testers welcome (see CHANGELOG / PR #21).

v0.5.12 — state schema versioning

05 Jun 13:13
556b459

Choose a tag to compare

Added

  • State schema versioning. $CLIKAE_HOME/ now carries a version marker + a forward-migration runner, so a future change to an on-disk format is safe: clikae reads it on startup and migrates if an older clikae last wrote your state (and warns, not downgrades, if a newer one did). Deliberately minimal — one version file + one runner, read-only-preserving, invisible in normal use. Groundwork for safe format changes later.

With this, clikae's quality punch-list is empty. bats -r tests = 345/345. Full notes: CHANGELOG.md

v0.5.11 — reliability + honesty polish

05 Jun 07:26
820d90c

Choose a tag to compare

Found via an "implementation vs expectation" audit.

Fixed

  • clikae watch starts reliably — its live-tail path validated the handoff target through an undefined helper and could exit before tailing. Now validated up front + test-covered.
  • clikae to codex <tank> says "FRESH (not a resume)" — codex can't resume a carried session, so the message no longer promises one.
  • Auto-reroute won't dead-end on agynext_tank skips global/single-account agy entries.
  • clikae tanks shows an agy tank's real account (signed-in email), not a (active) state marker.

Docs

  • New EXPECTATIONS.md — an "is this a bug?" guide to deliberate-but-surprising behaviours.
  • Corrections: board language key is l (not h); lang opens a picker; handoff auto-detects a local summariser; auto is claude-launched-only; and more.

bats -r tests = 337/337. Full notes: CHANGELOG.md

v0.5.10 — burn won't spend the quota you're using

05 Jun 03:48
7ada185

Choose a tag to compare

Fixed — the original "燒爆" footgun

clikae burn claude <X> could reroute its dry-fallthrough onto the tank an interactive session is live on (claude/C), silently spending that conversation's quota. (A prior log declared this fixed after testing codex only — a false clear; the claude same-engine reserve includes the active tank.)

  • burn's auto-reroute now skips a tank an interactive session holds (--allow-active to override).
  • burn's reserve is account-aware — skips a candidate sharing an account with an already-dry tank (same login = same quota).

Changed

  • Clearer agy burn-refusal; clikae tanks footnotes that agy is interactive-only / not burnable.

bats -r tests = 331/331. Full notes: CHANGELOG.md

v0.5.9 — update notice, carry-when-fuelled, honest snapshot times

05 Jun 03:04
a989892

Choose a tag to compare

Added

  • "✨ Update available" board notice (codex-style): before the tank board, a 3-way choice — update now / skip / skip until next version. "Update now" runs the right command for your install (auto-detects brew vs curl); if it can't tell, it only shows it — never a guess-run. Throttled to once/day, cached, offline-safe, opt-out via CLIKAE_NO_UPDATE_CHECK. (en-US / ja-JP / zh-TW)
  • Carry a session to another tank even when it's not dry — a third Continue choice: a deliberate account switch that keeps the conversation.
  • "· seen HH:MM" tag on snapshot reset times — codex (and agy) report a time clikae can only catch headless (codex in UTC, for whichever limit window the run hit), so the board states when we observed it and a stale/off-timezone reset reads honestly. claude is exempt (its dry is live + already timezoned).

Changed

  • burn --timeout discloses its dependency — it needs timeout/gtimeout (coreutils); stock macOS has neither, so without it the run is not bounded (the help says so).

Fixed

  • Pinned a regression test for clikae to refusing when a shell is on more than one engine.

Also closed two "世界第一讚" world-class punch-list P1s; full notes in CHANGELOG.md.

v0.5.8 — carry on from a dry tank

05 Jun 01:18
545d406

Choose a tag to compare

A dry tank no longer dead-ends, and the carry-onward logic finally picks the right tank.

Added

  • Carry on from a dry tank, right from the board. Pressing Enter on a Continue row whose tank is out of fuel now leads with carry this session onto the next fuelled tank — a real relay (same engine resumes) or a written brief (cross engine) — instead of the old resume / open-fresh choice that only put you back on the exhausted quota.
  • codex tanks can light a red dot now. codex's limit is exec-stdout-only and never lands in a transcript. clikae burn already detects it (and the reset phrase); it now persists that to a small dry-until store, so a later clikae shows codex red with its verbatim reset time. Self-clears on a successful run or a 6h TTL.

Changed

  • The carry-onward selector is now a ring — account- and fuel-aware. It circles the whole burn order (a tank earlier in your order is still a reserve), prefers a fuelled same-engine tank (a real resume) over a cross-engine cold brief, and skips any tank whose account is already exhausted (a sibling on the same login shares the dead quota). When the whole ring is dry it says so, instead of faking a hop.
  • Clearer "open this tank fresh" wording on the board (it never switched tanks).

Full notes: CHANGELOG.md

v0.5.7 — fuel-tank board, Ghostty config-file launcher, app --board, install hints

04 Jun 12:55
6a207e7

Choose a tag to compare

Added

  • clikae app --board — a .app launcher for the board (your menu of
    recent sessions + tanks), not a single tank: one double-click button for the
    whole on-ramp. Works for Terminal, iTerm2, and Ghostty.
  • A helpful "engine isn't installed" message. Switching to a tank whose CLI
    binary isn't on your PATH now reports it clearly — with a per-engine install
    hint (e.g. npm install -g @anthropic-ai/claude-code) — instead of a bare
    exec: …: not found. clikae switches accounts; it doesn't install the CLI.
    (New optional adapter hook adapter_install_hint.)

Changed

  • The board shows only burnable fuel tanks (claude / codex / agy). Tool-CLI
    tanks (gh, npm, aws, …) aren't AI sessions — "launching" one only printed a
    usage screen — so they now live in clikae tanks (the full inventory), not on
    the board. The adapters are unchanged; only their presence on the board is.
  • Ghostty .app launchers pass their command through a trusted config file
    (--config-file=) instead of -e. Ghostty pops an "Allow Ghostty to execute…?"
    dialog for an externally-injected -e command (so a -e launcher looked like an
    empty shell until you clicked Allow); a config file is trusted, so the window
    just opens. The config is located at runtime via path to me (so the .app keeps
    working if moved), and the bundle is re-signed after the config is written so
    Apple Silicon doesn't block it.

Fixed

  • The board no longer renders blank when there are 0 fuel tanks (e.g. only
    tool-CLI tanks): a grep -c . returning exit 1 on a zero count aborted the whole
    render under set -eo pipefail.

v0.5.6 — fix: in-use scan best-effort (no abort on a failing ps)

03 Jun 21:15
782489c

Choose a tag to compare

Fixed

  • rename / migrate / remove no longer abort when the in-use process scan
    can't run.
    v0.5.5's new cross-shell guard (lib/core/proc.sh) leaked
    ps eww's exit code, so under set -eo pipefail a non-zero ps — on a
    locked-down host, a CI runner, or a restricted sandbox — took the whole command
    down instead of degrading to "couldn't scan, proceed". The scan is now truly
    best-effort, as HANDOFF §11 intended (no reading ⇒ no users found, never a hard
    error). Regression test added (a deliberately failing ps must not abort rename).