Skip to content
Mocky/Docs v0.2
Get started

The interface

What every control actually does, which ones get confused, and which ones spend tokens.

48 min read

Mocky puts a great many controls on screen, and hardly any of them are labelled with a verb. That is deliberate — a canvas tool that spelled out what each button did would be a wall of text — but it leaves a gap this page fills: what each control actually does, which pairs of controls get confused with each other, and which ones spend tokens.

It is not a tour of the product. It assumes you can see the button; it tells you the part you cannot see.


How to read this page#

Every icon below is the real one, drawn from the same path data as the running interface (src/ui/Icon.tsx). If a button in your window looks like the icon in the table, it is that button.

Every label is quoted verbatim from src/i18n/en.ts and src/i18n/parts/*.ts. The French interface is not a translation of the English one — both are written — so if you run Mocky in French, read fr/interface.md instead of translating back.

Cost is the last column of every table:

CostMeaning
freeNothing leaves the browser. A state toggle, a local computation, a file written from memory.
serverA round trip to the Mocky backend. No model, no tokens — but it needs the backend up.
modelSpends tokens. Every one of these is behind an explicit click; none of them ever fires on its own.
imageCalls the image provider. Slower and more expensive than a text call.

There is a recap of every model control at the end of this page.


The main navigation#

The bar across the top of every route. Nothing here touches a project's contents; it is all navigation, theme and account.

ControlWhat it doesCost
Mocky (wordmark)Mocky home — back to the project list.free
Project name (breadcrumb)Two different controls wearing one label. Away from a project, it is Back to the project. Inside the project, it turns into an input: Rename project. Enter or leaving the field commits, Escape cancels.free
HomeThe project list.free
DESIGN.mdThe full-page art-direction editor.free
MediaThe image library as a page rather than as a modal.free
SettingsProvider, key, model — and Notification: Sound when a generation finishes, a short chime when a generation ends while Mocky is not the tab on screen (a lower one if it failed), with ✓ or ⚠ in the tab's title until you come back. Kept in this browser.free
AdminOnly rendered when your account is an admin — and the route checks a second time, so a hand-typed URL lands on Admins only. rather than on the panel.free
DocsThe only entry that is a real link: it opens https://mocky-docs.emanuelvigreux.fr in a new tab. The small arrow is what says so.free
ThemeSwitch to the Paper theme / Switch to the Ink theme. The icon is the destination, not the current state: a sun means "go light", and it is shown while you are in the dark theme.free
AccountSigned in — click to sign out. It asks for confirmation first, and signing out leaves your projects on this device.free
Sign inOpens the sign-in modal. Sign in to keep your projects on every device.free

Leaving a project is not free of consequence, even though the button is. Home, DESIGN.md, Media, Settings and Admin all unmount the project view, and its cleanup aborts the generation in flight and every repair attempt with it. If Mocky is mid-generation, that click cancels it.

The folded masthead#

Below md the row collapses to three controls: the sync indicator, the theme toggle, and Navigation menu, which opens a sheet. The sheet replays the same routes as 44-pixel rows, adds Docs as a link, and appends Sign out to the account row — the one label the wide header does not show, because there the account button is the sign-out button.


The projects page#

The header#

ControlWhat it doesCost
Search projects…Filters on the project name and on every screen's name and prompt. A project you cannot name is findable by what you asked for inside it. Not rendered at all with five projects or fewer.free
New folderOpens the folder dialog. Hidden until at least one project has a screen.free
Select / DoneEnters and leaves tick mode. Leaving it empties the selection. Hidden when there is only one project.free
New projectCreates the project and opens it immediately.free

The selection bar#

Sticky, and only present in tick mode.

ControlWhat it doesCost
Tick all / Untick allTicks what is visible, not what exists. With a search active, the batch is the search result — which is how you delete "everything called draft" without ticking eleven boxes.free
FileOpens the filing dialog for the ticked projects. Disabled with nothing ticked.free
DeleteTwo-line confirmation: the count of projects, then the count of screens they hold, when they hold any. Disabled with nothing ticked.free

The tick boxes themselves are drawn, with a real underneath. That is not decoration for its own sake — a native checkbox paints the operating system's accent colour, the one colour on the page the theme cannot reach.

Lead, index, drafts#

ControlWhat it doesCost
OpenOpens the project.free
Delete projectOne confirmation, naming the project.free
Lead thumbnailClickable, but deliberately not a button: it is a div, marked aria-hidden, because it duplicates the Open control beside it. A focusable element hidden from assistive technology is a defect, not a shortcut.free
Fold a sectionCollapses a folder, or the Unfiled group.free
Rename the folderA browser prompt. Rendered only on a real folder — never on Unfiled, which is not a folder but the absence of one.free
File “{name}”Files that one project.free
Clear allDeletes every empty draft at once, behind a single confirmation.free

The two folder dialogs#

New folder asks for a name (Folder name, placeholder Client, Drafts, To review…) and a list of projects to put in it. Create the folder stays disabled until both are filled, because a folder in Mocky is its projects: there is no record of an empty one to store.

File shows the existing folders as chips, offers a new-folder field, and adds Take out of the folder — but only when at least one of the chosen projects is currently filed, since otherwise the button would undo nothing.


The project toolbar#

Top-left of the canvas, and the densest thing in the product. Three defences keep it on screen: labels fold away below md, everything past Modify folds into More, and the row scrolls itself rather than pushing the page sideways.

The project toolbar
1Back1 / 11
Leaves the project — and aborts a generation in flight.
  1. Back Leaves the project — and aborts a generation in flight.
  2. Link Pick an element in a screen and draw a cable to the screen it should open.
  3. Modify Click an element and describe a change, or edit its text directly.
  4. Interact Every preview becomes clickable at once.
  5. Annotate Snip a region of a screen into the composer as a numbered reference.
  6. Frame The iPhone frame around mobile screens. Greyed out when the project has none.
  7. System The live design system: your tokens, and a way to recolour them.
  8. Audit SEO and accessibility. Opening it evaluates nothing.
  9. Motion Ultra Cut a film from the media library.
  10. Demo Plays the prototype, in a device frame. See Demo mode.
  11. Export A runnable Vite + React + Tailwind project, as a .zip.

The three that never fold#

ControlWhat it doesCost
BackLeaves the project. As above: this aborts a generation in flight.free
LinkDraw links between screens. Click an element inside a screen, then pick a destination. Turning it on turns Modify and Annotate off — and closes System or Audit, because the Links list it opens wants the same slot they do.free
ModifyClick an element in a screen, then describe a change — no code needed. Also mutually exclusive with the other two.free

The exclusivity is the point: all three modes make a click inside a screen mean something different, and two of them at once would make a click mean nothing.

The eight behind "More"#

Rendered as buttons at md and above, as menu rows below it — from a single list, so the two can never drift apart. More itself only exists below md.

ControlWhat it doesCost
InteractMake all screens interactive (clickable buttons, animations). Hands the pointer to every preview at once.free
AnnotateSnip a region of a screen into the chat as a numbered reference. The rectangle you drag becomes a thumbnail attached to the composer, and it travels with your next prompt.free
FrameShow or hide the iPhone frame on mobile screens. Disabled when the project has no mobile screen — and the preference is not cleared with it, because it lives in one browser-wide key shared by every project. Disabling the control rather than resetting the setting is what keeps your other projects framed.free
SystemLive design system — your DESIGN.md tokens, and a way to recolor them. Closes Audit, or Link mode, if one was open.free
AuditEvaluate SEO and accessibility. Closes System, or Link mode, if one was open — all three want the same slot. Opening the panel evaluates nothing.free
Motion UltraCut a video from the media library. Opens the Motion Ultra panel — see below.free to open
DemoPlay the prototype — follows the links you placed. Starts on the selected screen, or the first one if nothing is selected. See Demo mode below.free
ExportExport a runnable Vite + React + Tailwind project. Opens a menu of three stacks.free

The rule falls before Demo. The last two are the two ways to get something out of a project: a demo of screens that already exist, an archive of code that already exists. Motion Ultra is on the other side of it, with the modes and the panels, because it is the opposite operation — it makes something that did not exist a minute ago, out of the media library, and it opens a panel exactly as System and Audit do. Beside Export it read as a fourth output format, which is the one thing it is not.

It is still deliberately not in a screen's context menu. A cut is made from the media library; it does not read a screen and cannot be derived from one. Hanging it off a screen would promise a relationship the pipeline does not have, and the first thing the panel does — ask which pictures to use — would contradict it.


The canvas#

The zoom bar#

Bottom-left of the canvas from xl up; below that it moves to the top and tucks under the toolbar. Geometry, not taste: the bar is pinned to the left margin and the composer is a centred 672px block, so seven controls only clear it past roughly 1200px of window. Any narrower and the bottom-left corner sits behind the composer, which is opaque — which is how the only zoom control in the product came to be invisible on a laptop.

The zoom bar
1Zoom out1 / 6
Around the centre of the view. Ctrl/⌘ + wheel does the same.
  1. Zoom out Around the centre of the view. Ctrl/⌘ + wheel does the same.
  2. Zoom in Around the centre of the view.
  3. Fit all Frames every screen, and keeps doing so until you move the view.
  4. Latest screen Frames the most recent screen.
  5. Arrange Repacks the board by each screen’s real size.
  6. Cables Shows or hides the cables between screens outside link mode.
ControlWhat it doesCost
Zoom outSteps out around the centre of the viewport.free
100%The current scale. Not a control.—
Zoom inSteps in around the centre of the viewport.free
Fit allFrames every screen, and keeps doing so as screens are added, until you move the view yourself.free
Zoom to the latest screenFrames the most recent screen. Disabled when there is none.free
ArrangeRepacks the board, respecting each screen's real size — a mobile screen does not get a desktop-sized cell — then fits the result.free
Show the cables between screens / Hide the cables between screensThe map of the prototype, outside link mode — see below. Remembered by the browser. In link mode the cables are always drawn.free

What the mouse does#

The hint in the top-right corner says it, and changes with the mode. Written out once:

  • Drag on empty space — marquee selection. Hold a modifier to add to it.
  • Space, or middle-click drag — pan.
  • Wheel — pans. Ctrl or ⌘ + wheel — zooms. A trackpad pinch arrives as the second, which is why it means zoom.
  • Double-click a screen — that one screen becomes interactive, and says so with an Interactive — click outside to leave badge. This is not the same thing as the Interact toolbar button, which does it to all of them.
  • Right-click a screen — the context menu.

Cables between screens#

Every link is drawn as a , like a mind map: it leaves the element it was placed on and lands on the edge of the screen it opens, with the element's text written along it.

  • Outside link mode the cables are a map: faint, behind the frames, deaf to the pointer, so they never steal a click from a screen. The zoom bar's Show the cables between screens / Hide the cables between screens turns that map on and off.
  • In link mode they come to the front and become controls. Pick an element in a screen and a cable follows the pointer; the screen under it lights up, and a click — or letting go, if you dragged — plugs it in. Choose from the list is the keyboard way to the same choice, and Esc or a click on empty space cancels.
  • An existing cable can be selected, removed (Remove the link (Delete key)) or reconnected: drag the socket at its end onto another screen.

The cables are routed around the frames rather than through them, and several leaving one screen fan out instead of piling up.


A selected screen's frame#

Select exactly one screen and a small bar appears above it. Select two and it disappears — every action in it is about one screen.

ControlWhat it doesCost
RenameEdits the name in place.free
Show the request that created this screenOpens the original prompt, with a copy button. On a screen imported or made before this was recorded, the label reads No request recorded instead.free
Notes on this screenOpens the screen's private notes. See the context menu's Notes below.free
Animations, this screenCycles three states, not two: follows the composer / forced on / forced off. A two-state switch would strand a screen on an override you could no longer clear.free
More options (or right-click the screen)The same context menu the right-click opens.free
Delete screenOne confirmation.free

Drag any of the eight handles to resize; the pixel size is printed under the frame while it is selected.

The badges#

They sit beside the name, and three of them show even when the screen is not selected — a screen behaving unusually should say so without being clicked.

BadgeWhat it means
(pin, before the name)Reference screen for the layout of new screens.
StillThis screen never animates, whatever the composer says.
(a number)This screen carries that many notes. Shown selected or not — a note you only see once you clicked the screen is one you will not think to look for. Clicking it opens them.
Interactive — click outside to leaveYou double-clicked this one.

The cards beside the frame#

When a screen was built with a Muse image, that image sits in the grid to the right of the frame — outside its bounds, so it never covers the design. Below a certain zoom it is not drawn at all, on the grounds that an illegible card that sweeps across its neighbours is worse than no card.

The badge under the picture names its role, which is the thing you cannot see by looking at it:

  • Placed — the image is in the screen, as a real .
  • Inspiration — the image is not in the screen. It was shown to the model as an art-direction reference: palette, light, composition.
  • Placed + ref. — both.
  • Muse image — the role was never written down. Not a fourth role: it is what a screen generated before the distinction existed says instead of guessing.
  • Motion Ultra · N pictures — the screen was built by Motion Ultra, and the card is the first picture of its series. With several, frames are stacked behind it; clicking opens the viewer on the whole series (arrows, ← →, thumbnails).

Under it, the media attached to the screen, when there is one — an exported cut, or a scroll sequence. Attached, never used: none of it is in the screen's code, which is the whole distinction Change the media… keeps in two sections. The still is drawn by the browser out of the file itself, because no poster is cut for a cut (that would mean ffmpeg, the one dependency Motion Ultra deliberately does not have). Clicking it plays the cut; a sequence opens in Media, where the frame-by-frame player already lives.

A media the library has lost keeps its card, and the card says so: Media not found, and the caption tells you it is still attached until you detach it. That state is reached by the file failing to load — a deletion, or a hash belonging to another account — and it exists because the alternative was a black rectangle under the ordinary caption, which is also what a cut opening on a black frame looks like.

Under that, the design system this screen was actually generated from. The card holds one of two buttons, never both — which is why they are easy to mistake for each other: you only ever see the one that applies, and the other is what the same corner of the screen shows on a different screen.

ControlWhat it doesCost
Use this designShown when a design was recorded. Restores the recorded copy as the project's current direction, byte for byte. No re-reading, no model call.free
Derive a DESIGN.mdShown when nothing was recorded, and only if the screen has code to read. Asks a model to read the screen and write the design system it implies.model

When something was recorded, the little rendering above the swatches is itself a button: it opens the document full size, where the same Use this design sits beside Save as…. At canvas zoom that card is a postage stamp, and a design system is judged on its words rather than on eight squares of colour.


The screen context menu#

Right-click a screen, or use in its label bar.

The menu of a document, which opens on its own two items:

A document’s context menu
1Download…1 / 7
A document only: PDF with fillable fields, PowerPoint / Google Slides, or PNG images.
  1. Download… A document only: PDF with fillable fields, PowerPoint / Google Slides, or PNG images.
  2. Fit to page A document only: when content runs past a page, measures it and asks the model to win the space back. Kept only if it fits better.
  3. Regenerate The same prompt again, for a different design.
  4. Polish Checks the design against named rules and corrects what it finds.
  5. Notes Private notes on this screen, never sent to a model.
  6. Share A temporary public link and a QR code.
  7. Delete screen One confirmation, and it is gone.
ItemWhat it doesCost
Download…A document only: opens Download the document — PDF with fillable fields, PowerPoint / Google Slides, PNG images. See Documents.free
Fit to pageA document only: measures what runs past the page, asks the model to win it back, measures the answer and keeps it only if it fits better, on the same number of pages. See Documents.model
Regenerate (new variant)Re-runs the screen's own original prompt for a different result. The previous code is kept, so Revert to the previous version undoes it.model
Polish (detect and correct)The quality pass: check, correct, check again. See Quality pass.model
RenameA browser prompt.free
DuplicateCopies the screen, named {name} (copy), placed by the same rule as any new screen rather than on top of the original. The links are not copied — a duplicate arrives inert, because a hotspot pointing where the original pointed is a flow nobody drew.free
Notes / Notes (N)Your notes on this screen: add, edit, delete, each dated. Private: never sent to the model (invariant I9) — to make a remark shape the next generation, copy it into the composer. Not carried over by Duplicate.free
Share (QR code)Creates a temporary public link to this one screen, with a lifetime you choose. A snapshot: editing the screen afterwards does not change what the other person sees.server
Show codeThe generated source, read-only.free
Pin as layout reference / Unpin as referenceMakes this screen the layout the next generations imitate. It does not change this screen.free
Download .tsxWrites the component to a file.free
Revert to the previous versionOnly present when there is a previous version. Every rewrite of the code records one — edit, automatic repair, polish, regenerate, add animations, audit fix, and the two free ones, an image swap and an instant text change. One level, and it clears itself: reverting drops the stored version, so the item disappears and there is no redo.free
Make this screen my DESIGN.mdReads the screen and writes the project's direction from it. Asks for confirmation when a direction already exists.model
Edit DESIGN.mdThe full-page editor.free
Change the media…Lists the images actually present in the code and swaps them, one place or everywhere. Sources: the library, an upload, or a fresh generation.free / image
Delete screenOne confirmation.free

The three groups of small buttons#

At the bottom of the menu, three rows that look alike and are not.

Display format — Mobile · Tablet · Desktop · Full. Resizes the frame and tells later passes what device this is. Full means full height, fitted to the content. Free: no code is rewritten.

Add animations — Subtle · Moderate · Rich. Rewrites the code to add motion, keeping content and layout. Costs model, and is revertable.

Play animations — Auto · Yes · No. Decides whether the motion already in the code runs. Free. Three visible choices rather than one cycling label, because in a menu a single item that changes wording never shows you what the other states are.

The middle one spends tokens. The two beside it do not.


The composer#

The floating bar at the bottom. It is the only control in the product that changes verb depending on what is selected.

The composer: formats, screen type, the three switches, the prompt, Improve and Generate
1Format1 / 9
Mobile, Desktop or Tablet for a screen. For a document, the same chips become page formats.
  1. Format Mobile, Desktop or Tablet for a screen. For a document, the same chips become page formats.
  2. Screen type The kind of screen or document; its structure guides the generation. It stays armed until you remove it.
  3. New direction This prompt rewrites the project’s art direction. It unticks itself after the screen.
  4. Muse Inspiration, an art direction, real copy and pictures for the next screen.
  5. Motion Ultra A project setting: a storyboard and a series of pictures for each new screen.
  6. Screenshots of a site Attach screenshots of an existing site to reproduce it or redesign it. They are never stored.
  7. The prompt Describe the screen. Ctrl/⌘ + Enter sends it.
  8. Improve Rewrites your few words into a complete brief for the chosen format and type. Back to your text undoes it.
  9. Generate Creates the screen — or Update when screens are selected.

Screen type opens this menu — a for a screen, or a :

The Screen type menu: documents, social media and screens
1What a type does1 / 4
It gives the model the structure of that kind of screen. Your words still come first, and the style stays your direction’s.
  1. What a type does It gives the model the structure of that kind of screen. Your words still come first, and the style stays your direction’s.
  2. Documents to print or export Flyer, poster, report, documentation, résumé, invoice or quote, certificate, menu — fixed pages. See Documents.
  3. Social media Instagram, Facebook and LinkedIn posts, in the platforms’ own sizes.
  4. Screens Dashboard, planning, kanban, table, landing page, pricing, product, checkout, sign-in, onboarding, settings, messaging, booking, article, portfolio.

The chips above the field#

ChipWhat it doesCost
New directionThis prompt writes the project's art direction, which every screen after it follows. It unticks itself once the screen is generated. Hidden while editing a screen — an edit reworks what a direction produced, and letting it rewrite that direction would reattribute every other screen in the project.free (arms the next generation)
MuseInspiration, art direction and real copy. Turning it on changes what a generation costs — see Muse.free (arms the next generation)
FormatThe viewport preset for the next screen. Only shown when creating, not when editing. With a document type, the same chips become page formats (A4, A3, US Letter, 16:9, or the social sizes).free
Screen typeWhat kind of screen the next one is — dashboard, planning, kanban, landing page, pricing… — or, under Documents to print or export and Social media, what kind of document. The type's structure guides the generation; your words still win. It stays armed, and a project opens on the type of its latest screen; the ✕ beside it removes it. Ignored in Reproduce.free (arms the next generation)
Picture · No picture / Generated / Free photoA document only: whether it carries one picture, and where it comes from. No picture composes with shapes and colour. Remembered by the browser.Generated: the image model's price
Motion UltraA project setting. Off: one quiet chip, and clicking it switches Motion Ultra on for the project. On: the chip pauses it for the next generations of this session, ×3 / ×6 picks how many pictures each new screen gets (≈ +1 min / ≈ +2–3 min beside it), Video background gives one section a film rendered by your own machine (+1–3 min, off by default), and ✕ switches it off for the project. Hidden while editing. See Motion Ultra.×3 or ×6 pictures, one storyboard call, and one film render when the video background is on
Images · AI / FreeWhere Muse's and Motion Ultra's pictures come from: generated by the image model, or real free photos from Pexels and Pixabay, found from each picture's subject. Shown only when Muse or Motion Ultra is on, the instance has a Pexels or Pixabay key, and the administrator opened free photos to your account. Remembered by the browser.AI: the image model's price · Free: nothing
The briefFolds and unfolds the Muse dossier. Shown only when Muse is on and you are creating. Show the full brief / Collapse the brief.free

Above those sit the transient rows: numbered annotation thumbnails, each with a remove button that is visible at rest rather than on hover — hover does not exist on a phone, and a control that appears only on hover is not hard to find there, it is unreachable. And, when screens are selected, one chip per screen with Remove from selection, plus clear.

The field and its two buttons#

ControlWhat it doesCost
The text fieldDescribe another screen to add to this project… when nothing is selected; Describe a change to apply to the selected screen… when something is. Ctrl/⌘ + Enter submits.—
GenerateCreates a new screen.model
Update ({count})The same button, when screens are selected: edits those screens instead of creating one.model
StopAppears while working. Aborts the request.free
ImproveImprove the prompt — rewrites what you typed into a complete brief (sections, realistic content, states), for the format and type chosen. The text streams into the field; Stop keeps what you had. Unavailable with site screenshots, which are the brief.model
Back to your textAppears after an improvement: puts your own words back.free
Attach screenshots of a site: see below. Screenshots also arrive by pasting into the field or dropping them anywhere on the bar.free

That one button doing two jobs is the single most common surprise in Mocky: if a screen is selected, you are editing it, and there is no new screen coming. clear next to the chips is the way out.

Screenshots of an existing site#

Attach up to four screenshots of a site that already exists — from the floating bar, or from the welcome card of an empty project — and choose what they are for. A prompt becomes optional — the screenshots are the request; a sentence can still say which page to build or what matters.

ChoiceWhat the screen takes from the screenshotsWhat does not run
ReproduceEverything: the same sections in the same order, the copy transcribed word for word in its own language, the colours as exact hex values, the character of the type, radii and shadows. Pop-ups and banners floating over the page are left out.Muse, the planner, Motion Ultra and the project's direction — the screenshot is all four. When the project has no direction yet, the reproduced site becomes it, so the next page you ask for belongs to the same site.
RedesignThe content only: brand, navigation, headings, figures, prices, calls to action. The look is new — the project's direction, or Muse's when it is on — and a result that could be mistaken for the screenshot has failed.The planner and Motion Ultra, whose job is to invent a structure the site already has.

Pictures inside a screenshot (photos, illustrations, logos) cannot be lifted out of it — they are the site's, and they are never stored. What they show can be: the reading step lists up to six of them (section, subject, shape), and each gets a replacement from the composer's Images choice — a free photo that a vision model picks among thumbnails (or refuses them all), or a generated one. Each lands where the original was. One that finds nothing, and every picture past the sixth, stays a block of the same size and dominant colour, and a sentence says how many. A redesign with Muse on takes its pictures from Muse's dossier instead, so there are never two sets. Logos and icons are drawn as SVG or text.

A full-page capture is cut, in the browser, into near-screen-shaped parts of 1 280 px wide with a slight overlap, because a 1 440 × 9 000 page shrunk whole to a model's input size arrives 250 px wide with every line of copy unreadable. The thumbnail says ×5 when that happened. Eight parts in all per request.

The screenshots are never saved. They leave the browser in the one request that uses them and nowhere else — no upload, no library, no sync. A screen remembers that it was built from a site and in which mode, so Regenerate reuses the screenshots during the same session and, after a reload, says it needs them again rather than inventing a page from "Reproduce this site".

On a selected screen, attached screenshots are plain references like the annotations: the words say what to take from them. A model without vision is refused up front, with a sentence saying so.


The side panels#

All three open at the same place, on the right, under the toolbar.

Open with Link. Lists every link in the project, with a count.

ControlWhat it doesCost
DoneLeave link mode.free
From which screenWhich screen to read. The screen is chosen here and not on the canvas, because link mode makes a click inside a frame designate an element rather than the frame.free
Suggest linksReads the rendered screen and proposes links. Despite the wand, no model is involved: it matches the href the model wrote, and labels that echo another screen's words. The proposal dialog says which of the two reasons applies for every row, and nothing is written until you confirm.free
A link rowClick to centre the canvas on it.free
Delete linkRemoves that one link.free

System#

Open with System. Your DESIGN.md's colour tokens, as a palette and a rendered sample.

ControlWhat it doesCost
A swatchSelects the token. The panel then offers a hex field and Apply.free
ApplyRewrites that one token in DESIGN.md. Every future generation follows the change; nothing already on the canvas moves.free
EditOpen the full DESIGN.md editor.free

Audit#

Open with Audit. One screen at a time, chosen from thumbnails — thumbnails already captured, never taken here, because a capture needs a same-origin iframe and running model-written code on Mocky's own origin is not something a panel should do as a side effect of opening.

ControlWhat it doesCost
A thumbnailPicks the screen, and frames it on the canvas so the report is about something you can see.free
Evaluate / Evaluate againRuns the deterministic rules over an AST, in the browser. Works with the backend down.free
Deep analysis (checkbox)Adds the questions a rule cannot settle — does the alt describe the picture, does the heading describe its section. Off by default.model, when the evaluation runs
FixCorrects one finding.model
Fix allCorrects every enforceable finding.model

Two things the panel says out loud rather than in a tooltip. Source-only analysis: the score is about markup and what classes declare, so a 100 does not mean "conformant". And a family row can read not applicable or not measured instead of a number — a screen with no form and a screen whose forms are perfect produce the same empty finding list, and only one of them has earned a score.

Findings marked Advisory — not corrected automatically have no Fix button by design; they are judgement calls the correction pass is not allowed to spend an iteration on.

The last block, Exported document, is not about the chosen screen at all. It is computed once for the project and repeated under every screen, because a Mocky screen is a component: it has no title, no language and no description, and those three exist only in the HTML the export writes. Nothing there has a Fix button either — the fault, when there is one, is in the project's name or in its product name, not in any screen's markup.


The Motion Ultra panel#

Open with Motion Ultra. A film for a screen. The ordinary answer is composed: a model builds each scene out of a catalogue of typed blocks over a ground that can move, and five ready-made compositions stay reachable by name — a slideshow, a banded screenshot, a phone-shaped cut, animated titling, a product spotlight. The render runs on the Remotion worker, not in this browser — and that worker is a separate, opt-in Docker service, so the first thing the panel does is say whether it is there. Why it is built that way is in Motion Ultra.

No film is made on its own. There are two ways to get one: Motion Ultra's Video background, which gives one section of each new screen a film rendered for it, and this panel, where you cut one by hand, revise one, or ask for another. (The composer's animation switch, which used to make a film for every screen when set to "forced", is gone: page animations are always on, and a screen is held still from its own menu.)

The feature was called "Video export" and the file names still are. That is deliberate and explained on the page above: what a user reads says Motion Ultra, what a developer greps says video.

An account the feature is not enabled for gets one terse sentence and nothing else: it learns nothing about how the instance is configured, nor about what a valid cut looks like.

The first control is Composition, and its default is Automatic. Six cards: automatic, then the five compositions, each with its name, one sentence saying what it makes, one saying what it requires, and its own bounds. The third line is the one that decides the choice — "animated titling" does not say that it uses no picture at all, and somebody who has just spent a minute choosing images should learn that before the click rather than after it.

Automatic is the default rather than an option further down the page, because it is the position that serves a brief best: the model reads your sentence and takes the composition built for it. On automatic there is nothing to render yet — the selection is what the model is given to work from — so the render button names that as the reason it will not fire, and a proposal is what decides the composition. The selector then moves to whatever came back.

Choosing one by hand changes the form under it, which is the point of choosing: a composition that uses no image shows no image picker and an Add a card button instead; a product spotlight shows a headline, three argument boxes and a call to action; a banded screenshot shows a band title and where the band sits, and no camera move at all, because a pan across a screenshot slides half the interface out of frame. Switching composition keeps your pictures and your words — nothing is dropped, and a scene count over the new composition's ceiling is reported so you can remove rows yourself.

There is one form, and two ways to fill it in — behind a switch, one visible at a time. Stacked, the two of them filled a 900-pixel window on their own, so the scenes, the running total and the render button all started below the fold on a panel nobody had touched yet. They are alternatives, not steps, and two open forms said the opposite. Which one you last used survives inside the open panel and is not remembered afterwards: it is a fact about the cut you are making now.

ControlWhat it doesCost
CompositionWhich of the five kinds of film this is, or Automatic — the default, where the model picks. Chosen by hand, it decides the fields of everything below.free
Describe the video → Propose a cutSends your sentence and the images you already picked to the model. On Automatic it picks one composition out of the five and fills it in; on one you chose, it holds to it, and a proposal naming another is refused rather than loaded. Either way it does not choose the pictures and cannot add any.model
Start from an image → Generate a model imageMakes one picture from a subject you describe. Nothing continues until you Keep, Regenerate or Abandon it.image
Or start from a picture in the media libraryThe same picker the scene list uses. A library image already exists and you just looked at it to pick it, so it goes straight to the variants with no first confirmation.free
Produce {n} variantsTwo to six takes on that picture, shown small above the button so you can see what they will derive from. Then you tick the ones worth cutting; anything left unticked stays pending, for good.image, one call per variant
A scene rowThe chosen composition's own fields, and none of the others: always a duration and a transition, then a camera move and a caption on a slideshow or a phone cut, a band on a screenshot, a headline and an entrance on a title card, a headline with up to three arguments and a call to action on a product. Move up, move down, remove. On Automatic a row is the picture and its place in the running order, because the composition that would read a setting is not decided yet.free
OutputAspect ratio (16:9, 9:16, 1:1) and container (mp4, webm). A phone-shaped cut has no ratio to choose: 9:16 is the composition, and the panel says so instead of offering two values that would refuse the document.free
Start the renderQueues the job. One render at a time on the instance; you can close the panel and find it again on reopening.server (minutes of CPU)
Download the videoThe finished file.free

A proposal is a pre-fill, not a mode. What comes back is written into the same controls, all of them still live, and replacing a cut you arranged by hand asks first. A read-only preview would have to be taken whole or thrown away whole, and the first thing anyone wants to do with a proposed running order is move two scenes. The switch is about which assistant is on screen; neither of them is a state the timeline is in, and switching away loses nothing — a brief you typed, a picture you have not confirmed and a call still in flight all survive it.

Four things the panel states rather than implies, because each is a fact about your instance that changes what you get:

  • Where the colours and the typefaces come from. They come from the project's art direction, they are shown under the composition cards — the swatches and the family names — and there is no control here to change them. Saying nothing would invite the opposite reading, that a colour setting waits further down; there is none, and there cannot be, because the schema a composed document is validated against has no theme key at all. Only what the direction actually states travels: a project whose accent was inferred rather than written shows no accent, and the composition uses its own default. With no direction, the panel says that instead.
  • Whether the variants will really derive from your picture. With an Edit image profile configured they come out of an image-to-image model fed with your own image; without one they are born of the same text — same subject, another photograph. The sentence appears twice: before the click, from what the server promises, and afterwards, from what the answer actually did.
  • {used} s of {max} s. Two minutes total, twenty scenes, and the button names the reason it will not fire rather than sitting there greyed out.
  • Last scene: this transition never plays. The field is on every scene because the schema is uniform. Hiding the control would give one row a different shape from the others for no visible reason the moment anything is reordered.

When a render fails, the banner is a heading and a next step, never "the export failed". Four situations arrive as the same kind of error and send you somewhere completely different: the volume is full (shorten nothing — ask the administrator), the worker is unreachable (an instance setting, not your cut), the pictures left the library (replace those scenes), the render stopped answering (reopen the panel; it may have finished anyway). A fifth is not a failure at all — Some images are awaiting your confirmation means the server refused a picture nobody has looked at, which is the whole reason that guard is on the server and not in this panel.

Where the finished file goes, and the panel says it rather than leaving a download link that disappears with it: Media, under the Motion Ultra tab — attached to the project you cut it in, or to no project at all when you cut it from the standalone Media page. That tab carries the name of the feature, not of the object, because it is where the panel sends you and the two have to read the same. The object itself is a cut, the word this panel already uses in Propose a cut and New cut; a scroll sequence in the Videos tab is a sequence, and calling both of them a video is what made an export impossible to find in the first place.


Demo mode#

Demo plays the prototype full screen: click the linked areas to follow a flow, Back and Restart walk the history. The bar also switches screens without the links — Previous screen, the Go to a screen list, Next screen, or ← → — and each step counts as a followed link, so Back still works.

Demo mode: a screen shown in a line-drawn laptop
1Exit demo1 / 7
Back to the canvas. Esc does the same.
  1. Exit demo Back to the canvas. Esc does the same.
  2. Back The previous screen of the path you followed.
  3. Restart Back to the first screen.
  4. Device The line-drawn frame: a computer, a tablet or a phone by the screen’s size; a hand for a printed document, a phone feed for a post.
  5. Screen switcher Previous, a list of every screen, next — or ← →. Each step counts as a followed link.
  6. The screen Live and clickable: the linked elements take you to their screens.
  7. Caption The size the screen was designed at, and the device it was given.

Device puts the screen in a line drawing of where it will be seen, chosen from its size — a computer, a tablet or a smartphone, in the interface's own ink. A document gets its own frame: a printed page is held in a drawn hand, and a social post is shown on a phone, in its feed or as a full-screen story (see Documents). A presentation has none, so the button is off there. The choice is remembered by the browser.


The modals#

Everything that opens over the canvas. The first is a dropdown rather than a dialog, and it is listed here because it is where the export decision is actually made.

ModalOpened byWhat is worth knowingCost
Runnable project (.zip)ExportThree stacks: shadcn-ready, Plain Tailwind, daisyUI. The zip is built in the browser and the exported HTML carries the interface language, which is what makes an exported French page readable aloud.free
Link → which screen?Clicking an element in link modePicks the destination. Cancel leaves nothing behind.free
ElementClicking an element in modify modeSee below — it holds three different costs in one card.mixed
CodeShow codeRead-only.free
Download the documentA document's Download pill, or Download… in its menuThree buttons — PDF, .pptx, PNG — and a Save “{file}” link once the file is ready, because a browser may block a second automatic download. What could not be exported perfectly is listed under it. See Documents.free
Share this screenShare (QR code)A lifetime of 1 hour, 24 hours or 7 days, a QR code, and Revoke.server
Media in “{name}”Change the media…Two sections, never one list. Images in the screen’s code: per image, Replace, or Everywhere ({n}) when the same file appears several times, or one slot at a time — this rewrites the source, and Revert undoes it. Media attached to the screen (not in the code): a cut or a sequence to hang on the canvas card, and Detach — this leaves the code alone. Upload a file is free; Generate calls the image provider.free / image

The Element card, opened by clicking something in Modify mode, is the one place where three costs sit in one dialog:

  • Text → Update — free when the text you typed is a unique verbatim match in the source, in which case it is a string substitution and lands instantly. When it is ambiguous, it silently falls through to a model edit.
  • Recolor swatches — each one is a model edit of that element. They are one tap, which is exactly why they are worth flagging: a swatch that costs tokens looks identical to a swatch that does not, and the panel next door has swatches that do not.
  • Or describe any change → Apply change — a targeted model edit. Ctrl/⌘ + Enter submits.

The note at the bottom of that card says the same thing in one line: text changes apply instantly when they are unique, other changes go through the model, everything is revertable from the screen menu.


Controls you will confuse#

This, not that#

ThisNot thisThe difference
Interact (toolbar)Double-clicking one screenThe toolbar button makes every preview clickable at once. The double-click makes exactly one, and that one wears an Interactive — click outside to leave badge.
Add animations (context menu)Play animations (context menu)The first rewrites the code to add motion — a model call, revertable. The second only decides whether motion that is already there runs. They sit two rows apart in the same menu.
Use this design (beside a frame) Make this screen my DESIGN.md (context menu)The first restores a recorded document, exactly, for free. The second asks a model to read the screen and write a new one. Same intent, opposite mechanism, and only one of them costs anything.
Apply in the System panelA Recolor swatch in the Element cardThe System panel rewrites a token in DESIGN.md: free, and it changes future generations only. The Element swatch is a model edit of this element, right now, and leaves DESIGN.md alone.
Pin as layout referenceUse this designThe pin governs layout for the next screens. The design card governs the art direction. A screen can be one, the other, both or neither.
System Edit DESIGN.mdSame icon, two depths: the panel shows the tokens and recolours them; the page is the document itself. Edit inside the panel is the bridge.
Regenerate (new variant) Polish (detect and correct)The first throws the screen away and asks again from the same prompt: a different design. The second keeps the design and fixes named defects in it.
Audit findings Polish (detect and correct) findingsTwo catalogues, two scores, two correction prompts. One is about markup, the other about taste. Neither one's score appears in the other's field.
GenerateUpdate ({count})The same button. If a screen is selected you are editing, not creating.
Fit to page Polish (detect and correct)Both rewrite a document and keep the design. The first answers one measured problem — content past the page — and only tightens; the second answers a list of design findings.
Tick all"select every project"It ticks the visible projects. Under a search, that is the search result.
Suggest linksAnything AI-shapedDeterministic. It reads what is already in the rendered screen; it does not ask a model to imagine a flow.
Theme buttonThe current themeThe icon is where you are going, not where you are.
Check your understanding

Two screens are selected, and you press the composer's main button. What happens?

The four correction passes#

Mocky can rewrite a screen for four different reasons, and the four are not interchangeable. Merging them is the tempting refactor, and it breaks all of them.

RepairPolish (detect and correct)Fix / Fix allFit to page
WhereNowhere — no buttonScreen context menuThe Audit panelA document's context menu
TriggerThe preview iframe reports a render or compile errorYou ask for itYou ask for itYou ask for it
What it is toldFix only the error, do not restyleFix these named findings, change nothing elseFix the markup; the screen must look identical afterwardsWin back these measured pixels; same design, same pages
Budget2 attempts2 iterations2 iterations1 call per click, measured before and after
Costmodel, automaticmodelmodelmodel

Read the middle row again: each instruction is fatal to the others.

  • A slop finding is a styling problem. Hand it to a model told not to restyle and it returns the screen unchanged, having obeyed.
  • An accessibility fix that restyles has failed even when every finding is gone, because a semantics correction came back as a redesign.
  • And a repair that felt free to restyle would answer a compile error with a new design, which is not what anyone asked for while looking at a broken screen.

What they do share is the transport and the write-back conventions — an abort controller, a snapshot of the code checked again before writing, and a previous version so Revert to the previous version works — and the first three share the loop with its four stop conditions. That loop is runPolishLoop, and it is generic over its report type for exactly this reason: the stopping rules are worth having once, and the checks that feed them are not the same check. Fit to page measures progress in pixels rather than in rule ids, so it keeps its own single step.


Everything that spends tokens#

Nothing in Mocky calls a model on its own. Every entry below is a click, and this is the complete list.

ControlWhereNote
GenerateComposerWith Muse on, the one click also runs the inspiration pass and may call the image provider. With Motion Ultra on, it also runs a storyboard call and generates ×3 or ×6 pictures — and, with Video background, composes one film (a text call) and renders it on the worker.
Update ({count})ComposerOne call per selected screen.
ImproveComposerOne call that rewrites your prompt; nothing is generated until you press Generate.
RepairAutomatic, after a failed renderThe only unprompted model call — and it only happens after a generation you asked for produced code that will not run. Capped at two attempts.
Regenerate (new variant)Screen context menu
Polish (detect and correct)Screen context menuThe check itself calls a model for the rules a regex cannot settle, then up to two corrections.
Add animations — Subtle / Moderate / RichScreen context menu
Fit to pageA document's context menuOne call, and two off-screen renders to measure before and after.
Make this screen my DESIGN.mdScreen context menu
Derive a DESIGN.mdDesign card beside a frame
Text → UpdateElement cardOnly when the text is not a unique verbatim match. Otherwise free and instant.
Recolor swatches, custom hex → GoElement cardEvery swatch is a model edit.
Apply changeElement card
Deep analysisAudit panelChanges what Evaluate costs. Off by default.
Fix / Fix allAudit panel
Generate (an image)Change the media…, image libraryCalls the image provider, not the text model.
Picture · GeneratedComposer, on a documentOne picture from the image provider for the next document.
Propose a cutMotion Ultra panelThe only model call in Motion Ultra. It picks a composition and cuts the images you picked; it never picks one of the pictures.
Generate a model image, Produce {n} variantsMotion Ultra panelThe image provider, once per picture. Six variants is six calls.
Start the renderMotion Ultra panelNo model and no provider — but minutes of CPU on the render worker, which is the most expensive click in the product on a small box.

And the notable absences — things that look expensive and are not: Evaluate in the audit panel with Deep analysis off, Suggest links, Use this design, Export, Download .tsx, a document's Download (the PDF, the .pptx and the PNGs are all built in your browser), Duplicate, Arrange, the whole System panel, opening the Motion Ultra panel, and every format, frame and playback toggle in the product.

Was this page helpful?
Documentation powered by Lumy llms.txt