v0.85.0

bradtraversy/design-resources-for-developersv0.85.0Jul 16, 2026by github-actions[bot]

AI Summary

The release introduces a new 'Question Tool' for interactive user input (single choice, multiple choice, etc.) with mouse support, adds an elapsed seconds timer to track task duration, and includes various bug fixes and performance optimizations for dialogs and rendering.

Key Highlights

  • First-class Question Tool with structured UI (single choice, multiple choice, free form).
  • Mouse support for the Question Tool.
  • Elapsed seconds timer to track how long an LLM task has been running.
  • Auto-retry authentication mechanism.

New Features

  • Question Tool with multiple input types
  • Mouse scrolling and support in the Question Tool
  • Elapsed seconds timer
  • Auto-retry for authentication failures
  • Fantasy OnAuthRefresh integration

Full Release Notes

# If you have questions, we have answers

This release brings us a question tool (at last!) plus a bunch of bugfixes and niceties. Let's go!

## The Question Tool

So! Crush now ships with a first class question tool, useful for when LLMs wanna grill you. The question tool comes in many forms, like single choice, multiple choice, free form text, and yes/no. Questions can be ganged together to build a form, too.

<p><img width="600" src="https://github.com/user-attachments/assets/81097b9b-6819-4e7d-9944-6ae771f6dab5" /></p>

What’s that you say? “Does it have mouse support?” Why, yes it does.

<p><img width="600" src="https://github.com/user-attachments/assets/75911693-49c9-4475-b812-935221337f5b" /></p>

