Fix
TRMNL X devices now auto-provision at their native 1872×1404 panel size.
The native TRMNL firmware's /api/setup request only sends ID / Content-Type / FW-Version / Model headers; Width / Height are only sent on /api/display. Tesserae's auto-provision was reading the (absent) Width / Height and falling back to the original-TRMNL 800×480 default, so the composer designed dashboards at the wrong canvas size and the rendered PNG came out blurry on the X's 13.3" panel.
Fix: setup now looks up panel dims from the Model header instead.
| Model header value | Panel dimensions |
|---|---|
x (TRMNL X, BOARD_TRMNL_X / EPDIY)
| 1872×1404 |
og / TRMNL (original)
| 800×480 |
| anything else | 800×480 (safe default) |
The table grows as new models ship; unknown values fall back to the original-TRMNL default rather than guessing.
Reported by @tommerty on discussion #8.
Caveat: existing devices
This fix only helps new provisions. Devices already auto-provisioned at the wrong 800×480 keep that setting. The user can adjust the panel size on the device-settings page. A self-healing path that updates stored panel dims from /api/display reports is the planned follow-up for 0.49.3.
Tests
+2 regression tests covering the TRMNL X auto-provision (Model header without Width/Height) and the unknown-model fallback. 972 passing, ruff + mypy strict clean.