Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 60 additions & 60 deletions .devcontainer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
- Merged setup variables (`.env` flags) into the Environment Variables reference
- Merged `.secrets` file authentication docs into the Configuration page
- Removed `.devcontainer/docs/` directory — all content now lives in the docs site
- **Versioned docs infrastructure** — installed `starlight-versions` plugin; no archived versions yet, first snapshot will be taken when v3 development begins
- **Fixed docs site URL** — updated `site` to `https://codeforge.core-directive.com` and removed `/CodeForge` base path (custom domain serves from root)

### Fixed

Expand All @@ -32,6 +34,64 @@
#### Docs
- Removed stale merge conflict marker in first-session docs page


#### CI/CD
- **Release workflow** — switched from auto-publish on `package.json` change to tag-triggered (`v*` tags only); prevents accidental releases when PRs include version bumps. Tag must match `package.json` version or the workflow fails.

#### CCStatusLine Deployment
- **`CONFIG_SOURCE_DIR` deprecation guard** — `setup.sh` now detects stale `CONFIG_SOURCE_DIR=/workspaces/.claude` in `.env`, overrides to `$DEVCONTAINER_DIR/config`, and auto-comments the line on disk; the wrong path caused `setup-config.sh` to skip the file manifest entirely, leaving ccstatusline (and all manifest-based configs) undeployed
- **System template directory permissions** — `install.sh` now chowns `/usr/local/share/ccstatusline/` to the target user so `setup-config.sh` can write the template file during post-start
- **Silent copy failures** — `setup-config.sh` now reports warnings when file deployment fails instead of logging success after a failed `cp`

#### Post-Integration Review Fixes
- **skill-engine** — worktree skill definition uses weighted tuples (was plain strings, caused crash)
- **dangerous-command-blocker** — fail closed on unexpected exceptions (was fail-open)
- **ticket-workflow** — remove redundant `ValueError` from exception handlers
- **workspace-scope-guard** — use maxsplit in variable assignment detection
- **Shell scripts** — add executable bit to `check-setup.sh`, quote `PLUGIN_BLACKLIST` variable, add `set -uo pipefail` to tmux installer, replace deprecated `which` with `command -v`, normalize `&>` redirects in setup scripts
- **Documentation** — update agent count to 21, skill count to 38, plugin count to 14 across all docs site pages
- **Documentation** — add missing plugin pages for git-workflow and prompt-snippets
- **Documentation** — add `cc-orc` and `dbr` to commands reference
- **Documentation** — remove merge conflict marker from first-session.md
- **Documentation** — update architecture.md directory tree with new plugins

#### CodeRabbit Review Fixes
- **`implementer.md`** — changed PostToolUse hook (fires every Edit) to Stop hook (fires once at task end) with 120s timeout; prevents redundant test runs during multi-file tasks
- **`tester.md`** — increased Stop hook timeout from 30s to 120s to accommodate larger test suites
- **`setup-aliases.sh`** — added `cc-orc` to `cc-tools` discovery loop so it appears in tool audit
- **`CLAUDE.md`** — added missing `keybindings.json`, `orchestrator-system-prompt.md`, and `writing-system-prompt.md` to directory structure tree
- **`agent-system/README.md`** — updated `verify-no-regression.py` comment to list both consumers (implementer, refactorer); hyphenated "question-surfacing protocol"
- **`orchestrator-system-prompt.md`** — clarified plan mode allows investigator delegation for research; added catch-all entry in selection criteria pointing to the full specialist catalog
- **MD040 compliance** — added `text` language specifiers to 7 fenced code blocks across `investigator.md`, `tester.md`, and `documenter.md`
- **`setup.js` path traversal** — `configApply()` now validates that source paths resolve within `.codeforge/` and destination paths resolve within allowed directories (`CLAUDE_CONFIG_DIR`, `HOME`, `/usr/local/`), preventing directory traversal via `../` in manifest entries
- **`setup.sh` CODEFORGE_DIR** — deprecation guard now uses default-assignment semantics (`:=`) instead of unconditional overwrite, preserving any user-defined `CODEFORGE_DIR` from `.env`
- **Docs site URLs** — replaced `anexileddev.github.io/CodeForge/` with custom domain `codeforge.core-directive.com/` across README.md, CLAUDE.md, and .devcontainer/README.md
- **Architecture docs** — added `.checksums/` and `.markers/` directories to the `.codeforge/` tree in architecture.md
- **Troubleshooting docs** — renamed "Reset to Defaults" to "How to Reset" and clarified that `--reset` preserves `.codeforge/` user modifications; added step for restoring default config sources


