v0.54.0
charmbracelet/crushv0.54.0Mar 31, 2026by github-actions[bot]
AI Summary
Various improvements including better init prompt, git ignore support, skills in session commands, and UI fixes.
Key Highlights
- Better init prompt for AGENTS.md generation
- Custom Git ignore file support (core.excludesfile)
- Skills shown in crush session commands
- Fixed LSP auto-start setting
- UI fix for non-image models (hide image keybindings)
New Features
- Git excludesfile support
- Skills display in session commands
Full Release Notes
# 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. :rocket: ## 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. <details><summary>Screenshot</summary> <img width="710" height="317" alt="skills" src="https://github.com/user-attachments/assets/1be7d299-fc22-4241-b47b-09530e73eaa9" /> </details> ## 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 :cupid: ## Changelog ### New! * bf21a59b9d559f19b720d8325edad73cbeca8d40: feat(init): elicit control/data flow, arch descs (#1790) (@Amolith) ### Fixed * cda2719416c1bad7291017db3c5f5e1b93795c2c: fix(commands): add timeout context for MCP prompt retrieval (#2517) (@iceymoss) * 664aae78f8d04e594d4e846f26f143da46e2d0e8: fix(csync): use pointer receiver for JSONSchemaAlias (#2521) (@huaiyuWangh) * 8e743cbfeb8e0dbb2b3a605a93c2acc754024d27: fix(event): prevent panic on non-string telemetry keys (#2502) (@iceymoss) * 3412194cc489ff259ee2e46059930830f5c54857: fix(ls): respect git's `core.excludesfile` config if set (#2314) (@mavaa) * 0e640a1f32215bd9cac244ca8722febf20591709: fix(lsp): respect lsp auto start config (#2487) (@BrunoKrugel) * 5cf6e5ab3c1214d9d0549a418e10bc4ad091f8ca: fix(taskfile): fix syntax error on task `run:onboarding` (@andreynering) * f416931307d5b446dfe1e376d9c0ade4a28b6406: fix: conditionally show image keybindings based on model support (#2522) (@huaiyuWangh) * 42c8bcc60cd81fb9d3bc5f5a5545abb3369ca18c: fix: do not commit `.crush/.gitignore` (#2531) (@andreynering) * 73c2a9dd82591875b4b9f2ce85310b33d5ef834d: fix: skip non-existent command dirs instead of creating them (#2534) (@majiayu000) ### Other stuff * 2bcc97bd4b3fa951b87cbf256a043b6cf8dc2cb0: chore(lint): fix some small lint warnings (#2488) (@BrunoKrugel) * 8b30fad1066b01df0e9bfbf26ae8a1643be3d656: chore: auto-update files (@charmcli) * b68823b0aef7e7b913b461529096d17ad4d36599: feat(cli/session): show skill metadata (#2541) (@meowgorithm) * d161cbcf5d5500286b3526951e72fcfeeefeb6d5: feat(init-cmd): mention progressive disclosure (#1786) (@Amolith) * 97c9f4b0f555af501fd56f87f5710dbad72cff71: refactor(ui): replace hardcoded cursor offset with style-based calculation (#2530) (@huaiyuWangh) --- <details> <summary>Verifying the artifacts</summary> First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.54.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.54.0/checksums.txt.sigstore.json) files, for example, with `wget`: ```bash 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`](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).