Skip to content

0.1.3 - 2026-09-17

Choose a tag to compare

@github-actions github-actions released this 17 Sep 16:16

Release Notes

Added

  • hamstik org use <slug> and hamstik project use <key> now auto-create a
    config profile on-the-fly when HAMSTIK_TOKEN is set but no stored
    credential or config profile exists. The CLI calls GET /api/v1/me to
    populate the new profile (host + identity), then validates the requested
    organization or project through the API before persisting it as the
    default. This matches the existing env-token auth flow used by other
    commands and eliminates the previous "no active profile" error for
    headless or ephemeral setups (org, project).

  • hamstik work await <KEY> polls until a Work Item reaches a server-reported
    condition (repeatable --status, --timeout up to 1h with exponential
    backoff, human-readable and --json output). (CLI-25)

  • Global configuration commands (CLI-6): hamstik config path|list|get|set|unset
    manages safe, non-secret defaults in ~/.config/hamstik/config.toml
    (editor, pager, output, git_branch_template, profile,
    organization, project). set rejects credential-like values (use
    hamstik credential or the OS keyring), and get/set/unset expose
    stable { key, value } or { path } JSON envelopes. Unknown keys and
    unsupported schema versions fail deterministically with exit code 10.

  • Opt-in live Public API v1 acceptance suite (CLI-6):
    cargo test --test live_acceptance -- --test-threads=1 --ignored drives the
    real hamstik binary against a dedicated test Organization/Project over
    documented /api/v1 routes. Gated behind HAMSTIK_TOKEN, HAMSTIK_HOST,
    HAMSTIK_ACCEPTANCE_ORG, and HAMSTIK_ACCEPTANCE_PROJECT (plus
    HAMSTIK_ACCEPTANCE_MUTATIONS=true for writes) and #[ignore]d, so offline
    cargo test only compiles it. A read-only smoke scenario proves auth, TLS,
    context, and the read routes; a mutation scenario exercises the full
    lifecycle — idempotent create/replay, edit, a real ETag conflict, status
    transitions, labels, comments, links, watchers, byte-for-byte attachment
    round-trip, sprints, and bulk create/update/transition — cleaning up every
    Work Item it created (delete, archive fallback) without masking the primary
    failure. All created resources carry a run-unique acc-<unix-ts>-<pid>
    marker; labels and sprints (undocumented delete routes) are the only
    residue. Runbook: crates/hamstik-cli/tests/live_acceptance/README.md;
    a manual workflow_dispatch job (.github/workflows/live-acceptance.yml)
    runs it against a configured test deployment when repository
    variables/secrets opt in.

  • Doctor support bundle (CLI-6): hamstik doctor --bundle <path> produces a
    versioned ZIP bundle (bundleVersion: 1) containing a redacted
    doctor-report.json, context-explain.json, cli-info.json,
    api-compatibility.json, config-metadata.json, and
    bundle-manifest.json. The bundle never contains PAT values, Authorization
    headers, credential-store contents, token-bearing environment variables, or
    credential-bearing proxy URLs. It is compatible with --local-only; remote
    checks are safely skipped when the flag is active. Automated redaction unit
    tests verify all bundle sections are secret-free.

  • Work Item context bundle (CLI-21): hamstik work context <KEY> returns a
    one-invocation, data-only read bundle for a Work Item — metadata,
    description, server-reported links, labels, recent comments, recent
    activity, and the authenticated user's watcher state — composed entirely
    from Public API v1 reads. --json emits a stable, deterministic envelope
    (bundleVersion: 1); --format markdown renders the same content
    readably; --comments N, --activity N, and --compact bound the
    output size, and every clipped or omitted section carries an explicit
    marker (nothing is silently truncated). The bundle is data, not
    instructions: no workflow meaning is computed client-side, and the
    command is strictly read-only.

  • Public API v1 passthrough (CLI-20): hamstik api request /api/v1/...
    and the shorthand hamstik api /api/v1/... call any documented Public
    API v1 route through the official CLI, in the spirit of gh api —
    including server routes newer than the installed CLI (the OpenAPI
    snapshot is never an allowlist). GET is the default; --method
    POST/PATCH/PUT/DELETE, --body-file -|<file>, --field key=value,
    --query key=value, and allowlisted --header overrides
    (Accept, Content-Type, If-Match — Authorization and any
    credential-bearing header are rejected) reuse the typed commands'
    transport: profile auth, TLS/CA bundle, retries with Retry-After
    handling, automatic idempotency keys for POST/DELETE reused across
    internal retries, request-ID preservation, redacted diagnostics, and
    stable exit codes. --dry-run previews the exact request with the
    versioned preview envelope; --json emits
    { method, path, data, meta? } with meta carrying requestId,
    etag, idempotencyReplayed, location, and the rate-limit snapshot.

  • Canonical Agent Skill installation and validation (CLI-3): the new
    hamstik agent skill install writes the skill bundled into the binary
    (skills/hamstik/SKILL.md) into an Agent
    Skills discovery location — the current project's portable
    .agents/skills/hamstik/ directory by default, the user-level portable
    location with --global (override with HAMSTIK_SKILL_HOME). Re-running
    an install is idempotent when the installed file is identical; a locally
    modified installed skill is never silently overwritten — --force is
    required for replacement. hamstik agent skill check validates frontmatter
    CLI-version compatibility plus every referenced command path and option
    against this binary's live hamstik commands --json manifest, for the
    installed skill by default (project location, then global) or an explicit
    file path (CI use); failures exit nonzero.

Fixed

  • Network diagnostics are now classified from the concrete transport error
    source chain (DNS, connection, timeout, TLS) instead of pattern-matching
    the rendered error text, so a library rewording can no longer silently
    degrade doctor and error output to the generic network stage.
  • hamstik org use and hamstik project use now make the auto-created profile
    the active profile when they create it under an ephemeral HAMSTIK_TOKEN.
    Previously the default organization/project was written into a profile that
    profile selection never chose, so doctor and every command reported
    "organization not selected" even though the config contained the default.
  • Auto-created profiles now seed the user's default organization from
    GET /api/v1/me (matching auth login), and configuration write failures
    during org use/project use report the configuration error class (exit 10)
    instead of a generic internal error.

Install hamstik-cli 0.1.3

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/blackboardstudios/hamstik-cli/releases/download/v0.1.3/hamstik-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/blackboardstudios/hamstik-cli/releases/download/v0.1.3/hamstik-cli-installer.ps1 | iex"

Install prebuilt binaries via Homebrew

brew install blackboardstudios/hamstik/hamstik

Download hamstik-cli 0.1.3

File Platform Checksum
hamstik-cli-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
hamstik-cli-x86_64-apple-darwin.tar.gz Intel macOS checksum
hamstik-cli-x86_64-pc-windows-msvc.zip x64 Windows checksum
hamstik-cli-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
hamstik-cli-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum