Ported from greenlight-tm: when TRANSCRIPTION_API_URL and
TRANSCRIPTION_API_KEY are set in the .env and the per-room
"AI summary / transcript" setting is enabled, Redlight POSTs to
${TRANSCRIPTION_API_URL}/prompt (header X-Api-Key) as soon as the
"video" format of a recording becomes available.
- transcription.js: service with env gating, timeout and logging
- bbb.js: pass meta_bbb-recording-ready-url on meeting create when the
room has the setting enabled
- recordings.js: unauthenticated /recording-ready callback that
verifies BBB's signed_parameters JWT (HS256, shared secret), caches
the recording and requests the transcription once per recording
(deduped via transcript_requested_at)
- rooms: new recording_transcript column, accepted on create/update
- branding endpoint exposes transcriptionEnabled so the UI only shows
the toggle when the server is configured
- RoomDetail: toggle under "Allow recording" (disabled when recording
is off), de/en i18n
- chore: bump version to 2.4.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
53 lines
1.4 KiB
JSON
53 lines
1.4 KiB
JSON
{
|
|
"name": "redlight",
|
|
"private": true,
|
|
"version": "2.4.0",
|
|
"license": "GPL-3.0-or-later",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "concurrently -n client,server -c blue,green \"vite\" \"node --watch server/index.js\"",
|
|
"dev:client": "vite",
|
|
"dev:server": "node --watch server/index.js",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"start": "NODE_ENV=production node server/index.js"
|
|
},
|
|
"dependencies": {
|
|
"axios": "^1.7.0",
|
|
"bcryptjs": "^3.0.3",
|
|
"better-sqlite3": "^12.6.2",
|
|
"concurrently": "^9.0.0",
|
|
"cors": "^2.8.5",
|
|
"dotenv": "^17.3.1",
|
|
"exceljs": "^4.4.0",
|
|
"express": "^5.2.1",
|
|
"express-rate-limit": "^8.5.2",
|
|
"flatpickr": "^4.6.13",
|
|
"ioredis": "^5.10.0",
|
|
"jsonwebtoken": "^9.0.0",
|
|
"lucide-react": "^1.16.0",
|
|
"multer": "^2.1.0",
|
|
"nodemailer": "^8.0.1",
|
|
"otpauth": "^9.5.0",
|
|
"pdfkit": "^0.18.0",
|
|
"pg": "^8.18.0",
|
|
"qrcode": "^1.5.4",
|
|
"rate-limit-redis": "^5.0.0",
|
|
"react": "^19.2.6",
|
|
"react-dom": "^19.2.6",
|
|
"react-hot-toast": "^2.4.0",
|
|
"react-router-dom": "^7.15.1",
|
|
"uuid": "^14.0.0",
|
|
"xml2js": "^0.6.0"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/postcss": "^4.3.0",
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@vitejs/plugin-react": "^6.0.1",
|
|
"postcss": "^8.4.0",
|
|
"tailwindcss": "^4.3.0",
|
|
"vite": "^8.0.0"
|
|
}
|
|
}
|