• v0.15.0 50b5d94811

    v0.15.0
    All checks were successful
    Test and publish Docker image / test (pull_request) Successful in 36s
    Test and publish Docker image / e2e (pull_request) Successful in 4m45s
    Test and publish Docker image / build (pull_request) Has been skipped
    Test and publish Docker image / test (push) Successful in 34s
    Test and publish Docker image / e2e (push) Successful in 4m41s
    Test and publish Docker image / build (push) Successful in 47s
    Stable

    patillacode released this 2026-05-02 11:58:36 +02:00 | 4 commits to main since this release

    v0.15.0

    Features

    • Demo user banner: Demo accounts now display a persistent banner showing a live countdown to the next
      scheduled data reset. The banner uses role=status for accessibility and updates in real time.
    • Clock-aligned demo resets: The demo cleanup loop now aligns to clock half-hours (:00 and :30) rather than
      running on a fixed interval from startup. The next reset timestamp is exposed to the frontend for accurate
      countdown display.

    Fixes

    • Editor link insertion: Selecting text and inserting a link via the toolbar now correctly preserves the
      selection. Previously, focus shifting to the URL input lost the selected range; the selection is now saved
      before the modal opens and restored on confirm. The Enter key is also scoped to the URL input to prevent
      keystrokes from leaking into the editor after the modal closes.
    • Editor link styles: Inserted links in the editor are now visually underlined (.ProseMirror a).
    • Skip link: Fixed unreliable positioning by switching from position:absolute; top:-100% to position:fixed; translateY(-100%).
    • Ko-fi button: Added width:auto; display:inline-block to prevent the button image from stretching to fill its container.
    • Signup form links: Links now use accent color + underline instead of muted text with no decoration.
    • Demo banner stability: Cleared the countdown interval before triggering a reload to avoid double-fire.
      Guarded against NaN timestamps from missing or malformed data-* attributes.
    • Demo banner layout: Corrected a duplicate vertical offset that pushed the banner too far down on pages using the app layout.
    • Half-hour boundary condition: Fixed an off-by-one in _seconds_until_next_half_hour that could return 0seconds exactly on the boundary.
    • Demo reset timestamp: demo_next_reset_ts is now only computed when is_demo is true, avoiding unnecessary work on every request.

    Tests

    • Unit tests for _seconds_until_next_half_hour covering boundary and midpoint cases.
    • E2E tests for the demo banner (visibility, countdown display, role attribute).
    Downloads