6b161d2
feat(config): allow custom providers of type gemini (#585)
Click to expand commit body
This change extends the provider configuration to allow users to define custom providers with `type: "gemini"`.
This enables connecting to any Gemini-compatible API by specifying its `base_url` and `api_key` within the `providers` section of `crush.json`. It supports complex setups, such as using a local proxy or a model-balancing service.
kslamph
created
3b6a375
feat: add alt/option+esc binding to current esc key behavior
Click to expand commit body
This mimics the behavior of Claude Code and allows folks who use
Crush from within a terminal emulator that captures the escape key
(like Nvim's built in terminal emulator) to use it.
* fix: disable providers
if we remove then from the list, they'll still show up because they
won't get merged with catwalk providers later on.
closes #1037
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix(mcp): improve timeout errors
refs #970
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: improve
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
0da5e6b
feat(lsp): load defaults by either name or command (#1109)
Click to expand commit body
* fix(lsp): load defaults by name or command name
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix(lsp): simplify
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
1f46a69
fix(grep): resolve Windows path parsing with null separation (#1095)
* fix(lsp): powernap load by name
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix(mcp): expand command
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix(lsp): expand command
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
701e550
feat(config): search`crush.json` recursively up from the working directory (#898)
- windows/arm/v7 was marked broken by the Go team
- add `-trimpath` to trim the `/home/etc` from logs
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
This commit ensures that the "Yes" and "No" options in the init screen
get properly selected when navigating with the keyboard.
Related: https://github.com/charmbracelet/crush/issues/1048
The summarization dialog was getting stuck in "Generating..." state due to two issues:
- Agent was formatting nil error values instead of actual response errors
- Dialog only handled summarize events but not error events, leaving it in loading state
💖 Generated with Crush
Co-authored-by: Crush <crush@charm.land>
The environment variable indicated to configure the Azure AI endpoint
did not match the value in [Catwalk][].
[Catwalk]: https://github.com/charmbracelet/catwalk/blob/9d9a86e3a4aec20b8874175c115a3533d5083b54/internal/providers/configs/azure.json#L6
Mike Steinert
created
f982965
chore(legal): @msteinert has signed the CLA
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Carlos Alexandro Becker
created
fa34edc
refactor: put tool descriptions in markdown files (#1077)
Click to expand commit body
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Carlos Alexandro Becker
created
91b6b31
fix(mcp): pass down mcp name to logger (#1078)
Click to expand commit body
This will make the logs more useful. Right now it would simply print the
MCP's library logs without any additional context, so you wouldn't know
which MCP is causing issues.
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Carlos Alexandro Becker
created
96af782
Revert "refactor(tidy): remove nested if and else block"
Click to expand commit body
This reverts commit a6e99fff52b4ab105df91f595a6e94ff3e8bd2cb.
kujtimiihoxha
created
5811c4a
refactor(tidy): remove nested if and else block
d66dfa2
fix(lsp): use csync for lsp clients (#1073)
Click to expand commit body
The map was being passed down everywhere, but the locking mechanism only
ever lived in `app.go`, which might cause concurrent access issues.
This changes it to a `*csync.Map`.
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* feat(lsp): remove internal watcher
It was only ever useful if the user edits files through their editor,
but we don't really need it assuming we only care about edits done by
Crush itself.
Basically, we lose that functionality, but save a bunch of file
descriptors and have improved perf.
Damn good deal if you ask me.
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: cleanup
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: remove rlimit
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: more cleanup
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
---------
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
6c380d4
feat: add attribution settings to config and bash tool (#1025)
Click to expand commit body
* feat: add attribution settings to config and bash tool
* fix(readme): move ephemeral data block back to cfg section
Closes: #445
Amolith
created
b00ffcc
feat: LSP implementation using x/powernap (#1011)
Click to expand commit body
* feat: LSP implementation using x/powernap
Replace custom LSP client implementation with the `charmbracelet/x/powernap` library, significantly reducing codebase complexity by removing ~12,000 lines of custom LSP protocol handling code. This migration introduces:
- **Simplified client architecture**: Replace custom LSP transport, protocol, and method handling with powernap's battle-tested implementation
- **Enhanced workspace support**: Add workspace markers and inactive LSP server detection capabilities from powernap
- **Improved configuration**: Integrate powernap's default LSP server configurations and settings
- **Reduced maintenance burden**: Remove custom protocol definitions, JSON marshaling, and transport layer code
- **More features**: e.g. workspace root markers, starting LSP servers only where these files exist
The refactor maintains existing functionality while leveraging powernap's robust LSP client foundation, making the codebase more maintainable and feature-rich.
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
chore: updates
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: code review
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* revert: unwanted change
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: improve code
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: schema
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: improve merge
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: unneeded changes
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: cleanup
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: several fixes
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: cleanup
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: more cleanup
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: use csync
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: did close
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: remove unused code
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: cleanup
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: cleanup
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: clean
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: cleanup
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* test: fix
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* refactor: improve func
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: http client debug
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
898f1ee
fix(config): look for more than just crush.md
Click to expand commit body
Crush used to show the initialization popup even when the project uses
something other than `CRUSH.md`. Crush already has support for loading
those other context files, like `CLAUDE.md` or `AGENTS.md`, so this just
changes the popup check logic to look for the same set it loads
Co-Authored-By: Crush <crush@charm.land>