592aceb
feat(ui): move attachments below the editor
Click to expand commit body
Experimenting with this.
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
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)
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
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>
* 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)
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>
* test: use t.Context() and synctest
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: passing down context to all shutdown funcs
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* perf(lsp): kill all clients on shutdown
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: exit posthog earlier
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* test: fix dirs test
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* test: fix projects test
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* test: fix race
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* Update internal/lsp/manager.go
Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com>
* fix: cleanup
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* test: race
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: Andrey Nering <andreynering@users.noreply.github.com>
Carlos Alexandro Becker
and
Andrey Nering
created
722093b
fix(ui): prevent nil pointer in completions size update (#2162)
kslamph
created
3b3a3d7
fix: prevent goroutine orphaning in mcp.Close() and shell.KillAll() (#2159)
M1xA
created
16ac973
chore(deps): bump the all group with 3 updates (#2174)
Click to expand commit body
Bumps the all group with 3 updates: [github.com/clipperhouse/displaywidth](https://github.com/clipperhouse/displaywidth), [github.com/clipperhouse/uax29/v2](https://github.com/clipperhouse/uax29) and [github.com/posthog/posthog-go](https://github.com/posthog/posthog-go).
Updates `github.com/clipperhouse/displaywidth` from 0.9.0 to 0.10.0
- [Release notes](https://github.com/clipperhouse/displaywidth/releases)
- [Changelog](https://github.com/clipperhouse/displaywidth/blob/main/CHANGELOG.md)
- [Commits](https://github.com/clipperhouse/displaywidth/compare/v0.9.0...v0.10.0)
Updates `github.com/clipperhouse/uax29/v2` from 2.5.0 to 2.6.0
- [Release notes](https://github.com/clipperhouse/uax29/releases)
- [Commits](https://github.com/clipperhouse/uax29/compare/v2.5.0...v2.6.0)
Updates `github.com/posthog/posthog-go` from 1.9.1 to 1.10.0
- [Release notes](https://github.com/posthog/posthog-go/releases)
- [Changelog](https://github.com/PostHog/posthog-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/posthog/posthog-go/compare/v1.9.1...v1.10.0)
---
updated-dependencies:
- dependency-name: github.com/clipperhouse/displaywidth
dependency-version: 0.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: all
- dependency-name: github.com/clipperhouse/uax29/v2
dependency-version: 2.6.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: all
- dependency-name: github.com/posthog/posthog-go
dependency-version: 1.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: all
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>