Commit log

bad0d43 docs(config): document api key validation methods

Christian Rocha created

a6d56fc fix(config): fix and add API key validatoin for various providers

Click to expand commit body
Basically, the /models endpoint is public on many openai-compat
providers, so validation was always passing with any string. This likely
broke in 7d14abb9 and cce8edf9.

Validation has been restored for:
- AiHubMix
- Avian
- Cortecs
- HuggingFace
- io.net
- Quiniu Cloud
- Synthetic
- Venice

New validation added:
- Minimax

Cannot be validated yet:
- Chutes
- Neuralwatt

Christian Rocha created

2be2024 fix(hyper): re-auth at selection time to ensure provider availability

Christian Rocha created

a4488ca feat(ui): switch to hyper theme when provider hyper is chosen

Christian Rocha created

9d4653e chore(styles): use hypercrush theme when hyper is selected

Christian Rocha created

e29353f v0.63.0

Andrey Nering created

1495028 chore(deps): update fantasy and catwalk

Andrey Nering created

1948ca7 fix(ui/hooks): restore hook styling

Christian Rocha created

ead1c28 chore(deps): bump goreleaser/goreleaser-action in the all group (#2728)

dependabot[bot] created

b0b9842 chore(deps): bump the all group with 6 updates (#2729)

dependabot[bot] created

e5611c3 docs(hooks): improve hook documentation

Christian Rocha created

b9fdf72 chore(hooks,skills): update crush-hooks skill per recent changes

Christian Rocha created

3cda50f fix(ui): fix dialog box shift when session rename is active

Christian Rocha created

755f6fa chore(ui): theme prep

Christian Rocha created

f686999 chore: auto-update files

Charm created

dc003bf feat: PreToolUse hook (#2598)

Christian Rocha created

a7546ad chore(tests): regression test for (lack of) disabled skills in the ui

Christian Rocha created

7a6149d fix(ui): don't show disabled skills

Bruno Krugel created

fa13c7f v0.62.1

Andrey Nering created

8ab740f test: re-record vcr cassettes

Andrey Nering created

37daf0f chore(deps): update fantasy and catwalk

Andrey Nering created

e5d95aa fix(hyper): fix re-authorization flow not triggering on certain conditions (#2703)

Click to expand commit body
We attempt to refresh tokens in two scenarios:

* Pro-actively, when we expiration date passed before a request
* Reactively, when we try a request but a 401 was returned

The error / event handling that shows a dialog asking the user to
re-authenticate is dependent on code that runs for the second scenario.
This means that the dialog might not show on the first scenario, if
refreshing the token fails.

If refreshing a token fails, continue with the previous token. Let it
fail and the 401 will trigger a re-authorization dialog.

I caught this because I was switching between local vs. prod Hyper a lot.

Andrey Nering created

e5b5a40 Merge pull request #2692 from charmbracelet/hypercrush

Click to expand commit body
chore(styles): overhaul style definitions

Christian Rocha created

81daa26 fix(styles): use semantic names in styles + drop deadcode

Christian Rocha created

4f3a308 chore(ui): formal hypercrush type treatment

Christian Rocha created

511916a fix(ui): logo and grad arguments from earlier refactor

Christian Rocha created

7cbb1db chore(ui): use Lip Gloss for color blends

Christian Rocha created

15f20e6 chore(ui): add new letterforms: h, y, p, e, with alts

Christian Rocha created

549f717 fix(agent): implement OnRetry logging with structured retry fields (#2700)

iceymoss created

f669bd3 fix(lsp): replace sticky unavailable cache with retry backoff (#2498)

Click to expand commit body
Scope unavailable tracking to each Manager instance and retry missing server commands after a short backoff so temporary environment changes do not permanently block LSP startup.

iceymoss created

da31815 chore(deps): update catwalk

Andrey Nering created

28ab548 docs(readme): tiny updates

Andrey Nering created

31025a1 chore: auto-update files

Charm created

cce8edf fix: remove minimax api key validate (#2688)

Click to expand commit body
MiniMax API keys don't always follow the "sk-" prefix pattern,
so the validation was causing unnecessary errors for valid keys.

Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com>

flynn-eye and Andrey Nering created

b8eccf9 chore(legal): @flynn-eye 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)

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

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

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

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