39 Commits

Author SHA1 Message Date
Giancarlo Erra 62fcf493bd chore: release v1.8.13 2026-05-27 16:32:41 +01:00
Giancarlo Erra bca259805e chore: release v1.8.12 2026-05-22 18:05:32 +01:00
Giancarlo Erra c126c525fa chore: release v1.8.11 2026-05-12 14:39:43 +01:00
Shai Tourchin c23120e6c0 fix: refuse to start on Node 26+ until qdrant-js gains undici 7 compat
Under Node 26+, the very first qdrant request crashes with
`UND_ERR_INVALID_ARG: invalid onError method`. Root cause is a version
mismatch: @qdrant/js-client-rest constructs an undici.Agent from its
pinned undici ^6 and passes it as the dispatcher to Node's built-in
fetch(), which under Node 26 uses a newer undici with stricter
dispatcher-hook validation.

The bug surfaces on the first real codebase_search / codebase_index
call — the MCP handshake succeeds, then everything fails. The error
message gives no hint about Node version, so users on Node 26+ lose
significant time debugging.

This change:
- Adds a runtime pre-flight check at index.ts entry that prints a
  clear actionable error and exits 1. Per ESM the imports below
  evaluate first, but qdrant-js's module init is side-effect-light,
  so exiting at the first top-level statement is enough.
- Tightens engines.node to `>=18.0.0 <26.0.0` so npm/npx warns at
  install time.

Both can be reverted once one of qdrant/qdrant-js#123 (undici major
upgrade) or qdrant/qdrant-js#128 (inject fetch) lands.

Refs: qdrant/qdrant-js#134

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 10:14:38 +03:00
Giancarlo Erra c842ff61f5 chore: release v1.8.10 2026-05-08 11:01:04 +01:00
Giancarlo Erra aedfa8543d chore: release v1.8.9 2026-05-07 21:53:41 +01:00
Giancarlo Erra f014c05e03 chore: release v1.8.8 2026-05-06 15:16:55 +01:00
Giancarlo Erra 9a80a80654 chore: release v1.8.7 2026-05-06 10:29:05 +01:00
Giancarlo Erra bde9eb7efb chore: release v1.8.6 2026-05-05 11:44:01 +01:00
Giancarlo Erra 9431e144d2 chore: release v1.8.5 2026-05-05 02:06:44 +01:00
Giancarlo Erra ccebb8d980 chore: release v1.8.4 2026-05-04 19:16:25 +01:00
Giancarlo Erra 852ae5d6d5 chore: release v1.8.3 2026-05-04 12:48:54 +01:00
Giancarlo Erra f991c33c3c chore: release v1.8.2 2026-05-04 10:47:13 +01:00
Giancarlo Erra aefc8ae1bc chore: release v1.8.1 2026-05-04 02:09:44 +01:00
Giancarlo Erra fa1755dccc chore: release v1.8.0 2026-05-04 01:00:16 +01:00
Giancarlo Erra 2bf07d8798 chore: release v1.7.2 2026-04-28 14:02:02 +01:00
Giancarlo Erra 9e4fcf5192 chore: release v1.7.1 2026-04-28 00:35:19 +01:00
Giancarlo Erra 0e86cd0731 chore: release v1.7.0 2026-04-27 23:46:19 +01:00
Giancarlo Erra b0356a517f chore: add release-it as dev dependency 2026-04-27 22:32:06 +01:00
Giancarlo Erra 50d8853ea6 feat(visualize): add interactive HTML graph explorer; British-English doc sweep
Interactive Viewer (primary)
────────────────────────────
codebase_graph_visualize now accepts mode="mermaid" (default, existing
behaviour — text Mermaid diagram) or mode="interactive". Interactive
mode generates a self-contained HTML page and opens it in the user's
default browser via the `open` npm package (cross-platform: macOS,
Linux, Windows). Cytoscape.js 3.30.2 + Dagre 0.8.5 + cytoscape-dagre
2.5.0 are vendored under src/assets/ — no CDN, works offline.

Features:
- File view — every source file as a node, imports as edges, language
  colour-coded, circular deps highlighted in red.
- Symbol view toggle — functions/classes/methods as nodes with call
  edges (confidence-styled). Embedded when the symbol graph fits under
  20k symbols / 60k call edges; above that threshold the file view
  remains usable and a banner directs users to codebase_impact /
  codebase_symbols for symbol-level queries.
- Sidebar on node click — imports, dependents, per-file symbol list
  (first 30 + link to codebase_symbols), action buttons for blast
  radius and call flow.
- Right-click any node → blast radius overlay (reverse-transitive
  closure). Call-flow button on the sidebar for forward traversal.
- Live search across files and symbols, six Cytoscape layouts
  (Dagre / force / concentric / breadth-first / grid / circle),
  PNG export (filename sanitised for cross-platform safety).
- `open: false` parameter skips auto-launch and just returns the file
  path — useful in headless environments.

Viewer is XSS-safe by construction: all DOM built with createElement
+ textContent (no innerHTML anywhere); embedded JSON escapes every
"<" as \u003c so a stray </script> in a file path or symbol name
cannot break out of the script-type="application/json" container.

New files:
- src/assets/{cytoscape.min.js,dagre.min.js,cytoscape-dagre.js,
  viewer-template.html,viewer-styles.css,viewer-app.js}
- scripts/copy-assets.mjs — postbuild copier (tsc does not handle
  non-TS files); wired into npm run build and prepublishOnly
