|
289 | 289 | #### VS Code Extensions |
290 | 290 | - **Todo+** (`fabiospampinato.vscode-todo-plus`) — removed from devcontainer extensions |
291 | 291 |
|
292 | | -## [v2.0.0] - 2026-02-26 |
| 292 | +## v2.0.0 — 2026-02-26 |
293 | 293 |
|
294 | | -### Added |
295 | | - |
296 | | -#### .codeforge/ User Customization Directory |
| 294 | +### .codeforge/ Configuration System |
297 | 295 | - New `.codeforge/` directory centralizes all user-customizable configuration files |
298 | 296 | - Checksum-based modification detection preserves user changes during updates |
299 | 297 | - `codeforge config apply` CLI command deploys config files to `~/.claude/` (same as container start) |
300 | 298 | - Auto-migration from `.devcontainer/config/defaults/` to `.codeforge/config/` for existing users |
301 | 299 | - `.codeforge/.codeforge-preserve` for listing additional files to preserve during updates |
302 | | - |
303 | | -### Changed |
304 | | - |
305 | | -#### Configuration |
306 | 300 | - Config files moved from `.devcontainer/config/defaults/` to `.codeforge/config/` |
307 | 301 | - File manifest moved from `.devcontainer/config/file-manifest.json` to `.codeforge/file-manifest.json` |
308 | 302 | - Terminal connection scripts moved from `.devcontainer/` to `.codeforge/scripts/` |
309 | 303 | - `CONFIG_SOURCE_DIR` env var deprecated in favor of `CODEFORGE_DIR` |
310 | 304 | - `--force` updates now use checksum comparison for `.codeforge/` files (writes `.default` instead of `.codeforge-new`) |
311 | 305 | - `--reset` preserves `.codeforge/` user modifications (only `.devcontainer/` is wiped) |
312 | | - |
313 | | -#### Migration |
314 | 306 | - v2 migration marker moved to `.codeforge/.markers/v2-migrated` |
315 | 307 | - Container start auto-migrates `.devcontainer/config/defaults/` to `.codeforge/config/` if needed |
| 308 | +- Moved `.claude` directory from `/workspaces/.claude` to `~/.claude` (home directory) |
| 309 | +- Added Docker named volume for persistence across rebuilds (per-instance isolation via `${devcontainerId}`) |
| 310 | +- `CLAUDE_CONFIG_DIR` now defaults to `~/.claude` |
| 311 | + |
| 312 | +### System Prompts |
| 313 | +- **Main system prompt redesigned** — reorganized from 672 to 462 lines; personality, core directives, and response guidelines at the top |
| 314 | +- **Personality section** — communication style (casual-professional, direct, terse), humor rules, honesty approach, AuDHD-aware patterns, good/bad response examples; replaces the empty `<identity>` tag |
| 315 | +- **Compressed specification management** — 98 to 28 lines; full template and enforcement workflow moved to loadable skills |
| 316 | +- **Compressed code standards** — removed textbook principle recitations (SOLID, DRY/KISS/YAGNI by name); kept only concrete actionable rules |
| 317 | +- **Browser automation** and **git worktrees** sections moved to loadable skills |
| 318 | +- **Context-passing protocol** in orchestration — mandatory instructions for including gathered context, file paths, and constraints when spawning subagents |
| 319 | +- Absorbed `<assumption_surfacing>` into `<core_directives>`, `<professional_objectivity>` into `<personality>` |
| 320 | +- Deduplicated team composition examples; consolidated "no filler" instructions |
| 321 | +- **`<git_worktrees>` section** — updated for Claude Code native worktree convention (`<repo>/.claude/worktrees/`), `EnterWorktree` tool guidance, `.worktreeinclude` documentation |
| 322 | + |
| 323 | +### Orchestrator Mode |
| 324 | +- **`cc-orc` alias** — new Claude Code entry point using `orchestrator-system-prompt.md` for delegation-first operation |
| 325 | +- **`orchestrator-system-prompt.md`** — slim prompt (~250 lines) with delegation model, agent catalog, question surfacing protocol, planning gates, spec enforcement, and action safety |
| 326 | + |
| 327 | +### Agent System |
| 328 | +- **4 workhorse agents** — `investigator` (consolidated read-only research, sonnet), `implementer` (consolidated read-write implementation, opus/worktree), `tester` (enhanced test agent, opus/worktree), `documenter` (consolidated docs + specs, opus) |
| 329 | +- **Question Surfacing Protocol** — all 4 workhorse agents STOP and return `## BLOCKED: Questions` on ambiguities |
| 330 | +- **All 21 agents now have communication protocols** — read-only: "Handling Uncertainty"; write-capable: "Question Surfacing Protocol" |
| 331 | +- **Architect agent overhaul** — anti-fluff enforcement (20+ banned patterns), team orchestration planning, complexity scaling (simple/moderate/complex), concrete edit ordering (Models→Services→Routes→Tests→Config), rollback strategy for schema/API changes, 3 new examples |
| 332 | +- **Generalist rewritten as last-resort** — description explicitly warns when a specialist might be better |
| 333 | +- **Investigator narrowed** — repositioned from catch-all to "cross-domain investigations spanning 2+ specialist areas" |
| 334 | +- **Agent merges** — tester→test-writer (single test agent), doc-writer→documenter (single docs agent) |
| 335 | +- **Bash guard hooks** added to researcher, debug-logs, perf-profiler (prevents state-changing commands in read-only agents) |
| 336 | +- **Improved agent descriptions for routing accuracy** — trigger phrases, overlap boundaries between security-auditor/dependency-analyst, explorer/researcher |
| 337 | +- **Resolved communication protocol contradictions** across all agent behavioral rules |
| 338 | +- Agent count increased from 17 to 21 (4 workhorse + 17 specialist) |
| 339 | +- Agent-system README updated with workhorse agent table, per-agent hooks, plugin structure |
| 340 | + |
| 341 | +### Skill Engine |
| 342 | +- **Weighted scoring** — suggestion phrases carry confidence weights (0.0–1.0) instead of binary match |
| 343 | +- **Negative patterns** — substrings that instantly disqualify skills (prevents fastapi triggering for pydantic-ai) |
| 344 | +- **Context guards** — low-confidence matches (< 0.6) require confirming context word |
| 345 | +- **Ranked results capped at 3** — sorted by score then priority tier; eliminates suggestion floods |
| 346 | +- **Priority tiers** — explicit commands (10) > technology skills (7) > patterns (5) > generic (3) |
| 347 | +- **worktree skill** — git worktree creation, management, cleanup, `EnterWorktree` tool, `.worktreeinclude` setup |
| 348 | + |
| 349 | +### Plugins |
| 350 | +- **Git workflow** — `/ship` (commit/push/PR with code review and approval) and `/pr:review` (PR review by number/URL, posts findings as comment) |
| 351 | +- **Prompt snippets** — `/ps` command for quick behavioral mode switches (noaction, brief, plan, go, review, ship, deep, hold, recall, wait); composable (`/ps noaction brief`) |
| 352 | + |
| 353 | +### Claude Code Installation |
| 354 | +- **Native binary** via Anthropic's official installer (`https://claude.ai/install.sh`) replacing npm-based feature |
| 355 | +- **Auto-updater works without root** — native binary at `~/.local/bin/claude` owned by container user |
| 356 | +- **Post-start onboarding hook** (`99-claude-onboarding.sh`) — ensures `hasCompletedOnboarding: true` when token auth configured |
| 357 | +- Update script captures errors to log (was discarding via `&>/dev/null`) |
| 358 | +- Simplified to native-binary-only (removed npm fallback, `claude install` bootstrap) |
| 359 | +- Alias resolution simplified — `_CLAUDE_BIN` resolves directly to native binary |
| 360 | +- POSIX redirect, bash-required installer shell, quoted `${TARGET}`, directory pre-creation |
| 361 | + |
| 362 | +### Testing |
| 363 | +- **241 pytest tests** covering 6 critical plugin scripts (previously zero tests): |
| 364 | + - `block-dangerous.py` (46), `guard-workspace-scope.py` (40), `guard-protected.py` (55), `guard-protected-bash.py` (24), `guard-readonly-bash.py` (63), `redirect-builtin-agents.py` (13) |
| 365 | +- `test:plugins` and `test:all` npm scripts |
| 366 | + |
| 367 | +### Authentication |
| 368 | +- `CLAUDE_AUTH_TOKEN` support in `.secrets` for long-lived tokens from `claude setup-token` |
| 369 | +- Auto-creates `.credentials.json` from token on container start (idempotent) |
| 370 | +- `CLAUDE_AUTH_TOKEN` in devcontainer.json secrets declaration |
| 371 | + |
| 372 | +### Security |
| 373 | +- Protected-files-guard blocks `.credentials.json` modifications |
| 374 | +- Replaced `eval` tilde expansion with `getent passwd` lookup (prevents shell injection) |
| 375 | +- Auth token JSON-escaped before writing; credential directory with restrictive umask (700) |
| 376 | +- `setup.js` path traversal prevention — `configApply()` validates source/destination paths |
| 377 | + |
| 378 | +### Performance |
| 379 | +- Commented out Rust toolchain feature — saves ~1.23 GB image size |
| 380 | +- Commented out ccms feature (requires Rust) |
| 381 | +- Updated Bun to latest (was pinned to 1.3.9) |
| 382 | +- npm cache cleanup across 6 features: agent-browser, ast-grep, biome, claude-session-dashboard, lsp-servers, tree-sitter (saves ~96 MB) |
| 383 | + |
| 384 | +### Port Forwarding |
| 385 | +- Dynamic forwarding for all ports in VS Code (was only port 7847) |
| 386 | +- **devcontainer-bridge (dbr)** — automatic port discovery and forwarding outside VS Code via [devcontainer-bridge](https://github.com/bradleybeddoes/devcontainer-bridge) |
| 387 | + |
| 388 | +### Terminal & Color |
| 389 | +- `TERM` and `COLORTERM=truecolor` in `remoteEnv` (Docker defaults to 8-color `xterm`) |
| 390 | +- `TERM` forwards host terminal type via `${localEnv:TERM:xterm-256color}` (e.g., `xterm-kitty`) |
| 391 | +- Terminal color defaults in managed shell block for tmux panes, `docker exec`, SSH sessions |
| 392 | +- kitty-terminfo docs updated for `localEnv` forwarding |
| 393 | + |
| 394 | +### Status Bar |
| 395 | +- Distinct background colors per token widget (blue=input, magenta=output, yellow=cached, green=total) |
| 396 | +- Bold 2-char labels (In, Ou, Ca, Tt) fused to data widgets, `rawValue: true` on model widget |
| 397 | +- CLAUDE.md "Status Bar Widgets" section with widget properties and conventions |
| 398 | + |
| 399 | +### Dangerous Command Blocker |
| 400 | +- Force push block now suggests `git merge` as workaround |
| 401 | +- Block `--force-with-lease` — all force push variants now blocked uniformly |
| 402 | +- Block remote branch deletion (`git push origin --delete`, colon-refspec `git push origin :branch`) |
| 403 | +- Fixed README — error handling documented as "fails open" but code actually fails closed |
| 404 | + |
| 405 | +### Session Context & Code Quality |
| 406 | +- **Commit reminder** — switched to advisory (was blocking); tiered logic for meaningful changes; only fires when session modified files |
| 407 | +- **Advisory test runner** — reads from correct tmp file prefix (`claude-cq-edited` instead of `claude-edited-files`) |
| 408 | + |
| 409 | +### Scripts & Migration |
| 410 | +- Replaced `setup-symlink-claude.sh` with `setup-migrate-claude.sh` (one-time migration) |
| 411 | +- Migration script hardened — `cp -a` archive mode, marker-based idempotency, critical file verification, ownership fixup |
| 412 | +- `.env` deprecation guard — `setup.sh` detects stale `CLAUDE_CONFIG_DIR=/workspaces/.claude`, overrides and auto-comments |
| 413 | +- `setup.sh` `CODEFORGE_DIR` uses default-assignment (`:=`) to preserve user-defined values |
| 414 | +- Container runtime pre-flight check — validates Docker/Podman before build, OS-specific remediation |
| 415 | + |
| 416 | +### CI/CD & Public Repo |
| 417 | +- **Tag-triggered release workflow** (`v*` tags only) — prevents accidental releases from version bumps in PRs |
| 418 | +- CI workflow (Node 18, `npm test` + Biome check), CodeQL security analysis, Dependabot (weekly npm + GitHub Actions) |
| 419 | +- Bug report + feature request templates, PR template, issue template config |
| 420 | +- CONTRIBUTING.md, CLA.md, dual licensing notice, CI badge, SPDX headers on all 36 source files |
| 421 | + |
| 422 | +### Bug Fixes |
| 423 | +- Bun PATH in non-interactive shells |
| 424 | +- ChromaTerm regex lookbehinds — PCRE2 compatibility |
| 425 | +- CCStatusLine `CONFIG_SOURCE_DIR` deprecation guard, template directory permissions, silent copy failure reporting |
| 426 | +- `marketplace.json` schema — plugin `source` fields changed from bare names to relative paths |
| 427 | +- skill-engine worktree skill weighted tuples (was plain strings, caused crash) |
| 428 | +- dangerous-command-blocker fail closed on exceptions (was fail-open) |
| 429 | +- ticket-workflow redundant `ValueError` removed |
| 430 | +- workspace-scope-guard maxsplit in variable assignment detection |
| 431 | +- Shell scripts — executable bit on `check-setup.sh`, quoted `PLUGIN_BLACKLIST`, `set -uo pipefail` in tmux installer, `command -v` replacing deprecated `which`, normalized `&>` redirects |
| 432 | +- `implementer.md` — PostToolUse hook changed to Stop hook with 120s timeout |
| 433 | +- `tester.md` — Stop hook timeout 30s→120s |
| 434 | +- Stale merge conflict marker in first-session docs |
| 435 | + |
| 436 | +### Documentation |
| 437 | +- **DevContainer CLI guide** — dedicated Getting Started page for terminal-only workflows |
| 438 | +- **v2 Migration Guide** — path changes, automatic migration, manual steps, breaking changes, troubleshooting |
| 439 | +- **Ported `.devcontainer/docs/` to docs site** — Keybindings page, Troubleshooting page (12+ entries), Optional Features page, merged env vars and .secrets docs |
| 440 | +- Versioned docs infrastructure (starlight-versions plugin) |
| 441 | +- Fixed docs site URL to `https://codeforge.core-directive.com` (custom domain, no base path) |
| 442 | +- Replaced `anexileddev.github.io/CodeForge/` URLs with custom domain across all files |
| 443 | +- README: "Why CodeForge?" section, architecture overview, configuration summary |
| 444 | +- Agent/skill/plugin count updates (21 agents, 38 skills, 14 plugins) across all docs pages |
| 445 | +- Missing plugin pages for git-workflow and prompt-snippets |
| 446 | +- Port Forwarding reference, CLI guide cross-link, slimmed Installation page |
| 447 | +- Documented 4 workhorse agents, cc-orc command, CONFIG_SOURCE_DIR deprecation, CLAUDE_AUTH_TOKEN setup |
| 448 | +- MD040 compliance (language specifiers on fenced code blocks) |
| 449 | +- Architecture docs — `.checksums/` and `.markers/` in `.codeforge/` tree |
| 450 | +- Troubleshooting — "Reset to Defaults" renamed to "How to Reset", clarified `--reset` behavior |
| 451 | +- Removed `.devcontainer/docs/` directory (all content migrated to docs site) |
| 452 | +- All docs reference `~/.claude` as default config path |
| 453 | + |
| 454 | +### Removed |
| 455 | +- `setup-symlink-claude.sh` — replaced by `setup-migrate-claude.sh` |
| 456 | +- **Todo+** VS Code extension (`fabiospampinato.vscode-todo-plus`) |
316 | 457 |
|
317 | 458 | ## [v1.14.2] - 2026-02-24 |
318 | 459 |
|
|
0 commit comments