Commit log

44c7535 fix(deps): update `go-nativeclipboard` version to compile to RISC-V. (#2216)

Wallace Gibbon created

8f613db ci: skip intermittent test on windows

Andrey Nering created

df0dfbe ci(labeler): add minimax label

Andrey Nering created

db5e9cc chore(deps): bump github/codeql-action in the all group (#2237)

Click to expand commit body
Bumps the all group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 4.32.2 to 4.32.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2...9e907b5e64f6b83e7804b09294d44122997950d6)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.32.3
  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

7fe592d fix: make reasoning effort dialog smaller (#2247)

Click to expand commit body
Before, it was even wider than the commands dialog, which looked weird.

Andrey Nering created

7ac4061 fix(lsp): properly remove clients from map on stop/kill

Click to expand commit body
- Delete clients from the map in StopAll and KillAll so they can be
  recreated on restart
- Add StateDisabled to the state check to prevent re-initializing
  disabled clients
- Remove duplicate callback invocation in startServer

💘 Generated with Crush

Assisted-by: Kimi K2.5 via Crush <crush@charm.land>

Andrey Nering created

eecb1bf perf: remove mutex from lsp manager

Click to expand commit body
- used the synchronized client map
- lsps root markers don't need to be gitignore aware
- cache unexisting lsp binaries globally

closes #2223

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Carlos Alexandro Becker created

540deef fix(ui): toggle pills to follow scroll (#2218)

Click to expand commit body
This change ensures that when toggling the pills (e.g., to-dos) in the
UI, if the scroll follow mode is enabled, the chat will automatically
scroll to the bottom. This prevents the user from losing their place in
the chat when they expand or collapse the pills section.

Ayman Bagabas created

ab475a4 chore(legal): @julienrbrt has signed the CLA

Charm created

e471e75 fix(ui): early exit AtBottom() when totalHeight exceeds viewport height

Click to expand commit body
Related: https://github.com/charmbracelet/crush/issues/2226

Ayman Bagabas created

7aa191d chore(legal): @0xarcher has signed the CLA

Charm created

abf15f5 chore(legal): @maxbrunet has signed the CLA

Charm created

af86738 fix: detect and stop tool call infinite loops (#2130) (#2214)

Click to expand commit body
Add smart loop detection as a stop condition for agent execution. When
the same tool call signature (name + input + output) appears more than
5 times within a 10-step window, the agent stops instead of running
until context window exhaustion.

huaiyuWangh created

ddf2fad chore: update fantasy with fix for json schema in openai (#2221)

Click to expand commit body
https://github.com/charmbracelet/fantasy/pull/138

Andrey Nering created

992a7b2 v0.43.0

Andrey Nering created

889d2ce chore(deps): update catwalk

Andrey Nering created

4f5d31d chore(deps): update catwalk

Andrey Nering created

b68521f chore(deps): update fantasy (#2220)

Andrey Nering created

db46f5e chore: auto-update files

Charm created

45663b7 chore: update catwalk to v0.19.0

Andrey Nering created

aa1ea49 fix: add io.net api key validation fallback

Andrey Nering created

27548b6 docs(readme): mention io.net provider

Andrey Nering created

d34c56b Merge pull request #2204 from charmbracelet/charm-1151-toggling-open-a-block-while-streaming-causes-jitter

Click to expand commit body
fix(ui): chat: use follow indicator to determine auto-scrolling behavior

Ayman Bagabas created

1f9f190 chore(legal): @PHPCraftdream has signed the CLA

Charm created

8ccb3c7 feat(pills): add toggle todos/pills menu item (#2202)

Christian Rocha created

eae61e1 fix(ui): completions offset for attachments row (#2208)

Click to expand commit body
refs #2129

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Carlos Alexandro Becker created

d7e2252 perf: replace regex-based gitignore with glob-based matching (#2199)

Click to expand commit body
Replace github.com/sabhiram/go-gitignore (regex-based) with
github.com/go-git/go-git/v5/plumbing/format/gitignore (glob-based).

Key optimizations:
- Two-level caching: per-directory pattern cache + combined matcher cache
- O(1) fast-path for common directories (node_modules, .git, __pycache__, etc.)
- Pre-build combined matchers to avoid O(depth) pattern walking per file
- Proper isDir parameter for directory-specific patterns (e.g., "backup/")

Profiling showed 80% CPU in regexp.tryBacktrack from the old library when
walking large monorepos (771k files). After this change, gitignore matching
drops to ~2% of CPU time.

💘 Generated with Crush

Assisted-by: AWS Claude Opus 4.5 via Crush <crush@charm.land>

Austin Cherry created

faec9a2 chore(legal): @wallacegibbon has signed the CLA

Charm created

976cca1 chore: upgrade lipgloss and colorprofile to fix windows terminal bash

Click to expand commit body
detection

Ayman Bagabas created

0c74e47 v0.42.0

Andrey Nering created

f791e5c fix: change binding to open/close todo list from `ctrl+space` to `ctrl+t` (#2201)

Click to expand commit body
`ctrl+space` is used by some terminal emulators and operating system,
so some users were enable to use it. `ctrl+t` should work everywhere.

Fixes #1618

Andrey Nering created

5179b28 feat(lsp): show user-configured LSPs in the UI (#2192)

Click to expand commit body
* feat(lsp): show user-configured LSPs in the UI

This will show the user-configured LSPs as stopped in the UI.

Maybe we should have a different state for "waiting"?

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* chore(lsp): mark "unstarted" LSPs as such, use named styles

* fix: add unstarted state

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Co-authored-by: Christian Rocha <christian@rocha.is>

Carlos Alexandro Becker and Christian Rocha created

baedc28 fix: address potential panic on shell command execution (#2200)

Click to expand commit body
This panic happen once in a while on CI on Windows specifically.
I personally never saw it happening myself, but I think it's possible
to happen for the end user on Windows as well.

Looks like a potential bug on the interpreter, but in the meantime let's
at least recover from the panic and gracefully handle it.

    panic: ended up with a non-nil exitStatus.err but a zero exitStatus.code

    goroutine 61 [running]:
    mvdan.cc/sh/v3/interp.(*Runner).Run(0xc000220848, {0x1415220e0, 0xc00021a1e0}, {0x14151e088, 0xc00025a600})
    	C:/Users/runneradmin/go/pkg/mod/mvdan.cc/sh/v3@v3.12.1-0.20250902163504-3cf4fd5717a5/interp/api.go:929 +0x6b2
    github.com/charmbracelet/crush/internal/shell.(*Shell).execCommon(0xc000256360, {0x1415220e0, 0xc00021a1e0}, {0x14135a250, 0x9}, {0x14151baa0, 0xc00025a540}, {0x14151baa0, 0xc00025a580})
    	D:/a/crush/crush/internal/shell/shell.go:273 +0x285
    github.com/charmbracelet/crush/internal/shell.(*Shell).execStream(...)
    	D:/a/crush/crush/internal/shell/shell.go:288
    github.com/charmbracelet/crush/internal/shell.(*Shell).ExecStream(0xc000256360, {0x1415220e0, 0xc00021a1e0}, {0x14135a250, 0x9}, {0x14151baa0, 0xc00025a540}, {0x14151baa0, 0xc00025a580})
    	D:/a/crush/crush/internal/shell/shell.go:111 +0x139
    github.com/charmbracelet/crush/internal/shell.(*BackgroundShellManager).Start.func1()
    	D:/a/crush/crush/internal/shell/background.go:122 +0x15f
    created by github.com/charmbracelet/crush/internal/shell.(*BackgroundShellManager).Start in goroutine 28
    	D:/a/crush/crush/internal/shell/background.go:119 +0x72a

Andrey Nering created

0b618f4 fix: ensure all providers are shown unless `disable_default_providers` is set (#2197)

Andrey Nering created

f22ec5f chore: auto-update files

Charm created

5b2a0bf fix(grep): do not go outside cwd, add timeout (#2188)

Click to expand commit body
* fix(grep): do not go outside cwd, add timeout

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: timeout config

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Carlos Alexandro Becker created

9940e83 chore(deps): update catwalk to v0.18.0 (#2198)

Andrey Nering created

d320f12 Merge pull request #2191 from charmbracelet/charm-1152-sessions-dialog-is-too-big

Click to expand commit body
fix(ui): adjust sessions dialog size

Ayman Bagabas created

8a6f25f chore(taskfile): run binary with extension on windows

Andrey Nering created

f87d95b fix(ui): correctly position cursor when attachments are present (#2190)

Click to expand commit body
This change fixes a UI issue where the cursor is off by one line when
attachments are present in the editor.

Ayman Bagabas created

361a318 fix(ui): ensure the min size accounts for the dialog border

Ayman Bagabas created

8eb4dc0 chore(taskfile): add `-v` to `go build`

Andrey Nering created

7f3d7c7 refactor: use csync.Map for regex caches (#2187)

Click to expand commit body
* refactor: use csync.Map for regex caches

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: lint

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* ci: golangci-lint 2.9

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Carlos Alexandro Becker created

0ed5806 ci: golangci-lint 2.9 (#2193)

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

Carlos Alexandro Becker created

155fc61 fix(ui): dialogs: loop around and scroll list when navigating with up/down keys

Ayman Bagabas created

4f3b056 fix(ui): truncate dialog titles with ellipsis

Ayman Bagabas created

5c29ad2 docs(ui): comment typo

Ayman Bagabas created

9917b22 fix(ui): adjust sessions dialog size

Click to expand commit body
Use a more reasonable size for the sessions dialog.

Ayman Bagabas created

d1032ba fix: respect disable_default_providers (#2177)

Click to expand commit body
* fix: respect disable_default_providers

closes #1949

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: use x/slice

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: fail if no providers

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* test: fix

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Carlos Alexandro Becker created

47ca98d fix(config): correct Task agent ID in SetupAgents (#2101)

M1xA created