Releases: AnExiledDev/CodeForge
Releases · AnExiledDev/CodeForge
v1.14.2
Fixed
CI: Release Workflow (v1.14.1)
- test.js — settings.json path updated from
config/settings.jsontoconfig/defaults/settings.jsonto match config externalization refactor - test.js — Test 5 (executable check) result now included in exit condition; previously a failure was logged but did not affect the exit code
- setup.js — file permissions changed from 644 to 755 (executable) to match shebang and
bindeclaration in package.json
CI: Publish DevContainer Features Workflow (v1.14.1)
- features/README.md — removed from features directory;
devcontainers/action@v1treated it as a feature subdirectory and failed looking forREADME.md/devcontainer-feature.json - 11 devcontainer-feature.json files — removed
"maintainer"field (not in the DevContainer Feature spec schema, causing strict validation failure): ast-grep, ccburn, ccms, ccstatusline, ccusage, chromaterm, claude-monitor, claude-session-dashboard, lsp-servers, mcp-qdrant, tree-sitter
CI: Publish DevContainer Features Workflow (v1.14.2)
- 6 devcontainer-feature.json files — removed
"proposals"field that coexisted with"enum"on the same option (spec schema treats them as mutually exclusive viaanyOf): ccburn, ccusage, claude-monitor, claude-session-dashboard, mcp-qdrant, tree-sitter
Docs
- Active sidebar item — increased background opacity from 0.08 to 0.14, added
font-weight: 600andcolor: var(--sl-color-accent-high)for readable contrast against inactive items
v1.14.1
Fixed
CI: Release Workflow
- test.js — settings.json path updated from
config/settings.jsontoconfig/defaults/settings.jsonto match config externalization refactor - test.js — Test 5 (executable check) result now included in exit condition; previously a failure was logged but did not affect the exit code
- setup.js — file permissions changed from 644 to 755 (executable) to match shebang and
bindeclaration in package.json
CI: Publish DevContainer Features Workflow
- features/README.md — removed from features directory;
devcontainers/action@v1treated it as a feature subdirectory and failed looking forREADME.md/devcontainer-feature.json - 11 devcontainer-feature.json files — removed
"maintainer"field (not in the DevContainer Feature spec schema, causing strict validation failure): ast-grep, ccburn, ccms, ccstatusline, ccusage, chromaterm, claude-monitor, claude-session-dashboard, lsp-servers, mcp-qdrant, tree-sitter
v1.14.0
Fixed (CodeRabbit review)
- chromaterm/install.sh — username auto-detection now resets to empty before candidate loop, so
${USERNAME:-root}fallback works correctly - biome/install.sh — nvm.sh sourcing wrapped in
set +u/set -uto prevent unbound variable abort underset -euo pipefail - setup.js —
ccstatusline-settings.jsonadded to DEFAULT_PRESERVE so user customizations survive--forcepackage updates - docs agent-system.md — spec-writer moved from Full-Access to Read-Only agents table (matches its
permissionMode: plandefinition) - guard-readonly-bash.py — docstring corrected from "Returns JSON on stdout" to "Outputs block reason to stderr"
- git-forensics/SKILL.md — misleading "Blame through renames" comment fixed to "Show patch history through renames"
Added
Nuclear Workspace Scope Enforcement
- Blacklist system —
/workspaces/.devcontainer/permanently blocked for ALL operations (read, write, bash). Checked before allowlist, scope check, and cwd bypass. Cannot be overridden, even from workspace root - Bash enforcement — two-layer detection in
guard-workspace-scope.py:- Layer 1: 20+ regex patterns extract write targets (
>,tee,cp,mv,touch,mkdir,rm,ln,rsync,chmod,chown,dd,wget -O,curl -o,tar -C,unzip -d,gcc -o,sqlite3). System command exemption only when ALL targets resolve to system paths - Layer 2: regex scans entire command for any
/workspaces/path string — catches inline scripts, variable assignments, quoted paths. No exemptions, always runs
- Layer 1: 20+ regex patterns extract write targets (
- CWD context injector (
inject-workspace-cwd.py) — fires on SessionStart, UserPromptSubmit, PreToolUse, SubagentStart to reinforce working directory scope - Fail-closed error handling — JSON parse errors, exceptions, and unknown tools now exit 2 (block) instead of exit 0 (allow)
Agent System Enhancements
task-completed-check.py— quality gate hook (TaskCompleted) runs test suite before allowing task completionteammate-idle-check.py— quality gate hook (TeammateIdle) prevents teammates from going idle with incomplete tasksskills/debug/SKILL.md— structured log investigation skill replacing the old/debugslash commandpermissionModedeclared on all 17 agent definitions (plan for read-only, default for write-capable)- Agent-system README — full plugin documentation with hook lifecycle, agent table, quality gates
Skill Engine Enhancements
- 6 new skill matchers in
skill-suggester.py:spec-check,spec-init,spec-new,spec-refine,spec-update,team - Team skill expanded (v0.2.0) — quality gate hooks, plan approval workflow, keyboard shortcuts, use case examples, best practices, limitations
- Skill-engine README — full plugin documentation
New Features
- chromaterm — terminal output colorizer via ChromaTerm2 YAML rules
- kitty-terminfo — xterm-kitty terminfo for Kitty terminal compatibility
Documentation Site
- Astro/Starlight docs (
docs/) — full documentation portal with getting-started guides, plugin reference (12 pages), feature docs, customization, and API reference - GitHub Actions —
deploy-docs.yml(docs deployment),publish-features.yml(GHCR feature publishing),release.yml(release workflow) - Logos — CodeForgeLogo.png, CodeForgeLogoTr.png, github-avatar.png
Plugin Installation Documentation
- Remote install instructions added to all 11 plugin READMEs — "From GitHub" section with clone + enabledPlugins setup from
https://github.com/AnExiledDev/CodeForge - GHCR feature paths — features README updated with
ghcr.io/anexileddev/codeforge/<feature-name>:<version>and devcontainer.json usage examples - READMEs added to session-context, skill-engine, spec-workflow plugins
- Install sections added to workspace-scope-guard, codeforge-lsp, dangerous-command-blocker, protected-files-guard, notify-hook, ticket-workflow
Other
- Marketplace metadata —
marketplace.jsonrestructured withmetadataobject,pluginRoot, andkeywordsarrays for all plugins - Port forwarding for Claude Dashboard (port 7847) in devcontainer.json
- ChromaTerm wrapper in setup-aliases.sh —
cc/claude/ccwaliases pipe throughctwhen available package.jsonscripts — addedprepublishOnly,docs:dev,docs:build,docs:preview
ccstatusline Config Externalization
- Widget config extracted from inline
jq -ngeneration ininstall.shintoconfig/defaults/ccstatusline-settings.json— editable JSON file, single source of truth - File-manifest deployment — two new entries deploy the config to
~/.config/ccstatusline/settings.json(if-changed) and/usr/local/share/ccstatusline/settings.template.json(always) ${HOME}variable expansion added tosetup-config.sh— enables manifest entries targeting user home directory paths
Development Rules
- CLAUDE.md (project root) — added changelog and documentation update rules: all changes must have a changelog entry and update relevant docs
Changed
ccstatusline Feature
install.shsimplified — removed ~90 lines of inline JSON config generation, validation, and template creation. Config deployment now handled by file-manifest system
Workspace Scope Guard
- Reads (Read, Glob, Grep) now hard-blocked outside scope — upgraded from warning (exit 0) to block (exit 2)
- Allowlist trimmed to
/workspaces/.claude/and/tmp/only — removed/workspaces/.devcontainer/,/workspaces/.tmp/,/home/vscode/ - Hook timeout increased from 5s to 10s
- Matcher expanded to include Bash tool
Hook Output Schema Migration
- All hooks migrated to
hookSpecificOutputwrapper with explicithookEventName commit-reminder.py— upgraded from advisory to blocking (decision: block)spec-reminder.py— upgraded from advisory to blocking (decision: block)advisory-test-runner.py— test failures now block withdecision: block; passes/timeouts usesystemMessageticket-linker.py— output wrapped inhookSpecificOutputgit-state-injector.py,todo-harvester.py— output wrapped inhookSpecificOutput
Ticket Workflow
- Migrated from slash commands to skill-based approach — 4 slash commands and system-prompt.md replaced by skills directory
Skill Definitions
- All 21+ SKILL.md files rewritten with USE WHEN / DO NOT USE guidance, action-oriented descriptions, bumped to v0.2.0
skill-suggester.pykeyword maps overhauled with natural phrases and concrete identifiers- Skill suggestion output changed to mandatory directive format
- SubagentStart hook removed — suggestions now fire on UserPromptSubmit only
Error Output
block-dangerous.py— errors now written to stderr (was JSON on stdout)guard-protected.py,guard-protected-bash.py— errors now written to stderr
Features
ccstatusline— compact 3-line layout (was 8-line),rawValue: trueon token widgetsclaude-session-dashboard— default port 3000 → 7847,--host 0.0.0.0for external accessccms— build cache moved from.devcontainer/.build-cache/to${TMPDIR:-/tmp}/ccms-build-cache
Configuration
CLAUDE.md(devcontainer) — condensed from ~308 to ~90 lines, removed redundant sectionsspec-workflow.mdrule — condensed, defers to system prompt<specification_management>sectionmain-system-prompt.md— expanded Agent Teams guidance: file ownership, task sizing, quality gate hooks, plan approval- Plugin
plugin.jsonfiles —versionfield removed across all plugins
Fixed
- Stale references to deleted features (mcp-reasoner, splitrail, claude-code) removed from docs
- Documentation counts updated (features: 21, agents: 17, skills: 34)
- Version mismatch in README.md corrected
- Auto-formatter/auto-linter references consolidated to auto-code-quality throughout
- Code-directive plugin references updated to agent-system, skill-engine, spec-workflow
- Personal project paths removed from .gitignore and .npmignore
- setup.js stale feature references fixed (Reasoner MCP, Go → Rust)
.secretsadded to .npmignore for npm publish safety- Duplicate "### Fixed" header in v1.5.3 changelog entry
- NVM sourcing added to biome install script
- Cleanup trap added to shellcheck install script
Removed
auto-formatterplugin — deleted entirely (consolidated into auto-code-quality)auto-linterplugin — deleted entirely (consolidated into auto-code-quality)/debugslash command from agent-system (replaced by debug skill)- 4 ticket-workflow slash commands (
ticket:new,ticket:work,ticket:review-commit,ticket:create-pr) andsystem-prompt.md(replaced by skills) - Optional features docs for mcp-reasoner and splitrail (features no longer exist)
- SubagentStart hook from skill-engine (suggestion now UserPromptSubmit only)
v1.12.0
What's Changed
Added
- Plugin README documentation — 9 new READMEs for all marketplace plugins
- guard-protected-bash.py — Bash hook blocking commands that write to protected files
- Devcontainer secrets —
secretsblock for GH_TOKEN, NPM_TOKEN, GH_USERNAME, GH_EMAIL - Post-start hook system — extensible
/usr/local/devcontainer-poststart.d/runner - Git worktree support — project detection, system prompt guidance, protected-files-guard coverage
CLAUDECODE=null— allows nested Claude Code sessions (claude-in-claude)
Changed
- Feature version pinning — all features pinned to explicit versions (agent-browser 0.11.1, ast-grep 0.40.5, biome 2.4.2, ruff 0.15.1, pyright 1.1.408, node 1.6, rust 1.4, claude-code 1.1, etc.)
- Default shell: bash → zsh — VS Code terminal and tmux profiles
- Security hardening — dangerous-command-blocker adds 7 new patterns (Docker escape, bare force push, find -exec rm, git clean -f); both guard scripts fail closed on JSON parse errors
- ccms build cache — cached binary for faster container rebuilds
- setup.sh — Claude Code update runs in background; failure diagnostics; post-start hooks
- inotify-tools — moved to build-time install (tmux feature)
- Container memory — 4GB/8GB → 6GB/12GB recommendation
- Writing system prompt — new Emotional Architecture section
Removed
- mcp-reasoner — entire feature deleted
- splitrail — entire feature deleted
Full changelog: CHANGELOG.md
Install: npx codeforge-dev
v1.11.0
What's New
New Features
ccms— Session history search CLI (Rust binary) for searching Claude Code JSONL transcripts with boolean queries, role filtering, time scoping, and project isolationccw— Writing-mode alias with dedicated creative-writing system promptworkspace-scope-guard— Safety plugin that blocks writes and warns on reads outside the working directory/spec-build— Orchestrates full implementation lifecycle from an approved spec (plan → build → review → close)/spec-review— Standalone deep implementation review against a spec- CWD status line widget — Shows current working directory in ccstatusline
inject-cwdhook — Injects working directory context into every tool response- Rust runtime added as a devcontainer feature
Bug Fixes
setup-aliases.shidempotency — Fixed aliases disappearing on container re-open. Replaced cleanup+guard pattern with block-marker delete-and-rewrite strategy
Spec Workflow Overhaul
- Domain-based organization — Specs now live in
.specs/{domain}/{feature}.mdinstead of version directories - ROADMAP → MILESTONES — Renamed throughout all skills and templates
- Acceptance criteria markers — Three-state tracking:
[ ](not started),[~](implemented),[x](verified) - Expanded lifecycle —
/spec-reviewinserted before/spec-updatein post-implementation workflow
Other Changes
- LSP plugin gains declarative
lspServersconfiguration (pyright, typescript, gopls) git-state-injectornow injects working directory even outside git repos- System prompt formatting cleanup (line unwrapping, no content changes)
__pycache__excluded from npm tarball and git tracking- Skill count: 28 (was 26)
Full changelog: see CHANGELOG.md
Install: npx codeforge-dev@1.11.0