BMAD-METHOD/docs
Brian Madison 7ad054f0e9 fix(installer): address fourth-round PR #2353 review comments
(1) Use process.exitCode instead of process.exit() after --list-options
write (CodeRabbit major). process.exit() forces immediate termination
even with pending I/O, which can truncate buffered writes when stdout
is piped or captured by CI. Await the write callback, set exitCode,
and return so the event loop drains naturally.

(2) Thread setOverrides through Config → OfficialModules.build for
headless callers (CodeRabbit major). Non-UI entry points (direct
installer.install({...}) without going through ui.collectModuleConfigs)
previously got an empty override map. Config now carries setOverrides
and the headless branch of OfficialModules.build also runs
loadExistingConfig + applyOverridesAfterSeeding('core') to mirror the
UI path's semantics. The UI path is unaffected because it takes the
moduleConfigs early-return.

(3) Evaluate function defaults under skipPrompts and accept-defaults
paths (CodeRabbit major). Both branches were dropping function defaults
silently, so any same-module dynamic default (`{other_key}` placeholder
in default:) disappeared under --yes. Two-pass: write non-function
defaults first so the answer bag is populated, then call function
defaults with that bag. Try/catch around the call surfaces resolution
failures as warnings instead of crashing the install.

(4) Track result-only schema keys as declared (Augment medium). A
schema entry with `result:` and no `prompt:` was being classified as
"unknown" when targeted by --set, producing a wrong warning and
overwriting the computed template output with the raw value. Added
declaredResultKeys parallel to declaredPromptKeys; an override on
either is now seeded as the answer so the result template still
renders ({value} substitution preserved). Carry-forward block
refactored to consume the same set.

(5) Diagnose non-object module.yaml under --list-options (Augment low).
The non-object branch silently flipped moduleScopedFailure with no
output. Now emits "module.yaml is not a valid object (got <type>)"
mirroring the catch branch, and the type guard also catches arrays
which typeof reports as 'object'.

(6) Reword --list-options doc cache scope (CodeRabbit minor).
"Installed at least once on this machine" → "currently cached official
modules" with a note that cache can be cleared or absent on ephemeral
CI workers — accurately reflects what the command can discover.

Tests: +4 cases — Config.build setOverrides threading and default,
formatOptionsList non-object yaml diagnostic and ok:false. Total 347
passing.
2026-04-28 18:59:17 -05:00
..
cs feat(installer): expand to 42 platforms with shared target_dir coordination (#2313) 2026-04-25 21:14:00 -05:00
explanation feat(core-skills): add bmad-customize — guided authoring for _bmad/custom overrides (#2289) 2026-04-20 22:14:54 -05:00
fr docs(fr): sync translations with upstream and fix sidebar ordering (#2231) 2026-04-09 20:58:43 -07:00
how-to fix(installer): address fourth-round PR #2353 review comments 2026-04-28 18:59:17 -05:00
reference fix(docs): update stale Analyst triggers and add PRFAQ link (#2238) 2026-04-09 22:18:08 -07:00
tutorials chore: remove SM agent (Bob) and migrate to Developer agent (#2186) 2026-04-02 12:25:24 -07:00
vi-vn Fix installer custom modules http (#2344) 2026-04-27 19:58:38 -05:00
zh-cn Fix installer custom modules http (#2344) 2026-04-27 19:58:38 -05:00
404.md fix(docs): comprehensive documentation site review fixes (#1578) 2026-02-08 11:58:22 -06:00
_STYLE_GUIDE.md chore: remove SM agent (Bob) and migrate to Developer agent (#2186) 2026-04-02 12:25:24 -07:00
index.md feat(skills): TOML-based agent and workflow customization (#2284) 2026-04-19 19:30:29 -05:00
roadmap.mdx feat(docs): add public roadmap and improve site navigation 2026-02-22 19:41:57 -06:00