sigmap 2.0.0-beta.2 → 2.0.0-beta.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
@@ -6,6 +6,29 @@ Format: [Semantic Versioning](https://semver.org/)
6
6
 
7
7
  ---
8
8
 
9
+ ## [2.0.0-beta.4] — 2026-04-03
10
+
11
+ ### Changed
12
+ - Prerelease version bumped from `2.0.0-beta.3` to `2.0.0-beta.4` across CLI, MCP server info, root package metadata, and VS Code extension metadata.
13
+
14
+ ### Validation gate
15
+ - 21/21 extractor tests passed
16
+ - 17/17 integration suites passed (including v2plus 3/3)
17
+
18
+ ---
19
+
20
+ ## [2.0.0-beta.3] — 2026-04-03
21
+
22
+ ### Changed
23
+ - Prerelease version bumped from `2.0.0-beta.2` to `2.0.0-beta.3` across CLI, MCP server info, root package metadata, and VS Code extension metadata.
24
+ - Version drift in [gen-context.js](gen-context.js) was corrected so runtime reporting matches published package metadata.
25
+
26
+ ### Validation gate
27
+ - `node scripts/bundle.js`
28
+ - `node test/run.js`
29
+ - `node test/integration/all.js`
30
+ - `node gen-context.js --report`
31
+
9
32
  ## [2.0.0-beta.2] — 2026-04-03
10
33
 
11
34
  ### Fixed
package/gen-context.js CHANGED
@@ -3520,7 +3520,7 @@ const path = require('path');
3520
3520
  const os = require('os');
3521
3521
  const { execSync } = require('child_process');
3522
3522
 
3523
- const VERSION = '2.0.0-beta.2';
3523
+ const VERSION = '2.0.0-beta.4';
3524
3524
  const MARKER = '\n\n## Auto-generated signatures\n<!-- Updated by gen-context.js -->\n';
3525
3525
 
3526
3526
  function requireSourceOrBundled(key) {
@@ -3907,8 +3907,10 @@ function buildChangesSection(cwd, config, fileEntries) {
3907
3907
  continue;
3908
3908
  }
3909
3909
  const plus = [...diff.matchAll(/^\+.*(?:def\s+|function\s+|class\s+|func\s+)(\w+)/gm)].map((m) => `+${m[1]}`);
3910
- const mod = [...diff.matchAll(/^-.*(?:def\s+|function\s+|class\s+|func\s+)(\w+)/gm)].map((m) => `~${m[1]}`);
3911
- const delta = [...new Set([...plus, ...mod])].slice(0, 4).join(' ');
3910
+ const modDef = [...diff.matchAll(/^-.*(?:def\s+|function\s+|class\s+|func\s+)(\w+)/gm)].map((m) => `~${m[1]}`);
3911
+ // Also extract function names from @@ hunk headers (catches body-only changes like added comments/lines)
3912
+ const modCtx = [...diff.matchAll(/^@@[^@]*@@\s+(?:(?:async|export|public|private|static)\s+)*(?:def|function|class|func)\s+(\w+)/gm)].map((m) => `~${m[1]}`);
3913
+ const delta = [...new Set([...plus, ...modDef, ...modCtx])].slice(0, 4).join(' ');
3912
3914
  if (delta) {
3913
3915
  hasDelta = true;
3914
3916
  lines.push(`${rel.padEnd(45)} ${delta}`);
@@ -3933,9 +3935,17 @@ function resolveImpactRadius(fileEntries, cwd, config) {
3933
3935
 
3934
3936
  for (const entry of fileEntries) {
3935
3937
  const importer = path.relative(cwd, entry.filePath);
3938
+ const importerTop = importer.split('/')[0];
3936
3939
  for (const dep of (entry.deps || [])) {
3937
3940
  const depNorm = dep.replace(/\\/g, '/').replace(/^\.\//, '').replace(/\.[^.]+$/, '');
3938
- const matches = keys.filter((k) => k.norm.endsWith(depNorm) || k.base === depNorm || k.norm === depNorm);
3941
+ const matches = keys.filter((k) => {
3942
+ if (k.norm === depNorm) return true;
3943
+ // Path-segment or base-only match: both require same top-level directory
3944
+ // to prevent cross-subsystem matches (e.g. 'app' dep in server/ matching desktop/gui/app.py)
3945
+ const matchTop = k.rel.split('/')[0];
3946
+ if (k.norm.endsWith('/' + depNorm) || k.base === depNorm) return matchTop === importerTop;
3947
+ return false;
3948
+ });
3939
3949
  for (const m of matches) {
3940
3950
  if (!map.has(m.rel)) map.set(m.rel, []);
3941
3951
  map.get(m.rel).push(importer);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sigmap",
3
- "version": "2.0.0-beta.2",
3
+ "version": "2.0.0-beta.4",
4
4
  "description": "Zero-dependency AI context engine — 97% token reduction. No npm install. Runs on Node 18+.",
5
5
  "main": "gen-context.js",
6
6
  "bin": {
package/src/mcp/server.js CHANGED
@@ -18,7 +18,7 @@ const { readContext, searchSignatures, getMap, createCheckpoint, getRouting, exp
18
18
 
19
19
  const SERVER_INFO = {
20
20
  name: 'sigmap',
21
- version: '2.0.0-beta.2',
21
+ version: '2.0.0-beta.4',
22
22
  description: 'SigMap MCP server — code signatures on demand',
23
23
  };
24
24