Skip to content

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 23:15
· 2 commits to main since this release

Highlights

  • Private symbols are indexed in every language. Perl _subs, Go unexported names, Python _methods, Rust non-pub items, Java and C# private members, unexported TS/JS declarations and so on used to be dropped. They are now indexed and tagged with their visibility (public, protected, internal or private).
    • search_symbols ranks private symbols below the rest, but an exact name match still comes first.
    • Package listings show the public API first.
    • References were already recorded for private code, so symbol_callers and the other reference tools now find the definitions those references point to. (#123, #125)
  • New option symbols.include_private (default true). Set it to false to leave private definitions out of the index. Expect the index to be several times smaller: on shire's own Rust source, the default indexes about 3.4x as many symbols. References are recorded either way.
  • shire status [--json] shows the index's state without rebuilding or writing anything. It reports health, counts, the indexed commit compared with HEAD, the last build's failures, and watch-daemon liveness. It always exits 0, so scripts and editor integrations can poll it. (#120)
  • Optional Claude Code status mod. shire init --mod installs it for your user, and it is opt-in. It shows index health in Claude Code's status line, posts toasts when something changes, and adds a /shire pane with rebuild buttons. shire install keeps an installed mod up to date, and shire uninstall removes it. (#120)
  • Nested packages: symbols and references now belong only to the package nearest to them. Before, a file under a nested package was indexed once per enclosing package, so search and the reference tools returned duplicates labeled with the wrong package. Packages from discovery.custom rules now also pick up edits and nested-package changes incrementally. (#122)

Upgrade notes

  • The first build after upgrading re-extracts every file once, so it takes about as long as a full build. This is deliberate:

    • It indexes the newly visible private symbols.
    • It repairs references that 0.7.0 could attach to the wrong package in repos with nested packages.

    Later builds are incremental again. You don't need --force.

  • Changing symbols.include_private triggers the same one-time re-extract on the next build.

  • With include_private = false, some symbols move in or out compared with 0.7.0, because "private" is now judged the same way in every language.

    • Kept, where 0.7.0 dropped them: Java package-private and C# internal members, which are now tagged internal, plus Rust trait-impl methods.
    • Dropped, where 0.7.0 kept them: Ruby private sections, Lua local functions, C++ private members, and top-level Python _functions.

What's Changed

New Features

  • feat: shire status [--json] and an opt-in Claude Code status mod by @justinjdev in #120
  • feat(symbols): index private symbols by convention (Go, Python, Perl, Dart) + symbols.include_private by @justinjdev in #123
  • feat(symbols): index private symbols in every language by @justinjdev in #125

Bug Fixes

  • fix(index): attribute symbols and refs to the nearest package only by @justinjdev in #122

Other Changes

  • test(watch): wait out ETXTBSY before exec'ing a copied shire binary by @justinjdev in #126

Full Changelog: v0.7.0...v0.8.0