Skip to content
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
fc61a18
Pre-release of v2.0.0 (#1627)
brianignacio5 Jul 24, 2025
940bae2
fix eim call (#1699)
brianignacio5 Oct 28, 2025
ffbcc88
fix eraseFlash task issues
brianignacio5 Nov 3, 2025
1c28d75
fix yarn compile
brianignacio5 Nov 3, 2025
73bdd9e
test using 5.4.2
brianignacio5 Nov 4, 2025
231f617
test use espressif install-esp-idf-action in ci
brianignacio5 Nov 4, 2025
0ca8df9
rm use of export sh in ci
brianignacio5 Nov 4, 2025
6954616
Update eim call after download
brianignacio5 Nov 4, 2025
d9ca38c
try to use eim from PATH if available
brianignacio5 Dec 5, 2025
1407262
fix lint issues
brianignacio5 Dec 24, 2025
6f4ae2a
fix size cmd
brianignacio5 Dec 24, 2025
7834a5b
fix workspace erase flash task
brianignacio5 Dec 25, 2025
d29d636
desc order idf setups add changelog release notes
brianignacio5 Jan 29, 2026
ed8bffa
update release notes
brianignacio5 Jan 29, 2026
43cf2c5
fix reference to old settings in hint viewer langTool and serial func…
brianignacio5 Jan 30, 2026
86ea7a3
fix docs
brianignacio5 Feb 2, 2026
db96272
fix openocd paths for devkits
brianignacio5 Feb 2, 2026
5844968
update docs and screenshots add wsl eim run install new project load …
brianignacio5 Feb 3, 2026
63b48d6
rm ref to old examples cmd for new project wizard
brianignacio5 Feb 3, 2026
d6b1c03
changes in walkthrough and docs
brianignacio5 Feb 4, 2026
0202eba
fix docs zh cn
brianignacio5 Feb 4, 2026
ebc8990
fix doc
brianignacio5 Feb 4, 2026
00a12d9
fix zh doc
brianignacio5 Feb 4, 2026
fc14824
update wsl download run eim
brianignacio5 Feb 4, 2026
633292e
fix terminal focus eim
brianignacio5 Feb 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 0 additions & 44 deletions .github/actions/idf/Dockerfile

This file was deleted.

19 changes: 0 additions & 19 deletions .github/actions/idf/action.yml

This file was deleted.

26 changes: 0 additions & 26 deletions .github/actions/idf/entrypoint.sh

This file was deleted.

21 changes: 0 additions & 21 deletions .github/actions/idf/ui-entrypoint.sh

This file was deleted.

42 changes: 29 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,29 +16,45 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- uses: actions/setup-node@v4

- name: Install ESP-IDF
uses: espressif/install-esp-idf-action@v1
with:
node-version: 20
version: "v5.4.2"

- name: Install Node Dependencies
run: yarn
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Lint Check
run: yarn lint
- name: Install Yarn dependencies
run: |
yarn
yarn install

- name: Run test
uses: ./.github/actions/idf
id: idftest
- name: Run Yarn script with xvfb
run: |
export GIT_VERSION=$(git --version | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p')
export IDF_VERSION=$(idf.py --version | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p')
export PY_VERSION=$(python --version | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p')
export PIP_VERSION=$(python -m pip --version | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p')
export PY_PKGS=$(python -m pip list --format json)
xvfb-run --auto-servernum yarn test

- name: Get the test output
run: echo "${{ steps.idftest.outputs.result }}" | tee test-result.xml
- name: Publish Test Report
uses: dorny/test-reporter@v2
if: always()
with:
name: Mocha Tests
path: ./out/results/test-results.json
reporter: mocha-json

- name: Upload if failed test results
uses: actions/upload-artifact@v4
if: failure()
with:
name: test-result.xml
path: test-result.xml
name: test-result.json
path: ./out/results/test-results.json

- name: Package .vsix
run: yarn package
Expand Down
101 changes: 89 additions & 12 deletions .github/workflows/ui-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,9 @@ jobs:
submodules: "recursive"

- name: Install ESP-IDF
run: |
ESP_IDF_VERSION="v5.3.2"
sudo apt update
sudo apt install -y python3-pip git wget flex bison gperf python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util
wget https://dl.espressif.com/github_assets/espressif/esp-idf/releases/download/${ESP_IDF_VERSION}/esp-idf-${ESP_IDF_VERSION}.zip -O esp-idf.zip
unzip esp-idf.zip -d ~/
rm esp-idf.zip
mv ~/esp-idf-${ESP_IDF_VERSION} ~/esp-idf
~/esp-idf/install.sh
uses: espressif/install-esp-idf-action@v1
with:
version: "v5.4.2"

- name: Setup Node.js
uses: actions/setup-node@v4
Expand All @@ -40,9 +34,92 @@ jobs:

- name: Run Yarn script with xvfb
run: |
export IDF_TOOLS_PATH=~/.espressif
export IDF_PATH=~/esp-idf
source ~/esp-idf/export.sh && xvfb-run --auto-servernum yarn ci-test
xvfb-run --auto-servernum yarn ci-test 2>&1 | tee test-output.log

# Extract JSON from the output and save to file
echo "Extracting JSON from test output..."
if grep -q "Extension 'espressif.esp-idf-extension' was successfully uninstalled!" test-output.log; then
sed -n '/Extension '\''espressif.esp-idf-extension'\'' was successfully uninstalled!/,$p' test-output.log > after-uninstall.log
grep -n '{' after-uninstall.log | head -1 | cut -d: -f1 > start-line.txt
grep -n '}' after-uninstall.log | tail -1 | cut -d: -f1 > end-line.txt
if [ -s start-line.txt ] && [ -s end-line.txt ]; then
start_line=$(cat start-line.txt)
end_line=$(cat end-line.txt)
sed -n "${start_line},${end_line}p" after-uninstall.log > ./out/ui-test-results.json
sed 's/}[^,]*$/}/' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/INFO:/d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/Screenshots of failures can be found in:/d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/\x1b\[/d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/\[33m/d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/\[0m/d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/test-resources\/screenshots\//d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
echo "JSON results extracted and saved to ./out/ui-test-results.json"
echo "Debug: Last 10 lines of the JSON file:"
tail -10 ./out/ui-test-results.json
else
echo "Could not find JSON boundaries"
fi
rm -f after-uninstall.log start-line.txt end-line.txt ./out/temp.json
else
echo "Uninstall message not found, trying to extract JSON from entire output..."
if grep -q '{' test-output.log; then
grep -n '{' test-output.log | head -1 | cut -d: -f1 > start-line.txt
grep -n '}' test-output.log | tail -1 | cut -d: -f1 > end-line.txt
if [ -s start-line.txt ] && [ -s end-line.txt ]; then
start_line=$(cat start-line.txt)
end_line=$(cat end-line.txt)
sed -n "${start_line},${end_line}p" test-output.log > ./out/ui-test-results.json
sed 's/}[^,]*$/}/' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/INFO:/d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/Screenshots of failures can be found in:/d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/\x1b\[/d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/\[33m/d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/\[0m/d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
sed '/test-resources\/screenshots\//d' ./out/ui-test-results.json > ./out/temp.json && mv ./out/temp.json ./out/ui-test-results.json
echo "JSON results extracted and saved to ./out/ui-test-results.json"
echo "Debug: Last 10 lines of the JSON file:"
tail -10 ./out/ui-test-results.json
else
echo "Could not find JSON boundaries"
fi
rm -f start-line.txt end-line.txt ./out/temp.json
else
echo "No JSON found in test output"
fi
fi

- name: Print UI Test Results
run: |
echo "=== UI Test Results ==="
if [ -f "./out/ui-test-results.json" ]; then
echo "UI Test Results:"
cat ./out/ui-test-results.json | jq '.' || echo "Could not parse UI test results"
elif [ -f "./test-results.json" ]; then
echo "UI Test Results:"
cat ./test-results.json | jq '.' || echo "Could not parse UI test results"
else
echo "No UI test results file found"
echo "Checking for other test output files:"
find . -name "*test*results*" -o -name "*ui-test-results.json*" | head -10
fi

- name: Publish UI Test Report
uses: dorny/test-reporter@v2
if: always()
with:
name: UI Tests
path: ./out/ui-test-results.json
reporter: mocha-json

- name: Upload UI test results
uses: actions/upload-artifact@v4
if: always()
with:
name: ui-test-results
path: |
./out/ui-test-results.json
./test-resources/screenshots/
test-output.log

- name: Upload screenshots
uses: actions/upload-artifact@v4
Expand Down
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
dist
esp_idf_docs_index_lang_*.json
esp_idf_versions_cache.json
local-utils
out
node_modules
Expand All @@ -11,7 +10,7 @@ testFiles/blink
!testFiles/dist
testFiles/tools
testFiles/testWorkspace/build
testFiles/testWorkspace/sdkconfig.*
testFiles/testWorkspace/sdkconfig*
*.log
.DS_Store
bandit_output.txt
Expand Down
1 change: 0 additions & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#files
idf_versions.txt
*.log
.vscodeignore
.style.yapf
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@

All notable changes to the "Espressif IDF" extension will be documented in this file.

## [2.0.2](https://github.com/espressif/vscode-esp-idf-extension/releases/tag/v2.0.2)

## Features and enhancements

- [Show templates before configuration in New Project Wizard](https://github.com/espressif/vscode-esp-idf-extension/pull/1757)
- [Debug image viewer and also view C image array from files](https://github.com/espressif/vscode-esp-idf-extension/pull/1644) You can configure for OpenCV, LVGL and any custom data types as long as you provide a image C UInt8Array and size length.
- [Remove old debug adapter, ESP-MDF, ESP-Matter and ESP-HomeKit](https://github.com/espressif/vscode-esp-idf-extension/pull/1693). Many of these framework are available in the ESP Component Registry. We are keeping ESP-ADF though.

## Bug Fixes

- [Show ESP-IDF versions in descending order](https://github.com/espressif/vscode-esp-idf-extension/pull/1704)

## [1.11.1](https://github.com/espressif/vscode-esp-idf-extension/releases/tag/v1.11.1)

## Bug Fixes
Expand Down
32 changes: 7 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,31 +39,19 @@ Make sure to review our [Espressif documentation](https://docs.espressif.com/pro
<img src="./media/readme/commandsList.png" alt="Commands list">
</p>

6. From the command list, select **Configure ESP-IDF Extension** or press <kbd>F1</kbd> and type `Configure ESP-IDF Extension`. After, choose the **ESP-IDF: Configure ESP-IDF Extension** option.
6. From the command list, select **ESP-IDF: Open ESP-IDF Install Manager** or press <kbd>F1</kbd> and type `Open ESP-IDF Install Manager`. After, choose the **ESP-IDF: ESP-IDF: Open ESP-IDF Install Manager** option.
> **NOTE:** For versions of ESP-IDF < 5.0, spaces are not supported inside configured paths.

<p>
<img src="./media/readme/setup.png" alt="Select ESP-IDF" width="950">
</p>

7. Choose **Express** and select the download server:
7. Alternatively, you can download the ESP-IDF Install Manager from the following link [ESP-IDF Install Manager](https://dl.espressif.com/dl/eim/index.html) among the following options::
Copy link
Collaborator

Choose a reason for hiding this comment

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

"Installation Manager" here as well.


- Espressif: Faster speed in China using Espressif download servers links.
- Github: Using github releases links.

8. Pick an ESP-IDF version to download or the `Find ESP-IDF in your system` option to search for existing ESP-IDF directory.

9. Choose the location for ESP-IDF Tools (also known as `IDF_TOOLS_PATH`) which is `$HOME\.espressif` on MacOS/Linux and `%USERPROFILE%\.espressif` on Windows by default.

10. If your operating system is MacOS/Linux, choose the system Python executable to create ESP-IDF virtual environment inside ESP-IDF Tools and install ESP-IDF Python package there.

> **NOTE:** Windows users don't need to select a Python executable since it is going to be installed by this setup.
8. Use the ESP-IDF Install Manager to install the ESP-IDF and tools. If necessary, here is the [ESP-IDF Install Manager Documentation](https://docs.espressif.com/projects/idf-im-ui/en/latest/general_info.html).
Copy link
Collaborator

Choose a reason for hiding this comment

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

"Installation Manager"


11. Make sure that `IDF_TOOLS_PATH` doesn't have any spaces to avoid any build issues. Also make sure that `IDF_TOOLS_PATH` is not the same directory as `IDF_PATH`.
9. In Visual Studio Code, navigate to `View` > `Command Palette` and type `select current esp-idf version` and select **ESP-IDF: Select Current ESP-IDF Version** from the list. The list of available ESP-IDF setups will be shown, select which one you want to use for the current ESP-IDF project. The selected setup will save a **idf.currentSetup** with selected ESP-IDF path and the extension will configure environment variables for the current project saved as workspace folder state. You can review the setup by running the **ESP-IDF: Doctor Command** by navigate to `View` > `Command Palette` and type `doctor command` and select **ESP-IDF: ESP-IDF: Doctor Command** from the list.

12. You will see a page showing the setup progress status, including ESP-IDF download progress, ESP-IDF Tools download and install progress as well as the creation of a Python virtual environment.

13. If everything is installed correctly, you will see a message that all settings have been configured. You can start using the extension.
10. If everything is installed correctly, you will see a message that all settings have been configured. You can start using the extension.

Check the [Troubleshooting](#Troubleshooting) section if you have any issues.

Expand Down Expand Up @@ -323,7 +311,7 @@ Press <kbd>F1</kbd> or click menu `View` -> `Command Palette...` to show Visual
<tr>
<td rowspan=2 align="center">Additional frameworks</td>
<td>Install ESP-ADF</td>
<td>Clone ESP-ADF inside the selected directory and set <strong>idf.espAdfPath</strong> (<strong>idf.espAdfPathWin</strong> in Windows) configuration setting.</td>
<td>Clone ESP-ADF inside the selected directory and set ADF_PATH in <strong>idf.customExtraVars</strong> configuration setting.</td>
<td></td>
<td></td>
</tr>
Expand Down Expand Up @@ -504,12 +492,6 @@ Press <kbd>F1</kbd> or click menu `View` -> `Command Palette...` to show Visual
<td></td>
<td></td>
</tr>
<tr>
<td>Clear Saved ESP-IDF Setups</td>
<td>Clear existing ESP-IDF setups saved by the extension.</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

Expand Down Expand Up @@ -580,7 +562,7 @@ This extension uses the ``idf.saveScope`` configuration setting (which can only

7. In some cases, the default shell (Powershell, zsh, sh, .etc) configured in VS Code could affect the behavior of the extension. Make sure that MSYS/MinGW is not set in the environment and the variables don't conflict with terminal behavior. The `ESP-IDF: Doctor Command` shows which shell is detected by the extension when running tasks like building, flashing and monitoring. More information in [here](https://code.visualstudio.com/docs/terminal/profiles).

If there is any Python package error, please try to reinstall the required Python packages with the **ESP-IDF: Install ESP-IDF Python Packages** command or running the setup again with the **ESP-IDF: Configure ESP-IDF Extension** command.
If there is any Python package error, please try to reinstall the required Python packages with the [ESP-IDF Installation Manager](https://docs.espressif.com/projects/idf-im-ui/en/latest/general_info.html).

> **NOTE:** When downloading ESP-IDF using git cloning in Windows, if you receive errors like "unable to create symlink", enabling `Developer Mode` while cloning ESP-IDF could help resolve the issue.

Expand Down
Loading
Loading