From 85e068ffa99e9577500350048b8a61b2d047e6a2 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Sun, 12 Apr 2026 17:07:19 -0400 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20add=20entries=20for=20Apr=20?= =?UTF-8?q?7=E2=80=9312?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cover embedded web UI, settings v2, events schema v2, typed secrets, fabro uninstall, unified templates, GitHub App owner selection, worker lifecycle hardening, object-backed artifacts, and other changes since Apr 6. Co-Authored-By: Claude Opus 4.6 (1M context) --- .claude/skills/changelog/watermark | 2 +- docs/changelog/2026-04-06.mdx | 11 +++++++++- docs/changelog/2026-04-07.mdx | 32 ++++++++++++++++++++++++++++++ docs/changelog/2026-04-08.mdx | 31 +++++++++++++++++++++++++++++ docs/changelog/2026-04-09.mdx | 31 +++++++++++++++++++++++++++++ docs/changelog/2026-04-10.mdx | 15 ++++++++++++++ docs/changelog/2026-04-11.mdx | 15 ++++++++++++++ docs/changelog/2026-04-12.mdx | 15 ++++++++++++++ docs/docs.json | 6 ++++++ 9 files changed, 156 insertions(+), 2 deletions(-) create mode 100644 docs/changelog/2026-04-07.mdx create mode 100644 docs/changelog/2026-04-08.mdx create mode 100644 docs/changelog/2026-04-09.mdx create mode 100644 docs/changelog/2026-04-10.mdx create mode 100644 docs/changelog/2026-04-11.mdx create mode 100644 docs/changelog/2026-04-12.mdx diff --git a/.claude/skills/changelog/watermark b/.claude/skills/changelog/watermark index 01c80ce3d..bd495cdc6 100644 --- a/.claude/skills/changelog/watermark +++ b/.claude/skills/changelog/watermark @@ -1 +1 @@ -6c53fc29b5f1309bfd026a883a23006db2bb441c +f67bebae4b58380b84341d57471e75a197e76e45 diff --git a/docs/changelog/2026-04-06.mdx b/docs/changelog/2026-04-06.mdx index 1a068d1d0..dcb1b3fb7 100644 --- a/docs/changelog/2026-04-06.mdx +++ b/docs/changelog/2026-04-06.mdx @@ -1,5 +1,5 @@ --- -title: "System management API" +title: "System management API and log rotation" date: "2026-04-06" --- @@ -14,6 +14,10 @@ fabro system events # global event stream fabro system prune # clean up completed runs ``` +## Automatic log rotation + +Server logs now rotate daily and are automatically cleaned up after 7 days. Previously, log files could grow unbounded on long-running servers, requiring manual cleanup. + ## More @@ -21,6 +25,11 @@ fabro system prune # clean up completed runs - New `GET /api/v1/system/events` endpoint streams the global event log via SSE - New `GET /api/v1/system/df` endpoint returns disk usage by run - New `POST /api/v1/system/prune` endpoint removes completed run data +- Removed deprecated `GET /runs/{id}/verification`, sessions, retros, and steer endpoints + + + +- Removed `fabro skill install` command (skills are now managed through workflow definitions) diff --git a/docs/changelog/2026-04-07.mdx b/docs/changelog/2026-04-07.mdx new file mode 100644 index 000000000..17c86878d --- /dev/null +++ b/docs/changelog/2026-04-07.mdx @@ -0,0 +1,32 @@ +--- +title: "Worker lifecycle hardening and object-backed artifacts" +date: "2026-04-07" +--- + +## Reliable worker lifecycle + +Run workers now operate under tighter server supervision. The server tracks worker health, properly terminates active workers during force removal, and propagates cancellation into running command stages. Resumed runs no longer attempt to clean up stale workers from a previous session, preventing spurious errors after restarts. + +## Object-backed artifact storage + +Artifacts and offloaded agent context are now persisted as content-addressed objects in the global blob store instead of the local scratch directory. This makes artifacts portable across sessions and available through the server API regardless of which machine originally produced them. + +## More + + +- Removed deprecated workflows and steer endpoints + + + +- `fabro run attach` now streams events over SSE for more reliable output + + + +- Runs now record creation provenance (CLI, API, or scheduled trigger) + + + +- Fixed `fabro run attach` not following paginated event streams +- Fixed terminal runs blocking deletion during the grace period +- Fixed cancelled workers not stopping in-progress command stages + diff --git a/docs/changelog/2026-04-08.mdx b/docs/changelog/2026-04-08.mdx new file mode 100644 index 000000000..d4bfd153b --- /dev/null +++ b/docs/changelog/2026-04-08.mdx @@ -0,0 +1,31 @@ +--- +title: "Embedded web UI and fabro uninstall" +date: "2026-04-08" +--- + +## Embedded web UI + +The web dashboard is now bundled directly into the Fabro server binary. When you run `fabro server start`, the UI is available immediately at the server's address with no separate build step or dev server required. The web UI is optional and can be disabled in server settings. A demo mode toggle lets you explore the interface with sample data without connecting to a live workspace. + +## `fabro uninstall` + +A new `fabro uninstall` command cleanly removes Fabro's local state, server data, and configuration files. Previously, uninstalling required manually tracking down scattered directories. + +```bash +fabro uninstall # interactive confirmation +fabro uninstall --force # skip confirmation +``` + +## More + + +- Added host-only TCP bind support for the server (e.g., `127.0.0.1:8080` without TLS) + + + +- Fixed GitHub App setup flow failing on nullable webhook secrets, duplicate POST requests, and incorrect port detection +- Fixed session cookie decryption errors on server restart +- Fixed devcontainer lifecycle commands not being cancelled during shutdown +- Fixed setup commands continuing to run after the server received a shutdown signal +- Fixed dark theme not being selected by default for new users + diff --git a/docs/changelog/2026-04-09.mdx b/docs/changelog/2026-04-09.mdx new file mode 100644 index 000000000..aacb495cb --- /dev/null +++ b/docs/changelog/2026-04-09.mdx @@ -0,0 +1,31 @@ +--- +title: "Settings v2 and events schema v2" +date: "2026-04-09" +--- + +## Settings v2 + +The TOML configuration format has been redesigned for clarity and consistency. Settings are now organized into logical sections (`[run]`, `[server]`, `[cli]`, `[hooks]`, `[sandbox]`, `[mcp]`) with typed fields throughout. Run goals can now reference external files using a tagged union syntax, so you can keep large goal prompts separate from your workflow config. + +```toml +[run] +goal = { file = "goals/deploy-review.md" } +model = "claude-sonnet-4-6" + +[server] +host = "127.0.0.1" +port = 8080 +``` + +Comments in your `settings.toml` are now preserved when Fabro edits the file during setup and registration. + +## Events schema v2 + +The event wire format has been flattened and enriched. Each event envelope now carries stage scope (visit count, parallel group and branch IDs) and actor information directly, rather than requiring consumers to reconstruct context from surrounding events. The TypeScript API client has been regenerated to match. + +## More + + +- Server auth resolver now fails closed instead of panicking on unexpected states +- Config parse errors now include the file path for easier debugging + diff --git a/docs/changelog/2026-04-10.mdx b/docs/changelog/2026-04-10.mdx new file mode 100644 index 000000000..6726b0909 --- /dev/null +++ b/docs/changelog/2026-04-10.mdx @@ -0,0 +1,15 @@ +--- +title: "GitHub App owner selection" +date: "2026-04-10" +--- + +## GitHub App owner selection + +When running `fabro install`, you can now choose whether to install the GitHub App under your personal account or an organization. Previously, the app was always installed under the authenticated user's personal account, requiring manual reconfiguration for org-level access. + +## More + + +- Fixed an infinite loop when a goal-gate retry targeted a terminal node +- Fixed detached workers not exiting cleanly after post-run shutdown + diff --git a/docs/changelog/2026-04-11.mdx b/docs/changelog/2026-04-11.mdx new file mode 100644 index 000000000..894f6b27e --- /dev/null +++ b/docs/changelog/2026-04-11.mdx @@ -0,0 +1,15 @@ +--- +title: "Unified template syntax" +date: "2026-04-11" +--- + +## Unified template syntax + +Workflow definitions and configuration files now share the same template syntax for variable interpolation. Previously, workflow DOT files and TOML config files used slightly different templating rules, which made it easy to use the wrong syntax in the wrong context. The unified syntax works everywhere Fabro processes templates. + +## More + + +- Project state files moved from the workspace root into `.fabro/` for a cleaner directory layout +- Config parse errors now show the file path where the error occurred + diff --git a/docs/changelog/2026-04-12.mdx b/docs/changelog/2026-04-12.mdx new file mode 100644 index 000000000..9dcbb32c4 --- /dev/null +++ b/docs/changelog/2026-04-12.mdx @@ -0,0 +1,15 @@ +--- +title: "Typed secrets and fabro pr create --force" +date: "2026-04-12" +--- + +## Typed secrets + +Secrets now carry metadata describing their type and purpose. The new secrets API lets you inspect which secrets are configured, what they're used for, and whether they're present — without exposing the values themselves. This makes it easier to diagnose missing credentials and understand what a workflow needs before running it. + +## More + + +- Added `--force` option to `fabro pr create` to skip confirmation prompts +- `fabro doctor` now checks that the storage directory exists and is writable + diff --git a/docs/docs.json b/docs/docs.json index fb1d74a40..519dbe8be 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -251,6 +251,12 @@ "group": "April 2026", "icon": "clock-rotate-left", "pages": [ + "changelog/2026-04-12", + "changelog/2026-04-11", + "changelog/2026-04-10", + "changelog/2026-04-09", + "changelog/2026-04-08", + "changelog/2026-04-07", "changelog/2026-04-06", "changelog/2026-04-04", "changelog/2026-04-02",