59927d5
chore(legal): @ne275 has signed the CLA
Charm created
59927d5
chore(legal): @ne275 has signed the CLA
Charm created
79e5a6f
v0.62.0
Andrey Nering created
7437d2b
fix: silence unless warning about non-existent skill paths
Andrey Nering created
bbab2bc
chore: auto-update files
Charm created
7cc020b
chore: update catwalk to new domain (#2680)
Andrey Nering created
f6a8854
chore(legal): @iuga has signed the CLA
Charm created
ebf0c1c
chore(deps): update fantasy and catwalk
Andrey Nering created
b0b5c14
chore: remove CODEOWNERS
Andrey Nering created
da33883
fix: reduce token usage, use short tool descriptions by default (#2679)
* Follow-up of #2592
We've been testing this for 2 weeks, and it's working great.
This is a very useful enhancement to reduce token usage, cost, and make
smaller models behave better.
This is particularly significant for local models. These models are tiny,
and with a long enough system prompt they have little context window left
for work.
It's still possible to have the old behavior by setting:
export CRUSH_SHORT_TOOL_DESCRIPTIONS=0
Andrey Nering created
4d7c55e
test: re-record vcr cassettes
Andrey Nering created
9d555a7
fix: reduce `fetch` and `view` tools truncation size to 100KB
Some models like Kimi K2.5 and GLM 5 simply don't handle well that many content. When a big page or JSON API is fetch, it can break Crush sessions. We're drastically reducing the truncation size here, to 1/10 of what we had before. It may look too much at first look, but 100KB it's actually very reasonable. For example, the entire Task guide, which is significantly large, is only 61KB: https://taskfile.dev/docs/guide.md
Andrey Nering created
9a20f78
chore(legal): @axeprpr has signed the CLA
Charm created
d3f6d98
fix(lsp): mitigate stale diagnostics
* fix(lsp): mitigate stale diagnostics * fix(lsp): log warning when workspace change notification fails 💘 Generated with Crush Assisted-by: GLM-5.1 via Crush <crush@charm.land> * test(lsp): add unit tests for diagnostics settling behavior 💘 Generated with Crush Assisted-by: GLM-5.1 via Crush <crush@charm.land> * refactor(lsp): remove blocking diagnostic wait from post-edit notifications 💘 Generated with Crush Assisted-by: GLM-5.1 via Crush <crush@charm.land> * chore: add async diagnostic waits * Update internal/agent/tools/diagnostics.go Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com> * fix(lsp): stop timer leaks in WaitForDiagnostics Replace time.After with time.NewTimer + defer Stop() to prevent unreclaimable timer allocations on early returns. 💘 Generated with Crush Assisted-by: GLM-5.1 via Crush <crush@charm.land> --------- Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com>
Christian Rocha and Andrey Nering created
f7beb12
feat: generally render output that looks like a diff as a diff (#2607)
For example, the GitHub MCP server can fetch diffs. This makes those diffs render as such, rather than just showing their raw output.
Christian Rocha created
7edf395
v0.61.1
Andrey Nering created
3474733
ci: use stable goreleaser action
Andrey Nering created
82d373d
chore(legal): @gavmor has signed the CLA
Charm created
ea50d10
v0.61.0
Andrey Nering created
0a86d5f
refactor(skills): strip implementation hints from crush-owned descriptions
Descriptions should describe when a skill applies, not how it does its job. Leaving language like "using go doc", "the jq command-line processor", etc. in the trigger encourages the model to guess its way through without reading SKILL.md.
Christian Rocha created
e64db33
feat(prompt): require loading appropriate skills before acting
Models frequently skipped viewing a skill's SKILL.md and inferred its behavior from the description alone; making the load mandatory in <critical_rules> prevents LLMs from taking that shortcut.
Christian Rocha created
2da70c1
feat(skills): log skill activation to help diagnose load failures
Christian Rocha created
3138c8b
fix: use same chroma formatter as diffview for markdown (#2656)
Andrey Nering created
0e9e0a6
chore(deps): bump the all group with 2 updates (#2659)
dependabot[bot] created
f15c2d7
chore(deps): bump the all group with 6 updates (#2660)
dependabot[bot] created
be3e81f
chore(legal): @enrell has signed the CLA
Charm created
3af50fd
chore(legal): @pi128 has signed the CLA
Charm created
e74253e
fix(oauth): fix copy to clipboard on terminals that don't support osc52 (#2642)
For example: Apple Terminal.
Andrey Nering created
2f32c9b
feat: enable progress bar on iterm2 (#2641)
Andrey Nering created
f1a931d
v0.60.0
Andrey Nering created
ea86101
feat(hyper): use openai-compatible endpoint for hyper (#2640)
Andrey Nering created
ce34984
v0.59.0
Andrey Nering created
73fec04
ci: fix test race condition
Do not run these two new tests in parallel.
Andrey Nering created
52dcef6
ci: only run `build` and `lint` workflows once in pull requests
Andrey Nering created
8bab8b3
test: re-record vcr cassettes
Andrey Nering created
f546a07
fix(prompt): remind coder to follow `<git_commits>` format on commit
💘 Generated with Crush Assisted-by: Claude Opus 4.7 via Crush <crush@charm.land>
Andrey Nering created
e0a3f4d
chore: `task fmt`
Andrey Nering created
fa50f36
test: re-record vcr cassettes
Andrey Nering created
3773b23
feat(shell): add jq as a bash builtin + a jq skill for it
Also, two local skills now exist for Crush development: * builtin-skills, for adding new builtin skills * shell-builtins, for adding new shell builtins
Christian Rocha created
b37649e
feat(ui): add skills discovery status to sidebar and landing page (#2384)
- Display loaded/errored skills in sidebar and landing page - Use pubsub event to carry skill states directly to UI, avoiding global mutable state - Subscribe to skills discovery events via broker, consistent with MCP/LSP patterns - Rename State to DiscoveryState for clarity
huaiyuWangh created
e8f5e20
feat: show progress bar on rio terminal (#2624)
Andrey Nering created
4b3dff3
test: run migration setup once to avoid race condition
Andrey Nering created
076cb1c
test: re-record vcr cassettes
Andrey Nering created
4e66ada
test: simplify integration tests, run for a single provider / model
It takes a lot of time to re-record these VCRs for so many models. Sometimes they fail intermittently, and you need to manually re-record again and again until it works. Let's keep a single provider and models which should work well enough for us.
Andrey Nering created
53c9774
test: reduce amount of logs print on `go test -v`
Andrey Nering created
1528c82
fix: inject synthetic tool_result for orphaned tool_use on session resume (#2622)
When a session is interrupted mid-tool-call (Ctrl-C, network timeout), the assistant message contains a tool_use block but no corresponding tool_result is ever recorded. On session resume, the Anthropic API rejects the conversation with invalid_request_error, permanently locking the session. The existing filterOrphanedToolResults handles the inverse case (tool_result without a matching tool_use). This commit adds the symmetric fix: during preparePrompt, detect tool_use IDs that have no matching tool_result and inject a synthetic error tool_result so the API accepts the history and the session can continue. Co-authored-by: Christian Rocha <christian@rocha.is> Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com>
Kim Yann , Christian Rocha , and Andrey Nering created
1e0e816
chore: bump bubbletea to v2.0.6 to fix wide char issue
See: https://github.com/charmbracelet/ultraviolet/pull/109
Ayman Bagabas created
f61ae45
chore(legal): @taigong12 has signed the CLA
Charm created
f1460a4
v0.58.0
Andrey Nering created
bcf863c
chore: auto-update files
Charm created
e048e71
feat: add opencode zen and opencode go support
Andrey Nering created