Skip to content

Conversation

@sigmaaa
Copy link
Collaborator

@sigmaaa sigmaaa commented Jan 7, 2026

Description

updated the eclipse platform to the 2025-12 version

Fixes # (IEP-1673)

Type of change

Please delete options that are not relevant.

  • New feature (non-breaking change which adds functionality)

How has this been tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

  • Test A
  • Test B

Test Configuration:

  • ESP-IDF Version:
  • OS (Windows,Linux and macOS):

Dependent components impacted by this PR:

  • Component 1
  • Component 2

Checklist

  • PR Self Reviewed
  • Applied Code formatting
  • Added Documentation
  • Added Unit Test
  • Verified on all platforms - Windows,Linux and macOS

Summary by CodeRabbit

  • Chores
    • Upgraded Java runtime to Java 21, updated Eclipse release repositories, and removed many deprecated/unused platform bundles to slim installs and reduce dependency surface.
  • New Features
    • Exposed additional UI and utility packages (including Apache Commons IO and Lang3) and expanded UI export surface for richer integrations.
  • Tests
    • Test harness moved to JUnit 5 and Tycho Surefire configured for execution.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Jan 7, 2026

📝 Walkthrough

Walkthrough

Updated target/platform repositories and installable units, bumped Java runtime to JavaSE‑21 in launch and classpath, pruned and reorganized many bundle MANIFEST Require‑Bundle/Import‑Package entries (adding select commons/JNA exports), enabled Tycho Surefire for JUnit 5, and made small .classpath and import tweaks. (50 words)

Changes

Cohort / File(s) Summary
Launch configuration
bundles/com.espressif.idf.branding/Espressif-IDE.launch
Normalized configLocation; JRE container JavaSE-11JavaSE-21; added launch attributes (org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING=false, org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE=false); removed many selected features and org.eclipse.userstorage.
Target definition / releng
releng/com.espressif.idf.target/com.espressif.idf.target.target
Updated Eclipse update/release URLs (4.37→4.38, 2025-09→2025-12); bumped orbit-aggregation URL; consolidated terminal units into org.eclipse.terminal.feature.feature.group; removed javax.xml.jre and obsolete location blocks; adjusted installable units (adds/removals/substitutions).
Bundle manifests — dependency pruning & exports/imports
bundles/*/META-INF/MANIFEST.MF
(examples: bundles/com.espressif.idf.core/..., ...debug.gdbjtag.openocd, ...help, ...launch.serial.*, ...lsp, ...sdk.config.*, ...terminal.connector*, ...swt.custom, ...ui, ...serial.monitor, tests/*)
Widespread removals of Require-Bundle entries (core resources, UI, CDT, debug, older junit4 entries); moved/added com.sun.jna to Require‑Bundle where applicable; added exports org.apache.commons.io, org.apache.commons.lang3; added/imported org.apache.commons.logging, org.eclipse.core.expressions, and other package imports; com.espressif.idf.ui gained explicit Export‑Package entries.
Classpath & small Java edits
bundles/com.espressif.idf.debug.gdbjtag.openocd/.classpath, bundles/com.espressif.idf.debug.gdbjtag.openocd/src/.../IdfProcessConsole.java, bundles/com.espressif.idf.terminal.connector/src/.../CoreDumpPostmortemDebuggerLauncher.java
.classpath: removed MAVEN2_CLASSPATH_CONTAINER, set module="true" on JRE_CONTAINER. Java files: added imports (IDocument, MessageConsoleStream) only.
Tests / Tycho & manifests
tests/com.espressif.idf.core.test/pom.xml, tests/*/META-INF/MANIFEST.MF
Added Tycho Surefire plugin configured for JUnit5 provider (junit512); updated test manifests to reference versioned JUnit5 bundles and adjusted test Require‑Bundle/import entries (migration toward JUnit 5).

Sequence Diagram(s)

(none)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

needs translation:CN

Suggested reviewers

  • AndriiFilippov
  • kolipakakondal
  • alirana01

Poem

🐇 I nibbled bytes and hopped with glee,
Java twenty-one now sings to me.
Manifests trimmed, terminals aligned,
Tests leap forward, tidy and kind.
Hop, build, and watch the sunrise bind!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: updating the Eclipse platform to version 2025-12, which aligns with the primary objective of the PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
bundles/com.espressif.idf.branding/Espressif-IDE.launch (1)

45-62: Do not remove org.eclipse.cdt.debug.gdbjtag feature — it is actively used for debugging functionality.

The codebase critically depends on the org.eclipse.cdt.debug.gdbjtag feature:

  • GDBStubDebuggerLauncher.java uses org.eclipse.cdt.debug.gdbjtag.launchConfigurationType and numerous org.eclipse.cdt.debug.gdbjtag.core.* properties to configure GDB/JTAG debugging
  • Configuration.java imports org.eclipse.cdt.debug.gdbjtag.core.IGDBJtagConstants
  • The DSF GDB launcher delegate (org.eclipse.cdt.debug.gdbjtag.core.dsfLaunchDelegate) is explicitly referenced

Removing this feature will break all debugging functionality in the IDE. This feature must remain in the selected_features list.

🤖 Fix all issues with AI agents
In @bundles/com.espressif.idf.branding/Espressif-IDE.launch:
- Line 39: The launch config sets JRE_CONTAINER to JavaSE-21 but VM_ARGUMENTS
still include a duplicated -Dosgi.requiredJavaVersion=11; update the
VM_ARGUMENTS entry to a single -Dosgi.requiredJavaVersion=21 (remove the
duplicate) so it matches JRE_CONTAINER, and then reconcile module manifests that
declare JavaSE-17: either update those manifest JavaSE/required execution
environment entries to JavaSE-21 (the branding bundle and any workspace bundles
declaring JavaSE-17) or revert JRE_CONTAINER to JavaSE-17 to match the lowest
declared runtime; ensure JRE_CONTAINER, VM_ARGUMENTS, and all manifest JavaSE
declarations use the same Java version and that -Dosgi.requiredJavaVersion
appears only once.
- Line 42: The VM arguments string (stringAttribute
key="org.eclipse.jdt.launching.VM_ARGUMENTS") still declares
-Dosgi.requiredJavaVersion=11 twice; update those occurrences to
-Dosgi.requiredJavaVersion=21 (matching JavaSE-21) and remove duplicate entries
if present so the value contains a single -Dosgi.requiredJavaVersion=21 token;
ensure you update the VM_ARGUMENTS attribute value used by the launch
configuration.
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9e2344b and 9cf2487.

📒 Files selected for processing (2)
  • bundles/com.espressif.idf.branding/Espressif-IDE.launch
  • releng/com.espressif.idf.target/com.espressif.idf.target.target
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: build_linux
  • GitHub Check: build_macos
  • GitHub Check: build_windows
🔇 Additional comments (6)
bundles/com.espressif.idf.branding/Espressif-IDE.launch (2)

13-13: No hardcoded references found—configuration location change is safe.

The configLocation path change from "Espressif IDE" to "Espressif-IDE" is isolated to the .launch file. Search results confirm there are no other hardcoded references to the old configuration path elsewhere in the codebase that could break.


35-36: Both attributes are valid Eclipse launch configuration attributes supported in Eclipse 4.38 / 2025-12:

  • org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING is defined in the DebugPlugin API (since Eclipse 3.20) and controls system console encoding behavior.
  • org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE is defined in IJavaLaunchConfigurationConstants (the double "ATTR_" is the correct constant name per JDT source) and controls argument file usage for Java launches.

No compatibility issues detected.

releng/com.espressif.idf.target/com.espressif.idf.target.target (4)

6-6: Eclipse 4.38 is a stable, GA-released version.

The update to Eclipse 4.38 (released December 1, 2025) is appropriate for production use.


46-46: Confirm Orbit 2025-12 is available; verify javax.xml.jre removal doesn't break XML parsing.

Orbit 2025-12 (release 4.38.0) is confirmed stable and available as of January 2026. However, the codebase actively uses javax.xml classes in:

  • bundles/com.espressif.idf.terminal.connector.serial/src/com/espressif/idf/terminal/connector/serial/launcher/GDBStubDebuggerLauncher.java
  • bundles/com.espressif.idf.terminal.connector.serial/src/com/espressif/idf/terminal/connector/serial/launcher/CoreDumpPostmortemDebuggerLauncher.java

Both files import javax.xml.parsers.* and javax.xml.transform.* classes. These are available in Java 9+ via the standard java.xml module, but you must verify that the affected bundle manifests properly declare imports for javax.xml.parsers and javax.xml.transform packages without relying on the removed javax.xml.jre bundle.


25-25: Migration from tm.terminal to org.eclipse.terminal is complete. Verified that no code in the codebase imports or depends on the legacy org.eclipse.tm.terminal.* packages. The new org.eclipse.terminal.feature.feature.group is properly configured in the target definition.


20-20: Eclipse 2025-12 release is available and official as of January 2026, confirming the repository update to https://download.eclipse.org/releases/2025-12/ is valid.

<booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21"/>
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

cat -n bundles/com.espressif.idf.branding/Espressif-IDE.launch | sed -n '35,45p'

Repository: espressif/idf-eclipse-plugin

Length of output: 1722


🏁 Script executed:

fd -e MF -x gawk '/Bundle-RequiredExecutionEnvironment/ {print FILENAME ": " $0}'

Repository: espressif/idf-eclipse-plugin

Length of output: 2139


Critical inconsistency: JRE version mismatch with VM arguments.

