From #14. Independent of the greyed-slots work in #19 and worth doing regardless.
Two places where the booking page withholds an explanation it already has.
1. The empty / sparse slot list
fillSlots renders No available times. when a day has none. It reads like a broken page rather than an answer, and gives no hint whether to try another day.
Something that names the date, and ideally the host, would land better. Key is no_available_times in internal/i18n/locales/*.json.
2. Minimum notice is invisible
If an event type sets min_notice_minutes, today's early slots silently vanish. A booker looking at today sees nothing until the evening with no explanation anywhere on the page. This is the single most likely cause of "why can't I see those times", and unlike the host's calendar it is policy, not private data, so it is safe to state plainly.
Show something like "Bookings require 4 hours' notice" when the notice rule is what removed the near-term slots.
Notes
- Three surfaces:
book.html, manage.html, embed.js. Markup and JS are separate per surface; styling is shared in booking.css.
- New strings need adding to all eight locales in
internal/i18n/locales/. The same-keys guard test will fail otherwise: go test ./internal/i18n/.
- Non-English locales are LLM drafts with no native review; that's the existing standard, no need to solve it here.
From #14. Independent of the greyed-slots work in #19 and worth doing regardless.
Two places where the booking page withholds an explanation it already has.
1. The empty / sparse slot list
fillSlotsrendersNo available times.when a day has none. It reads like a broken page rather than an answer, and gives no hint whether to try another day.Something that names the date, and ideally the host, would land better. Key is
no_available_timesininternal/i18n/locales/*.json.2. Minimum notice is invisible
If an event type sets
min_notice_minutes, today's early slots silently vanish. A booker looking at today sees nothing until the evening with no explanation anywhere on the page. This is the single most likely cause of "why can't I see those times", and unlike the host's calendar it is policy, not private data, so it is safe to state plainly.Show something like "Bookings require 4 hours' notice" when the notice rule is what removed the near-term slots.
Notes
book.html,manage.html,embed.js. Markup and JS are separate per surface; styling is shared inbooking.css.internal/i18n/locales/. The same-keys guard test will fail otherwise:go test ./internal/i18n/.