Commit log

bc94bc7 WIP fix: attempt to address invisible text with terminal in light mode

Andrey Nering created

e74253e fix(oauth): fix copy to clipboard on terminals that don't support osc52 (#2642)

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

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

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

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

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

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

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

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

52e3030 chore(deps): update fantasy and catwalk

Andrey Nering created

c83a6d8 test: re-record vcr cassettes

Andrey Nering created

fd18c38 fix(system-prompt): remove "portuguese" as example

Click to expand commit body
This confuses dumber models, that might respond in Portuguese even when
the user prompt was in English.

This is more common for small models. We already made this fix on the
title generation prompt, we're now just porting to the coder prompt.

* Closes #2627
* Follow-up #2497

Andrey Nering created

a210bfb chore(legal): @KimBioInfoStudio has signed the CLA

Charm created

aea4e99 chore: bump bubbletea to v2.0.5 to fix tea_debug.log file issue

Ayman Bagabas created

9847be2 v0.57.0

Andrey Nering created

7a6a179 refactor: simplify skills parsing and improve discovery visibility (#2350)

huaiyuWangh created

ca69095 chore(deps): update catwalk

Andrey Nering created

8e3263d Merge pull request #2615 from charmbracelet/hotfix

Click to expand commit body
fix(agent): validate tool calls + strip tags from titles

Christian Rocha created

7a358f9 chore(deps): bump fantasy for tool call integrity fix

Christian Rocha created

3e8c148 chore(agent): move filter logic into a function

Christian Rocha created

c41a1a0 fix(agent): validate tool call/results + strip tags from titles

Click to expand commit body
This fixes a case where tool results could not have a matching tool
call, resulting in corrupted sessions.

There's also an interleaved fix for trimming rogue "</think>" tags from
session titles while we're at it.

Christian Rocha created

40b7cdd fix(ui): format code in ui.go

Ayman Bagabas created

e5712f0 fix(ci): use stable Go version in security workflow

Ayman Bagabas created

4a1298e chore: bump bubbletea and ultraviolet to v2.03 and 73592393e1ad and fix

Click to expand commit body
related layout issues

Ayman Bagabas created

d9f857f fix(events): prevent early events from being dropped before init (#2611)

Christian Rocha created

047cce5 chore(deps): bump the all group with 11 updates (#2614)

Click to expand commit body
Bumps the all group with 11 updates:

| Package | From | To |
| --- | --- | --- |
| [charm.land/catwalk](https://github.com/charmbracelet/catwalk) | `0.35.0` | `0.35.3` |
| [github.com/charmbracelet/x/powernap](https://github.com/charmbracelet/x) | `0.1.3` | `0.1.4` |
| [github.com/mattn/go-isatty](https://github.com/mattn/go-isatty) | `0.0.20` | `0.0.21` |
| [github.com/modelcontextprotocol/go-sdk](https://github.com/modelcontextprotocol/go-sdk) | `1.4.1` | `1.5.0` |
| [github.com/ncruces/go-sqlite3](https://github.com/ncruces/go-sqlite3) | `0.33.2` | `0.33.3` |
| [github.com/qjebbs/go-jsons](https://github.com/qjebbs/go-jsons) | `1.0.0-alpha.4` | `1.0.0-alpha.5` |
| [golang.org/x/net](https://github.com/golang/net) | `0.52.0` | `0.53.0` |
| [golang.org/x/sys](https://github.com/golang/sys) | `0.42.0` | `0.43.0` |
| [golang.org/x/text](https://github.com/golang/text) | `0.35.0` | `0.36.0` |
| [modernc.org/sqlite](https://gitlab.com/cznic/sqlite) | `1.48.1` | `1.48.2` |
| [mvdan.cc/sh/v3](https://github.com/mvdan/sh) | `3.13.0` | `3.13.1` |


Updates `charm.land/catwalk` from 0.35.0 to 0.35.3
- [Release notes](https://github.com/charmbracelet/catwalk/releases)
- [Commits](https://github.com/charmbracelet/catwalk/compare/v0.35.0...v0.35.3)

Updates `github.com/charmbracelet/x/powernap` from 0.1.3 to 0.1.4
- [Commits](https://github.com/charmbracelet/x/compare/ansi/v0.1.3...ansi/v0.1.4)

Updates `github.com/mattn/go-isatty` from 0.0.20 to 0.0.21
- [Commits](https://github.com/mattn/go-isatty/compare/v0.0.20...v0.0.21)

Updates `github.com/modelcontextprotocol/go-sdk` from 1.4.1 to 1.5.0
- [Release notes](https://github.com/modelcontextprotocol/go-sdk/releases)
- [Commits](https://github.com/modelcontextprotocol/go-sdk/compare/v1.4.1...v1.5.0)

Updates `github.com/ncruces/go-sqlite3` from 0.33.2 to 0.33.3
- [Release notes](https://github.com/ncruces/go-sqlite3/releases)
- [Commits](https://github.com/ncruces/go-sqlite3/compare/v0.33.2...v0.33.3)

Updates `github.com/qjebbs/go-jsons` from 1.0.0-alpha.4 to 1.0.0-alpha.5
- [Commits](https://github.com/qjebbs/go-jsons/compare/v1.0.0-alpha.4...v1.0.0-alpha.5)

Updates `golang.org/x/net` from 0.52.0 to 0.53.0
- [Commits](https://github.com/golang/net/compare/v0.52.0...v0.53.0)

Updates `golang.org/x/sys` from 0.42.0 to 0.43.0
- [Commits](https://github.com/golang/sys/compare/v0.42.0...v0.43.0)

Updates `golang.org/x/text` from 0.35.0 to 0.36.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.35.0...v0.36.0)

Updates `modernc.org/sqlite` from 1.48.1 to 1.48.2
- [Changelog](https://gitlab.com/cznic/sqlite/blob/master/CHANGELOG.md)
- [Commits](https://gitlab.com/cznic/sqlite/compare/v1.48.1...v1.48.2)

Updates `mvdan.cc/sh/v3` from 3.13.0 to 3.13.1
- [Release notes](https://github.com/mvdan/sh/releases)
- [Changelog](https://github.com/mvdan/sh/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mvdan/sh/compare/v3.13.0...v3.13.1)

---
updated-dependencies:
- dependency-name: charm.land/catwalk
  dependency-version: 0.35.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/charmbracelet/x/powernap
  dependency-version: 0.1.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/mattn/go-isatty
  dependency-version: 0.0.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/modelcontextprotocol/go-sdk
  dependency-version: 1.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: github.com/ncruces/go-sqlite3
  dependency-version: 0.33.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/qjebbs/go-jsons
  dependency-version: 1.0.0-alpha.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: golang.org/x/net
  dependency-version: 0.53.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: golang.org/x/sys
  dependency-version: 0.43.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: golang.org/x/text
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: modernc.org/sqlite
  dependency-version: 1.48.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: mvdan.cc/sh/v3
  dependency-version: 3.13.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

e9ee98f chore(legal): @ahostbr has signed the CLA

Charm created

efe42e8 fix(agent): prevent session corruption due to malformed image data (#2597)

Christian Rocha created

b5d4fa9 Merge pull request #2592 from charmbracelet/small-descs

Click to expand commit body
chore(tools): reduce tool call descriptions, behind a flag

Christian Rocha created

ff003b4 chore(tests): re-record vcr cassettes

Click to expand commit body
Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com>

Christian Rocha and Andrey Nering created

23073a3 test: always use short tool descriptions for tests

Andrey Nering created

d96d044 fix(tools): add missing strconv import

Click to expand commit body
💘 Generated with Crush

Assisted-by: GLM-5.1 via Crush <crush@charm.land>

Christian Rocha created

4d62229 fix(tools/bash): restore cross-platform instructions in bash tool

Click to expand commit body
💘 Generated with Crush

Assisted-by: GLM-5.1 via Crush <crush@charm.land>

Christian Rocha created

b680a4a fix: use proper bool check

Click to expand commit body
Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com>

Christian Rocha and Andrey Nering created