feat: SGA Spaces email destination for Leadership (#109), v1.14.3 - #110
Merged
Merged
Conversation
SGA Spaces confirmation and cancellation emails only ever went to the address someone signed up with. Leadership can now send them to their personal email, one of their body's shared SGA inboxes, or both, from Settings. The inboxes live on bodies.sga_emails rather than in a map keyed on division and name. The mapping mostly follows division but not entirely -- Finance Board carves out of Student Involvement and the Office of the President boards each have their own -- and name-matching is what #95 moved body types away from. The migration backfills the list in the issue, and Management can edit it in the Bodies tab. Executive Board's two inboxes are offered as separate choices. What someone may choose is recomputed from live Leadership both when Settings saves it and when an email is sent, so a person who steps down falls back to their personal email instead of keeping a body's shared inbox indefinitely. Applies to confirmations, cancellations by the creator, and blackout cascade cancellations, so an invite and its cancellation reach the same inbox. Every recipient -- creator and attendees -- is addressed by their own choice, and an address never receives the same email twice. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ime_status took Both landed on 20260914000000 once this branch was rebased onto dev. Supabase orders migrations by that prefix, so two files sharing it would apply in filename order by accident rather than by intent. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
package.json, the lockfile's two root entries, and the sidebar label. A patch release carrying one addition: Leadership choosing where their SGA Spaces confirmation and cancellation emails go (#109). The FAQ entry is written for members: what changed for someone using Chambers. The v1.15.0 placeholder stays where it is and keeps pointing forward. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #109.
What changes
Leadership can now choose where their SGA Spaces confirmation and cancellation emails go, from Settings → Send SGA Spaces Confirmations To:
The choice applies to confirmations, cancellations by the creator, and cancellations caused by an admin blackout, so an invite and its cancellation always reach the same inbox. The creator and each attendee are sent to the address they chose, and no address gets the same email twice.
Where the inboxes come from
bodies.sga_emails(newtext[]column), filled in from the issue's list and editable by Management in the Bodies tab (@northeastern.eduonly). I used a column instead of a division map in code because the mapping doesn't follow division cleanly: Finance Board has its own inbox separate from Student Involvement's, and each Office of the President board has its own. Matching on body names is also what #95 moved away from.Stepping down
The allowed inboxes are recalculated from current Leadership roles both when Settings saves and every time an email is sent (
lib/spaces-email.ts). Someone who steps down falls back to personal email instead of keeping a body's shared inbox, and Settings tells them so.Migration
supabase/migrations/20260914010000_spaces_email_destination.sql, with a rollback script. Already applied to production. 28 bodies got inboxes, 3 got none, and all 33 users are on the personal default.The branch also includes a follow-up commit that renames the migration from
20260914000000to20260914010000, becausealternate_room_and_time_statushad already taken that timestamp ondev.Version
Bumped to 1.14.3:
package.json, the lockfile's two root entries, the sidebar label, and a new FAQ entry.Testing
tsc --noEmitpasses.northeastern.eduinboxes are accepted.settings-modal.tsxandbodies-tab.tsx, both inuseEffectcode this PR doesn't change.🤖 Generated with Claude Code