Skip to content

to main#794

Merged
JoshuaVSherman merged 2 commits into
mainfrom
dev
Jun 5, 2026
Merged

to main#794
JoshuaVSherman merged 2 commits into
mainfrom
dev

Conversation

@JoshuaVSherman

Copy link
Copy Markdown
Contributor

No description provided.

JoshuaVSherman and others added 2 commits June 5, 2026 07:33
…riber list

Step 2 of the gig-promotion feature: the shared send core all three clients
(admin UI, Claude, gemma) call. Builds on the Step 1 subscriber list + mailer.

- Adds `promo:email` to the capability registry so it can be assigned to the
  web-jam-llm bot (and validated on admin-user create).
- POST /promo/gig/email { subject, bodyHtml } -> sends to every active
  email-channel subscriber, appending each recipient's unsubscribe link.
  Returns { sent, failed, total }. Sequential to respect Gmail rate limits;
  per-recipient failures are counted, not fatal. Content comes in the payload
  (gig data lives in WebJamSocketCluster), so the backend stays decoupled.
- Authorization is privilege-first with role fallback: callers with a
  privileges array must hold promo:email (bot/Claude/gemma); callers without
  privileges fall back to the admin role check (JaM-admin or Developer), so the
  human admin keeps working with no user-record change.
- 8 controller unit tests; full suite green (147), lint + tsc clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat(promo): POST /promo/gig/email — fan out a gig blast to the subscriber list
@JoshuaVSherman JoshuaVSherman merged commit 59bd4c6 into main Jun 5, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant