Skip to content

Drop obsolete ui.terminal.tm bundle and dynamic terminal bundle loading - #471

Open
Dietrich Travkin (travkin79) wants to merge 19 commits into
microsoft:mainfrom
travkin79:drop-tm-bundle
Open

Dietrich Travkin (travkin79) wants to merge 19 commits into
microsoft:mainfrom
travkin79:drop-tm-bundle

Conversation

@travkin79

@travkin79 Dietrich Travkin (travkin79) commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

This is a follow-up PR to PR #368 (contains all commits from it plus commits for this PR).

PR #368 upgrades the target platform to Eclipse 2025-12 and JDK 21.

As a follow-up task, this PR removes:

  • the legacy bundle com.microsoft.copilot.eclipse.ui.terminal.tm bundle
  • the dynamic loading of one of the terminal bundles (modern com.microsoft.copilot.eclipse.ui.terminal or legacy com.microsoft.copilot.eclipse.ui.terminal.tm), since we'll now always load the modern terminal bundle using the Eclipse plug-in dependency mechanism.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

The terminal provider lacks startup configuration needed to make terminal tools available, and the Azure nightly build still selects Java 17 despite the new Java 21 requirement.

2 open issues
What changed in this PR

This PR builds on #368’s Eclipse 2025-12 and Java 21 migration, simplifying GitHub Copilot for Eclipse to use only the modern terminal integration.

Changes:

  • Removes the legacy TM Terminal bundle, dynamic bundle installation, and missing-dependency dialog.
  • Packages the modern terminal provider in the feature and updates terminal view identifiers.
  • Consolidates target definitions and aligns build, launch, project settings, and documentation with Java 21.
File Description
target-tm-terminal.target Removes the legacy terminal target.
target-terminal.target Removes the superseded modern terminal target.
target-platforms/​2025-12.target Adds the consolidated Eclipse 2025-12 target.
pom.xml Updates the target and removes the legacy module.
launch/​Verify Copilot for Eclipse.launch Adds a Java 21 Maven verification launch.
launch/​plugin_debug_configuration.launch Switches debugging to Java 21.
CONTRIBUTING.md Updates prerequisites and terminal setup documentation.
com.microsoft.copilot.eclipse.ui/​terminal-bundles/​.gitkeep Removes the embedded-bundle directory placeholder.
com.microsoft.copilot.eclipse.ui/​src/​com/​microsoft/​copilot/​eclipse/​ui/​UiConstants.java Removes the terminal dependency guide constant.
com.microsoft.copilot.eclipse.ui/​src/​com/​microsoft/​copilot/​eclipse/​ui/​perspectives/​CopilotPerspectiveFactory.java Uses modern terminal view identifiers.
com.microsoft.copilot.eclipse.ui/​src/​com/​microsoft/​copilot/​eclipse/​ui/​dialogs/​MissingTerminalDependenciesDialog.java Deletes the missing-dependency dialog.
com.microsoft.copilot.eclipse.ui/​src/​com/​microsoft/​copilot/​eclipse/​ui/​dialogs/​messages.properties Removes obsolete dialog strings.
com.microsoft.copilot.eclipse.ui/​src/​com/​microsoft/​copilot/​eclipse/​ui/​dialogs/​Messages.java Removes obsolete dialog message fields.
com.microsoft.copilot.eclipse.ui/​src/​com/​microsoft/​copilot/​eclipse/​ui/​chat/​services/​AgentToolService.java Removes missing-dependency notifications.
com.microsoft.copilot.eclipse.ui/​pom.xml Removes terminal JAR copying.
com.microsoft.copilot.eclipse.ui/​META-INF/​MANIFEST.MF Requires Java 21.
com.microsoft.copilot.eclipse.ui/​build.properties Stops packaging embedded terminal JARs.
com.microsoft.copilot.eclipse.ui/​.settings/​org.eclipse.jdt.core.prefs Sets Java 21 compilation.
com.microsoft.copilot.eclipse.ui/​.settings/​org.eclipse.core.resources.prefs Sets UTF-8 encoding.
com.microsoft.copilot.eclipse.ui/​.classpath Uses the Java 21 runtime container.
com.microsoft.copilot.eclipse.ui.test/​src/​com/​microsoft/​copilot/​eclipse/​ui/​CompatibilityNoticeTest.java Removes the deleted terminal preference setup.
com.microsoft.copilot.eclipse.ui.test/​META-INF/​MANIFEST.MF Requires Java 21 for UI tests.
com.microsoft.copilot.eclipse.ui.test/​build.properties Normalizes source and output paths.
com.microsoft.copilot.eclipse.ui.test/​.settings/​org.eclipse.jdt.core.prefs Sets Java 21 compilation.
com.microsoft.copilot.eclipse.ui.test/​.settings/​org.eclipse.core.resources.prefs Sets UTF-8 encoding.
com.microsoft.copilot.eclipse.ui.test/​.classpath Uses the Java 21 runtime container.
com.microsoft.copilot.eclipse.ui.terminal/​pom.xml Uses the consolidated target platform.
com.microsoft.copilot.eclipse.ui.terminal/​META-INF/​MANIFEST.MF Requires Java 21.
com.microsoft.copilot.eclipse.ui.terminal/​build.properties Aligns output with target/classes.
com.microsoft.copilot.eclipse.ui.terminal/​.settings/​org.eclipse.jdt.core.prefs Sets Java 21 compilation.
com.microsoft.copilot.eclipse.ui.terminal/​.settings/​org.eclipse.core.resources.prefs Sets UTF-8 encoding.
com.microsoft.copilot.eclipse.ui.terminal/​.classpath Uses the Java 21 runtime container.
com.microsoft.copilot.eclipse.ui.terminal.tm/​src/​com/​microsoft/​copilot/​eclipse/​ui/​terminal/​tm/​RunInTerminalTool.java Deletes the legacy terminal implementation.
com.microsoft.copilot.eclipse.ui.terminal.tm/​pom.xml Deletes the legacy module build.
com.microsoft.copilot.eclipse.ui.terminal.tm/​OSGI-INF/​component.xml Deletes the legacy service registration.
com.microsoft.copilot.eclipse.ui.terminal.tm/​META-INF/​MANIFEST.MF Deletes the legacy bundle manifest.
com.microsoft.copilot.eclipse.ui.terminal.tm/​build.properties Deletes legacy packaging settings.
com.microsoft.copilot.eclipse.ui.terminal.tm/​.settings/​org.eclipse.m2e.core.prefs Deletes legacy Maven preferences.
com.microsoft.copilot.eclipse.ui.terminal.tm/​.settings/​org.eclipse.jdt.core.prefs Deletes legacy compiler preferences.
com.microsoft.copilot.eclipse.ui.terminal.tm/​.project Deletes the legacy Eclipse project definition.
com.microsoft.copilot.eclipse.ui.terminal.tm/​.classpath Deletes the legacy classpath.
com.microsoft.copilot.eclipse.ui.terminal.tm/​.checkstyle Deletes legacy Checkstyle settings.
com.microsoft.copilot.eclipse.ui.jobs/​META-INF/​MANIFEST.MF Requires Java 21.
com.microsoft.copilot.eclipse.ui.jobs/​build.properties Aligns output with target/classes.
com.microsoft.copilot.eclipse.ui.jobs/​.settings/​org.eclipse.jdt.core.prefs Sets Java 21 and enforces forbidden-reference errors.
com.microsoft.copilot.eclipse.ui.jobs/​.settings/​org.eclipse.core.resources.prefs Sets UTF-8 encoding.
com.microsoft.copilot.eclipse.ui.jobs/​.classpath Updates the runtime and source path.
com.microsoft.copilot.eclipse.ui.jobs.test/​META-INF/​MANIFEST.MF Requires Java 21 and adjusts JUnit dependencies.
com.microsoft.copilot.eclipse.ui.jobs.test/​.classpath Uses the Java 21 runtime container.
com.microsoft.copilot.eclipse.terminal.api/​src/​com/​microsoft/​copilot/​eclipse/​terminal/​api/​TerminalServiceManager.java Retains service tracking while removing dynamic installation.
com.microsoft.copilot.eclipse.terminal.api/​META-INF/​MANIFEST.MF Requires Java 21.
com.microsoft.copilot.eclipse.terminal.api/​build.properties Aligns output with target/classes.
com.microsoft.copilot.eclipse.terminal.api/​.settings/​org.eclipse.jdt.core.prefs Sets Java 21 compilation.
com.microsoft.copilot.eclipse.terminal.api/​.settings/​org.eclipse.core.resources.prefs Sets UTF-8 encoding.
com.microsoft.copilot.eclipse.terminal.api/​.classpath Uses the Java 21 runtime container.
com.microsoft.copilot.eclipse.swtbot.test/​test-plans/​chat-send-receive/​chat-send-receive.md Removes obsolete dialog-suppression documentation.
com.microsoft.copilot.eclipse.swtbot.test/​test-plans/​byok/​byok.md Removes obsolete dialog-suppression documentation.
com.microsoft.copilot.eclipse.swtbot.test/​src/​com/​microsoft/​copilot/​eclipse/​swtbot/​test/​probe/​ProbeRunner.java Removes suppression of the deleted terminal dialog.
com.microsoft.copilot.eclipse.swtbot.test/​META-INF/​MANIFEST.MF Requires Java 21 for probes.
com.microsoft.copilot.eclipse.swtbot.test/​build.properties Normalizes source and output paths.
com.microsoft.copilot.eclipse.swtbot.test/​.settings/​org.eclipse.jdt.core.prefs Sets Java 21 compilation.
com.microsoft.copilot.eclipse.swtbot.test/​.settings/​org.eclipse.core.resources.prefs Sets UTF-8 encoding.
com.microsoft.copilot.eclipse.swtbot.test/​.classpath Uses the Java 21 runtime container.
com.microsoft.copilot.eclipse.repository/​category.xml Adds a category for language-server dependencies.
com.microsoft.copilot.eclipse.feature/​feature.xml Includes the modern terminal provider.
com.microsoft.copilot.eclipse.core/​src/​com/​microsoft/​copilot/​eclipse/​core/​Constants.java Removes the terminal dialog preference constant.
com.microsoft.copilot.eclipse.core/​META-INF/​MANIFEST.MF Requires Java 21 and fixes an export friend-list separator.
com.microsoft.copilot.eclipse.core/​build.properties Normalizes source and output paths.
com.microsoft.copilot.eclipse.core/​.settings/​org.eclipse.jdt.core.prefs Updates Java compilation and debug settings.
com.microsoft.copilot.eclipse.core/​.settings/​org.eclipse.core.resources.prefs Sets UTF-8 encoding.
com.microsoft.copilot.eclipse.core/​.classpath Uses the Java 21 runtime container.
com.microsoft.copilot.eclipse.core.test/​META-INF/​MANIFEST.MF Requires Java 21 for core tests.
com.microsoft.copilot.eclipse.core.test/​build.properties Normalizes source and output paths.
com.microsoft.copilot.eclipse.core.test/​.settings/​org.eclipse.jdt.core.prefs Sets Java 21 compilation.
com.microsoft.copilot.eclipse.core.test/​.settings/​org.eclipse.core.resources.prefs Sets UTF-8 encoding.
com.microsoft.copilot.eclipse.core.test/​.classpath Uses the Java 21 runtime container.
com.microsoft.copilot.eclipse.core.agent.win32/​META-INF/​MANIFEST.MF Requires Java 21 for the Windows fragment.
com.microsoft.copilot.eclipse.core.agent.macosx.x64/​META-INF/​MANIFEST.MF Requires Java 21 for the macOS x64 fragment.
com.microsoft.copilot.eclipse.core.agent.macosx.aarch64/​META-INF/​MANIFEST.MF Requires Java 21 for the macOS ARM64 fragment.
com.microsoft.copilot.eclipse.core.agent.linux.x64/​META-INF/​MANIFEST.MF Requires Java 21 for the Linux x64 fragment.
com.microsoft.copilot.eclipse.core.agent.linux.aarch64/​META-INF/​MANIFEST.MF Requires Java 21 for the Linux ARM64 fragment.
base.target Removes the superseded base target.
.gitignore Removes the embedded terminal JAR ignore rule.
.github/​workflows/​ci.yml Runs CI with JDK 21.
.github/​skills/​ui-action/​REFERENCE.md Updates dialog-suppression documentation.
.github/​copilot-instructions.md Updates platform guidance and removes legacy bundle documentation.

