Commit graph

51 commits

Author SHA1 Message Date
Bryan Helmkamp
73cbcabf77 Remove Sprites sandbox provider
Drop the Sprites (Fly.io microVM) sandbox provider entirely. Three
providers remain: Local, Docker, and Daytona.

- Delete lib/crates/fabro-sandbox/src/sprites/ module
- Remove sprites feature flag and dep comments from Cargo.toml
- Remove sprites module declaration from lib.rs
- Update resolve_path cfg guard to daytona-only
- Delete docs/integrations/sprites.mdx and remove nav entry
- Remove Sprites rows from provider tables in docs
- Clean up SDK reference and changelog mentions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:23:06 -04:00
Bryan Helmkamp
74b2c5c889 Rename config show command to settings 2026-03-30 11:41:18 -04:00
Bryan Helmkamp
652faf44d8 Infer CLI mode from storage and server flags 2026-03-29 20:58:46 -04:00
Bryan Helmkamp
813c5eeaaf Add changelog entries for 2026-03-19 through 2026-03-29
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:18:16 -04:00
brynary-fabro[bot]
165e2495bf Extract fabro resume subcommand (#137)
This PR extracts the `fabro resume` subcommand from `fabro run`,
replacing the `--resume` and `--run-branch` flags with a dedicated, more
ergonomic interface. Users can now run `fabro resume <RUN_ID>` instead
of constructing `fabro run --run-branch fabro/run/<RUN_ID>` manually,
and the command also accepts run ID prefixes (matching the pattern
established by `fabro rewind` and `fabro fork`). Checkpoint-file-based
resumption is also supported via `fabro resume --checkpoint
path/to/checkpoint.json --workflow workflow.fabro`.

The implementation moves the ~315-line `run_from_branch()` function out
of `run.rs` and into a new `commands/resume.rs` module, splitting it
into two preparation paths (`prepare_from_checkpoint` and
`prepare_from_branch`) that converge on a shared `run_resumed()` tail.
Several previously private helpers in `run.rs` are widened to
`pub(crate)` to allow sharing: `local_sandbox_with_callback`,
`resolve_ssh_config`, `resolve_ssh_clone_params`,
`resolve_preserve_sandbox`, `generate_retro`, `write_finalize_commit`,
`print_final_output`, `print_assets`, and the new `default_run_dir`
helper extracted from duplicated inline logic. The `RunArgs` struct
loses its `resume` and `run_branch` fields along with their
`conflicts_with` annotations, and `RunSpec` drops the corresponding
fields with `#[serde(default)]` for backward compatibility.

Documentation across `docs/reference/cli.mdx`,
`docs/execution/checkpoints.mdx`, and
`docs/core-concepts/how-fabro-works.mdx` is updated to reflect the new
interface, and the `rewind`/`fork` commands now hint `fabro resume
<short-prefix>` instead of the full branch name.

### Fabro Details

<details>
<summary>Ran 9 stages in 30m 25s for $6.70</summary>

| Stage | Duration | Cost | Retries |
|---|---|---|---|
| start | 0s | – | 0 |
| toolchain | 0s | – | 0 |
| preflight_compile | 1m 10s | – | 0 |
| preflight_lint | 13s | – | 0 |
| implement | 18m 30s | $3.95 | 0 |
| simplify_opus | 9m 38s | $2.75 | 0 |
| simplify_gpt | 0s | – | 0 |
| verify | 19s | – | 0 |
| fmt | 1s | – | 0 |
| **Total** | **30m 25s** | **$6.70** | **0** |

</details>

<details>
<summary>Ran <code>ImplementPlan.fabro</code> (12 nodes and 15
edges)</summary>

```dot
digraph ImplementPlan {
    graph [
        goal="Implement and simplify",
        model_stylesheet="
            * { model: claude-opus-4-6; }
        "
    ]
    rankdir=LR

    start [shape=Mdiamond, label="Start"]
    exit  [shape=Msquare, label="Exit"]

    toolchain         [label="Toolchain", shape=parallelogram, script="command -v cargo >/dev/null || { curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && sudo ln -sf $HOME/.cargo/bin/* /usr/local/bin/; }; cargo --version 2>&1", max_retries=0]
    preflight_compile [label="Preflight Compile", shape=parallelogram, script="cargo check -q --workspace 2>&1", max_retries=0]
    preflight_lint    [label="Preflight Lint", shape=parallelogram, script="cargo clippy -q --workspace -- -D warnings 2>&1", max_retries=0]
    fix_lints         [label="Fix Lints", prompt="The preflight lint step failed. Read the build output from context and fix all clippy lint warnings.", max_visits=3]
    implement         [label="Implement", prompt="Read the plan file referenced in the goal and implement every step. Make all the code changes described in the plan. Use red/green TDD."]
    simplify_opus     [label="Simplify (Opus)", prompt="@prompts/simplify.md"]
    simplify_gpt      [label="Simplify (GPT-54)", prompt="@prompts/simplify.md", model="gpt-54"]
    verify            [label="Verify", shape=parallelogram, script="cargo clippy -q --workspace -- -D warnings 2>&1 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1", goal_gate=true, retry_target="fixup"]
    fixup             [label="Fixup", prompt="The verify step failed. Read the build output from context and fix all clippy lint warnings and test failures.", max_visits=3]
    fmt               [label="Format", shape=parallelogram, script="cargo fmt --all 2>&1", max_retries=0]

    start -> toolchain
    toolchain -> preflight_compile [condition="outcome=success"]
    toolchain -> exit
    preflight_compile -> preflight_lint [condition="outcome=success"]
    preflight_compile -> exit
    preflight_lint -> implement [condition="outcome=success"]
    preflight_lint -> fix_lints
    fix_lints -> preflight_lint
    implement -> simplify_opus -> simplify_gpt -> verify
    verify -> fmt   [condition="outcome=success"]
    verify -> fixup
    fixup -> verify
    fmt -> exit
}

```

</details>

⚒️ Generated with [Fabro](https://fabro.sh)

---------

Co-authored-by: Fabro <noreply@fabro.sh>
Co-authored-by: Bryan Helmkamp <bryan@brynary.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 13:45:06 -04:00
Bryan Helmkamp
473668fab3 Add changelog entry for 2026-03-19
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:54:56 -04:00
Bryan Helmkamp
8584f59e25 Update changelog and docs for secret management and repo commands
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 18:08:37 -04:00
Bryan Helmkamp
d5277b9c85 Promote CLI commands to changelog heroes and improve framing
Promote fabro pr, fabro init, fabro diff, fabro preview, fabro graph,
user-level workflows, and GPT-5.4 Mini from accordion items to hero
sections. Reframe lifecycle hooks with positive language.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 11:01:13 -04:00
Bryan Helmkamp
1d9f491314 Reframe Mar 17 changelog hero around OpenAI OAuth user value
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:59:26 -04:00
Bryan Helmkamp
f5e385c9a1 Update changelog and docs for Mar 16-17 changes
Add March 17 changelog entry (OpenAI Codex backend, fabro docs/discord
commands, gpt-5.4-mini). Update March 16 entry with OAuth error fix.
Add gpt-5.4-mini to model catalog docs and fabro docs/discord to CLI
reference.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:51:42 -04:00
Bryan Helmkamp
0d3b6fe73d Update March 16 changelog with auto-merge, lifecycle hooks, and more
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 23:48:03 -04:00
Bryan Helmkamp
8586e54596 Add March 16 changelog and update March 15 with new entries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 19:03:47 -04:00
Bryan Helmkamp
cea079a4b6 Regenerate March 15 changelog with fork, upgrade, and asset commands
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 19:59:30 -04:00
Bryan Helmkamp
7587ab15d4 Add changelog entries for March 14-15
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:28:28 -04:00
Bryan Helmkamp
682971e86b Update docs for rewind, workflow list, daytona, and validation
Fix changelog rewind syntax to use positional args instead of flags.
Clarify Daytona snapshot note to distinguish configured-but-missing vs
unconfigured cases. Add rewind/workflow-list CLI reference sections,
checkpoints rewind guide, thread_id validation rule, and human gate
behavior details.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 13:51:57 -04:00
Bryan Helmkamp
93cc0e5ee5 Add changelog entries for March 13-14 and update March 12
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 12:24:04 -04:00
Bryan Helmkamp
21aff5431c Update docs, frontend, marketing, and skills for .fabro extension
Update 47 MDX doc pages, OpenAPI spec, SVG diagram, language
grammar, frontend demo data, marketing page, skills, and README
to use .fabro extension. Add "fabro" to fileTypes in language
grammars. Document stack.child_workflow alongside stack.child_dotfile.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 22:38:25 -04:00
Bryan Helmkamp
26adc6a5ba update changelog: add model stylesheet simplification to 2026-03-12 entry
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:37:43 -04:00
Bryan Helmkamp
28884ae093 rename Arc to Fabro in all Rust crates, symbols, env vars, and supporting files
- Rename 20 crate directories lib/crates/arc-* → fabro-*
- Update all Cargo.toml: crate names, dep paths, feature flags, bin name
- Rename arc_server module → fabro_server in fabro-llm
- ArcError → FabroError across 30+ files
- ARC_VERSION/ARC_GIT_SHA/ARC_BUILD_DATE → FABRO_* constants
- All use/qualified paths: arc_agent:: → fabro_agent::, etc. (~1500 occurrences)
- Env vars ARC_* → FABRO_* in string literals and shell scripts
- String literals: X-Arc-Demo, arc-bot, arc@local, arc-web, arc-mcp, etc.
- Path strings: .arc/ → .fabro/, arc.toml → fabro.toml, refs/arc/ → refs/fabro/
- arc-api.yaml → fabro-api.yaml (OpenAPI spec)
- skills/arc-create-workflow → fabro-create-workflow
- trycmd fixtures: $ arc → $ fabro
- Inline snapshots (insta) updated
- CI, Docker, install.sh, scripts, CLAUDE.md, AGENTS.md
- TypeScript app: env vars, headers, JWT issuer
- Docs: page slugs, git refs, config paths, sandbox names, repo URLs
- Repo references: brynary/arc → fabro-sh/fabro

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 12:25:58 -04:00
Bryan Helmkamp
d4fe6b72e0 docs: rename Arc to Fabro throughout docs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:53:44 -04:00
Bryan Helmkamp
7c22c4c3e0 Add 2026-03-11 and 2026-03-12 changelog entries
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 08:17:52 -04:00
Bryan Helmkamp
cfd7ea8c97 Update changelog and docs for installer, devcontainers, arc pr, and preflight improvements
Regenerate 2026-03-10 changelog with full commit set (installer, devcontainer
support, arc pr subcommands, --no-dotenv removal). Add 2026-03-11 changelog
for shadow branch run records and arc diff improvements. Update docs: CLI
reference (arc pr list/view/merge/close, --shortstat), devcontainers page
(replace placeholder with full content), run-configuration (devcontainer
field), checkpoints (per-node files on metadata branch), models catalog
(gemini-3.1-pro-preview-customtools). Improve preflight to show per-model
LLM checks instead of a single merged provider line.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-11 08:33:04 -04:00
Bryan Helmkamp
d80335e0fc Add 2026-03-10 changelog and update docs for new CLI commands
Changelog: MCP servers in workflows, arc init, arc diff.
Docs: arc init, arc diff, arc ssh, arc preview, arc doctor --dry-run,
cli.log per-run tracing, pull_request precedence, SSH/preview pages.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:25:42 -04:00
Bryan Helmkamp
44731e0926 Rename arc setup to arc install for clarity
The one-time environment setup command (LLMs, certs, GitHub) is now
`arc install`, freeing up naming space for a future `arc init` command
for per-project initialization.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 12:56:53 -04:00
Bryan Helmkamp
30eb9493d7 Promote arc cp, arc pr create, and arc system df to changelog heroes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 00:40:18 -04:00
Bryan Helmkamp
38ab017c69 Update 2026-03-09 changelog with project config, arc cp, and new CLI commands
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 00:38:44 -04:00
Bryan Helmkamp
c2b40b4cfc Move packages/ to lib/packages/ and update all references
Updated: package.json workspaces, tsconfig path alias, CI workflow
paths, Dockerfile COPY, AGENTS.md, and doc references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:13:56 -04:00
Bryan Helmkamp
14a38a0145 Update docs for exe.dev maturation, assets config, pull_request CLI config, and --goal-file
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 10:06:23 -04:00
Bryan Helmkamp
58e2867f19 Update changelog for 2026-03-09 with exe.dev maturation and update 2026-03-08
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 10:02:20 -04:00
Bryan Helmkamp
39b10b0a5a Update changelog for 2026-03-08 with hooks, server mode, and auto-PR
Regenerate the changelog entry to cover all commits since the last
watermark. Add changelog writing guideline to use user-facing language
instead of internal Rust names.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 16:45:30 -04:00
Bryan Helmkamp
5a720ddb26 Rename /runs/{id}/compare to /runs/{id}/files with pagination
Replace the RunCompare envelope (checkpoints + files + stats) with a
standard PaginatedRunFileList response containing FileDiff items,
matching the existing pagination pattern used by other endpoints.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 14:37:30 -04:00
Bryan Helmkamp
09a2166324 Update changelog and docs for webhook listener, verbose config, optional goal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 14:15:52 -04:00
Bryan Helmkamp
014ff0595b Update changelog and docs for March 7-8 changes
Regenerate March 7 changelog with sandbox.env, CLI renames, and missing
accordion items. Add March 8 changelog for sandbox reliability and @file
validation. Update reference docs for --goal, --mode flags, sandbox.env,
checkpoint exclude globs, [log] config, [git.author], and project_memory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 11:22:26 -04:00
Bryan Helmkamp
c558215878 Update changelog and add coming-soon warnings to deploy guide stubs
Update 2026-03-07 changelog with Completions API, Sprites sandbox,
removed endpoints, and additional fixes. Replace plain text on deploy
guide stub pages with Warning callouts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:18:36 -05:00
Bryan Helmkamp
130339ee87 Add filename titles to TOML code blocks in docs
Every TOML example now shows which config file it belongs to
(server.toml, cli.toml, or run.toml) via Mintlify's title annotation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:57 -05:00
Bryan Helmkamp
95d95e81b1 Rename arc models CLI subcommand to arc model
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:47:07 -05:00
Bryan Helmkamp
a15425762e Move Models API, Verification API, and streaming logs into accordion sections
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:02:03 -05:00
Bryan Helmkamp
5877d203ed Move Structured API schemas into API accordion section
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:00:57 -05:00
Bryan Helmkamp
19008842a6 Move Retro detail API into accordion section
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:00:30 -05:00
Bryan Helmkamp
7de04c9d1b Use Accordion-based More section in changelog entries
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 10:59:56 -05:00
Bryan Helmkamp
0b459a99a5 Add changelog entries for March 6-7, 2026
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 10:58:06 -05:00
Bryan Helmkamp
9b481fb6c0 Move warning callouts to bottom of changelog pages
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-07 09:47:24 -05:00
Bryan Helmkamp
92f7524ed0 Refine changelog: stricter hero bar, new categories, month grouping
Apply the changelog guide across all entries: demote incremental
changes (endpoints, flags, syntax options) from hero sections to
categorized accordion footers (API, CLI, Workflows, Fixes,
Improvements). Combine related hero sections (e.g. three hook types
into one). Add "## More" heading above accordion sections. Group
sidebar navigation by month.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 21:54:53 -05:00
Bryan Helmkamp
e1ce471cbe Adopt Linear-style progressive disclosure in changelog
Wrap fixes, improvements, and API changes in Accordion components
so the hero features stay prominent and details are expandable.
Add a changelog writing guide documenting the editorial approach.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 20:55:29 -05:00
Bryan Helmkamp
cf50625824 Switch Daytona git cloning from gh CLI to GitHub App Installation Access Tokens
Replace `gh auth token` with GitHub App IATs scoped to `contents: read` for
Daytona sandbox git cloning. Public repos are auto-detected and cloned without
credentials. Private repos get short-lived, repo-scoped tokens. Clear error
messages for each failure mode (app not installed, suspended, no repo access,
auth failure). Falls back gracefully when no GitHub App is configured.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-05 22:31:40 -05:00
Bryan Helmkamp
41f72116f2 Update changelog with GPT-5.4, per-node loop limits, and $$ escaping
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-05 22:20:58 -05:00
Bryan Helmkamp
4605f821e8 Add custom TextMate grammar for DOT syntax highlighting in docs
Revert the graphviz language identifier back to dot (Shiki doesn't
bundle either) and register a custom TextMate grammar via Mintlify's
styling.codeblocks.languages.custom config. The grammar (extracted from
apps/arc-web/app/data/dot-grammar.ts) highlights keywords, shape names,
attributes, strings, comments, and operators.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 21:41:54 -05:00
Bryan Helmkamp
6a98dcc246 Use graphviz language identifier for DOT code blocks, add titles to workflow examples
Changes ```dot to ```graphviz across all docs for better syntax highlighting
in Mintlify (Shiki). Full digraph blocks get a title derived from the workflow
name (e.g. title="hello.dot").

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 21:26:45 -05:00
Bryan Helmkamp
598b5b7d19 Update docs: fill in administration, agents, execution, and reference pages; remove placeholder pages
Remove stub pages (bring-your-own-key, costs, monitoring, usage, artifacts,
ai-tools, extensions, hooks, llms) and flesh out remaining pages with real
content covering advanced setup, security, permissions, MCP, observability,
interviews, environments, CLI reference, architecture, and workflow stages.
Add permission-flow diagram and tutorials section.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 20:25:23 -05:00
Bryan Helmkamp
e7d64136b3 Rewrite changelog entries with improved style and structure
Each major feature gets its own H2 heading with narrative depth
and code examples instead of dense bullet lists under category
headers. Minor improvements and fixes go at the bottom as a flat
list. Style inspired by Qlty, Linear, Vercel, and Resend changelogs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 03:13:42 -05:00