Skip to content

chore(main): release 4.0.0 #1191

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 3, 2025
Merged

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Jul 24, 2025

🤖 I have created a release beep boop

4.0.0 (2025-08-02)

⚠ BREAKING CHANGES

  • mappings: use C-Space as default completion trigger instead of Tab
  • providers: github_models provider is now disabled by default, enable with providers.github_models.disabled = false
  • resources: intelligent resource processing is now disabled by default, use config.resource_processing: true to reenable
  • context: Multiple breaking changes due to big refactor:
    • The context API has changed from callback-based input handling to schema-based definitions.
    • config.contexts renamed to config.tools
    • config.context removed, use config.sticky
    • diagnostics moved to separate tool call, selection and buffer calls no longer include them by default
    • gi renamed to gc, now also includes selection
    • filenames renamed to glob
    • files removed (use glob together with tool calling instead, or buffers/quickfix)
    • copilot extension agents removed, tools + mcp servers can replace this feature and maintaining them was pain, they can still be implemented via custom providers anyway
    • actions and integrations action removed as they were deprecated for a while
    • config.questionHeader, config.answerHeader moved to config.headers.user/config.headers.assistant

Features

  • add Windows_NT support in Makefile and dynamic library loading (#1190) (7559fd2)
  • context: switch from contexts to function calling (057b8e4), closes #1045 #1090 #1096 #526
  • display group as kind when listing resources (#1215) (450fcec)
  • functions: automatically parse schema from url templates (#1220) (950fdb6)
  • health: add temp dir writable check (#1239) (02cf9e5)
  • mappings: use C-Space as default completion trigger instead of Tab (ea41684)
  • prompts: add configurable response language (#1246) (ced388c), closes #1086
  • providers: add info output to panel for copilot with stats (#1229) (1713ce6)
  • providers: new github models api, in-built authorization without copilot.vim dep (#1218) (9c4501e), closes #1140
  • providers: prioritize gh clie auth if available for github models (#1240) (01d38b2)
  • resources: add option to enable resource processing (#1202) (6ac77aa)
  • ui: add window.blend option for controllin float transparency (#1227) (a01bbd6), closes #1126
  • ui: highlight copilotchat keywords (#1225) (8071a69)
  • ui: improve chat responsiveness by starting spinner early (#1205) (9d9b280)

Bug Fixes

  • add back sticky loading on opening window (#1210) (1d6911f)
  • chat: do not allow sending empty prompt (#1245) (c3d0048), closes #1189
  • chat: handle empty prompt and tools before ask (#1258) (bad83db)
  • chat: handle skipped tool calls with explicit error result (#1259) (936426a)
  • chat: highlight keywords only in user messages (#1236) (425ff0c)
  • chat: improve how sticky prompts are stored and parsed (#1233) (82be513)
  • chat: properly replace all message data when replacing message (#1244) (d1d155e)
  • chat: properly reset modifiable after modifying it (#1234) (fc93d1c)
  • chat: show messages in overlay (#1237) (1a17534)
  • check for explicit uri input properly (#1214) (b738fb4)
  • files: use also plenary filetype on top of vim.filetype.match (#1250) (9fd068f), closes #1249
  • functions: change neovim://buffer to just buffer:// to avoid conflicts (#1252) (3509cf0)
  • functions: if enum returns only 1 choice auto accept it (#1209) (e632470)
  • functions: if schema.properties is empty, do not send schema (#1211) (8a5cda1)
  • functions: properly allow skipping handling for tools (#1257) (4d2586b)
  • functions: properly escape percent signs in uri inputs (#1212) (d905917)
  • functions: properly filter tool schema from functions (#1243) (f7a3228)
  • functions: properly handle multiple tool calls at once (#1198) (dd06166)
  • functions: properly resolve defaults for diagnostics (#1201) (946069a), closes #1200
  • functions: properly send prompt as 3rd function resolve param (#1221) (c03bd1d)
  • functions: use vim.filetype.match for non bulk file reads (#1226) (b124b94), closes #1181
  • healthcheck: chance copilot.vim dependency to optional (#1219) (d9f4e29)
  • prompt: be more specific when definining what is resource (#1238) (7c82936)
  • properly validate source window when retrieving cwd (#1231) (f53069c), closes #1230
  • providers: do not save copilot.vim token (#1223) (294bcb6)
  • quickfix: use new chat messages instead of old chat sections for populating qf (#1199) (e0df6d1)
  • ui: do not allow empty separator (#1224) (67ed258)
  • ui: fix check for auto follow cursor (#1222) (1f96d53)
  • update sticky reference for commit messages (#1207) (dab5089)
  • update to latest lua actions and update README (#1196) (b4b7f9c)
  • utils: remove temp file after curl request is done (#1235) (dec3127), closes #1194

This PR was generated with Release Please. See documentation.

@github-actions github-actions bot changed the title chore(main): release 3.13.0 chore(main): release 4.0.0 Jul 28, 2025
@github-actions github-actions bot force-pushed the release-please--branches--main branch 6 times, most recently from e499970 to 8bd6f45 Compare July 28, 2025 02:52
@jellydn jellydn requested a review from Copilot July 28, 2025 02:55
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This is an automated release PR generated by Release Please to bump the version from 3.12.2 to 4.0.0. The release includes significant breaking changes related to a major refactor of the context API, switching from callback-based input handling to schema-based definitions and function calling.

Key changes:

  • Major version bump to 4.0.0 indicating breaking changes
  • Addition of new changelog entry documenting breaking changes, features, and bug fixes
  • Context API refactor with multiple breaking changes including config restructuring and removal of deprecated features

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
version.txt Updates version number from 3.12.2 to 4.0.0
CHANGELOG.md Adds comprehensive changelog entry for v4.0.0 with breaking changes, features, and bug fixes

@github-actions github-actions bot force-pushed the release-please--branches--main branch 20 times, most recently from d71f140 to 18ae54e Compare July 30, 2025 20:55
@github-actions github-actions bot force-pushed the release-please--branches--main branch 19 times, most recently from 6762af0 to 11f5cf2 Compare August 1, 2025 21:20
@deathbeam
Copy link
Collaborator

deathbeam commented Aug 2, 2025

Function Calling Support and Context Rework ("Agent" Mode)

We’ve reworked contexts into functions. Each function can have a schema and a URI, and can be provided to the LLM as a tool using the new @<function> notation. You can also group functions and provide them all at once with @<function_group>. Functions with a URI can be referenced directly in prompts using the #<function> notation (as before). The LLM can now return resources in its responses, which are automatically added as sticky prompts via the ##<uri> notation.

In summary:

  • Every function can act as a tool for the LLM.
  • Functions with a unique identifier (URI) can be referenced as resources, either by full URI or the simplified #<name>:[input] syntax.
  • The workflow is explicit and transparent: you always know what is being shared and can control it.

Philosophy: Transparency and Control

A key goal of this redesign is to maximize transparency and user control. All tool and resource sharing is explicit - nothing is sent or shared in the background without your knowledge. You always see what is being provided to the LLM and can choose what to include or remove at every step. This approach may be more manual, but it ensures you remain in control of your data and workflow.

Workflow Example

Suppose you open chat in the CopilotChat.nvim directory and want an overview. You give the LLM access to the @copilot tool group (the built-in tools) and ask about the directory structure:

Tool group prompt

The LLM selects the appropriate tool, fills in its arguments, and asks you to confirm the call. The tool call is added to the prompt; you can remove it if you don't want to send it.

Tool call confirmation

After confirmation, the response is a URI (because the glob function has a URI), which can be referenced as a sticky prompt. This means you can keep it for the rest of the conversation or remove it to save tokens. The reference is always up to date, as it is re-resolved each time.

Sticky prompt with glob resource
Final prompt with sticky resource

You can continue asking about other things, like the README. The same process applies: tool call, confirmation, response, and sticky resource.

README tool call

At any point, you can use gc to see all active tools, selections, resource contents, system prompt, etc.

mcphub.nvim Integration

Read the integration post by @ravitemer here.

The plugin interface is now closer to MCP, making integration with projects like mcphub.nvim seamless (with some deviations for simplicity and security). Thanks to mcphub.nvim, integrating MCP servers is easy (e.g., GitHub MCP server):

mcphub.nvim integration

Other Notable Changes

  • Resource processing is now disabled by default. Previously, some files were skipped if deemed irrelevant, which was confusing. With tool calling, RAG-like functionality is less necessary, so this feature may be removed in the future.
  • Default completion mapping changed: Now <C-Space> instead of <Tab>, to avoid conflicts with copilot.vim. You can change it back if you prefer.
  • copilot.vim (and copilot.lua) are no longer hard dependencies. The plugin now supports device authorization for Copilot tokens, so you no longer need to generate tokens via copilot.vim.
  • Many other small changes, performance improvements, and bugfixes - see the full release notes for details.

@github-actions github-actions bot force-pushed the release-please--branches--main branch 3 times, most recently from e4754de to 9e7990d Compare August 2, 2025 16:30
@github-actions github-actions bot force-pushed the release-please--branches--main branch from 9e7990d to fb2c4e1 Compare August 2, 2025 16:52
@deathbeam deathbeam merged commit 95d4d7a into main Aug 3, 2025
1 check passed
@deathbeam deathbeam deleted the release-please--branches--main branch August 3, 2025 04:34
Copy link
Contributor Author

github-actions bot commented Aug 3, 2025

🤖 Created releases:

🌻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment