procedure-cli 0.1.2 → 0.1.4

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.
@@ -18,7 +18,9 @@
18
18
  "Bash(git add:*)",
19
19
  "Bash(git commit:*)",
20
20
  "Bash(git push:*)",
21
- "Bash(find:*)"
21
+ "Bash(find:*)",
22
+ "WebFetch(domain:github.com)",
23
+ "WebFetch(domain:raw.githubusercontent.com)"
22
24
  ]
23
25
  }
24
26
  }
package/CODE-FIXED.md CHANGED
@@ -122,3 +122,28 @@ None.
122
122
  - `npm run build`: pass
123
123
 
124
124
  ---
125
+
126
+ ## Entry 2026-02-22
127
+
128
+ ### Entry ID
129
+ - `CF-20260222-004`
130
+
131
+ ### Source Review
132
+ - `CR-20260222-002` (CODE-REVIEW.md entry 2026-02-22)
133
+
134
+ ### Fixes Applied
135
+
136
+ 1. Finding #10 (Low) — **Fixed**
137
+ - `src/lib/types.ts:68` — Added `setupGit: boolean` to `WizardAnswers` so setup choice can be persisted.
138
+ - `src/app.tsx:51` — Added `setupGit: false` to `EMPTY_ANSWERS`.
139
+ - `src/app.tsx:89` — Updated setup summary to render `Git init: yes/no` based on `answers.setupGit` instead of always implying git initialization.
140
+ - `src/steps/powerline.tsx:48` — Updated `onComplete` payload to include `setupGit: git`, preserving the user’s git setup decision for final summaries.
141
+
142
+ ### Deferred
143
+ None.
144
+
145
+ ### Verification Notes
146
+ - `npm run typecheck`: pass
147
+ - `npm run build`: pass
148
+
149
+ ---
package/CODE-REVIEW.md CHANGED
@@ -254,6 +254,73 @@
254
254
 
255
255
  ---
256
256
 
257
+ ## Entry 2026-02-22
258
+
259
+ ### Entry ID
260
+ - `CR-20260222-001`
261
+
262
+ ### Supersedes
263
+ - `CR-20260221-006`
264
+
265
+ ### Scope
266
+ - New review cycle on current `main` state.
267
+ - Validate latest fixed findings against code and scan for regressions.
268
+
269
+ ### Validation Matrix
270
+ | Finding # | Previous Severity | Current Status | Evidence | Notes |
271
+ |-----------|-------------------|----------------|----------|-------|
272
+ | 9 | Low | Fixed | `CODE-FIXED.md:112`, `src/steps/powerline.tsx:22`, `src/steps/powerline.tsx:127`, `src/steps/powerline.tsx:132` | Setup UI still correctly separates successful git init from warning states. |
273
+ | 6 | Low | Fixed | `CODE-FIXED.md:54`, `templates/docs/USER-STORIES.md.hbs:3`, `templates/docs/USER-STORIES.md.hbs:23` | USER-STORIES fallback remains intact for empty `userStories`. |
274
+
275
+ ### Findings (ordered by severity)
276
+ - No new functional findings identified in this review cycle.
277
+
278
+ ### Verification Notes
279
+ - Procedure compliance: reviewed latest `CODE-REVIEW.md` and `CODE-FIXED.md` before analysis.
280
+ - `npm run typecheck`: pass.
281
+ - `npm run build`: pass.
282
+ - Code inspection confirms latest fix-cycle behavior remains present in current source.
283
+
284
+ ### Residual Risks / Testing Gaps
285
+ - No automated UI test coverage for generation + setup end-to-end branching scenarios.
286
+
287
+ ---
288
+
289
+ ## Entry 2026-02-22
290
+
291
+ ### Entry ID
292
+ - `CR-20260222-002`
293
+
294
+ ### Supersedes
295
+ - `CR-20260222-001`
296
+
297
+ ### Scope
298
+ - Review current local code state after latest UI/setup flow changes.
299
+ - Validate previously fixed findings and check for new regressions.
300
+
301
+ ### Validation Matrix
302
+ | Finding # | Previous Severity | Current Status | Evidence | Notes |
303
+ |-----------|-------------------|----------------|----------|-------|
304
+ | 9 | Low | Fixed | `src/steps/powerline.tsx:127`, `src/steps/powerline.tsx:132` | Mixed success/warning messaging remains resolved. |
305
+ | 6 | Low | Fixed | `templates/docs/USER-STORIES.md.hbs:3`, `templates/docs/USER-STORIES.md.hbs:23` | USER-STORIES fallback remains in place. |
306
+
307
+ ### Findings (ordered by severity)
308
+ 1. Low - Setup step summary always implies git initialization even when user declines git setup (`Finding #10`, `Status: New`)
309
+ - `src/app.tsx:88`
310
+ - `src/app.tsx:89`
311
+ - Setup summary currently always includes `"Git init"` for step 7, regardless of user choice in `src/steps/powerline.tsx` (`onCancel` path for git).
312
+ - Recommendation: track git setup choice/result in `WizardAnswers` (e.g., `setupGit: boolean`) and render summary based on actual user selection/outcome.
313
+
314
+ ### Verification Notes
315
+ - Procedure compliance: reviewed latest `CODE-REVIEW.md` and `CODE-FIXED.md` before this cycle.
316
+ - `npm run typecheck`: pass.
317
+ - `npm run build`: pass.
318
+
319
+ ### Residual Risks / Testing Gaps
320
+ - No UI test coverage for setup summary correctness when user declines git initialization.
321
+
322
+ ---
323
+
257
324
  ## Entry 2026-02-21
258
325
 
259
326
  ### Entry ID
package/dist/app.js CHANGED
@@ -17,7 +17,7 @@ const STEP_NAMES = [
17
17
  "Architecture",
18
18
  "Product Context",
19
19
  "Generation",
20
- "Powerline",
20
+ "Setup",
21
21
  ];
22
22
  const EMPTY_ANSWERS = {
23
23
  projectName: "",
@@ -43,6 +43,7 @@ const EMPTY_ANSWERS = {
43
43
  envVars: [],
44
44
  generationSkipped: false,
45
45
  setupPowerline: false,
46
+ setupGit: false,
46
47
  };
47
48
  function getSummary(stepIndex, answers) {
48
49
  switch (stepIndex) {
@@ -83,7 +84,11 @@ function getSummary(stepIndex, answers) {
83
84
  case 5:
84
85
  return answers.generationSkipped ? "skipped" : "files generated";
85
86
  case 6: {
86
- return answers.setupPowerline ? "Powerline: yes" : "Powerline: no";
87
+ const parts = [];
88
+ if (answers.setupPowerline)
89
+ parts.push("Powerline");
90
+ parts.push(answers.setupGit ? "Git init: yes" : "Git init: no");
91
+ return parts.join(", ");
87
92
  }
88
93
  default:
89
94
  return "done";
@@ -97,6 +102,9 @@ export default function App() {
97
102
  if (key.escape) {
98
103
  process.exit(0);
99
104
  }
105
+ if (finished && key.return) {
106
+ process.exit(0);
107
+ }
100
108
  });
101
109
  function handleStepComplete(partial) {
102
110
  const merged = { ...answers, ...partial };
@@ -114,7 +122,7 @@ export default function App() {
114
122
  status: "completed",
115
123
  summary: getSummary(i, answers),
116
124
  }));
117
- return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Banner, {}), _jsx(Timeline, { steps: steps, children: _jsx(Box, {}) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { bold: true, color: "green", children: ["✔", " Procedure CLI setup complete!"] }), _jsx(Text, { children: " " }), answers.generationSkipped ? (_jsx(Text, { dimColor: true, children: "Generation was skipped \u2014 no files were written." })) : (_jsxs(_Fragment, { children: [_jsxs(Text, { children: ["Project ", _jsxs(Text, { bold: true, color: "cyan", children: ["\"", answers.projectName, "\""] }), " has been scaffolded."] }), _jsx(Text, { dimColor: true, children: "Check the generated CLAUDE.md, PRD.md, and USER-STORIES.md." })] }))] })] }));
125
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Banner, {}), _jsx(Timeline, { steps: steps, children: _jsx(Box, {}) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { bold: true, color: "green", children: ["✔", " Procedure CLI setup complete!"] }), _jsx(Text, { children: " " }), answers.generationSkipped ? (_jsx(Text, { dimColor: true, children: "Generation was skipped \u2014 no files were written." })) : (_jsxs(_Fragment, { children: [_jsxs(Text, { children: ["Project ", _jsxs(Text, { bold: true, color: "cyan", children: ["\"", answers.projectName, "\""] }), " has been scaffolded."] }), _jsx(Text, { dimColor: true, children: "Check the generated CLAUDE.md, PRD.md, and USER-STORIES.md." })] })), _jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Press Enter to exit." })] })] }));
118
126
  }
119
127
  const steps = STEP_NAMES.map((name, i) => {
120
128
  if (i < currentStep) {
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,22 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
2
3
  import { Text } from "ink";
4
+ const ACTIVE_FRAMES = ["◆", "◈", "◇", "◈"];
3
5
  export default function StepIndicator({ status, label }) {
6
+ const [frame, setFrame] = useState(0);
7
+ useEffect(() => {
8
+ if (status !== "active")
9
+ return;
10
+ const id = setInterval(() => {
11
+ setFrame((f) => (f + 1) % ACTIVE_FRAMES.length);
12
+ }, 350);
13
+ return () => clearInterval(id);
14
+ }, [status]);
4
15
  if (status === "completed") {
5
16
  return _jsxs(Text, { children: [_jsx(Text, { color: "green", children: "◇" }), " ", _jsx(Text, { color: "green", children: label })] });
6
17
  }
7
18
  if (status === "active") {
8
- return _jsxs(Text, { children: [_jsx(Text, { color: "green", bold: true, children: "◆" }), " ", _jsx(Text, { bold: true, color: "green", children: label })] });
19
+ return _jsxs(Text, { children: [_jsx(Text, { color: "cyan", bold: true, children: ACTIVE_FRAMES[frame] }), " ", _jsx(Text, { bold: true, color: "cyan", children: label })] });
9
20
  }
10
21
  return _jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "○" }), " ", _jsx(Text, { dimColor: true, children: label })] });
