Skip to content

Releases: risadams/Janus

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 12:51
Immutable release. Only release title and notes can be modified.
v0.9.0
c0e2c3c

v0.9.0: the first stable release of Janus. Install it with Homebrew (brew install risadams/tap/janus), Scoop (scoop bucket add risadams https://github.com/risadams/scoop-bucket, then scoop install risadams/janus), or winget (winget install RisAdams.Janus, once Microsoft has reviewed the package); janus update leaves copies from all three to their own tools. The macOS binaries are signed and notarized, every archive's checksums are signed and its build attested, and a release rebuilds byte for byte from its tag. Since rc.17: the three package channels, and a baseline report on where a week of Claude Code's cost actually went.

What's Changed

  • Read the notary issuer from NOTARY_ISSUER_ID, its name in the release environment by @risadams in #326
  • Create FUNDING.yml by @risadams in #327
  • Show the latest release, the Go version, and the licence as badges by @risadams in #329
  • Link to GitHub Sponsors from the docs site's navbar and footer by @risadams in #331
  • Give the docs site its own 404 page and a home-screen icon by @risadams in #333
  • Publish Janus to a Homebrew tap on each stable release by @risadams in #337
  • Publish Janus to a Scoop bucket on each stable release by @risadams in #340
  • Report where the cost goes after a week, and restate G1 from it by @risadams in #336
  • Submit Janus to winget on each stable release by @risadams in #341

Full Changelog: v0.9.0-rc.17...v0.9.0

v0.9.0-rc.17

v0.9.0-rc.17 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Oct 10:45
v0.9.0-rc.17
cc5a3f8

v0.9.0-rc.17: the macOS binaries are signed with a Developer ID and notarized by Apple, so a copy downloaded in a browser runs without clearing the quarantine. Also new: janus completion for bash, zsh, fish, and PowerShell; -json for janus doctor and janus audit; a doctor warning when Claude Code is newer than any tested; and fixes found by gosec, including a bound on gzip decompression, reports of captures and digests that could not be pruned, and a clearer Windows update rollback.

What's Changed

  • Name the exact release when janus update sends a go install to go install by @risadams in #288
  • Write down how releases are versioned and withdrawn by @risadams in #289
  • Run OpenSSF Scorecard on the repository by @risadams in #290
  • Publish the provenance bundle with each release, and record what Scorecard found by @risadams in #292
  • Add the Best Practices badge, and open each release's notes with its tag message by @risadams in #293
  • Add -json to janus doctor and janus audit by @risadams in #294
  • Keep old configs and ledgers working across a jump of several versions by @risadams in #295
  • Add janus completion for bash, zsh, fish, and PowerShell by @risadams in #296
  • Warn in janus doctor when Claude Code is newer than any janus was tested with by @risadams in #297
  • Run gosec in CI and show its findings under the Security tab by @risadams in #308
  • Say where the old janus is when a Windows update cannot put it back by @risadams in #309
  • Report captures that pruning could not delete by @risadams in #310
  • Bound the gzip a response decompresses to on the side by @risadams in #311
  • Mark gosec's findings in the worker tools and MCP server safe by @risadams in #314
  • Report originals the digest store could not delete by @risadams in #313
  • Mark gosec's findings in the local backend safe by @risadams in #316
  • Say why a schema type that does not parse checks no type by @risadams in #315
  • Mark gosec's findings in the guard safe, with the reasons by @risadams in #312
  • Fail the build on any gosec finding by @risadams in #317
  • Bump ossf/scorecard-action from 2.4.4 to 2.5.0 by @dependabot[bot] in #320
  • Date the capture in the failed-prune test now, not on a fixed day by @risadams in #323
  • Sign and notarize the macOS binaries in the release workflow by @risadams in #321
  • Bump github/codeql-action/upload-sarif from 4.38.2 to 4.39.0 by @dependabot[bot] in #319
  • Bump the docusaurus group in /docs-site with 2 updates by @dependabot[bot] in #318
  • Give the signing job the Apple secrets only through a tag-only environment by @risadams in #325

Full Changelog: v0.9.0-rc.16...v0.9.0-rc.17

v0.9.0-rc.16

v0.9.0-rc.16 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Oct 14:09
v0.9.0-rc.16
5e868cd

v0.9.0-rc.16: reproducible builds, an SBOM per platform with its attestation, and a check that every build can be installed by janus update. (rc.14 and rc.15 stopped before publishing; see #284.)

What's Changed

  • Decide to keep release.sh rather than adopt GoReleaser, and hold the release layout by @risadams in #281
  • Make release builds reproducible, and check it in CI by @risadams in #282
  • Publish an SBOM with each release by @risadams in #283
  • Find each archive by its platform's extension when attesting its SBOM by @risadams in #285
  • Give each SBOM a serial number the attestation accepts, and check for it on pull requests by @risadams in #286

Full Changelog: v0.9.0-rc.13...v0.9.0-rc.16

v0.9.0-rc.13

v0.9.0-rc.13 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Oct 11:42
v0.9.0-rc.13
f6ce33d

v0.9.0-rc.13: signed checksums and janus update; colour in every command; an update check and an optional once-a-day notice.

What's Changed

  • Add M9 Distribution to the roadmap by @risadams in #271
  • Check for a newer release when asked, with an option to include pre-releases by @risadams in #272
  • Colour the output of every janus command, not only the console by @risadams in #273
  • Let agents stack PRs and set them to auto-merge by @risadams in #275
  • Offer a once-a-day update notice at startup, off by default by @risadams in #276
  • Sign each release's checksums so a download can be checked without trusting the release page by @risadams in #277
  • Add the first release key by @risadams in #279
  • Add janus update, which replaces the binary with a verified newer release by @risadams in #280

Full Changelog: v0.9.0-rc.12...v0.9.0-rc.13

v0.9.0-rc.12

v0.9.0-rc.12 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Oct 00:03
v0.9.0-rc.12
2c9a2cb

Janus reads the subscription's usage limits on every answer: the console says where they stand as they fill, janus stats says which kinds of request use them, and a rule's ifUsageAbove sends work local before a limit is reached; Claude taking a conversation back after a stand-in is marked; janus stats gains -daily, -watch, outages with their cause and reset, the saving from local answers, and several ledgers read as one; janus doctor says whether Claude Code is using Janus; janus claude and janus service; the ledger defaults to one folder per user; a config pointing at janus itself is refused; docs for what Janus needs before you start.

What's Changed

  • Rebuild the docs site when a release tag is pushed by @risadams in #213
  • Make a hanging test fail fast and say which it is by @risadams in #214
  • Refuse a config whose upstream is Janus itself by @risadams in #217
  • Hold the slow model in the leak test for 400 ms, not 2 s by @risadams in #220
  • Run test loops on CI by hand, not from a PR by @risadams in #222
  • Say what Janus needs before you start, and show it in use by @risadams in #224
  • Redraw the console picture with a script in the repo by @risadams in #226
  • Fix the large-body test's receive buffers, so loopback stalls stop by @risadams in #218
  • Say in janus stats what local answers would have cost upstream by @risadams in #228
  • Break janus stats down by day with -daily by @risadams in #233
  • Say in janus stats when and why Claude could not answer by @risadams in #234
  • Have janus doctor say whether Claude Code is using Janus by @risadams in #235
  • Add janus claude, which starts Claude Code through Janus by @risadams in #236
  • Add M8 Pace and three M7 items to the roadmap by @risadams in #245
  • Record the subscription's limit utilization on every response by @risadams in #246
  • Show the usage limits' headroom in the console and janus stats by @risadams in #248
  • Add janus stats -watch, today's figures redrawn while you work by @risadams in #252
  • Let a rule wait for a usage limit to fill before sending work local by @risadams in #249
  • Mark Claude taking a conversation back after the local model stood in by @risadams in #250
  • Keep the ledger in one folder per user, however Janus is started by @risadams in #247
  • Add janus service, which installs Janus to start at log in by @risadams in #251

Full Changelog: v0.9.0-rc.11...v0.9.0-rc.12

v0.9.0-rc.9

v0.9.0-rc.9 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 11:57
v0.9.0-rc.9

When Claude cannot answer, the local stand-in keeps the session going: Janus loads the model itself at a 65,536-token context, cuts a conversation too long for it down to its start and latest turns, queues stand-ins for a busy model, and passes tool-search results as text; the console says to leave auto mode when its safety checks cannot reach Claude. Releases are cut with scripts/tag-release.sh.

What's Changed

  • Cut releases with one script that pushes a signed tag by @risadams in #167
  • Send tool_reference blocks to the local model as text by @risadams in #174
  • Queue a stand-in for a busy local model instead of failing it by @risadams in #175
  • Load the local model for a stand-in at a context that fits the request by @risadams in #176
  • Fit a conversation too large for the local model by leaving out older turns by @risadams in #177
  • Say what to do when auto mode's safety checks cannot reach Claude by @risadams in #179

Full Changelog: v0.9.0-rc.8...v0.9.0-rc.9

v0.9.0-rc.8

v0.9.0-rc.8 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 10:38
v0.9.0-rc.8

One Janus per log folder, with logging.dir resolved against the config file; a readable console log in color that notes the guard's and local-only policy's work once per conversation; redaction placeholders stable across restarts; no request sent to an unloaded local model without checking it fits; digest originals pruned while Janus runs; auto-mode safety checks get their own class; Claude's retry advice is kept and the console says why a local stand-in did not answer

What's Changed

  • Verify the attestation before leaving the download folder by @risadams in #145
  • Resolve logging.dir against the config file, not the current folder by @risadams in #148
  • Run one Janus per log folder by @risadams in #154
  • Make the console log readable at a glance, with color by @risadams in #155
  • Don't send a request to an unloaded local model without checking it fits by @risadams in #157
  • Prune digest originals while Janus runs, not only at start by @risadams in #158
  • Keep what Claude says about retrying when it cannot answer by @risadams in #159
  • Keep redaction placeholders stable across restarts by @risadams in #160
  • Say why the local stand-in did not answer by @risadams in #161
  • Give Claude Code's auto-mode safety checks their own class by @risadams in #164
  • Note the guard's and local-only policy's work once per conversation by @risadams in #165

Full Changelog: v0.9.0-rc.7...v0.9.0-rc.8

v0.9.0-rc.11

v0.9.0-rc.11 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 16:47
v0.9.0-rc.11
3fff7ff

The local stand-in answers for a usage limit at once and for an outage after three failures, leaving brief errors for Claude Code to retry; every local non-answer says why, with a next step, in the ledger, janus stats, the console, and janus audit; the local-only policy withholds what a tool read, not a call that mentions a pattern; the auto-mode hint shows only while the local model is standing in; a docs site, a user guide, and the Janus logo.

What's Changed

  • Let the release script run without a terminal by @risadams in #182
  • Edit the README for plain writing and current behaviour by @risadams in #184
  • Write an end-user guide: install, configure, use, troubleshoot by @risadams in #186
  • Add a code of conduct by @risadams in #190
  • Add the Janus logo to the repository and README by @risadams in #192
  • Publish the docs as a website with Docusaurus by @risadams in #194
  • Say in the docs that studio.local is a placeholder for the developer's machine by @risadams in #196
  • Bump the docusaurus group in /docs-site with 2 updates by @dependabot[bot] in #197
  • Move the docs site's build tools off vulnerable versions by @risadams in #200
  • Give the test workflow read-only token permissions by @risadams in #201
  • Withhold only what a tool read, not a call that mentions a local-only pattern by @risadams in #203
  • Say plainly in janus audit when a request had no guard findings by @risadams in #204
  • Say why the local model did not answer, with the next step for each cause by @risadams in #205
  • List staticcheck and govulncheck among the checks to run before pushing by @risadams in #207
  • Land the auto-mode hint fixes that missed the #179 merge by @risadams in #209
  • Stand in for Claude only when it is down, not on a brief failure by @risadams in #210

New Contributors

Full Changelog: v0.9.0-rc.10...v0.9.0-rc.11

v0.9.0-rc.10

v0.9.0-rc.10 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 12:18
v0.9.0-rc.10

Records a request's final status rather than an interim 100 Continue.

What's Changed

  • Record the final status, not 100 Continue, for a request that expects it by @risadams in #180

Full Changelog: v0.9.0-rc.9...v0.9.0-rc.10

v0.9.0-rc.7

v0.9.0-rc.7 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 Oct 20:05
v0.9.0-rc.7

Release archives carry signed build-provenance attestations; fuzz tests for every parser of untrusted input, and a fix for the crash they found in stream assembly; security checks in CI; SECURITY.md, CONTRIBUTING.md, and a README that names no version

What's Changed

  • Point the README at v0.9.0-rc.6 by @risadams in #133
  • Keep the README's install steps free of a version by @risadams in #135
  • Add security checks to CI by @risadams in #140
  • Add SECURITY.md, CONTRIBUTING.md, and issue and PR templates by @risadams in #141
  • Fuzz the parsers that read untrusted input, and fix the crash it found by @risadams in #142
  • Attest the provenance of release binaries by @risadams in #143

Full Changelog: v0.9.0-rc.6...v0.9.0-rc.7