# Development and releases Released consumers use the public Git tag. While changing WiFiManager and a sibling dependency together, point an ignored local PlatformIO override at a `symlink://` or `file://` checkout rather than changing tracked application dependencies. ```ini lib_deps = WiFiManager=symlink:///path/to/WiFiManager ``` The ESP32 environments pin the PlatformIO-compatible pioarduino 51.03.05 platform package, which packages official Arduino-ESP32 3.0.5. This avoids the known six-second asynchronous scan failure in the older 2.0.17 framework. Core 3 also requires the `SOC_WIFI_SUPPORTED`, `Network/src`, and ESP8266-transport ignore settings shown in this repository `platformio.ini`; keep those settings when adding an ESP32 environment. Start a release with `bump-version.sh`. It updates package metadata and canonical installation snippets, then creates the changelog section. Replace its generated TODO with the release summary and update any behavioural documentation before running: ```bash ./scripts/bump-version.sh vMAJOR.MINOR.PATCH # Replace the generated CHANGELOG TODO with the release summary. ./scripts/check-docs.sh ./scripts/test.sh compile --platform esp8266 ./scripts/test.sh compile --platform esp32 ./scripts/prepare-release.sh vMAJOR.MINOR.PATCH --tag ``` When a physical ESP8266 and ESP32 are available, include their local lifecycle tests in the release gate. These tests remain opt-in because they flash the selected board and use its actual radio: ~~~bash ./scripts/test.sh hardware --platform esp8266 --port /dev/serial/by-id/usb-... ./scripts/test.sh hardware --platform esp32 --port /dev/serial/by-id/usb-... ~~~ When a physical ESP8266 or ESP32 and a spare USB Wi-Fi adapter are available, run the Docker portal contract as an additional release-gate check. It is opt-in because it flashes the selected board and temporarily joins its AP, but it refuses the host default-route adapter and leaves Docker responsible only for browser/API testing: ```bash ./tools/portal-hardware run --platform esp8266 --port /dev/serial/by-id/usb-... \ --client-interface wlx74da385d4165 ``` See [Testing](TESTING.md#docker-portal-contract) for cleanup, artifacts, and optional station handoff credentials. Push the branch and annotated tag. GitHub Actions repeats the board-free compile checks, validates the package, and creates a GitHub Release using that version’s changelog section. The workflow does not publish to the PlatformIO Registry. Back to [documentation](README.md) · [project overview](../README.md).