11
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"step-indicator.js","sourceRoot":"","sources":["../../src/components/step-indicator.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAS3B,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAS;IAC5D,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,OAAO,MAAC,IAAI,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,GAAG,GAAQ,EAAC,IAAI,EAAC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,KAAK,GAAQ,IAAO,CAAC;IAC/F,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,MAAC,IAAI,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,kBAAE,GAAG,GAAQ,EAAC,IAAI,EAAC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,YAAE,KAAK,GAAQ,IAAO,CAAC;IACzG,CAAC;IACD,OAAO,MAAC,IAAI,eAAC,KAAC,IAAI,IAAC,QAAQ,kBAAE,GAAG,GAAQ,EAAC,IAAI,EAAC,KAAC,IAAI,IAAC,QAAQ,kBAAE,KAAK,GAAQ,IAAO,CAAC;AACrF,CAAC"}
1
+ {"version":3,"file":"step-indicator.js","sourceRoot":"","sources":["../../src/components/step-indicator.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAS3B,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAEpD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAS;IAC5D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO;QAChC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;YAC1B,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,OAAO,MAAC,IAAI,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,GAAG,GAAQ,EAAC,IAAI,EAAC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,KAAK,GAAQ,IAAO,CAAC;IAC/F,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,MAAC,IAAI,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,kBAAE,aAAa,CAAC,KAAK,CAAC,GAAQ,EAAC,IAAI,EAAC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,KAAK,GAAQ,IAAO,CAAC;IACxH,CAAC;IACD,OAAO,MAAC,IAAI,eAAC,KAAC,IAAI,IAAC,QAAQ,kBAAE,GAAG,GAAQ,EAAC,IAAI,EAAC,KAAC,IAAI,IAAC,QAAQ,kBAAE,KAAK,GAAQ,IAAO,CAAC;AACrF,CAAC"}
@@ -6,18 +6,20 @@ export default function Timeline({ steps, children }) {
6
6
  const elements = [];
7
7
  steps.forEach((step, i) => {
8
8
  const isLast = i === steps.length - 1;
9
+ const isActive = step.status === "active";
9
10
  // Step indicator line
10
11
  elements.push(_jsx(StepIndicator, { status: step.status, label: step.name }, `ind-${i}`));
11
12
  // Completed step: show summary on SEPARATE line with gutter
12
13
  if (step.status === "completed" && step.summary) {
13
14
  elements.push(_jsxs(Text, { dimColor: true, children: ["│ ", step.summary] }, `sum-${i}`));
14
15
  }
15
- // Active step: render children (they handle their own GutterLine)
16
- if (step.status === "active") {
16
+ // Active step: render children then close with
17
+ if (isActive) {
17
18
  elements.push(_jsx(React.Fragment, { children: children }, `content-${i}`));
19
+ elements.push(_jsx(Text, { dimColor: true, children: "└" }, `close-${i}`));
18
20
  }
19
- // Gutter spacer between steps
20
- if (!isLast) {
21
+ // Gutter spacer between steps — skip after active (└ already closes it)
22
+ if (!isLast && !isActive) {
21
23
  elements.push(_jsx(Text, { dimColor: true, children: "│" }, `bar-${i}`));
22
24
  }
23
25
  });
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/components/timeline.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAchD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAS;IACzD,MAAM,QAAQ,GAAsB,EAAE,CAAC;IAEvC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAEtC,sBAAsB;QACtB,QAAQ,CAAC,IAAI,CACX,KAAC,aAAa,IAAkB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,IAAjD,OAAO,CAAC,EAAE,CAA2C,CAC1E,CAAC;QAEF,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CACX,MAAC,IAAI,IAAkB,QAAQ,mBAAE,KAAK,EAAE,IAAI,CAAC,OAAO,KAAzC,OAAO,CAAC,EAAE,CAAuC,CAC7D,CAAC;QACJ,CAAC;QAED,kEAAkE;QAClE,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CACX,KAAC,KAAK,CAAC,QAAQ,cAAuB,QAAQ,IAAzB,WAAW,CAAC,EAAE,CAA6B,CACjE,CAAC;QACJ,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,KAAC,IAAI,IAAkB,QAAQ,kBAAE,GAAG,IAAzB,OAAO,CAAC,EAAE,CAAuB,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YAAE,QAAQ,GAAO,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/components/timeline.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAchD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAS;IACzD,MAAM,QAAQ,GAAsB,EAAE,CAAC;IAEvC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;QAE1C,sBAAsB;QACtB,QAAQ,CAAC,IAAI,CACX,KAAC,aAAa,IAAkB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,IAAjD,OAAO,CAAC,EAAE,CAA2C,CAC1E,CAAC;QAEF,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CACX,MAAC,IAAI,IAAkB,QAAQ,mBAAE,KAAK,EAAE,IAAI,CAAC,OAAO,KAAzC,OAAO,CAAC,EAAE,CAAuC,CAC7D,CAAC;QACJ,CAAC;QAED,iDAAiD;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CACX,KAAC,KAAK,CAAC,QAAQ,cAAuB,QAAQ,IAAzB,WAAW,CAAC,EAAE,CAA6B,CACjE,CAAC;YACF,QAAQ,CAAC,IAAI,CACX,KAAC,IAAI,IAAoB,QAAQ,kBAAE,GAAG,IAA3B,SAAS,CAAC,EAAE,CAAuB,CAC/C,CAAC;QACJ,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,KAAC,IAAI,IAAkB,QAAQ,kBAAE,GAAG,IAAzB,OAAO,CAAC,EAAE,CAAuB,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YAAE,QAAQ,GAAO,CAAC;AACtD,CAAC"}
@@ -41,4 +41,5 @@ export interface WizardAnswers {
41
41
  envVars: EnvVar[];
42
42
  generationSkipped: boolean;
43
43
  setupPowerline: boolean;
44
+ setupGit: boolean;
44
45
  }
@@ -80,7 +80,10 @@ export default function Generation({ answers, onComplete }) {
80
80
  : releaseConflicts.packageJsonExists
81
81
  ? "will add release scripts"
82
82
  : "will create with release scripts";
83
- return (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsxs(Text, { children: ["Project: ", _jsx(Text, { bold: true, children: answers.projectName || "untitled" }), " — ", answers.description || "no description"] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: ["Stack: ", stack, pmAndLicense ? ` (${pmAndLicense})` : ""] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: ["Build: ", answers.buildCommand || "N/A", " | Test:", " ", answers.testCommand || "N/A"] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: ["Architecture: ", answers.architecture || "N/A"] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: ["Features: ", answers.coreFeatures.length, " | Non-goals:", " ", answers.nonGoals.length] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { children: "Files to generate:" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" ", FILES_TO_GENERATE.join(", ")] }) }), conflicts.length > 0 && (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsxs(Text, { color: "yellow", children: ["⚠ Will overwrite: ", conflicts.join(", ")] }) })] })), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { children: "Release setup:" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" ", scriptDisplay, " \u2192 ", scriptStatus] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" package.json \u2192 ", pkgStatus] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsxs(GutterLine, { children: [_jsx(Text, { children: "Proceed? " }), _jsx(ConfirmInput, { onConfirm: handleConfirm, onCancel: handleCancel })] })] }));
83
+ const codeStyleDisplay = answers.codeStyle.length > 0
84
+ ? answers.codeStyle.join(", ")
85
+ : "N/A";
86
+ return (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { bold: true, color: "cyan", children: "Project Info" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" ", "Name: ", _jsx(Text, { bold: true, children: answers.projectName || "untitled" })] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" Description: ", answers.description || "N/A"] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" Package manager: ", answers.packageManager, " | License: ", answers.license] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: "cyan", children: "Stack & Style" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" Language: ", answers.language || "N/A", " | Framework: ", answers.framework || "N/A"] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" Code style: ", codeStyleDisplay] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: "cyan", children: "Build & Test" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" Build: ", answers.buildCommand || "N/A", " | Test: ", answers.testCommand || "N/A"] }) }), (answers.typecheckCommand || answers.lintCommand) && (_jsx(GutterLine, { children: _jsxs(Text, { children: [" ", "Typecheck: ", answers.typecheckCommand || "N/A", " | Lint: ", answers.lintCommand || "N/A"] }) })), answers.prCommand && (_jsx(GutterLine, { children: _jsxs(Text, { children: [" PR command: ", answers.prCommand] }) })), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: "cyan", children: "Architecture" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" ", answers.architecture || "N/A"] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: "cyan", children: "Product Context" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" Problem: ", answers.problem || "N/A"] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" Users: ", answers.users || "N/A"] }) }), answers.techStack && (_jsx(GutterLine, { children: _jsxs(Text, { children: [" Tech stack: ", answers.techStack] }) })), _jsx(GutterLine, { children: _jsxs(Text, { children: [" Features: ", answers.coreFeatures.length > 0 ? answers.coreFeatures.join(", ") : "N/A"] }) }), answers.nonGoals.length > 0 && (_jsx(GutterLine, { children: _jsxs(Text, { children: [" Non-goals: ", answers.nonGoals.join(", ")] }) })), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: "cyan", children: "Files to generate" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" ", FILES_TO_GENERATE.join(", ")] }) }), conflicts.length > 0 && (_jsx(GutterLine, { children: _jsxs(Text, { color: "yellow", children: [" ⚠ Will overwrite: ", conflicts.join(", ")] }) })), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: "cyan", children: "Release setup" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" ", scriptDisplay, " \u2192 ", scriptStatus] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [" package.json \u2192 ", pkgStatus] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsxs(GutterLine, { children: [_jsx(Text, { children: "Proceed? " }), _jsx(ConfirmInput, { onConfirm: handleConfirm, onCancel: handleCancel })] })] }));
84
87
  }
