docs(changelog): add entries for Apr 7–12

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) <noreply@anthropic.com>
This commit is contained in:
Bryan Helmkamp 2026-04-12 17:07:19 -04:00
parent a0c4b3b7db
commit 85e068ffa9
9 changed files with 156 additions and 2 deletions

View file

@ -1 +1 @@
6c53fc29b5f1309bfd026a883a23006db2bb441c
f67bebae4b58380b84341d57471e75a197e76e45

View file

@ -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
<Accordion title="API">
@ -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
</Accordion>
<Accordion title="CLI">
- Removed `fabro skill install` command (skills are now managed through workflow definitions)
</Accordion>
<Accordion title="Improvements">

View file

@ -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
<Accordion title="API">
- Removed deprecated workflows and steer endpoints
</Accordion>
<Accordion title="CLI">
- `fabro run attach` now streams events over SSE for more reliable output
</Accordion>
<Accordion title="Improvements">
- Runs now record creation provenance (CLI, API, or scheduled trigger)
</Accordion>
<Accordion title="Fixes">
- 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
</Accordion>

View file

@ -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
<Accordion title="CLI">
- Added host-only TCP bind support for the server (e.g., `127.0.0.1:8080` without TLS)
</Accordion>
<Accordion title="Fixes">
- 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
</Accordion>

View file

@ -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
<Accordion title="Improvements">
- Server auth resolver now fails closed instead of panicking on unexpected states
- Config parse errors now include the file path for easier debugging
</Accordion>

View file

@ -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
<Accordion title="Fixes">
- Fixed an infinite loop when a goal-gate retry targeted a terminal node
- Fixed detached workers not exiting cleanly after post-run shutdown
</Accordion>

View file

@ -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
<Accordion title="Improvements">
- 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
</Accordion>

View file

@ -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
<Accordion title="CLI">
- Added `--force` option to `fabro pr create` to skip confirmation prompts
- `fabro doctor` now checks that the storage directory exists and is writable
</Accordion>

View file

@ -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",