#### Claude Code Installation
- **Update script no longer silently discards errors** — background update output now captured to log file instead of being discarded via `&>/dev/null`
- **Update script simplified to native-binary-only** — removed npm fallback and `claude install` bootstrap code; added 60s timeout and transitional npm cleanup
- **Alias resolution simplified** — `_CLAUDE_BIN` now resolves directly to native binary path (removed npm and `/usr/local/bin` fallbacks)
- **POSIX redirect** — replaced `&>/dev/null` with `>/dev/null 2>&1` in dependency check for portability
- **Installer shell** — changed `sh -s` to `bash -s` when piping the official installer (it requires bash)
- **Unquoted `${TARGET}`** — quoted variable in `su -c` command to prevent word splitting
- **Directory prep** — added `~/.local/state` and `~/.claude` pre-creation; consolidated `chown` to cover entire `~/.local` tree

#### Plugin Marketplace
- **`marketplace.json` schema fix** — changed all 11 plugin `source` fields from bare names (e.g., `"codeforge-lsp"`) to relative paths (`"./plugins/codeforge-lsp"`) so `claude plugin marketplace add` passes schema validation and all plugins register correctly

#### ChromaTerm
- **Regex lookbehinds** — replaced alternation inside lookbehinds (`(?<=[\s(]|^)` and `(?<=commit |merge |...)`) with non-capturing groups containing individual lookbehinds (`(?:(?<=[\s(])|^)` and `(?:(?<=commit )|(?<=merge )|...)`) for PCRE2 compatibility

#### Terminal Color Support
- **devcontainer.json** — added `TERM` and `COLORTERM=truecolor` to `remoteEnv`; Docker defaults to `TERM=xterm` (8 colors) which caused Claude Code and other CLI tools to downgrade rendering
- **devcontainer.json** — `TERM` uses `${localEnv:TERM:xterm-256color}` to forward the host terminal type (e.g., `xterm-kitty`) instead of unconditionally overriding it
- **setup-aliases.sh** — added terminal color defaults to managed shell block so tmux panes, `docker exec`, and SSH sessions also get 256-color and truecolor support
- **kitty-terminfo/README.md** — updated documentation to reflect `localEnv` forwarding and clarify behavior across VS Code vs non-VS Code entry points
- **CLAUDE.md** — documented `TERM` and `COLORTERM` environment variables in the Environment section

### Added

#### Startup
Expand Down Expand Up @@ -83,42 +143,6 @@
- **`documenter`** — consolidated documentation and specification agent (opus) merging doc-writer and spec-writer; handles README, API docs, docstrings, and the full spec lifecycle (create, refine, build, review, update, check)
- **Question Surfacing Protocol** — all 4 workhorse agents carry an identical protocol requiring them to STOP and return `## BLOCKED: Questions` sections when hitting ambiguities, ensuring no assumptions are made without user input

### Fixed

#### CI/CD
- **Release workflow** — switched from auto-publish on `package.json` change to tag-triggered (`v*` tags only); prevents accidental releases when PRs include version bumps. Tag must match `package.json` version or the workflow fails.