85
88
  if (phase === "running") {
86
89
  return (_jsx(GutterLine, { children: _jsx(Spinner, { label: "Generating project files..." }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/steps/generation.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/steps/generation.tsx"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ export default function Powerline({ answers, onComplete }) {
26
26
  });
27
27
  }
28
28
  setPhase("done");
29
- setTimeout(() => onComplete({ setupPowerline: powerline }), 1000);
29
+ setTimeout(() => onComplete({ setupPowerline: powerline, setupGit: git }), 1000);
30
30
  }
31
31
  catch (err) {
32
32
  setPhase("error");
@@ -1 +1 @@
1
- {"version":3,"file":"powerline.js","sourceRoot":"","sources":["../../src/steps/powerline.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"powerline.js","sourceRoot":"","sources":["../../src/steps/powerline.tsx"],"names":[],"mappings":"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"}
@@ -4,6 +4,22 @@ import { Text } from "ink";
4
4
  import { TextInput } from "@inkjs/ui";
5
5
  import { GutterLine } from "../components/gutter-line.js";
6
6
  import { GutteredMultiSelect } from "../components/guttered-select.js";
7
+ const CORE_FEATURE_OPTIONS = [
8
+ { label: "Authentication", value: "Authentication", description: "Login, signup, sessions" },
9
+ { label: "Authorization", value: "Authorization", description: "Roles, permissions, RBAC" },
10
+ { label: "API / REST", value: "API / REST", description: "RESTful endpoints" },
11
+ { label: "GraphQL API", value: "GraphQL API", description: "GraphQL schema & resolvers" },
12
+ { label: "Dashboard", value: "Dashboard", description: "Admin or user dashboard" },
13
+ { label: "CRUD Operations", value: "CRUD Operations", description: "Create, read, update, delete" },
14
+ { label: "File Upload", value: "File Upload", description: "Upload and manage files" },
15
+ { label: "Search", value: "Search", description: "Full-text or filtered search" },
16
+ { label: "Notifications", value: "Notifications", description: "Email, push, in-app" },
17
+ { label: "Payments", value: "Payments", description: "Billing, subscriptions, checkout" },
18
+ { label: "Real-time", value: "Real-time", description: "WebSockets, live updates" },
19
+ { label: "Analytics", value: "Analytics", description: "Usage tracking, metrics" },
20
+ { label: "CLI", value: "CLI", description: "Command-line interface" },
21
+ { label: "CI/CD", value: "CI/CD", description: "Continuous integration & deployment" },
22
+ ];
7
23
  const TECH_STACK_OPTIONS = [
8
24
  { label: "React", value: "React", description: "UI component library" },
9
25
  { label: "Next.js", value: "Next.js", description: "Full-stack React framework" },
@@ -80,11 +96,14 @@ export default function ProductContext({ initialValues, onComplete }) {
80
96
  function handleTechStackSubmit(values) {
81
97
  advanceToNext("techStack", values.join(", "));
82
98
  }
99
+ function handleCoreFeaturesSubmit(values) {
100
+ advanceToNext("coreFeatures", values.join(", "));
101
+ }
83
102
  // Build completed fields display
84
103
  const completedFields = PHASE_ORDER.slice(0, phaseIndex).map((key) => (_jsx(GutterLine, { children: _jsxs(Text, { dimColor: true, children: [key === "problem" && `Problem: ${answers[key]}`, key === "users" && `Users: ${answers[key]}`, key === "techStack" && `Tech stack: ${answers[key]}`, key === "coreFeatures" && `Core features: ${answers[key]}`, key === "nonGoals" && `Non-goals: ${answers[key]}`] }) }, key)));
85
104
  const usersPlaceholder = answers["problem"]
86
105
  ? `People affected by: ${answers["problem"]}`
87
106
  : "e.g. Developers, PMs, designers...";
88
- return (_jsxs(_Fragment, { children: [completedFields, currentPhase === "problem" && (_jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "What problem does this solve? " }), _jsx(TextInput, { placeholder: "Describe the core problem...", onSubmit: handleTextSubmit("problem", true) })] })), currentPhase === "users" && (_jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "Who are the users? " }), _jsx(TextInput, { placeholder: usersPlaceholder, onSubmit: handleTextSubmit("users", true) })] })), currentPhase === "techStack" && (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { bold: true, children: "Tech stack:" }) }), _jsx(GutteredMultiSelect, { options: TECH_STACK_OPTIONS, initialSelected: prefillTechStack, onSubmit: handleTechStackSubmit })] })), currentPhase === "coreFeatures" && (_jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "Core features (comma-separated): " }), _jsx(TextInput, { placeholder: "e.g. Auth, Dashboard, API...", onSubmit: handleTextSubmit("coreFeatures", true) })] })), currentPhase === "nonGoals" && (_jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "Non-goals (comma-separated): " }), _jsx(TextInput, { placeholder: "e.g. Mobile app, Real-time sync...", onSubmit: handleTextSubmit("nonGoals", false) })] })), error && (_jsx(GutterLine, { children: _jsx(Text, { color: "red", children: error }) }))] }));
107
+ return (_jsxs(_Fragment, { children: [completedFields, currentPhase === "problem" && (_jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "What problem does this solve? " }), _jsx(TextInput, { placeholder: "Describe the core problem...", onSubmit: handleTextSubmit("problem", true) })] })), currentPhase === "users" && (_jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "Who are the users? " }), _jsx(TextInput, { placeholder: usersPlaceholder, onSubmit: handleTextSubmit("users", true) })] })), currentPhase === "techStack" && (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { bold: true, children: "Tech stack:" }) }), _jsx(GutteredMultiSelect, { options: TECH_STACK_OPTIONS, initialSelected: prefillTechStack, onSubmit: handleTechStackSubmit })] })), currentPhase === "coreFeatures" && (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { bold: true, children: "Core features:" }) }), _jsx(GutteredMultiSelect, { options: CORE_FEATURE_OPTIONS, onSubmit: handleCoreFeaturesSubmit, allowCustom: true, customPlaceholder: "e.g. Export PDF, Onboarding flow..." })] })), currentPhase === "nonGoals" && (_jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "Non-goals (comma-separated): " }), _jsx(TextInput, { placeholder: "e.g. Mobile app, Real-time sync...", onSubmit: handleTextSubmit("nonGoals", false) })] })), error && (_jsx(GutterLine, { children: _jsx(Text, { color: "red", children: error }) }))] }));
89
108
  }
