Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
b32302d
chore: Add target platform definition for Eclipse 2025-12
travkin79 Jul 23, 2026
235f437
chore: Use 2025-12.target in maven build and docs
travkin79 Jul 23, 2026
db815d9
chore: Replace Java 17 with 21
travkin79 Jul 23, 2026
b0185a6
chore: Unify output folders to target/classes
travkin79 Jul 23, 2026
ec717d3
chore: Fix compile error
travkin79 Jul 23, 2026
39c41d0
chore: Set project encoding to UTF-8
travkin79 Jul 23, 2026
1d0a0eb
chore: Add m2e launch config for mvn clean verify
travkin79 Jul 23, 2026
fc8d3f2
Replace obsolete terminal.tm target with a new one
travkin79 Jul 24, 2026
83eb9c1
Replace unusual comma character in MANIFEST.MF
travkin79 Jul 24, 2026
b7083bc
Explicitly define LSP4E / LSP4J dependency
travkin79 Jul 30, 2026
b81a384
Add LSP4E and LSP4J to update site / p2 repository
travkin79 Jul 30, 2026
d34110e
Clarify Eclipse version boundaries
travkin79 Sep 8, 2026
f0da91b
test: pin ui.jobs.test JUnit to 5.x so Tycho resolves a supported pro…
travkin79 Sep 18, 2026
b66d658
chore: Drop obsolete bundle ui.terminal.tm and obsolete target platfo…
travkin79 Jul 23, 2026
118f651
chore: Remove terminal bundle dynamic loading
travkin79 Jul 23, 2026
aac67c2
docs: Remove references to the obsolete terminal dependency dialog
travkin79 Oct 1, 2026
d7eeabe
test: Verify terminal provider bundle starts and provides its service
travkin79 Nov 5, 2026
9814266
test: Assert empty-command error now that a terminal service exists
travkin79 Nov 5, 2026
0c0227a
test: Rename terminal tool tests that assumed no terminal service
travkin79 Nov 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .azure-pipelines/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ extends:
version: '8.0.x'

- task: JavaToolInstaller@0
displayName: Use Java 17
displayName: Use Java 21
inputs:
versionSpec: "17"
versionSpec: "21"
jdkArchitectureOption: x64
jdkSourceOption: PreInstalled

Expand Down
12 changes: 3 additions & 9 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ This is the **GitHub Copilot for Eclipse** plugin - an Eclipse IDE extension tha
- **Multi-Platform Support**: Windows, macOS (x64/aarch64), and Linux (x64/aarch64)

### Tech Stack
- **Java**: Primary language (Java 17+, with Eclipse 4.31+ requiring Java 21+)
- **Java**: Primary language (Java 21+, with Eclipse 4.38+ requiring Java 21+)
- **Eclipse RCP/OSGi**: Plugin architecture using Eclipse platform APIs
- **Maven/Tycho**: Build system for Eclipse plugin development
- **LSP4E**: Language Server Protocol integration for Eclipse
Expand Down Expand Up @@ -46,7 +46,7 @@ You MUST verify compilation and code quality before declaring work complete!
- Root POM coordinates multi-module build with Tycho
- Each bundle/feature/test has its own POM inheriting from root
- Checkstyle validation runs during `verify` phase
- Target platform defined in `base.target`, `target-terminal.target`, `target-tm-terminal.target`
- Target platform defined in `target-platforms/2025-12.target`

### Code Change Review Trigger

Expand Down Expand Up @@ -117,12 +117,6 @@ The project follows Eclipse plugin conventions with multiple OSGi bundles:
- **Service**: `IRunInTerminalTool` implementation
- **Dependencies**: `org.eclipse.terminal.*` packages

**`com.microsoft.copilot.eclipse.ui.terminal.tm`** - TM Terminal integration (legacy)
- **Package**: `com.microsoft.copilot.eclipse.ui.terminal.tm`
- **Purpose**: Implementation for TM Terminal (Eclipse 4.36 and lower)
- **Service**: `IRunInTerminalTool` implementation
- **Dependencies**: `org.eclipse.tm.terminal.*` packages

