Skip to content

Banker's Wrapped v1.4.0

Choose a tag to compare

@github-actions github-actions released this 28 Jun 06:05

Added

  • 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 narrativeNarrativeAgent now requests a 5-act script: Opening / Personality Reveal → Big Achievement → Spending Insight → Personalized Advice → Motivational Close
  • FFmpeg xfade transitionsFFmpegComposer rewritten to filter_complex pipeline: 0.5 s crossfade between every scene pair + global 0.5 s fade-in / fade-out
  • SSE stages composing_video and uploading_to_b2 added; emitted from MediaAgent via progress_callback (7 stages total)
  • Download ZIP endpointGET /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]
  • MediaAgentInput gains optional analytics_output: AnalyticsAgentOutput | None = None
  • MediaAgentOutput gains thumbnail_url: str
  • FFmpegComposer.compose() uses single -filter_complex command (replaces concat demuxer)