v0.4.9 — SSE live check-in and multi-template mail
Pre-release
Pre-release
[0.4.9] - 2026-07-02
Added
- Admin: Instance URL setting (Settings → General) for email logo absolute URLs when BASE_URL env is unset
- Backend: live check-in SSE at
GET /api/checkin/events/:eventId/stream(operator/admincanPerformCheckInauth) - Backend: multiple email templates per event (
name/label, CRUD under/api/admin/events/:eventId/templates) - Backend: bulk send
POST /api/admin/events/:eventId/sendwithtemplateId, recipient filters, anddryRunrecipient count - Backend: send batch status
GET /api/admin/events/:eventId/send/status/:batchId - Backend: per-template test send
POST /api/admin/events/:eventId/templates/:templateId/test-send EmailDelivery.template_idforeign key toMailTemplate(delivery audit per template)- Admin SPA:
useEventStreamhook for live check-in SSE with reconnect and auth-error heuristic - Admin SPA: Check-in page live feed (prepend history, dedup, offline banner)
- Admin SPA: Event overview optimistic
admitted_countfrom SSE - Admin SPA: Communication page multi-template editor, bulk send dialog with dry-run and batch polling
Changed
- Docs: align contributor roadmap in
AGENTS.md,README.md, andVERSIONING.md(v0.5 ingest API → v0.6 Wallet → v0.7 RSVP);AGENTS.mdpoints atCHANGELOG.mdand the open GitHub milestone instead of a hardcoded active milestone
Fixed
- Admin: corrupt uploaded logo files clear the upload value in LogoUploadZone and show an error; external HTTPS URLs keep the value for manual correction
- Admin: attendee resend and bulk resend use DB instance URL for ticket links when BASE_URL env is unset
- Instance URL validation rejects bare
?or#delimiters (prevents malformed ticket and QR link paths) - Admin SPA: event overview reuses check-in TTL dedup map for SSE admits (no full clear on server refresh; TTL prune on poll keeps map bounded)
- Admin SPA: communication page refetches inherited ticket template on each virtual-ticket selection (avoids stale legacy cache)
- Admin SPA: communication page clears editor actions after delete when ticket fallback load fails (avoids targeting deleted template; re-select or create reloads editor)
- Admin: revoke and restore pass from attendees list
- Email templates (reminder and custom) can be deleted even after deliveries were sent (delivery log keeps rows; template reference cleared)
Deploy
- Container image:
ghcr.io/solarssk/admitto:0.4.9(rolling:0.4) - Migrations apply automatically on container start (with pre-migration backup when pending). No manual
migrate deploy.