#### CCStatusLine Deployment
- **`CONFIG_SOURCE_DIR` deprecation guard** — `setup.sh` now detects stale `CONFIG_SOURCE_DIR=/workspaces/.claude` in `.env`, overrides to `$DEVCONTAINER_DIR/config`, and auto-comments the line on disk; the wrong path caused `setup-config.sh` to skip the file manifest entirely, leaving ccstatusline (and all manifest-based configs) undeployed
- **System template directory permissions** — `install.sh` now chowns `/usr/local/share/ccstatusline/` to the target user so `setup-config.sh` can write the template file during post-start
- **Silent copy failures** — `setup-config.sh` now reports warnings when file deployment fails instead of logging success after a failed `cp`

#### Post-Integration Review Fixes
- **skill-engine** — worktree skill definition uses weighted tuples (was plain strings, caused crash)
- **dangerous-command-blocker** — fail closed on unexpected exceptions (was fail-open)
- **ticket-workflow** — remove redundant `ValueError` from exception handlers
- **workspace-scope-guard** — use maxsplit in variable assignment detection
- **Shell scripts** — add executable bit to `check-setup.sh`, quote `PLUGIN_BLACKLIST` variable, add `set -uo pipefail` to tmux installer, replace deprecated `which` with `command -v`, normalize `&>` redirects in setup scripts
- **Documentation** — update agent count to 21, skill count to 38, plugin count to 14 across all docs site pages
- **Documentation** — add missing plugin pages for git-workflow and prompt-snippets
- **Documentation** — add `cc-orc` and `dbr` to commands reference
- **Documentation** — remove merge conflict marker from first-session.md
- **Documentation** — update architecture.md directory tree with new plugins

#### CodeRabbit Review Fixes
- **`implementer.md`** — changed PostToolUse hook (fires every Edit) to Stop hook (fires once at task end) with 120s timeout; prevents redundant test runs during multi-file tasks
- **`tester.md`** — increased Stop hook timeout from 30s to 120s to accommodate larger test suites
- **`setup-aliases.sh`** — added `cc-orc` to `cc-tools` discovery loop so it appears in tool audit
- **`CLAUDE.md`** — added missing `keybindings.json`, `orchestrator-system-prompt.md`, and `writing-system-prompt.md` to directory structure tree
- **`agent-system/README.md`** — updated `verify-no-regression.py` comment to list both consumers (implementer, refactorer); hyphenated "question-surfacing protocol"
- **`orchestrator-system-prompt.md`** — clarified plan mode allows investigator delegation for research; added catch-all entry in selection criteria pointing to the full specialist catalog
- **MD040 compliance** — added `text` language specifiers to 7 fenced code blocks across `investigator.md`, `tester.md`, and `documenter.md`
- **`setup.js` path traversal** — `configApply()` now validates that source paths resolve within `.codeforge/` and destination paths resolve within allowed directories (`CLAUDE_CONFIG_DIR`, `HOME`, `/usr/local/`), preventing directory traversal via `../` in manifest entries
- **`setup.sh` CODEFORGE_DIR** — deprecation guard now uses default-assignment semantics (`:=`) instead of unconditional overwrite, preserving any user-defined `CODEFORGE_DIR` from `.env`
- **Docs site URLs** — replaced `anexileddev.github.io/CodeForge/` with custom domain `codeforge.core-directive.com/` across README.md, CLAUDE.md, and .devcontainer/README.md
- **Architecture docs** — added `.checksums/` and `.markers/` directories to the `.codeforge/` tree in architecture.md
- **Troubleshooting docs** — renamed "Reset to Defaults" to "How to Reset" and clarified that `--reset` preserves `.codeforge/` user modifications; added step for restoring default config sources

### Changed

#### Skill Engine: Auto-Suggestion
Expand Down Expand Up @@ -173,30 +197,6 @@
- Added `CLAUDE_AUTH_TOKEN` setup flow to README, configuration reference, and troubleshooting
- ccstatusline README verification commands now respect `CLAUDE_CONFIG_DIR`

### Fixed

