v0.28.0

charmbracelet/crushv0.28.0Dec 18, 2025by github-actions[bot]

AI Summary

This release (v0.28.0) focuses on improving the onboarding experience for Crush, fixing several bugs and adding new functionality. The most notable changes include fixing a bug that prevented typing 'c' during onboarding and enabling proper login to Hyper and GitHub Copilot through the onboarding flow.

Key Highlights

  • Fixed bug preventing 'c' key input during onboarding for model filter and API key fields
  • Added ability to login to Hyper and GitHub Copilot through the onboarding flow
  • Added feature to set environment variables to override config directories
  • Fixed ctrl+c handling in hypercrush auth
  • Refactored ProviderConfig with new ToProvider method

New Features

  • Ability to set environment variables to override config directories
  • Hyper and GitHub Copilot login integration in onboarding flow

Full Release Notes

# Onboarding Stuff

This release is mostly to improve and fix the onboarding flow:

* Fixed a bug that made impossible to type <kbd>c</kbd> on onboarding (model filter and API key input). Oops!
* It's now possible to properly login to Hyper and/or GitHub Copilot via the onboarding flow.

See ya! 🎁 🎄 

## Changelog
### New!
* a326efef45a6b223f0341a548cd5c39cabe4c0a4: feat: add ability to set envs to override config directories (#1661) (@andreynering)
* 13f315cb30efb673178ec4059547a2306a0d7c50: feat: make hyper and copilot login work on onboarding (@andreynering)
### Fixed
* 68ad2981a0017a510f1df6ba89c7492ecb1b4338: fix(copilot): change import to happen on demand, and also on onboarding (@andreynering)
* b945baa3ddf8dd81e090514b06a35ade3d508363: fix(onboarding): address `c` key press not working on onboarding (#1663) (@andreynering)
* 5b66c8d81e07f77ee824d54c5567ab0bb9a2834b: fix: handle `ctrl+c` in hypercrush auth (#1665) (@meowgorithm)
### Other stuff
* 2ba5a82e45d4adc69040512127ebb14b52d9a41b: chore(ux): remove extra uneeded line (@andreynering)
* e1817142d18df38dec897bb6f019ba971e9b8de2: chore: auto-update files (@charmcli)
* bcebf0708f5bd3f7f0d3f3ed3f56652c44853a00: chore: auto-update files (@charmcli)
* 996539f2aef74d645452d77f6260b1d3c31ec97d: chore: remove cspell.json (#1664) (@aymanbagabas)
* cffe0cf1f98256f9e9271d0c8d7a46b1158de5e8: fix(tui/mcp): singularize tool/prompt count when 1 (#1623) (@Amolith)
* 3c22cb840b4aa163f0cc3756cf0ea65ec195929b: refactor(config): add ToProvider method to ProviderConfig (@aymanbagabas)

---

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

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

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