Small feats, fixes, Bedrock and more
We have quite a good number of things for a Friday. Let's take a quick look at them!
Scrollbar
The model list now got a scrollbar, so you can see how long the list is and where you are on it. It's a small addition, but nice and useful.
Token usage
Some providers do not report how many tokens were used in a request. In these cases, Crush wasn't showing the token usage or estimated cost in the sidebar.
@taoeffect added token and cost estimation when the provider doesn't report this. Now you'll have an idea on how fast you're burning tokens.
Bedrock
We made some changes to avoid some confusing when using AWS Bedrock.
Before, Crush was using whichever region you had set on AWS_REGION or AWS_DEFAULT_REGION variables. The problem is that most region have few models available, so you could be unable to use them if you had a different region set.
We're always using the us-east-1 region, which have all models available. This should make Crush work out-of-the-box with Bedrock without specific local region configuration.
If you have any feedback on Crush for Bedrock, reach out on our Discord or Slack communities.
Stream fixes
@ethanndickson contributed with two fixes on Fantasy that should fix some errors related to streaming.
Permission prompts
We tightned up permission prompts a bit to improve security, when the model wants to run Bash comments with pipes, redirection, etc. Crush will now always ask for permission in these cases.
Reasoning effort level fix
We fixed a bug to ensure Crush won't ever send a reasoning effort level when the model doesn't supports it. This should fix potential errors for a couple providers.
More client-server
More fixes to the experimental client-server architecture were merged.
You can opt-in to this mode with export CRUSH_CLIENT_SERVER=1.
That's all
There were more small fixes and improvements, but the list above is a good summary.
Enjoy your weekend (and Holiday for Americans) and see you next week!
Charm :sparklers:
Changelog
New!
- 96728b1: feat(permissions): require a permission prompt for chained commands (@taciturnaxolotl)
- 6716ef0: feat(skills): add support for user invocable skills (@taciturnaxolotl)
- ce39583: feat: render scrollbar for model list (dialog and onboarding) (#2978) (@andreynering)
Fixed
- 83d2abb: fix(agent): clear stale summary token counts (@taoeffect)
- 2e9c650: fix(agent): correct fallback usage accounting (@taoeffect)
- 6ed8852: fix(agent): estimate missing streamed usage (@taoeffect)
- 74e6e37: fix(agent): harden fallback usage accounting (@taoeffect)
- 74b84f6: fix(bedrock): enforce
us-east-1as region for bedrock (#2985) (@andreynering) - 56cf50a: fix(db): keep SQLite temp files in memory (@taciturnaxolotl)
- 841eec8: fix(models): fix sorting of hyper (@taciturnaxolotl)
- 1811bec: fix(prompts): tweak file reads to encourage more targetted reads (@taciturnaxolotl)
- d025403: fix(server): display available skills in client (@meowgorithm)
- 27a35c9: fix(server): support attachments in client-server mode (@meowgorithm)
- 9595d1f: fix(session): preserve estimated usage marker (@taoeffect)
- 5d7797d: fix(ui): add locking around markdown rendering (@neomantra)
- 5b1b2b4: fix(ui): guard divide-by-zero display error (@neomantra)
- 2736e48: fix(ui): mark estimated context usage (@taoeffect)
- 4fc17dd: fix(ui): preserve estimated usage percentage color (@taoeffect)
- 1320fcf: fix(ui): scroll to the properly select model (@taciturnaxolotl)
- 2faa467: fix: fix sometimes sending reasoning effort when it shouldn't (#2982) (@andreynering)
- 6b312be: fix: potential data race on
permissionService(#2964) (@mei2jun1) - 3250fef: fix: update fantasy with stream fixes (#2968) (@andreynering)
Other stuff
- 8468c8c: chore(tests): update golden files (@taciturnaxolotl)
- 88e97a0: chore: auto-update files (@charmcli)
- df3a04d: chore: isolate store test (@taciturnaxolotl)
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.71.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.71.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.