v0.39.0
charmbracelet/crushv0.39.0Feb 3, 2026by github-actions[bot]
AI Summary
This release features a complete rewrite of the UI portion of the codebase, significantly simplifying and flattening the architecture using Bubble Tea. The update brings performance improvements, history navigation with up/down arrow keys, better session management (rename with ctrl+r, delete with ctrl+x), and expand/collapse functionality for code blocks, diffs, and thinking blocks.
Key Highlights
- Complete UI rewrite with simplified and flattened architecture for better performance
- History navigation - press up/down to cycle through past prompts
- Session management - rename sessions with ctrl+r, delete with ctrl+x
- Expand/collapse functionality for code, diffs, and thinking blocks
- Sessions dialog now shows last updated time for each session
New Features
- History navigation with up/down arrow keys to cycle through past prompts
- Session renaming via ctrl+r in the sessions dialog
- Session deletion via ctrl+x in the sessions dialog
- Click to expand/collapse code blocks, diffs, and thinking blocks
- Sessions dialog displays last updated time for each session
- Transparent mode for UI
- Configurable timeout for LSP initialization
- Improved file drag-and-drop compatibility
- Improved text selection and copying from chat
- Provider display in sidebar, panel, and message footers
Full Release Notes
# Hello, UI rewrite Hi! Today we're releasing a complete rewrite of the UI portion of the codebase. We vastly simplified and flattened the UI code, putting into practice our current thinking on how complex [Bubble Tea](https://github.com/charmbracelet/bubbletea) applications should be architected. ✨ This means you get: * Considerable performance improvements and a snappier UI * A much better experience in long sessions * The ability to contribute to the codebase easier than ever What’s that you say? “Handsome Charm team, I need features?” Well, allow us to tell you more. ## History navigation, freakin’ finally Yeah! Now you can press <kbd>up</kbd> and <kbd>down</kbd> to cycle through past prompts, just like in Bash, VSCode, and lots of other tools. Enjoy! <p><img width="600" src="https://github.com/user-attachments/assets/863f8b55-a267-4135-bb05-580d3f1dfc34" /></p> ## Better session management <p><img width="600" src="https://github.com/user-attachments/assets/0b0477c1-9cf2-4632-8f55-54e944adce59" /></p> Sessions are great, but let’s face it: sometimes you want to wipe one of them off the face of the Earth. Other times you want to rename them because the LLM just didn't quite get the title right. Now you can. In the session dialog: * Rename sessions with <kbd>ctrl+r</kbd> * Delete sessions with <kbd>ctrl+x</kbd> ## Expand and contract That’s what my stomach does through out the day. It's also what you can now do with items in the chat. * You can now click on code, diffs and thinking blocks to expand/collapse. * The sessions dialog will now show the last updated time of each session. ## Other good stuff * Better compatibility when dragging and dropping files into the chat * Improved selecting and copying text from the chat * You'll now see exactly what provider you're using in the sidebar, panel, and in message footers Let us know what you think in [Slack](https://charm.land/discord) and [Discord](https://charm.land/discord) and keep an eye open for more enhancements coming soon. Keep crushing it! Charm :cupid: ## Changelog ### New! * d0ed2c508fedb1c67ea4bae1438729f15cdcd8c2: feat(ui): transparent mode (#2087) (@caarlos0) * ea8c39f4cf3baf8f816f82c4a6bdb796a8b3750c: feat: add configurable timeout for LSP initialization (#2075) (@huaiyuWangh) * bf1c65ebfc5f2cf09967fec0281dc96aeacef2e0: feat: release new ui refactor (#2105) (@andreynering) ### Fixed * 0979bd3e2646765dbe4cdd01ca09a8ccb2fa4837: fix(styles): increase text contrast in active session deletion item (@meowgorithm) * e6a4896481f0b979d3dff7be2449ddb7fc012b3a: fix(ui): ensure `%d Queued` text is visible (#2096) (@andreynering) * 56769bb10c336332d0f950218da7e6c3b9bf967b: fix(ui): fix permissions dialog rendering on small windows (#2093) (@andreynering) * 0cbaacdbf0d60dab9d3f2cbc94f062663a50ea8a: fix(ui): scroll to expanded item (#2088) (@aymanbagabas) * 3c8be6926cda50f4129e358bf78af65e7b315d32: fix: fix pasting files on some terminal emulators (#2106) (@andreynering) ### Other stuff * d4b9b356f60a9a26fbc22c432b10d8ed9edfddd3: chore(style): add specific style for session rename placeholder (@meowgorithm) * 7c5d6ca4c52359ddf4883f99764c7d131d268351: chore(styles): make rename style definitions match UI language (@meowgorithm) * 02ec6827295e060b6781f1ed3274dbf82e84ef47: chore: auto-update files (@charmcli) --- <details> <summary>Verifying the artifacts</summary> First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.39.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.39.0/checksums.txt.sigstore.json) files, for example, with `wget`: ```bash wget 'https://github.com/charmbracelet/crush/releases/download/v0.39.0/checksums.txt' wget 'https://github.com/charmbracelet/crush/releases/download/v0.39.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).