Skip to content

v1.1.0 — parity with droidconKE, and the first tests

Choose a tag to compare

@manuelgeek manuelgeek released this 07 Oct 12:00
· 34 commits to dev since this release
5c8cbd7

The release that brings flutterconKE to parity with droidconKE, and gives the repo its first tests.

Baseline is v1.0.0 (5f18167), what has been serving since 2026-09-28 — and the first tag this repo has ever had. 32 commits.

The repo has tests now

It had none. Vitest is in, and CI runs it between lint and build so a failure
blocks a merge rather than being discovered later. The first suite pins the
four functions that had been quietly wrong: parseEat, sessionHasEnded,
feedbackWindowLabel and getTwitterUsername.

That ordering is deliberate — three of the fixes below were found by writing
those tests, not by anyone reporting them.

Feedback

  • the device id stays stable without localStorage, with a real v4 fallback
    instead of a generator that collided
  • the event start date is read with parseEat; without it the "Not open yet"
    state was unreachable, so feedback looked open before the event began
  • the writes carry a sensible timeout — they are the requests that most need
    one and had none
  • the fixed "Feedback has closed" banner was at 1.85:1 contrast, well under
    the floor
  • the edit-window toast reads the { data: ... } envelope too, so it shows (#100)
  • the floating button only serves the event being viewed (#98)

An API that is down should render an empty page, not a 500

The same class of fix as dcke, for the same reason: every gSSP call was
unguarded, so a timeout or a 200 carrying null threw during render.

  • gSSP calls catch and fall back to empty state, then the ones missed on the
    first pass
  • a 200 with a null payload renders empty sections rather than a 500 (#97)

Accessibility and sessions

  • the save control is a real <button> — keyboard reachable, named, state not
    colour-only
  • aria-pressed carries the state, so the accessible name stops shifting
  • bg-white/15 never compiled; bg-white/20 is on the scale
  • the @ belongs to a parsed handle, not to a LinkedIn link
  • a stored handle URL may already carry the @ — do not add a second
  • an empty session_image falls back to the default artwork (#99)
  • day pills carry a session count, on the agenda and then past events (#92),
    with the count dimmer than the label beside it

Offline

next-pwa registered the service worker more than once, which broke refreshes
while offline. The SW registers once, SSR pages are cached on front-end
navigation, and image caching is fixed.

Things that said undefined out loud

  • the shared tweet carried @undefined with no handle
  • a speaker with no socials rendered href=undefined
  • GA ran with a placeholder id off-env and logged config('undefined') per
    page view; the scripts are gated on the environment

Housekeeping

  • schedules is a day-keyed Schedule, not Schedule[] — the type had been
    lying and every consumer worked around it
  • @types/next-pwa is a dev dependency
  • the dcke #168 parity bump: next 15.5.26, axios 1.20.0, sharp 0.35.5, and the
    CI matrix moves to Node 20/24
  • the chat-ops replies move off node12 (#103)
  • the home page dropped a title that duplicated the back-to-top label, and the
    back-to-top arrow was invisible on its own button

Deploying this

A Next.js build; no migrations and no new env keys. main is the released line
from this release on (#106) — the server has been deploying dev, and main
was 236 commits behind until now.