bmad-method 6.5.1-next.0 → 6.5.1-next.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/package.json +1 -1
- package/tools/installer/ui.js +26 -3
package/package.json
CHANGED
package/tools/installer/ui.js
CHANGED
|
@@ -2,6 +2,7 @@ const path = require('node:path');
|
|
|
2
2
|
const os = require('node:os');
|
|
3
3
|
const semver = require('semver');
|
|
4
4
|
const fs = require('./fs-native');
|
|
5
|
+
const installerPackageJson = require('../../package.json');
|
|
5
6
|
const { CLIUtils } = require('./cli-utils');
|
|
6
7
|
const { ExternalModuleManager } = require('./modules/external-manager');
|
|
7
8
|
const { resolveModuleVersion } = require('./modules/version-resolver');
|
|
@@ -128,6 +129,24 @@ class UI {
|
|
|
128
129
|
await prompts.log.warn(warning);
|
|
129
130
|
}
|
|
130
131
|
|
|
132
|
+
// When the user launched the installer from a prerelease (npx bmad-method@next),
|
|
133
|
+
// mirror that intent for external modules: seed the global channel to 'next' so
|
|
134
|
+
// the module picker's version labels resolve from main HEAD (matching what
|
|
135
|
+
// actually gets installed) and the interactive channel gate skips — the user
|
|
136
|
+
// already declared "next" intent by typing @next. Explicit channel flags
|
|
137
|
+
// override this seed.
|
|
138
|
+
if (
|
|
139
|
+
semver.prerelease(installerPackageJson.version) !== null &&
|
|
140
|
+
!channelOptions.global &&
|
|
141
|
+
channelOptions.nextSet.size === 0 &&
|
|
142
|
+
channelOptions.pins.size === 0
|
|
143
|
+
) {
|
|
144
|
+
channelOptions.global = 'next';
|
|
145
|
+
await prompts.log.info(
|
|
146
|
+
'Launched from a prerelease — installing all external modules from main HEAD (next channel). Pass --all-stable or --pin to override.',
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
|
|
131
150
|
// Get directory from options or prompt
|
|
132
151
|
let confirmedDirectory;
|
|
133
152
|
if (options.directory) {
|
|
@@ -332,8 +351,10 @@ class UI {
|
|
|
332
351
|
|
|
333
352
|
// Interactive channel gate: "Ready to install (all stable)? [Y/n]"
|
|
334
353
|
// Only shown for fresh installs with no channel flags and an external module
|
|
335
|
-
// selected.
|
|
336
|
-
//
|
|
354
|
+
// selected. Skipped for prerelease launches because channelOptions.global
|
|
355
|
+
// was already seeded to 'next' upstream. Non-interactive installs skip this
|
|
356
|
+
// and fall through to the registry default (stable) or whatever flags were
|
|
357
|
+
// supplied.
|
|
337
358
|
await this._interactiveChannelGate({ options, channelOptions, selectedModules });
|
|
338
359
|
|
|
339
360
|
let toolSelection = await this.promptToolSelection(confirmedDirectory, options);
|
|
@@ -1783,7 +1804,9 @@ class UI {
|
|
|
1783
1804
|
*
|
|
1784
1805
|
* Skipped when:
|
|
1785
1806
|
* - running non-interactively (--yes)
|
|
1786
|
-
* - the user already passed channel flags (--channel / --pin / --next)
|
|
1807
|
+
* - the user already passed channel flags (--channel / --pin / --next), OR
|
|
1808
|
+
* the installer was launched from a prerelease (which seeds
|
|
1809
|
+
* channelOptions.global = 'next' upstream in promptInstall)
|
|
1787
1810
|
* - no externals/community modules are selected
|
|
1788
1811
|
*
|
|
1789
1812
|
* Mutates channelOptions.pins and channelOptions.nextSet to reflect picker choices.
|