docs(changelog): refresh recent product changes

This commit is contained in:
Bryan Helmkamp 2026-05-22 15:07:40 -04:00
parent fa474e36f7
commit 8811054f99
No known key found for this signature in database
6 changed files with 190 additions and 1 deletions

View file

@ -1 +1 @@
29b7cc0de0b9661cd01a6aaa37752652882e76be
df6f62db6a285ae76fdeead26f6081f8f79cdb9d

View file

@ -59,9 +59,11 @@ OpenAI Codex OAuth credentials now live under `vault:OPENAI_CODEX`, and provider
<Accordion title="Fixes">
- Server-created detached runs now persist inferred project and workflow names in run metadata
- Manifest preparation now prefers explicit `[workflow].name`, then graph name, then workflow slug when backfilling names
- Legacy vault records created before the explicit credential schema split now migrate correctly at server startup
</Accordion>
<Accordion title="Improvements">
- Provider catalogs now check process environment credentials first, then same-name vault entries where configured
- Web stage model extraction now follows the new API/ACP event contract
- Settings are now split into General, Integrations, Security, and Storage pages instead of one oversized overview
</Accordion>

View file

@ -0,0 +1,48 @@
---
title: "Settings pages, resource visibility, and pair sessions"
date: "2026-05-20"
---
## Settings built for server operations
The web settings area is now split into focused pages instead of one dense overview. General, Integrations, Security, Storage, Models, Secrets, and Resources screens give operators a clearer place to inspect provider readiness, Slack status, stored secrets, storage usage, and host capacity.
The Resources page adds CPU, memory, and disk visibility from the server so self-hosted installs can spot capacity pressure without leaving Fabro. Storage stats now live with storage settings, values are easier to scan, and model providers collapse when they are not configured.
## Pair with running agent stages
Fabro now has the first server API for live pair sessions on active agent stages. Clients can discover pairable targets, start a pair window, send messages, and read compact transcript entries for the active session.
This builds on the existing steering flow while preserving the run's event stream. ACP-backed stages can also receive steering messages, so interactive control works across both API and ACP agent execution paths.
## More
<Accordion title="API">
- Added provider listing for the Models settings page
- Added system resource endpoints for CPU, memory, and disk capacity
- Added run pair endpoints for pair status, start/end, messages, and transcript reads
</Accordion>
<Accordion title="CLI">
- `fabro rm` now prints the full run ID when removing a run
</Accordion>
<Accordion title="Workflows">
- Added ACP steering support for active agent stages
- Dotted Fabro graph attributes such as `acp.command` now render and validate correctly
- Template diagnostics now resolve source locations for nested prompts, partials, and workflow-root includes
- Workflow-root template partials can now be included from prompt and goal files
</Accordion>
<Accordion title="Fixes">
- Fixed human gate stages ignoring configured timeout defaults
- Fixed Fabro-managed storage totals missing files under nested storage roots
- Fixed Daytona network policies being reported from incomplete sandbox details
</Accordion>
<Accordion title="Improvements">
- Daytona sandboxes are now labeled as Fabro-managed for easier cleanup and identification
- Run tables now show the creator avatar in the "Created by" cell
- Slack integration status is visible from the Integrations settings page
- System resource and storage values now use cleaner rounding and thousands separators
</Accordion>

View file

@ -0,0 +1,69 @@
---
title: "Run-aware Ask Fabro, stage timing, and context"
date: "2026-05-21"
---
<Warning>
**Generic agent sessions are now run-bound Ask Fabro sessions.** The standalone session surface has moved behind run-scoped sessions so questions always have a run to inspect.
To migrate:
1. Replace `fabro session -p "..."` with `fabro ask --prompt "..." <RUN>`.
2. Create API sessions through `POST /api/v1/runs/{id}/sessions`.
3. Read session detail, events, turns, and interrupts through the returned session ID.
</Warning>
<Warning>
**Timing fields now use `StageTiming`.** API clients that read old duration or elapsed fields should regenerate and use the new timing objects.
To migrate:
1. Regenerate clients from the current OpenAPI schema.
2. Read elapsed clock time from `wall_time_ms`.
3. Read summed stage work from `active_time_ms`; it can exceed wall time when parallel stages run.
</Warning>
## Ask Fabro understands runs
Ask Fabro now starts from a specific run instead of a free-floating chat session. The CLI can answer read-only questions about a run, and the web app has the run-scoped session APIs needed for the sidebar experience.
```bash
fabro ask --prompt "Why is this run blocked?" 01K...
```
Run-bound sessions give Ask Fabro direct access to run metadata, events, and controls while keeping the conversation attached to the run history. Session listings, details, event replay, streaming turns, and interrupt handling all use the owning run as the context boundary.
## Clearer stage timing and context
Run and stage timing now separates elapsed wall time from active work time. This makes parallel workflows easier to reason about: a run can spend ten seconds on the clock while accumulating more than ten seconds of active stage work across branches.
The Stages view also has a Context tab. You can inspect context values, stage notes, and structured stage output next to the thread or logs that produced them.
## More
<Accordion title="API">
- Added run-bound Ask Fabro session endpoints and session metadata on run summaries
- Added `StageTiming` objects with `wall_time_ms` and `active_time_ms`
- Pair sessions now target active stages and expose the `fabro_run_pair` MCP tool
</Accordion>
<Accordion title="CLI">
- Added `fabro ask --prompt <PROMPT> <RUN>` for run-scoped questions
</Accordion>
<Accordion title="Workflows">
- Added `[run.agent] fabro_tools = true` as the opt-in for built-in Fabro run-management tools
- Configured artifact globs are captured once per run so later config changes do not affect cleanup
- Artifact collection now follows symlinked artifact roots
</Accordion>
<Accordion title="Fixes">
- Fixed active stage duration displays measuring from the wrong timestamp
- Fixed Ask Fabro sidebar user bubbles and composer spacing
- Fixed Daytona network policies being derived from the wrong layer
</Accordion>
<Accordion title="Improvements">
- Run headers now include detail popovers for workflow, repository, and related metadata
- Billing views now compute in-flight LLM costs on read and show token cache breakdowns on hover
- Run overview shows a sandbox status dot
- Storage, models, and resources settings pages now keep related values grouped together
</Accordion>

