3 Commits
Author SHA1 Message Date
MichelleandClaude Opus 4.8 849f54db7d chore: update version to 2.4.1
Build & Push Docker Image / build (push) Canceled after 0s
Build & Push Docker Image / build (release) Successful in 4m16s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 09:03:40 +02:00
MichelleandClaude Opus 4.8 4e89d9d0fe feat: disable transcript/summary recording formats when transcription is off
Build & Push Docker Image / build (push) Successful in 4m16s
When the per-room AI summary/transcript setting is disabled (or the
integration is not configured), pass
meta_bbb-disable-recording-formats=transcript,summary on meeting create
so BBB skips processing and publishing those formats entirely
(bigbluebutton/bigbluebutton#25277).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 09:01:18 +02:00
MichelleandClaude Opus 4.8 4aeca36a9c fix: log underlying network error cause for failed transcription requests
Build & Push Docker Image / build (push) Successful in 4m5s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 12:30:17 +02:00
5 changed files with 18 additions and 9 deletions
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "redlight",
"version": "2.4.0",
"version": "2.4.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "redlight",
"version": "2.4.0",
"version": "2.4.1",
"license": "GPL-3.0-or-later",
"dependencies": {
"axios": "^1.7.0",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "redlight",
"private": true,
"version": "2.4.0",
"version": "2.4.1",
"license": "GPL-3.0-or-later",
"type": "module",
"scripts": {
+10 -4
View File
@@ -116,10 +116,16 @@ export async function createMeeting(room, logoutURL, loginURL = null, presentati
if (analyticsCallbackURL) {
params['meta_analytics-callback-url'] = analyticsCallbackURL;
}
// BBB posts a signed recording-ready callback there once recording formats
// are processed; used to trigger the AI summary/transcript integration.
if (logoutURL && room.recording_transcript && isTranscriptionEnabled()) {
params['meta_bbb-recording-ready-url'] = `${logoutURL}/api/recordings/recording-ready`;
if (room.recording_transcript && isTranscriptionEnabled()) {
// BBB posts a signed recording-ready callback there once recording formats
// are processed; used to trigger the AI summary/transcript integration.
if (logoutURL) {
params['meta_bbb-recording-ready-url'] = `${logoutURL}/api/recordings/recording-ready`;
}
} else {
// Transcription/summary is off for this room — tell BBB to skip processing
// and publishing those recording formats entirely (BBB PR #25277).
params['meta_bbb-disable-recording-formats'] = 'transcript,summary';
}
// Build optional presentation XML body - escape URL to prevent XML injection
+4 -1
View File
@@ -62,7 +62,10 @@ export async function requestTranscription({ meetingId, recordingId, prompt }) {
log.server.info(`Transcription requested for recording ${recordingId} (meeting: ${meetingId})`);
return true;
} catch (err) {
log.server.error(`Transcription request error: ${err.message}`);
// undici wraps the real network error (ECONNREFUSED, ENOTFOUND, timeout, …)
// in err.cause — surface it, "fetch failed" alone is undiagnosable.
const cause = err.cause ? ` (${err.cause.code || ''} ${err.cause.message || ''})`.trimEnd() : '';
log.server.error(`Transcription request to ${url} failed: ${err.message}${cause}`);
return false;
}
}
+1 -1
View File
@@ -41,7 +41,7 @@ export function wellKnownHandler(req, res) {
federation_api: '/api/federation',
public_key: getPublicKey(),
software: 'Redlight',
version: '2.4.0',
version: '2.4.1',
});
}