You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Full-bleed cells now honour the gap between neighbouring cells.
v0.71.1's render.full_bleed handling skipped padding entirely,
which made the status bar sit flush against the widgets below it
(no visible matting even at large gap settings). Full-bleed now
only drops the outer padding (edges touching the panel wall);
inner padding between the cell and its neighbours still applies,
so the gap slider stays visible around the bar.
Palette / tone editor no longer disappears from the Calibration
tab after a save (issue #52 follow-up). The section is gated on palette_profile_slug resolving to a real profile; if the slug
got into a state where it pointed at nothing (fresh install with no
applied profile, or a stale slug from a deleted user profile), the
whole palette + tone block vanished from the DOM. _palette_profile_slug_for
now self-heals: on any read where the device has a supported
gamut (Spectra 6 or Inky 7-colour) and the stored slug is empty or
unresolvable, it backfills the family's default bundled slug and
persists it. Devices whose gamut has no matching family (mono,
bwry_4, rgb24, rgb16) are still passed through untouched.
Manual re-add after device delete now wipes leftover state
(issue #48 follow-up). The discovery path already wiped orphan
state on a MAC-differs signal, but the manual "Add device" form has
no MAC to compare, so re-adding a device under the same id kept
dashboards / history / per-device settings from the previous
instance. devices_add now looks up the delete-marker for the
target id and, when one exists, calls wipe_orphan_state before
creating the new instance so the new device starts pristine.
Changed
History status label renamed "delivered" → "pushed" (discussion
#62). The chip on the History timeline reflected the server-
side sent status, but "delivered" implied end-to-end receipt.
The push pipeline only guarantees a successful publish (broker
publish, or a REST device with a new digest ready to poll); it
doesn't know whether the panel has applied the frame yet.
Renamed to "pushed" so the chip matches the guarantee. Separate
receipt tracking is a follow-up.
OpenAPI spec version bumped to match the release (discussion
#28).schema/openapi.yaml had info.version stuck at
0.64.16. Rolled to the current version so generated SDKs carry the
right release marker.
Added
Per-cell padding override (feedback from r/eink launch DMs).
Each cell now has an optional padding_override field surfaced
in the page editor as a Layout tweaks disclosure (collapsed by
default so the cell edit card stays lean). Ticking "Override
page-gap padding for this cell" turns on a 0-80 px slider whose
value replaces the page-level gap-derived padding on that cell,
and also beats the widget's render.full_bleed manifest flag,
so users can dial in per-widget breathing room without touching
the page gap the other cells share.
Content-checksum push skip (feedback from r/eink launch DMs).
When the newly-rendered composition PNG matches a bound device's
last-served digest, the push pipeline no longer publishes to that
device. The panel isn't asked to re-paint, which is a real battery
win on the bigger e-ink panels and the primary optimisation
callers were doing externally (checksumming their own data and
suppressing the webhook). Skipped renderers surface as unchanged=True on the per-renderer result and log a no_change event. When every bound renderer for a push is
unchanged, the whole push logs as no_change too, and the
History timeline shows a distinct "no change" chip. HTTP-polled
devices' next fetch still returns 304 via the existing ETag path;
MQTT-only devices skip the retained re-publish entirely.