- src/services/graph-visualize-html.ts — HTML builder with scale-cap
  logic (MAX_SYMBOLS / MAX_EDGES / MAX_SYMS_PER_FILE) and parallel
  per-file Qdrant payload loading
- src/services/graph-visualize-browser.ts — temp-file write +
  cross-platform open wrapper
- tests/unit/graph-visualize-html.test.ts — 5 tests (self-contained,
  escape-safety, symbolMode omitted/capped, cycle marking)
- tests/unit/graph-visualize-browser.test.ts — 4 tests (deterministic
  path, overwrite, success + failure paths)

New runtime dependency: open@^10.2.0 (Sindre Sorhus, zero transitive
deps, cross-platform).

British-English doc sweep (secondary)
─────────────────────────────────────
Switched all project docs to British English spelling:
  behavior → behaviour                organized → organised
  color-coded → colour-coded          initialization → initialisation
  visualization → visualisation       customization → customisation
  recognized → recognised             optimized → optimised
  acknowledgment → acknowledgement    finalize → finalise
  analyzing → analysing               apologizing → apologising
  sexualized → sexualised

Affected files: README, DEVELOPER, AGENTS, CLAUDE, GEMINI, SECURITY,
CONTRIBUTING, CODE_OF_CONDUCT, agents/codebase-explorer.md,
skills/codebase-exploration/{SKILL.md,references/tool-reference.md},
skills/codebase-management/references/tool-reference.md.

Also surfaced Impact Analysis in the top-level README paragraph.

Docs
────
- README: "Interactive graph explorer" subsection under Impact Analysis,
  tool-table row updated.
- DEVELOPER.md: architecture section under codebase_graph_visualize
  covering asset layout, data flow, cap logic, XSS-safety invariants.
- AGENTS.md / CLAUDE.md / GEMINI.md: new "User asks for a visual /
  interactive / shareable graph" row in the tool-routing table.
- skills/codebase-exploration/: SKILL.md bullet + tool-reference.md
  full mode description.
- CHANGELOG.md: "Interactive Graph Explorer" section under Unreleased.

Quality gates (all green)
─────────────────────────
- Biome lint: clean
- TypeScript (tsc): clean
- Unit tests: 685/685
- Integration tests: 154/154 (real Qdrant + Ollama)
- CodeRabbit: No findings (1 fix applied — filename sanitisation)
- Snyk code test: 0 issues

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 16:04:41 +01:00
Giancarlo Erra deaf82981b chore: release v1.6.1 2026-04-17 11:19:30 +01:00
Giancarlo Erra 486bf7622b chore: release v1.6.0 2026-04-16 19:03:58 +01:00
Giancarlo Erra a8b069a900 docs: add Discord community, Cloud section, and tool portability to README 2026-04-16 19:02:09 +01:00
Giancarlo Erra 68f4b36794 chore: release v1.5.0 2026-04-13 22:46:53 +01:00
Giancarlo Erra af0c397b8c chore: release v1.4.1 2026-04-12 21:37:52 +01:00
Giancarlo Erra 5c84a9ad66 chore: release v1.4.0 2026-04-12 19:30:53 +01:00
Giancarlo Erra 15ab5c8956 chore: release v1.3.2 2026-03-26 18:06:54 +00:00
Giancarlo Erra 3502f0e653 chore: release v1.3.1 2026-03-24 17:38:20 +00:00
Mantvydas 2f5b410a04 fix: add prepublishOnly script to ensure dist/ is rebuilt before publish
The published npm package has stale dist/ files that don't include
the SOCRATICODE_PROJECT_ID environment variable support added in source.
This causes the env var to be silently ignored when installed via npm.

Adding a prepublishOnly script ensures tsc runs before every publish,
keeping dist/ in sync with source.
2026-03-24 14:14:04 +02:00
Giancarlo Erra fbc5d54d27 chore: release v1.3.0 2026-03-19 11:59:43 +00:00
Giancarlo Erra 4471f874ef chore: release v1.2.0 2026-03-18 13:56:28 +00:00
Giancarlo Erra 640e054eac chore: release v1.1.3 2026-03-16 22:57:15 +00:00
Giancarlo Erra 06f5dee474 chore: release v1.1.2 2026-03-16 01:00:34 +00:00
Giancarlo Erra b1bfe2c480 chore: release v1.1.1 2026-03-16 00:42:06 +00:00
Giancarlo Erra 2b121683c7 chore: release v1.1.0 2026-03-15 23:59:17 +00:00
Giancarlo Erra 31e5d748bc feat: add Claude Code plugin with skills, agent, and MCP bundling
- Add .claude-plugin/plugin.json with MCP server reference and hooks
- Add codebase-exploration skill with search-before-reading workflow
- Add codebase-management skill with indexing and troubleshooting guides
- Add codebase-explorer delegatable subagent for deep analysis
- Add SessionStart hook for duplicate MCP detection
- Add .mcp.json for plugin-bundled MCP server config
- Update package.json files array to include plugin assets in npm package
- Add release-it after:bump hook to sync plugin.json version
- Update README with plugin install badge, instructions, and guidance
2026-03-15 23:47:46 +00:00
Giancarlo Erra edce09f6d3 chore: release v1.0.1 2026-03-04 18:08:46 +00:00
Giancarlo Erra 88c0e8fee3 fix: add mcpName and read version dynamically from package.json 2026-03-04 18:06:36 +00:00
Giancarlo Erra 3f0ed5a286 feat: SocratiCode v1.0.0 — initial release 2026-02-28 17:06:21 +00:00