Skip to content

Releases: RapierCraftStudios/ForgeDock

v1.0.17

16 Jun 13:24

Choose a tag to compare

What's Changed

  • Feat: /scope command — complexity estimate before work-on by @RapierCraft in #621
  • Feat: /changelog command — auto-generate release notes from FORGE annotations by @RapierCraft in #622
  • Feat: /status command — pipeline-wide situational awareness by @rapiercraft-forge[bot] in #620
  • Feat: /explain command — plain-English breakdown of FORGE annotations by @RapierCraft in #623
  • Feat: /diagnose command — trace pipeline annotation chain and identify failure point by @RapierCraft in #629
  • Feat: /replay command — read-only playback of pipeline runs by @RapierCraft in #625
  • feat(commands): /resume — context recovery after compaction by @RapierCraft in #624
  • Feat: /adopt command — bootstrap existing repos for ForgeDock by @RapierCraft in #627
  • Fix: session-start.mjs hook registration in settings.json by @RapierCraft in #631
  • chore: merge stranded Wave 1 code into staging (lane routing fix) by @RapierCraft in #640
  • Fix: grep -oP not portable on macOS in /adopt issue count (#638) by @RapierCraft in #644
  • Fix(adopt): correct phase skip target from Phase 5 to Phase 6 by @RapierCraft in #645
  • Fix: remove dead awk CONTRACT extraction in /explain Phase 3 by @RapierCraft in #646
  • Fix(adopt): Investigation type maps to 'feature' label instead of 'documentation' by @RapierCraft in #642
  • fix(diagnose): correct FORGE:INVESTIGATOR:COMPLETE → INVESTIGATION:COMPLETE in F3/F4 by @RapierCraft in #647
  • Fix: emit 'no PRs found' message when changelog range yields empty result by @RapierCraft in #643
  • fix(status): replace grep -oP with portable sed for macOS compatibility by @RapierCraft in #641
  • Fix: /replay triple-quote injection via env var body pass by @RapierCraft in #648
  • Feat: inject ForgeDock behavioral rules into project CLAUDE.md on install by @RapierCraft in #649
  • Feat: stub-based command install to reduce context load by ~99% by @RapierCraft in #656
  • Fix: add enable/disable/status CLI commands (#608) by @RapierCraft in #660
  • Fix: uninstall fully reverses all install side-effects by @RapierCraft in #661
  • Feat: forgedock doctor — installation health check by @RapierCraft in #662
  • Feat: wire premium install TUI into forgedock.mjs (#605) by @RapierCraft in #664
  • feat(devdocs): create devdocs/agent/github-cli-patterns.md — GitHub CLI cheat sheet for pipeline agents by @RapierCraft in #695
  • feat(bin): merge /scope command to main — pre-flight complexity estimate (#681) by @RapierCraft in #696
  • feat(devdocs): DevDocs v2 frontmatter schema — add lifecycle fields to all template files by @RapierCraft in #697
  • Fix: gh api --jq --arg broken pattern in review-pr.md and review-pr-agents.md by @RapierCraft in #698
  • Fix: gh gist edit stdin pipe — use temp file in investigate.md by @RapierCraft in #700
  • Feat(docs): claude-breakpoints.json — structured registry of known Claude Code version breakpoints by @RapierCraft in #699
  • Feat(scripts): transition-label.sh — label state machine with validation by @RapierCraft in #702
  • feat(scripts): classify-lane.sh — deterministic lane routing from issue milestone by @RapierCraft in #703
  • Feat(scripts): scaffold .forgedock/scripts/ directory and gitignore integration on init by @rapiercraft-forge[bot] in #704
  • Feat: validate-pr-target.sh — hard-fail if PR base doesn't match classified lane by @rapiercraft-forge[bot] in #712
  • feat(installer): symlink scripts/ to ~/.claude/scripts/ and wire classify-lane.sh into orchestrate.md by @rapiercraft-forge[bot] in #713
  • Feat: universal vs adaptive scripts boundary — precedence rules and override semantics by @rapiercraft-forge[bot] in #714
  • fix(work-on): branch existence validation + PR_BASE computed before worktree creation by @rapiercraft-forge[bot] in #718
  • Feat(commands): /compat-audit — on-demand Claude Code compatibility and feature parity report by @rapiercraft-forge[bot] in #717
  • Feat: DevDocs v2 index format + selective loading by @rapiercraft-forge[bot] in #720
  • Feat: DevDocs self-dogfooding — scaffold own devdocs/ with v2 schema by @rapiercraft-forge[bot] in #729
  • Feat: machine-readable phase checkpoint — deterministic resume without prose parsing by @rapiercraft-forge[bot] in #730
  • feat(scripts): forge.yaml learned section and pattern capture (#667) by @rapiercraft-forge[bot] in #728
  • feat(work-on): complexity-proportional fast-path — skip phases for simple and investigation tasks by @rapiercraft-forge[bot] in #736
  • Feat(commands): /optimize command — generate per-repo adaptive scripts (#668) by @rapiercraft-forge[bot] in #735
  • feat(orchestrate): stall detection and structured auto-resume (#683) by @rapiercraft-forge[bot] in #737
  • perf(docs): measure and document token savings from per-repo adaptive scripts (#673) by @rapiercraft-forge[bot] in #741
  • docs(quality-gate): clarify adaptive behavior and stack-specific checks by @rapiercraft-forge[bot] in #751
  • fix(compat-audit): export FORGE_HOME_PATH before Node.js heredoc by @rapiercraft-forge[bot] in #749
  • Fix: format-commit.sh template — add TYPE arg to fix SCOPE used as type prefix by @rapiercraft-forge[bot] in #748
  • feat(ci): add test gate before npm publish by @rapiercraft-forge[bot] in #750
  • Fix: replace hardcoded user-specific paths in devdocs with generic placeholders by @rapiercraft-forge[bot] in #753
  • docs(readme): soften benchmark claim to avoid unverifiable specifics by @rapiercraft-forge[bot] in #754
  • fix(cli): use os.homedir() instead of process.env.HOME by @rapiercraft-forge[bot] in #755
  • fix(scripts): guard -R flag against missing value in classify-lane.sh by @rapiercraft-forge[bot] in #752
  • fix(work-on): add FORGE:HEARTBEAT inline at Phase 1/3/5 entry points (#740) by @rapiercraft-forge[bot] in #756
  • Fix: gitignore dedup guard uses line-by-line active-line check (#708) by @rapiercraft-forge[bot] in #757
  • fix(build): sanitize issue labels before AWK domain matching to prevent injection by @rapiercraft-forge[bot] in #759
  • fix(work-on): resolve correction capture owner login via tiered lookup by @rapiercraft-forge[bot] in #758
  • fix(work-on): clarify AC for TRIVIAL fast-path — Builder Contract is retained, not skipped by @rapiercraft-forge[bot] in #760
  • Fix(compat-audit): use npx forgedock update in breakpoints advisory by @rapiercraft-forge[bot] in #761
  • fix(scripts): strip git-invalid chars from classify-lane.sh slug (#707) by @rapiercraft-forge[bot] in #762
  • fix(devdocs): remove closed issues #619 and #635 from milestone table by @rapiercraft-forge[bot] in #763
  • docs: document yq as prerequisite tooling for forge commands by @rapiercraft-forge[bot] in #764
  • fix(hooks): replace ghost enable/disable commands in session-start hook by @rapiercraft-forge[bot] in https://github.com/RapierCraftStudios...
Read more

v1.0.16

15 Jun 14:01

Choose a tag to compare

What's Changed

  • chore(package): declare @anthropic-ai/claude-code as peerDependency by @RapierCraft in #690

Full Changelog: v1.0.15...v1.0.16

v1.0.15

15 Jun 06:18

Choose a tag to compare

Full Changelog: v1.0.14...v1.0.15

v1.0.14

15 Jun 03:08

Choose a tag to compare

What's Changed

  • Feat: add runSteps() live-checklist orchestrator to tui.mjs (#594) by @rapiercraft-forge[bot] in #596
  • Feat: render ForgeDock F-monogram as colored half-block art in splash (#593) by @rapiercraft-forge[bot] in #598
  • Feat: rebuild all npx forgedock subcommands on runSteps + polished TUI (#595) by @rapiercraft-forge[bot] in #601
  • fix(tui): remove xterm-256/screen-256 false-positives from USE_TRUECOLOR by @rapiercraft-forge[bot] in #603
  • Release: project-agnostic milestone + launch campaign by @rapiercraft-forge[bot] in #604

Full Changelog: v1.0.13...v1.0.14

v1.0.13

13 Jun 13:06

Choose a tag to compare

What's Changed

  • Fix: copy fallback so npx forgedock works on Windows without symlink permission (#587) by @RapierCraft in #591
  • Deploy: staging → main — Windows installer copy fallback (#587) by @RapierCraft in #592

Full Changelog: v1.0.12...v1.0.13

v1.0.12

13 Jun 12:28

Choose a tag to compare

What's Changed

Full Changelog: v1.0.11...v1.0.12

v1.0.11

13 Jun 11:53

Choose a tag to compare

What's Changed

  • fix(work-on): raise context budget threshold from 6 to 10 files by @rapiercraft-forge[bot] in #527
  • fix(init): log which section fails parseEnrichedDraft sanity check under FORGEDOCK_DEBUG by @rapiercraft-forge[bot] in #528
  • Fix: truncateVisible drops trailing RESET at exact visible-length boundary (#519) by @rapiercraft-forge[bot] in #529
  • Fix: merge install + init into single npx forgedock command by @rapiercraft-forge[bot] in #530
  • fix(installer): escape double quotes in README description for valid forge.yaml by @rapiercraft-forge[bot] in #533
  • fix(forgedock-init): stop asking questions that auto-detection already answered by @rapiercraft-forge[bot] in #534
  • fix(installer): skip code fences, horizontal rules, and tables in README description extractor by @rapiercraft-forge[bot] in #536
  • fix(forgedock-init): auto-detect owner/repo from git remote on placeholder values by @rapiercraft-forge[bot] in #535
  • fix(forgedock-init): replace non-greedy sed quantifiers with two-step strip by @rapiercraft-forge[bot] in #539
  • fix(init): add CLAUDE.md fallback for project.description auto-detection by @rapiercraft-forge[bot] in #540
  • fix(forgedock-init): scope sed owner replacement to project: section by @rapiercraft-forge[bot] in #556
  • Feat: add distribution submissions tracker and content playbook by @rapiercraft-forge[bot] in #557
  • fix(forgedock-init): replace per-section Y/N prompt with --preserve flag by @rapiercraft-forge[bot] in #558
  • feat(marketing): add GitHub social preview image 1280x640 by @rapiercraft-forge[bot] in #559
  • feat(marketing): add VHS tape script and README demo GIF slot by @rapiercraft-forge[bot] in #561
  • feat(docs): YouTube demo video production guide by @rapiercraft-forge[bot] in #565
  • Feat: 'Built with ForgeDock' badge, star history chart, and pr_footer config by @rapiercraft-forge[bot] in #562
  • Feat: add GitHub issue templates, SECURITY.md, enable Discussions by @rapiercraft-forge[bot] in #560
  • Feat: dev.to article draft — How I Built an AI Agent That Never Forgets by @rapiercraft-forge[bot] in #563
  • feat(distribution): add Claude Code Plugin Marketplace manifest by @rapiercraft-forge[bot] in #564
  • Docs: FORGE Annotation Protocol — open standard specification by @rapiercraft-forge[bot] in #566
  • Feat(docs): SEO content — 5 high-intent landing pages by @rapiercraft-forge[bot] in #568
  • Fix: remove duplicate /quality-gate entry in bug-report.yml dropdown by @rapiercraft-forge[bot] in #569
  • Feat: Add Anthropic DevRel outreach playbook by @rapiercraft-forge[bot] in #570
  • Feat: restructure README for star conversion by @rapiercraft-forge[bot] in #571
  • feat(marketing): draft Hacker News Show HN launch post by @rapiercraft-forge[bot] in #572
  • feat(marketing): Twitter/X launch thread + ongoing content strategy by @rapiercraft-forge[bot] in #574
  • feat(marketing): Reddit multi-subreddit launch campaign post drafts by @rapiercraft-forge[bot] in #575
  • milestone/project-agnostic → staging by @rapiercraft-forge[bot] in #573
  • Fix: unescaped backslashes in description produce invalid YAML by @rapiercraft-forge[bot] in #580
  • fix(installer): narrow catch to ENOENT in install() and uninstall() by @rapiercraft-forge[bot] in #582
  • Fix: init() prompts before overwriting existing forge.yaml by @rapiercraft-forge[bot] in #583
  • fix(installer): escape backslashes in path fields before YAML embedding (#581) by @RapierCraft in #584
  • Deploy: staging → main (v1.0.9) by @rapiercraft-forge[bot] in #579

Full Changelog: v1.0.10...v1.0.11

v1.0.10

13 Jun 04:32

Choose a tag to compare

What's Changed

  • docs(init-detect): fix stale catch comment in detectDefaultBranch by @RapierCraft in #499
  • docs(registry): document downgrade behaviour for realpath-keyed registry entries by @RapierCraft in #500
  • fix(init): extend parseEnrichedDraft guard to validate meta section by @RapierCraft in #501
  • fix(tui): suppress ANSI tokens from cut region in truncateVisible by @RapierCraft in #502
  • chore(tui): remove duplicate local stripAnsi closures in box() and table() by @RapierCraft in #509
  • fix(init): replace falsy guards with typeof checks in parseEnrichedDraft by @RapierCraft in #508
  • Fix: strengthen phase boundary routing — prevent end_turn stalls and context overflow by @RapierCraft in #512
  • test(init): add meta:{} truthy empty object acceptance test by @RapierCraft in #513
  • Test: add boundary tests for truncateVisible(0) and ANSI-only input by @RapierCraft in #514
  • fix(init): correct parseEnrichedDraft guard comment — arrays also pass typeof check by @RapierCraft in #516
  • test(tui): remove tautological ESC-absence assertion in truncateVisible boundary test by @RapierCraft in #517
  • fix(init): add Array.isArray() guard to parseEnrichedDraft section checks by @RapierCraft in #518
  • Deploy: post-1.0.9 polish — tui ANSI hardening, meta guard, docs (staging → main) by @RapierCraft in #507

Full Changelog: v1.0.9...v1.0.10

v1.0.9

11 Jun 11:44

Choose a tag to compare

What's Changed

  • Refactor: extract init-detect into pure module emitting ConfigDraft + per-field confidence by @RapierCraft in #358
  • Feat(forgedock-init): upgrade to init-enrich skill backend consuming ConfigDraft by @RapierCraft in #359
  • Feat: per-directory state registry module (resolveState / setOptOut) by @RapierCraft in #360
  • Feat: annotated review-render screen (source/confidence/why, accept/edit, TODO flags) by @RapierCraft in #361
  • Feat: enable/disable/status CLI commands + .forgedock marker handling by @RapierCraft in #362
  • Feat(init): wire autopilot init end-to-end with backend-selection ladder by @RapierCraft in #363
  • Feat: SessionStart hook - context injection, opt-out, and nudge by @RapierCraft in #368
  • feat(validate): self-healing validate with plain-language remediation by @RapierCraft in #369
  • Feat: --manual/--verbose escape hatch for the full guided wizard by @RapierCraft in #370
  • Feat: BYO-key Anthropic API enrichment backend behind init-enrich interface by @RapierCraft in #372
  • Fix: showSources option silently dropped by annotatedReviewScreen by @RapierCraft in #374
  • Fix: _parseEnrichedDraft brace-matching for repos with curly braces in field values by @RapierCraft in #375
  • Fix: pipe _enrichViaSkill prompt via stdin to avoid ARG_MAX by @RapierCraft in #376
  • fix(init): remove false-positive secondary signal from _detectBackend by @RapierCraft in #377
  • fix(init): align enrichmentSucceeded with compound meta?.enriched check by @RapierCraft in #378
  • Refactor: remove _parseEnrichedDraft duplicate, import from init-enrich-api.mjs by @RapierCraft in #379
  • fix(updater): add shell: true to execFileSync in queryNpmRegistry for Windows .cmd shim resolution by @RapierCraft in #391
  • fix(init): replace greedy regex with string-aware brace scanner in parseEnrichedDraft by @RapierCraft in #392
  • Fix: session-start.mjs registry import inside try/catch (fail-open contract) by @RapierCraft in #393
  • Fix: execFileSync("claude") ENOENT on Windows — skill enrichment silently dead by @RapierCraft in #394
  • fix(onboarding): sanitize project_board IDs through _sanitizeYamlValue() by @RapierCraft in #395
  • fix(prereq): use execFileSync for org label query to fix Windows quoting by @RapierCraft in #397
  • fix(hooks): normalize SessionStart hook path to forward slashes on Windows by @RapierCraft in #398
  • fix(installer): show platform-correct removal command on command conflict by @RapierCraft in #399
  • fix(installer): add Windows FORGE_HOME persistence via setx by @RapierCraft in #400
  • chore(polish): fix 4 LOW-severity polish findings from PR #380 review by @RapierCraft in #402
  • fix(forgedock): sanitize optionIds key names as YAML keys in _buildOptionIdsBlock() by @RapierCraft in #403
  • fix(installer): escape single quotes in FORGE_HOME for PowerShell guidance string by @RapierCraft in #406
  • fix(forgedock): add tab stripping to _sanitizeYamlKey() regex by @RapierCraft in #407
  • fix(onboarding): normalize spaces in _sanitizeYamlKey() for idiomatic YAML keys by @RapierCraft in #408
  • Ship: Intelligent, Idiot-Proof Onboarding by @RapierCraft in #409
  • fix(installer): tolerate JSONC in readClaudeSettings() via stripJsonc() by @RapierCraft in #420
  • fix(init): log debug warning when enrichment response truncated by max_tokens by @RapierCraft in #421
  • fix(registry): normalize drive-letter casing for registry key lookups on Windows by @RapierCraft in #422
  • fix(hooks): sanitize forge.yaml values before session context injection by @RapierCraft in #423
  • fix(installer): remove FORGE_HOME from Windows user env on uninstall by @RapierCraft in #425
  • fix(updater): replace unconditional shell:true with platform-conditional flag in queryNpmRegistry by @RapierCraft in #428
  • fix(installer): detect setx 1024-char truncation before success message by @RapierCraft in #429
  • fix(init): normalize CR/CRLF in review.context before block scalar emit by @RapierCraft in #430
  • fix(installer): use REG delete to remove FORGE_HOME on Windows uninstall by @RapierCraft in #431
  • fix(hooks): sanitize project.owner and project.repo before session context injection by @RapierCraft in #432
  • fix(installer): detect Windows unconditionally for FORGE_HOME cleanup by @RapierCraft in #433
  • docs(config): add nudgeSeen to registry schema docs by @RapierCraft in #454
  • fix(hooks): use /\r?\n/ split in parseForgeYaml to handle CRLF forge.yaml by @RapierCraft in #455
  • docs(init): correct --manual flag description from wizard to annotated review screen by @RapierCraft in #456
  • fix(init): rewrite API-mode SYSTEM_PROMPT to remove false codebase/gh-CLI capability claims by @RapierCraft in #457
  • Fix: derive lowConfidenceKeys live at every return site in annotatedReviewScreen by @RapierCraft in #459
  • fix(scripts): guard empty ROUTE_SEGMENT to prevent false-positive warnings by @RapierCraft in #458
  • fix(hooks): strip single backticks in sanitizeContextValue by @RapierCraft in #461
  • Fix: registry read-modify-write race loses concurrent updates (#438) by @RapierCraft in #460
  • Refactor: hoist OPTIONAL_SECTION_CHOICES and section name map to module scope by @RapierCraft in #463
  • Fix: ANSI-aware column padding/truncation in annotated review screen by @RapierCraft in #464
  • fix(registry): dereference symlinks in normalizeDir for consistent registry keys by @RapierCraft in #467
  • fix(hooks): sanitize process.cwd() before context output interpolation by @RapierCraft in #465
  • Fix: strip C0/C1 control chars from review.context block scalar by @RapierCraft in #470
  • Fix: writeClaudeSettings() tmp cleanup on renameSync failure by @RapierCraft in #472
  • test(bin): add node:test unit tests for 5 onboarding modules by @RapierCraft in #473
  • fix(init): add section tracking to _injectTodoComments() to prevent false TODO on project_board.owner by @RapierCraft in #476
  • refactor(installer): extract SESSION_START_HOOK_TIMEOUT_SECONDS constant by @RapierCraft in #477
  • refactor(onboarding): migrate gh auth login to execFileSync arg array by @RapierCraft in #478
  • fix(installer): escape double quotes in sessionStartHookCommand hook path by @RapierCraft in #479
  • Refactor: extract _initNonTTY and _collectOptionalSections from init() (#453) by @RapierCraft in #480
  • fix(init): route enrich() apiKey-absent warning to stderr by @RapierCraft in #481
  • docs(registry): replace misleading Pure JSDoc claim in writeRegistry by @RapierCraft in #483
  • fix(sanitize): add C0/C1 control char stripping to _sanitizeYamlValue() by @RapierCraft in #485
  • fix(tests): add GIT_CONFIG_GLOBAL guard to makeLocalRepo initial commit by @RapierCraft in https://githu...
Read more

v1.0.8

09 Jun 08:35

Choose a tag to compare

What's Changed

  • docs(config): document review.layout.worker_main in forge.yaml.example by @RapierCraft in #328
  • fix: gate SOPS env-var checks on deploy.secrets_backend in work-on-monolithic (#322) by @RapierCraft in #330
  • Fix: $PROJECT_ROOT undefined in deploy-info.md yq layout reads by @RapierCraft in #329
  • Fix: review-pr-staging.md — move Config Resolution before first var use by @RapierCraft in #331
  • Fix: autopilot.md add explicit yq binding for BILLING_ENABLED by @RapierCraft in #332
  • fix(scripts): preserve WARNINGS counter in verify-sops-chain.sh — use process substitution by @RapierCraft in #333
  • fix(review-pr): replace for-loop subshell with while-read to prevent word-splitting by @RapierCraft in #334
  • fix(scripts): use grep -F and shell expansion to prevent pattern injection in verify-route-registration.sh by @RapierCraft in #335
  • fix: docsInit() TOCTOU — re-validate target path after mkdir by @RapierCraft in #336
  • fix(deploy-info): resolve unsubstituted {deploy.secrets_backend} placeholder — restore SOPS advisory cross-check by @RapierCraft in #337
  • fix(commands): replace awk indentation-anchored reads with yq for verification.commands.* by @RapierCraft in #338
  • Deploy: 11 PR #315 staging-review fixes → main by @RapierCraft in #339

Full Changelog: v1.0.7...v1.0.8