Line 39 sets JRE_CONTAINER to JavaSE-21, but line 42 VM_ARGUMENTS still specifies -Dosgi.requiredJavaVersion=11 (note: this argument is duplicated and should appear once). Additionally, the branding bundle's manifest declares JavaSE-17, and most workspace bundles are declared as JavaSE-17, not JavaSE-21. Update:

  1. VM_ARGUMENTS to require Java 21 and remove the duplicate -Dosgi.requiredJavaVersion argument
  2. Bundle manifests (branding and others) to match the Java 21 requirement, or revert JRE_CONTAINER to the minimum compatible version across all bundles
🤖 Prompt for AI Agents
In @bundles/com.espressif.idf.branding/Espressif-IDE.launch at line 39, The
launch config sets JRE_CONTAINER to JavaSE-21 but VM_ARGUMENTS still include a
duplicated -Dosgi.requiredJavaVersion=11; update the VM_ARGUMENTS entry to a
single -Dosgi.requiredJavaVersion=21 (remove the duplicate) so it matches
JRE_CONTAINER, and then reconcile module manifests that declare JavaSE-17:
either update those manifest JavaSE/required execution environment entries to
JavaSE-21 (the branding bundle and any workspace bundles declaring JavaSE-17) or
revert JRE_CONTAINER to JavaSE-17 to match the lowest declared runtime; ensure
JRE_CONTAINER, VM_ARGUMENTS, and all manifest JavaSE declarations use the same
Java version and that -Dosgi.requiredJavaVersion appears only once.

<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.requiredJavaVersion=11 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication --add-modules=ALL-SYSTEM -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Dosgi.requiredJavaVersion=11 -Dosgi.dataAreaRequiresExplicitInit=true -Xms256m -Xmx2048m --add-modules=ALL-SYSTEM -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts"/>
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Update VM arguments to reflect Java 21 requirement.

The VM arguments still reference -Dosgi.requiredJavaVersion=11 (appearing twice), but Line 39 upgraded to JavaSE-21. This inconsistency could cause validation issues or confusion about the actual Java requirement.

