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
* Add Claude Code Router + Codex CLI features, extract dashboard, restructure docs
Container:
- Add claude-code-router feature for LLM provider routing (DeepSeek, Gemini, OpenRouter)
- Add codex-cli feature for OpenAI Codex terminal agent
- Add defaults/ directory with factory config templates
- Update ccusage feature with Codex support
- Update auth scripts for new provider API keys
Dashboard:
- Extract dashboard/ to separate CodeDirective repository
- Add dashboard/ to .gitignore (deprecated in monorepo)
Documentation:
- Restructure docs: getting-started → start-here, features/customization → use/customize
- Move plugins/ under extend/ section
- Add new reference pages: agents, skills, cli-tools, environment-variables
- Consolidate architecture and troubleshooting in reference/
Housekeeping:
- Gitignore temp directories and screenshots
* Remove dashboard feature from devcontainer
Dashboard extracted to separate CodeDirective repository. Remove:
- codeforge-dashboard devcontainer feature
- Dashboard port forwarding and config from devcontainer.json
- Dashboard documentation page and sidebar references
- Dashboard mentions from README, CLAUDE.md, and related docs
* Remove deprecated container/.codeforge directory
Configuration migrated to container/.devcontainer/defaults/codeforge/.
The .codeforge directory at package root was a development artifact that
should not ship with the npm package.
* Add behavioral rules for Claude Code sessions
New rules in defaults/codeforge/config/rules/:
- auto-memory.md: memory constraints and staleness cleanup
- zero-tolerance-bugs.md: bugs always in scope, must be fixed
- scope-discipline.md: only user defines scope
- explicit-start.md: never start without clear instruction
- plan-presentation.md: compressed overview before full plan
- surface-decisions.md: surface assumptions before acting
* Update hook gate path to ~/.claude/disabled-hooks.json
All plugin scripts now check ~/.claude/disabled-hooks.json instead of
.codeforge/config/disabled-hooks.json for the hook disable list.
* Update defaults configuration
- settings.json: update to opus-4-7, reduce thinking tokens (31999),
disable adaptive thinking, add effort_level max, adjust compaction
thresholds, disable agent teams, add background tasks and no-flicker
- main-system-prompt.md: streamline prompt content
- file-manifest.json: update file list for new rules
- claude-code-router.json: add default router configuration
* Update agent definitions: remove worktree isolation, upgrade models
- Remove isolation: worktree from write-capable agents (documenter,
implementer, migrator, refactorer, test-writer) — run in main worktree
- Upgrade investigator and security-auditor from sonnet to opus
* Update documentation and refactor CLAUDE.md structure
- Move devcontainer guide from CLAUDE.md to AGENTS.md
- CLAUDE.md now uses @AGENTS.md include directive
- docs: update changelog, cli-tools reference, troubleshooting
- docs: remove dashboard references, fix sidebar formatting
- deps: update docs package-lock.json
* Pin agent models to opus-4-5
Update all 9 opus-based agents to use explicit model version opus-4-5.
* Bump version to 2.2.0 with comprehensive changelog
Update changelog with all changes since v2.1.1:
- Claude Code Router and Codex CLI features
- Dashboard feature removed from devcontainer
- 6 new behavioral rules
- Agent model pinning to opus-4-5
- Worktree isolation removed from write-capable agents
- Configuration updates (opus-4-7, reduced thinking tokens, max effort)
- Hook gate path changed to ~/.claude/
- Config directory restructure
- Documentation overhaul
Version updated in package.json and README.md.
* Add effort frontmatter to all agents and skills
Configure Opus 4.7 adaptive thinking via effort: field in frontmatter:
- 19 agents: max (2), xhigh (10), high (4), medium (5)
- 23 skills: xhigh (3), high (10), medium (9), low (1)
Effort levels calibrated by task complexity:
- max: architect, spec-writer (deep reasoning required)
- xhigh: implementer, migrator, refactorer, etc. (code writing)
- high: debug-logs, dependency-analyst, etc. (analysis tasks)
- medium: explorer, bash-exec, etc. (simple operations)
- low: worktree (basic git commands)
* Add session tokens command for thinking token analysis
- New `codeforge session tokens` command analyzes thinking token usage
- Shows exact billed output tokens and visible content breakdown
- Thinking Density table: % turns with thinking, avg chars, session intensity
- Per-session breakdown: turns with thinking, density, avg chars per turn
- Filter by --project, --model, --since, --until
- Output formats: text (colorized) and JSON
Bump CLI version to 0.2.0
* Add oh-my-claude devcontainer feature (disabled)
Add oh-my-claude multi-provider proxy feature for Chinese LLM routing
(Kimi, DeepSeek, Qwen, Zhipu, MiniMax). Feature is disabled pending
refinement — omc install modifies settings.json despite --skip-* flags.
Feature structure:
- devcontainer-feature.json with version, autostart, providerAgentsOnly options
- install.sh with backup/restore approach to protect settings.json
- poststart-hook.sh for auto-starting proxy
- README.md documenting usage and configuration
Supporting changes:
- .secrets.example: Add Chinese LLM provider API keys
- disabled-hooks.json: Add omc memory/preference hooks
- setup-aliases.sh: Add --disallowedTools for omc MCP tools, omc-apply alias
- devcontainer.json: Add Chinese provider secrets (feature commented out)
Note: claude-code-router also commented out pending router consolidation.
* Ignore .research/ directory
* Fix documentation and security issues from PR #71 review
- Fix CLI version in README (0.1.0 → 0.2.0)
- Update 16 path references in AGENTS.md (.codeforge/ → defaults/codeforge/)
- Replace unsafe eval pattern with getent passwd in 9 install scripts
The eval echo "~$USERNAME" pattern could theoretically allow command
injection if username validation were removed in future changes.
Using getent passwd is safer and matches the pattern already used
in codex-cli/install.sh.
* Fix container tests for new config location
Update test.js to reference .devcontainer/defaults/codeforge/
instead of the removed .codeforge/ directory. Test 8 now validates
the defaults directory structure rather than comparing against
a source that no longer exists.
* Fix disallowed tools alias splitting
* Pass --thinking-display summarized in claude aliases
Add `--thinking-display summarized` to cc, claude, ccw, and cc-orc so
thinking output stays tidy in the terminal. ccraw stays vanilla.
Also flip default viewMode from verbose to focus for a cleaner UI.
* Fix session tokens --project filter for absolute paths
The filter compared Claude's on-disk project slug
(e.g. "-workspaces-projects-CodeForge") to the raw --project path
(e.g. "/workspaces/projects/CodeForge"), which never matched — so
passing an absolute path per the session-search convention returned
zero sessions.
Encode absolute and ./..-relative inputs to slug form (replace / and
. with -) before comparing. Plain substrings without separators still
pass through unchanged, so --project CodeForge keeps working.
Bump CLI to 0.2.1 and add tokens.test.ts covering the transform.
* Bump container to 2.2.1
Ships the UX changes from this staging cycle:
- --thinking-display summarized in cc/claude/ccw/cc-orc aliases
- viewMode focus default
- Disallowed tools alias splitting fix
* Implement session tokens --since / --until filters
Both options were parsed but never applied in analyzeTokens, so they
were silent no-ops. Apply them session-level using file mtime (last
activity), skipping out-of-window files before the expensive per-file
parse.
Extract isFileWithinTimeRange as a pure, exported helper so the bound
checks are unit-testable without fixture files. Inclusive on both
ends.
Folded into v0.2.1 CHANGELOG alongside the --project fix.
* Set default effort level to high
* Remove stale test-dashboard CI job
The dashboard/ package was extracted in bd688a5 but its CI job remained,
causing every CI run to fail with "No such file or directory" when the
job tried to cd into the nonexistent dashboard/. Drop the job and its
path filter.
* Fix pathToProjectSlug on Windows
resolve() on Windows returns backslash-separated paths (D:\a\foo), and
the slug regex only replaced forward slashes, leaving backslashes
unchanged in the output. Normalize \ to / before slugging so
test-cli (windows-latest) passes.
* Pin zod to v3 to unbreak docs build
@astrojs/sitemap@3.7.2 declared zod@^4.3.6 as a direct dep, and
zod-to-json-schema@3.25.2 (an astro transitive) accepts v3 or v4,
so npm hoisted zod@4 at the root. Vite's SSR bundler then resolved
"zod" to v4 during the docs build, which crashes Starlight's
HeadConfigSchema (written for zod v3's z.record() single-arg form)
with "Cannot read properties of undefined (reading '_zod')" while
rendering the 404 route.
- Pin @astrojs/sitemap to 3.7.0 (last zod-v3-compatible release);
later versions use v4-only syntax internally so we can't just
override zod for them.
- Add an "overrides" block to force zod@3.25.76 across the tree
so zod-to-json-schema stops hoisting v4.
- Sync regenerated docs changelog (incidental, produced by the
sync-changelog.mjs step in npm run build).
Note: dependabot PR #57 would bump sitemap to 3.7.1 and re-break
this. Close or ignore that PR.
* Default to opus-4-5, add cc7/ccw7/cc-orc7 for opus-4-7 (#77)
Flip ANTHROPIC_MODEL and ANTHROPIC_DEFAULT_OPUS_MODEL in default
settings.json from claude-opus-4-7 to claude-opus-4-5. Remove the
global CLAUDE_CODE_MAX_CONTEXT_TOKENS and CLAUDE_CODE_AUTO_COMPACT_WINDOW
env vars (they pinned 250k globally, which would exceed 4.5's 200k
API ceiling). Move context-window control inline per alias:
- cc / claude / ccw / cc-orc: 200k (opus-4-5)
- cc7 / ccw7 / cc-orc7: 400k (opus-4-7) — new variants
Thinking-related env vars (MAX_THINKING_TOKENS, adaptive-thinking flag,
effort level) remain global. ccraw is unchanged.
Also adds legacy-cleanup sed entries for cc7/ccw7/cc-orc7 so future
renames stay idempotent, updates the Commands table in AGENTS.md, and
documents the change in CHANGELOG.md.
* Scope pathToProjectSlug leading-dash assertion to POSIX
On Windows, resolve('./foo') returns a drive-letter path like
D:\...\foo. The normalizer rewrites backslashes to forward slashes
and the encoder replaces [./] with '-', producing e.g.
D--a-CodeForge-foo. Starts with a letter, not a dash.
Guard the POSIX-only startsWith('-') assertion on process.platform
so Windows CI passes while keeping the POSIX contract tested.
* Fix release.yml changelog extraction header pattern
The sed pattern was matching '## [v${VERSION}]' (bracketed) but the
container CHANGELOG uses unbracketed '## v${VERSION} — date' headers.
The match always failed and release notes silently fell back to the
'Release v${VERSION}' placeholder.
Switch to the same unbracketed pattern release-cli.yml uses (with a
trailing space sentinel to avoid prefix collisions like v2.2.1 vs
v2.2.10).
---------
Co-authored-by: Claude <claude@anthropic.com>
Copy file name to clipboardExpand all lines: cli/CHANGELOG.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,12 @@
1
1
# CodeForge CLI Changelog
2
2
3
+
## v0.2.1 — 2026-04-16
4
+
5
+
### Fixes
6
+
7
+
-**`session tokens --project` now works with absolute paths** — the filter was comparing an on-disk slug (e.g. `-workspaces-projects-CodeForge`) to the raw `--project` path (e.g. `/workspaces/projects/CodeForge`), which never matched. Absolute paths and paths starting with `./` / `../` are now encoded to Claude's slug form (replacing `/` and `.` with `-`) before matching. Plain substrings without separators still pass through unchanged, so `--project CodeForge` keeps working.
8
+
-**`session tokens --since` / `--until` now actually filter results** — both options were parsed but never applied. Filtering is session-level and uses file mtime (last-activity time) so sessions outside the window are skipped without being parsed.
Copy file name to clipboardExpand all lines: container/.devcontainer/CHANGELOG.md
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,19 @@
1
1
# CodeForge Devcontainer Changelog
2
2
3
+
## v2.2.1 — 2026-04-16
4
+
5
+
### Configuration
6
+
7
+
-**Default model changed to `claude-opus-4-5`** — `ANTHROPIC_MODEL` and `ANTHROPIC_DEFAULT_OPUS_MODEL` in default settings flipped from `claude-opus-4-7` to `claude-opus-4-5`. Subagents also run on 4.5 by default.
8
+
-**Per-alias context windows** — `CLAUDE_CODE_MAX_CONTEXT_TOKENS` and `CLAUDE_CODE_AUTO_COMPACT_WINDOW` removed from global `settings.json env` (they pinned 250k globally, which would exceed 4.5's 200k ceiling). Context is now set inline per alias: `cc` / `claude` / `ccw` / `cc-orc` = 200k; `cc7` / `ccw7` / `cc-orc7` = 400k.
9
+
-**New 4.7 alias variants** — `cc7`, `ccw7`, `cc-orc7` run Claude Code on `claude-opus-4-7` with a 400k context window (main / writing / orchestrator system prompts respectively). Use these for sessions that need 4.7's larger window; use `cc` / `ccw` / `cc-orc` (now on 4.5) for standard work.
10
+
-**Thinking display set to summarized** — `cc`, `claude`, `ccw`, and `cc-orc` aliases now pass `--thinking-display summarized`, keeping the terminal tidy while still surfacing thinking. `ccraw` is unaffected (stays vanilla).
11
+
-**View mode set to focus** — `viewMode` changed from `verbose` to `focus` in default settings for a cleaner terminal UI.
12
+
13
+
### Fixes
14
+
15
+
-**Disallowed tools alias splitting** — oh-my-claude disallowed tools are now stored as a bash array and expanded per-argument in the Claude aliases, so `--disallowedTools` and each tool name are passed as separate argv entries in both bash and zsh.
alias cc='CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --system-prompt-file "\$CLAUDE_CONFIG_DIR/main-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions \$_OMC_DISALLOWED_TOOLS'
100
-
alias claude='CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --system-prompt-file "\$CLAUDE_CONFIG_DIR/main-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions \$_OMC_DISALLOWED_TOOLS'
99
+
_OMC_DISALLOWED_TOOLS=(
100
+
--disallowedTools
101
+
mcp__oh-my-claude__remember
102
+
mcp__oh-my-claude__recall
103
+
mcp__oh-my-claude__get_memory
104
+
mcp__oh-my-claude__forget
105
+
mcp__oh-my-claude__list_memories
106
+
mcp__oh-my-claude__memory_status
107
+
mcp__oh-my-claude__compact_memories
108
+
mcp__oh-my-claude__clear_memories
109
+
mcp__oh-my-claude__summarize_memories
110
+
mcp__oh-my-claude__add_preference
111
+
mcp__oh-my-claude__list_preferences
112
+
mcp__oh-my-claude__get_preference
113
+
mcp__oh-my-claude__update_preference
114
+
mcp__oh-my-claude__delete_preference
115
+
mcp__oh-my-claude__match_preferences
116
+
mcp__oh-my-claude__preference_stats
117
+
mcp__oh-my-claude__coworker_task
118
+
)
119
+
120
+
alias cc='CLAUDE_CODE_MAX_CONTEXT_TOKENS=200000 CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --system-prompt-file "\$CLAUDE_CONFIG_DIR/main-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions --thinking-display summarized "\${_OMC_DISALLOWED_TOOLS[@]}"'
121
+
alias claude='CLAUDE_CODE_MAX_CONTEXT_TOKENS=200000 CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --system-prompt-file "\$CLAUDE_CONFIG_DIR/main-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions --thinking-display summarized "\${_OMC_DISALLOWED_TOOLS[@]}"'
101
122
alias ccraw='command "\$_CLAUDE_BIN"'
102
-
alias ccw='CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --system-prompt-file "\$CLAUDE_CONFIG_DIR/writing-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions \$_OMC_DISALLOWED_TOOLS'
103
-
alias cc-orc='CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --system-prompt-file "\$CLAUDE_CONFIG_DIR/orchestrator-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions \$_OMC_DISALLOWED_TOOLS'
123
+
alias ccw='CLAUDE_CODE_MAX_CONTEXT_TOKENS=200000 CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --system-prompt-file "\$CLAUDE_CONFIG_DIR/writing-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions --thinking-display summarized "\${_OMC_DISALLOWED_TOOLS[@]}"'
124
+
alias cc-orc='CLAUDE_CODE_MAX_CONTEXT_TOKENS=200000 CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --system-prompt-file "\$CLAUDE_CONFIG_DIR/orchestrator-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions --thinking-display summarized "\${_OMC_DISALLOWED_TOOLS[@]}"'
125
+
alias cc7='CLAUDE_CODE_MAX_CONTEXT_TOKENS=400000 CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --model claude-opus-4-7 --system-prompt-file "\$CLAUDE_CONFIG_DIR/main-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions --thinking-display summarized "\${_OMC_DISALLOWED_TOOLS[@]}"'
126
+
alias ccw7='CLAUDE_CODE_MAX_CONTEXT_TOKENS=400000 CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --model claude-opus-4-7 --system-prompt-file "\$CLAUDE_CONFIG_DIR/writing-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions --thinking-display summarized "\${_OMC_DISALLOWED_TOOLS[@]}"'
127
+
alias cc-orc7='CLAUDE_CODE_MAX_CONTEXT_TOKENS=400000 CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --model claude-opus-4-7 --system-prompt-file "\$CLAUDE_CONFIG_DIR/orchestrator-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions --thinking-display summarized "\${_OMC_DISALLOWED_TOOLS[@]}"'
104
128
alias ccr-apply='codeforge config apply && (ccr restart 2>/dev/null || ccr start) && echo "CCR config applied and restarted"'
0 commit comments