codebase-snapshot 0.9.7 → 0.9.8

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
@@ -21,6 +21,23 @@ Two versions exist on the registry that are not releases, and both are deprecate
21
21
  Deleting them requires account-level rights that the release pipeline does not have, so they are
22
22
  deprecated with an explanatory message instead. `latest` has pointed at 0.9.0 since it existed.
23
23
 
24
+ ## 0.9.8
25
+
26
+ ### A wrapped menu no longer changes height under the cursor
27
+
28
+ Found while checking 0.9.7, by rendering it at 48 columns. The wrapping added there made a frame
29
+ the height it claimed to be, but the wrap point was measured from a line's leading whitespace — and
30
+ a selected row starts ` ❯ ` while an unselected one starts ` `. So the same hint wrapped one
31
+ word differently depending on whether the cursor was on it, and at some widths the whole menu grew
32
+ a row as you moved through it.
33
+
34
+ Continuation rows now line up with the *content*: the marker gutter is measured rather than guessed,
35
+ which keeps the wrap stable — and puts a wrapped hint under the label instead of two columns past
36
+ it, which reads better at any width.
37
+
38
+ `tests/wizard-frame.test.js` now also asserts that five repaints of the same menu are all the same
39
+ height, at 48 columns: the width where it used to flicker.
40
+
24
41
  ## 0.9.7
25
42
 
26
43
  ### The setup menu stops eating its own screen
package/README.md CHANGED
@@ -200,7 +200,7 @@ Everything an agent needs is available as data, and the tool can install its own
200
200
  ```bash
201
201
  npx codebase-snapshot describe --format json # contract: workflow, options, exit codes
202
202
  npx codebase-snapshot skill --install # into .claude/skills + .cursor/rules
203
- npx -y codebase-snapshot@0.9.7 mcp # or serve it over MCP
203
+ npx -y codebase-snapshot@0.9.8 mcp # or serve it over MCP
204
204
  ```
205
205
 
206
206
  An agent told only "use `npx codebase-snapshot`" can read the contract, follow its ordered
