Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughUpdated the target platform manifest to point multiple installable-unit locations at newer repository streams and bumped several component versions; also adjusted tree layout sizing in the SDK configuration editor UI. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment Tip CodeRabbit can use Trivy to scan for security misconfigurations and secrets in Infrastructure as Code files.Add a .trivyignore file to your project to customize which findings Trivy reports. |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
releng/com.espressif.idf.target/com.espressif.idf.target.target (1)
1-97: Update MANIFEST.MF version constraints to match the new target platform.The target platform includes updated versions of key dependencies, but the bundle manifests in
com.espressif.idf.corehave stale version constraints that should be updated:
Dependency Current Constraint Target Platform Version LSP4E 0.18.18 0.30.0 LSP4J 0.24.0 0.30.0 CDT LSP 3.0.0 3.5.0 Updating these constraints documents the actual tested compatibility and prevents accidental downgrades in derived products.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@releng/com.espressif.idf.target/com.espressif.idf.target.target` around lines 1 - 97, Update the bundle MANIFEST.MF constraints in the com.espressif.idf.core manifests so they match the target platform versions: change the LSP4E version constraint from 0.18.18 to 0.30.0, LSP4J from 0.24.0 to 0.30.0, and CDT LSP (c.t.d.lsp or the bundle id used for CDT LSP) from 3.0.0 to 3.5.0; locate and edit the Require-Bundle/Import-Package or Bundle-ClassPath entries in com.espressif.idf.core's MANIFEST.MF (and any other bundle manifests that reference these IDs) to set the new version ranges so they reflect the tested target-platform versions and prevent accidental downgrades.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@releng/com.espressif.idf.target/com.espressif.idf.target.target`:
- Line 89: Update the org.eclipse.lsp4e bundle constraint in the MANIFEST.MF
currently pinned to 0.18.18 to match the target LSP4E version 0.30.0; open the
MANIFEST.MF entry for the org.eclipse.lsp4e bundle
(bundles/com.espressif.idf.core/META-INF/MANIFEST.MF) and change the version
constraint to 0.30.0 so it aligns with the releng target update, ensuring
compatibility with the LspService.java usages of
LanguageServiceAccessor.getStartedWrappers(),
LanguageServerWrapper.serverDefinition.id, execute(), and restart() which rely
on LSP4E 0.30.0 APIs.
---
Nitpick comments:
In `@releng/com.espressif.idf.target/com.espressif.idf.target.target`:
- Around line 1-97: Update the bundle MANIFEST.MF constraints in the
com.espressif.idf.core manifests so they match the target platform versions:
change the LSP4E version constraint from 0.18.18 to 0.30.0, LSP4J from 0.24.0 to
0.30.0, and CDT LSP (c.t.d.lsp or the bundle id used for CDT LSP) from 3.0.0 to
3.5.0; locate and edit the Require-Bundle/Import-Package or Bundle-ClassPath
entries in com.espressif.idf.core's MANIFEST.MF (and any other bundle manifests
that reference these IDs) to set the new version ranges so they reflect the
tested target-platform versions and prevent accidental downgrades.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: a6319865-4720-4699-9e0b-dbf15b4b15ae
📒 Files selected for processing (1)
releng/com.espressif.idf.target/com.espressif.idf.target.target
| </location> | ||
| <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit"> | ||
| <repository location="https://download.eclipse.org/lsp4e/releases/0.29.5/"/> | ||
| <repository location="https://download.eclipse.org/lsp4e/releases/0.30.0/"/> |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Search for all LSP4E API usages that may be affected
echo "=== LSP4E internal API usage ==="
rg -n "LanguageServiceAccessor|LanguageServerWrapper" --type java -C 3
echo ""
echo "=== All LSP4E imports ==="
rg -n "import.*lsp4e" --type java
echo ""
echo "=== MANIFEST.MF LSP4E version constraints ==="
fd "MANIFEST.MF" --exec grep -l "lsp4" {} \; | xargs -I {} sh -c 'echo "=== {} ===" && grep -E "lsp4[ej]" {}'Repository: espressif/idf-eclipse-plugin
Length of output: 3603
🌐 Web query:
What API changes were made in Eclipse LSP4E 0.30.0 release?
💡 Result:
The Eclipse LSP4E 0.30.0 release (February 11, 2026) includes the following API changes: - Adaptation to LSP4J version 1.0.0 (PR #1421), which itself has breaking changes such as removal of deprecated APIs, convenience constructors, properties in FormattingOptions, static methods in Either class, and websocket bundle deprecation. - Breaking change: Refactor to get rid of some deprecated APIs (PR #1496 by FlorianKroiss). Specific details on which APIs were removed or refactored are not explicitly listed in the release notes, but it is highlighted under "Breaking changes" in the official GitHub release page. No other explicit public API changes are mentioned in the release notes. The full changelog from 0.29.5 to 0.30.0 can be viewed on GitHub.
Citations:
- 1: https://github.com/eclipse/lsp4e/releases
- 2: https://github.com/eclipse-lsp4e/lsp4e/releases
- 3: https://github.com/eclipse-lsp4e/lsp4e
🏁 Script executed:
# Check full LspService.java content to see `@SuppressWarnings` and method usages
cat -n bundles/com.espressif.idf.core/src/com/espressif/idf/core/util/LspService.javaRepository: espressif/idf-eclipse-plugin
Length of output: 4280
🏁 Script executed:
# Check for any execute() or restart() method calls
rg -n "\.execute\(\)|\.restart\(\)" bundles/com.espressif.idf.core/src/com/espressif/idf/core/util/LspService.java -C 2Repository: espressif/idf-eclipse-plugin
Length of output: 54
🌐 Web query:
Eclipse LSP4E LanguageServiceAccessor API compatibility 0.30.0
💡 Result:
The Eclipse LSP4E LanguageServiceAccessor API is compatible with version 0.30.0. No breaking changes affecting this API are documented in the 0.30.0 release notes. The release includes adaptation to LSP4J 1.0.0 (which has breaking changes like removed deprecated APIs) and removal of some deprecated APIs in LSP4E via PR #1496, but LanguageServiceAccessor is not mentioned as affected. Access to language servers remains available through classes like LanguageServersRegistry and LanguageServers, as shown in source code snippets. Official documentation and changelogs confirm no explicit incompatibility for this API.
Citations:
- 1: https://github.com/eclipse-lsp4e/lsp4e
- 2: https://github.com/eclipse-lsp4e/lsp4e/releases
- 3: https://eclipse.googlesource.com/lsp4e/lsp4e/+/dd39ca0db5e6abd3cb5f59a3e63cf6b2e1a20d46/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServersRegistry.java
- 4: https://eclipse.googlesource.com/lsp4e/lsp4e/+/dd39ca0db5e6abd3cb5f59a3e63cf6b2e1a20d46/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerWrapper.java
🌐 Web query:
Eclipse LSP4E LanguageServerWrapper serverDefinition property 0.30.0 breaking changes
💡 Result:
In Eclipse LSP4E version 0.30.0 (released February 11, 2026), the primary breaking change listed in the official release notes is "refactor: Get rid of some deprecated APIs by @FlorianKroiss in #1496". This PR removes usages of deprecated APIs, likely from the newly adopted LSP4J 1.0.0 (feat: Adapt LSP4E to LSP4J vers. 1.0.0 by @travkin79 in #1421), which itself removed several deprecated constructors, static methods, and other APIs. No sources explicitly detail changes to the LanguageServerWrapper.serverDefinition property itself. The property remains public final in LanguageServerWrapper as per available code snippets. Any breaking changes would stem indirectly from LSP4J adaptations or deprecated Eclipse Platform APIs removed in the refactor, potentially affecting custom LanguageServerDefinition implementations if they relied on now-removed deprecated methods. Other changes in 0.30.0 are mostly fixes and features (e.g., SVG icons, JUnit updates, markdown parser singleton), with no other breaking changes noted.
Citations:
- 1: https://github.com/eclipse-lsp4e/lsp4e/releases
- 2: https://eclipse.googlesource.com/lsp4e/lsp4e/+/dd39ca0db5e6abd3cb5f59a3e63cf6b2e1a20d46/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerWrapper.java
- 3: https://eclipse.googlesource.com/lsp4e/lsp4e/+/dd39ca0db5e6abd3cb5f59a3e63cf6b2e1a20d46/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServersRegistry.java
🏁 Script executed:
# Check for LSP4J imports and usage in LspService and related files
rg -n "import.*lsp4j|LSP4J" bundles/com.espressif.idf.core/src/com/espressif/idf/core/util/ -A 2
# Check MANIFEST.MF for LSP4J version
cat bundles/com.espressif.idf.core/META-INF/MANIFEST.MF | grep -E "lsp4[ej]|Bundle-"Repository: espressif/idf-eclipse-plugin
Length of output: 487
🌐 Web query:
Eclipse LSP4J 1.0.0 breaking changes deprecated APIs removal
💡 Result:
Eclipse LSP4J 1.0.0, released February 2026, includes several breaking API changes focused on removing long-deprecated elements and updating to new LSP/DAP specifications. Key breaking changes: - Removed deprecated org.eclipse.lsp4j.websocket bundle. Migrate to org.eclipse.lsp4j.websocket.jakarta or stay on LSP4J 0.x. - Removed deprecated ConcurrentMessageProcessor.startProcessing; use beginProcessing instead (#922). - Removed @Deprecated annotations from members deprecated in LSP/DAP protocols (#895). - Removed various deprecated APIs via issues #874, #875, #876, #877, #880: - #874: General deprecated API removal. - #875: Deprecated convenience constructors in protocol files. - #876: Deprecated LanguageServerAPI annotation (use JsonRpcData). - #877: Deprecated static methods in Either class (use TypeUtils). - #880: Deprecated get/set properties in FormattingOptions. - Type change: TextDocumentEdit.edits from List to List<Either<TextEdit, SnippetTextEdit>>. - Implemented LSP 3.18.0 (beta) and DAP 1.70.0, potentially introducing new structures. Full details in official CHANGELOG.md and japicmp report at https://download.eclipse.org/lsp4j/updates/releases/1.0.0/japicmp-report/. Projects like Spring Tools note API changes requiring updates when migrating to 1.0.0.
Citations:
- 1: https://github.com/eclipse-lsp4j/lsp4j/blob/main/CHANGELOG.md
- 2: https://github.com/eclipse/lsp4j/releases
- 3: update lsp4j in language servers to
1.0.0spring-projects/spring-tools#1781
Update MANIFEST.MF bundle version constraint to match LSP4E target version.
The org.eclipse.lsp4e bundle version in bundles/com.espressif.idf.core/META-INF/MANIFEST.MF is pinned to 0.18.18, which is severely outdated and inconsistent with the LSP4E 0.30.0 target being updated. The constraint should be updated to 0.30.0 to reflect the actual compatibility requirement.
The code in LspService.java uses internal LSP4E APIs (LanguageServiceAccessor.getStartedWrappers(), LanguageServerWrapper.serverDefinition.id, execute(), restart()) marked with @SuppressWarnings("restriction"). These specific APIs are compatible with LSP4E 0.30.0, but keeping the bundle constraint aligned with the target version ensures consistency and clarity about supported versions.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@releng/com.espressif.idf.target/com.espressif.idf.target.target` at line 89,
Update the org.eclipse.lsp4e bundle constraint in the MANIFEST.MF currently
pinned to 0.18.18 to match the target LSP4E version 0.30.0; open the MANIFEST.MF
entry for the org.eclipse.lsp4e bundle
(bundles/com.espressif.idf.core/META-INF/MANIFEST.MF) and change the version
constraint to 0.30.0 so it aligns with the releng target update, ensuring
compatibility with the LspService.java usages of
LanguageServiceAccessor.getStartedWrappers(),
LanguageServerWrapper.serverDefinition.id, execute(), and restart() which rely
on LSP4E 0.30.0 APIs.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
releng/com.espressif.idf.target/com.espressif.idf.target.target (1)
76-78: CDT LSP 3.5.0 update - note snakeyaml dual provisioning.The CDT LSP update to 3.5.0 looks appropriate. Note that
org.yaml.snakeyamlis now provisioned from this repository with version0.0.0, whilebundles/com.espressif.idf.coreembedslib/snakeyaml-1.30.jarin itsBundle-ClassPathand re-exports the packages.This should work correctly since the bundle's embedded JAR takes classloader precedence, but be aware of potential version drift if the platform-provided snakeyaml diverges significantly from 1.30.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@releng/com.espressif.idf.target/com.espressif.idf.target.target` around lines 76 - 78, The commit adds a platform provision for org.yaml.snakeyaml (unit id "org.yaml.snakeyaml") alongside the embedded snakeyaml-1.30.jar inside bundles/com.espressif.idf.core's Bundle-ClassPath which can cause dual provisioning and version drift; to fix, either remove or version-pin the platform-provided unit entry in the added repository block (the <repository> and <unit id="org.yaml.snakeyaml"> lines) or explicitly align/declare the same version as 1.30, or update bundles/com.espressif.idf.core manifest to avoid exporting/re-exporting the embedded snakeyaml packages so the bundle’s embedded JAR remains authoritative, and add a short comment documenting the intended precedence to prevent future regressions.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@releng/com.espressif.idf.target/com.espressif.idf.target.target`:
- Line 26: Remove the unused Import-Package declaration for
org.apache.commons.logging from the MANIFEST.MF in the com.espressif.idf.core
bundle: locate the Import-Package entry referencing org.apache.commons.logging
(added alongside the bundle id org.apache.commons.commons-logging) and delete
that package from the Import-Package list so the MANIFEST.MF no longer imports
org.apache.commons.logging.
---
Nitpick comments:
In `@releng/com.espressif.idf.target/com.espressif.idf.target.target`:
- Around line 76-78: The commit adds a platform provision for org.yaml.snakeyaml
(unit id "org.yaml.snakeyaml") alongside the embedded snakeyaml-1.30.jar inside
bundles/com.espressif.idf.core's Bundle-ClassPath which can cause dual
provisioning and version drift; to fix, either remove or version-pin the
platform-provided unit entry in the added repository block (the <repository> and
<unit id="org.yaml.snakeyaml"> lines) or explicitly align/declare the same
version as 1.30, or update bundles/com.espressif.idf.core manifest to avoid
exporting/re-exporting the embedded snakeyaml packages so the bundle’s embedded
JAR remains authoritative, and add a short comment documenting the intended
precedence to prevent future regressions.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: edcd02d8-5fc4-4e19-8c8a-d5b8fdae82d1
📒 Files selected for processing (1)
releng/com.espressif.idf.target/com.espressif.idf.target.target
| <unit id="org.eclipse.cdt.cmake.feature.group" version="0.0.0"/> | ||
| <unit id="org.eclipse.terminal.feature.feature.group" version="0.0.0"/> | ||
| <unit id="org.apache.commons.logging" version="0.0.0"/> | ||
| <unit id="org.apache.commons.commons-logging" version="0.0.0"/> |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check for Require-Bundle references to org.apache.commons.logging
echo "=== Checking for Require-Bundle references to commons.logging ==="
rg -n "Require-Bundle.*commons.logging" --type-add 'mf:*.MF' --type mf
echo ""
echo "=== Checking all MANIFEST.MF files for commons logging references ==="
fd "MANIFEST.MF" --exec grep -l "commons.*logging" {} \; | xargs -I {} sh -c 'echo "=== {} ===" && cat {}'Repository: espressif/idf-eclipse-plugin
Length of output: 2544
🏁 Script executed:
#!/bin/bash
# Look for the old target definition to understand the change
echo "=== Checking target file history or nearby entries ==="
fd -e target | head -20 | xargs -I {} sh -c 'echo "=== {} ===" && head -50 {}'
echo ""
echo "=== Search for imports or usage of org.apache.commons.logging in source code ==="
rg "org\.apache\.commons\.logging" --type-add 'java:*.java' --type java -l 2>/dev/null | head -10
echo ""
echo "=== Check if commons-logging appears elsewhere in manifest or config ==="
rg "commons-logging" --type-add 'mf:*.MF' --type mf -A 2 -B 2Repository: espressif/idf-eclipse-plugin
Length of output: 3783
🏁 Script executed:
#!/bin/bash
# Check if commons.logging is re-exported anywhere
echo "=== Checking all MANIFEST.MF for exports with commons.logging ==="
fd "MANIFEST.MF" -x grep -n "org.apache.commons.logging" {} \;
echo ""
echo "=== Check git history for the line that changed ==="
git log -p --follow -S "org.apache.commons.commons-logging" -- "releng/com.espressif.idf.target/com.espressif.idf.target.target" 2>/dev/null | head -100
echo ""
echo "=== Check if there's a reference to the old name in git ==="
git log -p --follow -S "org.apache.commons.logging" -- "releng/com.espressif.idf.target/com.espressif.idf.target.target" 2>/dev/null | head -100Repository: espressif/idf-eclipse-plugin
Length of output: 298
🏁 Script executed:
#!/bin/bash
# Check if MANIFEST.MF is auto-generated or if there's a build config
echo "=== Look for build.properties or manifest generation configs ==="
fd "build.properties|pom.xml|build.gradle|MANIFEST.MF.in" -x grep -l "MANIFEST\|commons" {} \; 2>/dev/null
echo ""
echo "=== Check full MANIFEST context around the import ==="
fd "MANIFEST.MF" -x sed -n '60,70p' {} \;
echo ""
echo "=== Search for any patches, fixes or TODOs related to commons-logging ==="
rg -i "commons.logging|commons-logging" --type-add 'java:*.java' --type-add 'txt:*.txt' --type-add 'md:*.md' 2>/dev/null | head -20Repository: espressif/idf-eclipse-plugin
Length of output: 1256
The Import-Package declaration for commons-logging appears unused and can be removed.
The target file's bundle name change from org.apache.commons.logging to org.apache.commons.commons-logging does not pose a resolution risk in this codebase. The MANIFEST.MF declares Import-Package: org.apache.commons.logging, but this package is:
- Not imported by any Java source code
- Not re-exported by the bundle
- Not required by any other bundle via
Require-Bundle
The unused import should be removed from bundles/com.espressif.idf.core/META-INF/MANIFEST.MF.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@releng/com.espressif.idf.target/com.espressif.idf.target.target` at line 26,
Remove the unused Import-Package declaration for org.apache.commons.logging from
the MANIFEST.MF in the com.espressif.idf.core bundle: locate the Import-Package
entry referencing org.apache.commons.logging (added alongside the bundle id
org.apache.commons.commons-logging) and delete that package from the
Import-Package list so the MANIFEST.MF no longer imports
org.apache.commons.logging.
kolipakakondal
left a comment
There was a problem hiding this comment.
LGTM
@sigmaaa Can we consider this for v4.2.0 as well?
Hi @kolipakakondal, I think so— I don’t see any issues with it on Mac or Windows. Andrew reported a strange issue related to sdkconfig that occurs in this PR, and I’m currently looking into it. I hope it will be resolved before the 4.2 release. |
Fixed in the latest commit. It appears that a recent platform SWT update caused a visual bug in sdkconfig on Linux only. Here is an example: To fix this, I added layout data with a width hint. |

Description
Update the project target platform to align with the March 2026 Eclipse Release (4.39).
Fixes # (IEP-1727)
Type of change
Please delete options that are not relevant.
How has this been tested?
Test the basic functionality of the IDE.
Test Configuration:
Dependent components impacted by this PR:
Checklist
Summary by CodeRabbit
Chores
Bug Fixes / UI Improvements