fix: allow anonymous recording start and add light theme email icon (#949)

* fix: all anounimous can start recording

* fix: give more schedule timeout to heavy processes

* fix:  add light mode support for daily icons
This commit is contained in:
Juan Diego García
2026-04-07 17:15:50 -05:00
committed by GitHub
parent f4f94a0d99
commit 08c276e4f4
5 changed files with 19 additions and 6 deletions

View File

@@ -524,6 +524,7 @@ async def get_participants(input: PipelineInput, ctx: Context) -> ParticipantsRe
@daily_multitrack_pipeline.task(
parents=[get_participants],
execution_timeout=timedelta(seconds=TIMEOUT_HEAVY),
schedule_timeout=timedelta(seconds=TIMEOUT_HEAVY),
retries=3,
backoff_factor=2.0,
backoff_max_seconds=30,
@@ -663,6 +664,7 @@ async def process_tracks(input: PipelineInput, ctx: Context) -> ProcessTracksRes
@daily_multitrack_pipeline.task(
parents=[process_tracks],
execution_timeout=timedelta(seconds=TIMEOUT_AUDIO),
schedule_timeout=timedelta(seconds=TIMEOUT_HEAVY),
retries=2,
backoff_factor=2.0,
backoff_max_seconds=15,
@@ -860,6 +862,7 @@ async def generate_waveform(input: PipelineInput, ctx: Context) -> WaveformResul
@daily_multitrack_pipeline.task(
parents=[process_tracks],
execution_timeout=timedelta(seconds=TIMEOUT_EXTRA_HEAVY),
schedule_timeout=timedelta(seconds=TIMEOUT_HEAVY),
retries=3,
backoff_factor=2.0,
backoff_max_seconds=30,

View File

@@ -91,9 +91,7 @@ class StartRecordingRequest(BaseModel):
async def start_recording(
meeting_id: NonEmptyString,
body: StartRecordingRequest,
user: Annotated[
Optional[auth.UserInfo], Depends(auth.current_user_optional_if_public_mode)
],
user: Annotated[Optional[auth.UserInfo], Depends(auth.current_user_optional)],
) -> dict[str, Any]:
"""Start cloud or raw-tracks recording via Daily.co REST API.

View File

@@ -452,9 +452,11 @@ async def test_anonymous_cannot_webrtc_record_when_not_public(client, monkeypatc
@pytest.mark.asyncio
async def test_anonymous_cannot_start_meeting_recording_when_not_public(
async def test_anonymous_can_start_meeting_recording_when_not_public(
client, monkeypatch
):
"""Anonymous users can start recording since it's triggered from the frontend
and recording is at room level via Daily REST API."""
monkeypatch.setattr(settings, "PUBLIC_MODE", False)
room = await rooms_controller.add(
@@ -486,7 +488,8 @@ async def test_anonymous_cannot_start_meeting_recording_when_not_public(
f"/meetings/{meeting.id}/recordings/start",
json={"type": "cloud", "instanceId": "00000000-0000-0000-0000-000000000001"},
)
assert resp.status_code == 401, resp.text
# Should not be 401 (may fail for other reasons like no Daily API, but auth passes)
assert resp.status_code != 401, f"Should not get 401: {resp.text}"
# ======================================================================

View File

@@ -337,6 +337,10 @@ export default function DailyRoom({ meeting, room }: DailyRoomProps) {
[],
);
const emailIconUrl = useMemo(
() => new URL("/email-icon-dark.svg", window.location.origin),
[],
);
const emailIconDarkModeUrl = useMemo(
() => new URL("/email-icon.svg", window.location.origin),
[],
);
@@ -399,12 +403,13 @@ export default function DailyRoom({ meeting, room }: DailyRoomProps) {
show
? {
iconPath: emailIconUrl.href,
iconPathDarkMode: emailIconDarkModeUrl.href,
label: "Email Transcript",
tooltip: "Get transcript emailed to you",
}
: null,
);
}, [emailIconUrl, setCustomTrayButton]);
}, [emailIconUrl, emailIconDarkModeUrl, setCustomTrayButton]);
if (authLastUserId === undefined) {
return (

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="2" y="4" width="20" height="16" rx="2"/>
<path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/>
</svg>

After

Width:  |  Height:  |  Size: 267 B