Commit log

2eaad51 fix: remove timout

Kujtim Hoxha created

5f67a58 chore(legal): @uri has signed the CLA

Charm created

8b12e09 fix(lint): correct shadowed variable

Christian Rocha created

6a29441 chore: remove extraneous comment

Christian Rocha created

169b63f fix(keyboard-input): operate on characters, not bytes

Christian Rocha created

1bc41c8 fix(tui): guard against panics in map member access

Christian Rocha created

3c82e31 ci(goreleaser): start releasing for android / termux (#780)

Click to expand commit body
Closes #576

Andrey Nering created

4932b38 chore(legal): @neomantra has signed the CLA

Charm created

0354fef fix(fsext): prevent `.*` on gitignore from ignoring entire root dir (#766)

Click to expand commit body
Fixed critical bug where gitignore patterns like `.*` would match the root
directory itself, causing `filepath.SkipDir` to abort entire file listing.
The fix prevents gitignore rules from applying to the scan root directory,
matching Git's actual behavior.

James Trew created

659d81a ci(issue-labeler): add android label

Andrey Nering created

4315b71 chore: update codeowners (#760)

Click to expand commit body
* chore: update codeowners

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

* Update CODEOWNERS

---------

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

Carlos Alexandro Becker created

5af4d19 feat(mcp): ping and recreate mcp client if needed (#772)

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

Carlos Alexandro Becker created

5ff0f32 fix(gemini): fix tool calls for google gemini (#779)

Samiul Islam created

a4100a7 chore(legal): @samiulsami has signed the CLA

Charm created

e815b71 chore: auto-update generated files

actions-user created

90097e9 feat(lsp): add filetypes configuration (#666)

Click to expand commit body
* feat(lsp): add filetypes configuration

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

* fix: simplify

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

* fix: test

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

* refactor: cleanup

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

* fix: improvements

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

* fix: accept fts and exts

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

f8da476 fix(lsp): return a copy of lsp diagnostics to avoid data race (#681)

Click to expand commit body
* fix(lsp): return a copy of lsp diagnostics to avoid data race

* Replace maps.Copy with maps.Clone

Liiiz created

57df1f9 fix(tui): underline quit dialog buttons (#548)

Click to expand commit body
This underlines the "Y" and "N" in "Yep!" and "Nope" of the quit dialog
to make it consistent with other dialogs and indicates that these
buttons can be activated by a key press.

Ayman Bagabas created

ed5e17e chore(deps): bump github.com/ncruces/go-sqlite3 from 0.25.0 to 0.27.1 (#728)

Click to expand commit body
Bumps [github.com/ncruces/go-sqlite3](https://github.com/ncruces/go-sqlite3) from 0.25.0 to 0.27.1.
- [Release notes](https://github.com/ncruces/go-sqlite3/releases)
- [Commits](https://github.com/ncruces/go-sqlite3/compare/v0.25.0...v0.27.1)

---
updated-dependencies:
- dependency-name: github.com/ncruces/go-sqlite3
  dependency-version: 0.27.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

0e7d61b chore(deps): bump github.com/openai/openai-go from 1.11.1 to 1.12.0 (#717)

Click to expand commit body
Bumps [github.com/openai/openai-go](https://github.com/openai/openai-go) from 1.11.1 to 1.12.0.
- [Release notes](https://github.com/openai/openai-go/releases)
- [Changelog](https://github.com/openai/openai-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/openai/openai-go/compare/v1.11.1...v1.12.0)

---
updated-dependencies:
- dependency-name: github.com/openai/openai-go
  dependency-version: 1.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

bc52493 feat(mcp): configurable MCP timeout

Click to expand commit body
closes #604
closes https://github.com/charmbracelet/crush/discussions/754

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

Carlos Alexandro Becker created

09fca23 chore(deps): bump github.com/charmbracelet/catwalk from 0.4.6 to 0.4.10 (#716)

Click to expand commit body
Bumps [github.com/charmbracelet/catwalk](https://github.com/charmbracelet/catwalk) from 0.4.6 to 0.4.10.
- [Release notes](https://github.com/charmbracelet/catwalk/releases)
- [Changelog](https://github.com/charmbracelet/catwalk/blob/main/.goreleaser.yaml)
- [Commits](https://github.com/charmbracelet/catwalk/compare/v0.4.6...v0.4.10)

---
updated-dependencies:
- dependency-name: github.com/charmbracelet/catwalk
  dependency-version: 0.4.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

dcca5ab fix: truncate long paths in compact header (#773)

Click to expand commit body
* fix(lint): normalize method pointer receiver names
* chore(compact-header): bake var as const
* chore(compact-header): reduce idential consts
* chore(compact-header): reduce allocs and function calls
* chore(compact-header): remove magic numbers
* chore(compact-header): further reduce allocs and function calls
* fix(compact-header): truncate path if it's too long
* chore: go mod tidy
* fix(compact-header): color cwd
* chore(compact-header): improve a var name

Christian Rocha created

0f403fe fix(llm): set request timeout (#736)

Click to expand commit body
* fix(llm): set request timeout

If the server is down, address don't resolve, or another myriad of
reasons, currently, it'll get stuck.

This makes it so it times out after 1 minute.

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

* fix: remove log

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

16f5400 fix(lint): check length before slicing to avoid a panic in list

Christian Rocha created

64e8235 chore: bump dependencies to fix linux console perf

Ayman Bagabas created

eb3ef66 chore: bump bubbletea to v2.0.0-beta.4.0.20250813201422-d4d69f63338d

Ayman Bagabas created

e0042b4 chore: bump bubbletea to v2.0.0-beta.4.0.20250813191918-4ea1703d4181

Ayman Bagabas created

073d130 fix(mcp): tool output join with new line (#686)

Click to expand commit body
* fix(mcp): tool output join with new line

refs #604
refs #658

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

* fix: make

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

4d63624 fix: add top padding

Kujtim Hoxha created

d795c00 fix: make the queue push the messages above

Kujtim Hoxha created

b159b36 chore(legal): @orospakr has signed the CLA

Charm created

96dcf0d fix: stdio mcp startups to match mark3labs upgrade (#742)

Tai Groot created

39ede6e fix(editor): better sorting of files when completing with / (#733)

Click to expand commit body
* fix(editor): better sorting of files when completing with /

basically, show shorter paths first

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

* Update internal/tui/components/chat/editor/editor.go

Co-authored-by: Andrey Nering <andreynering@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

b550c69 feat: steering (#605)

Click to expand commit body
* feat: enable steering the model while in the loop
* feat: show queued messages in the TUI

Kujtim Hoxha created

afbdba1 chore(deps): bump google.golang.org/genai from 1.3.0 to 1.19.0 (#726)

Click to expand commit body
Bumps [google.golang.org/genai](https://github.com/googleapis/go-genai) from 1.3.0 to 1.19.0.
- [Release notes](https://github.com/googleapis/go-genai/releases)
- [Changelog](https://github.com/googleapis/go-genai/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/go-genai/compare/v1.3.0...v1.19.0)

---
updated-dependencies:
- dependency-name: google.golang.org/genai
  dependency-version: 1.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

142e266 v0.5.0

Andrey Nering created

dba44be fix(sidebar): fix full path appearing on sidebar on windows

Andrey Nering created

705d6f6 fix(sidebar): compute the right line count even on windows / crlf

Click to expand commit body
The diff library we're using assumes LF, so we need to convert CRLF
to LF to ensure it works properly.

Andrey Nering created

a3efafc fix(tool): fix `edit` and `multi-edit` tools on windows

Click to expand commit body
We should convert the content to LF to apply the patch while still
respecting the original line endings when saving the file on disk.

Co-authored-by: theguy000 <istiakm30@gmail.com>

Andrey Nering and theguy000 created

bb94be2 chore: fix dependabot label

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

Carlos Alexandro Becker created

22b5c63 chore(deps): bump actions/checkout from 4 to 5 (#720)

Click to expand commit body
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

df23e9a feat(config): allow configure the default diff mode (#454)

bbrodriges created

dce9578 chore: bump glamour/ultraviolet/cellbuf for performance improvements

Click to expand commit body
Related: https://github.com/charmbracelet/crush/pull/687

Ayman Bagabas created

30b07f0 chore(deps): bump golang.org/x/text from 0.27.0 to 0.28.0 (#715)

Click to expand commit body
Bumps [golang.org/x/text](https://github.com/golang/text) from 0.27.0 to 0.28.0.
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.27.0...v0.28.0)

---
updated-dependencies:
- dependency-name: golang.org/x/text
  dependency-version: 0.28.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

bdb0a4c perf: reduce GC pressure in rendering pipeline (#687)

Click to expand commit body
The `renderIterator` function previously caused an extremely large
amount of small strings and other objects to be created and abandoned
during rendering, which caused performance issues after some time as the
GC had to occasionally collect all of these objects.

This was exacerbated by using streaming in models, which leads to
extremely frequent updates.

This commit refactors renderIterator to avoid constructing temporary
strings. Instead, the function now performs two passes:

1. A first pass in which the "fragments" to render are aggregated, but
   the `rendered` string is not yet copied and appended/prepended to.

2. A second pass, which uses a `strings.Builder` to efficiently
   construct the final output string.

This has *significantly* improved crush's performance for me. Whereas
before `perf` would show it spending up to 70% (!) of its time in
GC-related Go runtime functions, it now spends a trivial amount there.

pprof's heap profiling previously showed renderIterator as a massive
hotspot, whereas it now doesn't even show up in alloc `top` anymore.

The updated function is slightly harder to read. I did spend some time
trying different options for making it more readable, and also asking
various LLMs about it (using crush!), but ultimately didn't find
anything better than the two-pass solution.

tazjin created

95c4d55 ci: sync dependabot config (#308)

Charm created

42bcc33 chore(legal): @wwwjfy has signed the CLA

Charm created

d336224 chore(legal): @jamestrew has signed the CLA

Charm created

8d799d9 chore(legal): @liznear has signed the CLA

Charm created