Saves vertical space by showing only date + title in shipped rows,
with an info icon that reveals the description on hover.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add blog collection (content config, prose styles, introducing-fabro post)
- Add Blog link to homepage nav and footer
- Make Layout description prop dynamic for per-page meta/OG tags
- Extract shared Nav, Footer, PageScripts components from duplicated markup
- Blog index: compact header, featured card for latest post, row list for older posts
- Blog post: clean reading surface (no grid/noise overlay), reading time, better header
- Roadmap: improved card contrast with tinted backgrounds, conditional section rendering
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When an LLM stream drops mid-response (e.g. under high concurrency with
OpenAI), retry the same turn up to 3 times instead of failing the entire
agent session. Conversation history is preserved across retries.
Previously this killed the whole stage and restarted from scratch.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Match the marketing website's tabbed install widget across README, docs
quick-start, and CLAUDE.md. Add marketing site build/deploy commands.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace single curl command with a tabbed install widget defaulting to Claude,
with Codex and Bash alternatives. Each tab has a copy-to-clipboard button.
Remove scroll-reveal animation from hero screenshot so it's visible immediately.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
20min timeout vs 10min: 173 vs 167 resolved (+6), patch rate 99% vs 94%.
Also fixes: revert to v4 snapshots, concurrency default to 100, preflight
uses actual 4 CPU per sandbox.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Vercel deploys only the apps/marketing/ subtree, so the real files
need to live there. Repo root now symlinks into marketing/public.
Also add .vercel to gitignore.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Daytona bakes CPU/memory at snapshot creation time. v4 snapshots have
4 CPU / 8 GB. Preflight now checks against 4 CPU per sandbox.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add llms.txt with structured overview of Fabro docs for LLM consumption
- Add canonical link, application-name, apple-mobile-web-app-title
- Add twitter:image dimensions
- Make og:url dynamic per page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add 1200x630 branded OG image matching Mintlify docs card style
- Add Open Graph and Twitter Card meta tags to Layout.astro
- Save og-image-template.html for easy regeneration
- Remove comma from "open source, dark software factory" everywhere
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Nav links, icons, and CTA button overflowed the viewport on mobile.
Text in Workflow-as-Code and Multi-model sections was clipped because
wide SVG/pre children caused CSS grid blowout (min-width: auto default).
- Add hamburger menu for mobile nav on both pages (hidden md:, toggle JS)
- Add overflow-x-hidden to html/body/main to prevent horizontal scroll
- Add .grid > * { min-width: 0 } to prevent grid children from expanding
beyond their container
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Checks running sandboxes against the 500 CPU org limit with 20% buffer.
Exits with a suggested --max-workers value if capacity is insufficient.
Default concurrency set to 200 (safe with 2 CPU per sandbox).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace inline arrays with a `roadmap` collection using glob loader
and Zod schema. Each item is a YAML file in src/content/roadmap/ with
title, description, status, date, and sortOrder fields.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Documents the pattern of planning interactively in Claude Code and
delegating implementation to Fabro via the /fabro-implement slash
command, with multi-model simplification and verification gates.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Shipped/Building/Next sections with sample content, vertical timeline,
scroll reveal animations, and matching dark factory aesthetic. Linked
from top nav and footer on both pages.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds --timeout, --sandbox-cpu, --sandbox-memory flags to record_results.py.
Re-recorded both existing runs with the new fields.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Self-contained installation instructions following the install.md spec.
Decoupled from install.sh — handles platform detection, binary download,
PATH setup in shell dotfiles, and verification independently. Prompts
the user to run `fabro install` interactively to complete setup.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Prevents install.sh from silently writing to dotfiles (.zshrc, .bashrc,
config.fish) when run non-interactively (e.g. by an AI coding agent).
In non-interactive mode, it now prints the manual PATH export instead.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace aggressive uppercase/wide-tracking headings with sentence-case
tight-tracking for a more natural, geometric-techy feel.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace Sora with Barlow Condensed uppercase headings, add cross-hatch grid
and noise atmosphere, swap emoji for custom SVG line-art icons, add scroll
animation variants (reveal-left/right/scale), animated trace bars and workflow
graph draw-in, convert images to WebP with picture fallbacks, expand footer
to 3-column layout, and consolidate sections from 12 to 8.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
On timeout, finds the orphaned sandbox via fabro ps --label and deletes
it. Non-fatal if cleanup fails. Also adds [pull_request] enabled=false
to generated workflow.toml configs to prevent eval runs from opening PRs.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
On restart, reads existing output JSONL files to find completed instance
IDs, skips them, and appends new results. Final summary recomputes from
the full results file so it reflects all runs combined.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add runs-board.png below hero as product showcase
- Add plan-implement.svg workflow diagram in Workflow-as-Code section
above the DOT code block, with dark-mode contrast fix
- Replace verification 2x2 card grid with run-detail.png screenshot
- Add click-to-expand lightbox for all three visual assets
- Fix logotype SVG viewBox (0 0 1455 → 0 0 1500) across all 5 files
to prevent "O" in FABRO from being clipped
- Increase Docs link contrast in nav (text-ice-100, font-medium)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace symbol+text logo with full FABRO logotype SVG in both nav and
footer. Move Docs link to left side next to logo. Replace GitHub text
link with GitHub SVG icon on the right side.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace Arc logo/favicon with Fabro isometric symbol, update hero tagline
to "dark software factory", add install command, and rewrite all sections
to match current README and docs: use cases, key features (workflow graphs,
human-in-the-loop, multi-model routing, cloud sandboxes, git checkpointing,
retros), workflow-as-code example, CLI showcase, and sandbox section.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
evaluate_daytona.py runs the swebench test harness on Daytona sandboxes
instead of local Docker. Reuses the same snapshots from the generation
phase. Applies model patch + test patch, runs tests, grades with
swebench's log parsers. No local Docker needed.
Also bumps default --max-workers from 20 to 100 in run_eval.py.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When --output-dir is relative and fabro runs from /tmp, generated
workflow.toml paths were unresolvable.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Python scripts for running SWE-bench Lite evals against Fabro agent
in Daytona sandboxes: instance orchestration, Dockerfile generation,
and result evaluation via the official swebench harness.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When `auto_merge = true` is set in `[pull_request]` config, Fabro enables
GitHub's auto-merge on created PRs using the `enablePullRequestAutoMerge`
GraphQL mutation. Auto-merge implies `draft = false` since GitHub doesn't
allow auto-merge on draft PRs. A `merge_strategy` field (squash/merge/rebase,
default squash) controls the merge method. Failures to enable auto-merge
(e.g. repo doesn't have the setting enabled) warn but don't fail the run.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>