Vercel AI Gateway and secret UI stuff
This release adds support for Vercel's fancy AI Gateway as well as a boatload of improvements to the secret-not-secret UI refactor that we've cleverly hidden behind a flag. Details below.
Hello Vercel AI Gateway
If you're one of those so-called “production-grade AI” people then you might like to know that Crush now supports the Vercel AI Gateway. Just pop in your API key (pro tip: use your boss’s key), choose your fave model, mash out a prompt and LET IT RIP.
Shhhhh
We're refactoring the UI for speed and code simplicity. It's not totally finished yet but, if you dare, set CRUSH_NEW_UI=1 to try it out. Feedback welcome!
You probably already know this but…
…you rock. Thanks for all the Crush love. Your feedback for us is like ambrosia for Zeus.
Enjoy your weekend! 💖
Changelog
New!
- 88d10d1: feat(ui): add keybinding to copy chat message content to clipboard (#1947) (@aymanbagabas)
- 28e0ff3: feat: implement onboarding flow on the new ui codebase (@andreynering)
- 0d4cbf8: feat: lsp_restart (#1930) (@caarlos0)
Fixed
- 44e1ca7: fix(dialogs): prevent panic due to negative index (@andreynering)
- 1073723: fix(list): prevent panic due to negative index (@andreynering)
- 676c038: fix(ui): models: ensure select loop breaks correctly and scroll to top on filter (@aymanbagabas)
- b50d579: fix(ui): only copy chat highlight when we have highlighted content (@aymanbagabas)
- 8a37a34: fix(ui): prevent AAAA probe bleed in terminals without Kitty graphics support (#1967) (@AnyCPU)
- 505283a: fix(ui): rework cursor can appear out of place on multi-line (#1948) (@aymanbagabas)
- 1fad83b: fix: add back suspend (@kujtimiihoxha)
- 9604c92: fix: commands height (#1954) (@kujtimiihoxha)
- fb3eeb0: fix: completions width (#1956) (@kujtimiihoxha)
- 1e691e0: fix: ensure hyper is the first provider in the list (@andreynering)
- 698b7c8: fix: handle new session when focused on the list (@kujtimiihoxha)
- f002e6f: fix: lsp sort (@kujtimiihoxha)
- 4cf6af0: fix: make sure we have a fresh model/tools on each call (@kujtimiihoxha)
- 6ba301e: fix: new/update message behavior (#1958) (@kujtimiihoxha)
- 945006a: fix: permission notification (#1955) (@kujtimiihoxha)
- 1382753: fix: route mouse events to the dialog if its showing (#1953) (@kujtimiihoxha)
- 891b535: fix: tab to chat only when in chat (@kujtimiihoxha)
Docs
- da6f51e: docs: add vercel ai gateway to readme (#1951) (@jerilynzheng)
Other stuff
- 1b61cd2: chore: change the dialog sizes a bit (@kujtimiihoxha)
- e753d09: chore: do not scroll sessions if not neccessary (@kujtimiihoxha)
- 8ebe914: refactor(ui): add references tool (#1940) (@kujtimiihoxha)
- 4e66b9c: refactor(ui): enable initialize (@kujtimiihoxha)
- 5454a2e: refactor: rename
uiConfiguretouiOnboarding(@andreynering) - 49a41de: refactor: use different ansi image library (#1964) (@kujtimiihoxha)
Verifying the artifacts
First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:
wget 'https://github.com/charmbracelet/crush/releases/download/v0.35.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.35.0/checksums.txt.sigstore.json'Then, verify it using cosign:
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.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.