• v0.4.1 62d4d7f670

    v0.4.1
    Some checks failed
    ci / check (push) Successful in 10m25s
    ci / coverage (push) Successful in 1m41s
    ci / live-e2e (push) Successful in 1m58s
    release / build (catthehacker/ubuntu:act-22.04, linux-x86_64, docker, x86_64-unknown-linux-gnu) (push) Failing after 1m44s
    release / build (darwin-aarch64, macos-15, aarch64-apple-darwin) (push) Successful in 3m49s
    release / build (darwin-x86_64, macos-15, x86_64-apple-darwin) (push) Failing after 3m40s
    release / publish (push) Has been skipped
    Stable

    stephen released this 2026-07-22 20:19:49 +00:00 | 20 commits to main since this release

    Fixed

    • Silent Fjord Account session refresh across every command. An expired
      Fjord access token is now renewed transparently at the shared HTTP client: on
      a 401 from a host signed with a Fjord bearer, fj refreshes via the stored
      refresh token and retries the request once, so fj api, fj pr, fj issue,
      fj repo, and the Actions log routes no longer fail with "sign in again" once
      the short-lived token lapses. Previously only fj instances and fj auth
      refreshed. PAT hosts (whose tokens are not refreshable) and the case with no
      usable refresh token surface the original 401 unchanged, and the refresh is
      bounded to one attempt per request so a persistently-401 endpoint cannot loop.
    Downloads
  • v0.3.0 e81052ecd1

    v0.3.0
    All checks were successful
    release / build (catthehacker/ubuntu:act-22.04, linux-x86_64, docker, x86_64-unknown-linux-gnu) (push) Successful in 2m35s
    release / build (darwin-aarch64, macos-15, aarch64-apple-darwin) (push) Successful in 3m54s
    release / build (darwin-x86_64, macos-15, x86_64-apple-darwin) (push) Successful in 3m53s
    release / publish (push) Successful in 15s
    ci / check (push) Successful in 10m18s
    ci / coverage (push) Successful in 1m53s
    ci / live-e2e (push) Successful in 1m53s
    Stable

    stephen released this 2026-06-29 22:45:47 +00:00 | 33 commits to main since this release

    Signed by stephen
    SSH key fingerprint: SHA256:eja0m2LEwLSHxRnbQQg/d3CUnVWjxpjuMHSz6S/HHAM
    Downloads
  • v0.2.0 335deac982

    v0.2.0
    All checks were successful
    release / build (catthehacker/ubuntu:act-22.04, linux-x86_64, docker, x86_64-unknown-linux-gnu) (push) Successful in 1m28s
    ci / check (push) Successful in 1m50s
    ci / coverage (push) Successful in 2m0s
    release / build (darwin-aarch64, macos-15, aarch64-apple-darwin) (push) Successful in 3m49s
    release / build (darwin-x86_64, macos-15, x86_64-apple-darwin) (push) Successful in 3m40s
    release / publish (push) Successful in 16s
    Stable

    stephen released this 2026-06-02 22:58:18 +00:00 | 110 commits to main since this release

    Signed by stephen
    GPG key ID: 67F885778E01BF16
    Downloads
  • v0.1.3 0d218188dd

    v0.1.3
    Some checks failed
    release / build (rust:1.95-bookworm, linux-x86_64, docker, x86_64-unknown-linux-gnu) (push) Failing after 1m12s
    release / build (darwin-aarch64, macos, aarch64-apple-darwin) (push) Has been cancelled
    release / build (darwin-x86_64, macos, x86_64-apple-darwin) (push) Has been cancelled
    release / publish (push) Has been cancelled
    Stable

    stephen released this 2026-05-14 21:31:13 +00:00 | 169 commits to main since this release

    Signed by stephen
    GPG key ID: 67F885778E01BF16

    What's new

    • Linux x86_64 binary ships in this release. fj-v0.1.3-linux-x86_64.tar.gz is a statically-linked (against glibc ≥ 3.2) ELF that runs on Debian, Ubuntu, Arch, Fedora, NixOS, and most other modern distros.
    • Notarization scripts land for the next release. scripts/notarize.sh submits a signed darwin tarball to Apple's notary service; scripts/sign.sh --notarize chains signing → notarization in one step. The v0.1.3 macOS binaries are signed but not yet notarized — same signing identity as v0.1.2, so no new keychain prompt.
    • Windows claim removed from FAQ. Replaced with an honest "nobody's tried" + link to file an issue. The code still has #[cfg(windows)] stubs but ships no binary.

    Install

    # macOS via Homebrew:
    brew tap rasterandstate/tap
    brew upgrade fj
    
    # Linux:
    curl -fsSL https://rasterhub.com/rasterstate/fj/releases/download/v0.1.3/fj-v0.1.3-linux-x86_64.tar.gz | tar -xz
    sudo mv fj-v0.1.3-linux-x86_64/fj /usr/local/bin/fj
    fj --version
    

    Or download a tarball below. Verify with shasum -a 256 -c SHA256SUMS.

    Build it yourself

    cargo install --git https://rasterhub.com/rasterstate/fj --tag v0.1.3
    

    Full changelog: CHANGELOG.md.

    Downloads
  • v0.1.2 9bcd54d7a3

    v0.1.2
    Some checks failed
    release / build (rust:1.95-bookworm, linux-x86_64, docker, x86_64-unknown-linux-gnu) (push) Failing after 12m6s
    release / build (darwin-aarch64, macos, aarch64-apple-darwin) (push) Has been cancelled
    release / build (darwin-x86_64, macos, x86_64-apple-darwin) (push) Has been cancelled
    release / publish (push) Has been cancelled
    Stable

    stephen released this 2026-05-14 21:31:13 +00:00 | 170 commits to main since this release

    Signed by stephen
    GPG key ID: 67F885778E01BF16

    What's new

    Signed macOS binaries. Both darwin-aarch64 and darwin-x86_64 tarballs ship binaries signed with the Raster & State Developer ID (62Y3FRM8PD, hardened runtime enabled).

    The visible win: macOS keychain ACLs are scoped to code identity, not binary path. Now that releases share a stable signing identity, you click "Always Allow" on the keychain prompt once and don't get re-prompted on every fj upgrade.

    Notarization is a follow-up. Signing alone solves the prompt-storm; notarization is what makes Gatekeeper not warn on first run for binaries downloaded fresh.

    Also

    • scripts/sign.sh ships in-tree so contributors who build from source can sign their local binary and stop getting prompted. Reads FJ_APPLE_DEVELOPER_ID from .env / .env.local.
    • scripts/preflight.sh audits .env* files for secrets and grep-scans the working tree for PEM markers / Apple-password format / common token shapes. Wired into the pre-push hook.
    • .env.example documents the release/signing variable names. Real values stay out of the repo.
    • support@rasterstate.com is now the canonical contact email; personal-email references removed from tracked files.

    Install

    brew tap rasterandstate/tap
    brew upgrade fj
    

    Or download a tarball below. Verify with shasum -a 256 -c SHA256SUMS.

    Full changelog: CHANGELOG.md.

    Downloads
  • v0.1.1 86e9d8b795

    v0.1.1
    Some checks failed
    ci / check (push) Has been cancelled
    release / build (rust:1.95-bookworm, linux-x86_64, docker, x86_64-unknown-linux-gnu) (push) Failing after 3s
    release / build (darwin-aarch64, macos, aarch64-apple-darwin) (push) Has been cancelled
    release / build (darwin-x86_64, macos, x86_64-apple-darwin) (push) Has been cancelled
    release / publish (push) Has been cancelled
    Stable

    stephen released this 2026-05-14 16:36:39 +00:00 | 173 commits to main since this release

    Signed by stephen
    SSH key fingerprint: SHA256:p38f5YjX8z3zNU1r8/Digt/9pRcXFv2JYwhvVelC/cE

    What's fixed

    • fj auth setup-git installed a broken credential helper. Git invokes the helper via sh -c '<helper> "$@"' sh <verb>, so sed 's/^/password=/' consumed the trailing get / store / erase verb as a filename. Every git push / git pull against the configured host failed with sed: get: No such file or directory. Resolved in b68fb98, tracked in #1.

      The new helper wraps the pipeline in a shell function:

      !f() { fj auth token --host <h> | sed 's/^/password=/'; }; f
      

      Three regression tests cover the structural shape, the verb-positional simulation, and a real sh -c invocation with a stub fj on PATH.

    Recovery

    If you installed v0.1.0 via Homebrew and ran fj auth setup-git, re-run after upgrading:

    brew upgrade fj
    fj auth setup-git --host <hostname>
    

    This overwrites the broken credential.https://<host>.helper git config value with the new function-wrapped form.

    Install

    brew tap rasterandstate/tap
    brew install fj
    

    Or download a tarball below and put fj on your PATH. Verify with shasum -a 256 -c SHA256SUMS.

    Downloads
  • v0.1.0 71e536ffd8

    v0.1.0
    Some checks failed
    ci / check (push) Waiting to run
    release / build (rust:1.95-bookworm, linux-x86_64, docker, x86_64-unknown-linux-gnu) (push) Failing after 1m13s
    release / build (darwin-aarch64, macos, aarch64-apple-darwin) (push) Has been cancelled
    release / build (darwin-x86_64, macos, x86_64-apple-darwin) (push) Has been cancelled
    release / publish (push) Has been cancelled
    Stable

    stephen released this 2026-05-13 22:16:54 +00:00 | 189 commits to main since this release

    First tagged release of fj, a CLI for Forgejo in the spirit of gh.

    See CHANGELOG.md for the full list of features.

    Install

    brew tap rasterandstate/tap
    brew install fj
    

    Or download a tarball below and put fj on your PATH.

    Verify

    shasum -a 256 -c SHA256SUMS
    
    Downloads