Skip to content

v0.64.23 — Privacy reset, OpenAPI spec for client SDKs, location-search UX

Choose a tag to compare

@dmellok dmellok released this 24 Jun 13:21
· 608 commits to main since this release

First rolled-up release since v0.53.2 on June 20. The recent shape of the project, in five themes.

Privacy reset

[v0.64.22] Phone-home telemetry removed from the running server. app/telemetry.py, the app.config["TELEMETRY"] lifecycle, the Send anonymous usage telemetry toggle, and the Help out onboarding step are gone. Tesserae now contacts no third party from the server.

[v0.64.22] Docs-site analytics flipped to cookieless via persistence: 'memory' in the PostHog snippet. Pageviews and geography continue; no consent banner needed.

OpenAPI 3.0 spec + docs

[v0.64.17v0.64.19] schema/openapi.yaml ships an OpenAPI 3.0.3 spec covering the four machine-facing surfaces (native REST device API, TRMNL-compatible BYOS, webhook push, render artifacts). 14 paths, 17 schemas, 6 security schemes, validated in CI. Use it with openapi-generator-cli or kiota to produce client SDKs in arbitrary languages.

New docs page walks through generator commands + auth flows, with one-click Swagger Editor and Redoc links that load the spec live.

[v0.64.19] REST transport docs reframed to lead with the zero-typed-credentials /discover flow; the pairing-code path stays as a fallback for sealed-appliance bring-up where the admin can't be at the UI when the device boots.

Location-search UX

[v0.64.12v0.64.16] Manual latitude/longitude entry on weather widgets replaced with a city-search dropdown backed by Open-Meteo's free geocoding. Pick a city and the coordinates + label auto-fill. The label stays editable for custom strings ("Home" instead of "Berlin").

[v0.64.23] Fixed: tojson output in the hidden-input attribute was being marked safe, so JSON's inner quotes terminated the HTML attribute prematurely. Save-all loops were silently wiping the saved location. |forceescape keeps the attribute intact. Regression test ships alongside.

[v0.64.16] Fixed: the weather widget's on-disk cache stored the cell-editor label inside its memo, so renaming a label on the same coordinates stayed stale until the cache TTL expired (or you toggled units). Label now overlays from current options on every cache hit.

REST + BYOS device API

[v0.64.10] /mirror/<device_id> endpoint serves a browser-friendly HTML auto-refresh page wrapping the latest preview. A 2013 Kindle Paperwhite in Safari now stands in as a panel.

[v0.64.9] Server-resolved local time on POST /status responses. Memory-constrained MicroPython / CircuitPython clients don't need to carry the IANA tzdata to compute local time on intermediate wakes.

[v0.64.20] POST /api/v1/device/<id>/log accepts msg as either a string or a list of strings. CircuitPython clients can pass traceback.format_exception() output through without an on-device join; cap raised from 512 B to 4 KB. [v0.64.21] Stripped per-line trailing \n before joining so pre-newlined tracebacks don't double-space on the Events page.

Editor + UI

[v0.63.0v0.63.9] Pages migrated to dx-section-card chrome; per-area CSS extracted into focused files; comprehensive mobile-responsive pass with rotation status pinned.

[v0.63.11v0.63.13] CORS on /api/v1/device/*, /renders/, and /preview/ for browser-based clients.

[v0.64.5] Onboarding wizard gained a timezone step. [v0.64.8] Android Chrome upload edge case resolved.


Full changelog: CHANGELOG.md.