Skip to content

Commit dc0521f

Browse files
committed
Merge main into staging (resolve CHANGELOG conflict from PR #41)
2 parents a46a598 + 6fe72f4 commit dc0521f

File tree

7 files changed

+180
-150
lines changed

7 files changed

+180
-150
lines changed

.devcontainer/.env.example

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,20 @@ SETUP_PLUGINS=true
2222
SETUP_UPDATE_CLAUDE=true
2323

2424
# Setup: auto-detect projects for VS Code Project Manager extension
25+
# Setup: configure VS Code Shift+Enter keybinding for Claude Code terminal
26+
SETUP_TERMINAL=true
27+
28+
# Setup: run post-start hooks from /usr/local/devcontainer-poststart.d/
29+
SETUP_POSTSTART=true
30+
2531
SETUP_PROJECTS=true
2632

2733
# Plugin blacklist: comma-separated plugin names to skip during installation
2834
# Example: PLUGIN_BLACKLIST="ticket-workflow,auto-linter"
2935
PLUGIN_BLACKLIST=""
36+
37+
# Project detection: directories to exclude from auto-detection (space-separated)
38+
# PROJECT_EXCLUDE_DIRS=".claude .gh .tmp .devcontainer .config node_modules .git"
39+
40+
# Official plugins: space-separated list installed from Anthropic/third-party marketplaces
41+
# OFFICIAL_PLUGINS="frontend-design@claude-plugins-official svelte@sveltejs/mcp"

.devcontainer/CHANGELOG.md

Lines changed: 151 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -289,30 +289,171 @@
289289
#### VS Code Extensions
290290
- **Todo+** (`fabiospampinato.vscode-todo-plus`) — removed from devcontainer extensions
291291

292-
## [v2.0.0] - 2026-02-26
292+
## v2.0.0 2026-02-26
293293

294-
### Added
295-
296-
#### .codeforge/ User Customization Directory
294+
### .codeforge/ Configuration System
297295
- New `.codeforge/` directory centralizes all user-customizable configuration files
298296
- Checksum-based modification detection preserves user changes during updates
299297
- `codeforge config apply` CLI command deploys config files to `~/.claude/` (same as container start)
300298
- Auto-migration from `.devcontainer/config/defaults/` to `.codeforge/config/` for existing users
301299
- `.codeforge/.codeforge-preserve` for listing additional files to preserve during updates
302-
303-
### Changed
304-
305-
#### Configuration
306300
- Config files moved from `.devcontainer/config/defaults/` to `.codeforge/config/`
307301
- File manifest moved from `.devcontainer/config/file-manifest.json` to `.codeforge/file-manifest.json`
308302
- Terminal connection scripts moved from `.devcontainer/` to `.codeforge/scripts/`
309303
- `CONFIG_SOURCE_DIR` env var deprecated in favor of `CODEFORGE_DIR`
310304
- `--force` updates now use checksum comparison for `.codeforge/` files (writes `.default` instead of `.codeforge-new`)
311305
- `--reset` preserves `.codeforge/` user modifications (only `.devcontainer/` is wiped)
312-
313-
#### Migration
314306
- v2 migration marker moved to `.codeforge/.markers/v2-migrated`
315307
- 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`)
316457

317458
## [v1.14.2] - 2026-02-24
318459

0 commit comments

Comments
 (0)