#### Claude Code Installation
- **Update script no longer silently discards errors** — background update output now captured to log file instead of being discarded via `&>/dev/null`
- **Update script simplified to native-binary-only** — removed npm fallback and `claude install` bootstrap code; added 60s timeout and transitional npm cleanup
- **Alias resolution simplified** — `_CLAUDE_BIN` now resolves directly to native binary path (removed npm and `/usr/local/bin` fallbacks)
- **POSIX redirect** — replaced `&>/dev/null` with `>/dev/null 2>&1` in dependency check for portability
- **Installer shell** — changed `sh -s` to `bash -s` when piping the official installer (it requires bash)
- **Unquoted `${TARGET}`** — quoted variable in `su -c` command to prevent word splitting
- **Directory prep** — added `~/.local/state` and `~/.claude` pre-creation; consolidated `chown` to cover entire `~/.local` tree

#### Plugin Marketplace
- **`marketplace.json` schema fix** — changed all 11 plugin `source` fields from bare names (e.g., `"codeforge-lsp"`) to relative paths (`"./plugins/codeforge-lsp"`) so `claude plugin marketplace add` passes schema validation and all plugins register correctly

#### ChromaTerm
- **Regex lookbehinds** — replaced alternation inside lookbehinds (`(?<=[\s(]|^)` and `(?<=commit |merge |...)`) with non-capturing groups containing individual lookbehinds (`(?:(?<=[\s(])|^)` and `(?:(?<=commit )|(?<=merge )|...)`) for PCRE2 compatibility

#### Terminal Color Support
- **devcontainer.json** — added `TERM` and `COLORTERM=truecolor` to `remoteEnv`; Docker defaults to `TERM=xterm` (8 colors) which caused Claude Code and other CLI tools to downgrade rendering
- **devcontainer.json** — `TERM` uses `${localEnv:TERM:xterm-256color}` to forward the host terminal type (e.g., `xterm-kitty`) instead of unconditionally overriding it
- **setup-aliases.sh** — added terminal color defaults to managed shell block so tmux panes, `docker exec`, and SSH sessions also get 256-color and truecolor support
- **kitty-terminfo/README.md** — updated documentation to reflect `localEnv` forwarding and clarify behavior across VS Code vs non-VS Code entry points
- **CLAUDE.md** — documented `TERM` and `COLORTERM` environment variables in the Environment section

### Removed

#### Scripts
Expand Down
22 changes: 17 additions & 5 deletions docs/astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@ import starlightLinksValidator from "starlight-links-validator";
import starlightLlmsTxt from "starlight-llms-txt";
import starlightScrollToTop from "starlight-scroll-to-top";
import starlightSidebarTopics from "starlight-sidebar-topics";
// Uncomment when activating versioned docs (see plugin comment below)
// import starlightVersions from "starlight-versions";

export default defineConfig({
site: "https://anexileddev.github.io",
base: "/CodeForge",
site: "https://codeforge.core-directive.com",
integrations: [
// astro-mermaid MUST be registered BEFORE starlight
astroMermaid(),
Expand Down Expand Up @@ -44,22 +45,22 @@ export default defineConfig({
tag: "meta",
attrs: {
name: "og:image",
content: "/CodeForge/og-image.png",
content: "/og-image.png",
},
},
{
tag: "link",
attrs: {
rel: "icon",
type: "image/png",
href: "/CodeForge/favicon.png",
href: "/favicon.png",
},
},
{
tag: "link",
attrs: {
rel: "apple-touch-icon",
href: "/CodeForge/apple-touch-icon.png",
href: "/apple-touch-icon.png",
},
},
{
Expand All @@ -70,6 +71,17 @@ export default defineConfig({
},
],
plugins: [
// ── Versioned docs (activate when archiving the first version) ──
// starlightVersions requires at least one archived version.
// When v3 development begins, uncomment and add v2 as the first entry:
//
// starlightVersions({
// versions: [{ slug: "2.0", label: "v2.0" }],
// current: { label: "v3" },
// }),
//
// Then run `npm run dev` — the plugin archives current docs as v2.0.
// See: https://github.com/HiDeoo/starlight-versions
starlightSidebarTopics([
{
label: "Getting Started",
Expand Down
Loading