• v3.2.0 ade1b0f1b4

    v3.2.0
    All checks were successful
    deploy / build-and-push (release) Successful in 1m8s
    CI / check (push) Successful in 2m24s
    Stable

    clarity released this 2026-08-25 19:54:26 +00:00 | 0 commits to main since this release

    Added

    • GET /api/events — schedule feed for the info-beamer signage package
      (package-buergerschule).
      Returns yesterday, today and the following days as raw
      JSON, so the package can keep rendering a correct schedule through days of network
      outage on cached data.

      Query parameter days (optional): lookahead days after today, integer 1..14,
      default 5. The response always carries 2 + days day entries — yesterday, today and
      the lookahead — with an empty events array on days without events. An invalid days
      returns HTTP 400; a calendar fetch error returns HTTP 502.

      Deliberately raw data: private events are excluded as everywhere outside
      /wochenplan, but no timeout filter is applied — hiding events that have already
      ended is the renderer's job — and no display strings for headline or date are
      included, since the package renders those itself. Merged repeat bookings are expanded
      to one entry per occurrence, each with its own id. Response shape, field semantics
      and the consuming sync service are documented in the package under
      package-buergerschule/docs/event-display-api.md.

    Changed

    • Added a later entry to the demo fixtures (demo/raum-b.ics), so make demo exercises
      the lookahead days of the new feed.

    Upgrade notes

    No configuration changes. The new route adds no config key and touches no existing one,
    so an existing config.toml works unchanged. /, /wochenplan, /api/hours and
    /no-zoom are unaffected.

    The feed is unauthenticated, like the rest of the app — if the instance is reachable
    beyond the kiosk network, note that /api/events exposes the same non-private events the
    display already shows.

    Downloads
  • v3.1.0 4df06ca071

    v3.1.0
    All checks were successful
    deploy / build-and-push (release) Successful in 57s
    CI / check (push) Successful in 1m48s
    Stable

    clarity released this 2026-08-18 16:02:52 +00:00 | 2 commits to main since this release

    Added

    • GET /no-zoom — per-viewer zoom opt-out. Opening this URL disables the day-view
      zoom ([frontend] scale) for that browser only and redirects to /. Useful when staff
      open the display page on a laptop or phone, where the scale factor chosen for the kiosk
      screen is far too large.

      The opt-out is a session cookie: it applies to one browser, never to the kiosk
      itself, and disappears when the browser is closed. config.toml is not touched, so no
      container restart is involved.

      While it is active, / shows a red bar — "Der Zoom ist für dieses Gerät deaktiviert." —
      linking to /no-zoom?clear=1, which removes the cookie and restores the configured
      zoom. /wochenplan is unaffected either way; it is never zoomed.

    Upgrade notes

    No configuration changes. This release adds no config key, so an existing config.toml
    works unchanged and [frontend] scale keeps its current meaning for the kiosk.

    Downloads
  • v3.0.0 41f5aef409

    v3.0.0
    All checks were successful
    deploy / build-and-push (release) Successful in 1m44s
    CI / check (push) Successful in 2m31s
    Stable

    clarity released this 2026-08-18 15:07:07 +00:00 | 3 commits to main since this release

    Breaking

    • The ?scale= URL parameter is gone. It never worked as intended: it set font-size on a
      display: contents wrapper, but rem resolves against <html>, so with Tailwind's rem-based
      utilities it only ever affected text carrying no text-* class — headings, spacing and heights
      never moved. Remove it from the kiosk browser's URL; it is now inert.

    Added

    • frontend.scale in config.toml (optional, default 1, range 0.53): a display scale
      factor for the day view, applied as CSS zoom. Because zoom multiplies the used value of
      every length, it scales the whole UI — text, spacing, border widths and the logo alike.
      /wochenplan stays unscaled; it is a staff view, not a kiosk view.

      Do not copy an old ?scale= value across. The old parameter enlarged only a few lines of text,
      so the same number renders considerably larger now. Start near 1.25 and tune from there. An
      out-of-range value fails config validation and the page will return 500.

    Changed

    • node-ical updated to 0.27; the rrule "fake-UTC" conversions and the ±2h override/EXDATE
      matching tolerance are gone, since occurrences now come back as real instants.
    • Fixed an endless render loop on /wochenplan when navigating across a DST change.
    • Updated dayjs, @types/node, prettier-plugin-tailwindcss and toml.
    Downloads
  • v2.0.0 9d5ae2e5a7

    v2.0.0
    All checks were successful
    deploy / build-and-push (release) Successful in 1m43s
    CI / check (push) Successful in 2m4s
    Stable

    clarity released this 2026-08-17 00:24:39 +00:00 | 11 commits to main since this release

    Downloads
  • 1.0.0 225b363b3c

    1.0.0
    All checks were successful
    deploy / build-and-push (release) Successful in 2m14s
    Stable

    clarity released this 2026-08-15 15:12:39 +00:00 | 25 commits to main since this release

    Downloads