generatesaas 2.3.0 → 2.4.0

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.
@@ -154,7 +154,7 @@ it stays complete). Read `newOptions` from `.generatesaas/staging.json`. **If it
154
154
  empty, skip this step entirely.**
155
155
 
156
156
  Otherwise, present each option so the user can decide whether to adopt it. Each entry has
157
- `{ key, label, hint, default, impact, requiresLabel? }`. For each one:
157
+ `{ key, label, hint, default, impact, choices?, requiresLabel? }`. For each one:
158
158
 
159
159
  ```
160
160
  ### New since your version: {label}
@@ -172,14 +172,32 @@ it is a large surface you didn't originally choose" or "Safe to adopt - it is pu
172
172
  > 2. **Adopt it** - turn this feature on
173
173
  ```
174
174
 
175
+ **An entry with `choices` is not a yes/no.** It takes one of several values, so the two-way block
176
+ above cannot express it - offer the values as a numbered pick list instead, one line per choice,
177
+ with the entry's `default` marked as the current behavior:
178
+
179
+ ```
180
+ **Default:** `{default}` (your project's current behavior is unchanged).
181
+ **My recommendation:** {your recommendation, naming one of the choices}
182
+
183
+ > **Which would you like?**
184
+ > 1. **`{choices[0]}`** {"(current)" on the one equal to default}
185
+ > 2. **`{choices[1]}`**
186
+ > 3. **`{choices[2]}`** ...one line per choice, however many there are
187
+ ```
188
+
175
189
  **Ask the user about every new option, in every mode - including Automatic.** Surfacing a new
176
190
  feature is exactly the kind of decision the update must never assume. Give your recommendation,
177
191
  but the user decides.
178
192
 
179
193
  **Applying the decisions:**
180
194
 
181
- 1. For each option the user **adopts**, write its enabling value into `.generatesaas/manifest.json`
182
- (e.g. set `"desktop": true`). The manifest is the single shaping input.
195
+ 1. For each option the user **adopts**, write the value they picked into
196
+ `.generatesaas/manifest.json` under the entry's `key`. For an option with no `choices` that value
197
+ is `true` (e.g. set `"desktop": true`); for one with `choices` it is the choice they named,
198
+ verbatim (e.g. set `"errorTracking": "sentry"`). Never write `true` for an option that has
199
+ `choices` - the CLI refuses any value outside them and stages nothing at all. The manifest is the
200
+ single shaping input.
183
201
  2. **If the user adopted at least one option, re-stage once** so re-shaping produces the
184
202
  feature's files. Re-run the CLI (append `auto` if you are in Automatic mode, so the staged
185
203
  metadata keeps the unattended signal):
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "generatesaas",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "type": "module",
5
5
  "description": "CLI for scaffolding and managing GenerateSaaS projects",
6
6
  "license": "UNLICENSED",