Skip to content

Releases: tyejcoleman/tokenroom

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 08:07

The first stable release under the new name (0.6.0-rc.1 claimed tokenroom on npm
2026-07-01). Gated on — and released with — the batched ADR-9 wording eval for every
post-0.3 wording item (ADR-19/20/22/23/24): PASSED
, all equipped assertions green on
the Sonnet tier with clean naive-harm baselines for the ADR-24 items
(eval/v3-wording/results/2026-07-02-batched-post-0.3-wording.md).

Fixed (since 0.6.0-rc.1)

  • Account-switch banner no longer false-fires on a same-account window rollover, and
    the pair advisor will never recommend switching to the profile you are already on
    (ADR-24 hardening).
  • Hooks never mislead: every quota-consuming hook honors the per-account show-gate
    (ADR-21), and a malformed resume.json suppresses the readiness stamp instead of
    garbling it (ADR-5).
  • Eval harness: eval/v3-wording/ gained the seven batched post-0.3 scenarios
    (S-R/S-G/S-B/S-Q/S-W/S-E/S-K) + rubric.

Added

  • Multi-account profiles + smart switch advice (ADR-24). For users toggling two
    subscription accounts via /login:
    • Instant switch detection — the payload is ground truth: a statusline render whose
      account key differs from the session's mapping remaps in that same tap invocation
      (payload wins, always), logs an account_switch event, and the next stamp announces
      the switch once with the NEW account's numbers. Fixes the field capture 2026-07-01
      where a session stamped "0% left" for ~20 minutes after switching to an account at 98%.
    • Echo honesty — the tap tracks when window VALUES last moved
      (values_changed_at); a critical figure frozen >5 min while a sibling account has
      values-newer data is stamped as a possible pre-switch echo ("figures refresh on the
      next completed turn"), never asserted as fresh.
    • Named profiles are identity (ADR-21's phase keys give isolation, not identity):
      tokenroom account label <name> / list / fold <key> <name> /
      config-dir <name> <path>, stored in ~/.tokenroom/profiles.json. Heuristic folding
      only ever HINTS (doctor + account list); zero profiles → behavior unchanged.
    • Pair-aware descent — low active window + a fresh other profile → stamps and
      mid-turn bands say "finish this unit at full speed, then switch (/login or
      tokenroom switch) for zero downtime; defer only if BOTH profiles are thin"; the 1%
      floor becomes land-and-switch. Healthy active → HUD-only terse alt '<label>' ≈X%.
    • tokenroom switch (profile decision table + recommended move) and
      tokenroom run [--profile X] (launch claude under the best/named profile's
      config dir via the official CLAUDE_CONFIG_DIR env var — launch-time selection only;
      auth files are never read or written, nothing is swapped mid-session).
    • New stamp/advice wording joins the batched ADR-9 eval before the npm release.

Fixed

  • MCP tools no longer report whichever account rendered last (ADR-21 gap). The server
    now resolves quota via the tap's session map: one recently-active account → that
    account's state; two or more active in the last 10 minutes → quota is withheld with an
    explicit attribution: "ambiguous — quota withheld …" on
    resource_state/estimate_remaining/fit_check/plan_resume instead of ever
    returning the wrong account's numbers.

Changed

  • Renamed: headroom → tokenroom (ADR-23). The practical owner of the name "headroom"
    is headroomlabs-ai/headroom (55k★, whose CLI binary is literally headroom — a direct
    bin conflict), with a commercial extraheadroom.com in the same niche; tokenroom was
    verified free on npm 2026-07-01. Everything user-visible renames with it: package
    tokenroom, bin tokenroom, state dir ~/.tokenroom (installer COPIES ~/.headroom
    across once, never moves/deletes it), env TOKENROOM_DIR/TOKENROOM_DISABLE (clean
    break), [tokenroom] stamp prefix (mechanical branding; ADR-9 eval batched to the
    harden round), MCP server tokenroom, skill tokenroom, repo
    github.com/tyejcoleman/tokenroom. Install now REPLACES any pre-rename headroom
    statusline/hooks/skill/MCP/CLAUDE.md-block artifacts in place — never duplicates them —
    and uninstall removes both namings; doctor hints while a stale ~/.headroom remains.
    Historical records (past CHANGELOG entries, prior ADR bodies, eval results/fixtures)
    keep the old name.

Removed

  • ARM mode (armed resume, the autonomous headless executor) — removed entirely
    (ADR-22, supersedes ADR-16).
    src/arm.mjs, the launchd plist machinery, headless
    claude -p invocation, headroom resume --arm/--disarm, the resume-run entry
    point, the auto_arm config flag, and their tests are gone. The 2026-06-15 platform
    change moved programmatic use (claude -p, SDK) to a separate monthly API-priced
    credit pool, so an armed resume no longer salvages expiring subscription quota — it
    spends new metered credits. Autonomous continuation moves to the separate Conductor
    package on official in-session surfaces (Stop hook + scheduled wakeups + cron
    routines), carrying ADR-16's consent principle with it. The awareness half stays
    untouched: plan_resume, the resume-plan file, the HUD reset countdown /
    ✓ deferred work ready, readiness stamps, and headroom resume [--clear].

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 20 Jun 19:32

Fixed

  • Weekly "HOT pace" no longer false-fires right after the reset. enrichWeekly
    flagged hot whenever the extrapolated pace exceeded 1.15× sustainable, even when only
    a sliver of the week had elapsed — so a short burst in the first hours (e.g. 4% used in
    ~4h) projected "you'll exhaust the week" with 96% left, which isn't actionable. HOT now
    additionally requires that a material share of the weekly budget is actually used
    (seven_day.used_pct >= 15, ≈ one day's sustainable allowance); below that the stamp
    shows the calm "cruising" form. Deliberately a usage floor (not an elapsed-time floor),
    so a genuine heavy early burn still surfaces.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 19 Jun 19:31

Changed

  • Aggressive descent on the rate-limit window (ADR-19). The agent now works at FULL
    SPEED until 5% remains (was: "descend, small atomic steps" from 10%), is told to be
    velocity-mindful but keeps working from 5% down to a 1% floor, and only does
    finishing-moves at ≤1% (was: "start nothing new" at 5%). The 1–5% band keeps a stranding
    guard (prefer small divisible steps, checkpoint often, defer huge/indivisible new tasks),
    and the velocity-aware overrides still keep full speed when the window resets before it
    would exhaust. Adds a 1-band to every governor profile so the floor message fires.

Added

  • Multi-session burn awareness (ADR-20). The stamp now discloses the combined burn
    rate
    across all sessions (≈tok/min) and how many are actively burning, and flags an
    anomalous burner — a session burning ≥3× the median of the others — naming whether
    it's this session (ease off) or another (the shared window can drop fast; re-check
    often). Flow samples are tagged by session_id to attribute per-session burn.

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 19 Jun 01:46

Changed

  • Two resources, two opposite postures — made unmistakable. Context is a burn-through
    resource; quota (rate-limit) is a wary, paced one. The mid-turn "context getting low"
    nudge now leads with "BURN IT, don't conserve it" and states outright that low context
    is never a reason to slow, stop, hand back control, wrap up, or get cautious — the only
    thing it asks is that you keep the handoff current, then keep working at full speed until
    auto-compaction fires and refreshes you. It closes by contrasting the two budgets so the
    agent never applies quota-caution to context (or context-fearlessness to quota). The
    intelligent, reset-aware quota guidance (descend/defer unless the window resets before
    you'd run dry) is unchanged — that resource stays wary.
  • Default context nudge held to the core (~4% left). ctx_bands default lowered from
    [8, 4] to [4], so the handoff nudge fires once near the ceiling instead of at 8% —
    the agent uses nearly all its context before prepping a handoff. The token-floored
    "super close to auto-compaction" message remains the final safety net; powersave keeps
    its earlier 10% heads-up for thrift.

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 19 Jun 01:46

Changed

  • Power through to auto-compaction — stop getting "scared" near the context ceiling.
    Field report: agents were stopping/handing back control as context filled, which prevents
    the very auto-compaction that would refresh them and continue the task. The skill now
    states it outright: stopping near the ceiling strands the task; keep producing work
    until Claude Code auto-compacts, then resume from the handoff. Removed "context at the
    compaction floor" from the legitimate stop-conditions list — only quota (rate-limit)
    ever justifies stopping; context never does.
  • Non-redundant handoff cadence (throughput). The mid-turn ctx logic no longer nags for
    a handoff once one was saved recently (kills the redundant 6%→3% re-saving). Cadence is
    now: refresh at task boundaries, plus one velocity-timed "super close to
    auto-compaction" nudge (fires once, bypasses the throttle, suppressed if already saved).
    Updates surface "handoff already saved Nm ago" and a "≈N tool calls at this pace" estimate
    (from per-tool-call context growth) so the agent knows it's captured and how close it is.
  • Context handoff-nudge held later — utilize context to the core. ctx_bands lowered so the
    "context getting low" nudge fires near the ceiling (~4–8% left) instead of at 25%/40%. The
    handoff is one cheap call that only needs to land before compaction, and the velocity-timed
    "super close" message remains the final safety net — so the agent uses nearly all its context
    before prepping a handoff, rather than slowing down early.

Added

  • Current time + timezone awareness. Every prompt stamp now leads with the user's local wall
    clock (e.g. now Thu, Jun 18, 17:53 America/Los_Angeles) so the agent can reason about
    time-of-day, scheduling, and deadlines. Labelled distinctly from quota to avoid the
    clock-time/budget conflation the stamp already guards against.
  • Reset-aware quota guidance. Mid-task advice no longer says "descend / slow down" when the
    5h window will RESET before the velocity engine projects exhaustion (or a reset is ≤10 min
    away) — the real risk is running dry before the reset, not a low %. Deterministic from
    resets_at + projected_exhaustion; optimism requires a positive signal, so unknown burn
    stays cautious.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 18 Jun 06:41

Added

  • Continuity handoff doc — the agent's living, canonical working-doc (T2.29, ADR-18).
    A new handoff MCP tool (the fourth write surface) lets the agent maintain an evolving
    markdown
    document a fresh instance reads to resume fully: mission, current state,
    progress, exact next steps, key references, decisions + why, the user's own
    directives/corrections
    , system/process improvements discovered, and open questions.
    Stored at ~/.headroom/continuity/<session>.md, latest-wins, capped per section, session-
    guarded, pruned after 7 days. Re-injected at SessionStart(source=compact) as a pointer +
    digest
    (ADR-11 style — the doc lives on disk, so point, don't dump). Richer and more
    durable than the terse checkpoint. headroom handoff [--path] prints the current doc.

Changed

  • Skill: context-pressure is a write-the-handoff signal, not a stop sign. Field report:
    agents were getting "tired"/cautious as compaction approached and slowing down or stopping.
    The "near the context ceiling" section is rewritten into a handoff ritual — keep a living
    handoff doc, refresh it when context runs low, then keep working at full speed; let the
    window burn to the floor because compaction is automatic and your doc + ground truth are
    re-injected right after it. The mid-turn ctx band update now says the same. (Wording
    eval-gated per ADR-9; validating in soak.)

v0.3.3

Choose a tag to compare

@github-actions github-actions released this 14 Jun 00:29

Changed

  • Skill: "a clean boundary is a checkpoint, not a stop." Agents were treating natural
    pause points (tests green, a commit landed) as stopping points even with healthy budget
    and work remaining. The skill now says to continue through, and to stop ONLY when:
    nothing valuable is left, a genuine blocker needs the user, or budget is truly dry
    (≲2%). The worth-it test brakes both ways — no premature stop, no runaway. Completes the
    anti-timidity / descent-profile arc. (Wording eval-gated per ADR-9; validating in soak.)

Docs

  • Product-boundary docs: the self-evolving harness is Keyoku's, not headroom's
    (EVOLVING-HARNESS.md); headroom is the awareness/sensor layer and friction feed. The
    suggest miner was prototyped and deferred (design kept in SUGGEST.md) — thinness
    applied to ourselves.

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 13 Jun 03:21

Added

  • Weekly cruise control: the 7d window is paced, not just measured — pace ratio
    (used-fraction vs elapsed-fraction), sustainable %/day allowance, and projected weekly
    exhaustion, surfaced in stamps ("weekly pace is HOT… ≈5%/day sustains"), HUD
    (week 26% left ⚠hot pace), fit_check advice, and burn.weekly in the state schema.
    Agents throttle bulk work when hot and cruise the week to its reset without going dark.