viepilot 3.12.1 → 3.12.2

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
@@ -9,6 +9,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ---
11
11
 
12
+ ## [3.12.2] - 2026-05-30
13
+ ### Fixed
14
+ - BUG-032: `npx viepilot install` silently missed new skills (e.g. `vp-qa`) when the globally-installed package was behind npm latest (2.50.1 vs 3.12.1). `installCommand` now prints a non-blocking version-mismatch warning with the upgrade command when installed < npm latest.
15
+ - BUG-032: `applyInstallPlan` now logs `new: {path}` when a `copy_dir` step creates a directory for the first time, making newly-added skills visible in the install output instead of appearing silently.
16
+
17
+ ---
18
+
12
19
  ## [3.12.1] - 2026-05-26
13
20
  ### Fixed
14
21
  - `bin/vp-tools.cjs` `check-update --silent`: OS session guard file (`/tmp/vp-update-check-{today}.done`) — subsequent skill invocations skip npm call entirely, exit with 0 stdout (0 tokens) (DEBT-003)
package/bin/viepilot.cjs CHANGED
@@ -15,6 +15,12 @@ const { buildInstallPlan, applyInstallPlan, resolveViepilotPackageRoot } = requi
15
15
  'viepilot-install.cjs',
16
16
  ));
17
17
  const { adapters: adapterMap } = require(path.join(__dirname, '..', 'lib', 'adapters', 'index.cjs'));
18
+ const { readInstalledVersion, fetchLatestNpmVersion } = require(path.join(
19
+ __dirname, '..', 'lib', 'viepilot-info.cjs'
20
+ ));
21
+ const { compareSemver } = require(path.join(
22
+ __dirname, '..', 'lib', 'viepilot-update.cjs'
23
+ ));
18
24
 
19
25
  // UI target list — keep cursor-agent and cursor-ide as distinct choices for users.
20
26
  const LANGUAGES = [
@@ -362,6 +368,30 @@ async function installCommand(rawArgs) {
362
368
 
363
369
  console.log(`\nSelected targets: ${selectedTargets.join(', ')}`);
364
370
  console.log(`Communication language: ${communicationLang}`);
371
+
372
+ // BUG-032: warn when installed version is behind npm latest — new skills may be missing
373
+ try {
374
+ const pkgRoot = resolveViepilotPackageRoot(__dirname);
375
+ const installed = pkgRoot ? readInstalledVersion(pkgRoot) : null;
376
+ const latest = fetchLatestNpmVersion();
377
+ if (installed && latest.ok && compareSemver(installed, latest.version) < 0) {
378
+ const line1 = `⚠ viepilot@${installed} is behind npm@${latest.version}`;
379
+ const line2 = ' New skills in the latest version may not be installed.';
380
+ const line3 = ' Upgrade first:';
381
+ const line4 = ' npm i -g viepilot && vp-tools install';
382
+ const W = 65;
383
+ const bar = '─'.repeat(W);
384
+ console.log(`\n┌${bar}┐`);
385
+ console.log(`│ ${line1.padEnd(W - 1)}│`);
386
+ console.log(`│ ${line2.padEnd(W - 1)}│`);
387
+ console.log(`│ ${line3.padEnd(W - 1)}│`);
388
+ console.log(`│ ${line4.padEnd(W - 1)}│`);
389
+ console.log(`└${bar}┘`);
390
+ }
391
+ } catch (_) {
392
+ // non-blocking — network or fs errors must not abort install
393
+ }
394
+
365
395
  const run = runInstallViaNode(selectedTargets, options.dryRun, communicationLang);
366
396
  const results = selectedTargets.map((target) => ({
367
397
  ok: run.ok,
@@ -465,7 +465,9 @@ function applyInstallPlan(plan, options = {}) {
465
465
  if (!fs.existsSync(step.from)) {
466
466
  throw new Error(`Missing source dir: ${step.from}`);
467
467
  }
468
+ const isNewDir = !fs.existsSync(step.to);
468
469
  copyDirRecursive(step.from, step.to);
470
+ if (isNewDir) logs.push(`new: ${step.to}`);
469
471
  }
470
472
  break;
471
473
  case 'symlink_dir':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "viepilot",
3
- "version": "3.12.1",
3
+ "version": "3.12.2",
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": {