#### Platform-Specific Agent Bundles

These bundles contain the Node.js-based Copilot language server agent for each platform:
Expand Down Expand Up @@ -569,7 +563,7 @@ distinguish repeated controls with stable context or an ordinal

**When** writing tests → use JUnit 5 for core logic; integration tests for Eclipse integration

**When** adding dependencies → only add necessary bundles; check `base.target` for Eclipse 2024-03 version constraints
**When** adding dependencies → only add necessary bundles; check `target-platforms/2025-12.target` for Eclipse 2025-12 version constraints

**When** targeting Eclipse versions → support multiple versions when possible

Expand Down
2 changes: 1 addition & 1 deletion .github/skills/ui-action/REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ with `useUIHarness=true` and `useUIThread=false`. It loads the JSON array from
artifacts, and fails the Maven build if any failed step has `failFast` enabled.

Before the bot starts, the runner pre-populates configuration-scope preferences
so Quick Start, What's New, Welcome, and "Terminal Support Unavailable" dialogs
so Quick Start, What's New, and Welcome dialogs
do not block normal probes.

`screenshot` and failure screenshots capture the active workbench shell with
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ jobs:
working-directory: com.microsoft.copilot.eclipse.core/copilot-agent
run: npm i -f

- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6.1.0
with:
java-version: '17'
java-version: '21'
distribution: 'temurin'
cache: maven

Expand Down
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@ replay_pid*
# whatisnew html file in runtime
**/whatisnew.html

