You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Bump package.json to 2.0.0 (was still 1.14.2)
- Fold all unreleased changelog content into v2.0.0 with area-first headings
- Document --reset flag in README.md and installation guide
- Streamline CLAUDE.md from 205 to 77 lines (remove discoverable reference material)
- Add SETUP_TERMINAL, SETUP_POSTSTART, PROJECT_EXCLUDE_DIRS, OFFICIAL_PLUGINS to .env.example
- Make project exclusion dirs and official plugins list configurable via .env
Co-authored-by: AnExiledDev <AnExiledDev@users.noreply.github.com>
├── config/ # Source files deployed on start via file-manifest
18
-
│ ├── settings.json # Model, permissions, plugins, env vars
19
-
│ ├── keybindings.json # Keyboard shortcuts
20
-
│ ├── main-system-prompt.md
21
-
│ ├── orchestrator-system-prompt.md
22
-
│ ├── writing-system-prompt.md
23
-
│ ├── ccstatusline-settings.json # Status bar widget layout
24
-
│ └── rules/ # Deployed to .claude/rules/
25
-
├── scripts/ # Terminal connection scripts
26
-
│ ├── connect-external-terminal.sh
27
-
│ └── connect-external-terminal.ps1
28
-
└── .codeforge-preserve # Lists additional files to preserve during updates
29
-
```
30
-
31
5
## Key Configuration
32
6
33
7
| File | Purpose |
@@ -42,50 +16,21 @@ CodeForge devcontainer for AI-assisted development with Claude Code.
42
16
43
17
Config files deploy via `.codeforge/file-manifest.json` on every container start. Most deploy to `~/.claude/`; ccstatusline config deploys to `~/.config/ccstatusline/`. Each entry supports `overwrite`: `"if-changed"` (default, sha256), `"always"`, or `"never"`. Supported variables: `${CLAUDE_CONFIG_DIR}`, `${WORKSPACE_ROOT}`, `${HOME}`.
44
18
45
-
## Worktrees
46
-
47
-
Git worktrees allow checking out multiple branches simultaneously, each in its own directory.
48
-
49
-
**Native (recommended for Claude Code sessions):**
50
-
-**In-session:**`EnterWorktree` tool — creates worktree at `<repo>/.claude/worktrees/<name>/`, branch `worktree-<name>`, auto-cleaned if no changes
51
-
-**New session:**`claude --worktree <name>` — starts Claude in its own worktree; combine with `--tmux` for background work
**Environment files:** Place a `.worktreeinclude` file at the project root listing `.gitignore`-excluded files to copy into new worktrees (e.g., `.env`). Uses `.gitignore` pattern syntax; only files matching both `.worktreeinclude` and `.gitignore` are copied.
|`dbr`| Dynamic port forwarding (devcontainer-bridge) |
33
+
|`dbr`| Dynamic port forwarding ([devcontainer-bridge](https://github.com/bradleybeddoes/devcontainer-bridge)) |
89
34
|`cc-tools`| List all installed tools with versions |
90
35
91
36
## Plugins
@@ -115,19 +60,6 @@ Rules in `.codeforge/config/rules/` deploy to `.claude/rules/` on every containe
115
60
116
61
**Adding rules:** Create `.md` in `.codeforge/config/rules/`, add a manifest entry in `.codeforge/file-manifest.json`.
117
62
118
-
## Environment
119
-
120
-
| Variable | Value |
121
-
|----------|-------|
122
-
|`CLAUDE_CONFIG_DIR`|`/home/vscode/.claude`|
123
-
|`CLAUDE_AUTH_TOKEN`| Long-lived token from `claude setup-token` (optional, via `.secrets` or Codespaces secrets) |
124
-
|`ANTHROPIC_MODEL`|`claude-opus-4-6`|
125
-
|`WORKSPACE_ROOT`|`/workspaces`|
126
-
|`TERM`|`${localEnv:TERM:xterm-256color}` (via `remoteEnv` — forwards host TERM, falls back to 256-color) |
127
-
|`COLORTERM`|`truecolor` (via `remoteEnv` — enables 24-bit color support) |
128
-
129
-
All experimental feature flags are in `settings.json` under `env`. Setup steps controlled by boolean flags in `.env`.
130
-
131
63
## Authentication & Persistence
132
64
133
65
The `~/.claude/` directory is backed by a Docker named volume (`codeforge-claude-config-${devcontainerId}`), persisting config, credentials, and session data across container rebuilds. Each devcontainer instance gets an isolated volume.
@@ -142,63 +74,4 @@ The `~/.claude/` directory is backed by a Docker named volume (`codeforge-claude
142
74
4.**Add features**: Add to `"features"` in `devcontainer.json`
143
75
5.**Disable features**: Set `"version": "none"` in the feature's config
144
76
6.**Disable setup steps**: Set flags to `false` in `.env`
145
-
7.**Customize status bar**: Edit `.codeforge/config/ccstatusline-settings.json` (see below)
146
-
147
-
## Status Bar Widgets
148
-
149
-
The status bar is configured in `.codeforge/config/ccstatusline-settings.json` (deploys to `~/.config/ccstatusline/settings.json`). Each widget is a JSON object in a line array.
150
-
151
-
### Widget Properties
152
-
153
-
| Property | Purpose |
154
-
|----------|---------|
155
-
|`id`| Unique identifier (UUID or descriptive string) |
156
-
|`type`| Widget type (see below) |
157
-
|`backgroundColor`| Background color: `bgBlue`, `bgMagenta`, `bgYellow`, `bgGreen`, `bgRed`, etc. |
158
-
|`color`| Text color: `brightWhite`, `black`, `cyan`, `yellow`, etc. |
159
-
|`rawValue`|`true` to strip type-specific prefixes (e.g., removes "Model:" from model widget) |
160
-
|`bold`|`true` for bold text |
161
-
|`merge`|`"no-padding"` fuses this widget to the next (no separator/space between them) |
162
-
|`customText`| Static text content (only for `custom-text` type) |
163
-
164
-
### Token Widgets
165
-
166
-
Each token metric uses a distinct background color for at-a-glance identification:
167
-
168
-
| Type | Color | Label |
169
-
|------|-------|-------|
170
-
|`tokens-input`| Blue (`bgBlue`) |**In**|
171
-
|`tokens-output`| Magenta (`bgMagenta`) |**Ou**|
172
-
|`tokens-cached`| Yellow (`bgYellow`) |**Ca**|
173
-
|`tokens-total`| Green (`bgGreen`) |**Tt**|
174
-
175
-
Labels are `custom-text` widgets with `merge: "no-padding"` so they fuse visually to their data widget:
Custom features in `./features/` follow the [devcontainer feature spec](https://containers.dev/implementors/features/). Every local feature supports `"version": "none"` to skip installation. Claude Code is installed as a native binary via `./features/claude-code-native` (uses Anthropic's official installer at `https://claude.ai/install.sh`).
191
-
192
-
## Port Forwarding
193
-
194
-
Three mechanisms handle port access depending on your client:
195
-
196
-
| Mechanism | Client | Discovery |
197
-
|-----------|--------|-----------|
198
-
| VS Code auto-detect | VS Code only | Dynamic — all ports auto-forwarded with notification |
VS Code auto-detects all ports opened inside the container (configured via `portsAttributes` in `devcontainer.json`). Outside VS Code, `dbr` provides dynamic port discovery via a reverse connection model (container→host). The container daemon auto-starts and is inert without the host daemon (`dbr host-daemon`). Both mechanisms coexist. See [devcontainer-bridge](https://github.com/bradleybeddoes/devcontainer-bridge).
203
-
204
-
For full setup instructions, see the [Port Forwarding reference](https://codeforge.core-directive.com/reference/port-forwarding/) in the docs.
77
+
7.**Customize status bar**: Edit `.codeforge/config/ccstatusline-settings.json`
Copy file name to clipboardExpand all lines: docs/src/content/docs/getting-started/installation.md
+9-4Lines changed: 9 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,11 +18,16 @@ npx codeforge-dev
18
18
This creates a `.devcontainer/` directory containing the full CodeForge configuration — all plugins, features, agents, skills, system prompts, and settings. Your existing project files are not modified.
19
19
20
20
:::tip[Already have a .devcontainer?]
21
-
If your project already has a `.devcontainer/` directory, the installer will warn you and exit. Use the `--force` flag to perform a smart sync that preserves your user configuration:
21
+
If your project already has a `.devcontainer/` directory, the installer will warn you and exit. Two flags handle this:
22
+
22
23
```bash
23
-
npx codeforge-dev --force
24
+
npx codeforge-dev --force # Smart update (preserves your customizations)
The `--force` flag uses an intelligent sync — it preserves files you've customized (writing `.default` copies of new defaults in `.codeforge/` for review) rather than blindly overwriting everything.
27
+
28
+
**`--force`** uses an intelligent sync — it preserves files you've customized (writing `.default` copies of new defaults in `.codeforge/` for review) rather than blindly overwriting everything. Use this for routine updates.
29
+
30
+
**`--reset`** deletes `.devcontainer/` entirely and copies clean defaults from the package. Your `.codeforge/` user configuration is always preserved. Use this when `.devcontainer/` is corrupted or you want a clean slate.
Copy file name to clipboardExpand all lines: package.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "codeforge-dev",
3
-
"version": "1.14.2",
3
+
"version": "2.0.0",
4
4
"description": "Complete development container that sets up Claude Code with modular devcontainer features, modern dev tools, and persistent configurations. Drop it into any project and get a production-ready AI development environment in minutes.",
0 commit comments