package/dist/bin.js CHANGED
@@ -4346,7 +4346,7 @@ function gitignorePath(cwd, filePath) {
4346
4346
 
4347
4347
  // src/version.ts
4348
4348
  var GENERATOR_NAME = "codebase-snapshot";
4349
- var GENERATOR_VERSION = "0.9.7";
4349
+ var GENERATOR_VERSION = "0.9.8";
4350
4350
  var LEGACY_GENERATOR_NAMES = ["@ankurhalder/codebase-snapshot"];
4351
4351
  function isOurGeneratorName(name) {
4352
4352
  if (typeof name !== "string") return false;
@@ -4531,13 +4531,15 @@ function displayWidth(line) {
4531
4531
  }
4532
4532
  return width;
4533
4533
  }
4534
+ var GUTTER_PATTERN = /^[ \t]*(?:[❯◆◻◼▏✖][ \t]+)*/;
4534
4535
  function wrapOneLine(line, limit) {
4535
4536
  if (displayWidth(line) <= limit) return [line];
4536
- const indent = /^[ \t]*/.exec(line)?.[0] ?? "";
4537
- const continuation = `${indent} `;
4537
+ const gutter = GUTTER_PATTERN.exec(line)?.[0] ?? "";
4538
+ const gutterWidth = displayWidth(gutter);
4539
+ const continuation = " ".repeat(gutterWidth);
4538
4540
  const rows = [];
4539
- let prefix = indent;
4540
- let rest = line.slice(indent.length).trimEnd();
4541
+ let prefix = gutter;
4542
+ let rest = line.slice(gutter.length).trimEnd();
4541
4543
  while (rest.length > 0) {
4542
4544
  const room = limit - displayWidth(prefix);
4543
4545
  if (room <= 0 || displayWidth(rest) <= room) {
@@ -5474,7 +5474,7 @@ function validateSnapshot(configInput) {
5474
5474
 
5475
5475
  // src/version.ts
5476
5476
  var GENERATOR_NAME = "codebase-snapshot";
5477
- var GENERATOR_VERSION = "0.9.7";
5477
+ var GENERATOR_VERSION = "0.9.8";
5478
5478
  var LEGACY_GENERATOR_NAMES = ["@ankurhalder/codebase-snapshot"];
5479
5479
  function isOurGeneratorName(name) {
5480
5480
  if (typeof name !== "string") return false;
@@ -6250,13 +6250,15 @@ function displayWidth(line) {
6250
6250
  }
6251
6251
  return width;
6252
6252
  }
6253
+ var GUTTER_PATTERN = /^[ \t]*(?:[❯◆◻◼▏✖][ \t]+)*/;
6253
6254
  function wrapOneLine(line, limit) {
6254
6255
  if (displayWidth(line) <= limit) return [line];
6255
- const indent = /^[ \t]*/.exec(line)?.[0] ?? "";
6256
- const continuation = `${indent} `;
6256
+ const gutter = GUTTER_PATTERN.exec(line)?.[0] ?? "";
6257
+ const gutterWidth = displayWidth(gutter);
6258
+ const continuation = " ".repeat(gutterWidth);
6257
6259
  const rows = [];
6258
- let prefix = indent;
6259
- let rest = line.slice(indent.length).trimEnd();
6260
+ let prefix = gutter;
6261
+ let rest = line.slice(gutter.length).trimEnd();
6260
6262
  while (rest.length > 0) {
6261
6263
  const room = limit - displayWidth(prefix);
6262
6264
  if (room <= 0 || displayWidth(rest) <= room) {
@@ -8322,5 +8324,5 @@ async function generateSnapshotAsync(configInput, options) {
8322
8324
  }
8323
8325
 
8324
8326
  export { ARTIFACT_NAMES, CHECK_INTERVAL_MS, DEFAULT_ANSWERS, DEFAULT_SECRET_PATTERNS, FAILURE_INTERVAL_MS, GENERATOR_NAME, GENERATOR_VERSION, LANGUAGE_PROFILES, MIN_MAX_PART_BYTES, PACKAGE_LATEST_URL, PRESETS, PromptBack, PromptCancelled, REQUEST_TIMEOUT_MS, SCHEMA_VERSION, anchorForPath, appendGitignoreEntries, assertReplaceable, assertUsableConfigInput, cacheDirectory, cacheFilePath, checkForUpdate, collectFiles, compareManifests, countInvalidUtf8Bytes, countLines, decodeText, defaultIO, defineConfig, describeManifestShapeProblem, detectLanguage, detectPreset, displayWidth, escapeControls, explainPath, fenceForContent, fenceForText, fetchLatestVersion, findConfigFile, firstRunMessage, formatNumber, formatUpdateNotice, generateProjectTree, generateSnapshot, generateSnapshotAsync, getPreset, gitignorePath, globToRegExp, hasPriorSnapshot, isBinaryBuffer, isBinaryExtension, isBinaryFile, isDiscoveryMode, isEffectivelyEmpty, isInteractive, isNewer, isResolvedConfig, isSensitivePath, listPresetNames, loadConfigFile, loadConfigFileDetailed, loadManifest, markResolvedConfig, matchRule, matchesExclude, normalizeResolvedConfig, parseByteSize, partitionFiles, planFirstRun, profileForPath, renderConfig, renderDiffText, renderExplainText, renumberParts, resolveConfig, resolveSafeOutputDirs, runInit, scanAndRedactSecrets, shouldCheck, stripJsonComments, summarizeJson, summarizeMarkdown, summarizeTypeScriptSource, summarizeWithProfile, supportsTypeScriptImports, truncatePreview, truncateToBytes, unknownPresetMessage, validateSnapshot, wrapLines };
8325
- //# sourceMappingURL=chunk-QABL7NRC.js.map
8326
- //# sourceMappingURL=chunk-QABL7NRC.js.map
8327
+ //# sourceMappingURL=chunk-C24OAT6T.js.map
8328
+ //# sourceMappingURL=chunk-C24OAT6T.js.map
@@ -1,4 +1,4 @@
1
- import { GENERATOR_VERSION, MIN_MAX_PART_BYTES, SCHEMA_VERSION, GENERATOR_NAME, ARTIFACT_NAMES, PRESETS, generateSnapshot, validateSnapshot, explainPath, renderExplainText, describeManifestShapeProblem, loadConfigFileDetailed, parseByteSize, resolveConfig } from './chunk-QABL7NRC.js';
1
+ import { GENERATOR_VERSION, MIN_MAX_PART_BYTES, SCHEMA_VERSION, GENERATOR_NAME, ARTIFACT_NAMES, PRESETS, generateSnapshot, validateSnapshot, explainPath, renderExplainText, describeManifestShapeProblem, loadConfigFileDetailed, parseByteSize, resolveConfig } from './chunk-C24OAT6T.js';
2
2
  import * as fs from 'fs';
3
3
  import * as path2 from 'path';
4
4
 
@@ -2599,5 +2599,5 @@ async function runStdioServer(options) {
2599
2599
  }
2600
2600
 
2601
2601
  export { COMMAND_OPTION_SCOPE, ERROR_CODES, LEGACY_PROTOCOL_VERSIONS, MAX_LINE_BYTES, METHOD, MODERN_PROTOCOL_VERSIONS, SERVER_INSTRUCTIONS, SKILL_NAME, SUPPORTED_PROTOCOL_VERSIONS, buildAgentContract, buildPrompts, buildResourceProvider, buildTools, classifyRequest, coerceNumericStrings, commandsForOption, createLineReader, createMcpServer, createServer, createSession, createWriter, inspectModernMeta, negotiateLegacyVersion, renderContractText, renderSkill, runStdioServer, validateArguments };
2602
- //# sourceMappingURL=chunk-DPK6ZTOG.js.map
2603
- //# sourceMappingURL=chunk-DPK6ZTOG.js.map
2602
+ //# sourceMappingURL=chunk-RQKXZOD7.js.map
2603
+ //# sourceMappingURL=chunk-RQKXZOD7.js.map
package/dist/cli.cjs CHANGED
@@ -4340,7 +4340,7 @@ function gitignorePath(cwd, filePath) {
4340
4340
 
4341
4341
  // src/version.ts
4342
4342
  var GENERATOR_NAME = "codebase-snapshot";
4343
- var GENERATOR_VERSION = "0.9.7";
4343
+ var GENERATOR_VERSION = "0.9.8";
4344
4344
  var LEGACY_GENERATOR_NAMES = ["@ankurhalder/codebase-snapshot"];
4345
4345
  function isOurGeneratorName(name) {
4346
4346
  if (typeof name !== "string") return false;
@@ -4518,13 +4518,15 @@ function displayWidth(line) {
4518
4518
  }
4519
4519
  return width;
4520
4520
  }
4521
+ var GUTTER_PATTERN = /^[ \t]*(?:[❯◆◻◼▏✖][ \t]+)*/;
4521
4522
  function wrapOneLine(line, limit) {
4522
4523
  if (displayWidth(line) <= limit) return [line];
4523
- const indent = /^[ \t]*/.exec(line)?.[0] ?? "";
4524
- const continuation = `${indent} `;
4524
+ const gutter = GUTTER_PATTERN.exec(line)?.[0] ?? "";
4525
+ const gutterWidth = displayWidth(gutter);
4526
+ const continuation = " ".repeat(gutterWidth);
4525
4527
  const rows = [];
4526
- let prefix = indent;
4527
- let rest = line.slice(indent.length).trimEnd();
4528
+ let prefix = gutter;
4529
+ let rest = line.slice(gutter.length).trimEnd();
4528
4530
  while (rest.length > 0) {
4529
4531
  const room = limit - displayWidth(prefix);
4530
4532
  if (room <= 0 || displayWidth(rest) <= room) {
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
- import { buildAgentContract, runStdioServer, COMMAND_OPTION_SCOPE, commandsForOption, SKILL_NAME, renderSkill, renderContractText } from './chunk-DPK6ZTOG.js';
2
- import { shouldCheck, checkForUpdate, GENERATOR_VERSION, cacheFilePath, formatUpdateNotice, loadConfigFileDetailed, resolveConfig, validateSnapshot, describeManifestShapeProblem, explainPath, compareManifests, loadManifest, renderDiffText, generateSnapshot, formatNumber, isDiscoveryMode, ARTIFACT_NAMES, getPreset, unknownPresetMessage, GENERATOR_NAME, runInit, PromptCancelled, planFirstRun, isEffectivelyEmpty, isInteractive, defaultIO, hasPriorSnapshot, DEFAULT_ANSWERS, findConfigFile, firstRunMessage, parseByteSize, gitignorePath, appendGitignoreEntries, escapeControls, MIN_MAX_PART_BYTES, renderExplainText } from './chunk-QABL7NRC.js';
1
+ import { buildAgentContract, runStdioServer, COMMAND_OPTION_SCOPE, commandsForOption, SKILL_NAME, renderSkill, renderContractText } from './chunk-RQKXZOD7.js';
2
+ import { shouldCheck, checkForUpdate, GENERATOR_VERSION, cacheFilePath, formatUpdateNotice, loadConfigFileDetailed, resolveConfig, validateSnapshot, describeManifestShapeProblem, explainPath, compareManifests, loadManifest, renderDiffText, generateSnapshot, formatNumber, isDiscoveryMode, ARTIFACT_NAMES, getPreset, unknownPresetMessage, GENERATOR_NAME, runInit, PromptCancelled, planFirstRun, isEffectivelyEmpty, isInteractive, defaultIO, hasPriorSnapshot, DEFAULT_ANSWERS, findConfigFile, firstRunMessage, parseByteSize, gitignorePath, appendGitignoreEntries, escapeControls, MIN_MAX_PART_BYTES, renderExplainText } from './chunk-C24OAT6T.js';
3
3
  import { spawnSync } from 'child_process';
4
4
  import * as fs from 'fs';
5
5
  import * as path2 from 'path';
package/dist/index.cjs CHANGED
@@ -5490,7 +5490,7 @@ function validateSnapshot(configInput) {
5490
5490
 
5491
5491
  // src/version.ts
5492
5492
  var GENERATOR_NAME = "codebase-snapshot";
5493
- var GENERATOR_VERSION = "0.9.7";
5493
+ var GENERATOR_VERSION = "0.9.8";
5494
5494
  var LEGACY_GENERATOR_NAMES = ["@ankurhalder/codebase-snapshot"];
5495
5495
  function isOurGeneratorName(name) {
5496
5496
  if (typeof name !== "string") return false;
@@ -6263,13 +6263,15 @@ function displayWidth(line) {
6263
6263
  }
6264
6264
  return width;
6265
6265
  }
6266
+ var GUTTER_PATTERN = /^[ \t]*(?:[❯◆◻◼▏✖][ \t]+)*/;
6266
6267
  function wrapOneLine(line, limit) {
6267
6268
  if (displayWidth(line) <= limit) return [line];
6268
- const indent = /^[ \t]*/.exec(line)?.[0] ?? "";
6269
- const continuation = `${indent} `;
6269
+ const gutter = GUTTER_PATTERN.exec(line)?.[0] ?? "";
6270
+ const gutterWidth = displayWidth(gutter);
6271
+ const continuation = " ".repeat(gutterWidth);
6270
6272
  const rows = [];
6271
- let prefix = indent;
6272
- let rest = line.slice(indent.length).trimEnd();
6273
+ let prefix = gutter;
6274
+ let rest = line.slice(gutter.length).trimEnd();
6273
6275
  while (rest.length > 0) {
6274
6276
  const room = limit - displayWidth(prefix);
6275
6277
  if (room <= 0 || displayWidth(rest) <= room) {
package/dist/index.d.cts CHANGED
@@ -422,7 +422,7 @@ declare function validateSnapshot(configInput: ResolvedSnapshotConfig | Snapshot
422
422
  * `package.json` carries the same version; `npm run verify` compares the two.
423
423
  */
424
424
  declare const GENERATOR_NAME = "codebase-snapshot";
425
- declare const GENERATOR_VERSION = "0.9.7";
425
+ declare const GENERATOR_VERSION = "0.9.8";
426
426
 
427
427
  /** The one endpoint this package will ever request. */
428
428
  declare const PACKAGE_LATEST_URL = "https://registry.npmjs.org/codebase-snapshot/latest";
package/dist/index.d.ts CHANGED
@@ -422,7 +422,7 @@ declare function validateSnapshot(configInput: ResolvedSnapshotConfig | Snapshot
422
422
  * `package.json` carries the same version; `npm run verify` compares the two.
423
423
  */
424
424
  declare const GENERATOR_NAME = "codebase-snapshot";
425
- declare const GENERATOR_VERSION = "0.9.7";
425
+ declare const GENERATOR_VERSION = "0.9.8";
426
426
 
427
427
  /** The one endpoint this package will ever request. */
428
428
  declare const PACKAGE_LATEST_URL = "https://registry.npmjs.org/codebase-snapshot/latest";
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { ARTIFACT_NAMES, CHECK_INTERVAL_MS, DEFAULT_ANSWERS, DEFAULT_SECRET_PATTERNS, FAILURE_INTERVAL_MS, GENERATOR_NAME, GENERATOR_VERSION, LANGUAGE_PROFILES, MIN_MAX_PART_BYTES, PACKAGE_LATEST_URL, PRESETS, PromptBack, PromptCancelled, REQUEST_TIMEOUT_MS, SCHEMA_VERSION, anchorForPath, assertReplaceable, assertUsableConfigInput, cacheDirectory, cacheFilePath, checkForUpdate, collectFiles, compareManifests, countInvalidUtf8Bytes, countLines, decodeText, defineConfig, detectLanguage, detectPreset, displayWidth, explainPath, fenceForContent, fenceForText, fetchLatestVersion, firstRunMessage, formatUpdateNotice, generateProjectTree, generateSnapshot, generateSnapshotAsync, getPreset, globToRegExp, hasPriorSnapshot, isBinaryBuffer, isBinaryExtension, isBinaryFile, isEffectivelyEmpty, isInteractive, isNewer, isResolvedConfig, isSensitivePath, listPresetNames, loadConfigFile, loadConfigFileDetailed, loadManifest, markResolvedConfig, matchRule, matchesExclude, normalizeResolvedConfig, parseByteSize, partitionFiles, planFirstRun, profileForPath, renderConfig, renderDiffText, renderExplainText, renumberParts, resolveConfig, resolveSafeOutputDirs, runInit, scanAndRedactSecrets, shouldCheck, stripJsonComments, summarizeJson, summarizeMarkdown, summarizeTypeScriptSource, summarizeWithProfile, supportsTypeScriptImports, truncatePreview, truncateToBytes, validateSnapshot, wrapLines } from './chunk-QABL7NRC.js';
1
+ export { ARTIFACT_NAMES, CHECK_INTERVAL_MS, DEFAULT_ANSWERS, DEFAULT_SECRET_PATTERNS, FAILURE_INTERVAL_MS, GENERATOR_NAME, GENERATOR_VERSION, LANGUAGE_PROFILES, MIN_MAX_PART_BYTES, PACKAGE_LATEST_URL, PRESETS, PromptBack, PromptCancelled, REQUEST_TIMEOUT_MS, SCHEMA_VERSION, anchorForPath, assertReplaceable, assertUsableConfigInput, cacheDirectory, cacheFilePath, checkForUpdate, collectFiles, compareManifests, countInvalidUtf8Bytes, countLines, decodeText, defineConfig, detectLanguage, detectPreset, displayWidth, explainPath, fenceForContent, fenceForText, fetchLatestVersion, firstRunMessage, formatUpdateNotice, generateProjectTree, generateSnapshot, generateSnapshotAsync, getPreset, globToRegExp, hasPriorSnapshot, isBinaryBuffer, isBinaryExtension, isBinaryFile, isEffectivelyEmpty, isInteractive, isNewer, isResolvedConfig, isSensitivePath, listPresetNames, loadConfigFile, loadConfigFileDetailed, loadManifest, markResolvedConfig, matchRule, matchesExclude, normalizeResolvedConfig, parseByteSize, partitionFiles, planFirstRun, profileForPath, renderConfig, renderDiffText, renderExplainText, renumberParts, resolveConfig, resolveSafeOutputDirs, runInit, scanAndRedactSecrets, shouldCheck, stripJsonComments, summarizeJson, summarizeMarkdown, summarizeTypeScriptSource, summarizeWithProfile, supportsTypeScriptImports, truncatePreview, truncateToBytes, validateSnapshot, wrapLines } from './chunk-C24OAT6T.js';
2
2
  //# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
package/dist/mcp.cjs CHANGED
@@ -6128,7 +6128,7 @@ function validateSnapshot(configInput) {
6128
6128
 
6129
6129
  // src/version.ts
6130
6130
  var GENERATOR_NAME = "codebase-snapshot";
6131
- var GENERATOR_VERSION = "0.9.7";
6131
+ var GENERATOR_VERSION = "0.9.8";
6132
6132
  var LEGACY_GENERATOR_NAMES = ["@ankurhalder/codebase-snapshot"];
6133
6133
  function isOurGeneratorName(name) {
6134
6134
  if (typeof name !== "string") return false;
package/dist/mcp.js CHANGED
@@ -1,4 +1,4 @@
1
- export { ERROR_CODES, LEGACY_PROTOCOL_VERSIONS, MAX_LINE_BYTES, METHOD, MODERN_PROTOCOL_VERSIONS, SERVER_INSTRUCTIONS, SUPPORTED_PROTOCOL_VERSIONS, buildPrompts, buildResourceProvider, buildTools, classifyRequest, coerceNumericStrings, createLineReader, createMcpServer, createServer, createSession, createWriter, inspectModernMeta, negotiateLegacyVersion, runStdioServer, validateArguments } from './chunk-DPK6ZTOG.js';
2
- import './chunk-QABL7NRC.js';
1
+ export { ERROR_CODES, LEGACY_PROTOCOL_VERSIONS, MAX_LINE_BYTES, METHOD, MODERN_PROTOCOL_VERSIONS, SERVER_INSTRUCTIONS, SUPPORTED_PROTOCOL_VERSIONS, buildPrompts, buildResourceProvider, buildTools, classifyRequest, coerceNumericStrings, createLineReader, createMcpServer, createServer, createSession, createWriter, inspectModernMeta, negotiateLegacyVersion, runStdioServer, validateArguments } from './chunk-RQKXZOD7.js';
2
+ import './chunk-C24OAT6T.js';
3
3
  //# sourceMappingURL=mcp.js.map
4
4
  //# sourceMappingURL=mcp.js.map
package/docs/cli.md CHANGED
@@ -174,7 +174,7 @@ The whole first run in one command, with defaults and no prompts. This is the sa
174
174
  🚀 Setup for: /path/to/repo
175
175
  ✅ Created snapshot.config.ts (preset: nextjs)
176
176
  Added npm scripts: snapshot, snapshot:validate
177
- Added devDependency: codebase-snapshot ^0.9.7
177
+ Added devDependency: codebase-snapshot ^0.9.8
178
178
  Added to .gitignore: snapshot/, snapshot.tmp/
179
179
  ⏳ Installing dependencies…
180
180
  ✅ Installed dependencies (npm install, 2.1s)
@@ -211,7 +211,7 @@ It also has three side effects on files you own, and it says so when it does the
211
211
  ```
212
212
  ✅ Created snapshot.config.ts (preset: node-lib)
213
213
  Added npm scripts: snapshot, snapshot:validate
214
- Added devDependency: codebase-snapshot ^0.9.7
214
+ Added devDependency: codebase-snapshot ^0.9.8
215
215
  Added to .gitignore: snapshot/, snapshot.tmp/
216
216
  ```
217
217
 
package/docs/mcp.md CHANGED
@@ -10,7 +10,7 @@ walk — that the client sees.
10
10
  ## Start it
11
11
 
12
12
  ```bash
13
- npx -y codebase-snapshot@0.9.7 mcp
13
+ npx -y codebase-snapshot@0.9.8 mcp
14
14
  ```
15
15
 
16
16
  The server serves the directory it was started in. `--cwd <path>` points it elsewhere, and that
@@ -25,7 +25,7 @@ Claude Desktop and Cursor:
25
25
  "mcpServers": {
26
26
  "codebase-snapshot": {
27
27
  "command": "npx",
28
- "args": ["-y", "codebase-snapshot@0.9.7", "mcp", "--cwd", "/absolute/path/to/repo"]
28
+ "args": ["-y", "codebase-snapshot@0.9.8", "mcp", "--cwd", "/absolute/path/to/repo"]
29
29
  }
30
30
  }
31
31
  }
@@ -34,7 +34,7 @@ Claude Desktop and Cursor:
34
34
  Claude Code registers the same thing from a shell:
35
35
 
36
36
  ```bash
37
- claude mcp add codebase-snapshot -- npx -y codebase-snapshot@0.9.7 mcp --cwd /absolute/path/to/repo
37
+ claude mcp add codebase-snapshot -- npx -y codebase-snapshot@0.9.8 mcp --cwd /absolute/path/to/repo
38
38
  ```
39
39
 
40
40
  On Windows, wrap the command as `cmd /c npx` with the same arguments — `npx` is a `.cmd` shim
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codebase-snapshot",
3
- "version": "0.9.7",
3
+ "version": "0.9.8",
4
4
  "description": "Pack a codebase for an LLM into budgeted Markdown parts, with a manifest of every file and skip, and validate to prove the snapshot is current.",
5
5
  "keywords": [
6
6
  "codebase",