Commit graph

978 commits

Author SHA1 Message Date
Bryan Helmkamp
3d5fe4d5bf Rebrand arc install header to Fabro with ⚒️ emoji
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 18:10:09 -04:00
Bryan Helmkamp
04ae811aff Add api.responses.write scope to OpenAI OAuth flow
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>
2026-03-10 18:07:33 -04:00
Bryan Helmkamp
8c5d8b8d06 Hide unconfigured LLM providers in arc doctor output
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>
2026-03-10 18:04:31 -04:00
Bryan Helmkamp
293bae27a7 Add blank line before additional LLM providers prompt in arc install
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 18:02:34 -04:00
Bryan Helmkamp
92720aed52 Style arc install output with 2-step layout, dim progress, and green checkmarks
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>
2026-03-10 17:58:02 -04:00
Bryan Helmkamp
332be07b0c Style OpenAI OAuth callback page with card layout
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>
2026-03-10 17:52:50 -04:00
Bryan Helmkamp
4a7c0e7c11 Integrate OpenAI OAuth into arc install via Codex detection
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>
2026-03-10 17:21:43 -04:00
Bryan Helmkamp
963f0e2c7c Check GitHub App installation during arc init
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>
2026-03-10 17:18:18 -04:00
Bryan Helmkamp
92f40e59fb Validate API keys immediately during arc install
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>
2026-03-10 17:12:08 -04:00
Bryan Helmkamp
2ddb8fdae3 Gate prompt_input behind server feature flag
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>
2026-03-10 17:07:09 -04:00
Bryan Helmkamp
38bc5c70b7 Add install.sh for automated Arc CLI installation
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>
2026-03-10 17:06:55 -04:00
Bryan Helmkamp
17e384de24 Unify workflow resolution for validate and parse commands
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>
2026-03-10 17:05:47 -04:00
Bryan Helmkamp
943779c1e0 Polish arc init output with styled terminal formatting
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>
2026-03-10 16:58:01 -04:00
Bryan Helmkamp
974f2d31e2 Simplify GitHub App setup prompt in install wizard
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 16:47:06 -04:00
Bryan Helmkamp
2c6a06e43b Gate system dependency checks behind server feature flag
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>
2026-03-10 16:06:52 -04:00
Bryan Helmkamp
5e06cd788e Guide users through LLM setup with single-choice first provider
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>
2026-03-10 16:00:09 -04:00
Bryan Helmkamp
8fc03130ef Fix OAuth callback path to /auth/callback and add login example
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>
2026-03-10 15:39:15 -04:00
Bryan Helmkamp
d26149bf33 Add arc-openai-oauth crate for OpenAI OAuth PKCE token acquisition
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>
2026-03-10 15:31:16 -04:00
Bryan Helmkamp
abd0063184 Add runs board screenshot and Why Arc link to README
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>
2026-03-10 15:21:14 -04:00
Bryan Helmkamp
0b83507d4c Move example workflow above docs and quick start
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>
2026-03-10 15:18:32 -04:00
Bryan Helmkamp
963c97a14a Add documentation section and convert features to table
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>
2026-03-10 15:17:12 -04:00
Bryan Helmkamp
77d0cd265f Improve README features section and add CONTRIBUTING.md
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>
2026-03-10 15:16:03 -04:00
Bryan Helmkamp
5b942ebdfd Rewrite README to lead with pain statement and priority features
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>
2026-03-10 15:12:43 -04:00
Bryan Helmkamp
2ae01b6836 Add arc init step to Quick Start
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:56:29 -04:00
Bryan Helmkamp
86988e641e Simplify first workflow example to arc run hello
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:56:05 -04:00
Bryan Helmkamp
3d1638f32c Remove arc doctor section from README
arc install runs doctor automatically.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:55:47 -04:00
Bryan Helmkamp
041c963340 Remove Configure API keys section from README
arc install handles API key setup interactively.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:55:28 -04:00
Bryan Helmkamp
588254c43c Replace inline model table with link to docs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:54:35 -04:00
Bryan Helmkamp
0423bf5d07 Remove Docker from system requirements
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:54:07 -04:00
Bryan Helmkamp
10e8277e68 Update install instructions to use GitHub Releases
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>
2026-03-10 14:53:57 -04:00
Bryan Helmkamp
8da21d0d67 Remove developer internals from README
Keep README focused on users. Point contributors to CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:52:53 -04:00
Bryan Helmkamp
caa7e58a65 Add README.md and MIT LICENSE
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:48:58 -04:00
Bryan Helmkamp
4408a30adc Improve install flow ordering, doctor diagnostics, and callback page
- 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>
2026-03-10 14:41:08 -04:00
Bryan Helmkamp
4ac4fc4ea9 Add GitHub App manifest setup to arc install
Adds a temporary local HTTP server in `arc install` that handles the
GitHub App manifest registration flow, enabling standalone users to
register a GitHub App without running the arc-web server.

