Skip to content

Releases: Jakeintech/waybill

waybill 1.4.0

Choose a tag to compare

@Jakeintech Jakeintech released this 17 Aug 19:41

[1.4.0] - 2026-08-17

Added

  • github-issues tracker adapter — GitHub Issues as the tracker of
    record: waybill sync-plan --tracker github-issues. Keys are GitHub's
    own cross-repo syntax (owner/repo#15), derived purely from the issue
    URL leaf; the conformance kit gained a matching derivation check (a
    composed key passes only when re-deriving it from the verbatim URL leaf
    reproduces it exactly) and adapters may now declare their tracker's own
    keyPattern — the metering branch pattern is deliberately untouched.
    Labels map to work_type, milestones to sprint, not_planned
    closures are dropped as cancelled work, PR rows from the REST /issues
    endpoint are skipped, and points stays null (GitHub has no estimates;
    a point scale is never invented). Both the gh CLI and REST payload
    shapes are accepted. Own-data scoping keeps unassigned issues and drops
    issues assigned only to someone else.
  • Closing-keyword linkageMergedChange gains closes:
    "Fixes #12" in a PR body, MR description, or commit body now pairs the
    change with its tracker item (GitHub's actual linkage mechanism —
    title/branch pattern matching alone was structurally blind to it).
    Keyword-per-reference grammar mirrors GitHub exactly; bare #15 expands
    against the change's own repo. git-local now captures commit bodies and
    treats a squash-merged commit carrying a closing ref as a merged change,
    so linear-history GitHub-flow repos get receipts too. The conformance
    kit verifies every closes ref against a closing keyword in the raw
    payload.

waybill 1.3.0

Choose a tag to compare

@Jakeintech Jakeintech released this 17 Aug 19:03

[1.3.0] - 2026-08-17

The open-issue batch: every UX issue filed against 1.1.1 (#6#15),
implemented with a regression test each.

Added

  • A real pause switch (#6)metering.enabled: false now stops
    everything: the SessionEnd hook captures nothing, mine and meter
    (all paths, --otel included) exit 0 without touching the ledger, and
    waybill status reports metering: PAUSED so the state is never
    silent. The never-read metering.sources field is removed rather than
    left as a decoy; old configs carrying it load unchanged.
  • First-run one-shots (#8) — the SessionStart path now speaks at the
    two highest-intent moments: not-initialized (“say 'initialize my
    waybill ledger' — 60s, no auth”) and metered-but-nothing-logged (“say
    'sync my ledger' for a receipt from your git history”). At most one
    line per session, each state at most once ever, never stacked on a
    pacing notice.
  • notices.level (#9) — one switch for everything Waybill says
    first: normal (default), minimal (pacing thresholds and errors
    only — the renewal reminder obeys it), off (metering runs, Waybill
    never speaks unprompted). Documented in the README next to the privacy
    commitments, with budgets.renewal_reminder_days surfaced alongside.
  • detail level (#10)terse / standard / full, mirroring
    audience: detail_default in config, --detail on query, echoed
    in the query envelope for the rendering layer, with rendering tables in
    the spend/report skills. Floor rule: terse may never drop
    unattributed %, confidence values, low_confidence labels,
    evidence-tier labels, or ranges — shorter never means less honest.
  • bin/waybill launcher (#11) — a POSIX-sh launcher execs the
    bundled engine, so every skill now invokes
    "${CLAUDE_PLUGIN_ROOT}/bin/waybill" <command> — the node <path>.mjs
    incantation, its zsh word-splitting caveat, and the per-skill setup
    block are gone. The validator rejects any reintroduction of the old
    idiom.
  • Status is the menu (#15)waybill status ends with a
    state-derived next: line of skill trigger phrases (resolve the inbox
    when it has items, process pending captures when they wait, sync for
    the first receipt, build the pitch once entries exist), so the health
    screen teaches the conversational UI, not just engine subcommands.
  • The exit path, documented (#7) — a README section covering pause,
    quiet, export, uninstall (claude plugin uninstall waybill@waybill),
    and full deletion (rm -rf ~/.waybill is the whole footprint).

Fixed

  • --json is honest everywhere (#13)mine --json emits the
    structured run summary (mined_new, remetered, gaps,
    already_current, plus paused/locked states), export --json
    means --format json, and contradictory flags (--json --format csv)
    are an exit-2 error instead of a silent choice.

waybill 1.2.0

Choose a tag to compare

@Jakeintech Jakeintech released this 17 Aug 18:45

[1.2.0] - 2026-08-17

Added

  • Bundled Anthropic pricing (D6, reversed)waybill init now
    auto-imports current Anthropic list rates on a fresh install, and
    waybill pricing import [--model <id-or-alias>] loads them any time
    (references/anthropic-pricing.json, exact dated model ids, with
    family-alias resolution like claude-sonnet-4claude-sonnet-4-6).
    The original 1.1.0 call — no prices ship, the user cites every rate — is
    reversed: bundled rates are the default now, and waybill pricing set
    still overrides any single model's rate whenever a different basis
    applies.
  • waybill init setup summary — a "Configured" / "Needs action" report
    covering the ledger, identity, repo scope, pricing basis, transcript
    retention, and whether GITHUB_MCP_PAT is set (with the exact export/PAT
    instructions when it isn't). Idempotent: re-running init on an existing
    ledger never re-imports pricing or touches a rate set by hand.
  • waybill pricing import — load bundled Anthropic list rates on
    demand, with optional --model <id-or-alias> filter (family aliases
    like claude-sonnet-4 resolve to dated model ids).

Changed

  • Skills, docs, and ROADMAP updated for the D6 reversal: pricing is
    configured by default, not an onboarding hurdle.

waybill 1.1.1

Choose a tag to compare

@Jakeintech Jakeintech released this 17 Aug 15:53

Onboarding polish, prompted by a fresh-install plugin-panel error.

  • Clean install, clean panel — the bundled GitHub MCP server no longer shows a red "missing GITHUB_MCP_PAT" error before you've set a token: it loads with a default-empty expansion, and the GitHub upgrade simply stays inactive until you connect it.
  • waybill status now helps you connect — it detects the missing PAT and prints the exact fix: export GITHUB_MCP_PAT="$(gh auth token)" when you already have an authenticated gh CLI, otherwise the fine-grained-PAT URL; plus the Atlassian /mcp OAuth pointer. Environment checks only — no network, ever.
  • waybill --version + engine version in the status header, and a README Updating section: claude plugin update waybill@waybill, restart, done.
  • Full test plan at docs/testing.md: invariant→suite map, golden protocol, CI matrix, manual matrix, the FINALPASS release gate, and honest coverage gaps.

CHANGELOG

waybill 1.1.0

Choose a tag to compare

@Jakeintech Jakeintech released this 17 Aug 15:42

Driven by a hands-on user critique — every item reproduced in a real session before it was fixed.

New verbs

  • waybill status — one screen of ledger health (init, retention with the exact settings edit, mining/gaps, inbox, unattributed %, verify verdict).
  • waybill export — the spend ledger as CSV/JSON, window- and audience-aware. Receipts without hand-written jq.
  • waybill pricing show|set — pricing onboarding; all five rates plus a cited version date required. No rates ship — an accounting tool doesn't guess.

Fixed

  • zsh: the documented $WAYBILL verify idiom silently failed on macOS's default shell; skills now use node "$WAYBILL" <cmd>.
  • story:SHA-256 — the liberal key pattern minted a phantom story from commit messages about SHA-256 escrow. Key-plausibility gating (technical-prefix stoplist + authoritative project_keys allowlist) ships as rules_version 2: stale sessions re-meter automatically and phantom attributions are superseded, history preserved. Verified live: 16 sessions re-metered, phantom gone, conservation green.
  • mine output reconciles (N new · M re-metered · K gaps · P current); bootstrap --from/--to; totals.shipped_metered_tokens rename kills the "0 tokens metered" footgun; spend/report skills default to brevity.

CHANGELOG · DECISIONS

waybill 1.0.1

Choose a tag to compare

@Jakeintech Jakeintech released this 17 Aug 15:32

Patch release from a second adversarial review pass (four lenses over the 0.4/1.0 delta; 12 confirmed findings, every one fixed with a regression test — 101/101 suite).

  • OTel correctness: temporality-aware parsing (cumulative snapshots take the latest point, never the sum), grown-export re-ingestion supersedes instead of double-counting, and a transcript appearing later retires a session's OTel events — transcript wins, sources never mix, in either order.
  • Reconcile classifies by supersession chain: corrections over open entries still ship; items re-resolved after a reopen clear the flag.
  • Pacing windows committed points on the chain-origin timestamp; stale-lock reaping is race-free; assorted CLI hardening.
  • Docs fully current at 1.0: the frozen schema reference documents every shipped field (waste, reopened, source otel, renewal_reminder_days), README describes what shipped, CLI help is complete.

CHANGELOG · VALIDATION · DECISIONS

waybill 1.0.0 — Trustworthy at scale

Choose a tag to compare

@Jakeintech Jakeintech released this 17 Aug 05:52

Schema v2 is frozen. The fact streams are the compatibility surface from here on — additive is minor, breaking is major and ships with migration tooling (migration policy).

  • Waste diagnostics — deterministic retry-loop and duplicate-read detection per turn, counts only (never commands or paths), rolled up per story: what the tokens bought, and what they wasted.
  • Rework/reopen tracking — reopened-after-shipping items are counted in report costs without erasing the shipped work. The unflattering number that makes the flattering ones believable.
  • Skill trigger evals in evals/, CI-gated behind an API key; allocation-cycle reminder nudges once, N days before the grant renews.
  • Linear + GitLab adapters, conformance-tested.
  • Full gate: 94/94 tests, reproducible build, conservation verified against this machine's real 1.7B-token history.

CHANGELOG · VALIDATION · DECISIONS

waybill 0.4.0 — Answerable

Choose a tag to compare

@Jakeintech Jakeintech released this 17 Aug 05:44

Milestone M2 "Answerable": every canonical spend question is one interaction away.

  • spend skill — "where am I spending", "what did PLAT-482 cost", "how's my burn", one-tap attribution-inbox resolution.
  • waybill resolve — resolutions are resolver inputs (rule 0, confidence 1.0): they re-attribute the turn via superseding events and survive every future re-meter. --pin / --repo-default make them durable.
  • Budgets & pacing — linear + work-weighted pace, per-epic envelopes, and a SessionStart notice that fires once per 80%/100% crossing. Never nagging, never blocking.
  • OpenTelemetry secondary sourcemeter --otel fills sessions whose transcripts were pruned; the transcript always wins, sources never mix.
  • Linear adapter, conformance-tested; sync-plan --local-repo makes the zero-auth floor self-contained.
  • Fixed: all ten adversarially-verified review findings from 0.3, each with a regression test — including per-session checkpoint versions, the attribution-inputs fingerprint (pins now take effect without transcript growth), and supersession-aware shipped classification.

CHANGELOG · VALIDATION · DECISIONS

waybill 0.3.0 — Believable + Metered

Choose a tag to compare

@Jakeintech Jakeintech released this 17 Aug 04:10

Milestones M0 "Believable" and M1 "Metered". The deterministic token-accounting engine ships: every Claude Code token metered from local transcripts, attributed to the story it served with a per-event resolver name and confidence, conserved (Σ attributed = Σ observed, per session), and verifiable offline with waybill verify.

Highlights

  • Zero-auth first value: init + bootstrap render a receipt from local git history in under a second — no accounts, no tokens, no OAuth.
  • SessionEnd hook spawns a detached, dependency-free miner; sessions are metered as you work. No model calls, no network, no telemetry — everything lives in ~/.waybill/.
  • Schema v2: monthly-sharded append-only streams, deterministic content-derived ULIDs, durable session receipts that keep conservation checkable after transcripts are pruned.
  • SHA-256 pre-registration escrow: estimates sealed at write time, backdating refused, seals re-verified by waybill verify.
  • Attribution ladder (pin → active entry → transcript evidence → branch → repo default → unattributed) with an attribution inbox for ambiguity — tokens are never dropped and never guessed into a story.
  • Contract-first Jira/GitHub/git-local adapters with a conformance kit; deterministic sync with baseline derivation; audience redaction (self/internal/external); exact fixed-point pricing.

Full details: CHANGELOG, gate evidence in VALIDATION.md, judgment log in DECISIONS.md.

Install

claude plugin marketplace add Jakeintech/waybill
claude plugin install waybill@waybill