Builtiin "Crush config" skill + 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.