# Terminal bundles
**/terminal-bundles/*.jar

# Fragment bundle copilot-agent directories
com.microsoft.copilot.eclipse.core.agent.linux.x64/copilot-agent/
com.microsoft.copilot.eclipse.core.agent.linux.aarch64/copilot-agent/
Expand Down
12 changes: 5 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ When you submit a pull request, a CLA bot will automatically determine whether y

### Prerequisites

- **Java 17** or later (CI uses Temurin 17; use a newer JDK if required by your Eclipse IDE)
- **Java 21** or later (CI uses Temurin 21; use a newer JDK if required by your Eclipse IDE)
- **Maven 3.8+** (or use the provided Maven wrapper `./mvnw`)
- **Node.js 22.13** or later, with npm
- **Eclipse IDE for Eclipse Committers 2024-03** or later (for development)
- **Eclipse IDE for Eclipse Committers 2025-12** or later (for development)
- Recommended: **Eclipse Checkstyle plugin** for code style compliance
(e.g. install from update site: https://checkstyle.org/eclipse-cs-update-site/)

Expand Down Expand Up @@ -60,9 +60,8 @@ The installable P2 repository is generated in `com.microsoft.copilot.eclipse.rep
activate the check box *Search for nested projects*, and finish the wizard.
* Do also import the agent bundle for your OS (e.g., `com.microsoft.copilot.eclipse.core.agent.win32`)
after building the project with npm and maven or import all OS-specific agent bundles.
2. Activate one of the target platforms, i.e. open one of the target definition files and select `Set As Active Target Platform`.
* target-terminal.target (Eclipse 4.37+)
* target-tm-terminal.target (Eclipse 4.36 and earlier)
2. Activate the target platform, i.e. open the target definition file `target-platforms/2025-12.target`
(Eclipse 2025-12 / 4.38, providing the modern `org.eclipse.terminal.*` bundles) and select `Set As Active Target Platform`.
3. For using the Checkstyle configuration (assuming you have installed the Eclipse Checkstyle plugin, see prerequisites),
add a new named Checkstyle configuration.
* Select *Window > Preferences > Checkstyle* and press the *New...* button.
Expand Down Expand Up @@ -112,8 +111,7 @@ The project is a multi-module Maven/Tycho build consisting of OSGi bundles:
| `com.microsoft.copilot.eclipse.ui` | User interface: chat view, completion UI, agent tools |
| `com.microsoft.copilot.eclipse.ui.jobs` | Copilot Jobs view integration |
| `com.microsoft.copilot.eclipse.terminal.api` | Terminal tool API definitions |
| `com.microsoft.copilot.eclipse.ui.terminal` | Terminal integration (Eclipse 4.37+) |
| `com.microsoft.copilot.eclipse.ui.terminal.tm` | TM Terminal integration (Eclipse 4.36 and earlier) |
| `com.microsoft.copilot.eclipse.ui.terminal` | Terminal integration (runs on Eclipse >= 2025-09 / 4.37) |
| `com.microsoft.copilot.eclipse.branding` | Product branding and about dialog |
| `com.microsoft.copilot.eclipse.core.agent.*` | Platform-specific Copilot language server agent bundles |
| `com.microsoft.copilot.eclipse.feature` | Eclipse feature definition |
Expand Down
77 changes: 0 additions & 77 deletions base.target

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ Automatic-Module-Name: com.microsoft.copilot.eclipse.core.agent.linux.aarch64
Bundle-Version: 0.21.0.qualifier
Bundle-Vendor: GitHub Copilot
Fragment-Host: com.microsoft.copilot.eclipse.core
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-RequiredExecutionEnvironment: JavaSE-21
Eclipse-PlatformFilter: (&(osgi.os=linux)(osgi.arch=aarch64))
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ Automatic-Module-Name: com.microsoft.copilot.eclipse.core.agent.linux.x64
Bundle-Version: 0.21.0.qualifier
Bundle-Vendor: GitHub Copilot
Fragment-Host: com.microsoft.copilot.eclipse.core
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-RequiredExecutionEnvironment: JavaSE-21
Eclipse-PlatformFilter: (&(osgi.os=linux)(osgi.arch=x86_64))
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ Automatic-Module-Name: com.microsoft.copilot.eclipse.core.agent.macosx.aarch64
Bundle-Version: 0.21.0.qualifier
Bundle-Vendor: GitHub Copilot
Fragment-Host: com.microsoft.copilot.eclipse.core
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-RequiredExecutionEnvironment: JavaSE-21
Eclipse-PlatformFilter: (&(osgi.os=macosx) (osgi.arch=aarch64))
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ Automatic-Module-Name: com.microsoft.copilot.eclipse.core.agent.macosx.x64
Bundle-Version: 0.21.0.qualifier
Bundle-Vendor: GitHub Copilot
Fragment-Host: com.microsoft.copilot.eclipse.core
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-RequiredExecutionEnvironment: JavaSE-21
Eclipse-PlatformFilter: (&(osgi.os=macosx)(osgi.arch=x86_64))
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ Automatic-Module-Name: com.microsoft.copilot.eclipse.core.agent.win32
Bundle-Version: 0.21.0.qualifier
Bundle-Vendor: GitHub Copilot
Fragment-Host: com.microsoft.copilot.eclipse.core
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-RequiredExecutionEnvironment: JavaSE-21
Eclipse-PlatformFilter: (osgi.os=win32)
26 changes: 15 additions & 11 deletions com.microsoft.copilot.eclipse.core.test/.classpath
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
org.eclipse.jdt.core.compiler.compliance=17
org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
org.eclipse.jdt.core.compiler.compliance=21
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=17
org.eclipse.jdt.core.compiler.source=21
org.eclipse.jdt.core.formatter.align_arrows_in_switch_on_columns=false
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Bundle-Name: com.microsoft.copilot.eclipse.core.test
Bundle-SymbolicName: com.microsoft.copilot.eclipse.core.test;singleton:=true
Bundle-Version: 0.21.0.qualifier
Bundle-Vendor: GitHub Copilot
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-RequiredExecutionEnvironment: JavaSE-21
Fragment-Host: com.microsoft.copilot.eclipse.core
Automatic-Module-Name: com.microsoft.copilot.eclipse.core.test
Import-Package: org.objenesis;version="[3.4.0,4.0.0)",
Expand Down
4 changes: 2 additions & 2 deletions com.microsoft.copilot.eclipse.core.test/build.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
source.. = src
output.. = target/classes
source.. = src/
output.. = target/classes/
bin.includes = META-INF/,\
.

18 changes: 11 additions & 7 deletions com.microsoft.copilot.eclipse.core/.classpath
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
org.eclipse.jdt.core.compiler.compliance=17
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=21
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=17
org.eclipse.jdt.core.compiler.source=21
org.eclipse.jdt.core.formatter.align_arrows_in_switch_on_columns=false
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
Expand Down
4 changes: 2 additions & 2 deletions com.microsoft.copilot.eclipse.core/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ Export-Package: com.microsoft.copilot.eclipse.core,
com.microsoft.copilot.eclipse.core.lsp.protocol.quota,
com.microsoft.copilot.eclipse.core.lsp.protocol.tools,
com.microsoft.copilot.eclipse.core.nes;x-friends:="com.microsoft.copilot.eclipse.ui",
com.microsoft.copilot.eclipse.core.persistence;x-friends:="com.microsoft.copilot.eclipse.ui,com.microsoft.copilot.eclipse.core.test,com.microsoft.copilot.eclipse.core.utils",
com.microsoft.copilot.eclipse.core.persistence;x-friends:="com.microsoft.copilot.eclipse.ui,com.microsoft.copilot.eclipse.core.test,com.microsoft.copilot.eclipse.core.utils",
com.microsoft.copilot.eclipse.core.utils
Bundle-Activator: com.microsoft.copilot.eclipse.core.CopilotCore
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-RequiredExecutionEnvironment: JavaSE-21
Comment thread
travkin79 marked this conversation as resolved.
Resolved
Automatic-Module-Name: com.microsoft.copilot.eclipse.core
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.ui,
Expand Down
4 changes: 2 additions & 2 deletions com.microsoft.copilot.eclipse.core/build.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
source.. = src
output.. = target/classes
source.. = src/
output.. = target/classes/
bin.includes = META-INF/,\
.,\
plugin.xml,\
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ private Constants() {
public static final String AUTO_SHOW_WHAT_IS_NEW = "autoShowWhatsNew";
public static final String AUTO_BREAKPOINT_RESPONSE = "autoBreakpointResponse";
public static final String GITHUB_JOBS_VIEW_ID = "com.microsoft.copilot.eclipse.ui.jobs.JobsView";
public static final String SUPPRESS_TERMINAL_DEPENDENCY_DIALOG = "suppressTerminalDependencyDialog";
public static final String SUPPRESS_COMPATIBILITY_NOTICE_0_23 = "suppressCompatibilityNotice0.23";

// Auto-Approve settings
Expand Down
4 changes: 4 additions & 0 deletions com.microsoft.copilot.eclipse.feature/feature.xml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ For the purpose of improving GitHub Copilot, Microsoft and GitHub may share with
id="com.microsoft.copilot.eclipse.terminal.api"
version="0.0.0"/>

<plugin
id="com.microsoft.copilot.eclipse.ui.terminal"
version="0.0.0"/>
Comment on lines +59 to +61

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Not needed. Equinox auto-starts installed lazy bundles, so its DS component registers IRunInTerminalTool at startup. ensureStarted() was only needed for the former runtime installBundle approach.

Though, ui.test needed to include the terminal bundle, done now. I added a test verifying the bundle starts and provides the service. The SWTBot runtime and the dev launch configuration already include it.


<plugin id="com.microsoft.copilot.eclipse.core.agent.linux.x64"
version="0.0.0"
os="linux" arch="x86_64" fragment="true"/>
Expand Down
Loading