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: dhigby/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.
  • 12 commits
  • 15 files changed
  • 2 contributors

Commits on Jun 5, 2026

  1. feat(extraction): add Keyman keyboard (.kmn) language support

    Keyman has no tree-sitter grammar anywhere, so it gets a standalone
    line-based extractor (the Liquid/Vue/Svelte/DFM pattern):
    
    - groups -> function nodes (callable units, span to next group)
    - user stores -> variable, &system stores -> constant (&NAME -> docstring)
    - use(g) -> calls edges (group->group, file->group for `begin`)
    - outs/any/notany/index/call/set/if/save/reset -> references edges,
      resolved intra-file (group->store, store->store)
    
    Wiring: .kmn in EXTENSION_MAP, 'keyman' in LANGUAGES, grammars.ts
    special-cases (no WASM), and a route to KeymanExtractor in
    extractFromSource. +8 extraction tests.
    
    Validated on real .kmn from keymanapp/keyboards across small/medium/large
    (2/251/1029 files): linear scaling, no node explosion, and 17776/17776
    calls+references edges resolved intra-file (zero spurious cross-file edges).
    
    Co-Authored-By: Claude Opus 4.8 <[email protected]>
    dhigby and claude committed Jun 5, 2026
    Configuration menu
    Copy the full SHA
    0777b6b View commit details
    Browse the repository at this point in the history
  2. docs(readme): add fork notice describing Keyman (.kmn) support

    Co-Authored-By: Claude Opus 4.8 <[email protected]>
    dhigby and claude committed Jun 5, 2026
    Configuration menu
    Copy the full SHA
    9e61bf4 View commit details
    Browse the repository at this point in the history
  3. docs: add Keyman extractor roadmap (candidate file formats)

    Co-Authored-By: Claude Opus 4.8 <[email protected]>
    dhigby and claude committed Jun 5, 2026
    Configuration menu
    Copy the full SHA
    7027049 View commit details
    Browse the repository at this point in the history
  4. feat(extraction): connect Keyman keyboards into a cross-file subgraph

    Adds the connected-subgraph trio from the Keyman extractor roadmap so a
    keyboard's files stop being isolated islands:
    
    - .kmn: emit cross-file `references` from the &LAYOUTFILE / &VISUALKEYBOARD
      system stores to their named companion files (resolved against the .kmn's
      own directory so the resolver's file-path matcher links them).
    - .keyman-touch-layout (new extractor): a `component` node per layer (scoped
      by platform) + `references` layer->layer for every `nextlayer` switch,
      including subkeys/flicks/multitaps. Keys are not nodes (avoids graph blow-up).
    - .kps (new extractor): package manifest -> file node with the display name as
      docstring, plus cross-file `references` to each <Keyboard><ID>'s .kmn and any
      shipped keyboard-source companion. Build outputs, fonts, and docs are skipped.
    
    All three share the existing `keyman` language token, dispatched by extension
    in tree-sitter.ts. Validated end-to-end on khmer_angkor and baybayin:
    .kps -> .kmn -> touch-layout all resolve, with per-platform layer transitions.
    
    Tests cover detection, both new extractors, and the .kmn companion links.
    claude committed Jun 5, 2026
    Configuration menu
    Copy the full SHA
    9b9e3b1 View commit details
    Browse the repository at this point in the history
  5. feat(extraction): add Keyman visual-keyboard (.kvks) extractor

    Step 4 of the Keyman roadmap. Indexes on-screen (desktop) visual keyboard
    files: a file node (docstring = <kbdname>) plus a `component` node per layer,
    scoped by encoding and decoded modifier state (shift="RA" -> rightalt, "SRA" ->
    shift+rightalt). Desktop layers have no programmatic switches, so no inter-layer
    edges; keys stay data, not nodes (avoids graph blow-up).
    
    Indexing .kvks also lets the &VISUALKEYBOARD reference the .kmn extractor
    already emits resolve — validated end-to-end on khmer_angkor and baybayin
    (.kmn -> .kvks now resolves alongside .kmn -> .keyman-touch-layout).
    
    With this, the four core Keyman source formats (.kmn / .keyman-touch-layout /
    .kps / .kvks) are covered.
    claude committed Jun 5, 2026
    Configuration menu
    Copy the full SHA
    681d07b View commit details
    Browse the repository at this point in the history
  6. feat(extraction): capture Keyman language coverage across .kps and .k…

    …eyboard_info
    
    Makes "which keyboards support language X" queryable uniformly across the whole
    repo, regardless of a keyboard's lineage:
    
    - .kps extractor now emits a `constant` node per supported language from
      <Keyboards><Keyboard><Languages><Language ID="...">DisplayName</Language>,
      with the tag as the node name and the display name in the (full-text-indexed)
      signature, plus a contains edge file -> language. This is the
      release/experimental source of language metadata.
    - New .keyboard_info extractor (keyman-keyboard-info-extractor.ts) does the same
      from the JSON `languages` map. This file is a build artifact for release
      keyboards (generated from the .kps) but is committed for legacy binary-only
      keyboards, which have no .kps — so indexing it gives them the same coverage.
    - Both build identical-shaped language nodes via a shared helper
      (keyman-shared.ts), so one search (e.g. "Tagalog") returns matches from both
      .kps (release) and .keyboard_info (legacy) at once.
    
    Validated end-to-end on a mixed sample (khmer_angkor/baybayin .kps + legacy
    european2/blackfoot .keyboard_info): language nodes resolve and FTS search by
    display name finds them across both lineages. All five Keyman source formats in
    the repo are now covered.
    claude committed Jun 5, 2026
    Configuration menu
    Copy the full SHA
    895c074 View commit details
    Browse the repository at this point in the history
  7. feat(extraction): link Keyman packages to their related packages

    The .kps <RelatedPackages><RelatedPackage ID="..."> entries link one package to
    another (usually the legacy keyboard a newer one deprecates/replaces). The
    target lives in a different directory, but a package id equals its file's
    basename stem, so each related id is emitted as a cross-file `references` to
    both `<id>.kps` (release/experimental) and `<id>.keyboard_info` (legacy, which
    has no .kps). Whichever exists resolves by exact-name; external ids and the
    unused arm drop harmlessly. A self-referential related id is skipped.
    
    Most related targets (433 of ~611 in the repo) are legacy keyboards, so the
    .keyboard_info arm is what makes the bulk of these links resolve.
    
    Validated end-to-end: khmer_angkor.kps resolves to both basic_kbdkni.kps
    (release) and khmer10.keyboard_info (legacy), plus the reciprocal link back
    from basic_kbdkni. All 24 Keyman extraction tests pass.
    claude committed Jun 5, 2026
    Configuration menu
    Copy the full SHA
    b5d1e47 View commit details
    Browse the repository at this point in the history
  8. permissions update

    dhigby committed Jun 5, 2026
    Configuration menu
    Copy the full SHA
    06a4373 View commit details
    Browse the repository at this point in the history
  9. Merge Keyman companion-format extractors (.kps, .kvks, .keyboard_info…

    …, touch-layout) + cross-file linking
    
    Brings in the roadmap work built in Claude Code web:
    - connect Keyman keyboards into a cross-file subgraph
    - visual-keyboard (.kvks) extractor
    - language coverage across .kps and .keyboard_info
    - link Keyman packages to their related packages
    
    Co-Authored-By: Claude Opus 4.8 <[email protected]>
    dhigby and claude committed Jun 5, 2026
    Configuration menu
    Copy the full SHA
    174af3c View commit details
    Browse the repository at this point in the history
  10. docs: document full Keyman ecosystem support (.kps/.kvks/.keyboard_in…

    …fo/touch-layout + cross-file linking)
    
    Co-Authored-By: Claude Opus 4.8 <[email protected]>
    dhigby and claude committed Jun 5, 2026
    Configuration menu
    Copy the full SHA
    c9ed648 View commit details
    Browse the repository at this point in the history
  11. docs: rewrite install instructions for from-source fork install

    The README inherited upstream's install flow (curl install.sh / npm i
    -g @colbymchenry/codegraph), neither of which works for this fork — it
    isn't published to npm or as a GitHub Release. Rewrite Get Started,
    Quick Start, Manual Setup, and Library Usage to clone + build + npm link
    from the fork, fix the misleading npm/bundled badges, repoint the
    reinstall + Report Bug links, and add a fork-installs-from-source note.
    
    https://claude.ai/code/session_01YNaG1JupGkefkdP52Wo33e
    claude committed Jun 5, 2026
    Configuration menu
    Copy the full SHA
    5854d84 View commit details
    Browse the repository at this point in the history
  12. Merge pull request #1 from dhigby/claude/elegant-edison-LTInA

    docs: rewrite install instructions for from-source fork install
    dhigby authored Jun 5, 2026
    Configuration menu
    Copy the full SHA
    c90d65c View commit details
    Browse the repository at this point in the history
Loading