Skip to content

v0.9.5

Choose a tag to compare

@github-actions github-actions released this 20 Oct 16:06
· 393 commits to main since this release
Immutable release. Only release title and notes can be modified.
54cb02a

Fugaro v0.9.5

Install:

  • Homebrew: brew install dimipaun/tap/fugaro
  • Go: go install github.com/dimipaun/fugaro/cmd/fugaro@v0.9.5
  • Or download an archive below and verify it against checksums.txt (see docs/release.md).

Highlights

  • The desktop console has its new look: one dark stylesheet bundled into the app, a two-column layout with an installation rail beside the screens, styled Live, Spend, Projects and Run screens, keyboard navigation (the arrow keys through the navigation and the rail, Command+digit on macOS or Control+digit elsewhere for a rail row) and the website's mark as its icon; it stays read only and is published for this release as its own download, console-v0.9.5.
  • fugaro budget set, fugaro budget kill and fugaro budget resume take --repo with no value to mean the repository this checkout belongs to, so fugaro budget set --repo --daily 150 sets the caps of the repository you are standing in, and the bare form is refused outside a checkout whose origin names a repository rather than guessed.
  • fugaro project repos ls lists the project's allow-list against the repositories that have actually run there (read from the runs bucket and the daily spend records rather than from the runs in flight), marks each one admitted or not, and says so plainly when a repository's name cannot be recovered.
  • fugaro project sync is new: it asks GitHub which repositories the project's GitHub App is installed on and offers the ones the allow-list does not admit yet as one list confirmed once, only ever adding names (reading the App's private key needs --github-app-key, which is refused in a coding agent's session).
  • fugaro init --provision-batch is turned back on, with the reaper's role reduced to the five permissions Google defines (batch.jobs.cancel, which is not a permission Google has, is gone, so the role can be created), and fugaro backends ls lists the compute backends a project config may name and which one it uses; both are groundwork, since no run can use the Batch backend yet.
  • The provider price catalog was checked on 2026-10-20 and carries 5 models over 95 endpoints (75 ZDR-eligible).

For operators

Only the database rules move in this release, so the order is short: upgrade the CLIs first, because a 0.9.0 fugaro doctor reads this release's rules as a skew and prescribes the redeploy that would undo them.

  1. Per machine — upgrade the CLI on every machine that runs fugaro doctor or fugaro init against the installation: brew upgrade dimipaun/tap/fugaro.
  2. Per repo checkout — run fugaro upgrade --local, so the plugin pin follows the CLI (the setup and working skills changed) without a cloud call.
  3. Per installation, in your own terminal, outside any repository checkout — run fugaro init --firebase <gcp-project>. It deploys this release's database rules (the credentials service's groundwork: the creds/ node denied to every run token, and new optional children only a credentials-cascade run writes) and records their generation at config/limits/credsRules; it prints what it changes before it applies anything. Until it runs, this release's fugaro doctor reports policy-rules-skew as a warning, and nothing else behaves differently. In a checkout it would also pin this release's base image and move the shared jobs onto it, which this release does not need.

Nothing else is required: no policy republish, no fugaro init --repo and no image rebuild. The runner's changes are the wording of one error and fields only a credentials-cascade run writes, and no launch check asks for a 0.9.5 base image. When you do move a repository's images with fugaro upgrade (its cloud step) or fugaro image refresh, the shared jobs follow only on a later fugaro init --firebase <gcp-project>, per installation, run on that machine, as in 0.9.0.

