Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: colbymchenry/codegraph
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: Nickcom4/codegraph
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 1 commit
  • 10 files changed
  • 1 contributor

Commits on Aug 25, 2026

  1. feat(bash): index shell scripts (functions, call edges, source imports)

    Shell was the biggest remaining gap for infrastructure repos: a hooks or
    scripts tree is dozens of small files wired together by `source`, and none
    of it was visible to the graph. Closes #239.
    
    Wiring is the usual four files plus one branch in extractCall. Two choices
    are worth calling out:
    
    - The grammar is VENDORED. tree-sitter-wasms ships an ABI-14 bash build
      that traps under web-tree-sitter 0.25 the moment it meets a `case`
      statement ("resolved is not a function", taking the whole parse with it),
      so it dies on nearly every real script. The prebuilt ABI-15 wasm from the
      tree-sitter-bash 0.25.1 npm package parses the same files cleanly; this is
      the same class of problem as the vendored Lua and C# grammars.
    
    - Builtins are filtered out of call edges. Every `command` node is a call
      site, so without a filter `echo`/`printf`/`local` outnumber real function
      calls by roughly an order of magnitude and bury them. External tools
      (`git`, `jq`) are deliberately kept as unresolved references, since that
      is what makes "which scripts shell out to jq" answerable.
    
    Measured on a 339-file hooks/scripts tree: 10,339 nodes and 19,772 edges in
    about 0.5s, 1,466 functions, 276 resolved `source` dependencies, and
    cross-file `callers`/`impact` working through them (one library function
    returned 20 callers across 20 different hook files, 147 affected symbols).
    Nickcom4 committed Aug 25, 2026
    Configuration menu
    Copy the full SHA
    44593f9 View commit details
    Browse the repository at this point in the history
Loading