Commit Graph

  • 2945a92193 feat(finale): per-project presentation/Q&A durations in m:ss + config-save merge fix main Matt 2026-06-10 20:14:49 +02:00
  • 9b56eb27fb fix(finale): live-verification fixes — session sync on start, honest vote form, reveal panel polish Matt 2026-06-10 19:24:45 +02:00
  • 160333c2f9 fix(finale): ceremony-day rate-limit bucket — venue NAT would 429 audience polling Matt 2026-06-10 18:45:15 +02:00
  • f7fdfdec9b test(finale): tally audit — weighted criteria math, ordering, ties, favorites separation Matt 2026-06-10 18:35:44 +02:00
  • a2c6baf718 feat(finale): full ceremony UI — admin console, jury phases+notes, deliberation flow, audience voting, big-screen view Matt 2026-06-10 18:34:50 +02:00
  • c9dc1bfabd feat(finale): deliberation jury identity resolution, rankable projects, score-revision path, session sync Matt 2026-06-10 18:15:45 +02:00
  • 4e6904fa12 feat(finale): reveal controller + public ceremony-state endpoint (no-leak guaranteed) Matt 2026-06-10 18:12:00 +02:00
  • 45b007334e feat(finale): vote comments, by-round session lookup, my-finale-inputs query Matt 2026-06-10 18:10:32 +02:00
  • 6d2fa3369f feat(finale): audience favorite-vote windows with category gating + IP cap Matt 2026-06-10 18:09:02 +02:00
  • 6eccfc694e feat(finale): per-project phase machine, server timers, overtime log, juror notes Matt 2026-06-10 18:07:02 +02:00
  • 97ef3e59ac feat(finale): server-stamped phase timer helper Matt 2026-06-10 18:04:51 +02:00
  • a66bd728cd feat(finale): schema for phases, audience windows, favorite votes, notes, reveal Matt 2026-06-10 18:04:25 +02:00
  • 64f88890f5 fix(auth): make audience vote, live-scores and ceremony routes public Matt 2026-06-10 18:02:08 +02:00
  • dcd85c9b13 docs(finale): implementation plan for grand-finale ceremony system Matt 2026-06-10 18:01:12 +02:00
  • 3be1fcd24a docs(finale): approved design spec for grand-finale ceremony system (option C) Matt 2026-06-10 17:54:31 +02:00
  • d38fe7887a feat(final-docs): optional-mode banner/panel + admin 'Documents shown to judges' picker Matt 2026-06-10 15:02:19 +02:00
  • 28ca7bb0a6 feat(final-docs): judge-doc curation — reviewVisibleRequirementIds filter, picker helper, admin procedures Matt 2026-06-10 15:00:49 +02:00
  • d89f67ba57 feat(final-docs): hasRequired/allUploaded on FinalDocumentStatus for optional-uploads mode Matt 2026-06-10 14:58:39 +02:00
  • 2c311bc65a feat(finals): prominent finalist-docs banner on jury dashboard + gate nav to finals jury Matt 2026-06-10 14:56:02 +02:00
  • 85937ec942 docs(final-docs): implementation plan for judge-doc curation + optional uploads Matt 2026-06-09 22:06:20 +02:00
  • 81352d7bd2 docs(final-docs): spec for judge-doc curation + optional revised uploads Matt 2026-06-09 21:59:48 +02:00
  • 8a4184d20f feat(final-docs): judges see all teams' prior-round files; revised uploads behind admin toggle Matt 2026-06-09 17:19:09 +02:00
  • f8f2d77e3b feat(final-docs): decouple grand-final docs from LIVE_FINAL being ROUND_ACTIVE Matt 2026-06-09 16:57:24 +02:00
  • 696d7e9041 fix(final-docs): exclude dropped mentors from doc access; relative in-app reminder link Matt 2026-06-09 16:19:16 +02:00
  • f61dcfa89a feat(final-docs): notify mentor when a finalist uploads a Grand Final document Matt 2026-06-09 16:07:28 +02:00
  • 146691be00 fix(auth): allow /api/cron paths past middleware (self-guarded by CRON_SECRET) Matt 2026-06-09 16:03:55 +02:00
  • e4f13aaed4 feat(final-docs): auto pre-deadline reminder cron Matt 2026-06-09 16:00:42 +02:00
  • 6e1dcc8cbf feat(final-docs): add FinalistConfirmation.finalDocsReminderSentAt Matt 2026-06-09 15:56:46 +02:00
  • 24c7c4bc6c feat(final-docs): Final Documents panel on team + mentor views Matt 2026-06-09 15:53:39 +02:00
  • 8c6a59bad9 feat(final-docs): mentor.getProjectFinalDocuments procedure Matt 2026-06-09 15:50:42 +02:00
  • b66e2071f9 refactor(final-docs): shared review component reachable by jury + admin routes Matt 2026-06-09 15:47:56 +02:00
  • df0be6bb48 feat(final-docs): judge review page + entry points Matt 2026-06-09 15:44:37 +02:00
  • e9e072dda7 feat(final-docs): finalist document review service + procedure with finale-access gate Matt 2026-06-09 15:36:59 +02:00
  • b0a0a71cfe chore(final-docs): script to configure the 4 grand-final file requirements Matt 2026-06-09 15:33:25 +02:00
  • 61bf5a4032 feat(final-docs): admin manual reminder button Matt 2026-06-09 15:31:18 +02:00
  • 26709e2c9b feat(final-docs): manual admin document-reminder blast Matt 2026-06-09 15:26:50 +02:00
  • f3d3a21156 feat(final-docs): GRAND_FINAL_DOCS_REMINDER/SUBMITTED notification types + email template Matt 2026-06-09 15:23:44 +02:00
  • 9e058e6ad7 feat(final-docs): finalist upload banner on applicant dashboard Matt 2026-06-09 15:21:08 +02:00
  • 16e0a08f16 feat(final-docs): applicant.getFinalDocumentStatus procedure Matt 2026-06-09 15:17:47 +02:00
  • c53ec23109 fix(final-docs): round-scope file query + guard empty-required edge case Matt 2026-06-09 15:15:22 +02:00
  • b1923cf0e1 feat(final-docs): grand-final document status service Matt 2026-06-09 15:09:50 +02:00
  • b757aae551 docs(grand-final): implementation plan (4 phases, TDD) Matt 2026-06-09 14:57:19 +02:00
  • c2afa58606 docs(grand-final): 4-doc set (PDF-only), thin dedicated judge page rationale Matt 2026-06-09 14:49:26 +02:00
  • 537de07245 docs(grand-final): spec for final-document upload, mentor surfacing, judge review, notifications Matt 2026-06-09 14:31:49 +02:00
  • a6fc697e4d fix(auth): allow /lunch/pick public access for accountless external attendees Matt 2026-06-05 12:18:10 +02:00
  • 8d4f0bac1e feat(logistics): external attendees self-select lunch dish via tokenized page Matt 2026-06-05 12:04:13 +02:00
  • f2c8cc1e80 fix(logistics): Hotels tab crash — Radix SelectItem cannot have empty value Matt 2026-06-04 19:50:18 +02:00
  • 89ab5cc8e6 test(logistics): remove obsolete single-hotel test (superseded by logistics-hotels) Matt 2026-06-04 19:25:41 +02:00
  • 3bbc80332c feat(logistics): Hotels tab — multi-hotel management + rooming assignment Matt 2026-06-04 19:24:06 +02:00
  • 9313eb96f0 feat(applicant): My Logistics shows assigned hotel + room Matt 2026-06-04 19:21:29 +02:00
  • 4cd2651f9c feat(logistics): hotels CRUD + rooming + assignment procedures + travel email Matt 2026-06-04 19:19:18 +02:00
  • 75e63eb47f feat(hotel): many hotels per edition + HotelStay (room assignment) Matt 2026-06-04 19:13:52 +02:00
  • 200b5e0cb9 docs(logistics): multi-hotel + rooming implementation plan Matt 2026-06-04 19:09:49 +02:00
  • 42e6b5f8c0 docs(logistics): multi-hotel + room-assignment design spec Matt 2026-06-04 19:08:51 +02:00
  • 97951deb68 feat(logistics): departure-after-arrival validation + travel/visa CSV export Matt 2026-06-04 16:56:22 +02:00
  • 53b623fb20 feat(applicant): My Logistics card (hotel/flights/visa+nationality) + confirm-page dashboard link Matt 2026-06-04 16:53:21 +02:00
  • 74cd111e3a feat(applicant): self-service visa nationality entry Matt 2026-06-04 16:51:01 +02:00
  • d03c705642 feat(applicant): getMyLogistics (hotel+flight+visa) + submitter-match fix Matt 2026-06-04 16:50:14 +02:00
  • ed426a6fb4 docs(logistics): Wave 4 plan — team-facing My Logistics + travel/visa UX Matt 2026-06-04 16:46:12 +02:00
  • ee8d65a300 feat(logistics): enable Email Templates tab Matt 2026-06-04 16:41:39 +02:00
  • 0058b2b73b feat(logistics): Email Templates tab (toggle/subject/preview/test) + logistics in global settings Matt 2026-06-04 16:41:33 +02:00
  • e5788b3e9d feat(notifications): renderNotificationEmail + previewEmailTemplate + logistics sample data Matt 2026-06-04 16:39:29 +02:00
  • 27bdf8cdef docs(logistics): Wave 3 plan — enable Email Templates tab Matt 2026-06-04 16:36:05 +02:00
  • 3f25ba112b fix(lunch): reminder filter, recap failure surfacing, manual send-reminders Matt 2026-06-04 16:24:01 +02:00
  • 884c96c710 feat(logistics): travel-confirmed + visa-status emails to attendees Matt 2026-06-04 16:20:21 +02:00
  • 1b4ab6be18 feat(finalist): deadline reminder emails via cron Matt 2026-06-04 16:17:19 +02:00
  • d501624c56 feat(finalist): withdrawal notification to team on decline/unconfirm/unenroll Matt 2026-06-04 16:14:26 +02:00
  • b2826d595f feat(finalist): admin alerts on confirm/decline/expire/promote Matt 2026-06-04 16:11:17 +02:00
  • f529e79cd7 feat(comms): logistics notification types, templates, and email settings Matt 2026-06-04 16:06:10 +02:00
  • 0ea949309a feat(finalist): add reminderSentAt for confirmation reminders Matt 2026-06-04 16:02:57 +02:00
  • 8afef1ecba docs(logistics): Wave 2 plan — close the email/notification void Matt 2026-06-04 16:02:12 +02:00
  • 34bb2bad57 fix(finalist): program-scope guards on enroll/unenroll (code review) Matt 2026-06-04 15:49:13 +02:00
  • 8ee517f6ca feat(logistics): waitlist populate UI + confirmations-tab un-confirm/re-invite actions Matt 2026-06-04 15:36:15 +02:00
  • 2a98f0cacf feat(grand-finale): finalist enrollment card on LIVE_FINAL round page Matt 2026-06-04 15:32:40 +02:00
  • e80710487c feat(finalist): listEnrollmentCandidates query for enrollment UI Matt 2026-06-04 15:29:26 +02:00
  • 375aeb08af feat(finalist): unenroll reverses round membership + confirmation Matt 2026-06-04 15:23:50 +02:00
  • f1e62fdd3b feat(finalist): unified enrollFinalists (round membership + confirmation + email/admin-confirm) Matt 2026-06-04 15:20:51 +02:00
  • dde8ea9345 feat(finalist): re-invite-safe confirmation reset helper Matt 2026-06-04 15:16:52 +02:00
  • ca9edcd038 fix(lunch): allow non-admins to read dish list (unblocks applicant picker) Matt 2026-06-04 15:15:14 +02:00
  • 647e7f09a7 docs(logistics): Wave 1 plan — finalist enrollment + BLOCKER fixes Matt 2026-06-04 15:13:01 +02:00
  • 6b37e9bb9e fix(email): correct member-row spacing in mentor welcome emails Matt 2026-06-02 09:11:01 +02:00
  • eb891403f1 Merge: populate roles[] on user creation (role in roles invariant) Matt 2026-06-01 20:06:52 +02:00
  • 60f1a53d70 fix(users): populate roles[] with primary role on user creation Matt 2026-06-01 20:06:52 +02:00
  • 501b4ffdb5 Merge: primary-role mentors assignable on mentor config page Matt 2026-06-01 19:34:40 +02:00
  • 828c09df6d fix(mentor): primary-role mentors are selectable/assignable Matt 2026-06-01 19:34:40 +02:00
  • fe7f133879 Merge: members role tabs include secondary roles Matt 2026-06-01 18:51:11 +02:00
  • d4a77f63d3 fix(members): role tabs/filter include users with secondary roles Matt 2026-06-01 18:51:11 +02:00
  • 040e5ff9a9 Merge: brand-align mentorship welcome emails Matt 2026-06-01 18:21:49 +02:00
  • 652c3ed4f2 fix(email): use shared branded wrapper (logo/footer) for mentorship emails Matt 2026-06-01 18:21:49 +02:00
  • ed4948cc3d Merge: mentorship comms + welcome/reminder email Matt 2026-06-01 17:04:36 +02:00
  • bd05aaa87d feat(mentor): email all team members button on project detail Matt 2026-06-01 16:50:00 +02:00
  • 0d6f71b9e1 feat(admin): send mentorship welcome/reminder button on mentoring rounds Matt 2026-06-01 16:46:58 +02:00
  • 829b082912 feat(mentor): admin preview + send mentorship welcome/reminder email Matt 2026-06-01 16:40:38 +02:00
  • 32116dac75 feat(mentor): round-open emails now carry team-member contacts Matt 2026-06-01 16:33:27 +02:00
  • 0e221c3916 feat(email): mentorship senders forward contacts/note, return success Matt 2026-06-01 16:29:47 +02:00
  • 9d3ed1cc64 test(email): cover customNote escaping + text-path for mentorship templates Matt 2026-06-01 16:28:32 +02:00
  • a973b1316c feat(email): instructions + contact emails + optional note in mentorship templates Matt 2026-06-01 16:24:31 +02:00
  • 5a9821807a docs(mentor): implementation plan for mentorship comms + welcome email Matt 2026-06-01 16:20:05 +02:00
  • d57495be15 docs(mentor): design spec for mentorship comms + welcome/reminder email Matt 2026-06-01 16:08:46 +02:00
  • 03526fca97 fix(mentor): defer in-app-notification emails when mentoring round is draft Matt 2026-05-27 13:12:41 +02:00