mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-08-28 05:27:41 +00:00
docs(changelog): refresh recent product changes
This commit is contained in:
parent
ac931a8838
commit
6836aebc0c
5 changed files with 133 additions and 2 deletions
|
|
@ -1 +1 @@
|
|||
061ccc673b0409778edb759bb4fbdd1bee923247
|
||||
5a9f568e4630751d4ebfa06595bced73f07eb24e
|
||||
|
|
|
|||
|
|
@ -1,8 +1,14 @@
|
|||
---
|
||||
title: "Faster doctor checks and GPT-5.5"
|
||||
title: "Smarter PRs, faster doctor checks, and GPT-5.5"
|
||||
date: "2026-05-04"
|
||||
---
|
||||
|
||||
## Smarter pull request titles and bodies
|
||||
|
||||
Fabro's auto-PR flow now asks the LLM for a structured pull request title and reviewer-sized body instead of deriving every title from the workflow goal. Titles are capped at 72 characters, bodies are validated as non-empty, and Fabro still appends the plan, retro, and run details programmatically so generated PRs stay useful without duplicating boilerplate.
|
||||
|
||||
The PR writer also sizes the description to the change. Small fixes get concise summaries, while larger or architectural changes can include the context, tradeoffs, and visual aids reviewers need.
|
||||
|
||||
## Faster, stricter LLM diagnostics
|
||||
|
||||
`fabro doctor` now probes configured LLM providers concurrently instead of waiting on them one by one. Provider probe failures also count as diagnostic errors, so a broken key or unreachable provider no longer looks like a successful configuration check.
|
||||
|
|
@ -25,16 +31,26 @@ Built-in Fabro workflows were also refreshed to use the newer defaults in their
|
|||
<Accordion title="CLI">
|
||||
- `fabro doctor` now reports LLM provider probe failures as errors
|
||||
- `fabro doctor` probes configured LLM providers concurrently
|
||||
- `fabro auth status` now prints auth timestamps with seconds precision
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Workflows">
|
||||
- Auto-PR generation now uses structured `{ title, body }` output with validation and title fallback rules
|
||||
- Built-in implementation workflows now use newer Claude and OpenAI defaults
|
||||
- Built-in verify gates refresh generated docs before checking them
|
||||
- Built-in Rust workflow checks now run clippy across all targets with the pinned nightly toolchain
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Improvements">
|
||||
- Run and board event streams are coordinated across browser tabs to reduce duplicate SSE subscriptions
|
||||
- The run board now separates `Queued` runs from `Initializing` runs
|
||||
- Daytona credential probes reuse HTTP clients and avoid extra proxy setup work
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Fixes">
|
||||
- Fixed OpenAI responses-stream terminal errors being hidden from agent sessions
|
||||
- Fixed doctor output dropping source-chain details for failed LLM probes
|
||||
- Fixed an LLM preflight probe regression
|
||||
- Fixed cross-tab SSE fallback recovery and lifecycle cleanup in the web app
|
||||
- Fixed the runs page briefly showing an empty-state before run data finished loading
|
||||
</Accordion>
|
||||
|
|
|
|||
78
docs/public/changelog/2026-05-05.mdx
Normal file
78
docs/public/changelog/2026-05-05.mdx
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
---
|
||||
title: "Mid-run steering, cancellable agents, and GitHub permissions"
|
||||
date: "2026-05-05"
|
||||
---
|
||||
|
||||
<Warning>
|
||||
**Breaking API and configuration changes.** GitHub token permissions moved from `[server.integrations.github.permissions]` to `[run.integrations.github.permissions]`. `RunStage` also now uses per-visit stage identity: `id` contains values like `verify@2`, `node_id` contains the workflow node name, `visit` contains the visit number, and `dot_id` has been removed.
|
||||
|
||||
To migrate:
|
||||
1. Move GitHub permission tables to `[run.integrations.github.permissions]`.
|
||||
2. Use `RunStage.id` for per-visit links and API calls.
|
||||
3. Replace `RunStage.dot_id` with `RunStage.node_id` when you need graph-node identity.
|
||||
</Warning>
|
||||
|
||||
## Steer running agents
|
||||
|
||||
You can now send guidance to a running API-mode agent from the CLI, web UI, or API without stopping the run. Plain steering is queued for the agent's next turn, while interrupting steering cancels the active round first and delivers your message as the next user turn.
|
||||
|
||||
```bash
|
||||
fabro steer <run> "Focus on the failing integration test"
|
||||
fabro steer --interrupt <run> "Stop that approach and try the smaller fix"
|
||||
```
|
||||
|
||||
The web app now includes a steering composer on run detail and board views, and steering events flow through the same run event stream so accepted, delivered, and dropped messages are visible.
|
||||
|
||||
## Cancellation reaches active agent work
|
||||
|
||||
Cancelling a run now reaches in-flight CLI and API agent stages instead of waiting for the stage to finish. Fabro propagates cancellation through workflow services, manager-loop child runs, sandbox streaming commands, CLI agent invocations, and API agent sessions.
|
||||
|
||||
Cancelled CLI agents now emit typed cancellation events, while timed-out agents emit separate timeout events. That distinction keeps user cancellation, node timeouts, and stall timeouts from collapsing into the same failed-stage behavior.
|
||||
|
||||
## Run-level GitHub permissions
|
||||
|
||||
GitHub `GITHUB_TOKEN` permissions are now part of run configuration, so workflow, project, and user settings can tighten or override the permissions a run requests. This makes scoped GitHub tokens usable from bundled workflows and local CLI-launched runs instead of being trapped in server-only configuration.
|
||||
|
||||
```toml title="workflow.toml"
|
||||
[run.integrations.github.permissions]
|
||||
contents = "write"
|
||||
pull_requests = "write"
|
||||
```
|
||||
|
||||
Higher layers can set `permissions = {}` to clear inherited permissions for a workflow that should not receive a token.
|
||||
|
||||
## More
|
||||
|
||||
<Accordion title="API">
|
||||
- New `POST /api/v1/runs/{id}/steer` endpoint sends append or interrupt steering to running API-mode agents
|
||||
- New `POST /api/v1/runs/{id}/interrupt` endpoint interrupts an active API-mode agent round without steering text
|
||||
- New `GET /api/v1/system/repair/runs` endpoint lists runs that cannot be loaded from durable storage
|
||||
- `RunStage` now exposes per-visit `id`, `node_id`, and `visit` fields so repeated workflow nodes do not collapse together
|
||||
- Run billing and run stage responses now read from projection data with live runtime updates
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="CLI">
|
||||
- Added `fabro steer` with `--interrupt` and `--text-stdin`
|
||||
- Added `fabro system repair runs` for listing unreadable durable runs
|
||||
- `fabro rm --force <run_id>` can delete unreadable runs by ID
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Workflows">
|
||||
- Stage URLs now preserve visits with IDs like `verify@1` and `verify@2`
|
||||
- Stage activity now renders from scoped stage event streams
|
||||
- Silent fallback warnings now appear in run logs and run events
|
||||
- Added the bundled `gh-list` workflow for verifying GitHub token injection with `gh pr list` and `gh issue list`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Improvements">
|
||||
- Files Changed now consistently uses virtualized diff rendering and Pierre worker assets in production builds
|
||||
- Run board metadata is cached to avoid repeated durable-store reads
|
||||
- The run board and run detail views can share SSE subscriptions while still handling steering toasts and query invalidation
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Fixes">
|
||||
- Fixed Anthropic forced-tool calls including thinking blocks
|
||||
- Fixed repeated stage visits sharing sidebar links, graph selections, event streams, or turns views
|
||||
- Fixed large Files Changed views mounting every diff at once
|
||||
- Fixed run file diff workers missing from production web builds
|
||||
</Accordion>
|
||||
35
docs/public/changelog/2026-05-06.mdx
Normal file
35
docs/public/changelog/2026-05-06.mdx
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
---
|
||||
title: "Refreshable GitHub workflow tokens"
|
||||
date: "2026-05-06"
|
||||
---
|
||||
|
||||
<Warning>
|
||||
**Static `ghs_*` tokens are rejected.** GitHub installation access tokens expire quickly and should not be stored as static `GITHUB_TOKEN` values.
|
||||
|
||||
To migrate:
|
||||
1. Replace static `ghs_*` tokens with a personal access token, or configure GitHub App mode.
|
||||
2. In GitHub App mode, request scoped run tokens with `[run.integrations.github.permissions]`.
|
||||
</Warning>
|
||||
|
||||
## Refreshable GitHub tokens during workflows
|
||||
|
||||
Long-running workflows that used GitHub App installation tokens could outlive the first token minted for the run. Fabro now keeps GitHub credentials as a refreshable token source and resolves `GITHUB_TOKEN` lazily before command and API agent stages, so GitHub operations can continue after token rollover.
|
||||
|
||||
Tokens refresh when they are close to expiry. If a refresh fails while the cached token is still valid, Fabro keeps using the cached token and logs a warning; expired tokens now fail explicitly instead of surfacing later as confusing GitHub authentication errors.
|
||||
|
||||
## More
|
||||
|
||||
<Accordion title="Workflows">
|
||||
- Command stages and API agent stages resolve `GITHUB_TOKEN` from a refreshable source before use
|
||||
- GitHub App installation tokens refresh when they are within 15 minutes of expiry
|
||||
- CLI agent stages now surface their launch-time token refresh limitation
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Improvements">
|
||||
- Agent file reads now parallelize `read_many_files` work
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Fixes">
|
||||
- Fixed long-running GitHub App workflows losing GitHub access after the initial installation token expired
|
||||
- Fixed static configuration accepting short-lived `ghs_*` installation tokens
|
||||
</Accordion>
|
||||
|
|
@ -251,6 +251,8 @@
|
|||
"group": "May 2026",
|
||||
"icon": "clock-rotate-left",
|
||||
"pages": [
|
||||
"changelog/2026-05-06",
|
||||
"changelog/2026-05-05",
|
||||
"changelog/2026-05-04",
|
||||
"changelog/2026-05-03",
|
||||
"changelog/2026-05-02",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue