diff --git a/.claude/skills/changelog/watermark b/.claude/skills/changelog/watermark index 755034a00..c3deb8952 100644 --- a/.claude/skills/changelog/watermark +++ b/.claude/skills/changelog/watermark @@ -1 +1 @@ -4ee215cadaa28fd335d5ab2d306740574d5b8b32 +8b948a2d6852023eb41eed3a99e9b402da3f5fbe diff --git a/docs/changelog/2026-03-14.mdx b/docs/changelog/2026-03-14.mdx index 58bdb0002..f24c6c641 100644 --- a/docs/changelog/2026-03-14.mdx +++ b/docs/changelog/2026-03-14.mdx @@ -1,8 +1,28 @@ --- -title: "fabro rewind, workflow list, and Dark Factory" +title: "fabro logs, background runs, and workflow scaffolding" date: "2026-03-14" --- +## View run logs with fabro logs + +Previously, the only way to follow a workflow's progress was through the terminal that started it. The new `fabro logs` command lets you view event logs for any run — active or completed — from any terminal. With `--pretty`, agent conversations render with formatted messages and tool calls instead of raw JSON. + +```bash +fabro logs my-workflow --pretty +fabro logs -f abc123 -p +``` + +You can reference runs by name, ID prefix, or workflow slug. The `-f` flag follows live events as they happen. + +## Background workflows with --detach + +You can now fork a workflow into a background process with `fabro run --detach`, then reconnect later with `fabro logs -f`. This is useful for long-running workflows where you don't want to keep a terminal open. + +```bash +fabro run my-workflow --detach +fabro logs -f my-workflow +``` + ## Rewind workflow runs You can now rewind a workflow run to an earlier checkpoint and resume from there. This is useful when a later stage goes off-track and you want to try again from a known-good point without restarting the entire workflow. @@ -11,25 +31,28 @@ You can now rewind a workflow run to an earlier checkpoint and resume from there fabro rewind my-run plan@2 ``` -Target a specific node by name, `node@visit` for a particular visit count, or `@ordinal` for a checkpoint index. The command rewinds both the metadata and run branch refs, and optionally pushes to the remote. - -## fabro workflow list - -A new `fabro workflow list` command shows all available workflows in your project. Workflows are grouped by source (project vs. user-level), with descriptions pulled from each workflow's goal. - -```bash -fabro workflow list -``` +Target a specific node by name, `node@visit` for a particular visit count, or `@ordinal` for a checkpoint index. ## More + +- Added `fabro workflow create ` subcommand to scaffold new workflows from a template +- Added `fabro workflow list` command showing all available workflows grouped by source +- Added `fabro inspect` command to display detailed JSON data for a workflow run +- Added project-level run defaults in `fabro.toml` (model, environment, sandbox image, etc.) +- Added `~/.fabro/` fallback for `@` file references + + - Default Daytona sandbox now uses the `daytona-medium` snapshot with standard dev tools pre-installed -- Workflow list output shows grouped sections with aligned columns and truncated descriptions -- Added Dark Factory documentation page -- Added workflow diagram to README +- Run resolution now matches workflow slugs and display names, not just run IDs +- Routing events now include context about why an edge was selected +- Fixed `fabro logs --pretty` wrapping past terminal edge on long assistant messages +- Fixed empty `run_id` on sandbox events in `progress.jsonl` +- Fixed credential-embedded GitHub URLs not being parsed correctly +- Fixed logo SVG viewBox clipping the right edge of the O - Fixed missing `git_commit_sha` in run branch commit messages diff --git a/docs/changelog/2026-03-15.mdx b/docs/changelog/2026-03-15.mdx new file mode 100644 index 000000000..679b540ce --- /dev/null +++ b/docs/changelog/2026-03-15.mdx @@ -0,0 +1,42 @@ +--- +title: "fabro ps overhaul, fabro rm, and GitHub token injection" +date: "2026-03-15" +--- + +## Docker-style process listing with fabro ps + +`fabro ps` has been rebuilt to behave like `docker ps`. It now shows a table with run ID, status, workflow name, goal, and timing — making it easy to see what's running at a glance. The GOAL column shows the first line of each run's goal, so you can distinguish between multiple runs of the same workflow. + +```bash +fabro ps # active runs +fabro ps -a # all runs including completed +``` + +Run status is now tracked via a proper state machine, so status transitions are reliable and `fabro ps` always reflects the current state. + +## GitHub token injection for sandboxes + +When a GitHub App is configured, Fabro now automatically injects an installation access token into sandboxes as `GITHUB_TOKEN`. Agents running inside sandboxes can use this token to clone private repos, push branches, and create pull requests without any manual credential setup. + +## More + + +- Added `fabro rm` command to remove runs by ID with sandbox cleanup +- Added `-p` short alias for `--pretty` in `fabro logs` +- Added progress spinner during `run --preflight` + + + +- Metadata branch renamed from `refs/fabro/{run_id}` to `fabro/meta/{run_id}` for cleaner ref namespace +- Added granular git checkpoint events and retro lifecycle events (`RetroStarted`, `RetroCompleted`, `RetroFailed`) +- `goal` field now included in `WorkflowRunStarted` event and rendered in `fabro logs --pretty` +- Run completion events now include final status and usage totals + + + +- Fixed `--dry-run` executing command/script nodes instead of simulating them +- Fixed `--dry-run` pushing branches to remote +- Fixed `--goal-file` not expanding `~` to the home directory +- Fixed race condition between `fabro run --detach` and `fabro logs -f` +- Fixed dry-run runs cluttering `fabro ps -a` output (now uses temp directory) + diff --git a/docs/docs.json b/docs/docs.json index 265289a25..ddf1ed539 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -270,6 +270,7 @@ "group": "March 2026", "icon": "clock-rotate-left", "pages": [ + "changelog/2026-03-15", "changelog/2026-03-14", "changelog/2026-03-13", "changelog/2026-03-12",