Review effort: Balanced

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

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.

Avoid "OSGi access rules not enforced by classpath access rules, which can lead to classloading errors at runtime."
Build the new target file for terminal.tm bundle (2024-12.target) similar to 2025-12.target and update docs.
Add separate LSP4E update site to target definition so that we can increase the LSP4E version without having to lift the Eclipse version.
This way, we'll always offer the right version of LSP4E and LSP4J bundles on our own update site.
…vider

The 2025-12 target aggregates junit-jupiter versions up to 6.x. With only a minimum version constraint, ui.jobs.test resolved JUnit 6.x, which is outside Tycho 4.0.13's provider ranges, causing 'Could not determine test framework provider'. Bound junit-jupiter api/engine/params to [5.12.0,6.0.0) and add the engine bundle so the standalone test resolves a consistent 5.x set.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Make com.microsoft.copilot.eclipse.ui.terminal an ordinary plugin instead of an embedded JAR installed at runtime. Remove the obsolete code for dynamically installing terminal bundles via TerminalServiceManager .

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Include com.microsoft.copilot.eclipse.ui.terminal in the ui.test runtime and check that the lazily activated bundle starts without an explicit start() and registers IRunInTerminalTool.

See microsoft#471 (comment)

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The ui.test runtime now provides a terminal service, so the get-output test asserts the invalid-ID error and the run test no longer claims to cover the missing-service case.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants