Repository navigation
Build Flash Test and CI
This repo is set up so all supported firmware targets can be built from the same tree.
The project uses:
- Node/npm for test scripts.
- Python for regression scripts.
- PlatformIO for firmware builds.
- Arduino ESP32 / ESP32-S3 PlatformIO environments.
No new dependency should be added casually. The firmware already declares its PlatformIO libraries in platformio.ini, and several S3 support libraries live under support/twatch-s3-libdeps.
Run:
npm testThis runs:
python support/check_watch_overlay_persistence.py
python support/regression_checks.py
The regression checks protect the recent high-risk behavior:
- Touch responsiveness on small screens.
- Message shortcut clearing.
- Watch keyboard paging/space behavior.
- Tactical map GPS marker.
- Tactical map controls and performance mode.
- Map pan behavior over markers.
- T-Deck Plus viewport behavior.
- GPS diagnostics layout.
- GPS pin/probe/time-sync behavior.
- Power defaults.
- Pedometer continuity on supported watch hardware.
- T-Deck theme/display/wake behavior.
- CI target coverage.
Run:
npm run buildThis runs tests and builds:
t-watch-ultra
t-watch2020-v3-s3
tdeck-plus
pio run -e t-watch-ultra
pio run -e t-watch2020-v3-s3
pio run -e tdeck-plusUltra example:
pio run -e t-watch-ultra -t upload --upload-port COM10T-Deck Plus example:
pio run -e tdeck-plus -t upload --upload-port COM20Use the actual COM port Windows assigned to the attached device.
T-Deck Plus binary for manual or Launcher testing:
.pio/build/tdeck-plus/firmware.bin
Watch binaries are emitted under their corresponding .pio/build/<env>/ folders.
CI is defined in:
.github/workflows/ci.yml
It runs on push, pull request, and manual workflow dispatch. The current workflow installs PlatformIO and runs:
npm run buildThat means every CI run should cover regression tests and all three active firmware targets.
Ultra and T-Deck Plus use post-upload reset helpers so devices do not remain trapped in the flasher stub after programming:
support/twatch_ultra_post_upload_reset.pysupport/tdeck_plus_post_upload_reset.py
If a device still needs manual power cycling after upload, check the upload port, baud rate, USB cable, and whether the correct target environment was used.