# Firmware MCU code, one folder per target (an STM32CubeIDE or CMake project each), for example `firmware/main-mcu/`. Drivers shared by the targets go to `firmware/lib/`; third-party stacks (HAL, USB-PD middleware) are submodules in `external/`. IDE build folders (`Debug/`, `Release/`, `build/`) are not committed. Versions: SemVer per target, tagged `firmware//vMAJOR.MINOR.PATCH` (for example `firmware/main-mcu/v0.1.0`). Each target folder has its own `CHANGELOG.md`, and the firmware reports its version at run time. TEMPLATE.md says what counts as breaking and how pre-releases are named.