LSP Auto-Discovery and More
Hi! We've been cranking. How about you? This release adds some bugfixes nice quality-of-life features, and Copilot improvements. More below.
Auto-LSP
LSPs in Crush are awesome. What is less awesome is setting them up. Now, with Crush v0.37.0, you don't have to. Crush will auto-detect LSPs and set 'em up as needed. So go on, install that haskell-language-server you've been meaning to, fire up Crush, and get knee-deep in monads.
More Copilot Models
We made all Copilot models available on Crush, which means you'll a few more models available now, particularly Gemini 3 Pro (Preview) and Gemini 3 Flash (Preview).
New UI? What new UI?
We're continuing to iterate, test, and add features the new UI which we're pretending is a secret. Wanna try it? Set CRUSH_NEW_UI=1 in your environment.
Enjoy your weekend! Charm 💘
Changelog
New!
- c81b02f440a1c442fe731122f5b2150547ab8fd3: feat(lsp): auto-discover LSPs (#1834) (@caarlos0)
- fea878e4d4c315f91c190d589891eddbeb8f7ac4: feat(mcp): support server side instructions (#2015) (@caarlos0)
- c0a8c7e8219b39d47ab6400438b61ff2dd357164: feat: allow to disable indeterminate progress bar (#2048) (@caarlos0)
- 3a929ffcff89aba677c2fb7620e93870f1c47f5b: feat: filetracker per session (#2033) (@caarlos0)
- 033584c7d0c88834011697d13361d13810a86d46: feat: implement prompt history (#2005) (@kujtimiihoxha)
- aa2cacd24af953a858dfb17f84ef37ff1db74ff3: feat: open commands dialog on pressing
/(#2034) (@andreynering)
Fixed
- df2c001c27c3e46b11dbbc57e4bdf7d5215ad7f4: fix(lsp): scope client to working directory (#1792) (@Amolith)
- 216f904749612ce82fe078ddbe4b03c73f823144: fix(posthog): check correct error; prevent panic (#2036) (@meowgorithm)
- daf786fe3df633bf146b5a3246866c173e9d8370: fix(stats): resizing breaks pie charts (#2030) (@caarlos0)
- 230b99c7bd158dee449848fa4a671cfb0c58edbd: fix(ui): arrow navigation wasnt working when todo view is open (#2052) (@caarlos0)
- 5e384b2e8f7ba72395581d164c18e232152e1023: fix(ui): ensure the message list does not scroll beyond the last item (#1993) (@aymanbagabas)
- aae4c3082281f9233484609f73169e60257da73c: fix(ui): fix selection of code blocks with tabs inside markdown (#2039) (@andreynering)
- e57687f170b9744abfcc7dc83ccca0e0d4272116: fix(ui): fix wrong color on selected item info on dialogs (#2041) (@andreynering)
- 6c26f2a97cca5562159c532977147caa7c9deca4: fix(ui): switch focus on click (#2055) (@andreynering)
- ac03cb02b28265074bbd001291b793633f822395: fix(ui): typo in ListItemStyles type name (@meowgorithm)
- 115adebe89e0166c2a15f323bb901a5f5151d208: fix(ui): use setState method to change UI state and focus (#1994) (@aymanbagabas)
- 02bb76b4098479a3efe3326d550163afba52a924: fix: allow HYPER_URL with embedded provider (#2031) (@caarlos0)
- de64b00392249ff77ab1a178234ab4e223f11fa6: fix: decouple thinking/reasoning from provider type (#2032) (@caarlos0)
- b51c2e02e52ea23e4b5284b97dbfbc22510dca53: fix: do not scroll to bottom if user has scrolled up (#2049) (@andreynering)
- 3a2a045c3edb8e53b36cb71951f91213e4c3fb5c: fix: improve logs, standardize capitalized (#2047) (@caarlos0)
- 8d3064ffe778438dae209f3520d6449e2ec60bdf: fix: layout calculations when editor has attachments (#2012) (@kujtimiihoxha)
- 699ae40fd953bf671e740fbc16a1b841fa566ac3: fix: make the check for sidebar toggle inclusive (#2013) (@kujtimiihoxha)
- 87fad188fca6f37acea2bc6e6dcdab7ccf8e606d: fix: make the commands dialog less taller (#2035) (@andreynering)
- 7ace8d58f38e755d2d844b983aab5cff1e64ae4e: fix: panic when matching titles in session dialogue (@meowgorithm)
- c3ae2306d5d8163d428685a13e71f08212f7e9e6: fix: respect disabled indeterminate progress bar setting on app start (#2054) (@meowgorithm)
- 99aabb0179cb65f46166b4add30156360afb0ba9: fix: schema incorrectly marks optional fields as required (#1996) (@huaiyuWangh)
- 4228f7506d72a0a381c011539de17635f578f7d7: fix: slice string at the grapheme level, not byte level (@meowgorithm)
- 632666e5f926f74423bc4c2af39ed713f2327bce: fix: typo on
crush statshtml page (@andreynering)
Docs
- 5011ba264a8b2c854d0f72d1364bb2a78f89e01e: docs: improve clarity and fluency of mandarin tagline (#2022) (@oug-t)
Other stuff
- c5f0e4da2baa31e865effd3da90abf7a222bb98f: Handle unknown tool calls in the TUI (#2001) (@kujtimiihoxha)
- 857cc282d54af48d2b85b4e485c3b0829e9272b2: perf(ui): string efficiency (@meowgorithm)
- 87c2165cd5cd5afa897d4e2c4a95ff590c785ef4: chore:
chmod +x scripts/check_log_capitalization.sh(@andreynering) - 50ae9f26e0d3f83fd76b0cf50b7a38925abf7548: chore: auto-update files (@charmcli)
- 40869ecb5974d716d0f61316aae25f80eda43ab2: chore: auto-update files (@charmcli)
- 1696e72e92298d205e74384de36f94143ecabc38: chore: update catwalk and its import paths to
charm.land/catwalk(@andreynering) - c6b0a8a13ec47ebddcbc2b6ab14d2006cc1d4acd: refactor: terminal capability handling (#2014) (@aymanbagabas)
Verifying the artifacts
First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.37.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.37.0/checksums.txt.sigstore.json) files, for example, with `wget`: :::bash wget 'https://github.com/charmbracelet/crush/releases/download/v0.37.0/checksums.txt' wget 'https://github.com/charmbracelet/crush/releases/download/v0.37.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!Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
