Friday patch
Shipping a couple small things for those who will keep crushing during the weekend.
Permissions UX fix
We made a change to avoid accidental interactions when the permission dialog shows. Crush will now ignore key presses up to 350ms after the dialog is shown. This will prevent you from accepting or denying something by mistake when you're typing when the dialog appears.
crush models fix
crush models will not shown all models, and not only the configured ones.
More client-server
And more and more fixes for the experimental client-server architecture are merged. This will power Crush to do really nice things once finished!
That's for this week. Enjoy your weekend!
Charm ✨
Changelog
New!
- 90b1a2a: feat(server): make server prompts independent of client connections (@meowgorithm)
- 363ffec: feat: discover skills from git root in monorepos (#3078) (@taigrr)
Fixed
- 6292bfa: fix(cli): show all providers in crush models, not just configured ones (@meowgorithm)
- 7da9695: fix(permissions): ignore all keys briefly after dialog opens (#3055) (@taciturnaxolotl)
- d7a814c: fix(server): close a queued-prompt cancel race (@meowgorithm)
- d411ab5: fix(server): complete background prompts that fail early (@meowgorithm)
- cbec491: fix(server): complete queued prompts independently (@meowgorithm)
- a6a8459: fix(server): ignore background errors from unrelated prompts (@meowgorithm)
- 34995e9: fix(server): prevent cancels from affecting future prompts (@meowgorithm)
- 6ec75f9: fix(ui): fix session rename rendering (#3071) (@taciturnaxolotl)
Other stuff
- ee94df0: chore(server): acknowledge accepted prompts with HTTP 202 (@meowgorithm)
- d2e9e51: chore(server): apply asynchronous prompt contract to clients (@meowgorithm)
- 4347015: chore(server): honor cancels immediately after prompt acceptance (@meowgorithm)
- 0a97743: chore(server): report background prompt failures via events (@meowgorithm)
- 8b242c5: chore(server): run accepted server prompts in the background (@meowgorithm)
- 3c06193: chore(server,tesst): cover multi-client prompt cancellation flows (@meowgorithm)
- 5aaa709: chore(server,tests): cover async cancellation cleanup behavior (@meowgorithm)
- c6d1590: chore(server,tests): cover the accepted-prompt cancel race end to end (@meowgorithm)
- b5fd4c0: chore: auto-update files (@charmcli)
- 84bcc3c: chore: update fantasy and catwalk (#3087) (@andreynering)
- 0e8b879: refactor(commands): centralise skill discovery (@Amolith)
- 8d7166e: refactor(server): share prompt validation before background dispatch (@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.76.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.76.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.