From e0714854d25da13e72e569b5bddbaad037dc1ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hartmut=20N=C3=B6renberg?= Date: Sun, 15 Mar 2026 21:42:36 +0100 Subject: [PATCH] fix: stream Blender frame output to frontend for cinematic renders The filter only matched [cinematic_render] tag but Blender outputs its own "Saved: frame_NNNN.png" lines per frame. Now also matches "Saved:" lines, extracts the frame number, and formats as: [cinematic_render] Frame 84/480 rendered This shows live frame progress in the LiveRenderLog on the frontend. Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/app/services/render_blender.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/backend/app/services/render_blender.py b/backend/app/services/render_blender.py index d24bc2f..f5a33c6 100644 --- a/backend/app/services/render_blender.py +++ b/backend/app/services/render_blender.py @@ -674,10 +674,18 @@ def render_cinematic_to_file( line = line.rstrip("\n") if key.data == "stdout": logger.info("[cinematic] %s", line) - if "[cinematic_render]" in line: + if "[cinematic_render]" in line or "Saved:" in line: log_lines.append(line) if log_callback: - log_callback(line) + # For Blender "Saved:" lines, format as frame progress + if "Saved:" in line and "frame_" in line: + import re as _re + m = _re.search(r'frame_(\d+)', line) + if m: + fnum = int(m.group(1)) + log_callback(f"[cinematic_render] Frame {fnum}/480 rendered") + else: + log_callback(line) else: stderr_lines.append(line) logger.warning("[cinematic stderr] %s", line)