The Ol’ Thursday Patch
Hi all! It's patch time, and time for some bonus features. Let's go!
Fixin’ broken tool calls
Occasionally a model will opt to do a tool call with invalid arguments (invalid JSON), the session was just breaking, and even new prompts wouldn't anymore. We're now validating the issue and reporting it as an error to the model so it can correct itself. Of course, we also fixed the associated bug in Crush so sessions will no longer break.
Local models: auto-detectin’ context windows
Who loves local models? Now, Crush will now automatically detect models context windows with you add an endpoint for llamacpp, omlx, lmstudio, litellm, and ollama. Prior to this it was mis-setting window sizes to zero.
Config: harder, faster, stronger
Okay maybe not harder. But config in Crush is definitely faster and stronger.
We refactored on the so it's way more performant and safe for big, long configs where there are many providers, models, and so on. This also means that the model picker dialog will load faster too! We also added some safeguards to prevent race conditions when multiple Crush instances try to update the config at the same time.
You look great
That's all for today! Keep crushing it, everyone. 💘
Changelog
New!
- c1a4822: feat(providers): add llamacpp enricher (@taciturnaxolotl)
- 4be77c5: feat: log provider warnings from fantasy step results (@taciturnaxolotl)
Fixed
- de67920: fix(auth): stop two Crush instances from invalidating each other's login (@taciturnaxolotl)
- b10f890: fix(config): make concurrent config access race-free via copy-on-write (@taciturnaxolotl)
- af76fa7: fix(docs): set proper auto discovery models flag (@taciturnaxolotl)
- 67f5001: fix(glob): keep file search fast and bounded on large directories (@taciturnaxolotl)
- bb44fb1: fix(hooks): bridge Claude Code additionalContext onto HookResult.Context (@ken-jo)
- 7206981: fix(scrolling): stale scrolling acceleration (#3197) (@chardoncs)
- cfdca35: fix: correct model discovery enrichment for local providers (@taciturnaxolotl)
- 1bb945c: fix: prevent flaky diffview golden tests on Windows CI (@taciturnaxolotl)
- 1350167: fix: render pills box reliably when todos or queue appear mid-session (@taciturnaxolotl)
- 21a457d: fix: validate tool call JSON before storing to prevent stuck conversations (@taciturnaxolotl)
Other stuff
- a5896b4: chore: auto-update files (@charmcli)
- aa3bded: chore: bump fantasy to 0.33.2 (@taciturnaxolotl)
- 7f7eb60: chore: bump golangci version to fix lint issues in ci (@taciturnaxolotl)
- 6b68930: chore: fix lint on interp.ExecHandler (#3200) (@taciturnaxolotl)
- f5b996b: perf(config): make model selection and config reload fast (@taciturnaxolotl)
- 173b2be: perf(ui): skip theme rebuild when provider keeps the same theme (@taciturnaxolotl)
- 81cb9d9: refactor(ui): optimize model ui rendering (@taciturnaxolotl)
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.80.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.80.0/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.