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.
- package/.claude/settings.local.json +3 -1
- package/CODE-FIXED.md +25 -0
- package/CODE-REVIEW.md +67 -0
- package/dist/app.js +11 -3
- package/dist/app.js.map +1 -1
- package/dist/components/step-indicator.js +12 -1
- package/dist/components/step-indicator.js.map +1 -1
- package/dist/components/timeline.js +6 -4
- package/dist/components/timeline.js.map +1 -1
- package/dist/lib/types.d.ts +1 -0
- package/dist/steps/generation.js +4 -1
- package/dist/steps/generation.js.map +1 -1
- package/dist/steps/powerline.js +1 -1
- package/dist/steps/powerline.js.map +1 -1
- package/dist/steps/product-context.js +20 -1
- package/dist/steps/product-context.js.map +1 -1
- package/package.json +1 -1
- package/src/app.tsx +11 -2
- package/src/components/step-indicator.tsx +14 -2
- package/src/components/timeline.tsx +8 -4
- package/src/lib/types.ts +1 -0
- package/src/steps/generation.tsx +95 -28
- package/src/steps/powerline.tsx +1 -1
- package/src/steps/product-context.tsx +31 -6
- package/templates/CLAUDE.md.hbs +15 -0
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
|
-
"
|
|
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
|
-
|
|
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":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAI1C,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAEhD,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAE7C,MAAM,UAAU,GAAG;IACjB,cAAc;IACd,eAAe;IACf,cAAc;IACd,cAAc;IACd,iBAAiB;IACjB,YAAY;IACZ,
|
|
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: "
|
|
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":";
|
|
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
|
|
16
|
-
if (
|
|
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;
|
|
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"}
|
package/dist/lib/types.d.ts
CHANGED
package/dist/steps/generation.js
CHANGED
|
@@ -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
|
-
|
|
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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"}
|
package/dist/steps/powerline.js
CHANGED
|
@@ -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":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAoBxC,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAS;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAQ,eAAe,CAAC,CAAC;IAC3D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAc,EAAE,CAAC,CAAC;IAEhE,SAAS,QAAQ,CAAC,SAAkB,EAAE,GAAY;QAChD,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,SAAS,EAAE,CAAC;gBACd,cAAc,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrC,cAAc,CAAC;oBACb,YAAY,EAAE,SAAS,CAAC,SAAS;oBACjC,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;iBAC/D,CAAC,CAAC;YACL,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;
|
|
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(
|
|
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":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAUvE,MAAM,kBAAkB,GAAG;IACzB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACvE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,4BAA4B,EAAE;IACjF,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACvE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;IAC9E,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE;IACrF,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,+BAA+B,EAAE;IACpF,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,oCAAoC,EAAE;IACzF,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE;IAChF,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE;IACxE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,8BAA8B,EAAE;IAC/E,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,kCAAkC,EAAE;IACzF,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;IACnE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;IACvE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC5F,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,2BAA2B,EAAE;IACtF,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;IAC7E,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,8BAA8B,EAAE;IACzE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,8BAA8B,EAAE;CAC9E,CAAC;AAEF,MAAM,WAAW,GAAY,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AAE3F,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,aAAa,EAAE,UAAU,EAAS;IACzE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAyB,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvC,0EAA0E;IAC1E,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,IAAI,aAAa,EAAE,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,QAAS,CAAC,WAAW,EAAE,CACvE,CAAC;QACF,IAAI,KAAK;YAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,aAAa,EAAE,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,SAAU,CAAC,WAAW,EAAE,CACxE,CAAC;QACF,IAAI,KAAK;YAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAE,CAAC;IAE9C,SAAS,aAAa,CAAC,GAAW,EAAE,KAAa;QAC/C,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;QAC1C,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEb,IAAI,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,UAAU,CAAC;gBACT,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;qBACpC,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpB,MAAM,CAAC,OAAO,CAAC;gBAClB,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;qBAC5B,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpB,MAAM,CAAC,OAAO,CAAC;gBAClB,WAAW,EAAE,EAAE;gBACf,OAAO,EAAE,EAAE;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,QAAiB;QACtD,OAAO,CAAC,KAAa,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;gBACrB,QAAQ,CAAC,wBAAwB,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,qBAAqB,CAAC,MAAgB;QAC7C,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,iCAAiC;IACjC,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpE,KAAC,UAAU,cACT,MAAC,IAAI,IAAC,QAAQ,mBACX,GAAG,KAAK,SAAS,IAAI,YAAY,OAAO,CAAC,GAAG,CAAC,EAAE,EAC/C,GAAG,KAAK,OAAO,IAAI,UAAU,OAAO,CAAC,GAAG,CAAC,EAAE,EAC3C,GAAG,KAAK,WAAW,IAAI,eAAe,OAAO,CAAC,GAAG,CAAC,EAAE,EACpD,GAAG,KAAK,cAAc,IAAI,kBAAkB,OAAO,CAAC,GAAG,CAAC,EAAE,EAC1D,GAAG,KAAK,UAAU,IAAI,cAAc,OAAO,CAAC,GAAG,CAAC,EAAE,IAC9C,IAPQ,GAAG,CAQP,CACd,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;QACzC,CAAC,CAAC,uBAAuB,OAAO,CAAC,SAAS,CAAC,EAAE;QAC7C,CAAC,CAAC,oCAAoC,CAAC;IAEzC,OAAO,CACL,8BACG,eAAe,EAEf,YAAY,KAAK,SAAS,IAAI,CAC7B,MAAC,UAAU,eACT,KAAC,IAAI,IAAC,IAAI,qDAAsC,EAChD,KAAC,SAAS,IACR,WAAW,EAAC,8BAA8B,EAC1C,QAAQ,EAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,GAC3C,IACS,CACd,EAEA,YAAY,KAAK,OAAO,IAAI,CAC3B,MAAC,UAAU,eACT,KAAC,IAAI,IAAC,IAAI,0CAA2B,EACrC,KAAC,SAAS,IACR,WAAW,EAAE,gBAAgB,EAC7B,QAAQ,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,GACzC,IACS,CACd,EAEA,YAAY,KAAK,WAAW,IAAI,CAC/B,8BACE,KAAC,UAAU,cACT,KAAC,IAAI,IAAC,IAAI,kCAAmB,GAClB,EACb,KAAC,mBAAmB,IAClB,OAAO,EAAE,kBAAkB,EAC3B,eAAe,EAAE,gBAAgB,EACjC,QAAQ,EAAE,qBAAqB,GAC/B,IACD,CACJ,EAEA,YAAY,KAAK,cAAc,IAAI,CAClC,
|
|
1
|
+
{"version":3,"file":"product-context.js","sourceRoot":"","sources":["../../src/steps/product-context.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/app.tsx
CHANGED
|
@@ -21,7 +21,7 @@ const STEP_NAMES = [
|
|
|
21
21
|
"Architecture",
|
|
22
22
|
"Product Context",
|
|
23
23
|
"Generation",
|
|
24
|
-
"
|
|
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
|
-
|
|
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="
|
|
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
|
|
36
|
-
if (
|
|
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
package/src/steps/generation.tsx
CHANGED
|
@@ -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
|
-
|
|
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>
|
|
124
|
+
<Text> Package manager: {answers.packageManager} | License: {answers.license}</Text>
|
|
128
125
|
</GutterLine>
|
|
126
|
+
|
|
127
|
+
{/* ── Stack & Style ── */}
|
|
129
128
|
<GutterLine>
|
|
130
|
-
<Text>
|
|
131
|
-
|
|
132
|
-
|
|
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>
|
|
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
|
-
<
|
|
147
|
-
|
|
148
|
-
</
|
|
149
|
-
|
|
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
|
|
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>
|
package/src/steps/powerline.tsx
CHANGED
|
@@ -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
|
-
|
|
157
|
-
<
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
-
|
|
187
|
+
</>
|
|
163
188
|
)}
|
|
164
189
|
|
|
165
190
|
{currentPhase === "nonGoals" && (
|
package/templates/CLAUDE.md.hbs
CHANGED
|
@@ -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.
|