Commit Graph

3 Commits

Author SHA1 Message Date
Jeff Emmett 8c79b97ef7 feat: add one-click channel approval via email
Replace manual Threadfin lookup instructions with a signed approve
button in admin notification emails. Clicking it activates channels
in Threadfin via WebSocket API and sends a confirmation email to
the requester.

- Add /api/approve-channels endpoint with HMAC-signed tokens
- Add lib/threadfin.ts for WebSocket-based channel activation
- Add lib/token.ts for signed token creation/verification
- Add ws dependency for Threadfin WebSocket communication
- Update docker-compose with TOKEN_SECRET and THREADFIN_* env vars

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 12:15:10 -07:00
Jeff Emmett 3a2604ea2e feat: switch email from Resend to Mailcow SMTP
Resend required domain verification that wasn't set up. Switch to
self-hosted Mailcow (mx.jeffemmett.com) using nodemailer for SMTP,
matching the pattern used by other projects (cosmolocal, etc).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 01:52:34 +00:00
Jeff Emmett 95ac4129b3 feat: add JFA-Go and SoulSync docker-compose configs
- jfa-go-docker-compose.yml: Jellyfin account invitation system (invite.jefflix.lol)
- soulsync-docker-compose.yml: Spotify/Tidal to Soulseek music sync
- tsconfig.json: formatting updates and jsx mode fix
- package-lock.json: lock dependencies

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 23:37:02 +00:00