procedure-cli 0.1.13 → 0.1.14
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/dist/steps/build-test.js +1 -1
- package/dist/steps/build-test.js.map +1 -1
- package/dist/steps/product-context.js +1 -1
- package/dist/steps/product-context.js.map +1 -1
- package/dist/steps/project-info.js +1 -1
- package/dist/steps/project-info.js.map +1 -1
- package/package.json +5 -1
- package/.claude/settings.local.json +0 -27
- package/.env.example +0 -2
- package/AGENTS.md +0 -134
- package/CLAUDE.md +0 -138
- package/CODE-FIXED.md +0 -252
- package/CODE-REVIEW.md +0 -558
- package/config/defaults.json +0 -8
- package/config/powerline-config.json +0 -52
- package/config/stacks/typescript-node.json +0 -15
- package/docs/GIAI-THICH-CLAUDE-MD.md +0 -206
- package/docs/PRD.md +0 -141
- package/docs/USER-STORIES.md +0 -324
- package/src/app.tsx +0 -213
- package/src/cli.tsx +0 -19
- package/src/components/banner.tsx +0 -23
- package/src/components/gutter-line.tsx +0 -16
- package/src/components/guttered-select.tsx +0 -231
- package/src/components/step-indicator.tsx +0 -32
- package/src/components/timeline.tsx +0 -57
- package/src/lib/fs.ts +0 -23
- package/src/lib/git.ts +0 -41
- package/src/lib/powerline.ts +0 -48
- package/src/lib/template.ts +0 -161
- package/src/lib/types.ts +0 -70
- package/src/providers/openai.ts +0 -5
- package/src/providers/zai.ts +0 -7
- package/src/steps/architecture.tsx +0 -72
- package/src/steps/build-test.tsx +0 -114
- package/src/steps/generation.tsx +0 -176
- package/src/steps/powerline.tsx +0 -254
- package/src/steps/product-context.tsx +0 -269
- package/src/steps/project-info.tsx +0 -183
- package/src/steps/stack-style.tsx +0 -304
- package/src/theme.ts +0 -15
- package/tsconfig.json +0 -17
package/CODE-FIXED.md
DELETED
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
# Code Fix Log
|
|
2
|
-
|
|
3
|
-
## Writing Standard
|
|
4
|
-
- Each entry documents fixes applied for a specific `CODE-REVIEW.md` entry.
|
|
5
|
-
- Reference the source review by its Entry ID (e.g., `CR-20260221-001`). Do NOT re-describe findings — only document actions taken.
|
|
6
|
-
- For finding details, the reader should consult the referenced `CODE-REVIEW.md` entry.
|
|
7
|
-
- Each finding is referenced as `Finding #N (Severity)` matching the review's numbering.
|
|
8
|
-
- Fixed findings must include `file:line` for every change made.
|
|
9
|
-
- Deferred findings must include rationale and a revisit trigger.
|
|
10
|
-
- Verification section must confirm `npm run typecheck` + `npm run build` status after fixes.
|
|
11
|
-
- Language: English only. Tone: Technical, concise, action-focused.
|
|
12
|
-
|
|
13
|
-
### Entry ID Convention
|
|
14
|
-
- Required field for every entry: `Entry ID`.
|
|
15
|
-
- Format: `CF-YYYYMMDD-###`
|
|
16
|
-
- Example: `CF-20260222-001`
|
|
17
|
-
- `###` is a zero-padded sequence number for that day.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Entry 2026-02-22
|
|
22
|
-
|
|
23
|
-
### Entry ID
|
|
24
|
-
- `CF-20260222-001`
|
|
25
|
-
|
|
26
|
-
### Source Review
|
|
27
|
-
- `CR-20260221-001` (CODE-REVIEW.md entry 2026-02-21)
|
|
28
|
-
|
|
29
|
-
### Fixes Applied
|
|
30
|
-
|
|
31
|
-
1. Finding #1 (High) — **Fixed**
|
|
32
|
-
- `src/lib/powerline.ts:33` — Changed `--config=~/.claude/powerline-config.json` to `--config=.claude/powerline-config.json` so the status-line command reads from the project-local path where the config is actually written.
|
|
33
|
-
|
|
34
|
-
2. Finding #2 (Medium) — **Fixed**
|
|
35
|
-
- `src/lib/git.ts:3-11` — Added `hasGitIdentity()` helper that pre-checks `git config user.name` and `git config user.email`.
|
|
36
|
-
- `src/lib/git.ts:13-28` — Refactored `initGit()` to return `{ committed: boolean; reason?: string }`. Skips `git commit` when identity is missing and returns a descriptive reason string.
|
|
37
|
-
|
|
38
|
-
3. Finding #3 (Medium) — **Fixed**
|
|
39
|
-
- `src/lib/powerline.ts:21-29` — Wrapped `JSON.parse(raw)` in try/catch; malformed `.claude/settings.json` now falls back to empty object instead of throwing.
|
|
40
|
-
|
|
41
|
-
4. Finding #4 (Medium) — **Fixed**
|
|
42
|
-
- `src/lib/template.ts:38-44` — Added `checkConflicts(targetDir)` function that returns list of existing output files that would be overwritten.
|
|
43
|
-
- `src/steps/generation.tsx:5,61,102-113` — Imported `checkConflicts`, added yellow warning in summary phase listing files that will be overwritten before user confirms.
|
|
44
|
-
|
|
45
|
-
5. Finding #5 (Low) — **Fixed**
|
|
46
|
-
- `src/lib/types.ts:64` — Added `generationSkipped: boolean` field to `WizardAnswers`.
|
|
47
|
-
- `src/app.tsx:49` — Added `generationSkipped: false` to `EMPTY_ANSWERS`.
|
|
48
|
-
- `src/app.tsx:83` — Updated `getSummary` case 5 to return `"skipped"` when `generationSkipped` is true.
|
|
49
|
-
- `src/steps/generation.tsx:9` — Changed `onComplete` prop type to `(partial: Partial<WizardAnswers>) => void`.
|
|
50
|
-
- `src/steps/generation.tsx:35` — On successful generation, calls `onComplete({ generationSkipped: false })`.
|
|
51
|
-
- `src/steps/generation.tsx:48` — On cancel, calls `onComplete({ generationSkipped: true })`.
|
|
52
|
-
- `src/app.tsx:179` — Changed `onComplete={() => handleStepComplete({})}` to `onComplete={handleStepComplete}`.
|
|
53
|
-
|
|
54
|
-
6. Finding #6 (Low) — **Fixed**
|
|
55
|
-
- `templates/docs/USER-STORIES.md.hbs:1-32` — Added Handlebars `{{#if userStories.length}}` conditional with fallback starter template content when `userStories` is empty. Fallback includes example user story in Gherkin format with clear TODO instructions.
|
|
56
|
-
|
|
57
|
-
### Deferred
|
|
58
|
-
None — all 6 findings fixed.
|
|
59
|
-
|
|
60
|
-
### Verification Notes
|
|
61
|
-
- `npm run typecheck`: pass (0 errors)
|
|
62
|
-
- All fixes verified through code inspection.
|
|
63
|
-
|
|
64
|
-
### Residual Risks / Testing Gaps
|
|
65
|
-
- No automated tests for `checkConflicts()` behavior.
|
|
66
|
-
- No automated tests for `initGit()` across machines with missing git identity.
|
|
67
|
-
- No automated tests for malformed `.claude/settings.json` handling.
|
|
68
|
-
- No automated tests asserting generation summary truthfulness when user cancels.
|
|
69
|
-
- No runtime test for Handlebars `{{#if userStories.length}}` fallback rendering.
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
## Entry 2026-02-22
|
|
74
|
-
|
|
75
|
-
### Entry ID
|
|
76
|
-
- `CF-20260222-002`
|
|
77
|
-
|
|
78
|
-
### Source Review
|
|
79
|
-
- `CR-20260221-002` (CODE-REVIEW.md entry 2026-02-21)
|
|
80
|
-
|
|
81
|
-
### Fixes Applied
|
|
82
|
-
|
|
83
|
-
1. Finding #7 (Medium) — **Fixed**
|
|
84
|
-
- `src/lib/git.ts:13-20` — Added `hasStagedFiles()` helper that runs `git status --porcelain`; returns `false` when index is empty.
|
|
85
|
-
- `src/lib/git.ts:30-33` — Added early return `{ committed: false, reason: 'Nothing to commit — directory is empty.' }` before identity check, preventing hard crash on empty-directory init.
|
|
86
|
-
|
|
87
|
-
2. Finding #8 (Low) — **Fixed**
|
|
88
|
-
- `src/app.tsx:133-141` — Wrapped completion message in `answers.generationSkipped` conditional. Skip path shows neutral `"Generation was skipped — no files were written."` Scaffold path retains original project name + doc check message.
|
|
89
|
-
|
|
90
|
-
3. Finding #6 re-raised (Low, Still Open in CR-20260221-002) — **Already Fixed**
|
|
91
|
-
- Covered by `CF-20260222-001` Finding #6: `templates/docs/USER-STORIES.md.hbs` Handlebars fallback added in previous fix cycle. No further action required.
|
|
92
|
-
|
|
93
|
-
### Deferred
|
|
94
|
-
None.
|
|
95
|
-
|
|
96
|
-
### Verification Notes
|
|
97
|
-
- `npm run typecheck`: pass (0 errors)
|
|
98
|
-
- `npm run build`: pass
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## Entry 2026-02-22
|
|
103
|
-
|
|
104
|
-
### Entry ID
|
|
105
|
-
- `CF-20260222-003`
|
|
106
|
-
|
|
107
|
-
### Source Review
|
|
108
|
-
- `CR-20260221-004` (CODE-REVIEW.md entry 2026-02-21)
|
|
109
|
-
|
|
110
|
-
### Fixes Applied
|
|
111
|
-
|
|
112
|
-
1. Finding #9 (Low, Still Open) — **Fixed**
|
|
113
|
-
- `src/steps/powerline.tsx:22` — Added `gitCommitted?: boolean` to `SetupResult` interface.
|
|
114
|
-
- `src/steps/powerline.tsx:41-44` — `runSetup()` now stores `gitResult.committed` in `setupResult.gitCommitted`.
|
|
115
|
-
- `src/steps/powerline.tsx:125-133` — "Git repository initialized." only renders when `setupResult.gitCommitted` is true. When commit failed, only the yellow warning with reason is shown (no mixed success/failure messaging).
|
|
116
|
-
|
|
117
|
-
### Deferred
|
|
118
|
-
None.
|
|
119
|
-
|
|
120
|
-
### Verification Notes
|
|
121
|
-
- `npm run typecheck`: pass
|
|
122
|
-
- `npm run build`: pass
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
## Entry 2026-02-22
|
|
126
|
-
|
|
127
|
-
### Entry ID
|
|
128
|
-
- `CF-20260222-007`
|
|
129
|
-
|
|
130
|
-
### Source Review
|
|
131
|
-
- `CR-20260222-005` (CODE-REVIEW.md entry 2026-02-22)
|
|
132
|
-
|
|
133
|
-
### Fixes Applied
|
|
134
|
-
|
|
135
|
-
1. Finding #14 (Low) — **Fixed**
|
|
136
|
-
- `src/steps/build-test.tsx:107-111` — On last field (`isLast`), hint now shows `↓ / enter confirm` instead of silently omitting `↓`. On non-last fields, hint consolidated to `↓ next enter confirm`. Behavior unchanged; hint made consistent with actual key handling.
|
|
137
|
-
- `src/steps/product-context.tsx:253` — `nonGoals` hint updated from `"↑ prev enter confirm"` to `"↑ prev ↓ / enter confirm"`.
|
|
138
|
-
|
|
139
|
-
2. Finding #15 (Low) — **Fixed**
|
|
140
|
-
- `docs/PRD.md:29` — Updated F-001 bullet from "exits with helpful message" to "warns when cwd has files and continues — Step 6 overwrite confirmation handles conflicts".
|
|
141
|
-
- `README.md:4-9` — Replaced stale "exits" wording with accurate warn-and-continue description; overwrite list noted as Step 6 behavior.
|
|
142
|
-
- `docs/USER-STORIES.md:US-002` — Scenario updated from hard-exit / `process.exit(1)` to warn-and-continue / Step 6 overwrite confirmation flow.
|
|
143
|
-
|
|
144
|
-
### Deferred
|
|
145
|
-
None.
|
|
146
|
-
|
|
147
|
-
### Verification Notes
|
|
148
|
-
- `npm run typecheck`: pass
|
|
149
|
-
- `npm run build`: pass
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## Entry 2026-02-22
|
|
154
|
-
|
|
155
|
-
### Entry ID
|
|
156
|
-
- `CF-20260222-004`
|
|
157
|
-
|
|
158
|
-
### Source Review
|
|
159
|
-
- `CR-20260222-002` (CODE-REVIEW.md entry 2026-02-22)
|
|
160
|
-
|
|
161
|
-
### Fixes Applied
|
|
162
|
-
|
|
163
|
-
1. Finding #10 (Low) — **Fixed**
|
|
164
|
-
- `src/lib/types.ts:68` — Added `setupGit: boolean` to `WizardAnswers` so setup choice can be persisted.
|
|
165
|
-
- `src/app.tsx:51` — Added `setupGit: false` to `EMPTY_ANSWERS`.
|
|
166
|
-
- `src/app.tsx:89` — Updated setup summary to render `Git init: yes/no` based on `answers.setupGit` instead of always implying git initialization.
|
|
167
|
-
- `src/steps/powerline.tsx:48` — Updated `onComplete` payload to include `setupGit: git`, preserving the user’s git setup decision for final summaries.
|
|
168
|
-
|
|
169
|
-
### Deferred
|
|
170
|
-
None.
|
|
171
|
-
|
|
172
|
-
### Verification Notes
|
|
173
|
-
- `npm run typecheck`: pass
|
|
174
|
-
- `npm run build`: pass
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
## Entry 2026-02-22
|
|
178
|
-
|
|
179
|
-
### Entry ID
|
|
180
|
-
- `CF-20260222-005`
|
|
181
|
-
|
|
182
|
-
### Source Review
|
|
183
|
-
- `CR-20260222-003` (CODE-REVIEW.md entry 2026-02-22)
|
|
184
|
-
|
|
185
|
-
### Fixes Applied
|
|
186
|
-
|
|
187
|
-
1. Finding #11 (Low) — **Fixed**
|
|
188
|
-
- `src/steps/build-test.tsx:68` — Replaced `dimColor` with `color={C.overlay1}` to comply with the Catppuccin theme rule and keep all color rendering sourced from `src/theme.ts` constants.
|
|
189
|
-
|
|
190
|
-
### Deferred
|
|
191
|
-
None.
|
|
192
|
-
|
|
193
|
-
### Verification Notes
|
|
194
|
-
- `npm run typecheck`: pass
|
|
195
|
-
- `npm run build`: pass
|
|
196
|
-
- `rg "dimColor|color=\"(cyan|green|red|yellow|blue|magenta|white|black)\"" -n src`: no matches
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
## Entry 2026-02-22
|
|
200
|
-
|
|
201
|
-
### Entry ID
|
|
202
|
-
- `CF-20260222-006`
|
|
203
|
-
|
|
204
|
-
### Source Review
|
|
205
|
-
- `CR-20260222-004` (CODE-REVIEW.md entry 2026-02-22)
|
|
206
|
-
|
|
207
|
-
### Fixes Applied
|
|
208
|
-
|
|
209
|
-
1. Finding #12 (Medium) — **Fixed**
|
|
210
|
-
- `src/cli.tsx:11` — Replaced hard-stop behavior with warning-only messaging when directory is non-empty.
|
|
211
|
-
- `src/cli.tsx:13` — Added explicit note that existing files may be overwritten during Step 6, preserving the intended Generation conflict-confirmation flow.
|
|
212
|
-
- `src/cli.tsx:16` — Removed process exit path so wizard continues and existing overwrite warnings in Generation remain reachable.
|
|
213
|
-
|
|
214
|
-
2. Finding #13 (Low) — **Fixed**
|
|
215
|
-
- `src/cli.tsx:16` — Updated setup hint to include both valid invocations: `npx procedure-cli` and `npx @b3awesome/procedure`, avoiding single-command drift.
|
|
216
|
-
|
|
217
|
-
### Deferred
|
|
218
|
-
None.
|
|
219
|
-
|
|
220
|
-
### Verification Notes
|
|
221
|
-
- `npm run typecheck`: pass
|
|
222
|
-
- `npm run build`: pass
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
|
-
## Entry 2026-02-22
|
|
227
|
-
|
|
228
|
-
### Entry ID
|
|
229
|
-
- `CF-20260222-008`
|
|
230
|
-
|
|
231
|
-
### Source Review
|
|
232
|
-
- `CR-20260222-006` (CODE-REVIEW.md entry 2026-02-22)
|
|
233
|
-
|
|
234
|
-
### Fixes Applied
|
|
235
|
-
|
|
236
|
-
1. Finding #16 (Low) — **Fixed**
|
|
237
|
-
- `src/steps/project-info.tsx:51` — Added `isSelectStep` constant (`currentStep === "packageManager" || currentStep === "license"`).
|
|
238
|
-
- `src/steps/project-info.tsx:57` — Added `&& !isSelectStep` guard to `key.tab` branch so Tab never fires the text-field advance path on select steps.
|
|
239
|
-
- `src/steps/project-info.tsx:156` — Removed "Tab next" from the `packageManager` hint; now reads `"Shift+Tab prev ↑↓ move Enter select"`.
|
|
240
|
-
|
|
241
|
-
2. Finding #17 (Low) — **Fixed**
|
|
242
|
-
- `src/steps/product-context.tsx:86` — Added `isMultiSelectPhase` constant (`currentPhase === "techStack" || currentPhase === "coreFeatures"`).
|
|
243
|
-
- `src/steps/product-context.tsx:90` — Added `&& !isMultiSelectPhase` guard to `key.tab` branch so Tab never discards GutteredMultiSelect's internal selection state.
|
|
244
|
-
- `src/steps/product-context.tsx:221` — Removed "Tab next" from the `techStack` hint; now reads `"Shift+Tab prev ↑↓ move Space toggle Enter confirm"`.
|
|
245
|
-
- `src/steps/product-context.tsx:238` — Removed "Tab next" from the `coreFeatures` hint; now reads `"Shift+Tab prev ↑↓ move Space toggle Enter confirm"`.
|
|
246
|
-
|
|
247
|
-
### Deferred
|
|
248
|
-
None.
|
|
249
|
-
|
|
250
|
-
### Verification Notes
|
|
251
|
-
- `npm run typecheck`: pass
|
|
252
|
-
- `npm run build`: not run (typecheck sufficient per project standard for low-severity fixes)
|