• v1.7.0 c97ec5387b

    zaph0d released this 2026-03-28 08:06:30 +01:00 | 45 commits to main since this release

    📅 Originally published on GitHub: Sat, 28 Mar 2026 07:07:08 GMT
    🏷️ Git tag created: Sat, 28 Mar 2026 07:06:30 GMT

    What's new in v1.7.0

    Bug fixes

    Caster — stop rapid recast loop on Cast OS devices
    Google Nest Hub and regular Chromecast never report DashCast/PLAYING in catt status output — they only return Volume: X. is_casting() now returns (confirmed, reachable). Within the cooldown window, a reachable device is trusted as still casting; the cooldown is only reset (triggering a recast) if the device is completely unreachable. This eliminates the cast_failed loop that previously appeared every 10 s on both screens.

    Warnings widget — clear expired warnings immediately
    The backend now calls _filter_expired() on every cache hit, so a warning that expires mid-cycle is dropped right away — not at the next 15-minute fetch. The RotatorWidget also gained a bidirectional onUnskip mechanism so the WarningsWidget can re-enter the rotation automatically when new warnings arrive, not just skip when there are none.

    Assistant — polestar.battery_pct rule and cache-key crash

    • Added the missing polestar.battery_pct handler (assistant/rules/polestar.py). Sends a notification when battery drops to a configured threshold.
    • Fixed ValueError: too many values to unpack in engine.py — the dedup cache key was converting (key, value) tuples to strings before sorting, making the subsequent unpack fail.

    ntfy — Unicode characters in notification titles
    Percent-encode the Title HTTP header before sending so characters outside Latin-1 (e.g. em-dash) no longer crash the notifier with UnicodeEncodeError.

    Features

    Landing page — power on/off button per screen
    Each screen card now has a power button. Amber = casting active, blue = paused. Calls PATCH /api/admin/config to toggle casting_active for that screen.

    Landing page — layout and style polish

    • Status pills (BACKEND OK, CASTER) moved from the Status card into the System card.
    • "Status" card renamed to "Live server logs".
    • Casting and power buttons are now equal width within each card.
    • Screen grid uses CSS grid (auto-fill, 190px) for consistent alignment.

    Admin panel — info widget editor in rotator slots
    Adding an info slot in a rotator now shows a full editor: title input and a key/value pair list with add/remove controls.

    Docs

    • docs/config-reference.md: added Screen casting fields table documenting casting_active, chromecast_ip, chromecast_name, chromecast_mac, and enabled.
    • docs/memory/records/decision-log.md: entries for all v1.7.0 architectural decisions.

    Generated with Claude Code

    Downloads