Put ESP Screens in English and keep layouts when entity IDs change (0.2.40)

Everything a user sees or reads is now English: both boards' labels,
status replies and logs, the ESP Screens editor and Alerts cheatsheet,
and the README and guides (docs/TILES.md, CALIBRATING.md, ACCEPTANCE.md
and TROUBLESHOOTING.md replace the Dutch file names). Labels follow
Home Assistant's own English names (Heat/Cool modes, Heating/Cooling
actions, Away, Returning to dock, weather conditions), dates use English
abbreviations and the top bar writes numbers the English way. Docs use
HA 2026.9's menu names (Settings -> Apps, App store, Settings -> Tools).
Unused legacy files (home-like.yaml, buttons.yaml, a.out) are removed.

Firmware 0.2.34 names its entities in English. Home Assistant registers
a renamed ESPHome entity under a new entity ID, so the inbox
text.<screen>_tegelinstellingen becomes text.<screen>_tile_settings and
the layout stored under the old ID would be lost. The manager now
recognises the screen by its device, during a run or after a restart,
and moves its layout and update history along; the Update button and
the nightly round follow the screen through the rename. Screens that
still run 0.2.33 or older keep working: both languages are matched.

Main is the only release branch from now on.

Tested on a Home Assistant Yellow (HA 2026.9.1) with both bench boards:
see docs/TEST_RESULTS_0240.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Max Gramser
2026-09-15 02:08:43 +02:00
parent f60eed3ff6
commit 3e959b3df9
87 changed files with 5049 additions and 11167 deletions
+20 -19
View File
@@ -5,7 +5,7 @@ using namespace header_bar;
int main() {
assert(kind("clock") == Kind::clock && kind("analog") == Kind::analog && kind("date") == Kind::date);
assert(kind("text") == Kind::text && kind("ago") == Kind::ago);
for (const char *bad : {"", "Clock", "tijd", "state"}) assert(kind(bad) == Kind::none);
for (const char *bad : {"", "Clock", "time", "state"}) assert(kind(bad) == Kind::none);
uint32_t c = 0;
assert(color("FFB300", c) && c == 0xFFB300);
@@ -25,25 +25,26 @@ int main() {
// The editor's agoText() uses the same words and thresholds.
const int64_t now = 1789401840;
assert(ago_text(now, 0) == "—" && ago_text(0, now) == "—");
assert(ago_text(now - 59, now) == "Zojuist");
assert(ago_text(now - 60, now) == "1 min geleden");
assert(ago_text(now - 3599, now) == "59 min geleden");
assert(ago_text(now - 3600, now) == "1 uur geleden");
assert(ago_text(now - 86399, now) == "23 uur geleden");
assert(ago_text(now - 86400, now) == "Gisteren");
assert(ago_text(now - 172800, now) == "2 dagen geleden");
assert(ago_text(now - 604800, now) == "1 week geleden");
assert(ago_text(now - 2 * 604800, now) == "2 weken geleden");
assert(ago_text(now - 2592000, now) == "1 maand geleden");
assert(ago_text(now - 3 * 2592000, now) == "3 maanden geleden");
assert(ago_text(now - 31536000, now) == "1 jaar geleden");
assert(ago_text(now + 30, now) == "Over 1 min");
assert(ago_text(now + 600, now) == "Over 10 min");
assert(ago_text(now + 7200, now) == "Over 2 uur");
assert(ago_text(now + 90000, now) == "Morgen");
assert(ago_text(now + 3 * 86400, now) == "Over 3 dagen");
assert(ago_text(now - 59, now) == "Just now");
assert(ago_text(now - 60, now) == "1 min ago");
assert(ago_text(now - 3599, now) == "59 min ago");
assert(ago_text(now - 3600, now) == "1 hour ago");
assert(ago_text(now - 86399, now) == "23 hours ago");
assert(ago_text(now - 86400, now) == "Yesterday");
assert(ago_text(now - 172800, now) == "2 days ago");
assert(ago_text(now - 604800, now) == "1 week ago");
assert(ago_text(now - 2 * 604800, now) == "2 weeks ago");
assert(ago_text(now - 2592000, now) == "1 month ago");
assert(ago_text(now - 3 * 2592000, now) == "3 months ago");
assert(ago_text(now - 31536000, now) == "1 year ago");
assert(ago_text(now + 30, now) == "In 1 min");
assert(ago_text(now + 600, now) == "In 10 min");
assert(ago_text(now + 3600, now) == "In 1 hour");
assert(ago_text(now + 7200, now) == "In 2 hours");
assert(ago_text(now + 90000, now) == "Tomorrow");
assert(ago_text(now + 3 * 86400, now) == "In 3 days");
assert(date_text(2, 14, 9) == "ma 14 sep" && date_text(1, 1, 1) == "zo 1 jan" && date_text(7, 31, 12) == "za 31 dec");
assert(date_text(2, 14, 9) == "Mo 14 Sep" && date_text(1, 1, 1) == "Su 1 Jan" && date_text(7, 31, 12) == "Sa 31 Dec");
assert(date_text(0, 1, 1) == "—" && date_text(1, 1, 13) == "—");
// Guition: digits 15 px high; CYD: 10 px.