Commit log

ac8aee7 feat(acp): implement slash command interception

Click to expand commit body
Intercept slash commands in Prompt handler before reaching LLM:

- /toggle_yolo: toggle auto-approve mode
- /toggle_thinking: toggle Think for Anthropic/Hyper models
- /set_reasoning_effort: set effort level for OpenAI-style models
- /summarize: trigger session summarization

Assisted-by: Claude Sonnet 4 via Crush

Amolith created

756ac52 refactor(acp): dynamic command list based on model

Click to expand commit body
- Remove impossible commands (new_session, switch_session)
- Remove client-handled commands (switch_model, help)
- Remove system: prefix from command names
- Add toggle_thinking only for Anthropic/Hyper models
- Add set_reasoning_effort only for models with ReasoningLevels

Assisted-by: Claude Sonnet 4 via Crush

Amolith created

a32b947 feat(acp): map finish reasons to ACP stop reasons

Click to expand commit body
- Permission denial returns refusal (not an error)
- Context cancellation returns cancelled
- Max tokens from model returns max_tokens
- Other errors still return the error with end_turn

Assisted-by: Claude Sonnet 4 via Crush

Amolith created

c4a5a99 feat(acp): implement SetSessionModel

Click to expand commit body
- Wire SetSessionModel stub to parse provider:model IDs, validate, and
update the agent's active model via config and coordinator
- Add buildSessionModelState helper to collect available models from all
configured providers
- Include Models in NewSessionResponse and LoadSessionResponse so
  clients
can display model selection UI

Assisted-by: Claude Sonnet 4 via Crush

Amolith created

bb1a335 feat(acp): implement LoadSession

Click to expand commit body
Allows ACP clients to load and resume previous sessions by ID.

- Advertise loadSession capability in Initialize
- Replay message history via SessionUpdate notifications

Assisted-by: Claude Opus 4.5 via Crush

Amolith created

9643516 feat(acp): expose commands via AvailableCommands

Click to expand commit body
Assisted-by: Claude Sonnet 4 via Crush

Amolith created

7181b80 refactor(acp): split sink.go into focused files

Click to expand commit body
Separates the 450-line sink.go into five focused files:

- sink.go: Core struct, NewSink, Start, Stop
- sink_messages.go: HandleMessage, translatePart, translateText,
  translateReasoning
- sink_permissions.go: HandlePermission, extractEditParams
- sink_tools.go: translateToolCall, translateToolResult, parseToolInput,
  toolKind
- sink_plan.go: HandleSession (todoโ†’plan conversion)

Assisted-by: Claude Sonnet 4 via Crush

Amolith created

4a18274 feat(acp): wire session todos to ACP plan updates

Click to expand commit body
Assisted-by: Claude Sonnet 4 via Crush

Amolith created

007a638 feat(acp): use description as tool call title

Click to expand commit body
Tool calls now display their description (e.g., "Echo a greeting")
instead of the tool name ("bash"). The title is updated when the tool
finishes streaming and input becomes available.

Assisted-by: Claude Sonnet 4 via Crush

Amolith created

aa7ad6e feat(acp): include path in view tool results

Click to expand commit body
Assisted-by: Claude Sonnet 4 via Crush

Amolith created

c6ab2fa feat(acp): include path in ls tool results

Click to expand commit body
Added Path to LSResponseMetadata and updated the ACP sink to include it
via WithUpdateLocations in tool call updates, enabling clients to show
which directory is being listed.

Assisted-by: Claude Sonnet 4 via Crush

Amolith created

7ad212d feat(acp): structured diff content for edits

Click to expand commit body
Edit/multiedit/write tool results now include ToolDiffContent with full
file before/after states, enabling proper diff rendering in ACP clients.

Permission requests for edit operations also include diff content so
clients can show proposed changes alongside the approval prompt.

Tool response metadata now includes FilePath alongside OldContent and
NewContent fields.

Assisted-by: Claude Sonnet 4 via Crush

Amolith created

759f2d2 feat(acp): map tool names to ACP tool kinds

Click to expand commit body
Maps Crush tool names to semantic ACP ToolKinds (read, edit, execute,
search, fetch, other) and extracts file paths from tool input JSON for
richer client rendering.

Assisted-by: Claude Opus 4.5 via Crush

Amolith created

7832f86 fix(acp): use background context for sink lifetime

Click to expand commit body
The request context passed to NewSession may be short-lived. The sink
needs to outlive the request to stream updates for the session.

Assisted-by: Claude Opus 4.5 via Crush

