Welcome back, Caleb.
You've got 158 spins left this month. Pick a tool and ship something.
Pick up where you left off.
Talking Head
One portrait + an audio clip → a lip-synced talking head.
Mascot Poses
20 angles of Harry from a single drop.
Moment Maker
Game screenshot → branded social, under 3 minutes.
Holiday Skin
Seasonal mascot, logo, and court treatments.
Pump-Up Graphics
Jumbotron-ready event graphics — render in 18 seconds.
Media Day Re-skin
Drop a headshot — keep the face, swap everything else.
Stat Callout
Single-player stat-line social posts — every-game volume.
Matchup Graphic
Pre-game versus poster — opponent + date/time + venue.
Last 6 generations
Locked & loaded
Latest from Studio
Nano Banana 2 (Google) added to engine registry — stubbed, but honestly stubbed this time
Investigation found the past 'nano-banana' renders in the upstream jobs log were silently falling back to Soul — the Seedance Studio docker proxy has no dispatch branch for it, so unknown engines hit the else branch and route to text2image/soul. False confidence. Also confirmed Higgsfield's platform DOES have a text2image/nano-banana endpoint, but our HF credentials return 404 on it (access-tier gated). And critically: Nano Banana is a Google product (Gemini Image, productionized as gemini-2.5-flash-image-preview) — calling it via Higgsfield is going through a middleman. Right path is a direct Google integration with a GOOGLE_API_KEY, which we don't have set up yet. So: added google:nano-banana-2 to engines.ts as a stubbed engine — supports both text_to_image and image_to_image pathways, ~4s typical, ~3¢/render. EnginePicker auto-shows it as 'soon' across every studio. /api/generate rejects it cleanly with the existing stubbed-engine 501 path, which prevents the silent Soul fallback that was happening before. When we have a Google API key, flipping the status to 'live' and adding the dispatch branch is plumbing.
Feedback inbox is open — no PIN gate on status edits or dev notes
Dropped the VAULT_PIN check on PATCH /api/feedback/[id] and stripped the PIN entry UI + unlocked state from the inbox. Status pills, dev-note textareas, addressedIn field, and the Mark Shipped button are now always live — anyone on the app can move feedback through the workflow and leave notes. The inbox copy says it plainly: it's a collaborative inbox, not a dev-only triage console. If we need to gate this for production we can add session auth later — for the dev / demo phase this should stay frictionless so the team can iterate together.
Engine relabel — "Seedance 2.0" everywhere user-facing (was "Seedream")
Caught a stale label: the text-to-image engine is branded Seedance 2.0 in 2026, but we were showing the old "Seedream" name everywhere — engine picker, tile labels, loader text, brand-guardrails footer, mock-tools catalog, hint copy, all of it. Updated engines.ts label + every hardcoded fallback string + every studio's display copy + the tool catalog's models[] field. The wire-protocol engine id stays "seedream" since that's what the upstream Higgsfield / Seedance Studio API contract expects — kept the comments in route.ts / seedance.ts intact to document why the wire name diverges from the display name. The separate higgsfield:seedance engine (image-to-video) keeps its "Seedance" label as-is for now since it's a distinct video model.