mirror of
https://github.com/leonvanzyl/autocoder.git
synced 2026-02-05 08:23:08 +00:00
rebrand: rename AutoCoder to AutoForge across entire codebase
Complete project rebrand from AutoCoder to AutoForge, touching 62 files across Python backend, FastAPI server, React UI, documentation, config, and CI/CD. Key changes: - Rename autocoder_paths.py -> autoforge_paths.py with backward-compat migration from .autocoder/ -> .autoforge/ directories - Update registry.py to migrate ~/.autocoder/ -> ~/.autoforge/ global config directory with fallback support - Update security.py with fallback reads from legacy .autocoder/ paths - Rename .claude/commands and skills from gsd-to-autocoder-spec to gsd-to-autoforge-spec - Update all Python modules: client, prompts, progress, agent, orchestrator, server routers and services - Update React UI: package.json name, index.html title, localStorage keys, all documentation sections, component references - Update start scripts (bat/sh/py), examples, and .env.example - Update CLAUDE.md and README.md with new branding and paths - Update test files for new .autoforge/ directory structure - Transfer git remote from leonvanzyl/autocoder to AutoForgeAI/autoforge Backward compatibility preserved: legacy .autocoder/ directories are auto-detected and migrated on next agent start. Config fallback chain checks both new and old paths. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -34,8 +34,8 @@ import { Button } from '@/components/ui/button'
|
||||
import { Card, CardContent } from '@/components/ui/card'
|
||||
import { Badge } from '@/components/ui/badge'
|
||||
|
||||
const STORAGE_KEY = 'autocoder-selected-project'
|
||||
const VIEW_MODE_KEY = 'autocoder-view-mode'
|
||||
const STORAGE_KEY = 'autoforge-selected-project'
|
||||
const VIEW_MODE_KEY = 'autoforge-view-mode'
|
||||
|
||||
// Bottom padding for main content when debug panel is collapsed (40px header + 8px margin)
|
||||
const COLLAPSED_DEBUG_PANEL_CLEARANCE = 48
|
||||
@@ -264,7 +264,7 @@ function App() {
|
||||
<div className="flex items-center justify-between">
|
||||
{/* Logo and Title */}
|
||||
<h1 className="font-display text-2xl font-bold tracking-tight uppercase">
|
||||
AutoCoder
|
||||
AutoForge
|
||||
</h1>
|
||||
|
||||
{/* Controls */}
|
||||
@@ -376,7 +376,7 @@ function App() {
|
||||
{!selectedProject ? (
|
||||
<div className="text-center mt-12">
|
||||
<h2 className="font-display text-2xl font-bold mb-2">
|
||||
Welcome to AutoCoder
|
||||
Welcome to AutoForge
|
||||
</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
Select a project from the dropdown above or create a new one to get started.
|
||||
|
||||
@@ -8,7 +8,7 @@ import { Card, CardContent } from '@/components/ui/card'
|
||||
import { Badge } from '@/components/ui/badge'
|
||||
import { Button } from '@/components/ui/button'
|
||||
|
||||
const ACTIVITY_COLLAPSED_KEY = 'autocoder-activity-collapsed'
|
||||
const ACTIVITY_COLLAPSED_KEY = 'autoforge-activity-collapsed'
|
||||
|
||||
interface AgentMissionControlProps {
|
||||
agents: ActiveAgent[]
|
||||
|
||||
@@ -110,7 +110,7 @@ export function DocsPage() {
|
||||
className="font-display text-xl font-bold tracking-tight uppercase text-foreground
|
||||
hover:text-primary transition-colors"
|
||||
>
|
||||
AutoCoder
|
||||
AutoForge
|
||||
</a>
|
||||
|
||||
<Badge variant="secondary" className="text-xs font-medium">
|
||||
|
||||
@@ -34,7 +34,7 @@ export const DOC_SECTIONS: DocSection[] = [
|
||||
title: 'Getting Started',
|
||||
icon: Rocket,
|
||||
subsections: [
|
||||
{ id: 'what-is-autocoder', title: 'What is AutoCoder?' },
|
||||
{ id: 'what-is-autoforge', title: 'What is AutoForge?' },
|
||||
{ id: 'quick-start', title: 'Quick Start' },
|
||||
{ id: 'creating-a-project', title: 'Creating a New Project' },
|
||||
{ id: 'existing-project', title: 'Adding to an Existing Project' },
|
||||
@@ -60,7 +60,7 @@ export const DOC_SECTIONS: DocSection[] = [
|
||||
title: 'Target Project Structure',
|
||||
icon: FolderTree,
|
||||
subsections: [
|
||||
{ id: 'autocoder-directory', title: '.autocoder/ Directory Layout' },
|
||||
{ id: 'autoforge-directory', title: '.autoforge/ Directory Layout' },
|
||||
{ id: 'features-db', title: 'Features Database' },
|
||||
{ id: 'prompts-directory', title: 'Prompts Directory' },
|
||||
{ id: 'allowed-commands-yaml', title: 'Allowed Commands Config' },
|
||||
|
||||
@@ -129,7 +129,7 @@ ANTHROPIC_DEFAULT_SONNET_MODEL=qwen3-coder`}</code></pre>
|
||||
Environment Variables
|
||||
</h3>
|
||||
<p className="text-muted-foreground mb-3">
|
||||
Key environment variables for configuring AutoCoder:
|
||||
Key environment variables for configuring AutoForge:
|
||||
</p>
|
||||
<table className="w-full text-sm mt-3">
|
||||
<thead>
|
||||
@@ -193,7 +193,7 @@ ANTHROPIC_DEFAULT_SONNET_MODEL=qwen3-coder`}</code></pre>
|
||||
Webhook Support
|
||||
</h3>
|
||||
<ul className="list-disc space-y-2 ml-4 text-muted-foreground">
|
||||
<li>AutoCoder can send webhook notifications on feature completion</li>
|
||||
<li>AutoForge can send webhook notifications on feature completion</li>
|
||||
<li>Compatible with N8N and similar automation tools</li>
|
||||
<li>Configure the webhook URL in project settings</li>
|
||||
<li>
|
||||
@@ -208,7 +208,7 @@ ANTHROPIC_DEFAULT_SONNET_MODEL=qwen3-coder`}</code></pre>
|
||||
<ul className="list-disc space-y-2 ml-4 text-muted-foreground">
|
||||
<li>
|
||||
All projects are registered in{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">~/.autocoder/registry.db</span>{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">~/.autoforge/registry.db</span>{' '}
|
||||
(SQLite)
|
||||
</li>
|
||||
<li>Maps project names to filesystem paths</li>
|
||||
|
||||
@@ -15,7 +15,7 @@ export function AppSpecSetup() {
|
||||
<p className="text-muted-foreground mb-3">
|
||||
The app spec is an XML document that describes the application to be built. It lives at{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">
|
||||
.autocoder/prompts/app_spec.txt
|
||||
.autoforge/prompts/app_spec.txt
|
||||
</span>{' '}
|
||||
and tells the initializer agent what features to create. The spec defines your app's name,
|
||||
description, tech stack, and the features that should be implemented.
|
||||
@@ -56,7 +56,7 @@ export function AppSpecSetup() {
|
||||
<li>
|
||||
Create{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">
|
||||
.autocoder/prompts/app_spec.txt
|
||||
.autoforge/prompts/app_spec.txt
|
||||
</span>{' '}
|
||||
in your project directory
|
||||
</li>
|
||||
@@ -97,7 +97,7 @@ export function AppSpecSetup() {
|
||||
<li>
|
||||
Creates the feature database at{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">
|
||||
.autocoder/features.db
|
||||
.autoforge/features.db
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -98,7 +98,7 @@ export function AppearanceThemes() {
|
||||
Themes Overview
|
||||
</h3>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
AutoCoder comes with 6 built-in themes. Each theme provides a complete visual identity including
|
||||
AutoForge comes with 6 built-in themes. Each theme provides a complete visual identity including
|
||||
colors, accents, and dark mode variants.
|
||||
</p>
|
||||
<div className="space-y-4">
|
||||
|
||||
@@ -13,7 +13,7 @@ export function FAQ() {
|
||||
Starting a New Project
|
||||
</h3>
|
||||
<p className="text-muted-foreground italic mb-2">
|
||||
How do I use AutoCoder on a new project?
|
||||
How do I use AutoForge on a new project?
|
||||
</p>
|
||||
<p className="text-muted-foreground">
|
||||
From the UI, select "Create New Project" in the project dropdown. Choose a folder and
|
||||
@@ -27,12 +27,12 @@ export function FAQ() {
|
||||
Adding to Existing Project
|
||||
</h3>
|
||||
<p className="text-muted-foreground italic mb-2">
|
||||
How do I add AutoCoder to an existing project?
|
||||
How do I add AutoForge to an existing project?
|
||||
</p>
|
||||
<p className="text-muted-foreground">
|
||||
Register the project folder through the UI project selector using "Add Existing".
|
||||
AutoCoder creates a{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">.autocoder/</span> directory
|
||||
AutoForge creates a{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">.autoforge/</span> directory
|
||||
alongside your existing code. Write an app spec describing what to build (new features), and the
|
||||
agent works within your existing codebase.
|
||||
</p>
|
||||
@@ -60,7 +60,7 @@ export function FAQ() {
|
||||
<p className="text-muted-foreground">
|
||||
Create{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">
|
||||
.autocoder/allowed_commands.yaml
|
||||
.autoforge/allowed_commands.yaml
|
||||
</span>{' '}
|
||||
in your project with a list of allowed commands. Supports exact names, wildcards (e.g.,{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">swift*</span>), and local
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* GettingStarted Documentation Section
|
||||
*
|
||||
* Covers what AutoCoder is, quick start commands,
|
||||
* Covers what AutoForge is, quick start commands,
|
||||
* creating and adding projects, and system requirements.
|
||||
*/
|
||||
|
||||
@@ -10,12 +10,12 @@ import { Badge } from '@/components/ui/badge'
|
||||
export function GettingStarted() {
|
||||
return (
|
||||
<div>
|
||||
{/* What is AutoCoder? */}
|
||||
<h3 id="what-is-autocoder" className="text-lg font-semibold text-foreground mt-8 mb-3">
|
||||
What is AutoCoder?
|
||||
{/* What is AutoForge? */}
|
||||
<h3 id="what-is-autoforge" className="text-lg font-semibold text-foreground mt-8 mb-3">
|
||||
What is AutoForge?
|
||||
</h3>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
AutoCoder is an autonomous coding agent system that builds complete applications over multiple
|
||||
AutoForge is an autonomous coding agent system that builds complete applications over multiple
|
||||
sessions using a two-agent pattern:
|
||||
</p>
|
||||
<ol className="list-decimal space-y-2 ml-4 text-muted-foreground">
|
||||
@@ -38,7 +38,7 @@ export function GettingStarted() {
|
||||
Quick Start
|
||||
</h3>
|
||||
<p className="text-muted-foreground mb-3">
|
||||
Launch AutoCoder with a single command. The CLI menu lets you create or select a project,
|
||||
Launch AutoForge with a single command. The CLI menu lets you create or select a project,
|
||||
while the Web UI provides a full dashboard experience.
|
||||
</p>
|
||||
<div className="bg-muted rounded-lg p-4 font-mono text-sm">
|
||||
@@ -76,12 +76,12 @@ start_ui.bat # Web UI
|
||||
<ul className="list-disc space-y-2 ml-4 text-muted-foreground">
|
||||
<li>Register the project folder via the UI project selector</li>
|
||||
<li>
|
||||
AutoCoder creates a{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">.autocoder/</span>{' '}
|
||||
AutoForge creates a{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">.autoforge/</span>{' '}
|
||||
directory inside your project
|
||||
</li>
|
||||
<li>
|
||||
Existing code is preserved — AutoCoder adds its configuration alongside it
|
||||
Existing code is preserved — AutoForge adds its configuration alongside it
|
||||
</li>
|
||||
<li>Write or generate an app spec describing what to build</li>
|
||||
</ul>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* ProjectStructure Documentation Section
|
||||
*
|
||||
* Covers the .autocoder/ directory layout, features database,
|
||||
* Covers the .autoforge/ directory layout, features database,
|
||||
* prompts directory, allowed commands, CLAUDE.md convention,
|
||||
* legacy migration, and Claude inheritance.
|
||||
*/
|
||||
@@ -9,18 +9,18 @@
|
||||
export function ProjectStructure() {
|
||||
return (
|
||||
<div>
|
||||
{/* .autocoder/ Directory Layout */}
|
||||
<h3 id="autocoder-directory" className="text-lg font-semibold text-foreground mt-8 mb-3">
|
||||
.autocoder/ Directory Layout
|
||||
{/* .autoforge/ Directory Layout */}
|
||||
<h3 id="autoforge-directory" className="text-lg font-semibold text-foreground mt-8 mb-3">
|
||||
.autoforge/ Directory Layout
|
||||
</h3>
|
||||
<p className="text-muted-foreground mb-3">
|
||||
Every AutoCoder project stores its configuration and runtime files in a{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">.autocoder/</span>{' '}
|
||||
Every AutoForge project stores its configuration and runtime files in a{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">.autoforge/</span>{' '}
|
||||
directory at the project root.
|
||||
</p>
|
||||
<div className="bg-muted rounded-lg p-4 font-mono text-sm">
|
||||
<pre><code>{`your-project/
|
||||
\u251C\u2500\u2500 .autocoder/
|
||||
\u251C\u2500\u2500 .autoforge/
|
||||
\u2502 \u251C\u2500\u2500 features.db # SQLite feature database
|
||||
\u2502 \u251C\u2500\u2500 .agent.lock # Lock file (prevents multiple instances)
|
||||
\u2502 \u251C\u2500\u2500 .gitignore # Ignores runtime files
|
||||
@@ -41,7 +41,7 @@ export function ProjectStructure() {
|
||||
<li>
|
||||
SQLite database managed by SQLAlchemy, stored at{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">
|
||||
.autocoder/features.db
|
||||
.autoforge/features.db
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
@@ -96,7 +96,7 @@ export function ProjectStructure() {
|
||||
<p className="text-muted-foreground mb-3">
|
||||
The optional{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">
|
||||
.autocoder/allowed_commands.yaml
|
||||
.autoforge/allowed_commands.yaml
|
||||
</span>{' '}
|
||||
file lets you grant project-specific bash commands to the agent. This is useful when your
|
||||
project requires tools beyond the default allowlist (e.g., language-specific compilers or
|
||||
@@ -138,7 +138,7 @@ export function ProjectStructure() {
|
||||
<ul className="list-disc space-y-2 ml-4 text-muted-foreground">
|
||||
<li>
|
||||
On the next agent start, these files are automatically migrated into{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">.autocoder/</span>
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">.autoforge/</span>
|
||||
</li>
|
||||
<li>Dual-path resolution ensures both old and new layouts work transparently</li>
|
||||
<li>No manual migration is needed — it happens seamlessly</li>
|
||||
|
||||
@@ -15,7 +15,7 @@ export function Scheduling() {
|
||||
What Scheduling Does
|
||||
</h3>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
Scheduling automates agent runs at specific times. Set up a schedule and AutoCoder will automatically
|
||||
Scheduling automates agent runs at specific times. Set up a schedule and AutoForge will automatically
|
||||
start agents on your project — useful for overnight builds, periodic maintenance, or continuous
|
||||
development.
|
||||
</p>
|
||||
|
||||
@@ -16,7 +16,7 @@ export function Security() {
|
||||
Command Validation Overview
|
||||
</h3>
|
||||
<p className="text-muted-foreground mb-3">
|
||||
AutoCoder uses a defense-in-depth approach for security. All three layers must pass before any
|
||||
AutoForge uses a defense-in-depth approach for security. All three layers must pass before any
|
||||
command is executed:
|
||||
</p>
|
||||
<ol className="list-decimal space-y-2 ml-4 text-muted-foreground">
|
||||
@@ -49,12 +49,12 @@ export function Security() {
|
||||
</li>
|
||||
<li>
|
||||
<strong className="text-foreground">Org Blocklist</strong>{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">~/.autocoder/config.yaml</span>{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">~/.autoforge/config.yaml</span>{' '}
|
||||
— org-wide blocks, cannot be project-overridden
|
||||
</li>
|
||||
<li>
|
||||
<strong className="text-foreground">Org Allowlist</strong>{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">~/.autocoder/config.yaml</span>{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">~/.autoforge/config.yaml</span>{' '}
|
||||
— available to all projects
|
||||
</li>
|
||||
<li>
|
||||
@@ -65,7 +65,7 @@ export function Security() {
|
||||
<li>
|
||||
<strong className="text-foreground">Project Allowlist</strong>{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">
|
||||
.autocoder/allowed_commands.yaml
|
||||
.autoforge/allowed_commands.yaml
|
||||
</span>{' '}
|
||||
— project-specific additions
|
||||
</li>
|
||||
@@ -120,12 +120,12 @@ export function Security() {
|
||||
<p className="text-muted-foreground mb-3">
|
||||
Each project can define additional allowed commands in{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">
|
||||
.autocoder/allowed_commands.yaml
|
||||
.autoforge/allowed_commands.yaml
|
||||
</span>
|
||||
:
|
||||
</p>
|
||||
<div className="bg-muted rounded-lg p-4 font-mono text-sm">
|
||||
<pre><code>{`# .autocoder/allowed_commands.yaml
|
||||
<pre><code>{`# .autoforge/allowed_commands.yaml
|
||||
version: 1
|
||||
commands:
|
||||
# Exact command name
|
||||
@@ -155,10 +155,10 @@ commands:
|
||||
</h3>
|
||||
<p className="text-muted-foreground mb-3">
|
||||
System administrators can set org-wide policies in{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">~/.autocoder/config.yaml</span>:
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">~/.autoforge/config.yaml</span>:
|
||||
</p>
|
||||
<div className="bg-muted rounded-lg p-4 font-mono text-sm">
|
||||
<pre><code>{`# ~/.autocoder/config.yaml
|
||||
<pre><code>{`# ~/.autoforge/config.yaml
|
||||
version: 1
|
||||
|
||||
# Commands available to ALL projects
|
||||
|
||||
@@ -177,7 +177,7 @@ export function SettingsConfig() {
|
||||
<ul className="list-disc space-y-2 ml-4 text-muted-foreground">
|
||||
<li>
|
||||
Global settings stored in SQLite registry at{' '}
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">~/.autocoder/registry.db</span>
|
||||
<span className="bg-muted px-1.5 py-0.5 rounded text-sm font-mono">~/.autoforge/registry.db</span>
|
||||
</li>
|
||||
<li>Per-project settings (like default concurrency) stored in the project registry entry</li>
|
||||
<li>UI settings (theme, dark mode) stored in browser localStorage</li>
|
||||
|
||||
@@ -52,8 +52,8 @@ export const THEMES: ThemeOption[] = [
|
||||
}
|
||||
]
|
||||
|
||||
const THEME_STORAGE_KEY = 'autocoder-theme'
|
||||
const DARK_MODE_STORAGE_KEY = 'autocoder-dark-mode'
|
||||
const THEME_STORAGE_KEY = 'autoforge-theme'
|
||||
const DARK_MODE_STORAGE_KEY = 'autoforge-dark-mode'
|
||||
|
||||
function getThemeClass(themeId: ThemeId): string {
|
||||
switch (themeId) {
|
||||
|
||||
Reference in New Issue
Block a user