Releases: intitni/CopilotForXcode
0.11.1
New in 0.11.1
Don't update to this version if you don't have the problem.
- Remove the cache of file information each time a file is opened, which appears will disable the source extension sometimes(?). We will use the good old way to trigger real-time suggestion via Apple Scripts, but this time it will not dismiss the Xcode completion panel.
New in 0.11.0
- The widget is now taller.
- The UI of the chat panel has been updated, and now you can switch to a global chat that can be accessed for all files.
- Chat with Selection and Explain Selection will no longer start a new conversation.
- Enhance the suggestion feature by allowing the hiding of preceding spaces when suggesting heavily nested code. This can be enabled by right-clicking on the circular widget, which now opens a menu.
- Added a new chat plugin,
/airun
. You can use this plugin to generate and run a terminal command using natural language. Don't expect it to always work, and it may require a slightly higher number of tokens. - Added
/exit
to help you exit a chat plugin. - The
run
plugin will now inherit all environment variables from your login shell, allowing you to utilize any software installed through brew or other means. - The language server will inherit all environment variables from your login shell, which allows the app to search for node in a wider range of locations.
- Fix a widget position issue. I misunderstood what
NSScreen.main
is. - The continuous spaces in the selected code sent to the chat panel will now remain as they are and won't be replaced by a single space.
Pull Requests
Full Changelog: 0.11.0...0.11.1
0.11.0
- The widget is now taller.
- The UI of the chat panel has been updated, and now you can switch to a global chat that can be accessed for all files.
- Chat with Selection and Explain Selection will no longer start a new conversation.
- Enhance the suggestion feature by allowing the hiding of preceding spaces when suggesting heavily nested code. This can be enabled by right-clicking on the circular widget, which now opens a menu.
- Added a new chat plugin,
/airun
. You can use this plugin to generate and run a terminal command using natural language. Don't expect it to always work, and it may require a slightly higher number of tokens. - Added
/exit
to help you exit a chat plugin. - The
run
plugin will now inherit all environment variables from your login shell, allowing you to utilize any software installed through brew or other means. - The language server will inherit all environment variables from your login shell, which allows the app to search for node in a wider range of locations.
- Fix a widget position issue. I misunderstood what
NSScreen.main
is. - The continuous spaces in the selected code sent to the chat panel will now remain as they are and won't be replaced by a single space.
WWDC is coming.
Pull Requests
- enhancement by @ss18 in #121
- Improve chat panel UI by @intitni in #130
- Move data from SuggestionWidget to Service by @intitni in #131
- Global chat by @intitni in #133
- Hide common preceding spaces for suggestion by @intitni in #134
- AI terminal by @intitni in #135
- Fix widget position by @intitni in #136
New Contributors
Full Changelog: 0.10.0...0.11.0
0.10.0
- You can now run terminal commands directly from the chat panel by using the
/run
command followed by your command, such as/run echo hello
. Note that environment variables are currently inherited from the app, so any items installed with brew may not be discoverable. - The OpenAI account settings have been improved for better user-friendliness.
- GitHub Copilot now supports more file types.
- Server errors will no longer appear in the widget but can be viewed in the log using Console.app.
- Real-time suggestions no longer require Apple Script involvement. So that it will never block the editor or dismiss the Xcode completion panel.
- For users experiencing issue #70, there is now a workaround to accept suggestions without using Apple Script to click the menu. However, the experience may not be optimal. You can turn it on in the host app.
- The text field in the chat panel will now be automatically activated when opened.
- Code blocks within chats are now syntax highlighted, and a copy button has been added to the top right corner of the code block.
- Prompts are improved to make prompt to edit code easier in the chat panel.
This release includes bug fixes that may have resolved issues #95 and #92, but as I cannot reproduce them on their own machine, I cannot confirm that they are fixed. Additionally, for Monterey users, the chat panel has been tweaked to support multiline input and correctly display the wipe history button.
Help wanted: #122 The helper app stutters when launched by launch agent
Pull Requests
- fix typo in SuggestionInjector.swift by @eltociear in #79
- Fix tab button hidden by panel by @intitni in #93
- Tweak chat panel behavior by @intitni in #98
- Cache filespace info automatically on file change by @intitni in #104
- Stop presenting LSP ServerErrors to the widget by @intitni in #105
- Accept suggestions via Accessibility API in widgets by @intitni in #106
- Improve prompt for chat by @intitni in #109
- Chat plugin - terminal by @intitni in #114
- Support more languages by @intitni in #115
- Never use apple script to trigger real-time suggestions by @intitni in #116
- Plugin tweak by @intitni in #117
- Support syntax highlighting and copy code in chat panel by @intitni in #118
- Allow ChatGPT Model and Reply in Language to be selected in Picker by @SNQ-2001 in #100
New Contributors
- @eltociear made their first contribution in #79
- @SNQ-2001 made their first contribution in #100
Full Changelog: 0.9.1...0.10.0
0.9.1
New commands:
- Chat with Selection: Open a chat window, if there is a selection, the selected code will be added to the prompt.
- Explain Selection: Open a chat window and explain the selected code.
To use these 2 commands, you will need to provide a valid OpenAI API key. Check the new account settings for details. The chat is currently limited to 5 conversations. Exceeding token limit is not handled.
Other updates:
I've spent too much time on this this month and it's making me very tired. I think I need to take a break, so please note that I may not be instantly responding to issues or pull requests for a while. Good night.
0.8.6
- Fix that the widget was not showing when Xcode was in fullscreen mode.
- Add light mode support. You can set it up in the host app.
- Add a linear gradient below the host app status bar.
Full Changelog: 0.8.5...0.8.6
Let's just pretend that there is no more bug in 0.8.x.
0.8.5-Update-1
Update 1: Fix syntax highlighting for Objective-C #48
- May fix #43 that the app is freezing for some users by changing
LazyVGrid
toVStack
(Why?). Big thanks to @timwredwards and @cr2s367067 for helping me locate the bug. I wasn't able to reproduce the bug on 2 of my machines, so I'm not completely certain that it's fixed or that it won't resurface in the future. - Done some cleanup in the suspicious areas that look relevant to the bug.
- Updated copilot.vim to 1.8.3
If the app still freezes, please reply to issue #43, and give 0.8.4 a try. Maybe I made some mistakes again, sigh.
0.8.5
- May fix #43 that the app is freezing for some users by changing
LazyVGrid
toVStack
(Why?). Big thanks to @timwredwards and @cr2s367067 for helping me locate the bug. I wasn't able to reproduce the bug on 2 of my machines, so I'm not completely certain that it's fixed or that it won't resurface in the future. - Done some cleanup in the suspicious areas that look relevant to the bug.
- Updated copilot.vim to 1.8.3
If the app still freezes, please reply to issue #43, and give 0.8.4 a try. Maybe I made some mistakes again, sigh.
0.8.4-pre-release
Update 1: Remove an unused preference key
This is a quick fix to #43. I am not sure if it's the real fix, so it will stay as a pre-release for a while.
If you have encountered this issue and find that the update fixes it, please give this release an emoji. If it's still not working, please reply to issue #43
Big thanks to @timwredwards and @cr2s367067 for helping me locate the bug.
Good night everyone.
0.8.3
If the app is freezing for you, please check the 0.8.4 pre-release
- Add a new toggle to enable the floating widget to align with the text cursor for a more obvious suggestion display.
- Remove the requirement for
Input Monitoring
. Accessibility API permissions can already achieve input monitoring. TheInput Monitoring
was used because I wanted to uselistenOnly
instead ofdefaultTap
. But the term was scary to some users. - Bring back real-time suggestion when the completion panel is shown.
- Support syntax highlighting, and display spaces as middle dots. Fix line break mode of suggestion (by accident).
- Hide the real-time suggestion indicator for floating widget mode.
- Fix that if you switch to another file during the fetch of a suggestion, the suggestion from the previous file will still be presented.
- Lower the widget's z level, which is currently set too high.
- Fix that real-time suggestion cancellation fails after switching to another app and back to Xcode.
- Update to use release rss to check for update
The next update will focus on some ChatGPT-powered features because my free credits are expiring soon! We will start with some simple commands like "Explain Selected Code".
0.8.2
- Fix that the app may just freeze.
To quickly fix the bug, I need to disable the feature to generate real-time suggestions when the Xcode completion panel is displayed. I will bring a better fix soon. For now, if Input Monitoring is turned on, you can hit ESC to close the panel and at the same time trigger real-time suggestion.
- Add automatically check for update, you can turn in on in the host app.
The 0.8 update:
-
I have added a new presentation mode called 'Floating Widget', which can be turned on from the host app. In this mode, suggestions will be presented in a floating window next to a floating widget.
The floating widget will stay at the bottom of the editor area and will automatically move left or right if there is not enough space for the suggestion window.
If a suggestion is presented, you can click on the widget to hide/show it.
- Real-time suggestions have been improved with the following tweaks:
- It can now be triggered without requiring Input Monitoring permissions. However, if you want to enable the cancellation feature using esc or mouse click, Input Monitoring is still necessary.
- The likelihood of the editor being blocked has been significantly reduced. Blocking will only occur at most once for each file after each restart of the extension. Once a command has been executed and some information is cached, the extension will be able to trigger real-time suggestion using a different method that doesn't cause any blocking.
- Replace the display link with
AXObserver
for better performance. - Fix that the settings in the host app were not reflecting the real settings.
- And maybe something else I don't remember.
I personally find the floating widget mode to be quite good, and I'm starting to feel like the real-time suggestion mode is finally usable. If you have any suggestions about the floating widget mode, please reply to this issue.