bmad-method 4.36.2 → 4.37.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/release.yaml +1 -0
- package/.releaserc.json +9 -8
- package/CHANGELOG.md +15 -2
- package/docs/GUIDING-PRINCIPLES.md +1 -1
- package/package.json +1 -1
- package/tools/installer/bin/bmad.js +58 -0
- package/tools/installer/config/install.config.yaml +1 -1
- package/tools/installer/lib/ide-setup.js +1 -1
- package/tools/installer/package.json +1 -1
- package/tools/upgraders/v3-to-v4-upgrader.js +1 -1
- package/bmad-core/bmad-core/user-guide.md +0 -0
package/.releaserc.json
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"branches": [
|
|
2
|
+
"branches": [
|
|
3
|
+
{
|
|
4
|
+
"name": "main",
|
|
5
|
+
"prerelease": "beta"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"name": "stable"
|
|
9
|
+
}
|
|
10
|
+
],
|
|
3
11
|
"plugins": [
|
|
4
12
|
"@semantic-release/commit-analyzer",
|
|
5
13
|
"@semantic-release/release-notes-generator",
|
|
6
14
|
"@semantic-release/changelog",
|
|
7
15
|
"@semantic-release/npm",
|
|
8
16
|
"./tools/semantic-release-sync-installer.js",
|
|
9
|
-
[
|
|
10
|
-
"@semantic-release/git",
|
|
11
|
-
{
|
|
12
|
-
"assets": ["package.json", "package-lock.json", "tools/installer/package.json", "CHANGELOG.md"],
|
|
13
|
-
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
|
14
|
-
}
|
|
15
|
-
],
|
|
16
17
|
"@semantic-release/github"
|
|
17
18
|
]
|
|
18
19
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
# [4.37.0-beta.1](https://github.com/bmadcode/BMAD-METHOD/compare/v4.36.2...v4.37.0-beta.1) (2025-08-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **docs:** fix broken link in GUIDING-PRINCIPLES.md ([#428](https://github.com/bmadcode/BMAD-METHOD/issues/428)) ([3efcfd5](https://github.com/bmadcode/BMAD-METHOD/commit/3efcfd54d47f4c3cdc6527a438f86fc615a8700c))
|
|
7
|
+
* remove git plugin to resolve branch protection conflicts ([8e324f6](https://github.com/bmadcode/BMAD-METHOD/commit/8e324f60b0dad2f385ff62bd63615afc73c575f8))
|
|
2
8
|
|
|
3
9
|
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* implement dual NPM publishing strategy ([d92ba83](https://github.com/bmadcode/BMAD-METHOD/commit/d92ba835fa6e720059b943e352a03435f2a704c9))
|
|
13
|
+
* install Cursor rules to subdirectory ([#438](https://github.com/bmadcode/BMAD-METHOD/issues/438)) ([d563266](https://github.com/bmadcode/BMAD-METHOD/commit/d563266b9738b5d3c5ec1e31ab683aad517e2604)), closes [#376](https://github.com/bmadcode/BMAD-METHOD/issues/376) [#376](https://github.com/bmadcode/BMAD-METHOD/issues/376)
|
|
14
|
+
|
|
15
|
+
## [4.36.2](https://github.com/bmadcode/BMAD-METHOD/compare/v4.36.1...v4.36.2) (2025-08-10)
|
|
16
|
+
|
|
4
17
|
### Bug Fixes
|
|
5
18
|
|
|
6
|
-
|
|
19
|
+
- align installer dependencies with root package versions for ESM compatibility ([#420](https://github.com/bmadcode/BMAD-METHOD/issues/420)) ([3f6b674](https://github.com/bmadcode/BMAD-METHOD/commit/3f6b67443d61ae6add98656374bed27da4704644))
|
|
7
20
|
|
|
8
21
|
## [4.36.1](https://github.com/bmadcode/BMAD-METHOD/compare/v4.36.0...v4.36.1) (2025-08-09)
|
|
9
22
|
|
|
@@ -65,7 +65,7 @@ See [Expansion Packs Guide](../docs/expansion-packs.md) for detailed examples an
|
|
|
65
65
|
|
|
66
66
|
### Template Rules
|
|
67
67
|
|
|
68
|
-
Templates follow the [BMad Document Template](common/utils/bmad-doc-template.md) specification using YAML format:
|
|
68
|
+
Templates follow the [BMad Document Template](../common/utils/bmad-doc-template.md) specification using YAML format:
|
|
69
69
|
|
|
70
70
|
1. **Structure**: Templates are defined in YAML with clear metadata, workflow configuration, and section hierarchy
|
|
71
71
|
2. **Separation of Concerns**: Instructions for LLMs are in `instruction` fields, separate from content
|
package/package.json
CHANGED
|
@@ -6,13 +6,17 @@ const fs = require('fs').promises;
|
|
|
6
6
|
const yaml = require('js-yaml');
|
|
7
7
|
const chalk = require('chalk');
|
|
8
8
|
const inquirer = require('inquirer');
|
|
9
|
+
const semver = require('semver');
|
|
10
|
+
const https = require('https');
|
|
9
11
|
|
|
10
12
|
// Handle both execution contexts (from root via npx or from installer directory)
|
|
11
13
|
let version;
|
|
12
14
|
let installer;
|
|
15
|
+
let packageName;
|
|
13
16
|
try {
|
|
14
17
|
// Try installer context first (when run from tools/installer/)
|
|
15
18
|
version = require('../package.json').version;
|
|
19
|
+
packageName = require('../package.json').name;
|
|
16
20
|
installer = require('../lib/installer');
|
|
17
21
|
} catch (e) {
|
|
18
22
|
// Fall back to root context (when run via npx from GitHub)
|
|
@@ -86,6 +90,60 @@ program
|
|
|
86
90
|
}
|
|
87
91
|
});
|
|
88
92
|
|
|
93
|
+
// Command to check if updates are available
|
|
94
|
+
program
|
|
95
|
+
.command('update-check')
|
|
96
|
+
.description('Check for BMad Update')
|
|
97
|
+
.action(async () => {
|
|
98
|
+
console.log('Checking for updates...');
|
|
99
|
+
|
|
100
|
+
// Make HTTP request to npm registry for latest version info
|
|
101
|
+
const req = https.get(`https://registry.npmjs.org/${packageName}/latest`, res => {
|
|
102
|
+
// Check for HTTP errors (non-200 status codes)
|
|
103
|
+
if (res.statusCode !== 200) {
|
|
104
|
+
console.error(chalk.red(`Update check failed: Received status code ${res.statusCode}`));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Accumulate response data chunks
|
|
109
|
+
let data = '';
|
|
110
|
+
res.on('data', chunk => data += chunk);
|
|
111
|
+
|
|
112
|
+
// Process complete response
|
|
113
|
+
res.on('end', () => {
|
|
114
|
+
try {
|
|
115
|
+
// Parse npm registry response and extract version
|
|
116
|
+
const latest = JSON.parse(data).version;
|
|
117
|
+
|
|
118
|
+
// Compare versions using semver
|
|
119
|
+
if (semver.gt(latest, version)) {
|
|
120
|
+
console.log(chalk.bold.blue(`⚠️ ${packageName} update available: ${version} → ${latest}`));
|
|
121
|
+
console.log(chalk.bold.blue('\nInstall latest by running:'));
|
|
122
|
+
console.log(chalk.bold.magenta(` npm install ${packageName}@latest`));
|
|
123
|
+
console.log(chalk.dim(' or'));
|
|
124
|
+
console.log(chalk.bold.magenta(` npx ${packageName}@latest`));
|
|
125
|
+
} else {
|
|
126
|
+
console.log(chalk.bold.blue(`✨ ${packageName} is up to date`));
|
|
127
|
+
}
|
|
128
|
+
} catch (error) {
|
|
129
|
+
// Handle JSON parsing errors
|
|
130
|
+
console.error(chalk.red('Failed to parse npm registry data:'), error.message);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
// Handle network/connection errors
|
|
136
|
+
req.on('error', error => {
|
|
137
|
+
console.error(chalk.red('Update check failed:'), error.message);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// Set 30 second timeout to prevent hanging
|
|
141
|
+
req.setTimeout(30000, () => {
|
|
142
|
+
req.destroy();
|
|
143
|
+
console.error(chalk.red('Update check timed out'));
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
|
|
89
147
|
program
|
|
90
148
|
.command('list:expansions')
|
|
91
149
|
.description('List available expansion packs')
|
|
@@ -68,7 +68,7 @@ class IdeSetup extends BaseIdeSetup {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
async setupCursor(installDir, selectedAgent) {
|
|
71
|
-
const cursorRulesDir = path.join(installDir, ".cursor", "rules");
|
|
71
|
+
const cursorRulesDir = path.join(installDir, ".cursor", "rules", "bmad");
|
|
72
72
|
const agents = selectedAgent ? [selectedAgent] : await this.getAllAgentIds(installDir);
|
|
73
73
|
|
|
74
74
|
await fileManager.ensureDirectory(cursorRulesDir);
|
|
@@ -557,7 +557,7 @@ class V3ToV4Upgrader {
|
|
|
557
557
|
|
|
558
558
|
try {
|
|
559
559
|
const ideMessages = {
|
|
560
|
-
cursor: "Rules created in .cursor/rules/",
|
|
560
|
+
cursor: "Rules created in .cursor/rules/bmad/",
|
|
561
561
|
"claude-code": "Commands created in .claude/commands/BMad/",
|
|
562
562
|
windsurf: "Rules created in .windsurf/rules/",
|
|
563
563
|
trae: "Rules created in.trae/rules/",
|
|
File without changes
|