The compact_progress_event test helper cherry-picked fields and flattened
the properties wrapper, making snapshots misleadingly show a format that
doesn't match the actual fabro attach --json / progress.jsonl output.
Now snapshots show the real RunEventEnvelope structure with volatile
fields (id, ts, run_id, duration_ms) redacted via insta filters.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Stale worktree references from deleted temp directories kept branches
locked, causing "cannot force update the branch" errors on subsequent
runs with the same branch name.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
These tests were racing against pipeline initialization (git worktree
creation, status checks) that runs before discovering no API keys and
falling back to dry-run mode. Using dry_run_settings() skips the
unnecessary git work upfront.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The default DbReaderOptions::manifest_poll_interval is 10s, which meant
the DbReader couldn't see conclusion/status updates from a detached run
until 10s after they were written. The nextest timeout (6s) fired first,
causing logs_follow_detached_run_streams_until_completion to always fail.
100ms is appropriate for local disk and in-memory object stores.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Resolve clippy errors (absolute paths in main.rs/preflight.rs, collapsible
if in cli.rs, missing print_stdout allow) and stabilize snapshot tests that
hardcoded a date in dir_name by replacing with a date-prefix filter.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Strip non-standard query parameters (id_token_add_organizations,
codex_cli_simplified_flow, originator) from the OAuth authorize URL
to keep it compliant with standard OAuth 2.0 PKCE flow.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds GITHUB_BASE_URL and SLACK_BASE_URL environment variable support
so integration tests can redirect traffic to fake servers instead of
hitting live third-party services.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move ssh.rs, cp.rs, preview.rs to sandbox_ssh.rs, sandbox_cp.rs,
sandbox_preview.rs to match the naming convention used by other
namespaced tests (e.g. pr_close.rs, system_prune.rs). Use
context.command() + args instead of one-off helpers. Remove redundant
config_show.rs (duplicate of config.rs).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Users should use `fabro repo init` instead. The deprecation shim has
been in place long enough; remove it and update all docs references.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Uses clap_complete to generate tab-completion scripts for zsh, fish,
elvish, and PowerShell. Bash generation is caught gracefully since
clap_complete panics with #[command(flatten)] subcommands.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Restructure the flat `serve` command into a nested `server start`
subcommand, following the existing namespace pattern (system prune,
repo init, etc.).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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>
These commands all operate on a run's sandbox environment. Grouping them
under `fabro sandbox` makes the mental model clear and avoids confusion
with `fabro asset cp`.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move the 6 parametrized workflow scenarios from scenario/workflows.rs
into a new workflow/ directory with one file per test. Move fixture
.fabro files from test/scenario/ to workflow/fixtures/ co-located with
the tests.
Rename the scenario_tests! macro to sandbox_tests! in the new module
for clarity. Slim scenario/ down to just lifecycle and exec tests.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>