Compare commits

...

5 Commits

Author SHA1 Message Date
Nikolas Hor d8b94f77c9
Merge 6848e3ae54 into 819d373e2e 2026-03-26 17:23:32 -04:00
github-actions[bot] 819d373e2e chore(release): v6.2.2 [skip ci] 2026-03-26 02:44:35 +00:00
Brian a5640c890d
chore: add v6.2.2 changelog and use CHANGELOG.md for GH release notes (#2127)
Update publish workflow to extract release notes from CHANGELOG.md
instead of using --generate-notes, with fallback if no entry found.
2026-03-25 21:43:25 -05:00
Brian 6dd0a97c1f
fix: update bmb module-definition path for skills/ restructure (#2126)
bmad-builder moved skills from src/skills/ to skills/ at repo root
for Claude Code plugin and Vercel Skills CLI compatibility.
2026-03-25 21:25:33 -05:00
Nikolas de Hor 6848e3ae54 fix: ensure --yes flag assigns defaults for fields without values
When skipPrompts is true, config fields without a default value
were silently skipped, leaving them undefined in the collected
config. This caused downstream code to prompt the user or fail
when encountering missing config values.

Now assigns empty string as fallback for fields without defaults
when --yes flag is active, ensuring fully non-interactive install.

Fixes #1803
2026-03-11 21:25:40 -03:00
6 changed files with 37 additions and 9 deletions

View File

@ -120,7 +120,18 @@ jobs:
if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
run: |
TAG="v$(node -p 'require("./package.json").version')"
gh release create "$TAG" --generate-notes
VERSION="${TAG#v}"
# Extract the current version's section from CHANGELOG.md
BODY=$(awk -v ver="$VERSION" '
/^## v/ { if (found) exit; if (index($0, "## v" ver)) found=1; next }
found { print }
' CHANGELOG.md)
if [ -z "$BODY" ]; then
echo "::warning::No CHANGELOG.md entry for $TAG — falling back to auto-generated notes"
gh release create "$TAG" --generate-notes
else
gh release create "$TAG" --notes "$BODY"
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -1,5 +1,21 @@
# Changelog
## v6.2.2 - 2026-03-25
### ♻️ Refactoring
* Modernize module-help CSV to 13-column format with `after`/`before` dependency graph replacing sequence numbers (#2120)
* Rewrite bmad-help from procedural 8-step execution to outcome-based skill design (~50% shorter) (#2120)
### 🐛 Bug Fixes
* Update bmad-builder module-definition path from `src/module.yaml` to `skills/module.yaml` for bmad-builder v1.2.0 compatibility (#2126)
* Fix eslint config to ignore gitignored lock files (#2120)
### 📚 Documentation
* Close Epic 4.5 explanation gaps in Chinese (zh-CN): normalize command naming to current `bmad-*` convention and add cross-links across 9 explanation pages (#2102)
## v6.2.1 - 2026-03-24
### 🎁 Highlights

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "bmad-method",
"version": "6.2.1",
"version": "6.2.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "bmad-method",
"version": "6.2.1",
"version": "6.2.2",
"license": "MIT",
"dependencies": {
"@clack/core": "^1.0.0",

View File

@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "bmad-method",
"version": "6.2.1",
"version": "6.2.2",
"description": "Breakthrough Method of Agile AI-driven Development",
"keywords": [
"agile",

View File

@ -4,7 +4,7 @@
modules:
bmad-builder:
url: https://github.com/bmad-code-org/bmad-builder
module-definition: src/module.yaml
module-definition: skills/module.yaml
code: bmb
name: "BMad Builder"
description: "Agent and Builder"

View File

@ -735,12 +735,13 @@ class ConfigCollector {
// Skip prompts mode: use all defaults without asking
if (this.skipPrompts) {
await prompts.log.info(`Using default configuration for ${moduleDisplayName}`);
// Use defaults for all questions
// Use defaults for all questions; use empty string for fields without defaults
for (const question of questions) {
const hasDefault = question.default !== undefined && question.default !== null && question.default !== '';
if (hasDefault && typeof question.default !== 'function') {
allAnswers[question.name] = question.default;
if (typeof question.default === 'function') {
continue;
}
const hasDefault = question.default !== undefined && question.default !== null && question.default !== '';
allAnswers[question.name] = hasDefault ? question.default : '';
}
} else {
if (!this._silentConfig) await prompts.log.step(`Configuring ${moduleDisplayName}`);