Also gates server-only install steps (pre-flight checks, server.toml,
secrets/certs, start servers) behind #[cfg(feature = "server")] and
removes the `gh` CLI from system dependency checks. Reloads .env before
running arc doctor so it picks up freshly written credentials.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:36:13 -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
6db8fd317b Use GitHub-hosted runners for release workflow
Self-hosted runner lacks credentials for HTTPS checkout.
Switch both compile (Linux) and release jobs to ubuntu-latest.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:23:05 -04:00
Bryan Helmkamp
cbe6282263 Flip arc doctor default to live mode with --dry-run opt-out
Live service probes now run by default instead of requiring --live.
Added --dry-run flag to skip probes when needed. Install command now
runs doctor with live probes to validate setup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:17:59 -04:00
Bryan Helmkamp
e06eb6fdd4 Trigger CI
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:10:46 -04:00
Bryan Helmkamp
78fb243447 Remove CARGO_INCREMENTAL (conflicts with sccache)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:08:58 -04:00
Bryan Helmkamp
4a63650fe3 Add cargo bin to PATH for self-hosted runners
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:07:30 -04:00
Bryan Helmkamp
3755f6fd8a Remove CARGO_INCREMENTAL from clippy (conflicts with sccache), keep for test
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:05:30 -04:00
Bryan Helmkamp
a4eb6fce06 Optimize CI for self-hosted runners and make macOS tests on-demand only
Remove rust-toolchain/rust-cache setup (pre-installed on self-hosted),
disable checkout clean, enable sccache and incremental compilation.
Split macOS tests into a separate job that only runs on workflow_dispatch
since release.yml already gates on macOS tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:03:45 -04:00
Bryan Helmkamp
aad4cb61c0 Skip mTLS tests on macOS (LibreSSL generates incompatible certs)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 13:55:29 -04:00
Bryan Helmkamp
c3df0d380a Run clippy only on Linux, not macOS
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 13:53:43 -04:00
Bryan Helmkamp
076bebe218 Switch Linux CI jobs from ubuntu-latest to self-hosted
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 13:50:12 -04:00
Bryan Helmkamp
89655140f8 Show Arc Details in PR body even without retro
Extend conclusion.json with per-stage operational data (cost, duration,
retries) so the Arc Details section of PR descriptions no longer depends
on retro.json. The retro section remains optional and only appears when
the retro agent runs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 13:49:17 -04:00
Bryan Helmkamp
2d31aae9a0 Add release workflow and improve CI pipelines
- Add release.yml: tag-triggered (v*) workflow that cross-compiles
  for aarch64-apple-darwin and x86_64-unknown-linux-gnu, packages
  archives with SHA256 checksums, and creates a GitHub Release
- Add workflow_dispatch, concurrency groups, and cache-on-failure
  to rust.yml and typescript.yml
- Run clippy and test on both ubuntu-latest and macos-15
- Add release profile with thin LTO and strip to Cargo.toml

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 13:40:29 -04:00
Bryan Helmkamp
4558774a34 Add [pull_request] support to project config (arc.toml)
Project-level arc.toml can now set [pull_request] with enabled/draft
fields, slotting between cli.toml defaults and workflow.toml overrides.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 13:34:26 -04:00
Bryan Helmkamp
2969c98057 Add CliConfig helper methods to reduce accessor boilerplate
Add app_id(), slug(), and git_author() methods to CliConfig to
replace repeated .git.as_ref().and_then(...) chains across 5 call
sites in main.rs and doctor.rs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 13:21:06 -04:00
Bryan Helmkamp
c32e74fbb4 Make standalone CLI read only cli.toml, never server.toml
Move GitHub App credentials (app_id, slug) and run defaults (llm,
sandbox, pull_request) into cli.toml so standalone commands (run, pr
create, llm) no longer require server.toml. The server.toml loading is
now limited to `arc serve` and server-mode doctor checks.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 13:12:30 -04:00