@vibecompass/vibecompass 0.10.3 → 0.10.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
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.10.4 - 2026-06-19
4
+
5
+ - Add `vibecompass --version`, `vibecompass -v`, and `vibecompass version` CLI support.
6
+ - Make bare `vibecompass init` errors point users to `vibecompass init --guided`.
7
+ - Clarify guided first-session prompts so lane IDs are presented as short kebab-case slugs and reserved yes/no answers explain that pressing Enter accepts the suggested slug.
8
+ - Propagate declared project repo ids into the first lane opened by guided init.
9
+
3
10
  ## 0.10.3 - 2026-06-19
4
11
 
5
12
  - Let `start-session` create a missing `## Current session` summary block in adopted existing `CLAUDE.md` files instead of failing after guided init.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibecompass/vibecompass",
3
- "version": "0.10.3",
3
+ "version": "0.10.4",
4
4
  "description": "Local-first project-memory core for VibeCompass",
5
5
  "type": "module",
6
6
  "bin": {
package/src/cli.js CHANGED
@@ -10,6 +10,7 @@ import { syncAgentInstructionFiles } from './generators/agent-files/index.js';
10
10
  import { getProjectStatus, renderStatusText, toStatusJson } from './status.js';
11
11
  import { refreshWorkflow } from './refresh-workflow.js';
12
12
  import { inspectProjectCompatibility, formatCompatibilityWarnings } from './compatibility.js';
13
+ import { PACKAGE_VERSION } from './version.js';
13
14
  import {
14
15
  applyPullExport,
15
16
  pullExportProjectMemory,
@@ -25,6 +26,11 @@ export async function runCli(argv, io = createDefaultIo(), runtime = {}) {
25
26
  return 0;
26
27
  }
27
28
 
29
+ if (parsed.command === 'version') {
30
+ io.stdout.write(`${PACKAGE_VERSION}\n`);
31
+ return 0;
32
+ }
33
+
28
34
  if (parsed.command === 'init') {
29
35
  const initPlan = await resolveInitCliOptions(parsed.options, {
30
36
  cwd: runtime.cwd,
@@ -99,6 +105,7 @@ export async function runCli(argv, io = createDefaultIo(), runtime = {}) {
99
105
  toolingRootDir: initPlan.initOptions.toolingRootDir,
100
106
  sessionId: initPlan.sessionPlan.sessionId,
101
107
  workingOn: initPlan.sessionPlan.workingOn,
108
+ repos: initPlan.sessionPlan.repos,
102
109
  ...(runtime.cwd ? { cwd: runtime.cwd } : {}),
103
110
  });
104
111
  io.stdout.write(`Started session ${sessionResult.sessionDate}-${sessionResult.sessionNumber}\n`);
@@ -425,6 +432,10 @@ export function parseCliArgs(argv) {
425
432
  return { command: 'help' };
426
433
  }
427
434
 
435
+ if (command === 'version' || command === '--version' || command === '-v') {
436
+ return { command: 'version' };
437
+ }
438
+
428
439
  if (command !== 'init') {
429
440
  if (command === 'start-session') {
430
441
  return parseStartSessionArgs(rest);
@@ -1495,6 +1506,8 @@ function splitAssignment(value, flagName) {
1495
1506
  function usageText() {
1496
1507
  return [
1497
1508
  'Usage:',
1509
+ ' vibecompass --version',
1510
+ ' vibecompass version',
1498
1511
  ' vibecompass init --name <project-name> --mode <local-only|local-primary|hosted-only> --repo <id=remote> [options]',
1499
1512
  ' vibecompass connect-hosted [options]',
1500
1513
  ' vibecompass sync-target [<name>] [options]',
package/src/init.js CHANGED
@@ -231,7 +231,9 @@ function normalizeInitOptions(options) {
231
231
  : cwd;
232
232
 
233
233
  if (typeof preparedOptions.name !== 'string' || preparedOptions.name.trim() === '') {
234
- throw new Error('init requires a non-empty project name.');
234
+ throw new Error(
235
+ 'init requires a non-empty project name. Run guided setup with `vibecompass init --guided`, or provide `--name <project-name>`.',
236
+ );
235
237
  }
236
238
 
237
239
  if (typeof preparedOptions.mode !== 'string' || !VALID_MODES.has(preparedOptions.mode)) {
package/src/setup.js CHANGED
@@ -104,6 +104,7 @@ export async function resolveInitCliOptions(options, environment = {}) {
104
104
  ? {
105
105
  sessionId: resolved.sessionId,
106
106
  workingOn: resolved.sessionWorkingOn,
107
+ repos: resolved.repos.map((repo) => repo.id),
107
108
  }
108
109
  : null,
109
110
  };
@@ -608,14 +609,15 @@ async function completeGuidedInitOptions(options, environment) {
608
609
  }
609
610
 
610
611
  if (!resolved.sessionWorkingOn) {
611
- resolved.sessionWorkingOn = await askInput(prompter, 'What are you working on?');
612
+ resolved.sessionWorkingOn = await askInput(prompter, 'Work summary for this first session');
612
613
  }
613
614
 
614
615
  if (!resolved.sessionId) {
615
- resolved.sessionId = await askInput(prompter, 'Session lane id', {
616
- defaultValue: suggestLaneId(resolved.sessionWorkingOn),
616
+ const defaultSessionId = suggestLaneId(resolved.sessionWorkingOn);
617
+ resolved.sessionId = await askInput(prompter, 'Session lane id, short kebab-case slug', {
618
+ defaultValue: defaultSessionId,
617
619
  validate(value) {
618
- return validateLaneIdForPrompt(value);
620
+ return validateLaneIdForPrompt(value, defaultSessionId);
619
621
  },
620
622
  });
621
623
  }
@@ -1245,7 +1247,7 @@ function suggestLaneId(value) {
1245
1247
  return slug.length >= 3 ? slug : 'builder-session';
1246
1248
  }
1247
1249
 
1248
- function validateLaneIdForPrompt(value) {
1250
+ function validateLaneIdForPrompt(value, defaultValue) {
1249
1251
  if (!/^[a-z0-9][a-z0-9-]{1,62}[a-z0-9]$/.test(value)) {
1250
1252
  return 'Lane id must be 3-64 lowercase letters, numbers, or hyphens, and must start and end with a letter or number.';
1251
1253
  }
@@ -1268,7 +1270,7 @@ function validateLaneIdForPrompt(value) {
1268
1270
  'wip',
1269
1271
  'yes',
1270
1272
  ].includes(value)) {
1271
- return `Lane id "${value}" is reserved.`;
1273
+ return `Lane id "${value}" is reserved. Enter a short kebab-case lane id, or press Enter to use "${defaultValue}".`;
1272
1274
  }
1273
1275
 
1274
1276
  return null;