Commit Graph

10 Commits

  • fix(pipeline): close 12 sources of silent data loss in graph extraction
    A deep audit of the project-scanner → file-analyzer → merge pipeline
    turned up a wide range of silent data-loss bugs. Each one alone is
    small; together they were producing graphs with very few import edges,
    missing sub-file nodes for non-code formats, and inconsistent metrics.
    
    Root-cause fixes (high impact):
    
    - project-scanner.md: extend import-pattern table to resolve absolute
      imports for Python (`from a.b.c import x`), TS/JS (tsconfig.json
      paths/baseUrl aliases), Java/Kotlin (`com.foo.Bar` ↔ file paths),
      Ruby (`require 'foo/bar'` load-path), PHP (composer PSR-4 namespaces),
      and C/C++ (`#include` headers). Was relative-only, which produced
      empty importMap entries for the majority of real projects.
    - project-scanner.md: add `.ps1`, `.bat`, `.cmd`, `.jsonc` to language
      table; require non-null `language` field with an explicit fallback.
    - file-analyzer.md: document `sections`, `definitions`, `services`,
      `endpoints`, `steps`, `resources` in the extraction-output schema and
      spell out the sub-file node-creation rules per category. Was missing,
      so per-table / endpoint / resource nodes were never created from
      SQL / OpenAPI / Terraform / K8s / Dockerfile parser output.
    - file-analyzer.md: add explicit source-reading fallback rules for
      PowerShell, Batch, Bash, Swift, Kotlin (no tree-sitter coverage).
    - yaml-parser: declare `kubernetes`, `docker-compose`, `github-actions`,
      `openapi` languages so files the language-registry tags with those
      ids actually get section extraction. Recognize quoted top-level keys
      (e.g. `"on":` in GitHub Actions). Emit one section per entry for
      array-root YAML documents.
    - json-parser: declare `json-schema`, `openapi`; add `stripJsoncSyntax`
      helper that removes line / block comments and trailing commas before
      parse so `.jsonc` files (wrangler, tsconfig with comments) parse cleanly.
    - shell-parser: declare `jenkinsfile`. Tighten function-detection regex
      to require a reachable `{` brace so `name() echo hi` and patterns
      appearing inside heredocs are no longer false-positives.
    - markdown-parser: track fenced-code-block state and skip headings
      inside ``` / ~~~ blocks (`# install` shell comments were being
      emitted as level-1 sections).
    - merge-batch-graphs.py: add `article`, `entity`, `topic`, `claim`,
      `source` to VALID_NODE_PREFIXES and TYPE_TO_PREFIX so knowledge-base
      node types stop being flagged unknown / coerced to `file:`. Add
      `direction` to the edge dedup key so `forward` and `bidirectional`
      variants of the same (src, tgt, type) don't overwrite each other.
      Use a placeholder in bare-id fallback when `filePath` is missing on
      function/class nodes so unrelated `parse()` functions don't merge.
    - typescript-extractor: actually compute `isDefault` for default
      exports (was always emitted as `false` from buildResult).
    - extract-structure.mjs: match `wc -l` semantics for `totalLines` so
      the scanner's `sizeLines` and the extractor's `totalLines` agree on
      POSIX text files. Filter the parser-imports fallback to relative-only
      so `importCount` semantics stay *internal-import* whether the scanner
      resolved them or not. Drop unused `isCode` local.
    
    Tests: +19 cases covering JSONC parsing, markdown fenced-code skip,
    YAML quoted-keys / array-root, shell function false-positives,
    extract-structure import fallback semantics + totalLines off-by-one.
    764 passing (was 745).
    
    Bumps version to 2.6.2 across the five tracked manifests.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • fix(file-analyzer): preserve language and fall back when imports unresolved
    Two bugs surfaced when analyzing Python projects that use absolute imports:
    
    - The dispatch prompt (SKILL.md) and file-analyzer agent omitted the
      per-file `language` field, so `extract-structure.mjs` received null and
      passed it through to the graph.
    - `extract-structure.mjs` used `if (importPaths)` to decide whether to
      trust pre-resolved imports. Empty arrays are truthy, so files where the
      project scanner could not resolve any imports (e.g. Python absolute
      imports) clobbered the parser's import count with 0, never falling
      back to tree-sitter's own analysis.
    
    Bumps plugin version to 2.6.1 across the five tracked manifests and adds
    unit tests for `buildResult` covering language pass-through and the
    importCount fallback paths. To make the script testable, `buildResult` is
    now exported and the CLI invocation is guarded so importing the module
    no longer triggers `main()`.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • feat(dashboard): add mobile layout and responsive fixes
    Bumps to 2.6.0.
    
    - MobileLayout activates via useIsMobile at <768px with bottom-tab
      navigation (Graph/Info/Files); panes stay mounted (visibility
      toggle) to preserve ReactFlow dimensions and FileExplorer state.
    - MobileDrawer holds persona, view mode, diff, node-type filters,
      layers, and tool buttons (Filter/Export/Path/Theme/Help).
    - Selecting a node auto-pivots to Info; CodeViewer is always
      fullscreen on mobile; SearchBar collapses to a 🔍 toggle.
    - Homepage Hero/Footer/Install responsive: drop nowrap on title and
      tagline, stack title spans for editorial wrap, full-width CTAs at
      <480px, narrow-width spacing refinements.
    - Desktop dashboard: sidebar telescopes 260/300/360px, header gaps
      tighten, Path button label collapses to icon at narrow widths.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • chore: bump to 2.5.1
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • chore: bump to 2.5.0
    ELK + lazy container architecture (PR #111) lands as a new minor.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • chore: bump version to 2.4.0
    PR #108 ships a new user-visible feature (in-dashboard source code viewer
    with Files tab + double-click navigation), so it warrants a minor bump
    across all 5 version-tracked files.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • chore: bump to 2.3.2 and sync version manifest list
    Bumps all five version-carrying manifests to 2.3.2, bringing
    .copilot-plugin/plugin.json back in sync (was stuck at 2.2.0), and
    updates CLAUDE.md to reflect the true set of files that must move
    together: the nested understand-anything-plugin/.claude-plugin/plugin.json
    and .copilot-plugin/plugin.json were missing, and marketplace.json was
    incorrectly listed (its plugins[] entry does not support a version field).
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • fix: sync copilot plugin version to 2.2.0
    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
  • fix: address Copilot review comments
    - Remove displayName from plugin.json (not in Copilot manifest schema)
    - Use ln -sf for idempotent skill symlinks
    - Use rm -f for safer uninstall
    
    Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
  • feat: add VS Code + GitHub Copilot agent skills support
    - Add `.copilot-plugin/plugin.json` for auto-discovery in VS Code (mirrors `.cursor-plugin/` format)
    - Add `.vscode/INSTALL.md` with two install options: auto-discovery and personal skills via symlink
    - Update README.md and README.zh-CN.md with VS Code section and compatibility table row
    
    Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>