A red mark on the calendar when nobody can book a webinar with you

Featurekamo-internal
Shipped
September 17, 2026 at 6:51 PM UTC
Author
Kamo
Commit
a2d7fed

The presenter of a webinar whose hours have run out was never told. The booking page just offers no times, and the one person who can fix it is the one person the product never mentioned it to. The calendar icon now carries a red, blinking mark whenever MediaService says at least one webinar this member presents has no bookable time left (mediaservice ddf8e20). The calendar is where a presenter declares those hours, so it is where the nudge belongs. On hover the option's own name is replaced by what is wrong, which webinars are waiting, and what to do — the same treatment the leads accept-gate uses, because a dot alone does not tell somebody what to go and do. It rides the existing chat STOMP client rather than opening a connection: a contentless frame on **************** says "re-read", and the browser asks the authenticated endpoint for its own answer. The seed is not an optimisation — the subject is core NATS with no stream, so a frame published while this tab was asleep is gone — and the foreground re-read is the ONLY thing that can catch a window that simply expired, since nothing writes then. Sessions that present nothing never subscribe at all, which is almost all of them. The member id is the STRING one: rounding a unique_rowid() through the numeric accessor would subscribe to a colleague's topic and be refused by the server's guard, leaving a mark that never goes live with nothing on screen to explain it. The answer is held tagged with the member it was read for, so a god-mode sudo or a session switch shows the new member EMPTY rather than the previous one's state — and it needs no reset effect, which the React Compiler rules reject in new code. Tests: presenterAvailability.test.ts pins the destination, the frame predicate (never throws, whatever arrives), the parser (a body it cannot trust leaves the mark alone) and the tooltip against the real dictionary; **************** drives the real useNavAdornments and reads what the nav would draw. Strings are **************** already on the dictionary's main (996b07f0), with no plural in them. tsc clean, eslint clean on the touched files, guards pass, 318 nav tests green.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing