v0.40.0

charmbracelet/crushv0.40.0Feb 9, 2026by github-actions[bot]

AI Summary

This release focuses on performance optimization and adding MiniMax as a new AI provider. The major improvement is on-demand LSP server startup, which reduces CPU and memory usage by only starting language servers when needed. MiniMax support, including their $10/month Coding Plan, is now officially available.

Key Highlights

  • On-demand LSP server startup - servers now only start when interacting with files of that language, reducing CPU and memory usage
  • MiniMax is now officially supported as an AI provider, including the MiniMax Coding Plan ($10/month)
  • Clipboard image paste support added with ctrl+v
  • MCP (Model Context Protocol) resources support added
  • Multiple bug fixes including race conditions, memory leaks, and UI improvements

New Features

  • On-demand LSP server startup - LSPs start only when needed and shut down between sessions
  • MiniMax AI provider support with Coding Plan subscription
  • Clipboard image paste support (ctrl+v)
  • MCP resources support
  • Linux/386 build support restored
  • Improved shutdown handling and goroutine cleanup

Full Release Notes

# Optimized LSPs + MiniMax support

Good stuff is being shipped on this Monday, so you have a better joy using Crush on the rest of your week! 🌞 

## On-demand LSP start-up

@caarlos0 made a great work optimizing how LSP servers are handled on this release.

* An LSP server will now only be started once the model interact with a file of that language.
* Once you start a new session, the running servers will be shutdown until needed again.
* When you switch into a different session, only the relevant servers will be kept running.

All this ensure less CPU and memory are used by Crush, specially on new or small sessions.

## MiniMax support

[MiniMax](https://www.minimax.io/) is now officially supported as a provider, and this includes the [MiniMax Coding Plan](https://platform.minimax.io/subscribe/coding-plan), which start at $10/month.

Enjoy!

## Changelog
### New!
* 02f66a2e8614a6c029260bea7d3ca1565786915a: feat(lsp): start LSPs on demand, improve auto-start (#2103) (@caarlos0)
* b66f96ea78b4cddc9aefc1c1e3094008419e3a0a: feat(mcp): resources support (#2123) (@caarlos0)
* fc9db0563b86da23e22a227bac2e801f0c82d5c9: feat: add clipboard image paste support (ctrl+v) (#2148) (@caarlos0)
### Fixed
* 775cf3ae2609aa95ad1963a68b4a960c331371e1: fix(mcp): race condition, logs (#2145) (@caarlos0)
* c3d4ece8b5f889a0905a63d816554727908a6081: fix(ui): `highlighter` now modifies the cell directly. (#2171) (@biisal)
* fb9eb927de330fb1e23772daefdee871710a4829: fix(ui): clear image cache when FilePicker closes to prevent unbounded memory growth (#2158) (@AnyCPU)
* 722093b9398fb3f5ce00888ad02c5e0bf0619e78: fix(ui): prevent nil pointer in completions size update (#2162) (@kslamph)
* 3a9d95d82ebebd7605c7f377e1376c7d34540ff5: fix(ui): use plain letters for lsp status (#2121) (@caarlos0)
* dc890f399504b6158a8d6b70edc449b7cb646a8a: fix: build linux/386 (#2153) (@caarlos0)
* 989b0d28cefcd82f1575087d4b9ed8be9b742df0: fix: cap posthog shutdown timeout (#2138) (@meowgorithm)
* 63e009898a0fc6f2f1aa29a2f375ab4ebd579061: fix: improving shutdown (#2175) (@caarlos0)
* 54a6978534ced00f11e5ced64205ddee32af8320: fix: make it possible to add api key for minimax (@andreynering)
* 3b3a3d78c8a329ab9274fe95b47deada3f8a133c: fix: prevent goroutine orphaning in mcp.Close() and shell.KillAll() (#2159) (@AnyCPU)
* e9b59c4b8cd7c6613cd48e533dd6b319c6bd7c69: fix: thinking sidebar (#2151) (@caarlos0)
### Docs
* e54c5ae7a1c5c9dbce4582ec8fca2dbe4d437269: docs(readme): add mention to minimax (@andreynering)
### Other stuff
* ff212d6a0f09013a2b93af04b394317b6833ccd1: chore: auto-update files (@charmcli)
* 04d05e158480513828a2c2538853432a92f2a630: chore: bump bubbletea and ultraviolet dependencies (@aymanbagabas)
* afb5be912ec2f98493fa7bbef41de3f4b53d9749: chore: update `charm.land/catwalk` with minimax support (@andreynering)
* 74aff5d4a19f390532b9739c99099443623b6c5d: chore: update fantasy to v0.7.1 (#2139) (@andreynering)
* 0491b670e4eefde474876dbb7b699ed2d8b9e318: perf: timer leak in setupSubscriber (#2147) (@caarlos0)
* 074917b7418c3541458963b3c720fa1546745690: refactor(lsp): use same handle file in client and manager (#2168) (@caarlos0)
* 59887a301733b1ba9cd1949cec1ac05d321e53a9: refactor: cleanup the code a bit (@andreynering)
* f285804b6c5c45d0a37fad2e2edb0e56fe8aa034: refactor: remove empty slice declarations (#2150) (@andreynering)
* 2c9670a890c216626e5f9212fe9cf7099525b2da: refactor: remove global config (#2132) (@kujtimiihoxha)

---

<details>
<summary>Verifying the artifacts</summary>

First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.40.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.40.0/checksums.txt.sigstore.json) files, for example, with `wget`:

```bash
wget 'https://github.com/charmbracelet/crush/releases/download/v0.40.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.40.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).