Skip to content

Commit fae663f

Browse files
authored
chore: update develop branch (#2690)
1 parent e0780fa commit fae663f

File tree

21 files changed

+538
-366
lines changed

21 files changed

+538
-366
lines changed

.github/pull_request_template.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
## Checklist
3232

3333
- [ ] I've read the [contributing](https://github.com/olimorris/codecompanion.nvim/blob/main/CONTRIBUTING.md) guidelines and have adhered to them in this PR
34+
- [ ] I confirm that this PR has been majority created by me, and not AI (unless stated in the "AI Usage" section above)
3435
- [ ] I've run `make all` to ensure docs are generated, tests pass and [StyLua](https://github.com/JohnnyMorganz/StyLua) has formatted the code
3536
- [ ] _(optional)_ I've added [test](https://github.com/olimorris/codecompanion.nvim/blob/main/CONTRIBUTING.md#testing) coverage for this fix/feature
3637
- [ ] _(optional)_ I've updated the README and/or relevant docs pages

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
matrix:
1818
os: [ubuntu-latest]
1919
nvim_tag: [nightly, v0.11.0]
20-
name: ${{ matrix.os }}
20+
name: ${{ matrix.os }} / ${{ matrix.nvim_tag }}
2121
runs-on: ${{ matrix.os }}
2222
env:
2323
NVIM: ${{ matrix.os == 'windows-latest' && 'nvim-win64\\bin\\nvim.exe' || 'nvim' }}

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,26 @@
11
# Changelog
22

3+
## [18.5.1](https://github.com/olimorris/codecompanion.nvim/compare/v18.5.0...v18.5.1) (2026-01-24)
4+
5+
6+
### Bug Fixes
7+
8+
* **adapters:** check for nil in `openai_responses` ([#2662](https://github.com/olimorris/codecompanion.nvim/issues/2662)) ([e22c043](https://github.com/olimorris/codecompanion.nvim/commit/e22c04336b5c56e3839bfebd6d88944f014f4b30))
9+
* **adapters:** copilot supported endpoints ([#2691](https://github.com/olimorris/codecompanion.nvim/issues/2691)) ([dd98466](https://github.com/olimorris/codecompanion.nvim/commit/dd98466a893abf499fbd69ab9526b2da7c094fb8))
10+
* **tools:** remove globals for better concurrent tool usage ([#2680](https://github.com/olimorris/codecompanion.nvim/issues/2680)) ([c9d74dd](https://github.com/olimorris/codecompanion.nvim/commit/c9d74dd667cf609b4f2064ae7f5471285b5356cb))
11+
12+
## [18.5.0](https://github.com/olimorris/codecompanion.nvim/compare/v18.4.1...v18.5.0) (2026-01-21)
13+
14+
15+
### Features
16+
17+
* **ui:** better cursor scrolling in the chat ([#2670](https://github.com/olimorris/codecompanion.nvim/issues/2670)) ([6657e6f](https://github.com/olimorris/codecompanion.nvim/commit/6657e6fd594d3c9f6dd3ab9e26a0c76b8e7082e1))
18+
19+
20+
### Bug Fixes
21+
22+
* **chat:** buffers with duplicate short_paths ([#2665](https://github.com/olimorris/codecompanion.nvim/issues/2665)) ([e0780fa](https://github.com/olimorris/codecompanion.nvim/commit/e0780fa9fda504ffb89307cabcb6cbe1ce8eb60c))
23+
324
## [18.4.1](https://github.com/olimorris/codecompanion.nvim/compare/v18.4.0...v18.4.1) (2026-01-16)
425

526

CONTRIBUTING.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,36 @@ Before contributing a PR, please open up a discussion to talk about it. While I
88

99
The plugin has adopted semantic versioning. As such, any PR which breaks the existing API is unlikely to be merged.
1010

11-
### Plugin Philosophy
11+
### CodeCompanion is Omakase
1212

13-
**CodeCompanion enables developers to write better code, faster, through LLM interactions.**
13+
In Japanese cuisine, omakase means _"I'll leave it up to you"_ - the diner allows the chef to carefully select each course. CodeCompanion follows this philosophy: carefully curated features, rather than an all-you-can-eat buffet of every possible feature. In the world of LLMs, this means that CodeCompanion will never be at the bleeding edge. However, what it sacrifices in novelty, it makes up for in stability, reliability, and a great user experience.
1414

15-
When proposing new features, please ensure they align with this philosophy:
15+
**Breaking this down:**
16+
- **Intentional over exhaustive** - Each new feature is carefully considered against the whole menu rather than just the course itself
17+
- **Complementary** - New features compliment the dish rather than acting like an unnecessary side
18+
- **Maintainable** - Every addition is code that I commit to maintaining indefinitely
1619

17-
**In Scope:**
18-
- LLM interaction modes (chat, inline, cmd, workflows, agents)
19-
- Tools and context that extend LLM capabilities while coding
20-
- Integrations (MCP, adapters) that enhance LLM assistance
21-
- Essential infrastructure for reviewing and applying LLM-generated changes (diff providers, edit tracking, completion/action providers)
20+
### AI-Assisted Contributions
2221

23-
**Out of Scope:**
24-
- Elaborate UIs (beyond basic diff/review needs) or features that do not facilitate LLM-assisted code generation
25-
- Features better served by standalone plugins
26-
- General development tools not tied to LLM interactions
22+
While CodeCompanion itself is a tool for AI-assisted development, that does not mean I am willing to accept "vibe-coded" contributions - PRs where the contributor used an LLM to generate code but doesn't deeply understand what they're submitting.
2723

28-
**Questions to ask:**
29-
1. Does this help the LLM write code?
30-
2. Is this essential for users to accept/reject LLM code?
31-
3. Or is this nice-to-have feature that belongs in a separate plugin?
32-
4. To add this feature, are we looking at > 1,000 LOC of new code?
24+
**Red flags:**
25+
- User cannot explain implementation decisions when asked
26+
- Code doesn't match existing architectural patterns
27+
- Tests appear comprehensive but don't actually validate edge cases
28+
- Generic LLM patterns (overly defensive coding, verbose comments)
3329

34-
**If a feature is primarily about viewing what's already happened rather than enabling the next LLM interaction, it's out of scope.**
30+
**What I Expect**:
31+
- **Understand** the codebase before contributing (use the rules, read the tests, explore the architecture)
32+
- **Own** your contribution - you should be able to explain every line you submit
33+
- **Test** thoroughly - write tests that demonstrate you understand the feature
34+
- **Iterate** based on feedback - PRs are conversations, not fire-and-forget submissions
3535

36-
If your feature doesn't directly support LLM-assisted code generation or isn't minimal essential infrastructure, consider publishing it as a standalone plugin that works alongside CodeCompanion.
36+
> As a rule of thumb, use an LLM to create a feature _OR_ a test. But never both.
3737
3838
## How to Contribute
3939

40-
1. Open up a [discussion](https://github.com/olimorris/codecompanion.nvim/discussions) to propose your idea.
40+
1. Open up a [discussion](https://github.com/olimorris/codecompanion.nvim/discussions) to propose your idea - Save yourself time and effort by checking this is a feature that aligns with the project's goals.
4141
2. Fork the repository and create your branch from `main`.
4242
3. Add your feature or fix to your branch.
4343
4. Ensure your code follows the project's coding style and conventions.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
Thank you to the following people:
2020

2121
<p align="center">
22-
<!-- sponsors --><a href="https://github.com/unicell"><img src="https:&#x2F;&#x2F;github.com&#x2F;unicell.png" width="60px" alt="User avatar: Qiu Yu" /></a><a href="https://github.com/jfgordon2"><img src="https:&#x2F;&#x2F;github.com&#x2F;jfgordon2.png" width="60px" alt="User avatar: Jeff Gordon" /></a><a href="https://github.com/pratyushmittal"><img src="https:&#x2F;&#x2F;github.com&#x2F;pratyushmittal.png" width="60px" alt="User avatar: Pratyush Mittal" /></a><a href="https://github.com/JuanCrg90"><img src="https:&#x2F;&#x2F;github.com&#x2F;JuanCrg90.png" width="60px" alt="User avatar: Juan Carlos Ruiz" /></a><a href="https://github.com/Alexander-Garcia"><img src="https:&#x2F;&#x2F;github.com&#x2F;Alexander-Garcia.png" width="60px" alt="User avatar: Alexander Garcia" /></a><a href="https://github.com/LumenYoung"><img src="https:&#x2F;&#x2F;github.com&#x2F;LumenYoung.png" width="60px" alt="User avatar: Lumen Yang" /></a><a href="https://github.com/JPFrancoia"><img src="https:&#x2F;&#x2F;github.com&#x2F;JPFrancoia.png" width="60px" alt="User avatar: JPFrancoia" /></a><a href="https://github.com/pixlmint"><img src="https:&#x2F;&#x2F;github.com&#x2F;pixlmint.png" width="60px" alt="User avatar: Christian Gröber" /></a><a href="https://github.com/le4ker"><img src="https:&#x2F;&#x2F;github.com&#x2F;le4ker.png" width="60px" alt="User avatar: Panos Sakkos" /></a><!-- sponsors -->
22+
<!-- sponsors --><a href="https://github.com/unicell"><img src="https:&#x2F;&#x2F;github.com&#x2F;unicell.png" width="60px" alt="User avatar: Qiu Yu" /></a><a href="https://github.com/jfgordon2"><img src="https:&#x2F;&#x2F;github.com&#x2F;jfgordon2.png" width="60px" alt="User avatar: Jeff Gordon" /></a><a href="https://github.com/pratyushmittal"><img src="https:&#x2F;&#x2F;github.com&#x2F;pratyushmittal.png" width="60px" alt="User avatar: Pratyush Mittal" /></a><a href="https://github.com/JuanCrg90"><img src="https:&#x2F;&#x2F;github.com&#x2F;JuanCrg90.png" width="60px" alt="User avatar: Juan Carlos Ruiz" /></a><a href="https://github.com/Alexander-Garcia"><img src="https:&#x2F;&#x2F;github.com&#x2F;Alexander-Garcia.png" width="60px" alt="User avatar: Alexander Garcia" /></a><a href="https://github.com/LumenYoung"><img src="https:&#x2F;&#x2F;github.com&#x2F;LumenYoung.png" width="60px" alt="User avatar: Lumen Yang" /></a><a href="https://github.com/JPFrancoia"><img src="https:&#x2F;&#x2F;github.com&#x2F;JPFrancoia.png" width="60px" alt="User avatar: JPFrancoia" /></a><a href="https://github.com/pixlmint"><img src="https:&#x2F;&#x2F;github.com&#x2F;pixlmint.png" width="60px" alt="User avatar: Christian Gröber" /></a><a href="https://github.com/le4ker"><img src="https:&#x2F;&#x2F;github.com&#x2F;le4ker.png" width="60px" alt="User avatar: Panos Sakkos" /></a><a href="https://github.com/itskyedo"><img src="https:&#x2F;&#x2F;github.com&#x2F;itskyedo.png" width="60px" alt="User avatar: Kyedo" /></a><a href="https://github.com/jsit"><img src="https:&#x2F;&#x2F;github.com&#x2F;jsit.png" width="60px" alt="User avatar: Jay Sitter" /></a><!-- sponsors -->
2323
</p>
2424

2525
<p align="center">If <i>you</i> love CodeCompanion and use it in your workflow, please consider <a href="https://github.com/sponsors/olimorris">sponsoring me</a></p>

doc/codecompanion.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
*codecompanion.txt* For NVIM v0.11 Last change: 2026 January 10
1+
*codecompanion.txt* For NVIM v0.11 Last change: 2026 January 21
22

33
==============================================================================
44
Table of Contents *codecompanion-table-of-contents*
@@ -2048,7 +2048,7 @@ Palette - `description` - Description shown in the Action Palette -
20482048

20492049
**Optional frontmatter fields:** - `opts` - Additional options (see
20502050
|codecompanion--options| section) - `context` - Pre-loaded context (see
2051-
|codecompanion--prompts-with-context| section)
2051+
|codecompanion--context-placeholders| section)
20522052

20532053
**Prompt sections:** - `## system` - System messages that set the LLM’s
20542054
behaviour - `## user` - User messages containing your requests
@@ -5331,8 +5331,8 @@ required.
53315331
role = "user",
53325332
opts = { auto_submit = true },
53335333
-- Scope this prompt to the cmd_runner tool
5334-
condition = function()
5335-
return _G.codecompanion_current_tool == "cmd_runner"
5334+
condition = function(chat)
5335+
return chat.tools.tool and chat.tools.tool.name == "cmd_runner"
53365336
end,
53375337
-- Repeat until the tests pass, as indicated by the testing flag
53385338
-- which the cmd_runner tool sets on the chat buffer
@@ -5408,12 +5408,12 @@ Now let’s look at how we trigger the automated reflection prompts:
54085408
role = "user",
54095409
opts = { auto_submit = true },
54105410
-- Scope this prompt to only run when the cmd_runner tool is active
5411-
condition = function()
5412-
return _G.codecompanion_current_tool == "cmd_runner"
5411+
condition = function(chat)
5412+
return chat.tools.tool and chat.tools.tool.name == "cmd_runner"
54135413
end,
54145414
-- Repeat until the tests pass, as indicated by the testing flag
54155415
repeat_until = function(chat)
5416-
return chat.tools.flags.testing == true
5416+
return chat.tool_registry.flags.testing == true
54175417
end,
54185418
content = "The tests have failed. Can you edit the buffer and run the test suite again?",
54195419
},

doc/configuration/chat-buffer.md

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ require("codecompanion").setup({
4040
display = {
4141
diff = {
4242
enabled = true,
43-
provider = providers.diff, -- inline|split|mini.diff
43+
provider = providers.diff, -- inline|split|mini_diff
4444
},
4545
},
4646
})
@@ -582,22 +582,6 @@ require("codecompanion").setup({
582582
})
583583
```
584584

585-
```lua [Debug Window]
586-
require("codecompanion").setup({
587-
display = {
588-
chat = {
589-
-- Alter the sizing of the debug window
590-
debug_window = {
591-
---@return number|fun(): number
592-
width = vim.o.columns - 5,
593-
---@return number|fun(): number
594-
height = vim.o.lines - 2,
595-
},
596-
},
597-
},
598-
})
599-
```
600-
601585
```lua [Floating Window]
602586
require("codecompanion").setup({
603587
display = {

doc/configuration/prompt-library.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ Markdown prompts consist of two main parts:
141141

142142
**Optional frontmatter fields:**
143143
- `opts` - Additional options (see [Options](#options) section)
144-
- `context` - Pre-loaded context (see [Prompts with Context](#prompts-with-context) section)
144+
- `context` - Pre-loaded context (see [Context Placeholders](#context-placeholders) section)
145145

146146
**Prompt sections:**
147147
- `## system` - System messages that set the LLM's behaviour

doc/extending/agentic-workflows.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,12 @@ Now let's look at how we trigger the automated reflection prompts:
134134
role = "user",
135135
opts = { auto_submit = true },
136136
-- Scope this prompt to only run when the cmd_runner tool is active
137-
condition = function()
138-
return _G.codecompanion_current_tool == "cmd_runner"
137+
condition = function(chat)
138+
return chat.tools.tool and chat.tools.tool.name == "cmd_runner"
139139
end,
140140
-- Repeat until the tests pass, as indicated by the testing flag
141141
repeat_until = function(chat)
142-
return chat.tools.flags.testing == true
142+
return chat.tool_registry.flags.testing == true
143143
end,
144144
content = "The tests have failed. Can you edit the buffer and run the test suite again?",
145145
},

0 commit comments

Comments
 (0)