You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Full asset manifest — B2 now stores 10 artifact types per session: analytics.json (financial insights snapshot), prompts.json (image prompts + SHA-256 hashes per scene), generation.json (model, provider, latency_ms, retry_count per pipeline step), thumbnail.png (scene 0 reused as preview image)
Tenacity retry — all Genblaze media calls (generate_scene_image, generate_narration_audio) wrapped with 3-attempt exponential backoff (2–30 s). retry_count and latency_ms tracked in ImageResult / AudioResult
5-scene cinematic narrative — NarrativeAgent now requests a 5-act script: Opening / Personality Reveal → Big Achievement → Spending Insight → Personalized Advice → Motivational Close
FFmpeg xfade transitions — FFmpegComposer rewritten to filter_complex pipeline: 0.5 s crossfade between every scene pair + global 0.5 s fade-in / fade-out
SSE stagescomposing_video and uploading_to_b2 added; emitted from MediaAgent via progress_callback (7 stages total)
Download ZIP endpoint — GET /api/v1/recap/{session_id}/download streams an in-memory ZIP containing all B2 artifacts for the session
thumbnail_url field added to RecapResponse and stored in session metadata
B2Client.download_bytes() — reads an object body from B2 (used by ZIP endpoint)
Frontend: thumbnail image on main and share pages, "Download full package" ZIP button, full B2 key paths per artifact, 7-step SSE progress bar, scene + artifact count in footer
93 tests, 93% coverage (gate: 80%)
Changed
NarrativeAgent user prompt updated to request 5-scene JSON
MediaAgent.__init__ now accepts optional progress_callback: Callable[[str, str], None]