viepilot 2.45.2 → 2.45.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/CHANGELOG.md CHANGED
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.45.4] - 2026-04-27
11
+
12
+ ### Fixed
13
+ - **BUG-025**: brownfield crystallize initial mode-selection prompt ("Proceed / Run brainstorm
14
+ first / Cancel") was rendered as plain-text numbered list on Claude Code terminal because
15
+ `workflows/crystallize.md` Step 0-B had no AUQ spec for the auto-detected entry gate.
16
+ Fix: added adapter-aware `AskUserQuestion` block with 3 labelled options before scanner
17
+ execution; text fallback preserved for Cursor/Codex/Antigravity (BUG-025)
18
+
19
+ ## [2.45.3] - 2026-04-25
20
+
21
+ ### Fixed
22
+ - **BUG-024**: `viepilot-install.cjs` hard-coded `libFiles` list caused `viepilot-persona.cjs`,
23
+ `skill-registry.cjs`, `skill-installer.cjs`, and `lib/adapters/`, `lib/hooks/`,
24
+ `lib/domain-packs/` subdirectories to be absent from all installed instances
25
+ (`~/.claude/viepilot/lib/`, `~/.cursor/viepilot/lib/`, Windows equivalents).
26
+ Fix: replaced explicit list with dynamic `lib/` directory scan — all files and
27
+ subdirectories now copied automatically. Affected: `persona auto-switch/context`,
28
+ `scan-skills`, `install-skill`, `uninstall-skill`, adapter detection (BUG-024)
29
+
10
30
  ## [2.45.2] - 2026-04-25
11
31
 
12
32
  ### Enhanced
@@ -132,7 +132,6 @@ function buildInstallPlan(packageRoot, envSource = process.env, opts = {}) {
132
132
  });
133
133
 
134
134
  const binFiles = ['vp-tools.cjs', 'viepilot.cjs'];
135
- const libFiles = ['cli-shared.cjs', 'viepilot-info.cjs', 'viepilot-update.cjs', 'viepilot-install.cjs', 'viepilot-config.cjs'];
136
135
  const uiRoot = path.join(root, 'ui-components');
137
136
 
138
137
  // One install loop per selected adapter (replaces cursor block + claude-code if-block).
@@ -181,8 +180,11 @@ function buildInstallPlan(packageRoot, envSource = process.env, opts = {}) {
181
180
  for (const f of binFiles) {
182
181
  steps.push({ kind: 'copy_file', from: path.join(root, 'bin', f), to: path.join(vpDir, 'bin', f) });
183
182
  }
184
- for (const f of libFiles) {
185
- steps.push({ kind: 'copy_file', from: path.join(root, 'lib', f), to: path.join(vpDir, 'lib', f) });
183
+ // BUG-024: dynamic lib/ scan — copies ALL files + subdirs (adapters/, hooks/, domain-packs/, etc.)
184
+ for (const ent of listDirEntries(root, 'lib')) {
185
+ const src = path.join(root, 'lib', ent.name);
186
+ const dest = path.join(vpDir, 'lib', ent.name);
187
+ steps.push(ent.isDirectory() ? { kind: 'copy_dir', from: src, to: dest } : { kind: 'copy_file', from: src, to: dest });
186
188
  }
187
189
  if (fs.existsSync(uiRoot)) {
188
190
  for (const ent of listDirEntries(root, 'ui-components')) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "viepilot",
3
- "version": "2.45.2",
3
+ "version": "2.45.4",
4
4
  "description": "**Autonomous Vibe Coding Framework / Bộ khung phát triển tự động có kiểm soát**",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -238,6 +238,36 @@ Store all metadata for template generation.
238
238
  >
239
239
  > Ask: "Continue? (y/n)" — abort if n.
240
240
 
241
+ **Initial brownfield entry gate (BUG-025) — auto-detected only (no explicit `--brownfield` flag):**
242
+
243
+ When brownfield was triggered automatically (not via `--brownfield`), present the mode-selection choice **before** running the scanner:
244
+
245
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
246
+ > - question: "No brainstorm session found — this looks like an existing project. How would you like to proceed?"
247
+ > - header: "Brownfield Mode Detected"
248
+ > - options:
249
+ > - label: "Proceed with Brownfield Mode (Recommended)"
250
+ > description: "Scan codebase across 12 signal categories → auto-generate .viepilot/ artifacts"
251
+ > - label: "Run brainstorm first → /vp-brainstorm"
252
+ > description: "Capture vision/scope manually, then run /vp-crystallize to convert"
253
+ > - label: "Cancel"
254
+ > description: "Exit without changes"
255
+ > - multiSelect: false
256
+ >
257
+ > **Cursor / Codex / Antigravity / other:** use text menu below:
258
+ > ```
259
+ > No brainstorm session found — existing project detected.
260
+ > 1. Proceed with Brownfield Mode — scan across 12 signal categories → generate .viepilot/ artifacts
261
+ > 2. Run brainstorm first — /vp-brainstorm to capture vision/scope, then /vp-crystallize
262
+ > 3. Cancel — exit without changes
263
+ > Which would you like? (1 / 2 / 3)
264
+ > ```
265
+ >
266
+ > **On selection:**
267
+ > - "Proceed with Brownfield Mode" / "1" → continue to scanner below
268
+ > - "Run brainstorm first" / "2" → print: "Run `/vp-brainstorm` to capture project vision, then `/vp-crystallize` to generate .viepilot/ artifacts." and exit
269
+ > - "Cancel" / "3" → exit without changes
270
+
241
271
  **When brownfield mode is active:**
242
272
  1. Run the full 12-category codebase scanner (Signal Categories 1–12 below).
243
273
  2. Produce a structured **Scan Report** (see schema at end of this step).