Replace tokio::spawn fire-and-forget with a detached subprocess pattern:
send() serializes Track to ~/.arc/tmp/, spawns `arc __send_analytics <path>`
with ARC_TELEMETRY=off, and the child sends to Segment then cleans up the file.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Rename PullRequestDetail fields from user_wrapper/head_wrapper/
base_wrapper to user/head/base (serde renames no longer needed)
- Make GITHUB_API_BASE_URL public, replace hardcoded strings in pr.rs
- Replace opaque 5-tuple with PrRow struct in pr_list_from
- Parallelize GitHub API calls in pr_list using futures::join_all
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add PR lifecycle commands that operate on workflow runs via their
pull_request.json records. Each loads the PR record from a run directory
and calls the GitHub API: list scans all runs and fetches live state,
view shows details, merge supports squash/merge/rebase, close sets
state to closed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signoffs are stamps of approval for (control, repository, commit SHA)
tuples, enabling external tools and humans to mark a control as
pass/fail/pending for a specific commit. Adds OpenAPI spec, demo
handlers with 5 fixtures, route registration, and regenerated TS client.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The local .env loading was unnecessary since arc install writes all
config to ~/.arc/.env. Simplifies dotenv behavior to unconditionally
load from the home directory only.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When compiled without the server feature, these args are useless since
there is no server to delegate to. Wraps the CLI fields, parser,
resolve_mode, build_server_client, and related tests in cfg(feature =
"server"), with standalone-only fallback paths in each command handler.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix /tmp/arc-commit-msg race: use unique path per run_id+node_id for concurrent local runs
- Add shell_quote for author.name/email interpolated into shell commands
- Unify git_push_meta_host and git_push_run_host into a single git_push_host helper
- Remove unused git_head_sha_remote function
- Extract repeated !sandbox.is_remote() && git_checkpoint_enabled into local_git_checkpoint
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
All git checkpoint, diff, push, worktree, and merge operations now go
through sandbox.exec_command() instead of maintaining parallel Host
(spawn_blocking) and Remote code paths. The enum is replaced by
git_checkpoint_enabled + host_repo_path on RunConfig, and
sandbox.is_remote() is used where behavior still differs.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Check for /dev/tty instead of stdin being a terminal, so the Y/n
prompt works with `cat install.sh | bash`.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Use %b instead of %s in printf helpers to fix unescaped color codes
- Default install dir to ~/.arc/bin (no sudo needed)
- Auto-append PATH export to shell config (zsh, bash, fish)
- Skip PATH setup with dim message if arc is already on $PATH
- Add tildify helper for friendlier path display
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Redirect all UI output to stderr so piped installs work cleanly.
Add Fabro header, color enhancements, and checkmark/cross indicators.
Prompt interactive users to run `arc install` immediately after download.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Split preflight into Repository (setup commands, git clean) and Workflow
(nodes, edges, goal, model, provider) sections. Merge LLM providers and
Provider checks into a single LLM check. Add terminal-width-aware
truncation for long detail lines. Render "Git clean: false" in red.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace platform-specific install instructions with curl | bash one-liner
- Combine quick start steps into a single code block with comments
- Remove Agents and CLI Reference doc links
- Move Contributing into Help or Feedback section
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The browser login flow only requested identity scopes, so the resulting
access token lacked permission to call the Responses API.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Only show providers where the API key is set, reducing noise for users
who only have one or two providers configured.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Redesign the install CLI output for a friendlier experience:
- Bold header with ⚡ emoji and dim description paragraph
- Collapse 4 steps into 2: "LLM Providers" and "GitHub App"
- Dim all intermediate progress lines (browser, waiting, wrote, etc.)
- Replace [ok] markers with green ✔ checkmarks
- Write .env incrementally after each step instead of once at end
- Include GitHub App slug in success line
- Add closing message with bold+cyan "arc init" call-to-action
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Match the styled card design used by the GitHub App manifest callback,
replacing the plain unstyled HTML on the /auth/callback page.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When the codex binary is found on PATH, arc install now offers browser-based
OpenAI OAuth login before the standard provider picker. Falls back to manual
API key entry if OAuth fails or user declines.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Catches missing GitHub App installations early by verifying the app
is installed for the repo's GitHub remote after scaffolding project
files. Shows install URL and optional interactive prompt if not
installed; never fails init on check errors.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Instead of deferring key validation to the optional `arc doctor` step,
each API key is now validated right after entry with a retry loop if
invalid.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The function is only called from a #[cfg(feature = "server")] block,
so it triggers a dead_code warning when compiled without the feature.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Uses gh CLI to download the latest release, detect platform
(macOS ARM with Rosetta detection, Linux x86_64), and install
the binary to /usr/local/bin (or ARC_INSTALL_DIR).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extract resolve_workflow() in project_config to handle bare name, .toml,
and .dot resolution in one place. Previously validate and parse treated
bare words as literal file paths while run resolved them via arc.toml.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use green checkmarks, dim file paths, bold header, and cyan+bold
command to match qlty CLI conventions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
System deps (openssl, node, dot) are only needed in server mode.
Remove them from standalone arc doctor output.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Start with a single-choice prompt for the first LLM (Anthropic, OpenAI,
or Gemini), then optionally offer a multi-select for additional providers.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The redirect_uri path must be /auth/callback (not /callback) to match
what OpenAI's auth server expects for this client ID. Also use localhost
instead of 127.0.0.1 to match the Codex CLI convention.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Standalone library implementing OpenAI's OAuth PKCE flow (browser + device)
for authenticating with ChatGPT subscriptions instead of API keys.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Show the web UI immediately after the tagline and link to the
Why Arc docs page from the pain statement.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Put the DOT example right after the feature table so readers see
proof before being asked to install.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Highlight comprehensive docs with links to each major section.
Convert feature bullets to emoji table matching Qlty readme style.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add emoji to feature bullets, update tagline, add human-in-the-loop
feature, highlight traceability in git checkpointing, remove system
requirements section, and link to new CONTRIBUTING.md instead of
CLAUDE.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace feature tables with a focused bulleted list highlighting
deterministic graphs, human-in-the-loop, multi-model routing, cloud
sandboxes, SSH/preview, git checkpointing, retros, API, single binary,
and open source. Merge the stylesheet example into the workflow example
for one cohesive story. Remove TOC, node types table, supported models
section, and outdated access warning.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pre-built binaries for macOS ARM and Linux x86_64 are now the
primary install method. Build-from-source moved to a details block.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Swap LLM providers and GitHub App steps so LLM setup comes first
- List specific providers with connectivity issues in arc doctor warnings
- Style the GitHub App callback page with a centered card and checkmark
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>