abf15f5
chore(legal): @maxbrunet 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)
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)
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
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)
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)
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
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)
`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)
* 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)
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)
* 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
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)
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)
* 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)
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
Use a more reasonable size for the sessions dialog.
Ayman Bagabas created
d1032ba
fix: respect disable_default_providers (#2177)
* 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
22ed1e5
fix: clear regex cache on new session to prevent unbounded growth (#2161)
M1xA created
d6643a6
fix(lsp): files outside cwd (#2180)
closes #1401 Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Carlos Alexandro Becker created
48157c6
fix(sqlite): increase busy timeout (#2181)
Also refactor so we have the same pragmas on both drivers. I couldn't reproduce OP's issue, but they're likely trying to use many Crush instances at the same time, which may cause this. The timeout was 5s only, so it was kind of easy to hit under load, I presume. Upping it to 30s should improve that. AFAIK there's no much else we can do. See https://www.sqlite.org/rescode.html#busy Closes #2129 Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Carlos Alexandro Becker created
09cea77
chore: auto-update files
Charm created
82b7aec
chore: add `omitempty` back as `omitzero`
Andrey Nering created
7a83144
chore: update `AGENTS.md`, mention `x/ansi` package
Andrey Nering created
d329ad5
chore(taskfile): add `run:onboarding` to test onboarding flow
Andrey Nering created
5e23ecd
chore: run `modernize`
Andrey Nering created
29800c4
chore(taskfile): add `modernize` task
Andrey Nering created
9e4f8e0
chore(taskfile): add `run:catwalk` task to run with local catwalk
Andrey Nering created
f962087
chore(taskfile): avoid compiling when not needed
Andrey Nering created