Recap · the waitlist release

The diff, as a page

One branch, one feature, and what it changed. Diagrams, the file map, and the annotated diff, so a reviewer can see the shape of the change before reading a line of it.

ready for review · 2026-10-10 · meridian-waitlists · 1 shrink, 5 files

01 · What changed

5files
+318lines
1migration

02 · The file map

src/waitlist/offer.ts src/waitlist/offer.test.ts src/pages/classes/[id].tsx src/ui/WaitlistPanel.tsx migrations/014_waitlist.sql src/ui/WaitlistPanel.stories.tsx test
Figure 3 · the files this release touched

03 · Before and after

before

A seat frees and nobody is told. The list grows cold.

after

The next member is offered the seat for ten minutes; if they pass, it moves on.

04 · The annotated diff

src/waitlist/offer.ts
-  return nextInLine(classId);
+  return offerTo(nextInLine(classId), { holdSeconds: 600 });

migrations/014_waitlist.sql
+  ALTER TABLE waitlist ADD COLUMN hold_expires_at timestamptz;

05 · A look at the panel

waitlist · Thursday 18:00 1 · Maya R. — offered, 9:41 left holding seat 2 · Devon P. — next 3 · Aiko T. — next when a hold expires, the seat moves to the next name
Figure 4 · the front desk's view, while one member holds the seat

Checked

The suite passes with scripting off and on a phone. Two claims can never hold one seat.

{ai} engineering · example page, generated from a real template · the data here is illustrative