Track config file staleness and expose dirty/changed/missing state so
crush_info can warn when in-memory config is outdated after on-disk
edits. This also makes reload use freshly swapped config state before
model/agent setup to avoid stale runtime wiring.
💘 Generated with Crush
Assisted-by: Kimi-K2.5 via Crush <crush@charm.land>
Christian Rocha
created
77fcc76
feat(tools): add crush_logs tool for reading application logs
Click to expand commit body
Implements a tool that reads Crush's own log files and returns
formatted entries in compact text format. Supports:
- Tail-style reading (last N entries, default 50, max 100)
- Sensitive value redaction (token, secret, api_key, etc.)
- JSON value formatting with proper escaping
- Chronological ordering (oldest first)
- Graceful handling of missing/empty files and malformed lines
Approximate overhead:
• Tool definition cost (always in prompt): ~1,000 bytes ≈ 250 tokens
• Per invocation response (50 lines): ~4,000 bytes ≈ 1,000 tokens
• Per invocation response (100 lines): ~8,000 bytes ≈ 2,000 tokens
💖 Generated with Crush
Assisted-by: Kimi-K2.5 via Crush <crush@charm.land>
cabcc0e
chore(deps): bump the all group with 3 updates (#2564)
Click to expand commit body
Bumps the all group with 3 updates: [charm.land/catwalk](https://github.com/charmbracelet/catwalk), [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) and [modernc.org/sqlite](https://gitlab.com/cznic/sqlite).
Updates `charm.land/catwalk` from 0.33.2 to 0.34.3
- [Release notes](https://github.com/charmbracelet/catwalk/releases)
- [Commits](https://github.com/charmbracelet/catwalk/compare/v0.33.2...v0.34.3)
Updates `github.com/go-git/go-git/v5` from 5.17.1 to 5.17.2
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.17.1...v5.17.2)
Updates `modernc.org/sqlite` from 1.48.0 to 1.48.1
- [Changelog](https://gitlab.com/cznic/sqlite/blob/master/CHANGELOG.md)
- [Commits](https://gitlab.com/cznic/sqlite/compare/v1.48.0...v1.48.1)
---
updated-dependencies:
- dependency-name: charm.land/catwalk
dependency-version: 0.34.3
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: all
- dependency-name: github.com/go-git/go-git/v5
dependency-version: 5.17.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: all
- dependency-name: modernc.org/sqlite
dependency-version: 1.48.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: all
...
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
fccf061
fix(app): derive shutdown context from `context.Background()` instead of cancelled `globalCtx` (#2242)
M1xA
created
85445d7
fix(ui): subscribe to `app.LSPEvent` instead of `workspace.LSPEvent` (#2565)
Click to expand commit body
Fix LSP UI display broken in v0.55.0. The UI was still subscribing
to workspace.LSPEvent after the event type was moved to the app
package, causing LSP status to never update in the UI.
Changes:
- internal/ui/model/ui.go: Subscribe to app.LSPEvent; use app.GetLSPStates()
- internal/ui/model/lsp.go: Use app.LSPClientInfo type for LSPInfo embedding
and sorting (fields are identical to workspace.LSPClientInfo)
Fixes charmbracelet/crush#2560
59943a8
feat: open Hyper auth dialog automatically on unauthorized error
Click to expand commit body
When Hyper returns a 401, publish a TypeReAuthenticate notification so the
UI opens the OAuth dialog. Also fix coordinator.isUnauthorized to recognize
hyper.ErrUnauthorized for auto-refresh.
💘 Generated with Crush
Assisted-by: Z.ai: GLM 5.1 via Crush <crush@charm.land>
741c18a
fix: support local models with unknown max_tokens and context window (#2554)
Click to expand commit body
Two fixes for local/custom model compatibility (LM Studio, Ollama, llama.cpp):
1. Don't send MaxOutputTokens when it's 0. Custom models not in the
catwalk providers list have DefaultMaxTokens=0, which gets sent as
max_tokens:0 in the API request. LM Studio rejects this with
"maxPredictedTokens does not satisfy the schema". Fix: only send
the field when the value is positive.
2. Skip auto-summarize when ContextWindow is 0. Custom models have
ContextWindow=0, making remaining tokens negative, which immediately
triggers summarize after the first response. The session resets with
"previous session was interrupted because it got too long" even for
short conversations. Fix: skip the check when context window is
unknown.
Fixes #1218 (regression), relates to #1583, #1591
Kartik33
created
6d046c2
chore(legal): @shahidshabbir-se has signed the CLA
Charm
created
d10e765
chore(legal): @avianion has signed the CLA
I found Crush was often both too verbose and too terse than I'd like in
different ways when generating the AGENTS.md. This is an attempt to
improve the relevancy of the information it mentions.
As just one example, tabs vs spaces is obvious from the first file read,
so mentioning that style preference in AGENTS.md just wastes tokens.
Since adding this line, I haven't noticed it including trivial details
like that!
Though I've been using this since Dec 20 and liking it, I've mostly used
it and had good results with Claude models. I've not tried it with GPT
or GLM or others yet.
Amolith
created
cda2719
fix(commands): add timeout context for MCP prompt retrieval (#2517)
Click to expand commit body
The GetMCPPrompt function was using context.Background() without any
timeout, which could cause the request to hang indefinitely. Since
tea.Cmd doesn't support context passing, we add a 30-second timeout
as a safeguard, consistent with the pattern used in OAuth modules.
Assisted-by: GLM-5 via Crush <crush@charm.land>
iceymoss
created
97c9f4b
refactor(ui): replace hardcoded cursor offset with style-based calculation (#2530)
Click to expand commit body
Remove FIXME workaround in onboarding dialogs that used hardcoded
cur.Y -= 1 / cur.X -= 1 to adjust cursor position. Extract a new
AdjustOnboardingInputCursor helper that computes the correct offset
from Dialog.View border/padding/margin, eliminating code duplication
between api_key_input.go and models.go.
huaiyuWangh
created
f416931
fix: conditionally show image keybindings based on model support (#2522)
huaiyuWangh
created
5cf6e5a
fix(taskfile): fix syntax error on task `run:onboarding`
Andrey Nering
created
73c2a9d
fix: skip non-existent command dirs instead of creating them (#2534)
Click to expand commit body
Check if the command source directory exists before walking it.
If it doesn't exist, return early with no commands instead of
auto-creating it via MkdirAll. Remove the now-unused ensureDir
helper.
Fixes #2526
Signed-off-by: majiayu000 <1835304752@qq.com>
lif
created
42c8bcc
fix: do not commit `.crush/.gitignore` (#2531)
Click to expand commit body
Having a `.crush/.gitignore` showing on `git diff` just because you
started Crush on a directory is annoying.
Having the file there is enough. We don't want to commit it.
Andrey Nering
created
5d86c0f
chore(legal): @owldev127 has signed the CLA
Charm
created
c05e1ea
chore(legal): @afsuyadi has signed the CLA