Repository navigation
v0.8.0
Highlights
- Private symbols are indexed in every language. Perl
_subs, Go unexported names, Python_methods, Rust non-pubitems, 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,internalorprivate).search_symbolsranks 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_callersand the other reference tools now find the definitions those references point to. (#123, #125)
- New option
symbols.include_private(defaulttrue). Set it tofalseto 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 withHEAD, 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 --modinstalls 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/shirepane with rebuild buttons.shire installkeeps an installed mod up to date, andshire uninstallremoves 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.customrules 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_privatetriggers 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#
internalmembers, which are now taggedinternal, plus Rust trait-impl methods. - Dropped, where 0.7.0 kept them: Ruby
privatesections, Lualocalfunctions, C++ private members, and top-level Python_functions.
- Kept, where 0.7.0 dropped them: Java package-private and C#
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