Releases: charmbracelet/crush
v0.60.0
👀
Changelog
New!
- ea86101: feat(hyper): use openai-compatible endpoint for hyper (#2640) (@andreynering)
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.60.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.60.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.
v0.59.0
Skills in sidebar, built-in jq, performance
Hey all! We hope you're having a great week!
Today's release is very cool, with some nice goodies ✨, let's check them out!
Skills sidebar
Crush will now show, in the sidebar, which skills are available. Very useful feature contributed by @huaiyuWangh to help discoverability.
Built-in jq
Do you know jq? It's a very popular CLI to query JSON files from the terminal. It's very useful for agents when models want to search inside a big JSON file.
Crush will now include jq built-in, which means Crush can use it even when it's not installed in your machine! Additionally, we're including a built-in jq skill to instruct the model on how to use it.
Huge kudos to @itchyny for implementing gojq, the jq port to Go we're using internally for this! 👏
Fixed CPU spike
Many thanks to @Chronostasys who fixed a bug in Ultraviolet that affected Crush. The presence of wide-characters (non-Latin languages or emojis) could result in a CPU spike.
Progress bar on Rio
You know Rio Terminal? (If not, you should). It recently got support for progress bar feedback, so we just enabled it for Rio as well.
See ya 👋
Charm
Changelog
New!
- 3773b23: feat(shell): add jq as a bash builtin + a jq skill for it (@meowgorithm)
- b37649e: feat(ui): add skills discovery status to sidebar and landing page (#2384) (@huaiyuWangh)
- e8f5e20: feat: show progress bar on rio terminal (#2624) (@andreynering)
Fixed
- f546a07: fix(prompt): remind coder to follow
<git_commits>format on commit (@andreynering) - 1528c82: fix: inject synthetic tool_result for orphaned tool_use on session resume (#2622) (@KimBioInfoStudio)
Other stuff
- e0a3f4d: chore:
task fmt(@andreynering) - 1e0e816: chore: bump bubbletea to v2.0.6 to fix wide char issue (@aymanbagabas)
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.59.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.59.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.
nightly
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//checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download//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.
v0.58.0
Small Patch
✨ Hey everyone! This is mostly a small update with a couple good fixes:
So long, tea_debug.log
The previous release would litter tea_debug.log file around. Wow! No longer.
Você fala inglês?
Prior to this release, smaller models would respond to the user in Portuguese regardless of what language they were using. As much as we love capoeira, we fixed the prompt so it doesn't do that anymore. 😅
Funny bug, eh? We had told the model to respond in the same spoken language as prompted, with a Portuguese example, and the less capable models saw the Portuguese and ran with it. Bom demais!
See ya!
Charm
Changelog
- bcf863c: chore: auto-update files (@charmcli)
- aea4e99: chore: bump bubbletea to v2.0.5 to fix tea_debug.log file issue (@aymanbagabas)
- e048e71: feat: add opencode zen and opencode go support (@andreynering)
- fd18c38: fix(system-prompt): remove "portuguese" as example (@andreynering)
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.58.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.58.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.
v0.57.0
Session Hardening, Token Savings and More
There are a bunch of solid housekeeping improvements in this release, including opt-in token savings and some serious work on session integrity and guarding against session corruptions.
Fewer Tokens (Preview)
In this release we're introducing a new flag that reduces the size of tool call descriptions by about 98%, which we're estimating will save about 120K tokens/session! The tl;dr is that LLMs are a lot better nowadays at tool descriptions and shorter descriptions will do.
We're just keeping this behind a flag a bit to test more models with it, but find it generally works well for most models. If you want to opt-in, just do:
export CRUSH_SHORT_TOOL_DESCRIPTIONS=1Session Hardening
When a session becomes corrupted, things really suck. This release contains two fixes to prevent that:
- Crush will now detect malformed image data and gracefully handle it so the session doesn't break. This is a common situation when doing frontend web development, including using MCPs, like Figma's MCP.
- Prior to this fix, tool calls could fire off while streaming, which could result in tool results without tool calls. This would in turn result in a corrupted sessions. Not anymore!
Better skill discovery
@huaiyuWangh came in hot with another solid patch, this time improving how Crush discovers and parses your skills, particularly in non-latin contexts (e.g. Chinese, Japanese, Korean, Arabic, and so on).
Crush Info Improvements
The crush_info tool also got a little bit smarter, and now show your attribution settings.
If you don't yet know, crush_info is a tool available for the model that shows your current Crush configuration. It's one of the things that helps Crush to debug and configure itself. Pair it with crush_logs and the crush-config skill and you'll find Crush is quite self aware!
That's all for today! Keep Crushing and see you in the next release.
Charm™
Changelog
New!
- a2081e1: feat(config): support
HYPER_API_KEYfor hyper auth (#2583) (@andreynering)
Fixed
- 7a6a179: refactor: simplify skills parsing and improve discovery visibility (#2350) (@huaiyuWangh)
- 4a1298e: chore: bump bubbletea and ultraviolet to v2.03 and 73592393e1ad and fix (@aymanbagabas)
- 4d62229: fix(tools/bash): restore cross-platform instructions in bash tool (@meowgorithm)
- efe42e8: fix(agent): prevent session corruption due to malformed image data (#2597) (@meowgorithm)
- c41a1a0: fix(agent): validate tool call/results + strip tags from titles (@meowgorithm)
- e5712f0: fix(ci): use stable Go version in security workflow (@aymanbagabas)
- d9f857f: fix(events): prevent early events from being dropped before init (#2611) (@meowgorithm)
- d96d044: fix(tools): add missing strconv import (@meowgorithm)
- f78baed: fix(tools): drastically reduce tool call description lengths (@meowgorithm)
- 2e8767d: fix(tools): modernize string split (@meowgorithm)
- 40b7cdd: fix(ui): format code in ui.go (@aymanbagabas)
- 95fcd88: fix: show attribution setting on
crush_infotool (#2594) (@andreynering) - b680a4a: fix: use proper bool check (@meowgorithm)
Other stuff
- 3e8c148: chore(agent): move filter logic into a function (@meowgorithm)
- ff003b4: chore(tests): re-record vcr cassettes (@meowgorithm)
- a02ce4a: chore(tools): gate short descs with CRUSH_SHORT_TOOL_DESCRIPTIONS (@meowgorithm)
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.57.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.57.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.
v0.56.0
Crush better at Crush
You might have noticed that on v0.55.0 we added a built-in skill to instruct Crush on how to configure itself. Adding a custom provider, LSP or MCP; changing settings, etc. can be easily done with prompts.
In this release, we added two new tools to help Crush debug itself:
crush_info: Returns configuration, so Crush can see what is in the final configuration with all config files merged.crush_logs: Show logs from Crush itself. Helps Crush to debug itself in case something is now working right.
Of course, the model should only call these tools if asked to. If you want to disable them to ensure it's never available, add this to your config:
{
"options": {
"disabled_tools": ["crush_info", "crush_logs"]
}
}LSPs back to sidebar
LSPs are now showing again at the sidebar. There was an issue preventing them appearing there. Thanks @fuleinist for the fix!
Config JSON schema fixed
@BrunoKrugel worked on a fix for an issue related to auto-generating the JSON schema for our config. This is typically used by code editors and even models, and it's not fixed!
See ya all in the next release 👋
Charm
Changelog
New!
- df39b64: feat(tools): add crush_info tool implementation files (@meowgorithm)
- 77fcc76: feat(tools): add crush_logs tool for reading application logs (@meowgorithm)
- 2772734: feat(tools): crush_info tool for readling live config (@meowgorithm)
- 59943a8: feat: open Hyper auth dialog automatically on unauthorized error (@andreynering)
Fixed
- fccf061: fix(app): derive shutdown context from
context.Background()instead of cancelledglobalCtx(#2242) (@AnyCPU) - baae1b6: fix(lsp): clone slice to avoid mutation (@andreynering)
- fa15658: fix(schema): fix
crush.jsonschema generation (#2574) (@BrunoKrugel) - 85445d7: fix(ui): subscribe to
app.LSPEventinstead ofworkspace.LSPEvent(#2565) (@fuleinist)
Docs
Other stuff
- 1bb4627: chore(skills/crush-config): improve crush config skill (#2556) (@meowgorithm)
- 1b7a457: chore: add custom error and message for hyper unauthorized (#2577) (@andreynering)
- 85b66c3: chore: auto-update files (@charmcli)
- 6e854b4: chore: update unauthorize message (@andreynering)
- 6f7762f: feat(tools/crush_info): add skill status (@meowgorithm)
- 269bc30: feat(tools/crush_info): handle config staleness (@meowgorithm)
- 816453b: feat(tools/crush_info): staleness detection and auto-reload (@meowgorithm)
- 2e07c0d: style: standardize log capitalization (@andreynering)
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.56.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.56.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.
v0.55.1
Patch for local models
Many of you use Crush to use LLM models running in your local machines. In this release, our favorite contributor @Kartik33 worked on two small fixes to make Crush more compatible with local models:
- Some apps like LM Studio rejects
max_tokens = 0, so we'll omit the field when unnset instead of sending zero to make them happy. - When context window was unset (
context_window = 0), Crush would immediately try to summarize a brand new session. We'll skip summarization when the context windows is unset or unknown.
If you're using Crush for local models, please let us know how we can make it better for you in Slack or Discord!
Charm ✨
Changelog
Fixed
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.55.1/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.55.1/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.
v0.55.0
Builtin "Crush config" skill + an experimental thing
We have a couple new feats on this release. Let's check them out!
Built-in "Crush config" skill
Starting on this release, Crush has the concept "built-in skills". Those are skill built in Crush, so you don't need to manually copy them to your machine or project.
For now we have a single one: "Crush config". Crush can now configure itself, so if you don't want to manually edit your crush.json config, you can just ask Crush itself to do it for you. You can ask it to add a custom providers, add a MCP, add a LSP, change a setting, etc.
Disable skill
We also added the ability to disable skills, no matter if built-in, global or project skill. Just add this to your crush.json:
{
"$schema": "https://charm.land/crush.json",
"options": {
"disabled_skills": ["crush-config"]
}
}Experimental server-client architecture
If you run Crush with CRUSH_CLIENT_SERVER=1, it'll now run via a brand new server-client architecture.
Keep in mind, though, this is VERY experimental! There are known bugs when using Crush in this mode. We'll be polishing it with time and only make it the default once it's stable.
Happy Easter!
Charm ✨
Changelog
New!
- 0f2e2f0: feat(server): initial implementation of Crush RPC server/client (@aymanbagabas)
- 2832d52: feat(skills): builtin skills + skill disabling + crush-config builtin (#2466) (@meowgorithm)
- 9a63da5: feat: add AppWorkspace implementation of Workspace interface gated behind CRUSH_CLIENT_SERVER env var (@aymanbagabas)
- 248d8b9: feat: add generated swagger docs and serve them in the server (@aymanbagabas)
- 6dcaab1: feat: add swagger api docs generation (@aymanbagabas)
- 1b37d55: feat: send server client version info (@aymanbagabas)
Fixed
- eb7ed4f: fix(client): add ListWorkspaces method to retrieve all workspaces from the server (@aymanbagabas)
- e410d7a: fix(server): encode sessions in proto format (@aymanbagabas)
- bc383d9: fix(server): log to stderr if it's a terminal (@aymanbagabas)
- 344eb32: fix: ensure proper resource cleanup and add retry logic for workspace creation (@aymanbagabas)
- 65974bb: fix: setup logging in server and client commands (@aymanbagabas)
- 2182fc4: fix: update UI tests to use test workspace (@aymanbagabas)
Other stuff
- 40c426a: chore: add a workaround for slog calls in config.Load leaking to stderr (@aymanbagabas)
- 7572ce1: chore: auto-update files (@charmcli)
- de04fc2: chore: auto-update files (@charmcli)
- ed71633: ci(lint): fix yet another lint issue (@andreynering)
- 33863b1: refactor(server): move agent, session, permission, and event logic to backend package (@aymanbagabas)
- 206aecf: refactor: centralize user config path in a single func
home.Config()(#2542) (@andreynering) - e44211d: refactor: migrate run and login commands to use client API instead of direct app access (@aymanbagabas)
- e3df84e: refactor: modernize (#2548) (@BrunoKrugel)
- 64f6cdf: refactor: rename Permissions.SkipRequests to Overrides().SkipPermissionRequests (@aymanbagabas)
- 7bb3a7b: refactor: simplify LSP diagnostic counts retrieval (@aymanbagabas)
- 72251dd: refactor: update client methods to return proto types (@aymanbagabas)
- e70c8ba: refactor: use client and server for workspace access and management (@aymanbagabas)
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.55.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.55.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.
v0.54.0
Small feats + more
We have a good number of fixes and enhacements in this release. Note how many contributors helped with this release! It's exciting to see the Crush community grow. 🚀
Better init prompt
@Amolith made some nice improvements on the prompt to generate a AGENTS.md file for new projects.
Custom Git ignore file support
If you happen to have a custom global ignore file for Git (core.excludesfile), Crush will now respect that when listing files. Thanks @mavaa for implementing this!
Skills on crush session
crush session show and crush session last commands will now show a header with the all skills used by the session.
LSP Auto-Start setting
Setting options.auto_lsp to false on your config was supposed to prevent LSP servers from booting automatically, unless you had manually configured them. There was a bug with this setting, but @BrunoKrugel helped us by fixing it.
UI fix for non-image models
@huaiyuWangh contributed with this fix. If the model you're using doesn't support images, Crush will now hide the help items in the bottom with the keybinding to attach images.
No more .crush/.gitignore on your git diff
We recently changed the content of this file to not ignore .crush/skills/* by default, but a small annoying side-effect made that file itself visible by Git. We're now also ignoring the .crush/.gitignore file itself again.
Keep crushing!
Charm 💘
Changelog
New!
Fixed
- cda2719: fix(commands): add timeout context for MCP prompt retrieval (#2517) (@iceymoss)
- 664aae7: fix(csync): use pointer receiver for JSONSchemaAlias (#2521) (@huaiyuWangh)
- 8e743cb: fix(event): prevent panic on non-string telemetry keys (#2502) (@iceymoss)
- 3412194: fix(ls): respect git's
core.excludesfileconfig if set (#2314) (@mavaa) - 0e640a1: fix(lsp): respect lsp auto start config (#2487) (@BrunoKrugel)
- 5cf6e5a: fix(taskfile): fix syntax error on task
run:onboarding(@andreynering) - f416931: fix: conditionally show image keybindings based on model support (#2522) (@huaiyuWangh)
- 42c8bcc: fix: do not commit
.crush/.gitignore(#2531) (@andreynering) - 73c2a9d: fix: skip non-existent command dirs instead of creating them (#2534) (@majiayu000)
Other stuff
- 2bcc97b: chore(lint): fix some small lint warnings (#2488) (@BrunoKrugel)
- 8b30fad: chore: auto-update files (@charmcli)
- b68823b: feat(cli/session): show skill metadata (#2541) (@meowgorithm)
- d161cbc: feat(init-cmd): mention progressive disclosure (#1786) (@Amolith)
- 97c9f4b: refactor(ui): replace hardcoded cursor offset with style-based calculation (#2530) (@huaiyuWangh)
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.54.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.54.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.
v0.53.0
GLM-5.1 + Mr. Big Prompt
Hey all! Friday is here and we have a few fun goodies for « Le Week-End ». Read on!
⚡️ GLM-5.1
Z.ai's GLM-5.1 was released just today as part of their coding plan, and it's available in Crush now. GLM-5.1 is a hot, new open source model that claims to come close to Opus 4.6. Enjoy and let us know what you think!
💬 A Bigger Prompt
When we first released Crush, three lines for prompting felt great. Now it feels really tiny! Fear not: in this release we made the prompt input area dynamically grow up to 15 rows in height as needed.
🔥 Hot Fixes
- Diffs: in some scenarios, the diff for a changed file weren't behavior correctly and looked like the whole file was changed. Not anymore.
- Tools calls: if user canceled the session (with esc+esc) in the middle of a tool call, that could result in a broken session, making impossible to send new prompts. Fixed!
- Session titles: the prompt to generate a title for a session was further enhanced to avoid generating in the wrong language if the chosen small model wasn't too smart.
- Cleanup: we're now ensuring we clean temporary files created when you press ctrl+e (opens external editor to write prompt).
Enjoy your weekend!
Charm ✨
Changelog
New!
- a81a652: feat(ui): variable height prompt input field (#2468) (@meowgorithm)
Fixed
- 4a3df1e: fix(dialog): use valid key binding name for OAuth success state (#2491) (@huaiyuWangh)
- e7a4146: fix(diffview): use
udiff.Linesand notudiff.Strings(@andreynering) - 4501438: fix(ui): always clean up external editor temp file (#2503) (@iceymoss)
- 2928dcb: fix: append error tool message when tool call is cancelled (#2492) (@fuleinist)
- dd7b58d: fix: enhance session title prompt to fix language issue (#2497) (@andreynering)
Docs
- da39f6f: docs(readme): add q&a section and note about clipboard support (#2509) (@andreynering)
Other stuff
- 65b9ea5: chore(taskfile): add one more file to dependencies (@andreynering)
- 6efc370: chore: update catwalk (@andreynering)
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.53.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.53.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.



