Repository navigation
Development EN
David Panusch edited this page Oct 27, 2026
·
2 revisions
🇩🇪 Deutsch | 🇬🇧 English
Pull requests for new languages, front layouts or bug fixes are welcome.
| Folder | Contents |
|---|---|
src/, include/
|
Firmware. src/WordClock.cpp is the entry point |
include/WordClockTypes/ |
one header per front layout |
include/Render/ |
Colour and transition stages of the display |
webpage/ |
Web interface (HTML, CSS, JavaScript, language files), minified with Grunt during the build and embedded into the firmware |
test/ |
Host tests without PlatformIO |
svg/, 3D_Model/
|
Templates for fronts and housings |
docs/ |
Manual as LaTeX/PDF |
npm ci # once, for building the web interface
pio run # all three environments, like the CI
pio run -e ESP8266 # only one environment
bash test/run.sh # host tests with address and UB sanitizerThe project uses clang-format with the configuration in .clang-format. The CI checks with clang-format 11; newer versions format some places differently.
clang-format -i $(git ls-files '*.h' '*.hpp' '*.cpp' '*.ino')| Workflow | Checks |
|---|---|
| PlatformIO CI | Build for ESP8266, ESP32 and ESP32-C3 |
| Run clang-format Linter | Formatting |
| Nightly Firmware | Daily build with firmware artifacts |
All three must be green before a PR is merged.
- Put the layout file as
.hppintoinclude/WordClockTypes/. The build includes all files there automatically viainclude/ClockType.gen.h. At the end of the file is the instance, e.g.De10x11Alternative_t _de10x11Alternative;. - Add the layout to
CLOCK_TYPES_LISTininclude/WordClockState.h:The parameters are the name of the enumeration, a unique ID (next free number), the name of the instance and the i18n key. The list is grouped by language.X(Ger10x11Alternative, 13, _de10x11Alternative, "de-10-11-alt")
- Add the display name under the i18n key in
webpage/language/*.jsin the sectionview.front. The selection list of the web interface is generated automatically. - Generate the front plate with
python3 svg/createFrontSVG.py <Name>, see Front layouts. - Optionally add a commented-out
DEFAULT_LAYOUTline ininclude/Config.hand list the language in Front layouts.
A release contains one .bin per chip (ESP8266_V<Version>.bin, ESP32_…, ESP32C3_…) and SHA256SUMS. The changes are in CHANGELOG.md; the release text is the section of the respective version.