Commit log

afea814 v0.77.0

Christian Rocha created

aad8cba chore(bash/git): improve git commit and PR message standards (#3052)

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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)

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
💘 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

Click to expand commit body
fix(server): avoid closing other clients' connections during cancellation

Christian Rocha created

d411ab5 fix(server): complete background prompts that fail early

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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