File tools performance fixed ✅
A few of you told us that some tools call like view and edit were sometimes taking a few seconds to complete, making your sessions slow to proceed. Well, that happened because Crush notifies LSP servers about the files you're viewing or touching, and waits for a response. Some LSPs are slow, and it things took some time to happen.
In this release we not only made a good number of fixes to file tools + LSPs, but we also added a 300ms timeout so if something got stuck Crush will proceed anyway.
The find_references also got fixes. It allows the model to query for your LSPs to find refences for a given type/function/etc.
Special thanks to our favorite contributors @huaiyuWangh and @taigrr to helping and testing these improvements! ✨
Enjoy your weekend!
Charm ™️
Changelog
Fixed
- 02ec5db: bugfix: find references, double timeout (@taigrr)
- 41a931e: fix(mcp): restore handling for unsupported resources/list method (@meowgorithm)
- 6e5bbef: fix: use typed context keys in tests to satisfy staticcheck (@huaiyuWangh)
Other stuff
- ded666a: chore(lint): don't shadow err vars (@meowgorithm)
- 0583221: fix(tools/view): fix view paging, test for edge cases (@meowgorithm)
- 773efbf: fix(tools/view): perform UTF-8 validity check only if read succeeds (@meowgorithm)
- 6604dd0: perf(lsp): don't watch for changes when simply reading files (@meowgorithm)
- d98c854: perf(lsp): use shared timeout for parallel diagnostics collection (@meowgorithm)
- 12f0d9f: perf(tools/view): avoid scanning entire file to count lines (@meowgorithm)
- 3c5fcff: perf(tools/view): pause briefly for LSP diagnostics when viewing a file (@meowgorithm)
- e0d5454: refactor: extract common sub-agent execution logic (@huaiyuWangh)
- 07d065d: refactor: simplify context value retrieval using generics (@huaiyuWangh)
- 42aee6d: refactor: use params struct for runSubAgent and add unit tests (@huaiyuWangh)
- d3682ac: use new wg pattern (@taigrr)
Verifying the artifacts
First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:
wget 'https://github.com/charmbracelet/crush/releases/download/v0.46.1/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.46.1/checksums.txt.sigstore.json'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--bundle 'checksums.txt.sigstore.json' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.