v0.80.0
blacklanternsecurity/bbotv0.80.0Jun 25, 2026by github-actions[bot]
AI Summary
This patch release focuses on stability and performance improvements. It fixes tool call validation to prevent sessions from breaking, introduces automatic context window detection for local models, and refactors the configuration system for better performance and safety against race conditions.
Key Highlights
- Validation of tool call JSON arguments to prevent session crashes.
- Automatic context window detection for local model providers.
- Refactored configuration system for improved performance and safety.
- Faster model selection dialog loading.
New Features
- Llamacpp enricher for local models
- Log provider warnings from fantasy step results
Full Release Notes
# 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](https://github.com/charmbracelet/crush#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. :cupid: ## Changelog ### New! * c1a482267431964b9c27f16b925fd659a1b222c2: feat(providers): add llamacpp enricher (@taciturnaxolotl) * 4be77c5675b38f851a94040794cbe3417f5dee20: feat: log provider warnings from fantasy step results (@taciturnaxolotl) ### Fixed * de6792039e757b533589da4165a2ed4182ed94cb: fix(auth): stop two Crush instances from invalidating each other's login (@taciturnaxolotl) * b10f890f55b1c00969b8e59a6828b6f405103b5a: fix(config): make concurrent config access race-free via copy-on-write (@taciturnaxolotl) * af76fa73bfce9042c1ffeaade2371355a869cfee: fix(docs): set proper auto discovery models flag (@taciturnaxolotl) * 67f50014e81be7fbdf1187fa78e65279b87b7908: fix(glob): keep file search fast and bounded on large directories (@taciturnaxolotl) * bb44fb1f4955920076da9f78a9f0738c2f4d5ecb: fix(hooks): bridge Claude Code additionalContext onto HookResult.Context (@ken-jo) * 720698112727dacfd3d468c0414003b427aa7691: fix(scrolling): stale scrolling acceleration (#3197) (@chardoncs) * cfdca3587fd5d515963db79e15a9f06071b18caa: fix: correct model discovery enrichment for local providers (@taciturnaxolotl) * 1bb945c83f68f841c187b24638c4ca4d1ef4a8b7: fix: prevent flaky diffview golden tests on Windows CI (@taciturnaxolotl) * 1350167227756c67ea429c5191a05f6b23fd35b8: fix: render pills box reliably when todos or queue appear mid-session (@taciturnaxolotl) * 21a457d5e0de4cc56419ff239676bcfe52054b3d: fix: validate tool call JSON before storing to prevent stuck conversations (@taciturnaxolotl) ### Other stuff * a5896b4f62d74643daad01ed03a34423386d6650: chore: auto-update files (@charmcli) * aa3bdedafedaaff8043f3a9091c1fe0adfdd552d: chore: bump fantasy to 0.33.2 (@taciturnaxolotl) * 7f7eb603ac7437156733b42be60c4e8961867fb3: chore: bump golangci version to fix lint issues in ci (@taciturnaxolotl) * 6b68930b2d6a9d99b7bd7fe1a84ddf1e8498f475: chore: fix lint on interp.ExecHandler (#3200) (@taciturnaxolotl) * f5b996bff40ecd881b5d92d8b876a08b62a94373: perf(config): make model selection and config reload fast (@taciturnaxolotl) * 173b2be61b2906bf0bcb107081d700ed36550a85: perf(ui): skip theme rebuild when provider keeps the same theme (@taciturnaxolotl) * 81cb9d990aa272dc1fdf17ae086b2b23ee3cae08: refactor(ui): optimize model ui rendering (@taciturnaxolotl) --- <details> <summary>Verifying the artifacts</summary> First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.80.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.80.0/checksums.txt.sigstore.json) files, for example, with `wget`: ```bash 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`](https://github.com/sigstore/cosign): ```bash 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.txt ``` If the output is `Verified OK`, you can safely use it to verify the checksums of other artifacts you downloaded from the release using `sha256sum`: ```bash sha256sum --ignore-missing -c checksums.txt ``` Done! You artifacts are now verified! </details> <a href="https://charm.land/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-banner-next.jpg" width="400"></a> Thoughts? Questions? We love hearing from you. Feel free to reach out on [X](https://x.com/charmcli), [Discord](https://charm.land/discord), [Slack](https://charm.land/slack), [The Fediverse](https://mastodon.social/@charmcli), [Bluesky](https://bsky.app/profile/charm.land).