What is this sorcery? Only @taciturnaxolotl knows. He solo’d this whole feature exclusively with open source models on [Hyper](https://hyper.charm.land).

## Hurry up and wait

Ever put an LLM to work, only to forget about it and come back and wonder how long it's been cranking? @andrinoff sure did. Wonder no more.

<p><img width="411" alt="output" src="https://github.com/user-attachments/assets/a2e35914-d89f-4a77-97d6-3283f1de06a3" /></p>

## And so much more

Like Prince in the 80s, @taciturnaxolotl continued his tour of awesomeness alongside @andreynering to make Crush better under the hood too:

* Fixed: `crush auth` now works outside of client/server mode
* New: Crush now auto retries auth under the hood when it fails
* Improved: dialogues now render great on tiny screens
* Perf: scrollbar optimizations for faster rendering
* Perf: memoized markdown renderer for faster rendering
* Perf: short circuit `jq` builtin operations if the turn was canceled before it started
* Yay! OpenAI merged our PR upstream so we're back off our fork

Buckle up, we have a bunch more coming.

xoxo,
Charm 💘

## Changelog
### New!
* 686a3f46e1876e9025a29bf846f11fac91bbb3f3: feat(dialog): hide list info column when it would crowd item names (@taciturnaxolotl)
* 75e7195fbd713d7f13dd242b8f994f11e070fe6b: feat(question): add client server integration (@taciturnaxolotl)
* 6f33b6668505ce0e30ef7e83fa642c9bf8c23c95: feat(question): add mouse scrolling (@taciturnaxolotl)
* 321c661e88079a6af12cec7a4606a389a5627a73: feat(question): add mouse support (@taciturnaxolotl)
* 1b5994c04f5a3e1c0d94cb05c80ccd07a187ebf1: feat(question): add paste support in text areas (@taciturnaxolotl)
* c2a6f76565600492aa2769d66ccd5ef7c00ea6a0: feat(question): add question tool with structured UI (@taciturnaxolotl)
* 9f4f145ad7c63bf6526d4517b88e8a98aa5bda96: feat(question): adjust question prompts and error messages (@taciturnaxolotl)
* 5e611a70a6e48ccb7dbb3ff020ee1efa5d37772d: feat(question): allow newlines and make free text like pop (@taciturnaxolotl)
* f69a91e5ab058a78c581af68c4e6bdde569bad44: feat(question): extend length limits on question tool (@taciturnaxolotl)
* 3bf40358a06e43863dc9689ea2bd286937063ca6: feat(question): make escape cancel the question instead of submitting empty answers (@taciturnaxolotl)
* 81a8ee4b54a980e4f4d08d1f7edfcbdd7a24b810: feat(question): redo tab resizing and mouse -> keyboard transition (@taciturnaxolotl)
* a5a5c6c54b40620ec2fdc20ccdf4b3224961a654: feat(question): tweak the confirmation tab (@taciturnaxolotl)
* 29f5691db4a9646910397bf7437e91f30c5d4fa3: feat(question): tweak yes/no to add shortcuts (@taciturnaxolotl)
* dc1609977e53f62843f6a9df78ba4283da62793c: feat: elapsed seconds timer (#3223) (@andrinoff)
* 64bbbebc430dd5031b92d62f179cbd6a22c09069: feat: integrate fantasy OnAuthRefresh for transparent auth retry (@taciturnaxolotl)
* d1489a603d357ab3e07dda66079130d4d5cdccb9: feat: wire LM Studio vision capabilities to SupportsImages (#3280) (@josh-socium)
### Fixed
* f3592bd8c501732e56128be07ce5fa694b008318: fix(dialog): account for the input prompt width so long values don't wrap (@taciturnaxolotl)
* 2c6424c179ee6ef21d2190744410ca289a9ad9da: fix(dialog): center permission buttons in fullscreen (@taciturnaxolotl)
* bbf654fb92f578bf5a1e4956b0d38b9297768fef: fix(dialog): centralize keybind hint rendering and stop overflow (@taciturnaxolotl)
* d6c63d31e255841038270d4b88ef347986e8da63: fix(dialog): clamp DrawCenter and DrawOnboarding content to screen bounds (@taciturnaxolotl)
* f6528f72ff5057fbb40d8e9b4f2ebf67b3fc119f: fix(dialog): constrain Quit dialog padding on narrow screens (@taciturnaxolotl)
* 31550cb4f9c04d9fc1d5e552be7745d2333cfee6: fix(dialog): fix OAuth content wrapping and full-width layout (@taciturnaxolotl)
* 352e26515901b9fd563fcbe7b8d945da678135d6: fix(dialog): fix model provider label truncation at low widths (@taciturnaxolotl)
* a69ace5e0bb4e0461c230498c29805446b137083: fix(dialog): keep dialogs stable on small screens (@taciturnaxolotl)
* 151b38d424fe561bc19669b10d7ee3aa66a4b19c: fix(dialog): make APIKeyInput width responsive to terminal size (@taciturnaxolotl)
* 3e2bd1cc4535eb5988c6990224f778256fcfb457: fix(dialog): make OAuth dialog width responsive to terminal size (@taciturnaxolotl)
* aaf92f866282d0eccacfa5a21025bcd25a504afc: fix(dialog): mute command list shortcut hints (@taciturnaxolotl)
* 605dfc9e3d3cc497f7594ced3820312cc32ddc3f: fix(dialog): remove dead space beside the list scrollbar (@taciturnaxolotl)
* 6407b8529ed394e6fef49c08fac3cdab165b8013: fix(dialog): scale FilePicker down on small screens (@taciturnaxolotl)
* 0c61aeee761afa9c967e9c6990e003bc4f5e6de7: fix(dialog): stop list item names from wrapping past the list width (@taciturnaxolotl)
* e271cecb3617626d8cf98fe94672c050d1eff2fd: fix(dialog): subtract border size in Reasoning and Notifications width (@taciturnaxolotl)
* e8c2772d272f179a9073b7214e236a2159429058: fix(dialog): truncate TitleInfo when it exceeds dialog width (@taciturnaxolotl)
* 2b4a01ae994cce7c2c9b5c08bb9d2aafad5dd15a: fix(dialog): truncate dialog titles instead of wrapping on small screens (@taciturnaxolotl)
* b5cd46c2381afda7adee567f7abadc101ef4dc2c: fix(errors): properly supress context cancelation error (@taciturnaxolotl)
* e34e707c175abd1a46f0135a2657d308129adb41: fix(events): restore file picker event (#3314) (@taciturnaxolotl)
* b75d6bc27b33bffb59b8ea9f304999515db74ff3: fix(oauth): fix the ui freeze on loading model endpoints (@taciturnaxolotl)
* 82e889858c654896b73bcd3e80616b5adc62fe11: fix(question): address PR review feedback (@taciturnaxolotl)
* ca5a19d7432a50eee59539b7568ce825a0bca2ce: fix(question): fix a bug with the hover state coming deselected (@taciturnaxolotl)
* cbb9d4f2614ad87d0d2feaf7b348189fa464e25f: fix(question): fix scrollbar disappearing in single-select (@taciturnaxolotl)
* 9e6175a2ea839a8a875f59e7ca05aa05e8780fde: fix(question): make scroll containers consistent (@taciturnaxolotl)
* 70c64b5794ec77cac6735007d68e20ae4e2fddd9: fix(question): route scrolling properly depending on which area is (@taciturnaxolotl)
* 5e6890de82a029bbb83b5e8205e483ec44e57207: fix(tests): bail on precancelled ctx in handleJQ (#3058) (@taciturnaxolotl)
* 1937ac54c597bb04553e8242e79314b5b1c0a9b7: fix: match question tool cursor color to main editor (@meowgorithm)
* ee00ec7bb6d0b698bad0bcda2cbf9e23ef307582: fix: respect client-server mode during login (#3315) (@andreynering)
### Other stuff
* 3c51a9f2f03e3f2e9de59a84d7a75e999c5ebe52: bug(client/server): fix non interactive init (@taciturnaxolotl)
* 2b969b2a862c250cbb8c529fe7148574a060f793: chore: auto-update files (@charmcli)
* 4721e53c30a0c51a718b84ff54f42cdee4e63ae0: chore: auto-update files (@charmcli)
* 14483caceb20c1d2283ffc69da1db7d42fb58540: chore: switch back to upstream openai sdk (#3308) (@andreynering)
* 4d901d1be4d4aec2dd1098b7e39c28e19c505b84: perf(ui): keep chat resize smooth on large conversations (@taciturnaxolotl)
* d29fc2ca6c84404ae40ff7dd72c76a079ed3a1bf: perf(ui): memoize chroma lexer lookups by filename (@taciturnaxolotl)
* 1bfc53f66fb92d9491b00b8602b7dff805bccca4: perf(ui): memoize the chroma syntax-highlight style (@taciturnaxolotl)
* e456a902c30e24fe5f4e7e8aa9060294079ed1a3: refactor(dialog): dedupe scrollbar joins and tame the permission Draw (@taciturnaxolotl)
* 492460a854cd890ac362390580b56f38ee2dd359: refactor: make the coordinator use a struct (@taciturnaxolotl)

---

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

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

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