Skip to content

v0.4.9 — SSE live check-in and multi-template mail

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Jul 09:38
29ce939

[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/admin canPerformCheckIn auth)
  • Backend: multiple email templates per event (name/label, CRUD under /api/admin/events/:eventId/templates)
  • Backend: bulk send POST /api/admin/events/:eventId/send with templateId, recipient filters, and dryRun recipient 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_id foreign key to MailTemplate (delivery audit per template)
  • Admin SPA: useEventStream hook 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_count from 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, and VERSIONING.md (v0.5 ingest API → v0.6 Wallet → v0.7 RSVP); AGENTS.md points at CHANGELOG.md and 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.

Full changelog