Commit Graph

9 Commits

Author SHA1 Message Date
cc8ab2320b YouTube/Twitch live chat backend WebSocket proxy
- YouTube chat polling via liveBroadcasts + liveChat/messages APIs
- Twitch IRC WebSocket client with IRCv3 tag parsing
- ChatManager orchestrator with token refresh, retry logic
- WebSocket endpoint at /chat/ws with JWT auth
- Added chat:read, chat:edit to Twitch OAuth scopes
2026-03-01 22:19:19 +01:00
08cca68086 Custom RTMP saved accounts, CUSTOM destination prepare, debug logging
- Add POST /providers/accounts/custom-rtmp endpoint for saved RTMP servers
- Encrypt rtmpUrl/streamKey in accessTokenEnc/refreshTokenEnc fields
- Decrypt and return rtmpUrl/streamKey in GET /providers/accounts for CUSTOM_RTMP
- Skip token revocation on DELETE for CUSTOM_RTMP accounts
- Decrypt CUSTOM_RTMP credentials into CUSTOM destinations on plan create/update
- Handle CUSTOM destinations in prepare lifecycle (already READY, skip provider auth)
- Add debug logging for plan operations and user upsert
2026-03-01 10:50:28 +01:00
02755bd1f0 Add plan execution mode, game ID, and version to health endpoint
- Add executionMode and gameId columns to StreamPlan schema
- Add migration for new columns
- Support executionMode/gameId in plan create and update endpoints
- Add version field to health check response from package.json
2026-02-28 22:38:56 +01:00
e16eb85071 Add getYouTubeBroadcastStatus helper
Query YouTube liveBroadcasts API to get lifecycle status (created,
ready, testing, live, complete, revoked) for a given broadcast ID.
2026-02-27 13:21:00 +01:00
cff7cdc58a Multi-account support and streaming fixes
- Change LinkedAccount unique constraint to (userId, serviceId, accountId)
- Add linkedAccountId to StreamDestination for per-account targeting
- OAuth callbacks upsert by accountId so different accounts create new rows
- Delete endpoint changed to /providers/accounts/:id
- getDecryptedToken resolves tokens by linkedAccountId instead of serviceId
- /start transition wrapped in try-catch (enableAutoStart compatibility)
- /end always attempts YouTube complete transition regardless of plan status
- autoDetectEndedPlans loads tokens per-destination
2026-02-26 19:06:05 +01:00
7351003c6b Support Quest Platform SDK auth with oculusId fallback
When the Data Use Checkup hasn't granted numeric ID access, the SDK
returns oculusId (string username) instead. This makes nonce optional,
skips nonce verification for non-numeric userIds, and uses oculusId as
the metaId when numeric ID is unavailable.
2026-02-24 12:41:54 +01:00
0eab05f15b Phase 6: Rate limiting on auth endpoints 2026-02-23 15:45:31 +01:00
538c24c58f Phases 2-4: Auth, providers, stream management 2026-02-23 15:32:24 +01:00
8ea3279c3b Phase 1: Backend scaffold with Fastify, Prisma, Docker 2026-02-23 15:26:50 +01:00