afea814
v0.77.0
Christian Rocha created
afea814
v0.77.0
Christian Rocha created
aad8cba
chore(bash/git): improve git commit and PR message standards (#3052)
Co-authored by: Kieran Klukas <kieran@dunkirk.sh> Co-authored by: Tai Groot <tai@taigrr.com> Co-authored by: Andrey Nering <andreynering@users.noreply.github.com>
Christian Rocha created
e4c82db
chore: bump lipgloss to v2.0.4 and glamour to v2.0.1
Includes fix for nil pointer crash when writing to a closed WrapWriter and glamour writer chain close ordering fix.
Kieran Klukas created
d342d22
chore: auto-update files
Charm created
57384c3
test: update VCR cassettes
Amolith created
6242e4f
feat(config): load user-level context files
Load ~/.config/crush/CRUSH.md and ~/.config/AGENTS.md by default as global context files, separate from project context. Global context is presented to the model as user preferences that apply across all projects. Paths are configurable via global_context_paths.
Amolith created
af7cab7
chore(legal): @kypkk has signed the CLA
Charm created
3e6f95e
fix: address potential indentation on commit messages trailings (#3106)
Some models like Qwen take this intentation too literally and add them to the commit message. The new system prompt fixes that.
Andrey Nering created
2c9d6d4
chore: auto-update files
Charm created
aadb7e7
docs(hooks): add name field
Kieran Klukas created
021e377
feat(hooks): add name field to hooks
Bruno Krugel created
4abf206
fix(server): correct socket location test on macOS
Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
2922de8
chore(test,server): cover stale socket cleanup and socket location
Adds tests confirming that a leftover socket is detected and cleared while a live socket is left untouched, and that the socket is placed in the expected per-user location. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
2e9f634
fix(server): detect and remove a dead socket before starting server
The client now checks whether a leftover socket has a live server behind it. If it does not, the client clears the dead socket and starts a fresh server instead of getting stuck trying to reach one that is no longer there. The detection is shared across platforms. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
443d0ab
fix(server): clear leftover sockets so server can always start
When the server starts and finds a socket file with no process behind it, it now removes the dead socket before binding instead of failing with an address-already-in-use error. A live server is never disturbed, and the cleanup is recorded in the log. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
62baa95
fix(server): log earlier so socket cleanup is always recorded
Sets up the persistent log file before the client checks the socket, so any message about detecting or clearing a leftover socket is saved to disk instead of being lost. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
a442f26
feat(server): store runtime socket in per-user runtime directory
Moves the Crush socket out of the shared temp folder and into the per-user runtime directory on Linux and macOS, falling back to the temp folder when needed. Guards against socket paths that are too long to bind. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
1839102
feat(server): add helper to detect stale unix sockets
Adds a helper that recognizes when a unix socket file is left on disk but no process is listening on it, so later code can clean it up safely. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
e25d61c
chore(legal): @brianjlandau has signed the CLA
Charm created
5631ab2
chore(legal): @gmit3 has signed the CLA
Charm created
7999380
chore(deps): bump the all group with 4 updates (#3094)
dependabot[bot] created
3678905
chore(deps): bump the all group with 2 updates (#3093)
dependabot[bot] created
2030d97
chore(legal): @yuseferi has signed the CLA
Charm created
0e96aba
v0.76.0
Andrey Nering created
84bcc3c
chore: update fantasy and catwalk (#3087)
Andrey Nering created
6292bfa
fix(cli): show all providers in crush models, not just configured ones
💘 Generated with Crush Assisted-by: Crush:qwen3.7-max
Christian Rocha created
7da9695
fix(permissions): ignore all keys briefly after dialog opens (#3055)
Kieran Klukas created
2d3d07d
chore(legal): @CnsMaple has signed the CLA
Charm created
b5fd4c0
chore: auto-update files
Charm created
363ffec
feat: discover skills from git root in monorepos (#3078)
Tai Groot created
58348ab
chore(legal): @GroovyCarrot has signed the CLA
Charm created
b688d52
Merge pull request #3054 from charmbracelet/fix-competing-clients
fix(server): avoid closing other clients' connections during cancellation
Christian Rocha created
d411ab5
fix(server): complete background prompts that fail early
Publish a terminal completion for submitted background prompts that fail before normal agent completion can run. The error still reaches observers, and duplicate completion events remain suppressed. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
cbec491
fix(server): complete queued prompts independently
Ensure queued prompts with their own submitted identity emit one terminal completion when canceled or dropped. Callers no longer wait on a completion that was folded into another prompt's turn. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
d7a814c
fix(server): close a queued-prompt cancel race
Check queued prompt cancellation while holding the same session handoff lock used for accepted and active prompts. Queue draining now follows the same ordering guarantees as prompt dispatch. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
c6d1590
chore(server,tests): cover the accepted-prompt cancel race end to end
Exercise the real server-to-agent path for a cancel that lands after a prompt is accepted but before it becomes active. This protects the race fix from passing only in mocked unit paths. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
a6a8459
fix(server): ignore background errors from unrelated prompts
Carry the submitted prompt identity through error events so command-line runs fail only for their own prompt. Older session-scoped errors remain supported for compatibility. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
34995e9
fix(server): prevent cancels from affecting future prompts
Apply a cancel only to prompts that were already accepted when the cancel request arrived. Immediately canceled accepted prompts also publish completion so callers waiting on that prompt do not hang. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
5aaa709
chore(server,tests): cover async cancellation cleanup behavior
Lock in that prompt cancellation is handled by background completion events rather than a synchronous HTTP error. This prevents canceled prompts from being reported as server failures. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
3c06193
chore(server,tesst): cover multi-client prompt cancellation flows
Add end-to-end coverage for cancellation from another client, request disconnects, accepted-prompt races, and workspace handoff under the new asynchronous prompt contract. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
d2e9e51
chore(server): apply asynchronous prompt contract to clients
Treat HTTP 202 as a successful prompt submission and preserve server-provided error messages for rejected prompts. Callers no longer see generic status errors when the server explains the failure. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
ee94df0
chore(server): acknowledge accepted prompts with HTTP 202
Return as soon as a prompt is accepted instead of keeping the request open for the full agent turn. Workspace shutdown is reported as a conflict so clients can distinguish rejection from accepted work. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
8b242c5
chore(server): run accepted server prompts in the background
Accept validated prompts quickly, then run them on workspace-owned background work. Failures are published through events while normal cancellation continues to be represented by the canceled assistant turn. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
0a97743
chore(server): report background prompt failures via events
Add a prompt failure event that can be delivered after the HTTP request has already returned. Remote clients and subscribers now receive the same failure message through the event stream. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
4347015
chore(server): honor cancels immediately after prompt acceptance
Track prompts that have been accepted but have not started running yet so a cancel issued right after acceptance applies to that prompt. Idle-session cancels remain a no-op, preventing one client's cancel from poisoning the next prompt. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
8d7166e
refactor(server): share prompt validation before background dispatch
Use the same prompt and session checks before accepting background work that synchronous runs already use. This keeps rejected prompts consistent as the server begins accepting requests asynchronously. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
90b1a2a
feat(server): make server prompts independent of client connections
Give each workspace its own run lifetime and shutdown gate so agent work is not tied to the HTTP request that submitted it. Final state can still be saved during shutdown, avoiding lost completion or error records when a workspace is canceled. Co-Authored-By: Charm Crush <crush@charm.land>
Christian Rocha and Charm Crush created
6ec75f9
fix(ui): fix session rename rendering (#3071)
Kieran Klukas created
0e8b879
refactor(commands): centralise skill discovery
The UI for invoking skills duplicated skill discovery, but missed some of the nuances like following symlinks. This removes some of that duplicative code and wires other bits together so the UI shares the same discovery logic as the backend, fixing at least the symlink behaviour.
Amolith created
123087a
v0.75.0
Andrey Nering created