All articles
Product Update4 min read

Canvas Update: Drop In Your Own Footage, and Stop Losing Your Boards

HeyDreaming's node Canvas now takes real file uploads on the reference nodes, auto-compresses anything over 10MB before it leaves your browser, and autosaves every board so a refresh never wipes your work.

By HeyDreaming

Canvas Update: Drop In Your Own Footage, and Stop Losing Your Boards

The Canvas is where HeyDreaming stops being a single prompt box and starts being a pipeline. You wire nodes together — a prompt, a reference image, an image-to-video step, voice, subtitles, a composer — and the graph decides what runs. It's how you build a repeatable ad-video workflow instead of rolling the dice on one generation at a time.

Two things were quietly getting in the way. You couldn't drop your own footage onto a reference node — only paste a URL — and if you refreshed the tab mid-build, the board was gone. Both are fixed in today's update.

Upload your own footage, right on the node

The Ref image and Ref video nodes now have a real upload button. Click it, pick a file, and the node grabs it — your product shot, a model photo, a clothing flatlay, a reference clip you want a generation to echo. The URL field stays as a manual fallback, but you no longer have to host the file somewhere first just to feed it into the graph.

This is the part of the workflow that was always a little awkward. The whole point of a reference node is "make it look like this" — your product, your model, your brand. Until now that meant getting a public URL for every asset. Now the asset goes straight from your disk into the node, gets stored against your account, and is wired into the run.

It matters most for the reference-driven templates — model try-on, product showcase, brand-consistent shots — where the generation is supposed to be anchored to something real you already own.

Big files compress before they ever leave your browser

Phone and camera images are routinely 15–25MB. Uploading those raw is slow, and it burns through size limits for no reason — a 20MB photo and a 1MB photo carry the same visual information once they're sized for a video frame.

So images over 10MB now get downscaled and re-encoded in your browser before the upload starts. In testing, a 20.6MB image left the browser as a 1.1MB JPEG — same usable detail, a fraction of the bytes, and the upload finishes almost instantly. The button tells you what happened (Compressed 20.6MB → 1.1MB) so nothing is hidden. If a file is already small, or compressing it wouldn't actually help, it's left untouched. GIFs are never recompressed, so animation survives.

Video uploads go straight through (up to 100MB) — there's no reliable way to re-encode video inside a browser without a heavy toolchain, so we don't pretend to. You get a clear message if a clip is over the cap instead of a silent failure.

Turn one product URL into scored ad video

Paste a product page and get four ad-video variations per run — each graded on hook, retention, CTA and brand-fit before you spend.

Autosave: a refresh never costs you a board

Every change on the Canvas is now persisted as you work.

  • Local draft. Your current board is mirrored to the browser, so a refresh, an accidental back button, or a closed tab restores exactly where you left off — "Restored unsaved draft."
  • Cloud autosave. Once a board is saved as a named workflow, edits sync back to your account on a debounce. The toolbar shows the state — Saving… / ✓ Saved — so you always know it's caught up. Open the workflow on another machine and it's current.

And when you save without typing a name, you no longer get a pile of indistinguishable "Untitled workflow" entries. Blank saves are auto-named with a timestamp and a short random suffix — Canvas 2026-06-30 1423-k7q2 — so they stay sortable and easy to tell apart.

We also nudged the node port handles so the connection dots line up with their labels — a small thing, but wiring a graph should feel precise.

Why this fits the way HeyDreaming works

Our whole pitch is scored before you spend — every cut graded on Hook, Retention, CTA, and Brand-fit before you put money behind it. That only works if building a board is fast and lossless: drop in the real reference, run the graph, read the scores, iterate. Friction in the build is friction in the loop.

Uploading your own footage closes the gap between "an AI generation" and "an ad for my product." Autosave means the iteration loop survives a refresh. Both are about the same thing — making the Canvas a place you actually build, not a demo you're afraid to touch.

Open the Canvas tab, drop a template, and try uploading a product photo to a reference node. It'll be compressed, stored, and wired in before you've finished reading this sentence.

Score your next ad before you spend a dollar

Paste a product page and get four ad-video variations per run — each graded on hook, retention, CTA and brand-fit before you spend.

Keep exploring

Keep reading