90
109
  //# sourceMappingURL=product-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-context.js","sourceRoot":"","sources":["../../src/steps/product-context.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"product-context.js","sourceRoot":"","sources":["../../src/steps/product-context.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "procedure-cli",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "CLI-based AI Agent powered by AI SDK 6, Z.ai, and OpenAI",
5
5
  "type": "module",
6
6
  "bin": {
package/src/app.tsx CHANGED
@@ -21,7 +21,7 @@ const STEP_NAMES = [
21
21
  "Architecture",
22
22
  "Product Context",
23
23
  "Generation",
24
- "Powerline",
24
+ "Setup",
25
25
  ] as const;
26
26
 
27
27
  const EMPTY_ANSWERS: WizardAnswers = {
@@ -48,6 +48,7 @@ const EMPTY_ANSWERS: WizardAnswers = {
48
48
  envVars: [],
49
49
  generationSkipped: false,
50
50
  setupPowerline: false,
51
+ setupGit: false,
51
52
  };
52
53
 
53
54
  function getSummary(stepIndex: number, answers: WizardAnswers): string {
@@ -83,7 +84,10 @@ function getSummary(stepIndex: number, answers: WizardAnswers): string {
83
84
  case 5:
84
85
  return answers.generationSkipped ? "skipped" : "files generated";
85
86
  case 6: {
86
- return answers.setupPowerline ? "Powerline: yes" : "Powerline: no";
87
+ const parts: string[] = [];
88
+ if (answers.setupPowerline) parts.push("Powerline");
89
+ parts.push(answers.setupGit ? "Git init: yes" : "Git init: no");
90
+ return parts.join(", ");
87
91
  }
88
92
  default:
89
93
  return "done";
@@ -99,6 +103,9 @@ export default function App() {
99
103
  if (key.escape) {
100
104
  process.exit(0);
101
105
  }
106
+ if (finished && key.return) {
107
+ process.exit(0);
108
+ }
102
109
  });
103
110
 
104
111
  function handleStepComplete(partial: Partial<WizardAnswers>) {
@@ -142,6 +149,8 @@ export default function App() {
142
149
  </Text>
143
150
  </>
144
151
  )}
152
+ <Text> </Text>
153
+ <Text dimColor>Press Enter to exit.</Text>
145
154
  </Box>
146
155
  </Box>
147
156
  );
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import React, { useEffect, useState } from "react";
2
2
  import { Text } from "ink";
3
3
 
4
4
  export type StepStatus = "completed" | "active" | "pending";
@@ -8,12 +8,24 @@ interface Props {
8
8
  label: string;
9
9
  }
10
10
 
11
+ const ACTIVE_FRAMES = ["◆", "◈", "◇", "◈"] as const;
12
+
11
13
  export default function StepIndicator({ status, label }: Props) {
14
+ const [frame, setFrame] = useState(0);
15
+
16
+ useEffect(() => {
17
+ if (status !== "active") return;
18
+ const id = setInterval(() => {
19
+ setFrame((f) => (f + 1) % ACTIVE_FRAMES.length);
20
+ }, 350);
21
+ return () => clearInterval(id);
22
+ }, [status]);
23
+
12
24
  if (status === "completed") {
13
25
  return <Text><Text color="green">{"◇"}</Text>{" "}<Text color="green">{label}</Text></Text>;
14
26
  }
15
27
  if (status === "active") {
16
- return <Text><Text color="green" bold>{"◆"}</Text>{" "}<Text bold color="green">{label}</Text></Text>;
28
+ return <Text><Text color="cyan" bold>{ACTIVE_FRAMES[frame]}</Text>{" "}<Text bold color="cyan">{label}</Text></Text>;
17
29
  }
18
30
  return <Text><Text dimColor>{"○"}</Text>{" "}<Text dimColor>{label}</Text></Text>;
19
31
  }
@@ -19,6 +19,7 @@ export default function Timeline({ steps, children }: Props) {
19
19
 
20
20
  steps.forEach((step, i) => {
21
21
  const isLast = i === steps.length - 1;
22
+ const isActive = step.status === "active";
22
23
 
23
24
  // Step indicator line
24
25
  elements.push(
@@ -32,15 +33,18 @@ export default function Timeline({ steps, children }: Props) {
32
33
  );
33
34
  }
34
35
 
35
- // Active step: render children (they handle their own GutterLine)
36
- if (step.status === "active") {
36
+ // Active step: render children then close with
37
+ if (isActive) {
37
38
  elements.push(
38
39
  <React.Fragment key={`content-${i}`}>{children}</React.Fragment>
39
40
  );
41
+ elements.push(
42
+ <Text key={`close-${i}`} dimColor>{"└"}</Text>
43
+ );
40
44
  }
41
45
 
42
- // Gutter spacer between steps
43
- if (!isLast) {
46
+ // Gutter spacer between steps — skip after active (└ already closes it)
47
+ if (!isLast && !isActive) {
44
48
  elements.push(<Text key={`bar-${i}`} dimColor>{"│"}</Text>);
45
49
  }
46
50
  });
package/src/lib/types.ts CHANGED
@@ -65,4 +65,5 @@ export interface WizardAnswers {
65
65
 
66
66
  // Step 7: Powerline
67
67
  setupPowerline: boolean;
68
+ setupGit: boolean;
68
69
  }
@@ -102,62 +102,127 @@ export default function Generation({ answers, onComplete }: Props) {
102
102
  ? "will add release scripts"
103
103
  : "will create with release scripts";
104
104
 
105
+ const codeStyleDisplay = answers.codeStyle.length > 0
106
+ ? answers.codeStyle.join(", ")
107
+ : "N/A";
108
+
105
109
  return (
106
110
  <>
111
+ {/* ── Project Info ── */}
107
112
  <GutterLine>
108
- <Text>
109
- Project: <Text bold>{answers.projectName || "untitled"}</Text>
110
- {" — "}
111
- {answers.description || "no description"}
112
- </Text>
113
+ <Text bold color="cyan">Project Info</Text>
113
114
  </GutterLine>
114
115
  <GutterLine>
115
116
  <Text>
116
- Stack: {stack}
117
- {pmAndLicense ? ` (${pmAndLicense})` : ""}
117
+ {" "}Name: <Text bold>{answers.projectName || "untitled"}</Text>
118
118
  </Text>
119
119
  </GutterLine>
120
120
  <GutterLine>
121
- <Text>
122
- Build: {answers.buildCommand || "N/A"} | Test:{" "}
123
- {answers.testCommand || "N/A"}
124
- </Text>
121
+ <Text> Description: {answers.description || "N/A"}</Text>
125
122
  </GutterLine>
126
123
  <GutterLine>
127
- <Text>Architecture: {answers.architecture || "N/A"}</Text>
124
+ <Text> Package manager: {answers.packageManager} | License: {answers.license}</Text>
128
125
  </GutterLine>
126
+
127
+ {/* ── Stack & Style ── */}
129
128
  <GutterLine>
130
- <Text>
131
- Features: {answers.coreFeatures.length} | Non-goals:{" "}
132
- {answers.nonGoals.length}
133
- </Text>
129
+ <Text> </Text>
130
+ </GutterLine>
131
+ <GutterLine>
132
+ <Text bold color="cyan">Stack & Style</Text>
133
+ </GutterLine>
134
+ <GutterLine>
135
+ <Text> Language: {answers.language || "N/A"} | Framework: {answers.framework || "N/A"}</Text>
136
+ </GutterLine>
137
+ <GutterLine>
138
+ <Text> Code style: {codeStyleDisplay}</Text>
139
+ </GutterLine>
140
+
141
+ {/* ── Build & Test ── */}
142
+ <GutterLine>
143
+ <Text> </Text>
144
+ </GutterLine>
145
+ <GutterLine>
146
+ <Text bold color="cyan">Build & Test</Text>
147
+ </GutterLine>
148
+ <GutterLine>
149
+ <Text> Build: {answers.buildCommand || "N/A"} | Test: {answers.testCommand || "N/A"}</Text>
150
+ </GutterLine>
151
+ {(answers.typecheckCommand || answers.lintCommand) && (
152
+ <GutterLine>
153
+ <Text>
154
+ {" "}Typecheck: {answers.typecheckCommand || "N/A"} | Lint: {answers.lintCommand || "N/A"}
155
+ </Text>
156
+ </GutterLine>
157
+ )}
158
+ {answers.prCommand && (
159
+ <GutterLine>
160
+ <Text> PR command: {answers.prCommand}</Text>
161
+ </GutterLine>
162
+ )}
163
+
164
+ {/* ── Architecture ── */}
165
+ <GutterLine>
166
+ <Text> </Text>
134
167
  </GutterLine>
168
+ <GutterLine>
169
+ <Text bold color="cyan">Architecture</Text>
170
+ </GutterLine>
171
+ <GutterLine>
172
+ <Text> {answers.architecture || "N/A"}</Text>
173
+ </GutterLine>
174
+
175
+ {/* ── Product Context ── */}
135
176
  <GutterLine>
136
177
  <Text> </Text>
137
178
  </GutterLine>
138
179
  <GutterLine>
139
- <Text>Files to generate:</Text>
180
+ <Text bold color="cyan">Product Context</Text>
181
+ </GutterLine>
182
+ <GutterLine>
183
+ <Text> Problem: {answers.problem || "N/A"}</Text>
184
+ </GutterLine>
185
+ <GutterLine>
186
+ <Text> Users: {answers.users || "N/A"}</Text>
187
+ </GutterLine>
188
+ {answers.techStack && (
189
+ <GutterLine>
190
+ <Text> Tech stack: {answers.techStack}</Text>
191
+ </GutterLine>
192
+ )}
193
+ <GutterLine>
194
+ <Text> Features: {answers.coreFeatures.length > 0 ? answers.coreFeatures.join(", ") : "N/A"}</Text>
195
+ </GutterLine>
196
+ {answers.nonGoals.length > 0 && (
197
+ <GutterLine>
198
+ <Text> Non-goals: {answers.nonGoals.join(", ")}</Text>
199
+ </GutterLine>
200
+ )}
201
+
202
+ {/* ── Files ── */}
203
+ <GutterLine>
204
+ <Text> </Text>
205
+ </GutterLine>
206
+ <GutterLine>
207
+ <Text bold color="cyan">Files to generate</Text>
140
208
  </GutterLine>
141
209
  <GutterLine>
142
210
  <Text> {FILES_TO_GENERATE.join(", ")}</Text>
143
211
  </GutterLine>
144
212
  {conflicts.length > 0 && (
145
- <>
146
- <GutterLine>
147
- <Text> </Text>
148
- </GutterLine>
149
- <GutterLine>
150
- <Text color="yellow">
151
- {"⚠ Will overwrite: "}{conflicts.join(", ")}
152
- </Text>
153
- </GutterLine>
154
- </>
213
+ <GutterLine>
214
+ <Text color="yellow">
215
+ {" ⚠ Will overwrite: "}{conflicts.join(", ")}
216
+ </Text>
217
+ </GutterLine>
155
218
  )}
219
+
220
+ {/* ── Release ── */}
156
221
  <GutterLine>
157
222
  <Text> </Text>
158
223
  </GutterLine>
159
224
  <GutterLine>
160
- <Text>Release setup:</Text>
225
+ <Text bold color="cyan">Release setup</Text>
161
226
  </GutterLine>
162
227
  <GutterLine>
163
228
  <Text> {scriptDisplay} → {scriptStatus}</Text>
@@ -165,6 +230,8 @@ export default function Generation({ answers, onComplete }: Props) {
165
230
  <GutterLine>
166
231
  <Text> package.json → {pkgStatus}</Text>
167
232
  </GutterLine>
233
+
234
+ {/* ── Confirm ── */}
168
235
  <GutterLine>
169
236
  <Text> </Text>
170
237
  </GutterLine>
@@ -45,7 +45,7 @@ export default function Powerline({ answers, onComplete }: Props) {
45
45
  });
46
46
  }
47
47
  setPhase("done");
48
- setTimeout(() => onComplete({ setupPowerline: powerline }), 1000);
48
+ setTimeout(() => onComplete({ setupPowerline: powerline, setupGit: git }), 1000);
49
49
  } catch (err) {
50
50
  setPhase("error");
51
51
  setErrorMsg(err instanceof Error ? err.message : String(err));
@@ -12,6 +12,23 @@ interface Props {
12
12
 
13
13
  type Phase = "problem" | "users" | "techStack" | "coreFeatures" | "nonGoals";
14
14
 
15
+ const CORE_FEATURE_OPTIONS = [
16
+ { label: "Authentication", value: "Authentication", description: "Login, signup, sessions" },
17
+ { label: "Authorization", value: "Authorization", description: "Roles, permissions, RBAC" },
18
+ { label: "API / REST", value: "API / REST", description: "RESTful endpoints" },
19
+ { label: "GraphQL API", value: "GraphQL API", description: "GraphQL schema & resolvers" },
20
+ { label: "Dashboard", value: "Dashboard", description: "Admin or user dashboard" },
21
+ { label: "CRUD Operations", value: "CRUD Operations", description: "Create, read, update, delete" },
22
+ { label: "File Upload", value: "File Upload", description: "Upload and manage files" },
23
+ { label: "Search", value: "Search", description: "Full-text or filtered search" },
24
+ { label: "Notifications", value: "Notifications", description: "Email, push, in-app" },
25
+ { label: "Payments", value: "Payments", description: "Billing, subscriptions, checkout" },
26
+ { label: "Real-time", value: "Real-time", description: "WebSockets, live updates" },
27
+ { label: "Analytics", value: "Analytics", description: "Usage tracking, metrics" },
28
+ { label: "CLI", value: "CLI", description: "Command-line interface" },
29
+ { label: "CI/CD", value: "CI/CD", description: "Continuous integration & deployment" },
30
+ ];
31
+
15
32
  const TECH_STACK_OPTIONS = [
16
33
  { label: "React", value: "React", description: "UI component library" },
17
34
  { label: "Next.js", value: "Next.js", description: "Full-stack React framework" },
@@ -98,6 +115,10 @@ export default function ProductContext({ initialValues, onComplete }: Props) {
98
115
  advanceToNext("techStack", values.join(", "));
99
116
  }
100
117
 
118
+ function handleCoreFeaturesSubmit(values: string[]) {
119
+ advanceToNext("coreFeatures", values.join(", "));
120
+ }
121
+
101
122
  // Build completed fields display
102
123
  const completedFields = PHASE_ORDER.slice(0, phaseIndex).map((key) => (
103
124
  <GutterLine key={key}>
@@ -153,13 +174,17 @@ export default function ProductContext({ initialValues, onComplete }: Props) {
153
174
  )}
154
175
 
155
176
  {currentPhase === "coreFeatures" && (
156
- <GutterLine>
157
- <Text bold>Core features (comma-separated): </Text>
158
- <TextInput
159
- placeholder="e.g. Auth, Dashboard, API..."
160
- onSubmit={handleTextSubmit("coreFeatures", true)}
177
+ <>
178
+ <GutterLine>
179
+ <Text bold>Core features:</Text>
180
+ </GutterLine>
181
+ <GutteredMultiSelect
182
+ options={CORE_FEATURE_OPTIONS}
183
+ onSubmit={handleCoreFeaturesSubmit}
184
+ allowCustom
185
+ customPlaceholder="e.g. Export PDF, Onboarding flow..."
161
186
  />
162
- </GutterLine>
187
+ </>
163
188
  )}
164
189
 
165
190
  {currentPhase === "nonGoals" && (
@@ -94,6 +94,21 @@ Two tracking files live at the project root. Both are append-only logs — never
94
94
  - **Then**: Fix only unfixed findings → append a new `CF-` entry to CODE-FIXED.md (write to CODE-FIXED.md only, never modify CODE-REVIEW.md).
95
95
  - **Never** perform a code review during a fixing process.
96
96
 
97
+ ## Release
98
+
99
+ ```bash
100
+ {{packageManager}} run release:patch # Bump patch (0.1.0 → 0.1.1)
101
+ {{packageManager}} run release:minor # Bump minor (0.1.0 → 0.2.0)
102
+ {{packageManager}} run release:major # Bump major (0.1.0 → 1.0.0)
103
+ ```
104
+
105
+ The release script (`~/bin/{{projectName}}-release`) will:
106
+ 1. Verify git working tree is clean
107
+ 2. Run build
108
+ 3. Bump version via `npm version`
109
+ 4. Push branch + tags to origin
110
+ 5. Publish to registry
111
+
97
112
  ## Core Principles
98
113
 
99
114
  - **Simplicity First**: Make every change as simple as possible. Minimal code impact.