Amolith created

fa7cb91 fix(acp): skip echoing user messages to client

Click to expand commit body
The client already knows what it sent via the prompt request. Echoing
user messages back caused them to appear twice in the client display.

Assisted-by: Claude Opus 4.5 via Crush

Amolith created

e93ba32 feat(acp): subscribe sink to pubsub for streaming

Click to expand commit body
Assisted-by: Claude Opus 4.5 via Crush

Amolith created

f9fe8d7 feat(acp): add SetSessionModel stub

Click to expand commit body
Assisted-by: Claude Sonnet 4 via Crush

Amolith created

f071a93 feat(acp): add ACP server foundation

Click to expand commit body
Implements basic ACP (Agent-Client Protocol) server support, allowing
external clients to drive Crush over stdio using JSON-RPC.

- internal/acp/server.go: connection lifecycle and signal handling
- internal/acp/agent.go: implements acp.Agent interface
- internal/acp/sink.go: event sink for translating messages to ACP
  updates
- internal/cmd/acp.go: crush acp subcommand

Assisted-by: Claude Opus 4.5 via Crush

Amolith created

1a302dd v0.30.1

Christian Rocha created

aeadffd fix: copilot quota handling (#1738)

Click to expand commit body
Co-authored-by: Gustave-241021 <2909789120@qq.com>
Co-authored-by: Christian Rocha <christian@rocha.is>

Kujtim Hoxha , Gustave-241021 , and Christian Rocha created

a8f5b39 Merge pull request #1743 from charmbracelet/new-session

Click to expand commit body
chore(sessions): use large model for session title if small model is unavailable

Christian Rocha created

7315fce fix(sessions): generate title with large model if small model fails

Christian Rocha created

c49b4fe fix(sessions): tag removal, handle multibyte

Christian Rocha created

d2735fd ci: fix aur on arm64 (#1739)

Click to expand commit body
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Carlos Alexandro Becker created

7091b4f chore(cli): simplify help text (#1752)

Christian Rocha created

715b48a chore(legal): @nikolayk812 has signed the CLA

Charm created

830d9ef chore(deps): bump the all group with 3 updates (#1735)

Click to expand commit body
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

dependabot[bot] and dependabot[bot] created

d361a33 refactor(skills): use fastwalk to resolve symlinks (#1732)

Amolith created

59e4adc chore: minor internal/app improvements (#1696)

Christian Rocha created

67e8f14 chore: auto-update files

Charm created

1fbe7d4 feat: agent skills (#1690)

Click to expand commit body
Co-authored-by: Christian Rocha <christian@rocha.is>

Kujtim Hoxha and Christian Rocha created

63a3d83 fix(tui): guard model selection when list is empty (#1715)

James Trew created

993aa22 chore(legal): @aeroxy has signed the CLA

Charm created

9c34f3b chore(legal): @yuguorui has signed the CLA

Charm created

adbfe9e v0.29.1

Christian Rocha created

b19db1d chore(legal): @Mr777x-enf has signed the CLA

Charm created

d2ef109 chore(deps): bump the all group with 2 updates (#1693)

Click to expand commit body
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

dependabot[bot] and dependabot[bot] created

f86f2f8 chore(deps): bump stefanzweifel/git-auto-commit-action from 7.0.0 to 7.1.0 in the all group (#1692)

Click to expand commit body
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

dependabot[bot] and dependabot[bot] created

4133554 fix: prevent filename insertion when dragging attachments (#1683)

Christian Rocha created

d6329f6 v0.29.0

Andrey Nering created

b3f7321 feat: paste long content as an attachment (#1634)

Click to expand commit body
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Co-authored-by: Kujtim Hoxha <kujtimii.h@gmail.com>

Carlos Alexandro Becker and Kujtim Hoxha created

5d419e8 fix(aws-bedrock): update fantasy with `panic` fix (#1681)

Andrey Nering created

ec22609 fix: splash padding y (#1680)

Click to expand commit body
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Carlos Alexandro Becker created

2e177fa chore: auto-update files

Charm created

519eedc chore: auto-update files

Charm created

1c54433 fix: initial api key load (#1672)

Kujtim Hoxha created

4f6d0e9 fix: race condition (#1649)

Kujtim Hoxha created

88b19ad chore(legal): @jonhoo has signed the CLA

Charm created

0f76e63 fix: remove unsupported image types

Kujtim Hoxha created

07c0b28 chore(legal): @flatsponge has signed the CLA

Charm created