Known limits

  • The Batch backend is still disabled. backend: cloud-batch is refused by this build, so no run can use it, and once it is enabled a run with a sealed budget token will be refused on it by design (the seal's key cannot be kept out of a Batch job's definition). fugaro init --provision-batch creates billable, lasting resources (a Cloud NAT and router, a boot image rebuilt on a schedule) that nothing uses yet, and its apply has not been run against a live project: the owner-run Check 57b of docs/gcp-live-checklist.md is NOT RUN. Run it only to try the groundwork.
  • The credentials service is not usable. This release carries only its groundwork (the database rules above, the policy's credentials block and per-repository admissions); there is no service to deploy. routing.claude.via: cascade is accepted in a routing block but changes nothing yet (a Claude call still goes direct), and publishing it with fugaro project policy publish makes every older CLI refuse each launch and publish of the project and every older runner halt its runs, which the publish's own diff warns about, so do not publish it.
  • An older CLI can undo this release's rules. Once step 3 has run, a 0.9.0 fugaro doctor reports policy-rules-skew and prescribes fugaro init --firebase; run with that older CLI, it redeploys the older document and takes the credentials children away. Upgrade that machine's CLI instead: this release's fugaro doctor then reports the older document as policy-rules-skew in its turn, and its fugaro init --firebase puts this release's rules back.
  • The price catalog has no Claude rows. A Claude model named in a route (the anthropic/<id> a provider route claims) must be priced under model_prices in the project config; the catalog prices none of them.
  • Managed projects stay disabled, exactly as in 0.9.0. Every command that would create a managed project or act as its deployer still refuses before any cloud call, and the deployer's redesign is not in this release.
  • The console still asks for each installation by hand. Its installations window takes a project name you type and a fugaro binary, a config file and a checkout you choose; finding them by itself is planned for 0.9.6.
  • The live checks have not been run, and only you can run them. Every owner-run, sandbox-only check in docs/gcp-live-checklist.md that this release's changes touch is still NOT RUN, Check 57b among them, and fugaro project sync has not been run against a live GitHub App.

Changelog

  • release 0.9.5: the two docs that name the released CLI say 0.9.5, and the checklist says to move them before the bump (#755)
  • release prep: price catalog regenerated, pricing checkedAt, managed-deployer release label (0.9.5) (#744)
  • brand: the owner's 2048 px logo is the new source; derived icons regenerated (#740)
  • mobile: declare the export-compliance answer in the build's config (#745)
  • mobile: declare the Expo SDK 58 dependencies, so eas build can find an SDK (#738)
  • website how-it-works: close the nine findings the diagram rounds' reviews left (#739)
  • release notes: v0.9.5 highlights and the end-user summary (#743)
  • website how-it-works: one diagram with arrows, and the run in words under it (#726)
  • Task: fugaro budget set --repo with no value means this checkout's … (#668)

  • compute: Task 9 follow-ups — the socket gid's field, the reaper pin's name, Task 10's gid gate, and the plan-only rebuild (#725)
  • compute: batch.image's path grammar, and a shared-config claim the reader does not make (Task 8 follow-up) (#724)
  • compute: the provisioning that completes — the reaper's five permissions, the recorded socket gid, and --provision-batch (Task 9) (#703)
  • console: Task 6.5's four leftovers — three rows on the physical key, and a log told straight (#723)
  • console: the app icon is the website's mark (#722)
  • compute: the Batch opener, its configuration, fugaro backends ls and the seam's call sites (Task 8, first half) (#702)
  • website home page: the Benefits points bigger, bolder, with an icon each (#718)
  • console: the window paints its ground first, and the nav and the rail take the keyboard (#717)
  • project sync and project repos: enrollment as data (plan task 4.1) (#662)
  • Task: credentials service Task C1.3: the rules (creds/ denied, the ru… (#671)

  • console: the Task 6.4 leftovers — two tones, a guard that read the design, and no count of the theme's files (#720)
  • compute: Task 14 — the seal's carrier on Batch is refused, and the refusal is the answer (#704)
  • console: the screen rules, and the fifth number hook (Task 6.4) (#714)
  • C1.2: the cascade's credentials block, the per-repository admissions and via: cascade (0.9.5) (#670)
  • console: Task 6.3 follow-up — the two stale docstrings from #709 (#713)
  • mailbox P4.1 T1: the message binding and the schema vectors (SECURITY-SENSITIVE) (#695)
  • website privacy gate follow-up: the two-tools clause is held to its sentence, and P4's amendment says the always-on truth (#712)
  • console: Task 6.3 — the layout, and the installation rail (#709)
  • website: the stacking gate's two follow-up gaps (#678 review) (#710)
  • console: the Task 6.2 follow-up's two open review leftovers (#708)
  • website privacy statement: the app's analytics and crash reporting are always on (owner ruling) (#705)
  • website: the console downloads follow console 0.9.0, and the build holds the tag prefix (#707)
  • website: the header paints above the page's blocks, so the mobile menu is never covered (#678)
  • console: the stylesheet step's review minors and nits (Task 6.2 follow-up) (#701)
  • Task: Cloud Batch / compute backend: the implementation plan (0.9.5) (#673)

  • mobile P3.5: the voice screen — the interrupt switch, the queue, the offline refusal, the lease (#677)
  • mobile: demo mode — "Try the demo" on the first screen, for Google Play review (#696)
  • console: the stylesheet is bundled, served and linked (Task 6.2) (#694)
  • mobile: the job list (P3.3) — numbers and states only (#666)
  • mobile: the text screen (P6.9) — the same pipeline with a keyboard instead of STT (#665)
  • website: the security page is three things, and nothing else (#680)
  • website: a privacy statement that covers the software, and the stores can link (#689)

Base images

Published by the images workflow for this tag:

  • ghcr.io/dimipaun/fugaro-history:0.9.5 and ghcr.io/dimipaun/fugaro-history:0 (the sweeper and history job's image)
  • ghcr.io/dimipaun/fugaro-base:0.9.5 and ghcr.io/dimipaun/fugaro-base:0 (one index for linux/amd64 and linux/arm64; per-architecture tags 0.9.5-amd64 and 0.9.5-arm64)

The images workflow then pulls each one with no login and fails if it is not public or lacks linux/amd64 (and, for fugaro-base, linux/arm64); each image's digest is in that run's summary.

The Terraform modules, the schemas and the plugin are versioned by this same tag.