c4f7216bc1cce3b62c3a0df8d5c9543fca220adb
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m7s
Email policy - mentor.assign, mentor.bulkAssign, and autoAssignBulkForRound now suppress outbound email entirely when the project's MENTORING round is still ROUND_DRAFT. The MentorAssignment row is created (and in-app notifications still fire), but notificationSentAt and teamIntroducedAt remain null so activateRound can pick them up later. - activateRound, when activating a MENTORING round, now does a coalesced mentor-side email pass in addition to the existing team-side intro pass. Every (mentorId) bucket of pending assignments in this round gets exactly one combined email; the row stamps prevent duplicates on re-activation. - The "send immediately" path is preserved for assignments made while the round is already ROUND_ACTIVE — mentors and teams stay in the loop in real time, but staging during draft is silent. Per-project bulk UI - The /admin/projects/[id]/mentor manual picker now has a checkbox column, header select-all, and a primary-tinted action toolbar that appears when one or more candidates are selected. Submitting calls mentor.bulkAssign with the single projectId so the cartesian server path handles dedup, coalesced emails, and team intros uniformly with the round-page bulk.
Description
No description provided
Languages
TypeScript
99.5%
JavaScript
0.2%
Shell
0.2%
CSS
0.1%