- installer.js: use findModuleSource() instead of getModulePath() so
external official modules are recognized as a base when computing
hasBaseModule (getModulePath only resolves repo-local src/ paths)
- installer.js: wrap base-module install block in try/finally so the
custom module path is always restored even if an exception is thrown
- installer.js: pass moduleConfig:{} to fallback moduleManager.install()
so createModuleDirectories receives the expected config
- test: fix assert() to throw on failure so broken preconditions halt
the scenario immediately instead of cascading
- test: Scenarios A/B now call manager.install() instead of hand-rolling
fs.remove/fs.copy, exercising the real filtering and manifest logic
- test: Scenario C tests actual removal behavior (sentinel file) instead
of grepping manager.js source for the guard string
- test: Scenario D adds manifest verification (exactly one bmm entry)
- test: add Scenario E — user-modified sentinel file is preserved when
extension overlay is applied with isExtension:true
- ci: add validate-extensions-macos job so extension tests run on macOS
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| cli | ||
| docs | ||
| lib | ||
| bmad-npx-wrapper.js | ||
| build-docs.mjs | ||
| fix-doc-links.js | ||
| format-workflow-md.js | ||
| migrate-custom-module-paths.js | ||
| platform-codes.yaml | ||
| skill-validator.md | ||
| validate-doc-links.js | ||
| validate-file-refs.js | ||
| validate-skills.js | ||
| validate-svg-changes.sh | ||