BMAD-METHOD/tools/installer/modules
Brian Madison bec2c04a6d feat(installer): cross-platform global config + lean per-project overrides
Phase 1 of the config refactor. Splits configuration into three clearly-owned
layers and removes per-install duplication:

- Global tier (~/.bmad/, $BMAD_HOME override): one-time identity + machine-wide
  defaults. config.user.toml holds scope:user core answers (user_name, language)
  so they're asked once per machine, not once per project.
- Per-module shipped-defaults floor (_bmad/{module}/module.toml): regenerated
  every install; the resolver's lowest-priority layer.
- Project overrides (_bmad/config.toml): lean — only emits deltas from module
  defaults. No more [agents.X] sections (agents live in module.toml floor).

Resolver chain (src/scripts/resolve_config.py) is now 7 tiers and supports
global-only operation (no _bmad/config.toml required). Customization cascade
(resolve_customization.py) splits cleanly from config: customize.toml files at
global, project, and custom tiers; never reads config.toml.

Installer (tools/installer/):
- New global-config.js: cross-platform resolver + dependency-free TOML reader.
- official-modules.js: silently reuses scope:user globals; logs a friendly note
  showing what was reused/seeded and where to edit it.
- manifest-generator.js: writes per-module module.toml with placeholder
  resolution for cross-key references (e.g. {output_folder}); routes core
  scope:user answers to ~/.bmad/config.user.toml.
- Removed --ask flag.

Tests: 11 new Python resolver tests, 8 new customization-cascade tests,
suites 35/37/38/45/46 in test-installation-components.js updated/added for the
new contract (with BMAD_HOME isolation to avoid touching real ~/.bmad).
2026-05-25 23:05:18 -05:00
..
channel-plan.js v6.7.0: bundle module registry, retire marketplace, refresh display names (#2388) 2026-05-17 17:47:25 -05:00
channel-resolver.js feat(installer): channel-based version resolution + interactive channel management (#2305) 2026-04-24 08:20:30 -05:00
custom-module-manager.js fix: support nested group paths in SSH Git URLs (#2379) 2026-05-25 14:15:04 -05:00
external-manager.js v6.7.0: bundle module registry, retire marketplace, refresh display names (#2388) 2026-05-17 17:47:25 -05:00
module-help-schema.js refactor(catalog): rename after/before to preceded-by/followed-by (#2360) 2026-05-01 12:28:50 -07:00
official-modules.js feat(installer): cross-platform global config + lean per-project overrides 2026-05-25 23:05:18 -05:00
plugin-resolver.js refactor(catalog): rename after/before to preceded-by/followed-by (#2360) 2026-05-01 12:28:50 -07:00
version-resolver.js fix: bmad tea instal version (#2298) 2026-04-22 11:03:20 -05:00