🔧 Proposed fix
-    <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.requiredJavaVersion=11 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication --add-modules=ALL-SYSTEM -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Dosgi.requiredJavaVersion=11 -Dosgi.dataAreaRequiresExplicitInit=true -Xms256m -Xmx2048m --add-modules=ALL-SYSTEM -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts"/>
+    <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.requiredJavaVersion=21 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication --add-modules=ALL-SYSTEM -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Dosgi.dataAreaRequiresExplicitInit=true -Xms256m -Xmx2048m --add-modules=ALL-SYSTEM -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts"/>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.requiredJavaVersion=11 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication --add-modules=ALL-SYSTEM -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Dosgi.requiredJavaVersion=11 -Dosgi.dataAreaRequiresExplicitInit=true -Xms256m -Xmx2048m --add-modules=ALL-SYSTEM -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.requiredJavaVersion=21 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication --add-modules=ALL-SYSTEM -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Dosgi.dataAreaRequiresExplicitInit=true -Xms256m -Xmx2048m --add-modules=ALL-SYSTEM -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts"/>
🤖 Prompt for AI Agents
In @bundles/com.espressif.idf.branding/Espressif-IDE.launch at line 42, The VM
arguments string (stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS")
still declares -Dosgi.requiredJavaVersion=11 twice; update those occurrences to
-Dosgi.requiredJavaVersion=21 (matching JavaSE-21) and remove duplicate entries
if present so the value contains a single -Dosgi.requiredJavaVersion=21 token;
ensure you update the VM_ARGUMENTS attribute value used by the launch
configuration.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
releng/com.espressif.idf.target/com.espressif.idf.target.target (1)

84-84: Update bundled snakeyaml to match target platform version.

The target platform now includes org.yaml.snakeyaml version 2.2.0 from the CDT LSP repository, but com.espressif.idf.core still bundles snakeyaml-1.30.jar. The bundle actively uses snakeyaml in HintsUtil.java and ClangdConfigFileHandler.java, and exports the org.yaml.snakeyaml packages, creating a version mismatch.

Update the bundled JAR to 2.2.0 to match the target platform, or confirm this dual versioning is intentional. SnakeYAML 1.x to 2.x has breaking API changes and should be verified for compatibility with the existing code.

🤖 Fix all issues with AI agents
In @bundles/com.espressif.idf.help/META-INF/MANIFEST.MF:
- Around line 8-11: The MANIFEST.MF’s Require-Bundle header is missing required
Eclipse help/intro dependencies; update the Require-Bundle entry (alongside
existing org.eclipse.core.runtime) to include org.eclipse.help,
org.eclipse.ui.intro, org.eclipse.ui.intro.universal and org.eclipse.ui so the
help TOC (espidfToc.xml) and intro config (intro/esp_idf.xml) are recognized by
the platform; ensure the bundles are comma-separated in the Require-Bundle
header and keep Bundle-RequiredExecutionEnvironment and other headers unchanged.

In @bundles/com.espressif.idf.swt.custom/META-INF/MANIFEST.MF:
- Around line 12-15: The manifest for the com.espressif.idf.swt.custom bundle
currently lists Require-Bundle without declaring org.eclipse.swt and
org.eclipse.jface; update the Require-Bundle section to explicitly include
org.eclipse.swt and org.eclipse.jface (e.g. add "org.eclipse.swt,
org.eclipse.jface") so the com.espressif.idf.swt.custom bundle that contains
TextWithButton.java and StyledInfoText.java has direct dependencies on SWT and
JFace rather than relying on transitive re-exports from org.eclipse.ui.
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cf2487 and cfac6ba.

📒 Files selected for processing (17)
  • bundles/com.espressif.idf.core/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.debug.gdbjtag.openocd/.classpath
  • bundles/com.espressif.idf.debug.gdbjtag.openocd/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.debug.gdbjtag.openocd/src/com/espressif/idf/debug/gdbjtag/openocd/dsf/console/IdfProcessConsole.java
  • bundles/com.espressif.idf.help/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.launch.serial.core/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.launch.serial.ui/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.lsp/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.sdk.config.core/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.sdk.config.ui/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.serial.monitor/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.swt.custom/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.terminal.connector.serial/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.terminal.connector.serial/src/com/espressif/idf/terminal/connector/serial/launcher/CoreDumpPostmortemDebuggerLauncher.java
  • bundles/com.espressif.idf.terminal.connector/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.ui/META-INF/MANIFEST.MF
  • releng/com.espressif.idf.target/com.espressif.idf.target.target
💤 Files with no reviewable changes (5)
  • bundles/com.espressif.idf.lsp/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.launch.serial.ui/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.terminal.connector/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.serial.monitor/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.launch.serial.core/META-INF/MANIFEST.MF
✅ Files skipped from review due to trivial changes (1)
  • bundles/com.espressif.idf.terminal.connector.serial/src/com/espressif/idf/terminal/connector/serial/launcher/CoreDumpPostmortemDebuggerLauncher.java
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: build_windows
  • GitHub Check: build_linux
  • GitHub Check: build_macos
🔇 Additional comments (13)
bundles/com.espressif.idf.debug.gdbjtag.openocd/src/com/espressif/idf/debug/gdbjtag/openocd/dsf/console/IdfProcessConsole.java (1)

15-15: LGTM! Import added to support Eclipse platform 2025-12 update.

The import enables proper compilation with the updated Eclipse platform. The IDocument type is used implicitly through the getDocument() method call on line 231, which is part of the URL pattern matching functionality.

bundles/com.espressif.idf.sdk.config.core/META-INF/MANIFEST.MF (1)

8-16: Critical: Verify removed bundle dependencies aren't required.

The removal of org.eclipse.equinox.preferences, org.eclipse.cdt.core, and org.eclipse.debug.core from Require-Bundle could break functionality if this bundle's code still uses:

  • CDT APIs for build configuration or project management
  • Debug APIs for launch configuration
  • Preferences APIs for storing SDK settings

Verify that no source files in bundles/com.espressif.idf.sdk.config.core/src/ import from these removed packages before merging.

bundles/com.espressif.idf.debug.gdbjtag.openocd/.classpath (1)

4-9: No dependency resolution issues with current Maven configuration.

The classpath is properly configured for a Maven-based Eclipse plugin. The maven.pomderived="true" attributes on both the JRE_CONTAINER and src entry allow Maven to manage dependencies through pom.xml (which declares the required com.espressif.idf.core dependency). The absence of MAVEN2_CLASSPATH_CONTAINER is correct for modern Maven + Eclipse PDE projects and does not cause issues. The addition of module="true" for Java 21 JPMS support is appropriate.

Likely an incorrect or invalid review comment.

bundles/com.espressif.idf.sdk.config.ui/META-INF/MANIFEST.MF (1)

8-17: No action required - org.eclipse.text removal is safe.

The bundle does not use any classes from org.eclipse.text. The code imports TextEditor from org.eclipse.ui.editors.text and AbstractTextEditor from org.eclipse.ui.texteditor, both of which are provided by the already-required org.eclipse.ui.editors and org.eclipse.ui bundles. Text editing functionality is unaffected.

bundles/com.espressif.idf.terminal.connector.serial/META-INF/MANIFEST.MF (2)

8-14: Terminal bundle migration looks correct for Eclipse 2025-12.

The migration from org.eclipse.tm.terminal.* to org.eclipse.terminal.* bundles aligns with the Eclipse 2025-12 terminal package consolidation. The version ranges [1.0.0,2.0.0) are appropriate for the new terminal bundle structure.

Note that com.espressif.idf.core was removed from Require-Bundle, but this bundle still has access to it transitively through com.espressif.idf.ui, which reexports com.espressif.idf.core.


26-26: LGTM!

Moving org.eclipse.ui.console from Require-Bundle to Import-Package is a cleaner approach for package-level dependencies.

bundles/com.espressif.idf.debug.gdbjtag.openocd/META-INF/MANIFEST.MF (1)

35-38: Dependency restructuring looks appropriate.

The Import-Package additions for org.eclipse.core.expressions, org.eclipse.embedcdt.debug.gdbjtag.ui, and org.eclipse.jface.text properly declare the specific package-level dependencies needed by this bundle after removing the broader bundle-level requirements.

bundles/com.espressif.idf.ui/META-INF/MANIFEST.MF (2)

36-41: LGTM on Export-Package expansion.

The newly exported packages (com.espressif.idf.ui, com.espressif.idf.ui.dialogs, com.espressif.idf.ui.handlers, com.espressif.idf.ui.preferences, com.espressif.idf.ui.tracing, com.espressif.idf.ui.update) enable other bundles in this PR to depend on these UI components via Import-Package rather than requiring the entire bundle.


47-49: No action required. The removal of com.espressif.idf.lsp.preferences import is safe—no code in the bundle references this package.

releng/com.espressif.idf.target/com.espressif.idf.target.target (3)

6-6: LGTM on Eclipse platform update to 4.38.

The repository URL update from 4.37 to 4.38 aligns with the Eclipse 2025-12 release.


20-25: Terminal feature consolidation aligns with manifest changes.

The consolidation from multiple org.eclipse.tm.terminal.* units to org.eclipse.terminal.feature.feature.group correctly matches the bundle manifest updates that now reference org.eclipse.terminal.* packages.


30-37: No action required — JNA is available from the current Orbit repository.

com.sun.jna and com.sun.jna.platform are not explicitly listed in the target file's orbit location block, but they are available from the Eclipse Orbit 2025-12 repository (https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/2025-12/), which contains JNA 5.18.1. The required version constraint [5.18.0,6.0.0) is satisfied. JNA bundles do not need to be explicitly declared in the target file if they are available from a configured repository.

Likely an incorrect or invalid review comment.

bundles/com.espressif.idf.core/META-INF/MANIFEST.MF (1)

61-64: JNA version constraint [5.18.0,6.0.0) is satisfied in Eclipse 2025-12.

Verification confirms that JNA 5.18.1, available in the Eclipse 2025-12 release repository, satisfies the specified version range. The constraint is correct and the code change is valid.

Comment on lines +8 to 11
Require-Bundle: org.eclipse.core.runtime
Bundle-RequiredExecutionEnvironment: JavaSE-17
Automatic-Module-Name: com.espressif.idf.help
Bundle-ActivationPolicy: lazy
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check for help-related content and code

echo "=== Checking for help TOC and topic files ==="
fd -e xml . bundles/com.espressif.idf.help/ 2>/dev/null | head -20

echo -e "\n=== Searching for 'toc' and 'topic' patterns in XML files ==="
rg -n "toc|topic" bundles/com.espressif.idf.help/ --type xml 2>/dev/null | head -20

echo -e "\n=== Checking plugin.xml for help extensions ==="
if [ -f "bundles/com.espressif.idf.help/plugin.xml" ]; then
  cat bundles/com.espressif.idf.help/plugin.xml
else
  echo "plugin.xml not found"
fi

echo -e "\n=== Checking for help API imports in source code ==="
fd -e java . bundles/com.espressif.idf.help/src/ 2>/dev/null && rg -n "import org\.eclipse\.help\." bundles/com.espressif.idf.help/src/ 2>/dev/null || echo "No help imports found"

echo -e "\n=== Listing all files in help bundle ==="
fd . bundles/com.espressif.idf.help/ --type f 2>/dev/null | grep -v "\.class$"

Repository: espressif/idf-eclipse-plugin

Length of output: 2594


Critical: Missing required dependencies for help system integration.

The bundle defines and uses Eclipse help and intro extensions but is missing the required dependencies. Evidence from plugin.xml:

  • org.eclipse.help.toc extension point (lines 12-16) registers espidfToc.xml, which contains help table of contents with topics pointing to HTML content
  • org.eclipse.ui.intro.configExtension extension point (lines 5-9) registers intro configuration referencing org.eclipse.ui.intro.universalConfig

The corresponding content files exist:

  • espidfToc.xml - help table of contents with topics
  • intro/esp_idf.xml - intro/welcome page configuration
  • html/eclipse_plugin_guide.html, html/esp_idf_guide.html - help content

Restore Require-Bundle entries for org.eclipse.help, org.eclipse.ui.intro, org.eclipse.ui.intro.universal, and org.eclipse.ui. Without these dependencies, the help system will not recognize or display the bundle's help content and intro pages.

🤖 Prompt for AI Agents
In @bundles/com.espressif.idf.help/META-INF/MANIFEST.MF around lines 8 - 11, The
MANIFEST.MF’s Require-Bundle header is missing required Eclipse help/intro
dependencies; update the Require-Bundle entry (alongside existing
org.eclipse.core.runtime) to include org.eclipse.help, org.eclipse.ui.intro,
org.eclipse.ui.intro.universal and org.eclipse.ui so the help TOC
(espidfToc.xml) and intro config (intro/esp_idf.xml) are recognized by the
platform; ensure the bundles are comma-separated in the Require-Bundle header
and keep Bundle-RequiredExecutionEnvironment and other headers unchanged.

Comment on lines +12 to 15
Require-Bundle: org.eclipse.core.variables,
com.espressif.idf.core,
org.eclipse.core.runtime,
org.eclipse.ui
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify SWT and JFace usage in this bundle

# First check if the directory exists and has source files
ls -la bundles/com.espressif.idf.swt.custom/src/ 2>/dev/null || find bundles/com.espressif.idf.swt.custom -type f -name "*.java" | head -20

# Check for SWT widget imports
rg -n "import org\.eclipse\.swt\." bundles/com.espressif.idf.swt.custom/ -C2

# Check for JFace imports
rg -n "import org\.eclipse\.jface\." bundles/com.espressif.idf.swt.custom/ -C2

# Check for registry usage
rg -n "import org\.eclipse\.core\.runtime\.(IExtensionRegistry|IExtension|IConfigurationElement)" bundles/com.espressif.idf.swt.custom/ -C2

Repository: espressif/idf-eclipse-plugin

Length of output: 6770


🏁 Script executed:

# Check the current manifest to understand the full dependency structure
cat bundles/com.espressif.idf.swt.custom/META-INF/MANIFEST.MF

# Also verify if org.eclipse.ui actually re-exports SWT and JFace
rg -n "Re-Export-Package" bundles/com.espressif.idf.swt.custom/

Repository: espressif/idf-eclipse-plugin

Length of output: 667


Add explicit dependencies on org.eclipse.swt and org.eclipse.jface.

This bundle directly imports and uses SWT and JFace classes (TextWithButton.java and StyledInfoText.java contain multiple imports from org.eclipse.swt.* and org.eclipse.jface.resource.*), but neither bundle is listed in Require-Bundle. Relying on transitive access through org.eclipse.ui is fragile and can break if upstream versions stop re-exporting these bundles. Declare these as direct dependencies in the manifest.

🤖 Prompt for AI Agents
In @bundles/com.espressif.idf.swt.custom/META-INF/MANIFEST.MF around lines 12 -
15, The manifest for the com.espressif.idf.swt.custom bundle currently lists
Require-Bundle without declaring org.eclipse.swt and org.eclipse.jface; update
the Require-Bundle section to explicitly include org.eclipse.swt and
org.eclipse.jface (e.g. add "org.eclipse.swt, org.eclipse.jface") so the
com.espressif.idf.swt.custom bundle that contains TextWithButton.java and
StyledInfoText.java has direct dependencies on SWT and JFace rather than relying
on transitive re-exports from org.eclipse.ui.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @tests/com.espressif.idf.core.test/pom.xml:
- Around line 24-34: The tycho-surefire-plugin configuration in this module sets
providerHint to junit5 but does not override the parent UI test settings,
causing a merge with useUIHarness/useUIThread/application that breaks pure
JUnit5 unit tests; update the tycho-surefire-plugin (artifactId
tycho-surefire-plugin) configuration to explicitly clear UI harness options and
set unit-test-safe values by adding useUIHarness false (and remove/override
useUIThread and application), keep providerHint junit5, and include skipTests
${skipTests} so the child POM fully overrides the parent's UI-specific
configuration.
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 264e0e2 and c0b89ef.

📒 Files selected for processing (1)
  • tests/com.espressif.idf.core.test/pom.xml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: build_macos
  • GitHub Check: build_linux
  • GitHub Check: build_windows

Comment on lines 24 to 34
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<configuration>
<providerHint>junit5</providerHint>
</configuration>
</plugin>
</plugins>
</build>
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# Find the pom.xml file structure and parent POM
fd pom.xml | head -20

Repository: espressif/idf-eclipse-plugin

Length of output: 903


🏁 Script executed:

# Check the parent POM reference and plugin version management
cat tests/com.espressif.idf.core.test/pom.xml

Repository: espressif/idf-eclipse-plugin

Length of output: 1182


🏁 Script executed:

# Look for the parent POM file
fd -path "*/tests/com.espressif.idf.tests/*" pom.xml

Repository: espressif/idf-eclipse-plugin

Length of output: 240


🏁 Script executed:

# Find the parent POM file location
find tests -name "pom.xml" | head -10

Repository: espressif/idf-eclipse-plugin

Length of output: 167


🏁 Script executed:

# Search for tycho-surefire-plugin version definition across POMs
rg "tycho-surefire-plugin" -A 5 -B 2

Repository: espressif/idf-eclipse-plugin

Length of output: 1123


🏁 Script executed:

# Specifically look at parent POM structure
find . -path "*/tests/*" -name "pom.xml" -type f

Repository: espressif/idf-eclipse-plugin

Length of output: 173


🏁 Script executed:

# Examine the parent POM file in full
cat tests/pom.xml

Repository: espressif/idf-eclipse-plugin

Length of output: 2477


🏁 Script executed:

# Search for tycho-version property definition
rg "tycho-version" -B 2 -A 2

Repository: espressif/idf-eclipse-plugin

Length of output: 4675


Configuration conflict: JUnit 5 unit tests cannot run with parent's UI harness settings.

The plugin version is correctly managed via ${tycho-version} (4.0.12) inherited from the parent POM. However, there is a critical configuration issue: the child module's providerHint set to junit5 will merge with the parent's configuration that includes useUIHarness=true, useUIThread=false, and application=org.eclipse.ui.ide.workbench. These settings are designed for UI tests running in the Eclipse workbench, not for pure unit tests with JUnit 5.

The configuration needs to either override all parent settings explicitly or clear the incompatible UI-specific options. For a unit test module, use:

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-surefire-plugin</artifactId>
    <configuration>
        <providerHint>junit5</providerHint>
        <useUIHarness>false</useUIHarness>
        <skipTests>${skipTests}</skipTests>
    </configuration>
</plugin>
🤖 Prompt for AI Agents
In @tests/com.espressif.idf.core.test/pom.xml around lines 24 - 34, The
tycho-surefire-plugin configuration in this module sets providerHint to junit5
but does not override the parent UI test settings, causing a merge with
useUIHarness/useUIThread/application that breaks pure JUnit5 unit tests; update
the tycho-surefire-plugin (artifactId tycho-surefire-plugin) configuration to
explicitly clear UI harness options and set unit-test-safe values by adding
useUIHarness false (and remove/override useUIThread and application), keep
providerHint junit5, and include skipTests ${skipTests} so the child POM fully
overrides the parent's UI-specific configuration.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
tests/com.espressif.idf.core.test/META-INF/MANIFEST.MF (1)

14-14: Add version constraint to org.mockito.mockito-core for consistency.

Unlike the JUnit dependencies above (lines 12-13), org.mockito.mockito-core lacks a bundle-version constraint. This inconsistency could lead to unpredictable behavior if an incompatible version is resolved at runtime.

Additionally, the Bundle-ClassPath (lines 19-21) includes Mockito runtime dependencies (byte-buddy-1.14.5.jar, byte-buddy-agent-1.14.5.jar, objenesis-3.3.jar). Clarify whether these bundled JARs are intended to work alongside the required org.mockito.mockito-core bundle or if there's a version alignment concern.

♻️ Proposed fix to add version constraint
- org.mockito.mockito-core
+ org.mockito.mockito-core;bundle-version="[5.0.0,6.0.0)"

Note: Adjust the version range based on your project's Mockito version requirements.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f453f1c and 3e4556f.

📒 Files selected for processing (1)
  • tests/com.espressif.idf.core.test/META-INF/MANIFEST.MF
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: build_windows
  • GitHub Check: build_linux
  • GitHub Check: build_macos
🔇 Additional comments (1)
tests/com.espressif.idf.core.test/META-INF/MANIFEST.MF (1)

12-13: The explicit version constraint (5.14.1) is appropriate for Eclipse 2025-12. JUnit Jupiter 5.14.1 is the supported release for the 2025-12 stream and includes migration helpers toward JUnit 6, so no changes are needed.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tests/com.espressif.idf.core.test/META-INF/MANIFEST.MF (1)

16-22: Remove redundant Mockito transitive dependencies from Bundle-ClassPath.

The objenesis-3.3.jar, byte-buddy-1.14.5.jar, and byte-buddy-agent-1.14.5.jar are transitive dependencies of Mockito and are not directly imported anywhere in the codebase. With org.mockito.mockito-core already in Require-Bundle, these JARs should be provided by the Mockito bundle itself. Including them here creates risk of duplicate classes or version mismatches.

Remove these three JARs from Bundle-ClassPath unless they're explicitly needed for a use case outside of Mockito.

🤖 Fix all issues with AI agents
In @tests/com.espressif.idf.core.test/META-INF/MANIFEST.MF:
- Around line 12-15: Add a bundle-version constraint for the Mockito entry in
the MANIFEST by updating the org.mockito.mockito-core token to include
bundle-version="5.20.0" so it matches Eclipse 2025-12; find the line containing
org.mockito.mockito-core in the tests/com.espressif.idf.core.test
META-INF/MANIFEST.MF and append the bundle-version attribute (e.g.,
org.mockito.mockito-core;bundle-version="5.20.0") to ensure deterministic
dependency resolution.
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3e4556f and 77f3d66.

📒 Files selected for processing (1)
  • tests/com.espressif.idf.core.test/META-INF/MANIFEST.MF
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: build_windows
  • GitHub Check: build_linux
  • GitHub Check: build_macos

Comment on lines 12 to 15
junit-jupiter-api;bundle-version="5.14.1",
junit-jupiter-engine;bundle-version="5.14.1",
junit-jupiter-params;bundle-version="5.14.1",
org.mockito.mockito-core
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

cat -n tests/com.espressif.idf.core.test/META-INF/MANIFEST.MF

Repository: espressif/idf-eclipse-plugin

Length of output: 3261


🌐 Web query:

JUnit Jupiter 5.14.1 release date version

💡 Result:

JUnit Jupiter 5.14.1 was released on October 31, 2025. [1][2]

Sources:
[1] JUnit 5.14.1 Release Notes — docs.junit.org.
[2] JUnit 5.14.1 release entry — junit-team/junit5 GitHub.


🌐 Web query:

Mockito 5.0.0 OSGi bundle version constraint Eclipse

💡 Result:

Short answer: the problem is usually a manifest version constraint — some Eclipse plugins/OSGi bundles require org.mockito (or org.mockito.mockito-core) with a bundle-version range excluding 5.0.0. Fix by either (a) updating the Require-Bundle/Bundle-Version range to include Mockito 5.x, (b) import packages (Import-Package with package version ranges) instead of Require-Bundle, or (c) use an Eclipse-wrapped Mockito bundle that matches the required version.

Key points and links:

  • Require-Bundle uses bundle-version ranges; a constraint like org.mockito.mockito-core;bundle-version="[4.0.0,5.0.0)" will NOT accept 5.0.0. Change the range (e.g. "[5.0.0,6.0.0)") or remove the bundle-version constraint. [1]
  • Prefer Import-Package/version over bundle-version binding (imports bind to package versions; bundle-version is binding to the exporter bundle and is rarely needed). [2]
  • Recent Eclipse builds include wrapped Mockito bundles (e.g. org.mockito.mockito-core available in Eclipse distributions), so using the Eclipse-provided wrapped bundle or wrapping mockito-core yourself with bnd/maven-bundle-plugin can resolve manifest mismatches. Example: Eclipse repo lists org.mockito.mockito-core:5.10.0. [3][4]

If you want, tell me the exact Manifest Require-Bundle/Import-Package lines or the error text from Eclipse/OSGi and I’ll propose the exact manifest change.

Sources:
[1] Mylyn commit showing Require-Bundle constraint on org.mockito.mockito-core;bundle-version="[4.0.0,5.0.0)".
[2] Explanation of version vs bundle-version in OSGi Import-Package.
[3] Lightrun note about Mockito junit-jupiter missing OSGi entries.
[4] Eclipse bundle list showing org.mockito.mockito-core in Eclipse releases.


🌐 Web query:

Eclipse 2025-12 Mockito version org.mockito.mockito-core bundle

💡 Result:

Eclipse Orbit (2025-12) includes the OSGi bundle org.mockito.mockito-core version 5.20.0. [1][2]

Sources:

  • Orbit Aggregation 2025-12 bundle listing (shows org.mockito.mockito-core 5.20.0). [1]
  • org.mockito.mockito-core.source 5.20.0 build report on download.eclipse.org. [2]

Specify a bundle-version constraint for org.mockito.mockito-core.

Line 15 lacks a bundle-version attribute for org.mockito.mockito-core, which can lead to unpredictable behavior if incompatible versions are resolved at runtime. Eclipse 2025-12 includes Mockito 5.20.0; add the version constraint to match.

🔧 Suggested fix
  junit-jupiter-api;bundle-version="5.14.1",
  junit-jupiter-engine;bundle-version="5.14.1",
  junit-jupiter-params;bundle-version="5.14.1",
- org.mockito.mockito-core
+ org.mockito.mockito-core;bundle-version="5.20.0"
🤖 Prompt for AI Agents
In @tests/com.espressif.idf.core.test/META-INF/MANIFEST.MF around lines 12 - 15,
Add a bundle-version constraint for the Mockito entry in the MANIFEST by
updating the org.mockito.mockito-core token to include bundle-version="5.20.0"
so it matches Eclipse 2025-12; find the line containing org.mockito.mockito-core
in the tests/com.espressif.idf.core.test META-INF/MANIFEST.MF and append the
bundle-version attribute (e.g.,
org.mockito.mockito-core;bundle-version="5.20.0") to ensure deterministic
dependency resolution.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
bundles/com.espressif.idf.core/META-INF/MANIFEST.MF (1)

26-26: Clarify the execution environment requirement for this bundle.

The AI summary claims "Bumped IDE/runtime to JavaSE-21", but the manifest specifies JavaSE-17. Across the codebase, only test bundles were updated to JavaSE-21; production bundles including com.espressif.idf.core remain on JavaSE-17. Confirm whether this bundle should stay on JavaSE-17 or be updated to align with the test bundles on JavaSE-21.

🤖 Fix all issues with AI agents
In @bundles/com.espressif.idf.core/META-INF/MANIFEST.MF:
- Around line 45-46: Remove the unused export "org.apache.commons.lang3" from
the Export-Package list in the MANIFEST.MF (it’s not referenced by any code or
dependent bundles); for "org.apache.commons.io" inspect EclipseIniUtil.java
(which uses Commons IO) and the list of dependent bundles—if no other bundle
imports org.apache.commons.io then remove it from the Export-Package as well,
otherwise leave it exported; update the MANIFEST.MF Export-Package entries
accordingly and rerun resolution to ensure no dependent bundle breakage.

In @releng/com.espressif.idf.target/com.espressif.idf.target.target:
- Around line 35-36: Decide whether you intended to force JUnit 5.15 or to use
the latest stable 5.14.2, then update the <unit id="junit-jupiter-api" .../> and
<unit id="junit-jupiter-params" .../> entries to the chosen version (e.g.,
change both to version="5.14.2" if using stable), update the commit message to
match that exact version, and search the repo for any other references to
junit-jupiter-api or junit-jupiter-params to keep versions consistent.
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 77f3d66 and 62f3efc.

📒 Files selected for processing (5)
  • bundles/com.espressif.idf.core/META-INF/MANIFEST.MF
  • releng/com.espressif.idf.target/com.espressif.idf.target.target
  • tests/com.espressif.idf.core.test/META-INF/MANIFEST.MF
  • tests/com.espressif.idf.core.test/pom.xml
  • tests/com.espressif.idf.ui.test/META-INF/MANIFEST.MF
🚧 Files skipped from review as they are similar to previous changes (2)
  • tests/com.espressif.idf.core.test/META-INF/MANIFEST.MF
  • tests/com.espressif.idf.ui.test/META-INF/MANIFEST.MF
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build_linux
  • GitHub Check: build_windows
🔇 Additional comments (4)
tests/com.espressif.idf.core.test/pom.xml (1)

24-34: The providerHint configuration is correct; update the commit message for accuracy.

The providerHint value of junit512 is appropriate for JUnit 5.14.1 (confirmed in MANIFEST.MF), as it targets JUnit Platform 5.12+. However, the commit message claiming "junit 5.15" is inaccurate—the actual JUnit version is 5.14.1. Update the commit message to reflect the correct version.

Likely an incorrect or invalid review comment.

releng/com.espressif.idf.target/com.espressif.idf.target.target (2)

6-6: The target platform update to Eclipse 2025-12 (4.38) is using the officially released GA build (December 1, 2025). The repository references point to stable, established update sites. No concerns regarding release availability or stability.


25-25: Consolidation properly implemented across all terminal components.

The terminal feature consolidation from multiple org.eclipse.tm.* units to org.eclipse.terminal.feature.feature.group is complete. Code migration shows:

  • All terminal functionality preserved in consolidated feature (serial, process, launcher delegates)
  • Terminal connectors migrated with proper dependency declarations: org.eclipse.terminal.view.core, org.eclipse.terminal.view.ui, org.eclipse.terminal.control all pinned to [1.0.0,2.0.0)
  • API changes handled comprehensively: import paths updated, extension points renamed, launcher interface refactored to use CompletableFuture, exception handling added with proper logging
bundles/com.espressif.idf.core/META-INF/MANIFEST.MF (1)

63-64: Version range is compatible with Eclipse 2025-12.

The specified JNA version range [5.18.0,6.0.0) is compatible with Eclipse 2025-12, which provides JNA 5.18.1. The patch version update from 5.18.0 to 5.18.1 carries no breaking changes to the JNA API.

Comment on lines +35 to +36
<unit id="junit-jupiter-api" version="5.14.1"/>
<unit id="junit-jupiter-params" version="5.14.1"/>
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

latest stable version JUnit 5 Jupiter January 2026

💡 Result:

The latest stable JUnit Jupiter (JUnit 5) release as of January 8, 2026 is 5.14.2 (released January 6, 2026). [1]

Sources:
[1] JUnit release notes — 5.14.2 (docs.junit.org).


🏁 Script executed:

# First, let's verify the actual content at the specified lines
cat -n releng/com.espressif.idf.target/com.espressif.idf.target.target | sed -n '30,40p'

Repository: espressif/idf-eclipse-plugin

Length of output: 899


🏁 Script executed:

# Check the commit message to verify the claim about "forcing junit 5.15"
git log --oneline -5

Repository: espressif/idf-eclipse-plugin

Length of output: 124


🏁 Script executed:

# Let's search for any related commits or changes mentioning junit versions
git log --all --oneline --grep="junit\|JUnit" | head -20

Repository: espressif/idf-eclipse-plugin

Length of output: 416


Version mismatch between commit message and target file.

The commit message states "forcing junit 5.15", but the target definition at lines 35-36 specifies JUnit version 5.14.1. Note that the latest stable JUnit 5 version as of January 2026 is 5.14.2. Clarify the intended version, update the target file accordingly, and verify that the commit message reflects the actual implementation.

🤖 Prompt for AI Agents
In @releng/com.espressif.idf.target/com.espressif.idf.target.target around lines
35 - 36, Decide whether you intended to force JUnit 5.15 or to use the latest
stable 5.14.2, then update the <unit id="junit-jupiter-api" .../> and <unit
id="junit-jupiter-params" .../> entries to the chosen version (e.g., change both
to version="5.14.2" if using stable), update the commit message to match that
exact version, and search the repo for any other references to junit-jupiter-api
or junit-jupiter-params to keep versions consistent.

Comment on lines 35 to 38
<unit id="junit-jupiter-api" version="5.14.1"/>
<unit id="junit-jupiter-params" version="5.14.1"/>
<unit id="org.commonmark" version="0.0.0"/> <!-- 0.22.0 -->
<repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/2025-09"/>
<repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/2025-12"/>
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# First, let's understand the repository structure and locate MANIFEST.MF files
echo "=== Finding MANIFEST.MF files ==="
find . -name "MANIFEST.MF" -type f | head -20

echo ""
echo "=== Checking for log4j references in MANIFEST.MF ==="
rg -l "org\.apache\.log4j" --type=text 2>/dev/null || echo "No log4j references found"

echo ""
echo "=== Checking for JNA references in MANIFEST.MF ==="
rg -l "com\.sun\.jna" --type=text 2>/dev/null || echo "No JNA references found"

echo ""
echo "=== Checking for snakeyaml references ==="
rg -l "org\.yaml\.snakeyaml" --type=text 2>/dev/null || echo "No snakeyaml references found"

echo ""
echo "=== Checking for batik references ==="
rg -l "org\.apache\.batik" --type=text 2>/dev/null || echo "No batik references found"

Repository: espressif/idf-eclipse-plugin

Length of output: 1555


🏁 Script executed:

#!/bin/bash
echo "=== Content of com.espressif.idf.core MANIFEST.MF (first 50 lines) ==="
cat -n ./bundles/com.espressif.idf.core/META-INF/MANIFEST.MF | head -50

echo ""
echo "=== Checking the target file for removed/added units ==="
cat -n releng/com.espressif.idf.target/com.espressif.idf.target.target | head -60

Repository: espressif/idf-eclipse-plugin

Length of output: 6919


🏁 Script executed:

#!/bin/bash
echo "=== Full target file content ==="
cat -n releng/com.espressif.idf.target/com.espressif.idf.target.target

echo ""
echo "=== Searching for snakeyaml in the target file ==="
grep -n "snakeyaml" releng/com.espressif.idf.target/com.espressif.idf.target.target

echo ""
echo "=== Searching for jna in the target file ==="
grep -n "jna" releng/com.espressif.idf.target/com.espressif.idf.target.target

echo ""
echo "=== Checking if cdt-lsp is in the target file ==="
grep -n "cdt-lsp" releng/com.espressif.idf.target/com.espressif.idf.target.target

Repository: espressif/idf-eclipse-plugin

Length of output: 7806


🏁 Script executed:

#!/bin/bash
echo "=== Check git log for this target file ==="
git log --oneline -20 releng/com.espressif.idf.target/com.espressif.idf.target.target 2>/dev/null || echo "Git history not available"

echo ""
echo "=== Search for all 'jna' references in the entire repository ==="
rg -i "jna" --type=text --type=xml 2>/dev/null | head -30

echo ""
echo "=== Check if any .target file has jna ==="
find . -name "*.target" -type f -exec grep -l "jna" {} \;

echo ""
echo "=== Verify com.espressif.idf.core manifest again for exact requirement ==="
grep -n "jna" ./bundles/com.espressif.idf.core/META-INF/MANIFEST.MF

Repository: espressif/idf-eclipse-plugin

Length of output: 435


Add JNA platform bundle to target configuration.

The removal of Orbit units created a critical dependency issue. While org.yaml.snakeyaml is now sourced from the cdt-lsp-3.3 repository (version 2.2.0), the com.sun.jna.platform bundle and com.sun.jna package (required by com.espressif.idf.core manifest lines 21 and 63) are no longer defined in the target file and have no alternative source. This will cause build failures during dependency resolution. You must add JNA to an appropriate repository location in the target configuration or re-add the Orbit repository reference.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
releng/com.espressif.idf.target/com.espressif.idf.target.target (1)

1-96: Comprehensive testing required for major platform upgrade.

This target platform file update represents a significant upgrade from Eclipse 2025-09 to 2025-12, which includes:

  • Eclipse platform version bump (4.37 → 4.38)
  • Orbit aggregation update
  • Terminal feature consolidation
  • JUnit 5 migration
  • Various dependency removals (as noted in AI summary)

According to the PR objectives, none of the checklist items have been completed yet:

  • ☐ PR Self Reviewed
  • ☐ Applied Code formatting
  • ☐ Added Documentation
  • ☐ Added Unit Test
  • ☐ Verified on all platforms - Windows, Linux and macOS

Given the scope of this platform upgrade, please ensure:

  1. The build completes successfully with the new target platform
  2. All existing unit tests pass (and are migrated to JUnit 5 if applicable)
  3. Manual testing on Windows, Linux, and macOS confirms no regressions
  4. Any removed dependencies (mentioned in AI summary: javax.xml.jre, org.apache.log4j, batik.* units) are truly no longer needed

Run the following to check if any removed dependencies are still referenced in the codebase:

#!/bin/bash
# Check for references to removed dependencies
echo "=== Checking for javax.xml references ==="
rg -nP --type=java 'import\s+javax\.xml\.' | head -20

echo "=== Checking for log4j references ==="
rg -nP 'org\.apache\.log4j' | head -20

echo "=== Checking for batik references ==="
rg -nP 'org\.apache\.batik' | head -20

echo "=== Checking MANIFEST.MF for removed dependencies ==="
fd -e MF -x cat {} \; | rg '(javax\.xml|log4j|batik)'
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 62f3efc and a44151f.

📒 Files selected for processing (1)
  • releng/com.espressif.idf.target/com.espressif.idf.target.target
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build_windows
  • GitHub Check: build_macos
🔇 Additional comments (7)
releng/com.espressif.idf.target/com.espressif.idf.target.target (7)

37-37: LGTM: com.sun.jna dependency retained.

Good that com.sun.jna has been retained (or added back per the commit message), as it's essential for Java Native Access functionality that the plugin likely requires.


86-86: LGTM: SnakeYAML dependency properly sourced.

The org.yaml.snakeyaml dependency is correctly sourced from the CDT LSP repository with version 2.2.0. This ensures compatibility with the CDT LSP features.


20-20: Eclipse 2025-12 releases repository is accessible.

The repository URL https://download.eclipse.org/releases/2025-12/ is available and responds correctly with HTTP 200. The update from 2025-09 to 2025-12 is valid.


6-6: The Eclipse 4.38 update site is available and stable. The GA release was published on December 10, 2025, with the URL https://download.eclipse.org/eclipse/updates/4.38/ correctly mapped to Eclipse 2025-12.


25-25: Consolidation to org.eclipse.terminal.feature.feature.group is clean.

No references to the old Eclipse TM terminal packages (org.eclipse.tm.*) exist in the codebase, and the consolidated feature at line 25 appears to be the only terminal unit defined in the target platform. The consolidation carries no breaking changes from orphaned references.


39-39: Orbit-aggregation 2025-12 repository is accessible and functional.

The repository URL is operational (HTTP 200) and 2025-12 is a valid released version. JUnit 5.14.1 is confirmed available in this release. The update from 2025-09 to 2025-12 is appropriate.


35-36: Review comment should be rewritten—assumptions about version pinning pattern were incomplete.

JUnit Jupiter 5.14.1 was released on October 31, 2025, and artifacts are available on Maven Central. The version is legitimate and current for the 2025-12 Orbit aggregation being used.

However, the premise that "most dependencies use version 0.0.0" needs clarification: while items within the same location block (lines 31-34, 37-38) do use 0.0.0, the target file contains multiple pinned versions elsewhere (e.g., embedcdt at 6.4.0.202307251916, snakeyaml at 2.2.0, swtchart at 1.0.0.202412021530). Version pinning is not unusual in this file; it appears to be a deliberate choice for stability when needed.

If the intent is to question the specific use of pinned versions for JUnit dependencies in this location block, that's worth clarifying. Otherwise, no action is needed—the version is valid and the pinning aligns with established patterns in the file.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
bundles/com.espressif.idf.core/META-INF/MANIFEST.MF (1)

8-25: Fix missing dependency: org.eclipse.core.resources must be restored to Require-Bundle.

Removing org.eclipse.core.resources from the manifest will break compilation. The code actively uses classes from this bundle in 61 imports across 29 files, including: IProject, IFile, IMarker, IResource, IContainer, IBuildConfiguration, IWorkspace, IResourceChangeListener, IResourceChangeEvent, IResourceDelta, and ResourcesPlugin.

Affected files: CsvTableDataService, SDKConfigUtil, ProjectDescriptionReader, ToolInitializer, FileUtil, ErrorMarkerListener, MarkerCleanupJob, IDFBuildConfiguration, ResourceChangeListener, and 20+ others.

Re-add org.eclipse.core.resources to the Require-Bundle list. Verify the other removed dependencies (org.eclipse.core.expressions, com.ibm.icu, org.eclipse.jgit, org.eclipse.cdt.jsoncdb, org.eclipse.core.commands, org.apache.commons.logging) are not similarly used before removing them.

🧹 Nitpick comments (1)
bundles/com.espressif.idf.core/META-INF/MANIFEST.MF (1)

45-46: Consider limiting exports from embedded JARs to only necessary third-party packages.

The bundle exports org.apache.commons.io and org.apache.commons.lang3 from embedded JARs (lines 55-56), which is consistent with how other third-party packages like org.json.simple and org.yaml.snakeyaml are handled in the same manifest. While this pattern doesn't currently cause split-package conflicts in the codebase (no other bundles provide these packages), exporting third-party libraries is not ideal from an OSGi design perspective and can create coupling issues.

Consider reviewing whether all seven exported third-party packages need to be public APIs, or if some could be kept internal-only by removing them from Export-Package.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a44151f and c3ae58d.

📒 Files selected for processing (1)
  • bundles/com.espressif.idf.core/META-INF/MANIFEST.MF
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build_windows
  • GitHub Check: build_macos
🔇 Additional comments (2)
bundles/com.espressif.idf.core/META-INF/MANIFEST.MF (2)

26-26: Verify Java execution environment version.

The AI summary indicates the Java runtime was bumped to JavaSE-21, but this manifest still specifies JavaSE-17. Confirm whether this file should be updated to JavaSE-21 to align with the Eclipse 2025-12 platform update.


63-64: The mixed JNA dependency approach and version constraints are correct and necessary for this codebase.

The code directly imports com.sun.jna.win32.W32APIOptions (in WinNativeFileTagOperations.java), which requires the com.sun.jna.win32 package to be available as a direct dependency. While com.sun.jna.platform is included in Require-Bundle, it does not re-export the core JNA packages, making the Import-Package declarations necessary. The version constraint [5.18.0,6.0.0) is valid for Eclipse 2025-12's Orbit distribution, which provides JNA 5.18.1. This mixed approach (Require-Bundle for the platform bundle + Import-Package for directly imported packages) follows OSGi best practices and was intentionally added to fix a failing test.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c3ae58d and 82e15be.

📒 Files selected for processing (1)
  • bundles/com.espressif.idf.core/META-INF/MANIFEST.MF
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build_macos
  • GitHub Check: build_windows
🔇 Additional comments (1)
bundles/com.espressif.idf.core/META-INF/MANIFEST.MF (1)

25-26: LSP4j 0.24.0 and JNA versions are valid for Eclipse 2025-12.

Verification confirms:

  • org.eclipse.lsp4j version 0.24.0 is used by LSP4e 0.29.0 and is compatible with Eclipse 2025-12
  • com.sun.jna resolves to version 5.18.1 from Eclipse Orbit 2025-12, which is appropriate for the target platform

The additions are correct and align with the target platform configuration.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In @bundles/com.espressif.idf.core/META-INF/MANIFEST.MF:
- Around line 46-47: The MANIFEST.MF currently exports third-party packages
org.apache.commons.io and org.apache.commons.lang3 via Export-Package; remove
these package names from Export-Package so the commons libraries remain internal
to the bundle (or stop exporting them), and if shared use is required, create or
depend on a dedicated library bundle that exports those packages instead; update
Export-Package to no longer list "org.apache.commons.io" and
"org.apache.commons.lang3" and ensure any consumers either include their own
copy or declare a dependency on the shared commons bundle.
- Line 64: The MANIFEST.MF contains an unused Import-Package declaration
"Import-Package: org.apache.commons.logging"; remove that entry from the
MANIFEST.MF if no code imports org.apache.commons.logging, or if it must remain,
add a brief comment in the commit message explaining why the dependency is
required (e.g., runtime-supplied logging adapter or optional integration), and
ensure any classes that rely on org.apache.commons.logging (search for imports
or references to org.apache.commons.logging.Log / LogFactory) are documented in
the manifest or module metadata accordingly.
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 82e15be and c270841.

📒 Files selected for processing (1)
  • bundles/com.espressif.idf.core/META-INF/MANIFEST.MF
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: build_windows
  • GitHub Check: build_linux
  • GitHub Check: build_macos
🔇 Additional comments (2)
bundles/com.espressif.idf.core/META-INF/MANIFEST.MF (2)

27-27: [Your rewritten review comment text here]
[Exactly ONE classification tag]


25-26: No issues found. The manifest correctly specifies lsp4j version 0.24.0, which is the standard version included in Eclipse 2025-12. Additionally, both com.sun.jna and com.sun.jna.platform must be explicitly listed in Require-Bundle (they are not redundant); com.sun.jna.platform has an explicit OSGi dependency on the core com.sun.jna bundle and requires both to be resolved.

Comment on lines +46 to +47
org.apache.commons.io,
org.apache.commons.lang3,
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Exporting third-party libraries can cause OSGi class loading conflicts.

Exporting org.apache.commons.io and org.apache.commons.lang3 from this bundle is problematic:

  • Version conflicts: Other bundles may depend on different versions of these libraries, leading to ClassCastException or NoSuchMethodError at runtime.
  • OSGi best practice: Third-party libraries should either remain internal to the bundle or be packaged in dedicated library bundles that other plugins can depend on.

Recommendation: Remove these packages from Export-Package and keep them internal. If other bundles need these libraries, they should include their own copies or depend on a shared library bundle.

📦 Verify if other bundles depend on these exports
#!/bin/bash
# Search for bundles that might be importing these packages
rg -n --type manifest "Import-Package.*org\.apache\.commons\.(io|lang3)" 
rg -n "org\.apache\.commons\.(io|lang3)" --glob "*.java" -C 2
🤖 Prompt for AI Agents
In @bundles/com.espressif.idf.core/META-INF/MANIFEST.MF around lines 46 - 47,
The MANIFEST.MF currently exports third-party packages org.apache.commons.io and
org.apache.commons.lang3 via Export-Package; remove these package names from
Export-Package so the commons libraries remain internal to the bundle (or stop
exporting them), and if shared use is required, create or depend on a dedicated
library bundle that exports those packages instead; update Export-Package to no
longer list "org.apache.commons.io" and "org.apache.commons.lang3" and ensure
any consumers either include their own copy or declare a dependency on the
shared commons bundle.

lib/commons-compress-1.21.jar,
lib/xz-1.9.jar
Import-Package: org.eclipse.cdt.debug.core.launch,
Import-Package: org.apache.commons.logging,
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for usage of org.apache.commons.logging in the codebase
rg "import org\.apache\.commons\.logging" --type java -C 2

Repository: espressif/idf-eclipse-plugin

Length of output: 54


🌐 Web query:

Eclipse 2025-12 org.apache.commons.logging bundle availability target platform

💡 Result:

Short answer: Yes — the 2025-12 Eclipse release provides Commons Logging as OSGi bundles in the target platform: org.apache.commons.commons-logging 1.3.5 and org.apache.commons.logging 1.2.0 (both present in the 2025-12 repository). [1][2]

Sources:

  • org.apache.commons.commons-logging 1.3.5 in Eclipse 2025-12 repository. [1]
  • org.apache.commons.logging 1.2.0 in Eclipse 2025-12 repository. [2]

Remove unused Import-Package declaration or clarify dependency reason.

The package org.apache.commons.logging is available in Eclipse 2025-12, but it does not appear to be imported anywhere in the codebase. Either remove this declaration if it is not needed, or clarify in the commit message why this dependency is required.

🤖 Prompt for AI Agents
In @bundles/com.espressif.idf.core/META-INF/MANIFEST.MF at line 64, The
MANIFEST.MF contains an unused Import-Package declaration "Import-Package:
org.apache.commons.logging"; remove that entry from the MANIFEST.MF if no code
imports org.apache.commons.logging, or if it must remain, add a brief comment in
the commit message explaining why the dependency is required (e.g.,
runtime-supplied logging adapter or optional integration), and ensure any
classes that rely on org.apache.commons.logging (search for imports or
references to org.apache.commons.logging.Log / LogFactory) are documented in the
manifest or module metadata accordingly.

@AndriiFilippov
Copy link
Collaborator

@sigmaaa hi !

Tested under:
OS: Windows 11
ESP-IDF: v5.4 / v.5.5
Eclipse 25-12

Clangd is not there.

Cannot run program "clangd": CreateProcess error=2, The system cannot find the file specified

error.txt.log

@AndriiFilippov
Copy link
Collaborator

AndriiFilippov commented Jan 13, 2026

Tested under:
OS: Mac arm64 / Windows 11
ESP-IDF: v5.4 / v.5.5
Eclipse 25-12

The Serial Monitor gets stuck when starting.

No error message is shown.
The serial port detection works correctly and I can select the proper port.
Flashing the device works without any issues.

However, when it tries to open the Serial Monitor after flashing, it just hangs and never opens:
image

flash command:

C:\Espressif\tools\python\v5.4.3\venv\Scripts\python.exe C:\esp\v5.4.3\esp-idf\tools\idf.py -p COM6 flash

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
releng/com.espressif.idf.target/com.espressif.idf.target.target (1)

84-88: Update CDT LSP to version 3.4.0 for Eclipse 2025-12 compatibility.

The target file currently references cdt-lsp-3.3.0 (line 86), which was paired with Eclipse 2025-09. Eclipse 2025-12 ships with CDT LSP 3.4.0. Update the repository location and unit version to match the 2025-12 release. Also ensure clangd 17.x is installed on target systems, as the CDT LSP 3.x series is developed and tested against clangd 17.x.

🤖 Fix all issues with AI agents
In @releng/com.espressif.idf.target/com.espressif.idf.target.target:
- Around line 35-37: The pom unit listing includes an outdated, unmaintained
Log4j 1.x entry ("unit id=\"org.apache.log4j\"") which has known
vulnerabilities; replace this dependency with a maintained logging library
(e.g., Log4j 2, SLF4J + Logback) or remove it if unused, and update any code
that references org.apache.log4j classes to the new API (or add a compatibility
bridge) so builds and runtime logging still work; if you must keep
org.apache.log4j for compatibility, explicitly document the justification and
ensure SocketServer or other vulnerable features are disabled/unreachable from
untrusted networks and add a comment near the "org.apache.log4j" unit explaining
the mitigation and risk acceptance.
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b56cdd2 and a1a3dc4.

📒 Files selected for processing (1)
  • releng/com.espressif.idf.target/com.espressif.idf.target.target
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build_windows
  • GitHub Check: build_linux
🔇 Additional comments (3)
releng/com.espressif.idf.target/com.espressif.idf.target.target (3)

6-6: LGTM: Platform repository URLs updated consistently.

The Eclipse updates repository (4.38) and releases repository (2025-12) are correctly aligned for the Eclipse 2025-12 platform update.

Also applies to: 20-20


40-40: LGTM: Orbit repository URL updated.

The orbit-aggregation repository is correctly updated to 2025-12, consistent with the platform update.


25-25: Terminal feature migration is correct and complete; Serial Monitor hanging is likely unrelated.

The consolidation from org.eclipse.tm.* units to org.eclipse.terminal.feature.feature.group has been properly completed. All Java code dependencies have been migrated, and the terminal connector bundles correctly require the new org.eclipse.terminal.* components (org.eclipse.terminal.view.core, org.eclipse.terminal.view.ui, org.eclipse.terminal.control).

The Serial Monitor hanging issue reported by AndriiFilippov is unrelated to this feature change. The Serial Monitor core (com.espressif.idf.serial.monitor) does not directly depend on Eclipse terminal APIs—it uses pty4j for terminal emulation. The reported hangs are likely caused by platform-specific serial port communication issues or pty4j compatibility, not the terminal feature consolidation.

Comment on lines +35 to +37
<unit id="junit-jupiter-api" version="5.14.1"/>
<unit id="junit-jupiter-params" version="5.14.1"/>
<unit id="org.apache.log4j" version="0.0.0"/>
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Check Maven Central for JUnit Jupiter versions
curl -s "https://search.maven.org/solrsearch/select?q=g:org.junit.jupiter+AND+a:junit-jupiter-api&rows=20&wt=json" 2>/dev/null | jq '.response.docs[] | {id, latestVersion}' | head -50

Repository: espressif/idf-eclipse-plugin

Length of output: 153


🏁 Script executed:

# Check if version 5.14.1 specifically exists
curl -s "https://search.maven.org/solrsearch/select?q=g:org.junit.jupiter+AND+a:junit-jupiter-api+AND+v:5.14.1&rows=5&wt=json" 2>/dev/null | jq '.response'

Repository: espressif/idf-eclipse-plugin

Length of output: 119


🌐 Web query:

JUnit Jupiter 5.14.1 release version availability

💡 Result:

Yes — JUnit Jupiter 5.14.1 was released on October 31, 2025 and its artifacts are available on Maven Central. [1][2]

Sources:

  • JUnit release notes (5.14.1 release date). [1]
  • Maven Central listing for org.junit.jupiter:junit-jupiter-api:5.14.1. [2]

🌐 Web query:

Log4j 1.x CVE security vulnerabilities current status

💡 Result:

Summary — current status (as of Jan 13, 2026)

  • Apache Log4j 1.x is end-of-life (EOL) — no upstream maintenance or new fixes. [1]
  • The primary high‑risk CVE for Log4j 1.2.x is CVE‑2019‑17571 (SocketServer deserialization). It affects 1.2 up through 1.2.17 when the SocketServer/listener for serialized log events is used. Apache will not fix 1.x upstream. [1][4]
  • Log4j 1.x is NOT the source of the 2021 “Log4Shell” RCE (CVE‑2021‑44228) — that impacted Log4j 2.x. However, many environments still ship/retain vulnerable 1.x copies, so risk can remain in supply chains and older products. [5][1]

Recommended actions

  • Replace Log4j 1.x with a supported logging library (Apache Log4j 2.x patched release or an alternative such as reload4j) wherever possible. [1]
  • If you cannot upgrade immediately:
    • Ensure the SocketServer/serialized-log listener is not enabled or reachable from untrusted networks (remove/disable org.apache.log4j.net.SocketServer usage). [4][3]
    • Apply vendor/distribution backported patches where available (some OS/vendor packages have fixes/backports). Verify with your distro/vendor security advisories. [2][3]
  • Inventory: scan builds, containers, firmware and third‑party dependencies for embedded log4j‑1.x copies and remediate. [5]

Selected sources

  • Apache Log4j 1.x project page (EOL & security note). [1]
  • NVD entry for CVE‑2019‑17571. [4]
  • Debian/security tracker and vendor advisories about fixes/backports. [3]
  • Coverage of Log4Shell vs Log4j 1.x persistence and remediation advice. [5]

If you want, I can: (a) scan a list of JARs/paths you provide for log4j‑1.x indicators, or (b) fetch vendor-specific advisories/patches for a particular distro or product.


Consider replacing Log4j 1.x with a maintained logging library.

The org.apache.log4j (Log4j 1.x) dependency is end-of-life with no upstream maintenance. It has known vulnerabilities including CVE-2019-17571 (SocketServer deserialization). If this is required for compatibility, ensure the SocketServer listener is not enabled or reachable from untrusted networks, and consider documenting the justification.

🤖 Prompt for AI Agents
In @releng/com.espressif.idf.target/com.espressif.idf.target.target around lines
35 - 37, The pom unit listing includes an outdated, unmaintained Log4j 1.x entry
("unit id=\"org.apache.log4j\"") which has known vulnerabilities; replace this
dependency with a maintained logging library (e.g., Log4j 2, SLF4J + Logback) or
remove it if unused, and update any code that references org.apache.log4j
classes to the new API (or add a compatibility bridge) so builds and runtime
logging still work; if you must keep org.apache.log4j for compatibility,
explicitly document the justification and ensure SocketServer or other
vulnerable features are disabled/unreachable from untrusted networks and add a
comment near the "org.apache.log4j" unit explaining the mitigation and risk
acceptance.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
bundles/com.espressif.idf.terminal.connector.serial/META-INF/MANIFEST.MF (1)

15-15: Update Bundle-RequiredExecutionEnvironment to JavaSE-21.

Eclipse 2025-12 requires Java 21 as the minimum version. The manifest currently specifies JavaSE-17, which is inconsistent with the platform upgrade and the JavaSE-21 updates already applied to launch and classpath configurations elsewhere in this bundle. Align this entry to JavaSE-21.

🤖 Fix all issues with AI agents
In @bundles/com.espressif.idf.terminal.connector.serial/META-INF/MANIFEST.MF:
- Around line 8-14: The MANIFEST.MF is missing the org.eclipse.ui.plugin package
required by your Activator which extends org.eclipse.ui.plugin.AbstractUIPlugin;
update the manifest to either add org.eclipse.ui.plugin to the Import-Package
list or re-add the org.eclipse.ui bundle to Require-Bundle so the
AbstractUIPlugin class is available at runtime (ensure the entry references
org.eclipse.ui.plugin or org.eclipse.ui with an appropriate version constraint
to match your runtime).
🧹 Nitpick comments (1)
bundles/com.espressif.idf.terminal.connector.serial/META-INF/MANIFEST.MF (1)

26-27: Add version constraints to Import-Package entries for consistency with Eclipse 2025-12 requirements.

Import-Package declarations for org.eclipse.ui.console and org.slf4j lack version constraints. While the project doesn't consistently enforce versioning on Import-Package entries, adding explicit version ranges improves compatibility with Eclipse 2025-12 and helps prevent resolution issues.

♻️ Suggested fix with version constraints
-Import-Package: org.eclipse.ui.console,
- org.slf4j
+Import-Package: org.eclipse.ui.console;version="[3.8.0,4.0.0)",
+ org.slf4j;version="[1.7.0,3.0.0)"
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a1a3dc4 and 71d4a04.

📒 Files selected for processing (1)
  • bundles/com.espressif.idf.terminal.connector.serial/META-INF/MANIFEST.MF
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: build_linux
  • GitHub Check: build_macos
  • GitHub Check: build_windows

Comment on lines +8 to 14
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
org.eclipse.cdt.native.serial;bundle-version="1.0.0",
org.eclipse.debug.core,
com.espressif.idf.core,
com.espressif.idf.ui,
com.espressif.idf.serial.monitor,
org.eclipse.cdt.core.native,
org.eclipse.ui.console,
org.eclipse.terminal.view.core;bundle-version="[1.0.0,2.0.0)",
org.eclipse.terminal.view.ui;bundle-version="[1.0.0,2.0.0)",
org.eclipse.terminal.control;bundle-version="[1.0.0,2.0.0)"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash

echo "=== Examining MANIFEST.MF structure ==="
cat bundles/com.espressif.idf.terminal.connector.serial/META-INF/MANIFEST.MF

echo ""
echo "=== Searching for usages of removed bundle packages ==="
fd -e java . bundles/com.espressif.idf.terminal.connector.serial 2>/dev/null | head -20

echo ""
echo "=== Checking imports of org.eclipse.ui, org.eclipse.core.expressions, org.eclipse.equinox.security ==="
rg -l "import org\.eclipse\.(ui\.|core\.expressions|equinox\.security)" bundles/com.espressif.idf.terminal.connector.serial 2>/dev/null || echo "No matches found"

echo ""
echo "=== All imports in source files ==="
fd -e java . bundles/com.espressif.idf.terminal.connector.serial --exec grep -h "^import org\.eclipse\." {} \; 2>/dev/null | sort -u

Repository: espressif/idf-eclipse-plugin

Length of output: 6343


🏁 Script executed:

#!/bin/bash

echo "=== Checking Activator.java imports ==="
cat bundles/com.espressif.idf.terminal.connector.serial/src/com/espressif/idf/terminal/connector/serial/activator/Activator.java | head -30

echo ""
echo "=== Checking CoreDumpPostmortemDebuggerLauncher imports ==="
head -30 bundles/com.espressif.idf.terminal.connector.serial/src/com/espressif/idf/terminal/connector/serial/launcher/CoreDumpPostmortemDebuggerLauncher.java | grep -A 5 -B 5 "import org.eclipse.ui"

Repository: espressif/idf-eclipse-plugin

Length of output: 1374


🏁 Script executed:

#!/bin/bash

echo "=== Verify org.eclipse.ui.plugin is missing from MANIFEST ==="
if grep -q "org.eclipse.ui.plugin" bundles/com.espressif.idf.terminal.connector.serial/META-INF/MANIFEST.MF; then
  echo "Found in MANIFEST.MF"
else
  echo "NOT found in MANIFEST.MF"
fi

echo ""
echo "=== Show CoreDumpPostmortemDebuggerLauncher.java imports ==="
sed -n '1,40p' bundles/com.espressif.idf.terminal.connector.serial/src/com/espressif/idf/terminal/connector/serial/launcher/CoreDumpPostmortemDebuggerLauncher.java

echo ""
echo "=== Summary: packages imported from org.eclipse.ui ==="
rg "import org\.eclipse\.ui\." bundles/com.espressif.idf.terminal.connector.serial/src --no-heading

Repository: espressif/idf-eclipse-plugin

Length of output: 2167


Add missing org.eclipse.ui.plugin to Import-Package in MANIFEST.MF.

The bundle's Activator class extends org.eclipse.ui.plugin.AbstractUIPlugin but this package is not declared in the manifest. While org.eclipse.ui.console is in Import-Package, the org.eclipse.ui.plugin package is missing entirely. This will cause a ClassNotFoundException when the bundle attempts to activate, which directly explains the Serial Monitor hang on macOS arm64 and Windows 11—the bundle fails to initialize.

Add org.eclipse.ui.plugin to the Import-Package section, or restore the org.eclipse.ui bundle requirement in Require-Bundle if other classes depend on it.

🤖 Prompt for AI Agents
In @bundles/com.espressif.idf.terminal.connector.serial/META-INF/MANIFEST.MF
around lines 8 - 14, The MANIFEST.MF is missing the org.eclipse.ui.plugin
package required by your Activator which extends
org.eclipse.ui.plugin.AbstractUIPlugin; update the manifest to either add
org.eclipse.ui.plugin to the Import-Package list or re-add the org.eclipse.ui
bundle to Require-Bundle so the AbstractUIPlugin class is available at runtime
(ensure the entry references org.eclipse.ui.plugin or org.eclipse.ui with an
appropriate version constraint to match your runtime).

@sigmaaa
Copy link
Collaborator Author

sigmaaa commented Jan 13, 2026

Tested under: OS: Mac arm64 / Windows 11 ESP-IDF: v5.4 / v.5.5 Eclipse 25-12

The Serial Monitor gets stuck when starting.

No error message is shown. The serial port detection works correctly and I can select the proper port. Flashing the device works without any issues.

However, when it tries to open the Serial Monitor after flashing, it just hangs and never opens: image

flash command:

C:\Espressif\tools\python\v5.4.3\venv\Scripts\python.exe C:\esp\v5.4.3\esp-idf\tools\idf.py -p COM6 flash

fixed

@sigmaaa
Copy link
Collaborator Author

sigmaaa commented Jan 13, 2026

@sigmaaa hi !

Tested under: OS: Windows 11 ESP-IDF: v5.4 / v.5.5 Eclipse 25-12

Clangd is not there.

Cannot run program "clangd": CreateProcess error=2, The system cannot find the file specified

error.txt.log

This problem happens because of the missing commit from the 4.0 branch. Already handling here: https://github.com/espressif/idf-eclipse-plugin/pulls

@AndriiFilippov
Copy link
Collaborator

@sigmaaa hi !

Tested :
OS: Windows 11 / Mac arm64
ESP-IDF: v5.5

able to run Monitor command.
The core functionality is working as expected. LGTM 👍

@AndriiFilippov
Copy link
Collaborator

Hi @kolipakakondal , @alirana01
Please, review

Copy link
Collaborator

@kolipakakondal kolipakakondal left a comment

Choose a reason for hiding this comment

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

Hi @AndriiFilippov LGTM. However, this needs to be tested extensively across different Eclipse versions—both fresh installations and update-site upgrades—since many dependencies have been modified.

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.

4 participants