Multi-root Workspace: Why can't I see all projects simultaneously in the "Project Tasks" sidebar?

Hi everyone,

I’m currently working on a distributed system involving multiple ESP32 nodes (an LCD controller and a Bridge) and I’ve decided to move from separate VSCode instances to a Multi-root Workspace to better coordinate communication protocols and leverage GitHub Copilot’s cross-file context.

My Setup:

  • A .code-workspace file containing two folders: folder-lcd and folder-bridge.

  • Each folder has its own valid platformio.ini with unique [env] names.

The Issue: In the VSCode blue status bar, I can see the environment switcher and it correctly lists all environments from both projects. However, in the PlatformIO Sidebar (Project Tasks), I only see the project that is currently selected as “Active” in the status bar.

If I switch the project in the status bar, the Sidebar refreshes and shows the tasks for the newly selected project, hiding the previous one.

What I expected: I was hoping to see both projects listed simultaneously in the Project Tasks sidebar, allowing me to run “Upload” for the Bridge and “Monitor” for the LCD without constantly switching the “Active” project in the status bar.

Questions:

  1. Is this the intended behavior for Multi-root Workspaces in PlatformIO?

  2. Is there a setting to force the Sidebar to display all projects in the workspace at once?

  3. What is the best practice for managing multiple interconnected ESP32 devices without having to toggle the active project every time?

Any advice or “pro-tips” from someone managing similar multi-node setups would be greatly appreciated!

My environment:

  • VSCode version: 1.114.0

  • PlatformIO Core: 6.1.19

  • OS: Windows 11

Thanks in advance!

What I’m about to write may not directly answer your question, and I’m not a software expert, but I’m currently working on a project to interconnect two ESP32 devices.

In my case, since the hardware of the two devices is different, I’m using the following environment. Would this be helpful to you?

My current environment is Ubuntu + VSCODE@1.114.0 + PlatformIO (Core@6.1.9, Home@3.4.4, Arduino-Espressif32@3.3.0), and I’m using Tabby@1.0.230 as my terminal application.

(1) I open VSCODE in two separate windows and develop the program code for each device side-by-side.

(2) Since the programs aren’t particularly complex, I don’t bother setting up dedicated debugging ports in each environment; I’m using serial output to have the programs speak. → I also have two separate terminal screens.

The drawbacks of this method are:
A) You need at least two or more multi-display setups or extremely large displays.

B) Having two serial connections can cause some confusion when loading programs or selecting a terminal connection.

I hope this is helpful.

Thanks for the reply, but unfortunately that doesn’t quite solve my issue.

I already use two separate VS Code windows, but the challenge is keeping the serial protocol information synchronized between them. Currently, I have to manually copy prompts from Copilot in the first window and paste them into the second.

The risk is that the two instances might develop different logic for the same actions. Since the second window isn’t aware of the source code in the first, I often have to fix these discrepancies by hand.