View file

@ -0,0 +1,67 @@
---
title: "Ask Fabro sidebar, scoped run tools, and agent todos"
date: "2026-05-22"
---
<Warning>
**Fabro run-management tools now require an explicit per-run opt-in.** Existing workflows that expected agents to create, search, inspect, or control Fabro runs must enable the tools in run configuration.
To migrate:
1. Add `[run.agent]` to the workflow, project, or user run settings that should expose these tools.
2. Set `fabro_tools = true`.
3. Leave the setting unset or `false` for runs that should not grant run-management capabilities.
</Warning>
## Ask Fabro ships in the run sidebar
Ask Fabro is now wired into run pages end to end. The sidebar uses real run session APIs, streams assistant responses, can call scoped run tools, and starts with a welcome state that offers concrete example prompts.
Each turn is oriented with a fresh run snapshot so answers start from the current run status, stage state, and recent activity. The panel is resizable, persists its session per run tab, renders tool calls in the narrow sidebar, and hides internal reasoning deltas from the conversation.
## Scoped Fabro tools for workflow agents
Built-in Fabro run tools are now gated twice: first by the resolved `[run.agent] fabro_tools` setting, then by the worker JWT scope. The server remains authoritative for authorization, while workers only register the tool schemas when their token includes the run-tool scope.
```toml
[run.agent]
fabro_tools = true
```
Ask Fabro also uses an effective read-only tool policy so it only advertises tools it can actually call. Hidden or denied tools are blocked before execution, which keeps model-visible capabilities aligned with server policy.
## Event-sourced agent todos
OpenAI and Anthropic agent profiles now persist todo and task changes as run events. OpenAI `update_plan` calls and Anthropic task tools emit `todo.created`, `todo.updated`, and `todo.deleted`, then replay into the run projection.
This gives Fabro a durable view of agent task state instead of treating todo updates as transient model-side bookkeeping. The web app refreshes run state when todo events arrive, so projected task lists can update live.
## More
<Accordion title="API">
- Run projections now include event-sourced todo lists from agent task tools
- Ask Fabro readiness and default model data are exposed on run summaries
</Accordion>
<Accordion title="CLI">
- Fabro workers now register run-management tools only when their worker token carries `agent:run_tools`
</Accordion>
<Accordion title="Workflows">
- `fabro_run_create` now supports `goal_file` and preserves it as a file-backed run goal
- `fabro_run_create` now accepts the advertised workflow-string shorthand in MCP clients
- Pair user and system messages now appear in the stage Thread tab and activity timeline
</Accordion>
<Accordion title="Fixes">
- Fixed Ask Fabro session responses not rendering in the sidebar
- Fixed Ask Fabro markdown spacing and heading sizes in narrow panels
- Fixed reasoning deltas leaking into Ask Fabro output
- Fixed archived run board updates not refreshing active and archived queries consistently
</Accordion>
<Accordion title="Improvements">
- The run stage sidebar can now collapse to an icon rail while preserving status indicators
- Ask Fabro example prompts now use fuller, action-oriented text
- Run board archived columns now stay in a predictable order after archive and unarchive actions
- OpenAI `apply_patch` handling is now compatible with Codex-style patch grammar
</Accordion>

View file

@ -252,6 +252,9 @@
"group": "May 2026",
"icon": "clock-rotate-left",
"pages": [
"changelog/2026-05-22",
"changelog/2026-05-21",
"changelog/2026-05-20",
"changelog/2026-05-18",
"changelog/2026-05-17",
"changelog/2026-05-16",