Skip to content

Commit 59438d4

Browse files
authored
Add versioned docs infrastructure and fix broken site URL (#34)
* Add versioned docs infrastructure and fix docs site URL Install starlight-versions plugin (commented out until first version archive) and configure the versions content collection. Fix site URL to codeforge.core-directive.com and remove /CodeForge base path, updating all internal links and meta tag references. * Consolidate duplicate ### Fixed sections in Unreleased changelog Merge three separate ### Fixed headings into one to comply with Keep a Changelog grouping conventions. Addresses CodeRabbit review. --------- Co-authored-by: AnExiledDev <AnExiledDev@users.noreply.github.com>
1 parent 8599b58 commit 59438d4

File tree

9 files changed

+270
-82
lines changed

9 files changed

+270
-82
lines changed

.devcontainer/CHANGELOG.md

Lines changed: 60 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
- Merged setup variables (`.env` flags) into the Environment Variables reference
1919
- Merged `.secrets` file authentication docs into the Configuration page
2020
- Removed `.devcontainer/docs/` directory — all content now lives in the docs site
21+
- **Versioned docs infrastructure** — installed `starlight-versions` plugin; no archived versions yet, first snapshot will be taken when v3 development begins
22+
- **Fixed docs site URL** — updated `site` to `https://codeforge.core-directive.com` and removed `/CodeForge` base path (custom domain serves from root)
2123

2224
### Fixed
2325

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

37+
38+
#### CI/CD
39+
- **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.
40+
41+
#### CCStatusLine Deployment
42+
- **`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
43+
- **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
44+
- **Silent copy failures**`setup-config.sh` now reports warnings when file deployment fails instead of logging success after a failed `cp`
45+
46+
#### Post-Integration Review Fixes
47+
- **skill-engine** — worktree skill definition uses weighted tuples (was plain strings, caused crash)
48+
- **dangerous-command-blocker** — fail closed on unexpected exceptions (was fail-open)
49+
- **ticket-workflow** — remove redundant `ValueError` from exception handlers
50+
- **workspace-scope-guard** — use maxsplit in variable assignment detection
51+
- **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
52+
- **Documentation** — update agent count to 21, skill count to 38, plugin count to 14 across all docs site pages
53+
- **Documentation** — add missing plugin pages for git-workflow and prompt-snippets
54+
- **Documentation** — add `cc-orc` and `dbr` to commands reference
55+
- **Documentation** — remove merge conflict marker from first-session.md
56+
- **Documentation** — update architecture.md directory tree with new plugins
57+
58+
#### CodeRabbit Review Fixes
59+
- **`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
60+
- **`tester.md`** — increased Stop hook timeout from 30s to 120s to accommodate larger test suites
61+
- **`setup-aliases.sh`** — added `cc-orc` to `cc-tools` discovery loop so it appears in tool audit
62+
- **`CLAUDE.md`** — added missing `keybindings.json`, `orchestrator-system-prompt.md`, and `writing-system-prompt.md` to directory structure tree
63+
- **`agent-system/README.md`** — updated `verify-no-regression.py` comment to list both consumers (implementer, refactorer); hyphenated "question-surfacing protocol"
64+
- **`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
65+
- **MD040 compliance** — added `text` language specifiers to 7 fenced code blocks across `investigator.md`, `tester.md`, and `documenter.md`
66+
- **`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
67+
- **`setup.sh` CODEFORGE_DIR** — deprecation guard now uses default-assignment semantics (`:=`) instead of unconditional overwrite, preserving any user-defined `CODEFORGE_DIR` from `.env`
68+
- **Docs site URLs** — replaced `anexileddev.github.io/CodeForge/` with custom domain `codeforge.core-directive.com/` across README.md, CLAUDE.md, and .devcontainer/README.md
69+
- **Architecture docs** — added `.checksums/` and `.markers/` directories to the `.codeforge/` tree in architecture.md
70+
- **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
71+
72+
73+
#### Claude Code Installation
74+
- **Update script no longer silently discards errors** — background update output now captured to log file instead of being discarded via `&>/dev/null`
75+
- **Update script simplified to native-binary-only** — removed npm fallback and `claude install` bootstrap code; added 60s timeout and transitional npm cleanup
76+
- **Alias resolution simplified**`_CLAUDE_BIN` now resolves directly to native binary path (removed npm and `/usr/local/bin` fallbacks)
77+
- **POSIX redirect** — replaced `&>/dev/null` with `>/dev/null 2>&1` in dependency check for portability
78+
- **Installer shell** — changed `sh -s` to `bash -s` when piping the official installer (it requires bash)
79+
- **Unquoted `${TARGET}`** — quoted variable in `su -c` command to prevent word splitting
80+
- **Directory prep** — added `~/.local/state` and `~/.claude` pre-creation; consolidated `chown` to cover entire `~/.local` tree
81+
82+
#### Plugin Marketplace
83+
- **`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
84+
85+
#### ChromaTerm
86+
- **Regex lookbehinds** — replaced alternation inside lookbehinds (`(?<=[\s(]|^)` and `(?<=commit |merge |...)`) with non-capturing groups containing individual lookbehinds (`(?:(?<=[\s(])|^)` and `(?:(?<=commit )|(?<=merge )|...)`) for PCRE2 compatibility
87+
88+
#### Terminal Color Support
89+
- **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
90+
- **devcontainer.json**`TERM` uses `${localEnv:TERM:xterm-256color}` to forward the host terminal type (e.g., `xterm-kitty`) instead of unconditionally overriding it
91+
- **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
92+
- **kitty-terminfo/README.md** — updated documentation to reflect `localEnv` forwarding and clarify behavior across VS Code vs non-VS Code entry points
93+
- **CLAUDE.md** — documented `TERM` and `COLORTERM` environment variables in the Environment section
94+
3595
### Added
3696

3797
#### Startup
@@ -83,42 +143,6 @@
83143
- **`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)
84144
- **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
85145

86-
### Fixed
87-
88-
#### CI/CD
89-
- **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.
90-
91-
#### CCStatusLine Deployment
92-
- **`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
93-
- **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
94-
- **Silent copy failures**`setup-config.sh` now reports warnings when file deployment fails instead of logging success after a failed `cp`
95-
96-
#### Post-Integration Review Fixes
97-
- **skill-engine** — worktree skill definition uses weighted tuples (was plain strings, caused crash)
98-
- **dangerous-command-blocker** — fail closed on unexpected exceptions (was fail-open)
99-
- **ticket-workflow** — remove redundant `ValueError` from exception handlers
100-
- **workspace-scope-guard** — use maxsplit in variable assignment detection
101-
- **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
102-
- **Documentation** — update agent count to 21, skill count to 38, plugin count to 14 across all docs site pages
103-
- **Documentation** — add missing plugin pages for git-workflow and prompt-snippets
104-
- **Documentation** — add `cc-orc` and `dbr` to commands reference
105-
- **Documentation** — remove merge conflict marker from first-session.md
106-
- **Documentation** — update architecture.md directory tree with new plugins
107-
108-
#### CodeRabbit Review Fixes
109-
- **`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
110-
- **`tester.md`** — increased Stop hook timeout from 30s to 120s to accommodate larger test suites
111-
- **`setup-aliases.sh`** — added `cc-orc` to `cc-tools` discovery loop so it appears in tool audit
112-
- **`CLAUDE.md`** — added missing `keybindings.json`, `orchestrator-system-prompt.md`, and `writing-system-prompt.md` to directory structure tree
113-
- **`agent-system/README.md`** — updated `verify-no-regression.py` comment to list both consumers (implementer, refactorer); hyphenated "question-surfacing protocol"
114-
- **`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
115-
- **MD040 compliance** — added `text` language specifiers to 7 fenced code blocks across `investigator.md`, `tester.md`, and `documenter.md`
116-
- **`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
117-
- **`setup.sh` CODEFORGE_DIR** — deprecation guard now uses default-assignment semantics (`:=`) instead of unconditional overwrite, preserving any user-defined `CODEFORGE_DIR` from `.env`
118-
- **Docs site URLs** — replaced `anexileddev.github.io/CodeForge/` with custom domain `codeforge.core-directive.com/` across README.md, CLAUDE.md, and .devcontainer/README.md
119-
- **Architecture docs** — added `.checksums/` and `.markers/` directories to the `.codeforge/` tree in architecture.md
120-
- **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
121-
122146
### Changed
123147

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

176-
### Fixed
177-
178-
#### Claude Code Installation
179-
- **Update script no longer silently discards errors** — background update output now captured to log file instead of being discarded via `&>/dev/null`
180-
- **Update script simplified to native-binary-only** — removed npm fallback and `claude install` bootstrap code; added 60s timeout and transitional npm cleanup
181-
- **Alias resolution simplified**`_CLAUDE_BIN` now resolves directly to native binary path (removed npm and `/usr/local/bin` fallbacks)
182-
- **POSIX redirect** — replaced `&>/dev/null` with `>/dev/null 2>&1` in dependency check for portability
183-
- **Installer shell** — changed `sh -s` to `bash -s` when piping the official installer (it requires bash)
184-
- **Unquoted `${TARGET}`** — quoted variable in `su -c` command to prevent word splitting
185-
- **Directory prep** — added `~/.local/state` and `~/.claude` pre-creation; consolidated `chown` to cover entire `~/.local` tree
186-
187-
#### Plugin Marketplace
188-
- **`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
189-
190-
#### ChromaTerm
191-
- **Regex lookbehinds** — replaced alternation inside lookbehinds (`(?<=[\s(]|^)` and `(?<=commit |merge |...)`) with non-capturing groups containing individual lookbehinds (`(?:(?<=[\s(])|^)` and `(?:(?<=commit )|(?<=merge )|...)`) for PCRE2 compatibility
192-
193-
#### Terminal Color Support
194-
- **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
195-
- **devcontainer.json**`TERM` uses `${localEnv:TERM:xterm-256color}` to forward the host terminal type (e.g., `xterm-kitty`) instead of unconditionally overriding it
196-
- **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
197-
- **kitty-terminfo/README.md** — updated documentation to reflect `localEnv` forwarding and clarify behavior across VS Code vs non-VS Code entry points
198-
- **CLAUDE.md** — documented `TERM` and `COLORTERM` environment variables in the Environment section
199-
200200
### Removed
201201

202202
#### Scripts

docs/astro.config.mjs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ import starlightLinksValidator from "starlight-links-validator";
99
import starlightLlmsTxt from "starlight-llms-txt";
1010
import starlightScrollToTop from "starlight-scroll-to-top";
1111
import starlightSidebarTopics from "starlight-sidebar-topics";
12+
// Uncomment when activating versioned docs (see plugin comment below)
13+
// import starlightVersions from "starlight-versions";
1214

1315
export default defineConfig({
14-
site: "https://anexileddev.github.io",
15-
base: "/CodeForge",
16+
site: "https://codeforge.core-directive.com",
1617
integrations: [
1718
// astro-mermaid MUST be registered BEFORE starlight
1819
astroMermaid(),
@@ -44,22 +45,22 @@ export default defineConfig({
4445
tag: "meta",
4546
attrs: {
4647
name: "og:image",
47-
content: "/CodeForge/og-image.png",
48+
content: "/og-image.png",
4849
},
4950
},
5051
{
5152
tag: "link",
5253
attrs: {
5354
rel: "icon",
5455
type: "image/png",
55-
href: "/CodeForge/favicon.png",
56+
href: "/favicon.png",
5657
},
5758
},
5859
{
5960
tag: "link",
6061
attrs: {
6162
rel: "apple-touch-icon",
62-
href: "/CodeForge/apple-touch-icon.png",
63+
href: "/apple-touch-icon.png",
6364
},
6465
},
6566
{
@@ -70,6 +71,17 @@ export default defineConfig({
7071
},
7172
],
7273
plugins: [
74+
// ── Versioned docs (activate when archiving the first version) ──
75+
// starlightVersions requires at least one archived version.
76+
// When v3 development begins, uncomment and add v2 as the first entry:
77+
//
78+
// starlightVersions({
79+
// versions: [{ slug: "2.0", label: "v2.0" }],
80+
// current: { label: "v3" },
81+
// }),
82+
//
83+
// Then run `npm run dev` — the plugin archives current docs as v2.0.
84+
// See: https://github.com/HiDeoo/starlight-versions
7385
starlightSidebarTopics([
7486
{
7587
label: "Getting Started",

0 commit comments

Comments
 (0)