What's new
A running log of what braaand can do, newest first.
A running log of what braaand can do, newest first. This is the product's progress record, so it stays focused on new capability, not the bug fixes behind it.
October 7, 2026
- Logos that know their background. braaand reads each logo file to tell which background it's made for, so a black wordmark lands as the light-background logo and its white twin as the dark one, and templates pick between them without any setup. A logo set for a background it disappears on gets a warning with a one-click fix.
- Simpler logo cards. Each card asks two plain questions (use on dark, light or both; keep its own colors or match the background), and What templates get now shows the actual logo each slot receives instead of a grid of dropdowns.
- Replace a logo file. Replace file on a logo card swaps in a new version and keeps its settings and slot picks; every template and creative using it updates.
October 2, 2026
- Download a whole board. Download on a board renders every creative in every format its template supports and saves them as one zip: all of them, only the approved ones, or the cards you've selected. It runs in the background, so you can keep working.
- Photos stay sharp and in frame. The image agent now sees each photo's size and leaves out photos that would have to be enlarged so much they look soft in the slot. When you swap a photo into a slot, braaand moves the crop so the person stays in the picture instead of keeping the old photo's framing.
- Bound lines you can write. A text line bound to a photo's person data (name · title) can now fall back to copy written for the creative, so a paid ad shows its CTA where an organic post shows "Link in bio".
- Siblings say different things. Creatives built from the same layout are told the full message their siblings already carry, so two number-led ads no longer lead with the same figure and sentence.
- Fairer scores. The judge only reads copy that is actually visible in the format it sees, and is told when a layout has no button or logo by design, so it no longer marks ads down for a hidden carousel counter or a CTA the layout doesn't carry.
- Buttons with markers fit. CTA pills that draw a marker beside the label (a small square, an icon) now grow to fit label and marker together.
- A Route that can't match is flagged. A Route path with no condition is now an error before the run starts, instead of quietly sending everything to the last path.
October 1, 2026
- Replace a font in one move. Drop a font file onto a text style in brand config (or pick "Upload a font file…" in its Font menu) and that style uses it, keeping its case, spacing and line height. In the command bar, drag a font in and say "use this for the headings"; braaand shows it set in your brand's name and applies it when you confirm. A dropped font no longer starts a new brand.
- Fonts know their own names. Uploads read the family, style and weight from the font file itself, so
FormulaCondensed-Bold_RS2026.otfis Formula Condensed Bold, and a newly linked file renders even when an older file of the same family is still in the library. - For agents:
use_font(MCP),POST /api/brands/{brandId}/fonts/useandbraaand brands use-font. - Paste a page, build from it. Drop a campaign page URL into the command bar and ask for ads, templates or a brief that fit it. braaand screenshots the page, reads its copy and its real CSS (colors, fonts, sizes, buttons), and writes a brief in the page's own language, then builds from it: new creatives, or new versions of your existing templates with the page's copy. Agents can do the same with
study_page.
September 30, 2026
- Pipelines explore several ideas, not one. An Ideas node now hands the Build the judge's best concepts (default 3) — or all of them — and the batch is dealt across them, so a 25-creative run carries several distinct ideas instead of 25 rewordings of the winner. Pin a concept to run the whole batch on it.
- Ideas written for your templates. Set an Ideas node to Write ideas for: this pipeline's templates and it brainstorms for each template pinned downstream — every idea sees its layout's roles and budgets, and only that template's creatives execute it. Free ideas, with the layouts found afterwards, stay the default.
- Up to 24 ideas per brainstorm (was 8), in the node, the chat and
generate_ad_ideas(which also takestemplateIds). - Number fields you can type into. Count, spread and length fields no longer overwrite your digits or snap back mid-edit, and decimal fields (knockout padding, focal point, guide positions) accept a decimal point.
- Your copy rules reach the writer. Brand instructions are ordered for the copywriter — tone, voice, writing and channel rules first, visual manuals last — with room for a real brand book, so a brand's own "copy for social" section is no longer cut off behind its logo and typography pages.
- Scores judge against your brand. The Score node now sees the brand's written rules and what each template is for, so it stops marking ads down for following the brand (no logo on photo posts, deliberate white space, the channel's CTA) and keeps judging what actually matters.
- Cleaner line breaks. Short compounds (A-kassan, e-post) and acronym-led names (IF Metall) no longer break across lines in renders and on the canvas.
September 29, 2026
- Panels that grow with their copy. A cluster can now carry a backdrop: a shape BrandFit resizes on every pass to wrap the stacked text, with padding, sides that run flush to the canvas edge, and per-corner radius. Corner blocks, text plates and cards finally stay tight whatever the copy length.
compose_canvasbuilds one from a stack'spanel. - Colors that follow the scheme, in your own CSS. Every render and the editor canvas now expose the active scheme as
--scheme-*variables (--scheme-background,--scheme-accent, the contrast surface…) plusdata-schemeon the root, so a brand class works on red, blue and white schemes alike. - Duotone photos and per-corner radius are built in:
styles.duotonetones an image into two colors (scheme-aware),styles.cornerRadiirounds just the corners you name. - Required accent phrases. A text element can demand inline emphasis (
constraints.emphasis, e.g. exactly one phrase of up to three words in the brand's accent class). Every copy writer is told, and a miss is repaired instead of dropped. - Templates tell you what's wrong. Saving a brand template returns
validation: unknown schemes or classes, markup that would be stripped, dangling anchors, backdrops and bindings, missing copy budgets. Renders returnwarningsfor what a PNG hides: text left blank by a loading font, elements off canvas, overflowing text. - Fonts link to the right file. Auto-linking no longer picks "Roboto Condensed" for "Roboto", and a wrong link is flagged when the brand config is saved. Renders also wait for fonts, and a symbol the brand font lacks (such as →) no longer blanks out the text around it.
September 28, 2026
- New models: GPT-6 and Claude Opus 5.5. OpenAI's GPT-6 Luna, Sol and Astra and Anthropic's Claude Opus 5.5 are now in braaand, on OpenRouter and (for GPT-6) OpenAI's own API. GPT-6 Luna, thinking at high effort, is the default for everything that works with words: the command palette, copy, translation, template selection, ideas, sites and the style guide import. Claude Opus 5.5 takes everything that looks at pictures: scoring creatives, the Edit node, Make editable, focal-point analysis on uploads, reading brand manuals and ad references, and describing characters. It also writes the senior copy. Pipelines saved on the older models move to the new defaults the next time they run, and every model stays selectable per node and per agent in admin.
September 20, 2026
- The Wireframe and Design boards follow the sitemap. Pages are laid out as the tree you planned: the home page on top, the other pages under it, each page's subpages under that page, with lines between them, so you can see how pages relate when zoomed out. The canvas bar switches between Tree and Row. A + at the end of the top row adds a page, a + under a page adds a subpage there. To move a page, drag it by its title: onto another page makes it that page's subpage, up into the top row makes it a top-level page. A hint says where it will land before you let go.
- Trying layouts no longer loses your content. Stepping through a block's variants now always carries from the layout you last wrote in, so a layout that has room for less shows what it can and the next one gets everything back; stepping back to where you started is exact. Titles also find a seat in layouts whose items are a single line. When a layout has texts the previous one never had, the section bar offers Write N missing, which writes only those to fit what is already there.
- A bar for the canvas itself. Click the empty board in the site editor and the bottom bar becomes the board's own: Tidy row lines the pages up, Tidy tree puts each page's subpages under it, Fit and 100% set the zoom, the palette picks the canvas colour (the same presets as the ad editor, remembered in your browser), Page adds a page and Preview opens the site full size. The site boards are also a calm flat gray now, with no dot grid and no shadows under the pages.
- A site can have a look of its own. The brand's design system is now the reference for a site instead of the only answer. Size a heading from the section bar, or open Site styles in the rail, and the change lands on that site alone: the brand, its other sites and its ads stay as they were. Auto still follows the brand, and each field says what Auto would give. The tab lists every change the site has made, each with Reset (back to the brand's value) and Push (the brand takes it, so every other site follows and this one keeps its look; it asks first). A site can also wear one of the brand's themes. The canvas, the full-size preview, the site package and both export zips all use the site's stylesheet. Agents set the same thing with
update_siteorbraaand sites style. - Export a whole site. Export in the site editor's top bar downloads the site as a zip, as React (a drop-in for a Next.js, Tailwind 4 and shadcn/ui project) or HTML (static pages with the CSS already compiled, nothing to build). The download starts at once and a short getting-started card says what to do next.
- Instructions for your AI agent. The same card has Copy instructions: one text for Claude Code, Codex or Cursor that says where the zip is, what it holds, the versions it was built for, the steps and the rules that are easy to break. Both zips carry it as
AGENTS.md. - A code view for every section. Design System → Sections has Image | Code above the preview: the section, or a whole worked page, as HTML or React with one Copy.
- Each page on the canvas has its own bar. The page's name sits in a freestanding bar above it, with Preview to open that page full size.
- Process 1 · Steps has room to breathe, with a hairline over each step. Thirteen other sections got back spacing they had been losing between a header and its list.
- Gallery 11 · Picture wall fills its window on a desktop. The columns no longer roll far enough to show the page behind them.
September 18, 2026
One navbar for the whole site. Select a navbar or a footer and tick Same navbar on every page under Across the site: it replaces each page's own, and from then on one edit (the block, its words, its links, its surface, its options) changes every page. New pages take it too. Untick it on a page to give that page its own. Sites generated from now on share their navbar and footer from the start, so they are also written once instead of once per page.
Changing a block keeps your copy. Picking another variant, or another block altogether, now carries the words, pictures and links across: headings land on headings, body text on body text, list items stay list items and the list keeps its length. What has no place in the new block is dropped; nothing is made up.
Navbar 5 · Minimal has options. The rail's Options block: Fixed to the top; Transparent (the bar lies over the section under it; with Fixed it fills in once you scroll); Stay transparent on scroll (it never fills in); Adapt the links only (the links turn light or dark against what is behind them while the mark keeps its own colours); Adapt to what is behind it (the links and the mark turn light over dark sections and dark over light ones, so a clear fixed bar stays readable down the whole page; use the Inverted surface so the mark is the white one); Hanging mark (the mark sits against the top edge and hangs past the bar like a flag, fixed or not); and Logo size (Small, Medium, Large, Extra large). Options travel with the page everywhere it goes: the export, the site package, and
fill.optionsinupdate_site. Also: a button's hover on a colour-scheme band now always reads (a scheme picks its own text-on-accent instead of borrowing the brand's), and Profile 2 · Centered got a larger portrait with more room under it.Every form on a site wears the same fields. The two contact sections and the newsletter banner used shadcn's input, textarea, select and checkbox components, which take their look from the app's UI kit, while the event, petition and signup forms used the style guide's own fields. They looked different on the same page. Every form in the library now uses the guide's fields, so Design System → UI Elements → Inputs (height, border, corner, padding) dresses all of them at once, and their labels are editable copy rather than fixed English. The navbar's button is a real link now too.
Clips and animated SVGs in a site's pictures, and a rolling picture wall. The asset library now takes short video clips (mp4, webm): they get their own Videos filter, show their first frame in the grid and play on hover. Any picture slot on a site can hold one, and it plays muted and looping like a moving picture, in the editor, the export and the Sites package alike. SVGs can be picked for picture slots too, so an animated SVG plays where a still would sit. Gallery 11 · Picture wall is a new block: a window onto a wall of portrait cards whose columns roll up and down at different speeds as the page scrolls. Stats 5 · Figures was redrawn so its three text lines start on one shared line however the figures wrap.
Blocks for an event's own page and for a case study. Twelve new sections make those two kinds of subpage buildable by mixing blocks. For an event: Event 5 · Poster (the title set huge with the sign-up button and the when and where), Event 6 · Speakers (portrait cards with a small tag on the picture), Event 7 · Facts (when, where, format, entry as short columns) and Event 8 · Signup (the form on its own). For a case or any picture-led story: Gallery 8 · Full bleed, Gallery 9 · Plain and Gallery 10 · Duo (pictures with no title, so they can sit between text), Long form 4 · Text and Long form 5 · Paragraphs (plain reading text, left or centered), Portfolio 7 · Case intro, Stats 5 · Figures and Statement 4 · Accent line (a pull quote). A caption or a speaker's tag can be left empty on purpose and the line disappears.
Profile sections, and bios that can run long. A person's page now has a family of its own in the sections library, Profile, with four page layouts (split, centered, statement, sidebar) and a compact card for ordinary pages, so person pages do not all come out the same. People records gained a long-form bio (up to 12,000 characters, real paragraphs) beside a short intro for team cards; a card without an intro uses the bio's opening sentences.
A page for every person, and pages under pages. A site's page can now be a template that the site renders once per person in the brand's People records: tick Build this page once per person in the page's rail, add a Profile section, and everyone (or one department or tag) gets their own page at
/<page>/<name>with their portrait, role, bio and contact details. Every team list on the site links each name to that person's page, and the links follow renames and page changes. The sitemap also goes one level deeper: a page can sit under another page (/services/strategy), added with the + under a page or the rail's Sits under. Both ride the export (one static page per person) and the Sites package.Sections that move on scroll. Five blocks in the sections library now carry a scroll effect: a hero and a statement whose headline holds the screen while two layers of pictures rise past it, one in front of the words and one behind (Hero 10, Statement 3), a gallery whose columns drift against each other (Gallery 6), a gallery whose long row slides sideways while the section holds the screen (Gallery 7) and a header whose picture opens from a card to the whole screen (Header 6). The movement is plain CSS scroll-driven animation in the brand's
motion.css(the.brand-scroll-*classes), so it needs no JavaScript and works the same in a Next.js page, in a section's static HTML and in a Polyther site. Each block's still layout is its rest pose: a browser without support, a visitor who prefers reduced motion and the builder canvas all show that still composition.People — the brand's own people as records a site binds to. A person (
ppl_…) is a name, a role, a department, an email, a phone number, a bio, a portrait and tags, kept once on the brand (/brands/{id}/people). Every section that shows someone — a contact card under a CTA, a team directory, the lead of a service, the six team layouts — declares which of its slots are that person's fields, and the site editor's rail binds them: pick a person for a card, or fill a team list from everyone, a department or a tag. Bound fields are written from the record and follow it (edit the phone number once, every page moves); typing into a bound field unbinds it. Add from photos seeds the records from the library's person-tagged portraits with the details the photos carry, and a generated site's team lists take the brand's people by themselves — the generator never invents a colleague. Agents:list_people,create_person,update_person,delete_person,sync_people,bind_site_people;braaand people(CLI v0.7.9); REST under/api/brands/{id}/people.An eyebrow is a style-guide class, and a button has a typeface. The small line above a headline is now
.eyebrow— one class every section wears instead of four — resolved like a tag (Auto: the body face, semibold, all caps, in the accent, or the brand's owneyebrowtype style) and tuned like one on the Typography tab or throughstyleGuide.eyebrow; a mono kicker is{ role: "caption", transform: "none" }. The button inspector gained Face and Size:styleGuide.buttons.rolepicks the button's type style (a mono face reaches the web only — the ads keep their CTA style) andscaleits step.Twelve sections for an agency site, drawn from Reform Society's own. The library grew to 118 blocks with the shapes an editorial studio site is built from: Navbar 5 (the mark and a row of links, no buttons), Hero 9 (the brand's own mark set huge between one line above and one below — the site builder stamps it from the logo system), Header 5 (a statement-size page title with one paragraph on its baseline), Statement 2 (a claim in the accent colour over a scatter of pictures), Feature 7 (the services as headlines, each a link) and Feature 8 (services as accordion rows with a description, examples and the person who leads it), Portfolio 5 (selected work: three cases, client and result, one button) and Portfolio 6 (every case at full width with the services delivered beside it), CTA 5 (the ask in two headline lines, then a portrait, name, email and phone), Team 6 (a directory that grows to the size of the company: portrait, name, role, email, phone), Contact 5 (three centered columns, no cards) and Footer 5 (a round stamp link, three link columns and the mark along the bottom edge). A new one-pager, Studio, stacks them. All of it is the style guide applied — on Reform Society the same four pages read like reformsociety.se because the brand's web settings now say so (the Natur surface, the 1rem body, the condensed ladder, outline buttons that sweep on hover, the section rhythm), settings that live on the site side of the brand and move no ad.
The Design view moves faster on picture-heavy sites. The board now loads downsized copies of your library pictures instead of the originals, so panning and zooming a site with dozens of photographs no longer re-decodes them on every move. Nothing else changes: the full-size preview, the export and the published site keep the original files.
A scheme edit marks its previews stale again. Changing or adding a colour scheme used to fail its stale-mark query silently, so documents on that scheme kept their old previews until something else touched them.
September 17, 2026
- The site builder works in three steps: Sitemap, Wireframe, Design. New site is instant now: an untitled site with one empty Home page, open on its Sitemap view with the Site panel floating on the left — describe the company, choose how many pages (one, 2–5, 5–8, 8–12) and the language, or paste a website's address to plan the same pages its navigation carries, then Generate sitemap; or skip the panel and build the tree by hand. Wireframe writes the copy, and only the copy — every page rendered in neutral greys with grey picture boxes, seconds per page — so the structure and the words can be judged before a single picture is fetched. Design then places the pictures for everything that has copy and shows the pages in the brand. Each step is what the address remembers, and each is a stage agents can run apart:
generate_site({ scope: "pages", stage: "copy" | "pictures" }),braaand sites generate --stage copy, andcreate_site/braaand sites createtakepageCount/--page-countandimportUrl/--import-url(CLI v0.7.7). The per-browser brand-or-wireframe toggle is gone: the step is the look. - The build is the show. The sitemap is planned in front of you: the pass streams, and each page frame and each section card deals onto the board the moment the model writes it, the descriptions growing word by word, so the wait is the site appearing. A page still to be written slides its sections in top to bottom, and when a section's copy lands the text types itself out slot by slot with a caret, sections following each other down the page, before the surfaces sweep in and the pictures fade up. When a fill finishes, confetti.
- Set the basics where you can see them, and they cascade. Click a headline on a page and the rail opens the brand's style guide for that tag — Every Heading 1: size on the type scale, weight, case, line height, colour — the same controls as the Design System page, writing the same field, so every h1 on every page moves in the same frame and the design system itself has changed. Click a section or a page for the Layout block: the gutter, the section padding, the container widths, brand-wide. Click the brand's mark in a navbar or footer and the rail offers the ad editor's own logo controls — form, treatment, a specific asset, a tint — resolved through the same resolver an ad uses, and kept on the slot so a surface change re-picks the same way. Agents write the same ask as
images.logo.logoonupdate_site. - Pictures from. The Site panel says where a site's pictures come from — your library, stock, AI generation, in any combination; the brand's own image policy until you tap a chip. On MCP and the CLI it is
imageSourceoncreate_site/update_siteandbraaand sites create --image-source brand+stock+generate(v0.7.8), the same vocabulary an Imagery node carries. - Dragging a section swaps it into place as you go. Lift a section on a page and a grey placeholder of its own height holds its spot; move past a neighbour and they swap, the neighbour sliding out of the way, on the same page or across pages (the origin closes up, the target opens a slot). What you see while it is in the air is exactly what dropping commits.
September 14, 2026
- Pages sized like a campaign site. A brand that has not set its own sizes now gets proportions tuned against a real petition page: 18px body copy, a 72px main heading, roomier section spacing (48, 80 and 112px) and a page margin of 5% of the width. Buttons and form fields share one 48px height, so a button stands as tall as the field beside it. On a narrow page the two largest heading levels step down (the main heading to 60%) and section spacing tightens, and the site builder's phone view shows exactly that, because every narrow rule answers the width of the page as well as the width of the screen. Your own type scale, spacing and form height still win, and none of it touches an ad.
- Agera: a petition signup, and a counter to go with it. The sections library has a new category, Agera, named for the Webflow petition framework: a signup with the headline, a signature counter filling toward its goal, a two-column form (first name, last name, email, mobile), the submit button and the consent line with a privacy link, on the page's own surface or over a full-bleed photo. The form fields wear the style guide's own input styling, so they are sized and coloured by the brand. Upstream shadcn has no counter, so braaand ships one:
components/ui/counter.tsxthemes through the kit like any primitive, shows under UI Elements with tunable track, bar and figures, installs on its own withnpx shadcn@latest add @<brand>/counter, and rides as a file wherever a section that uses it goes — the registry block, the export, the synced folder,get_ui_sectionandbraaand design-system sections get --out(CLI v0.7.6, which now also writes the_fill.tsxhelper a pasted section imports). - The wireframe draws pictures as placeholders. In the site builder's Wireframe view every picture is now a grey box with its image glyph, the way a wireframe draws one, and a logo slot shows the wordmark — instead of the photographs drained of colour, which still read as the finished design. The view also keeps the brand's own sizes (type scale, section spacing, containers), so the structure you judge is the one you are building. Switching back to Brand shows the pictures at once.
September 13, 2026
- See the site as a wireframe. A toggle beside the width switcher takes the pages down to neutral greys, one typeface, flat corners and no shadows, with every picture drained of colour — so you can judge the structure without the look arguing for itself, then switch back. It is the same style guide resolved from a colourless deposit rather than a separate stage, which is why the bands still band: a muted, inverted or accent surface resolves against the neutral palette too, so the page's rhythm is exactly what it will be in the brand. Nothing about the site changes and the exported pages are always the branded ones. The choice is remembered per browser.
- Pick a block by looking at it. The site builder's block picker was a list of words — "Simple", "Centered", "Split" — which tells you nothing about the layout and only gets worse as the library grows. It is a grid of real previews now: every result is the section itself, rendered in your brand's style guide. Families with counts down the left, a search box that ranks across a block's name, its family and what it does (questions finds the FAQ blocks), arrow keys and Enter. Changing a block leads with the alternatives — the rest of that block's own family, with the current one marked. Tiles render only as they come into view, so a library of hundreds costs what the dozen on screen cost.
- A finished ad is not a picture. An AI-produced ad lands in the brand library like anything else, and it carries its campaign's own words in its name, its tags and its premise — so when something went looking for a photograph of the subject, the ad won. Measured on WWF: a finished ad topped 34 of 38 subject searches, which is why a site about birds could be illustrated with a bird ad. Every producer now stamps what it made, and the three places that pick a picture for a slot — the site builder's image ladder, the image agent that fills an ad's photo slots, and the command bar's image step — discard them on that one field. No extra call, no looking at the image. They stay in the library and in search, where finding your own campaign is the point.
- The accent is a band, and no section paints its own. A section's surface is the page's choice, but three of them — the large statement, the call-to-action banner and the newsletter — arrived pre-coloured and ignored the surface chips entirely. They carry no band of their own now, and the vocabulary gains a fourth built-in surface: accent. Wrapping a section in it makes the brand's accent the surface and the colour the brand holds readable on that accent the type, with buttons inside knocking out — filled in the type colour, labelled in the accent, legible by construction. It reads whichever mode it sits in, so one band is right on a light page, a dark one and inside a colour scheme alike. The chip is in every section's inspector, in the site builder's rail and in what the generator may pick; the sections README, the export, the synced folder and
list_ui_sections'tonesall name it.
September 12, 2026
- Your colour schemes are web surfaces. Every custom colour scheme on a brand — the palettes its ads already flip between — is now declared as a surface class,
.scheme-<id>, in both the style guide and the shadcn kit. Wrap a section in it and everything inside wears that palette, so a colourful brand's pages alternate an orange band and a green band rather than only muted and inverted. The scheme chips sit beside the three built-in surfaces in every section's inspector; the sections README,list_ui_sections'tonesand the syncedbrand.jsonname them. - Whole pages from the sections, on alternating surfaces. The Sections tab now leads with four one-pagers composed from the library — a product launch, a campaign, an event, an agency site — stacked full-bleed in your brand's guide, so the guide is judged on a page rather than a specimen. Every section can sit on a surface: the page's own, the guide's muted background, or inverted (a dark band on a light page, a light one on a dark page) — a wrapper class the brand's stylesheet already declares, previewable per section from its inspector. Six new sections for the pages to draw on: stats (row, split), process steps, a large statement, a gallery grid and a newsletter banner. A page's code comes in both forms, installs as one block (
npx shadcn@latest add @<brand>/page-<id>), rides the export beside its sections, syncs under_shared/pages/, and reaches agents throughget_ui_page,GET …/ui-pages/{pageId}andbraaand design-system pages(CLI v0.7.3). - The type scale is web-only now. Editing a type-scale step on the Design System page no longer asks "this also moves your ads" and no longer marks every preview stale — no ad reads
--brand-text-*, so the step regenerates the base layer and bumps the brand version, nothing else. The import files type-scale rows under "Won't move ads" for the same reason. Spacing, corners, shadows and borders still repaint. - Mobile scale and a heading ladder. Typography tab, nothing selected: Mobile scale turns every rem step into a
clamp()that shrinks toward ×0.7 / ×0.8 / ×0.9 on small screens; Heading ladder derives h2–h6 from h1 by one ratio (major second … golden), floored at the body size. The import folds an h2–h6 that fit one ratio into that single row instead of five sizes. - Tune this theme. The theme select on the Design System page can now edit: with the toggle on, tag / class / button / structure / link changes land on that theme's own style guide over the brand's.
- The import reads more than the homepage. Up to three more pages of the site (
--page /about,pageson MCP and REST, chips in the dialog) — for the tags a homepage never shows. And a face the brand does not carry comes back as a row that mints a new type style for it, saying whether the font files are already in the library. braaand init— a new on-brand project in one command.braaand init <brand> my-siterunscreate-next-app(TypeScript, Tailwind 4, App Router), installs the brand's shadcn kit, exports the design system intosrc/brand/with four starter sections and the fonts, makesglobals.cssimportwith-tailwind.css, writes a/style-guidepage rendering every tag, class and section, and links the project.--stack plainscaffolds a plain-CSS site from the sections' HTML twins. Behind it, the start-a-project doctrine — new project → init; existing → link and copy; another stack → translate, never invent; always check — now lives in one text carried by the skill, the synced rootCLAUDE.mdand ausageblock on every style-guide read.braaand linkandbraaand check— the return channel. A project that copied a brand's export now registers itself withbraaand link(stack, the vendored files, the brand version it copied) and shows up on the Design System page's Export sheet under Projects, with how many versions behind it is;list_brand_projectsanswers the same over MCP.braaand checkis the off-brand linter: a deterministic scan of a project's stylesheets and components for raw colours that are not the brand's (with the nearest brand colour named), fonts the brand does not ship, unlayered tag rules that shadow the style guide, vendored copies whose header is behind the brand, and a missing or mis-ordered brand import — exit 1 on findings, so it belongs in CI. Same scan aslint_projectover MCP andPOST /api/brands/{id}/lint. Exported files now carrybrand v<N>in their banner so both commands can read which version a project copied.- Exactly what changed since version N. Every version bump keeps a snapshot of the brand config, so "pick up the latest brand" has a server-computed answer:
braaand design-system diff <brand> --from 14(orget_style_guide_diff, the REST diff route, or the History panel in the Design System page's Export sheet) lists what moved between the version a project copied and the brand as it is now — colours, fonts, tokens, tag and class rules, structure, motion — with before → after and plain-terms summary lines. Agents no longer work the diff out by hand from two files. - Sections — the style guide on real pages. Design System → Sections is a library of Relume-style marketing sections (navbar, hero, header, features, CTA, contact, pricing, FAQ, testimonials, logos, team, blog, footer, two variants each) built from the guide's own classes with shadcn primitives only where UI is real. Pick one and it renders in your brand's guide; the inspector shows what it uses (click a class to tune it), the code as TSX or a static HTML twin with a copy button, and a one-line install (
npx shadcn@latest add @<brand>/section-<id>— every section is a registry block beside the kit). A section carries no styling of its own, which is what makes one set on-brand for every brand. Agents reach it throughlist_ui_sections/get_ui_section, the RESTui-sectionsroutes andbraaand design-system sections; the export takessections=all(opt-in), and the synced folder ships the library once per machine under_shared/sections/. - Buttons answer a hover the way your brand does. The style guide gained interaction presets: pick how every button (and every link) answers a hover — a tint, a fill that slides in with a direction, a wipe, a lift with the brand's shadow, an invert, a growing underline, or nothing — on the Design System page's button, and the style guide's
.button, the shadcn Button and a set of generic.brand-hover-*classes inmotion.cssall render the same recipe on the brand's own motion timings. The style-guide import now reads a site's:hover/::beforerules and classifies the hover into a recipe (a fill translating in is a slide, a clip-path reveal is a wipe), so a brand whose buttons slide left to right lands with that move intact. Reduced motion snaps every recipe into its hovered state. - One import for a Tailwind 4 project. The design-system export and the synced folder now carry
with-tailwind.css(dist/style-guide.with-tailwind.css): it imports Tailwind first and the brand second, so a project'sglobals.cssbecomes one line and the "import the guide after Tailwind" rule is owned by the file instead of remembered. Every braaand stylesheet also leads with the layer order statement, so plain-CSS stacks resolve in order without declaring anything. Behind it, a fact worth knowing: cascade layers order by first declaration, so a "middle layer" declared after Tailwind's own would land after every utility and silently beat them — which is why the fix is a file, not a layer. - The UI Kit is now the Design System page. Brand → the "…" menu → Design System (the old
/ui-kitaddress forwards). One Relume-style style guide — base HTML tags, colours, radius, effects, structure classes and the shadcn components on one page, with a sidebar that changes them — replacing the UI Kit gallery and both brand-config sections it duplicated. - Your brand as a web style guide. The design-system export and the synced folder now carry
base.css/utilities.css(anddist/style-guide.css): the brand's base HTML tags — headings on the type scale in the heading face, body copy, links in the accent when it reads, quotes, lists, inputs, the bare button — plus a closed set of named classes (heading-style-h1,text-size-large,padding-section-medium,container-large,button is-secondary, …) on honest Tailwind 4:@layer base+@utility. It derives entirely from the brand you already configured, so every brand has one today;styleGuideonupdate_brand_configis the override layer. - The Design System page has its tabs. Typography · Colors · UI Elements · Radius · Effects · Structure, Relume-style: every HTML tag and every named class rendered for real in your brand's stylesheet, each with a pink chip naming where it comes from. Click one and the inspector shows what it resolves to and why — from your brand, calculated from it, or the house default. The shadcn gallery is the UI Elements tab; Export holds the install commands, the emitted CSS (Tailwind 4 or plain) and your own variable names.
- Typography is editable on the Design System page. Click any heading, paragraph, link or list and change its face, weight, size on the type scale, leading, tracking, case, colour and margins in the sidebar — each control says where its current value comes from, and a reset takes it back. A type-scale step itself can be changed in place; that one wears an amber ADS badge because the scale also drives your ads, and the page asks once before the first such change.
- Import a style guide from a site or a stylesheet. Design System → Import takes the brand's website address or a pasted / dropped stylesheet (a Webflow export, a site's CSS, a Tailwind 4 sheet, a
tailwind.config) and proposes changes to the style guide — a reasoning pass, not a CSS parse: it says what fits, what the stylesheet leaves out, and extrapolates the rest (anh1alone becomes the base forh2–h6in the site's own proportions). Every proposed row shows before → after and why; the rows that only touch the web come ticked, the ones that would repaint your ads come unticked. The site scan is optional on purpose: the guide a brand already has from its own fonts and colours is often the better seed. For agents:get_style_guide+propose_style_guide(which replacesanalyze_brand_website— the old name drops out of installed skills at their next sync),braaand design-system show | import. - Buttons, structure, corners and shadows are editable too. The button family gets a shape panel and a look per variant (fill, text, border as brand roles, or a light/dark pair); containers, section padding, the gutter and icon sizes live on Structure; a corner or shadow step edits in place on Radius / Effects. The old Design System section in Brand is retired — everything it did is on the page now, and its custom variable names sit in Export.
September 10, 2026
- The Workflow Engine, opened like an editor. The workflows page is a black card gallery now, in the Creatives page's shape: every run is a card showing a live map of its pipeline (the wires flow while it runs), with its collection, creatives, cost, how long it took, who started it and when. New workflow opens a blank canvas at once; the arrow beside it lists the recipes, and a Recipes page holds the full shelf with hide / share / delete. The Quick-brief form is retired — ⌘K on a blank canvas is the quick brief. It is called the Workflow Engine everywhere now, nav and docs included.
- A pipeline that won't launch says why. Pressing Run on a graph with a problem used to answer
[object Object]— it now names the reason, and selects the node it came from so you can see it on the canvas. Adding nodes to a finished run and pressing Run is the right move, by the way: it picks up what you added without re-buying anything already finished. - Animate a photo. The Source node takes images now — from the asset library or dropped straight from your computer — and each becomes a creative the run starts from. That's the missing route from a picture to everything the factory does with a creative, and in particular: Source → Video animates it. Set the Video node's attempts to a few and you get several takes to choose from in one pass, which is usually what video generation needs.
- Which generation node does what. All three call the same models, so the node descriptions and the docs now lead with what comes out: Generate image makes a picture, Generate video makes a clip from words alone, AI Produce makes a finished ad with the copy typeset into it — and Video isn't a generator at all, it animates a creative you already have.
- Upload straight from the picker. The asset window a node opens (pinned images, reference images) takes an Upload button and a drop-anywhere target, so "the picture I want isn't in the library yet" no longer means leaving the canvas and losing the node you were setting up. The image is pickable the moment it lands; its automatic tagging finishes in the background.
- Newest assets first. The asset library sorts by most recent by default — on the Assets page and in every picker window — with Oldest and Name in a sort control beside the filters. Until now the order was whatever the database happened to return, so a fresh upload could appear anywhere in the grid.
- The prompt box grows with the prompt. Every text field in the workflow sidebar expands as you type or paste and can be dragged taller by its corner. Size one by hand and it stays where you put it.
- Pin a creative as a reference. The Generate-image and Generate-video nodes take reference creatives beside reference images: point at a finished ad and every take references how it looks. It's rendered fresh each run, so edits to that creative carry over — no exporting and re-uploading a PNG.
- A long generation shows progress. A creative waiting on a video generation carries a progress bar along the bottom of its card. It eases toward the end rather than filling and stopping, so a slow run reads as still working instead of stuck.
- An empty lane is connected to its node. A producer with nothing in it yet — a Source before you pick seeds — used to show its lane floating unattached beside it.
- Picking people scales past a handful. The People control on the generation nodes is a searchable list instead of a pill per character — a sixty-person company no longer fills the sidebar with names. Who you picked still shows as pills underneath, one click to remove.
- Copy and paste nodes. ⌘C / ⌘V, or ⌘D to duplicate in one go — also a Duplicate button in the node's panel. Select several nodes (drag a box, or ⌘-click) and the whole cluster copies with its internal wires intact. A pasted node keeps every setting and comes in fresh: wired to nothing, having run nothing, and with anything belonging to a run cleared — a released Hold comes back closed.
- A generated video is a creative you can build on. A take from the Generate-video node lands as a real document with the clip as its live background: the first frame shows on the canvas, Play plays the video, and you can put a headline, a logo and a call-to-action on top and render the whole thing as one motion clip. Its still is extracted from the video itself, so cards, boards and previews stop being blank.
September 9, 2026
- An animated SVG's timing lives with the file. "This mark's finished frame is at 1.2 s" is true wherever you place the file, so it is set once in the asset library — open an animated SVG in Assets and the Animation panel gives you In / Out / Loop / Before / After and the still frame, over a preview seated on the frame you are choosing. Every creative that uses the file inherits it, and any single element can still override any part of it.
- Animated files are findable, and stop looping at you. They pick up an
animatedtag on upload, so the Tag filter finds them, and the asset grid shows each one on its still frame instead of a wall of unsynchronised loops. - Say which logo fills which slot. The Logos section has a Default mark per slot grid — your shapes against Dark / Light / Multicolor. A mark you name always wins that slot, over shape, background and priority alike; leave a cell on Auto and nothing changes. It is how an animated logo becomes your real one: assign it, and every layout using that slot gets it — animated when the design plays, frozen on its still frame everywhere else.
- Animated logos are added full color. Recoloring an SVG rewrites every fill in it, including the ones its own animation is driving, which usually breaks the mark. Adding one from the library now files it full color instead — one click, no surprise. Flip it back on the logo's card if yours recolors cleanly.
- Screenshot any page, cleanly. Paste a URL into the Image Tool (or ask an agent) and get a full-page screenshot with no browser around it — the cookie banner clicked away, lazy images loaded, animation held still so two captures of the same page match. It tells you which banner it dismissed. Free, no credits.
- Screenshots of a page, glued back into the page. Drop a pile of scrolled screenshots into the Image Tool and it finds the overlap between them and joins them into one tall image — the thing that used to mean nudging layers in Photoshop. A sticky header repeated in every shot is kept once, a sticky cookie bar is dropped, a duplicate shot is skipped. A seam it cannot place is joined straight on and says so, rather than guessing.
- Both work from anywhere.
capture_pageandstitch_imagesover MCP,braaand images captureandbraaand images stitchon the command line, or the REST routes — so "use braaand to fetch me a screenshot of this page" is one call. - Image generation moved to GPT Image 2.5, and got five times cheaper. The new default is GPT Image 2.5 Flare (OpenAI, through OpenRouter): about 5 credits a picture at medium against the previous 24, at the same ten seconds, with OpenAI's text rendering. GPT Image 2.5 Sunburst is registered beside it for work that wants more care over speed. Quality is a real price knob again on both: roughly 2 / 5 / 18 credits at low / medium / high.
- One thing to know before pinning them in a pipeline. The GPT Image 2.5 pair generates in three shapes only (square, landscape, portrait), so a 4:5 or 9:16 ad format is cropped from the nearest instead of generated at the exact ratio. Nano Banana covers all four canonical formats natively and stays available: pick it on an Imagery or AI Produce node when the layout depends on the full frame. Editing a photo is unaffected either way, since an edit keeps the picture's own shape.
- MiniMax M3 is available as an agent model. A cheap million-token option (about a quarter of the current default's price) you can point a single agent slot at from the admin panel.
September 8, 2026
- An animated SVG is a clip you direct, not one that just runs. Drop an SVG that animates itself (its own
@keyframesor SMIL) onto the canvas and it appears on the K timeline as its own bar — drag it to say when it starts, and drag its right edge to trim which part of the animation plays. Appearance → Motion adds the rest: Loop (as the file, loop, or play once), In / Out in seconds, and which frame is parked Before and After the bar — so a mark can draw itself in when the playhead reaches it, or sit finished from frame one and draw itself out at the end. - A still frame you choose. An animated SVG used to run on the wall clock whenever nothing was playing — the canvas looped at rest, and the same creative rendered twice came back as two different pictures. It is now frozen on a still frame (Appearance → Motion), defaulting to the end of its run — the finished art. Every PNG of it is reproducible, and the canvas is a still again until you press K.
- The editor opens on the canvas. A creative with a rendered clip lands on the artwork, not the player. The clip is a click away: ▶ in the toolbar, the dot on its format tab, or the new Rendered clip row in the Save menu.
- Your rendered clip, where output lives. The Save menu now shows a clip that already exists for this format — whether it is up to date or the design has changed since, when it was made, and a one-click download, with Play beside it. Freshness is exact: the render stamps what it was made from, and the editor re-checks on every edit.
- Cards show the ad, not frame one. A creative with a clip shows its poster in the gallery and on boards, and plays only while you hover — the first frame of a clip that animates in is an empty canvas, and that is what was showing.
- Line height is called Line height. The editor's type controls name it plainly instead of "Leading", with alignment on its own row.
- The motion timeline reads like the Layers panel. Its rows are in layer order, topmost first, so reordering a layer is the one place that changes it — and dragging a bar no longer makes rows jump around underneath the pointer.
September 7, 2026
- Galleries deal in. Creatives and templates now arrive with a short, staggered entrance as they scroll into view — once per card, quiet on scroll-back, a plain fade if you prefer reduced motion.
- Previews that stay put. Every creative and template now keeps ONE durable preview per format that belongs to the document itself — it survives brand-config saves, asset edits and renames, and is only ever replaced by a newer render. Rendering moved out of page loads entirely: a queue with a capped pool of workers renders a document once after your edits settle (and waits while you are still typing in the editor), galleries paint from what already exists in one query, and a card without a picture yet says "rendering…" and fills in on its own. A brand-wide change (new colors, a swapped font, an edited photo) marks the previews it could have touched as may be outdated instead of re-rendering the whole gallery at once; they refresh quietly as you look at them, and the refresh button asks for a fresh render whenever you want one. Admins get a queue view under Admin → Previews.
- The inspector, redesigned for the basics. The editor's right panel now names what you selected (icon, name you can click to rename, role, and a chip counting this format's own values) and puts the daily controls on one screen: the text, its type and color, a picture with a live preview and its crop, the position. Everything else folds to a one-line row that states its value — Spacing, Effects, Motion, AI (edit, replace, animate), the slot flags, data binding and agent guidance — and remembers whether you left it open. Templates open the authoring rows by default; creatives keep them closed. A button's controls are finally in one place (style, fill, text, radius, padding), a logo shows only what applies to a logo, and color is one row of swatches with Auto and Inverted first and a custom door at the end. Labels are readable again (11px, full contrast), scope chips appear only where a value deviates or when you hover, and the panel with nothing selected leads with View and Motion, with guides, clusters and BrandFit as summary rows.
- Your own motion presets. Brand config → Motion now lists every preset with a click-to-replay chip: duplicate a system one into a brand preset you can edit — the pose it comes from, wipe, zoom and pan for pictures, duration, ease, loop, what it applies to — or start a new one. A brand preset shows up wherever a preset is picked (the role table, an element's Motion row, an agent's
motionpin) and ships in the synceddist/motion.cssas its own class. The role table also gained the Split column, so a brand can say its headlines always rise word by word. - The clip as a GIF. Export… now offers GIF beside PNG / JPG / WebP: the same frame-by-frame capture as the video, encoded as an animated GIF with a proper per-clip palette — for email, docs and chat where a video won't embed. 12 or 15 fps and a long-edge cap (480 / 720 / full); renders in the background and downloads when it lands. Agents:
render_motionwithoutput: "gif",braaand render motion --gif. - Words rise in one by one. A text's reveal can now run By word or By line (Appearance → Motion in the editor,
spliton the element's motion pin or a role's default for agents): each word enters on the brand's tight stagger, each line on the base one, and whatever follows waits for the last word. The still is untouched; the video and HTML exports carry it. - The reveal lands in one move. Elements that rose in used to settle and then nudge up a last step — the house reveal's mid keyframe (where the blur clears) pinned the position too, and a browser eases each keyframe segment on its own. The mid keyframe now names only the blur; position, scale and opacity run on one curve from start to rest. Every export and the synced
motion.csscarry the fix. - The animated version is a layer you can see. A picture with a clip shows an Animated · 6s sublayer under its row in the Layers panel, with a toggle to show the still instead on that format (the clip is kept) and a × to remove it.
- Animating a background is durable end to end. The clip keeps rendering after you leave the editor or close the tab, the pill by the orb shows it, a toast says when it is ready, and it lands on the element the next time you open that creative. A picture Seedance refuses (it won't animate a real person) fails at once with the reason and a one-click retry on Kling.
- Animate the picture. Select a background image in the editor, write one sentence about what should move — the lion slowly turns its head toward the viewer — and press Animate. A short clip is generated from the picture exactly as the layout crops it (Seedance 2.5 by default), sized to the document's clip length so it loops with the choreography, and lands on that element for the format you are looking at. Only the picture moves: copy, logo and buttons stay exactly the stills they are, on top. Plays in K, the Video export and the Motion node; the still never changes; the card says the credit cost before you press, and model, length and resolution sit behind Advanced. Agents get the same as
animate_element+get_video_jobover MCP andPOST /api/videos/animateover REST. - Clips travel everywhere a still does. A creative with a finished clip (a Motion render or an AI video take) now plays on hover in the Creatives gallery and on boards, arrives in Slack as the mp4 instead of a PNG (the header says how many came as video), rides run and board manifests as
videos[], lands in a bulk download beside its stills, and shows up asvideoFormatson creative listings for agents. In a Slack thread, "gör nr 2 animerad" renders that creative's own motion and posts the clip back.
September 6, 2026
- Motion — play a creative as a clip. Press K in the editor (or the clapperboard in the toolbar) and the creative plays: the photo background drifts toward its focal point, the copy rises in reading order with the house stagger, the button pops and gets one nudge once the intro settles. Press K or Esc and the canvas is exactly the still it was — motion describes where things come from, never where they sit, so the PNG, the previews and brand-fit are untouched.
- A brand's own motion identity. Eases, durations, staggers, presets and per-role defaults resolve from
brand.motionover the system signature (the same reveal every synced preview already uses); a theme can layer its own over the brand's. Two brands on the same template move differently, and an agent reading the brand reproduces the same curves. - The clip lives in the Guide panel; a pin lives on the element. Guide panel → Motion sets what moves (All / Background only / Off) and how long the clip runs; Appearance → Motion on any element pins a different take (Rise, Fade, Pop, Slide, Wipe, Grow, Draw — or a drift for the background) or takes it out, with the usual per-format scope chip.
- Agents speak the same three fields.
motionon elements (and per format),motionon documents,motionon the brand config, over MCP, REST and the palette. Video and HTML export and the Motion pipeline node build on this plan next. - Brand config → Motion. A section for the identity itself: the four eases (with a live curve), the timings and staggers, the clip length, and a table of what each role does — with a replay that runs the exact choreography an ad would. Untouched values follow the braaand signature; each override has a one-click reset.
- The Motion node. Drop it after a Score and Route and every creative that clears the bar comes out as a clip in the brand's motion — an mp4 per format, the still original beside it. Background only by default (the photo drifts, the copy stays put) or Everything (the full choreography). Deterministic and free: no AI model, no credits — the Video node is the one that asks a model to invent motion. A layout with nothing to animate is skipped by name, never shipped as a six-second still. The Animate the winners example on
/factory/newis the shape. - The clip as a file: video and animated HTML. The Save menu's Video row renders the creative's motion to an H.264 mp4 of the current format in the background (24 fps, silent, up to 30 s) — every frame a real screenshot of the same plan the canvas plays — and lands it on the creative as a take, playable from the format tab and looping on the board's card. Animated HTML downloads the clip as a self-contained HTML5 page. Agents get the same over MCP (
render_motion+get_motion_render), REST (POST /api/render/motion) and the CLI (braaand render motion). No credits. - The synced folder and the export carry motion. Every brand's
dist/now shipsmotion.css(its presets as@keyframes+.brand-motion-<preset>classes),motion.json(each ease as CSS, numeric bezier and GSAP path, plus timings, staggers and per-role defaults) andmotion.js; the design-system export shipstokens/motion.css,motion.cssandmotion.json, and Tailwind getsease-brand-enter-style utilities. The preview shell now animates on the brand's own curve (exact, via GSAP CustomEase) instead of one shared house reveal — the old_shared/motion.*files are gone.
September 2, 2026
- Five new library layouts for voices and takes. Plakat (a giant fill-width hook in the accent color on a solid panel — the loudest text-only layout), Photo Plakat (the same over a portrait), Split Portrait Hook (panel beside a full-height portrait), Quote on Portrait (exact words in a knockout over a bottom gradient, with name and source lines — one card per person, ready for For each and Research) and Round Portrait Quote (a circular portrait on the scheme panel). All follow every color scheme, and they ship together as the new Voices & takes pack in the Template Library.
- Template budgets now describe the design. Every library template's font-size band sits ±5% around the size the designer set, the copy budget is the placeholder's own length ±5%, and the line limit is the lines the placeholder really takes — so the AI writes to the template's shape instead of filling a loose envelope. Fill-width lines keep their wide band, because there the copy's length is what sets the size.
- Accent-colored type on any brand. A text element in the
accentrole now renders in the brand's heading face when the brand hasn't defined a dedicated accent type style — the color still follows every scheme's accent.
August 29, 2026
Make editable — a generated ad becomes a real document. An AI Produce ad is one flat image; now it can be rebuilt into an editable creative whose layers are resolved to the brand: the drawn logo becomes the brand's actual logo asset at the drawn size, each text block becomes a real element with its role set and the copy transcribed verbatim (so it renders in the brand's own faces and follows every scheme flip), the CTA becomes a real button in the brand's pill. Think Image Trace, aimed at brand elements instead of vectors.
Colors are measured, then resolved. Pixel measurement decides every color, and each one resolves up a ladder: a near-black heading gets no color at all (the cascade owns it), an off-orange CTA snaps to the brand's named orange as a
var(--brand-*), and a color the brand doesn't have is honestly kept as the unique value it is.The background rides the imagery ladder. The pictured subject is matched in the brand's own library first (and reframed by its focal point so the subject lands where the source ad had it), then stock — or a clean-plate regeneration: the original artwork inpainted free of text, logo and UI, so the exact approved scene survives as a real background layer.
Three doors, one engine. A Make editable button in the creative editor on any flat generated ad, a
Make editablepipeline node (the natural wire after AI Produce — flat ads in, editable siblings out, originals stay), andmake_editablefor agents over MCP.Before/after on every rebuild. A rebuilt creative carries an Original toggle in the editor: flip the flat source ad over the canvas, compare, flip back and fix the details. It floats bottom-center in preview mode too (press P), where comparing finished pixels belongs.
Pressing Make editable feels like the AI taking over. The chrome folds away, a centered pill narrates the real stages as they stream from the engine (reading the ad, detecting the layers, resolving the background, calibrating type), and you land on the finished rebuild in preview with the compare toggle ready — press P to start editing.
Integrated artwork stays integrated. When a cutout, collage or silhouette effect is blended with the background as one composition, the rebuild stops swapping in lookalike photos: the background regenerates from the original artwork with the effect kept, and the exact drawn artwork rides on top — so the design's signature move survives whatever the image model does.
Scrims and gradients survive the rebuild. A dark readability band comes back as what it is, not a slab: plain fades use the house gradient styles, a held or unusually strong one gets a custom style minted to match the measured direction, opacity and hold, and semi-transparent panels keep their measured opacity.
Inset images come back pixel-perfect. A clipped graphic or card photo inside the ad is cropped straight out of the source; when text or UI overlaps the crop, the region is AI-regenerated with the overlays removed first.
Edit or replace any image with AI, right in the inspector. Select an image element and the new AI card takes one prompt with two verbs: Edit with AI transforms the current photo, Replace with AI generates fresh artwork at the slot's size. Describe only the artwork — text and logos are separate layers.
The Creative Context Library. The ad reference library grows a second half and a name: beside the ads you collect, the library now holds knowledge — papers, books, frameworks, instructions. Paste a text, drop a Markdown file, upload a PDF (Cialdini's principles, a copywriting formula, a chapter worth keeping, your house writing rules) and a one-time distill reads it into usable direction. Select docs on a brainstorm and their thinking steers every concept.
Principles become the concept angles. When a knowledge doc genuinely enumerates named principles, distilling extracts them as lenses — and lens mode hands them to the brainstorm: seven Cialdini principles become seven concepts, one built on reciprocity, one on scarcity, one on authority. Turn it off to keep the built-in angles while the doc still rides as context.
A bookshelf, not a file list. Every knowledge doc wears a poster — a book-cover card derived from what kind of document it is, so papers, books and rule-sheets read as distinct classes at a glance. No image generation, no cost, and it can never go stale. Open one and it's an article: the material written out as a readable piece, under a header band with the author, the topics and a one-sentence ELI5 of what the thing actually is.
Filters that match how you look for things. Ads filter by hook (an ad is usually layered, so the analysis now captures up to three), mood (deadpan, urgent, playful…) and mechanism family (format-hijack, double-read, before-after, confession…) — the family, because a mechanism's name is unique to its ad by design and made a useless dropdown. Knowledge sorts on two honest axes: Type (what it is) and Topics (what it's about). Every filter option is derived from what your library actually holds, so there are no dead chips.
Your own ideas get judged too. Paste them into a brainstorm and each is faithfully structured into a concept of its own — never re-invented — marked as yours and ranked by the judge beside the generated set. Your idea scoring 88 against the AI's best 74 is a real answer.
Steer which references get borrowed. A brainstorm can filter the library (tag, starred, hook, mood, family, or a search query that replaces the brief-derived one), take all matching references at once, or pin exact ones from a large thumbnail picker. And when a brief's wording happens to match nothing, the most transferable references step in instead of a silently unborrowed brainstorm.
The library as one file. Export the whole analyzed library as a single self-contained markdown file — every ad's one-line gist, its mechanism, and the devices to borrow, with the borrow rule written in. That's the clean-slate handout: paste it into any AI tool with a brief and ask for concepts, no braaand account needed. It also syncs into every brand folder as
idea-library.md.Watch the run you just started. Every surface that launches a pipeline — the chat, the API, MCP, the CLI, a Slack order — now hands back the live canvas link alongside the board links, and renders all three as labeled links that say what each one opens and whether it needs an account.
August 27, 2026
- The Idea generator. Upload other people's ads — screenshots from the feed, press ads, posters — and each is read into a structured record built around the reusable mechanism underneath it, written so it survives being lifted onto a completely different subject. Ingest is instant and free (duplicates caught by hash, palette measured from the actual pixels); the analysis runs on its own. The library is shared with your team, across every brand.
- Brainstorm concepts from it. Ask the chat for ideas and you get a set of structured ad concepts grounded in your library — each generated in its own pass with its own angle and its own exclusive slice of the library's devices, so the set genuinely diverges instead of paraphrasing one idea. A judge then ranks them, and every borrowed device cites the ad it came from.
- The Ideas node. The same engine on the canvas: wire Ideas → Templates and the chosen concept steers the template search and the build's copy and image direction. Every concept also renders as its own card on the node's lane — wire the whole brainstorm, or one card for exactly that concept.
- The Hold node. A human review gate anywhere in a pipeline. The run reaches it and stops, cleanly, with everything upstream finished; look at what it made, then press Continue and the rest of the graph runs. Nothing downstream is bought until you say so.
- AI Produce — finished ads with no template. Wire concepts into it and each becomes a complete generated ad, grounded in the brand two ways: a rendered brand board rides along as the reference image (the logo, the exact colors, the brand's real letterforms) and the written guidelines ride in the prompt, with the concept's headline and CTA typeset verbatim. The output is ordinary creatives, so Score, Route, Board and Slack compose unchanged.
- Tell the AI what your brand's images should never do. Brand config gains an AI generation section: a standing direction that rides every generation for that brand ("never draw a box around the logo"), plus an honest overview of exactly what the models receive — the actual brand board image, and the actual guidelines text.
August 26, 2026
- Recipes are yours, your team's, or braaand's. Saved pipelines now carry a visibility: Team (everyone with brand access) or Private (yours alone — never listed, never orderable from a shared Slack channel). The picker groups them into three shelves — braaand originals, Team, Private — and a built-in you never use can be hidden for your brand instead of cluttering the list forever.
- Change a recipe and save it back. Open a saved recipe, edit the graph, and "Update ‹recipe›" writes it back in place — the loop that was missing, since a same-name save used to be refused. Customizing a braaand original forks it under your version, which then stands in its place on the shelf.
- Know which recipe made what. Every run and draft opened from a recipe wears a "from ‹recipe›" badge on its canvas and in the Workflows table, so the connection survives renaming or deleting the recipe.
- The factory's front door looks like one.
/factory/newopens as a real page — a hero, then the recipes as cards, each showing a mini map of its actual pipeline (real nodes, real wires, animating on hover) instead of describing itself in a sentence. Name the run before it opens, and the name carries through to the board and the collection. - A canvas that shows its work. The pipeline canvas got a visual pass: rounded cables instead of circuitry elbows, a light that flows along a wire while that step is actually running, a lit-from-within loading card that ends when the picture lands (not when a status flips), and a glow on the node doing the work. The add-node menu is searchable with a description per node, and Run is a split button — run this graph, start a fresh run from it, or save it as a recipe.
August 25, 2026
- Creatives and Renders group by collection. Both galleries now render one section per collection, ordered by whatever sort you've picked, with everything unfiled last. One sort control drives the cards and the sections, so "last updated" puts the collection you touched most recently on top for free.
- Brands onboarded from dropped files get their fonts. The path that builds a brand from a folder of files skipped a step every other upload path performs, so a variable font could land in the library and be used for nothing, a near-square logo could be filed as a wide wordmark, and a multi-color mark could be tinted into a white square. All three came from one missing stamp; every writer now performs it.
August 24, 2026
- AI video generation. A new Video node animates a finished creative into a short clip — the rendered creative is the first frame, so the motion starts from artwork you already approved. Give it a motion note in plain words, pick the model, the resolution and the clip length, and choose which aspect ratios get their own take. Clips play in the editor and loop on review boards.
- Several takes, then pick one. Video regularly needs a few tries before one lands, so the node takes a count: three attempts on the same creative mint three separately reviewable versions. Put a Board after it and choose the one that works.
- Deleting a brand is a ceremony. The confirm is now a full-screen farewell — the orb comes apart and falls away while you type the brand's name to confirm. Destroying years of brand work should not feel like dismissing a dialog.
August 23, 2026
- Every id is a link you can paste. Any braaand id — a creative, a board, a collection, a workflow — now resolves everywhere: paste one into the chat and it opens the thing, paste one into a Slack thread and the follow-up acts on exactly that creative, or share
braaand.ai/r/<id>and it takes whoever has access straight there. Ids sit as click-to-copy chips in every sidebar, and delivered Slack images are labeled with theirs. - Illustrator logos onboard correctly. An SVG that declares its colors as style rules — the standard Illustrator export — read as having no colors at all, so a two-color mark like a panda could onboard as recolorable and then tint to an empty white square. Those colors are counted properly now.
- A logo's shape decides its form. Near-square marks were being filed as horizontal wordmarks based on their filename, which made them render tiny in previews and letterboxed in fresh layouts. Form is now read from the artwork's actual dimensions, and an impossible claim gets corrected at onboarding.
- Two brands can share a name. Onboarding a brand whose name is already taken by someone else's account used to fail outright; it now takes the next free address (
wwf-2) and carries on. Re-onboarding your own brand still updates it in place.
August 22, 2026
- The board's chat is the same chat as everywhere else. Review boards had their own separate assistant; now the command palette is the board's chat. It knows which cards you've selected, refers to creatives by the number on the card, and every tool you already have works there.
- Ask for changes with a reason. The amber button on a shared board no longer just flags a card silently — it opens a note on the card, and posting the note is what sets the verdict, so a change request can never arrive without an explanation. If a conversation already exists on that card, it opens the thread instead.
- Boards tidy themselves, once. A single placement rule now decides where a card sits: arrivals get a free spot and nothing already placed is ever moved, and Tidy up re-packs a drifted board by what each section actually means. Cards are laid out by their real shape, so a story and a banner on one board no longer overlap.
- Slack follow-ups understand a conversation. Reply in a delivery thread and braaand acts on what you said: several different edits in one message each get their own branch, "use nr 5's copy on all" transfers copy across, and asking for variations makes safe ones. It reads the thread it's in, so answering its own question with "8" works, and it replies in the language you wrote in.
- Refinements don't pile up copies. A tweak to something braaand drafted in that same thread now updates the draft in place instead of minting another creative — so an edit chain stays two rows (your untouched original, and the living draft), and every follow-up lands on the same review board with the same link.
August 21, 2026
- Type that fills to the guides. Templates can now mark a text element as fill-width: the layout engine sizes the line automatically so it runs exactly flush to its column — the poster move where a one-word hook sets enormous and its support line spans the same edges in smaller type. Nobody picks the size; the copy's length is the design. Short copy grows, long copy shrinks, and the line can never wrap. See how templates carry layout intent for how it composes with guides and clusters.
- Event Speaker Duo. A new system template traced from a hand-made original: a giant fill-width hook ("ONSDAG!"), one support line in the same display face, two speaker portraits side by side, and a quiet series-and-date footer. The portraits and footer stack inside the text cluster, so however big the hook sets, everything below moves down to make room — no overlaps, on any copy. Ships in 1:1, 4:5, and 9:16 (a banner can't carry this much, on purpose).
- Briefs are source material, not the ad. Paste a LinkedIn post as a brief and the copywriter now extracts the substance and discards the post mechanics — the sign-up link, "anmäl dig här", the pointing emoji. A deterministic guard additionally blocks URLs from ever shipping in a creative (an image isn't clickable; the caption carries the link), and the doctrine is one message per creative: a punchy hook with a support line, never a summary of the brief.
- Named people get their real faces. When a brief names people whose portraits live in your library — speakers, candidates, guests — braaand now finds them deterministically, matching your person-tagged photos against the brief, and the image pass treats those portraits as required picks: never a stock lookalike, never a generic photo. Template selection joins in: a brief naming two speakers prefers a layout with two portrait slots.
- Drop a picture on the chat. A dropped image with a directed ask ("update Reform Society's brand colors to these", "what colors are in this?") now rides the conversation as something the AI can actually see, instead of being treated as brand-onboarding material. Dropping a brand kit to onboard works exactly as before.
- Brand colors update with a confirm card — never by accident. Ask for a color update from a palette image and the AI reads the swatches (printed hex codes are copied verbatim, never estimated) and hands back a proposal card: the new palette with new/changed/removed marked, any color-role reassignments as before→after swatches, and a Confirm button. Nothing is applied until you click it, and what you confirm is byte-for-byte what gets applied. The card also warns if replacing the palette would strand a color scheme that references a removed color.
August 17, 2026
- Large images upload again. Photos over ~4.5 MB were rejected instantly at the hosting platform's edge — before braaand's own code ever ran — so a folder of brand photography failed with a bare "upload failed" while small icons went through. Every in-app upload surface (the Assets page, the editor's canvas drop, logo uploads, the palette's save-to-library) now sends big files straight to storage the way onboarding always has, with only a small handoff through the server. Files up to 50 MB each work everywhere.
- Fonts with abbreviated professional names resolve correctly. Foundry files named the Adobe way —
Medium,MediumIt,Demi,UltLt,HeavyIt— now match their weights properly:Demiis a 600,UltLta 200, and the bare-"It" italics no longer win over their upright siblings (a brand's weight 500 could previously render in italic because the italic file happened to sit first in the library). - Button text can never onboard invisible. Brand guidelines often describe the CTA with one color, and the analysis could write that same color as both the button's fill and its label — an invisible button. Onboarding now checks the pair and, when the label would vanish into its own background, swaps in the brand color that actually reads on it. Deliberate hand-picked choices are never touched.
- A generic campaign badge, so the badge is never a photo. Campaign Badge Hero's badge slot used to fall back to the brand's default photo when no badge artwork existed yet — a landscape floating in a badge box. The slot now ships with a built-in badge: a scalloped sticker seal with a star, tinted in the brand's accent color. It renders until a real campaign badge is generated or uploaded, and every automated pass still replaces it with campaign-specific artwork exactly as before.
- A real Template Library. Browsing the shared catalog used to be a text list; it's now a proper library page per brand — every layout as a card, previewed in your brand (with a toggle back to the unbranded original), searchable and filterable by purpose, kind, and photo-led vs text-only. Click as many as you want and add them in one go; layouts you already have wear an "Added" badge. It replaces the old dialog everywhere: the Templates page's "New Template" now leads here.
- Template packs. Curated bundles you can take on in one gesture: the Event pack (save-the-date through the day-after thank-you), the Campaign pack, the Parody pack (the fake-UI concept layouts), and a small Starter pack. Selecting a pack selects its members — deselect any you don't want before adding.
- Template families — the AI picks the right sibling. Layouts that are variants of one design (Hero Statement and its long-copy sibling Campaign Statement, the two save-the-dates, the two thank-yous) now share a family, and campaign runs pick at most one member per family — chosen by which copy budget fits the brief — instead of shipping the same design twice. Enforced structurally, not just asked of the model, and the dropped slot is backfilled with a genuinely different layout so the batch never shrinks.
- Variable fonts are a first-class font. Drop in a variable file —
Inter-VariableFont_wght.ttf,InterVariable.woff2, a foundry's-VF.otf— and braaand reads the file itself to see which weights it covers, instead of guessing from the filename (which never carries a weight keyword, so a variable font could previously land in your library and be used for nothing). It registers as one family across its whole range, and the styles that use it say so: "any weight 100–900". - Every weight, from one file. A style set to 600 now renders a true 600 even if you only ever listed 400 and 700, and the file is loaded once rather than once per weight. For brands already carrying a variable font that's a third of the font payload in every render — WWF's Open Sans went from three embedded copies to one, pixel for pixel identical output.
- The same file, once, in your build bundle. A synced brand's
dist/fonts.cssemits a single ranged rule for a variable family, andbrand.jsonsays which span the file covers — so a coding agent building your site copies one woff2 and gets every weight, instead of declaring eight rules pointing at the same megabyte.
August 16, 2026
- Take something out of a picture. The Image Tool gains a Select tool and an Erase tool. Click a color with the wand to grab the area around it, refine it by hand with the brush (hold Shift to add, Alt to take away), then choose what happens: erase it into real transparency, fill it with a color to cover a watermark or black out a detail, keep only what you marked, or crop to it. A feather setting softens the edge so a cutout does not read as scissor work, and the selection survives an edit so you can look at the result and go again.
- Undo that covers the whole edit. ⌘Z and ⇧⌘Z now walk back through everything in the image tool, not just the last operation: slider moves, crop boxes, applied transforms, keyed colors, erases and AI results alike, up to fifty steps. One gesture is one step, so dragging a slider from end to end is a single undo, and moving the view never costs you one. Both buttons live in the toolbar at all times instead of appearing and disappearing.
- Agents can name a region too. The shared editing vocabulary gains
maskEdit: give it a rectangle in the image's own pixels and erase it, fill it with a color, or keep only what is inside it. Free and exact, over MCP (convert_image) or the CLI (braaand images convert --mask-rect). Every surface now teaches the same three way choice, so nobody spends credits by accident: a flat color you can point at is Remove color, a rectangle is a region edit, and only a photographic edge needs the AI cutout. - A real image editor. The Image Tool is rebuilt as a full-screen dark editor in the same shape as the creative canvas: a toolbar, a panel that shows only the tool you're holding, and a collapsible inspector. It gains the operations a finished image usually needs — mirror, straighten by a degree or two, trim a uniform border away, resize to exact dimensions (fill and crop, or fit and pad with a colour of your choosing), sharpen, blur, and flatten transparency onto a colour. Crop and straighten now apply: press the button and the canvas shows the actual result, corners and all, instead of a tilted preview you can only judge after saving. Transparent images sit on a checkerboard, so a cutout reads as a cutout.
- Remove the background of a photograph. A new Cut out tool lifts the subject away and leaves a real transparent edge — for photos, where there's no flat colour to key. Name the subject when more than one thing could be it. When the background is a flat colour, Remove color still does the job exactly, instantly and without spending credits, and every surface says which one to reach for.
- Everything in the editor is an API. The same operation set is one
opobject onconvert_image, one flag per control onbraaand images convert, and aremove_backgroundtool andbraaand images remove-backgroundcommand alongside it — so an agent asked to "crop these to 1200×628 and drop the white background" does exactly what a person would do by hand, in one call. - Emoji that render everywhere. Adding an emoji to a creative now places real artwork (Twemoji, ingested into your brand's library once per emoji) instead of a text character — so the lion renders identically in the editor, in exports, and in every automated render, instead of depending on whichever emoji fonts a machine happens to have.
- Multi-color logos stop turning into white squares. A logo whose design uses several colors (like a panda in a box) can't be flat-tinted to one color — braaand now serves the original artwork instead of flattening it, and new brands onboard such marks as full-color automatically. Pinning a specific logo asset on an element now always shows that asset, never a silent substitute.
- Brand search and stock search are two different things, named so. Finding your photos by meaning is
search_brand_assets; the shared stock catalog (UI chrome, avatars, icons) issearch_stock_assets. Asset listings are paginated, so an agent reading your library no longer downloads all of it at once. - Hand-built work stays private until you say otherwise. The AI guidance now defaults review boards to private links; the public, account-free delivery link is minted only when you explicitly ask for one.
August 15, 2026
Creatives you can find again. Generated creatives now take their name from their headline once the copy is written — "Save the lions — 3" instead of "Variant 3" — and searching creatives searches what they say: headlines, copy, tags and collections, not just names. Listings return compact rows with a headline and thumbnail instead of full documents, and a new cross-brand search finds "the lion creative" across creatives, templates, boards, collections and assets in one go.
The review loop closes for agents. An AI can now read the comments people leave on a shared board — including account-free visitors — reply or annotate its own changes, and clear a note once it's handled. Together with board delivery links, the whole arc works hands-off: share, hear the feedback, edit, re-render, resolve.
Duplicate before you experiment. A new duplicate operation deep-clones any creative into a fresh independent copy — free and instant — so trying something never risks the original.
Upload from anywhere. Agents can add an asset from any public URL — braaand fetches it server-side — and your own photos drop into a creative's image slot with clear rules about when a hand-placed photo is pinned against automated changes.
Filter your templates by what they're for. The templates page gains two filters beside Kind: Purpose (a multiselect — Campaign, Event, Announcement, Hiring, Quote…) and Imagery (photo-led or text-only). Purpose uses the same vocabulary a pipeline's Templates node searches on, so filing a template and finding it from a campaign mean the same thing; imagery is read from the layout itself, so it can never be tagged wrong. Every built-in template ships filed, and your own templates inherit their filing from the one they were made from. Free-text categories still work alongside it as your own private tags — and they now survive a reload, which they previously didn't.
Generated badges get real transparency. Sticker and badge artwork used to come back with a fake checkerboard painted into the pixels when a model was asked for a "transparent background". Generation now handles alpha itself: models that support it deliver it natively, and the rest generate against a solid key color that's keyed out automatically — so a campaign badge lands over your photo as a clean die-cut sticker.
Remove color — the magic wand. The Image Tool gains a click-to-key tool: click a color and everything connected to that point becomes transparent, with softened, de-fringed edges, saved as real alpha (PNG/WebP). It never punches holes in artwork that happens to contain the color. The same operation is an API op like any other —
convert_imageover MCP,--remove-coloron the CLI — so agents can key out a background exactly like a human.More distinct layouts per campaign. Asking for 12 creatives now lets the selector spread across up to 12 different templates instead of being capped at three — the ceiling follows your creative count, and the selector still picks only layouts that genuinely fit.
Save the date, before the line-up exists. Event Theme Save the Date announces an evening whose topic is settled but whose guests aren't — the ordinary state of a recurring series. The theme leads as a question, the date sits in an accent band, and one guest line carries whatever is actually confirmed: nothing yet, one name plus "fler gäster tillkännages", or the full line-up. It's text-led on purpose, because at this stage there is no speaker photo to show.
A thank-you built for a series, not a conference. Event Thank You Guest is the day-after post for an evening that runs again in a few weeks: a short thanks, your guest's name big with their role, one line on what they actually argued, a warm line to the room, and the next date in an accent band. Its CTA points at the next evening rather than at photos — for a recurring series, the day-after post is the best invite it ever gets.
The event family grows to eight. Six new system templates cover the whole arc of promoting an event: Event Save the Date (a full-bleed photo where the date is the star), Event Lineup (the program as the ad — three timed agenda rows), Event Countdown (the last push — an urgency chip and a huge time-left line), Event Speaker Card (the per-speaker unit, with the portrait slot marked for For each so a speakers Set mints the whole lineup automatically), Event Ticket (the family's concept member — a paper ticket with an accent stripe, perforation and barcode, floating over a dimmed venue photo), and Event Thank You (the day-after post — a huge thanks over the crowd photo, with the numbers in a knockout band). Together with the existing photo announcement and bold statement, one event can run a distinct creative at every stage from first announcement to the morning after.
August 14, 2026
- Campaigns come back with real range. A batch used to be able to settle on one photo for every creative: whichever image the first one found went into your library, and every creative after it correctly recognised it as the best match on the shelf. Creatives now choose their images one after another, each seeing everything the batch has already used, and go somewhere else — across your library, stock and AI alike. A photo you own in two copies counts as one photo, and a stock photo you already have is reused instead of being saved again.
- Branches that actually differ. Give a campaign several branches and each one now looks for layouts the other branches haven't taken, so three branches read as three treatments instead of the same design three times. It only repeats a layout when your shelf is too thin to spread.
- CTA buttons stay buttons. Labels never wrap onto a second line anymore — when a label outgrows its pill, the pill grows to fit (and only shrinks the text when even a full-width pill can't hold it). And the layout engine stops stripping button heights: the padding above and below the label is the design, so the "collapse to text height" cleanup that made pills impossible to pad now leaves buttons alone.
- Campaigns come back as a smorgasbord. The template selector now deliberately spreads a batch across different layout families — a photo hero, a text-led layout with strong copy, a structured fact list, and a concept parody when the tone allows — instead of returning the closest siblings of one strong layout. Near-duplicates never both make the cut.
- Text you can read, on any photo. When copy would land on a photo that fights it, the fix now matches the design instead of always boxing the text: dark text gets its knockout, light text over a bright photo darkens the photo a step, and light text low over a busy photo gets the classic bottom gradient. All automatic, before scoring — and the Edit node can be asked to darken an image too.
- Your image-source settings now govern your runs. The Brand settings toggles for stock and AI generation used to be decorative for pipelines: every recipe pinned its own idea of the right sources. A run whose Build doesn't say otherwise now follows the brand's own policy, which is also how enabling AI generation there finally reaches the generic "make me a campaign" path. An explicit choice on the node still wins.
- Campaign badges, generated per campaign. The Campaign Badge Hero's badge slot generates sticker-style badge artwork from the brief when the brand has AI generation enabled, so any topic gets its own badge. A campaign with real designed badge artwork pins and locks it, and nothing will replace it.
- Two new system templates, traced from real campaign work. Campaign Badge Hero — your campaign's badge or sticker artwork centered over a mood photo, with the dates in an accent banner underneath. Photo Fact List — three knockout fact bars with emoji bullets over a photo, ending in a CTA button: problem, stakes, action. Both built from hand-made originals that performed, so a pipeline run lands where a designer would have.
- Set your standard sizes from a real design. Your brand's default heading size, logo width and button width can now be set in the editor, where you can see them: size an element until it looks right, and a line under the size field tells you what your brand's default is and offers to make it this. It works from any aspect ratio, and it never resizes anything that already exists — including the element you set it from.
August 11, 2026
- A guided first run. A new account now sets its brand up in the app: drop your guidelines, logos and fonts anywhere on the page (whole folders included, which matters for font families), and braaand reads the manual, uploads everything, and names the brand from the material. It keeps going from there — what you make, your first templates, the command bar, your first creative, your first campaign — and you can step out at any point.
- Templates that become your brand while you watch. Say what you produce (campaigns, events, quotes, hiring) and you get a shelf of layouts from the braaand library, each one rendering unbranded and then turning into your colors, type and logo in front of you. Keep the ones you want; they land in your templates.
- The command bar introduces itself. Press ⌘K once and it takes it from there: your colors, then your fonts, then what your guidelines say about your voice — each one typed into the real bar and answered on your own brand, playing on its own.
- Then it shows you the rest of the product on your own work. It makes your first creative from your template and changes it while you watch — a different color scheme, a rewrite — then opens the factory with that creative as the input, runs three variations, scores them, and lands them on a board you can share. Real runs on your real brand, narrated from the corner of the actual screens.
- Add brand now sits in the grid on your home screen, next to your brands.
- The assistant writes in your brand's language. Editing copy in the editor, it now reads your brand's tone, writing rules and examples — so a brand whose guidelines are in Swedish gets Swedish copy, and "translate this" has something real to translate into.
- Image variations vary again. A creative whose photo slot lost its swappable marking (older creatives, and anything descended from them) made the Imagery node and the image axis quietly do nothing, minting identical copies. They now recover the marking from the template that declared it, and an image-only pass that genuinely has nothing to change says so instead of producing duplicates.
August 9, 2026
- One creative per subject. The new For each node turns one design into one creative per person, place or product — each with their own photo, name and details. Point it at a folder of headshots and it reads one subject per photo, taking the name and title straight from the image; point it at a Set (a named list you paste in from a spreadsheet) for subjects that aren't photos, like municipalities or audience segments. Thirty candidates, one layout, thirty finished cards.
- Names and titles render from data, not from a model. Bind a text element to the subject's name or any column of your list and it resolves at render time — excluded from every copy pass, so a real person's name and title cannot be reworded, shortened or invented. Mark the portrait slot and each subject's own photo lands there, safe from being swapped for stock.
- The copy is free by default. Leave it as written and a shared campaign line reads identically across the whole set with no model spend at all — the common case. Switch to rewriting per subject only when the message genuinely differs ("everyone in Stockholm should enter now"), and the angle and tone still stay consistent across the set.
- Sets, a new section in the brand menu: paste a list straight out of a spreadsheet (commas, semicolons or tabs, quoted fields and all), see it parsed before you save, and reuse it across campaigns. Re-pasting a corrected list updates the existing subjects rather than duplicating them.
- Ask for one person by name. "Make a quote creative with Frida Karlsson" resolves her out of your library and stamps her photo and details onto the creative. If two people share a name it stops and asks which, showing their title and district — it never picks for you.
- Route by subject. A new Subject field rule sorts a finished batch by any column of your list — one board per district, per market, per role. Make them with For each, sort them with Route.
- Rerunning a translation keeps its language. Sending a weak translation back for another pass used to rewrite it in the brief's language while still calling it German. It now revises the translation in place, steered by the judge's critique, so
Translate → Score → Route → Rerunworks as a loop. - The judge reads the copy as text, alongside the rendered image. Scoring spelling, grammar and wording off a picture was unreliable at small sizes and in a second language; wording is now judged from the words, and how it looks from the image.
August 7, 2026
- A Translate node for multi-market campaigns. Wire it onto a finished creative — handmade, or a pipeline's scored winner — pick languages from a grouped picker (every EU language plus the other large ones, with All-EU and Nordics quick-picks), and it mints one translated version per creative per language, originals untouched. Translations carry the meaning and brand voice rather than word-for-word text, keep brand names as they are, compress to fit when a language runs long (German), and every version gets a brand-fit pass. Each version is stamped with its language, and the Route node gained a Language rule — so
Translate → Score → Route → Boarddelivers every market to its own board section. - Per-language brand rules. A new Languages card in brand config holds standing translation rules — "never use em-dashes in Swedish" — set once and inherited by every Translate node; any node can add its own per-run direction per language on top, and the app ships baseline typographic conventions (quotation marks, formality defaults) underneath.
- Color schemes learned about second surfaces. Real designs often carry an inverted surface — a light card inside a dark layout, the sign under a photo. Every Color and Background control now opens with two smart choices, Auto and Inverted, each showing the color it resolves to: Auto follows the design's background, Inverted sits on the scheme's opposite surface — and both keep flipping correctly with every scheme change. Text, icons, buttons, and panels all follow the surface they're on, and the AI reaches for the same mechanism (the
tonefield) instead of hand-picking colors when something sits on an opposing panel. - Separator lines can follow the text. A third choice on shape backgrounds, Text, fills the shape with the scheme's text color for whatever surface it sits on — so dividers read like the copy next to them on every scheme, instead of needing a hand-picked color per scheme.
- Icons recolor with the scheme, and can be converted in place. Icons follow the scheme's text color like adjacent copy, and the canvas right-click menu converts any SVG image to an icon (or back) — converting clears pinned tints so the automatic color takes over.
August 6, 2026
- The assistant designs whole canvases from scratch now. Give it a blank creative and a brief and it composes the full layout — background, anchored text stacks, logo, all four aspect ratios — and the canvas builds itself element by element in front of you. The same layout engine that keeps templates tidy settles the result, so what it builds stays editable, re-fittable, and on-brand.
- Composition is per aspect ratio. Every format can carry its own arrangement: center the message block on the story without touching the square, give the wide banner an image the other formats don't have, and ask the assistant to "move the text block" on just the format you're looking at. Wide formats also stopped inheriting undersized text.
- Generative expand. Drag an image's zoom below the crop and the photo floats inside its frame — position it, press Expand, and braaand generates the rest of the scene around it (the Photoshop trick, on your own brand library). Applies to the aspect ratio you're on by default, with a checkbox for all of them, and every expanded image is saved to the library as a numbered version linked back to the original.
- Brands can set their standard element sizes. A default size on each type style, a default width on each logo, a standard CTA pill — set once in brand config, and every added element, composed canvas, and the theme builder's specimen follow it. New elements land centered at sensible, format-proportional sizes even without brand tuning, logo slots take the shape of your actual mark, and layers are named after the asset instead of a URL.
- A new system template: People Announcement. Portrait plus a two-line knockout headline — new hires, speakers, guests — distilled from a real production creative, swappable photo slot and all.
- Pin the assistant as a floating chat window. One click on the pin and the chat follows you across every page as a small window you can drag anywhere and resize, with the conversation, your half-typed message, and its position all kept, across reloads too. Its home is the corner orb: drop the window on the orb and it snaps back to its perch. Close it with the × and it waits, conversation intact, until you call it back. It replaces the old docked sidebar.
- ⌘K opens the assistant, everywhere. The industry-standard shortcut (Ctrl+K on Windows and Linux) replaces Shift+Space, and it now works from any focus, even while you're typing in a field: one press to summon, one press to dismiss, for the centered bar and the pinned window alike.
August 3, 2026
- The AI assistant reliably builds a pipeline from a chat request now. Ask it to set up a campaign and it designs the graph, lands you on the canvas, and the conversation carries over with you.
- Asking it to build something no longer gets misread as a request to navigate somewhere instead.
- Agent-built pipelines lay their nodes out cleanly from the first draw.
August 2, 2026
- A picked seed creative is usable the moment you pick it — wire it into anything on the canvas right away, before a run has even started.
- The Imagery node takes creative direction. Tell it what an image should be, and for a layout with no image slot at all, it can generate and place a full background around your text.
- Image generation now defaults to Nano Banana 2 (Gemini) over OpenRouter: about a third of the old price, 10–15 seconds, and no longer dependent on a single vendor's account balance.
- The Edit node always produces a comparable version, including when you chain a second edit after the first, and it now says plainly when an instruction can't be carried out rather than guessing.
- Every AI model now runs across two providers. One vendor running dry can no longer take the whole assistant down, and a pipeline node can choose which one it bills.
- The assistant edits the pipeline you already have open — add a node, rewire something, change a run instruction — in the same conversation, on the same canvas.
- Board membership is now conferred only by a Board node, so a run's board always matches what its graph actually routes there.
August 1, 2026
- Pipelines you didn't build by hand now draw themselves in — a docs example, or something the assistant designed — node by node, wire by wire, instead of appearing as a finished stack.
- Every node explains itself on its own face: what it does and how it's configured, no hover needed.
- The four example pipelines in the docs now open as real, working canvases in your brand.
July 29, 2026
- A new Edit node: instruct it like you would a person ("no widowed words," "keep the text off the subject's face") and it makes the targeted visual fixes across a whole batch.
- Brand-fit can run every layout rule, or exactly the ones you choose.
- Retired the Process and Flag nodes: their jobs are now covered by composing the simpler nodes already on the canvas.
- Docs reorganized under Factory, matching what the app itself calls this part of the product.
July 28, 2026
- Four ways to start a pipeline: a quick brief, a ready-made canvas, a blank one you build from scratch, or a saved recipe.
- Pin the exact templates a run should use, from the canvas, the API, or the CLI, instead of always letting braaand match them.
- Run instructions: give a whole run its own copy direction, on top of your brand's voice and each template's own guidance.
- A stage node now makes new versions instead of overwriting what's already there — re-run Copy or Imagery on a finished batch and get fresh takes standing beside the originals.
- Save a pipeline as a reusable recipe, with the brief and creative count exposed as fill-in slots for next time.
- Copy, Score, and Variation nodes show which AI model is doing the work.
July 22, 2026
- A simple brief now produces ten creatives by default — spread across your best templates, color schemes, headlines, and images — scored and sorted into Approved / Needs review on a board.
- The AI reviewer says plainly when it can't score a batch, instead of finishing green with nothing scored.
- The runs table shows duration, how many creatives got scored, and what failed, at a glance.
- Every API and AI-tool interaction is now logged, for quality evals.
July 19, 2026
- Quick campaign: paste a brief in the command palette and braaand builds and runs a pipeline for you. No form to fill in first.
- The command palette narrates longer AI jobs with live progress, instead of a silent spinner.
- A finished AI-generated image comes back as an actionable card: set as background, add to canvas, open in editor, download.
July 18, 2026
- Create a review board directly — you no longer need a pipeline run to get a place to review work.
- Choose how much of a brand syncs to your computer: everything, just the essentials, or essentials plus one curated photo collection.
- Text landing on a busy photo now gets an automatic contrast fix before a batch reaches review, and the AI reviewer fails anything still unreadable.
July 17, 2026
- Your brand syncs as something a coding agent can build straight from: ready-to-use design tokens, fonts, logos, a machine-readable brand file, and a local preview. Picking up the latest brand is one command.
- Brands now carry a version, so tooling can tell a real visual change from a small note edit.
July 16, 2026
- Collections can link to a workflow, board, template, creative, or asset without moving or copying it — the same file can live in more than one place.
- A new Finder-style collections browser: tree on the left, contents in the middle, live preview on the right.
- Save a pipeline as a template and run it again later with different inputs.
- Command palette autocomplete now understands English and Swedish.
July 15, 2026
- Start a run from creatives you already have — "a few variations of this one" — not just from a blank brief.
- The AI won't ship placeholder copy, overlong copy, or accidentally talk to you inside an ad, and now reads your brand's tone of voice when writing.
- The pipeline canvas shows each stage happening live, with a running clock.
July 14, 2026
- The Color Scheme Builder moved to the brand overview.
- Cleaner alignment and navigation across the brand pages.
July 13, 2026
- Generate images from a prompt, and edit any image by painting a mask over what you want changed — in the Image Tool, the editor, chat, pipelines, and the CLI.
- Long image jobs now run in the background: start one, navigate away, get a progress pill and a ping when it's ready. Pipeline runs use the same surface.
- A new Image Tool: crop, rotate, and adjust brightness/contrast/saturation with a live preview, then pick output format and size in plain language.
- Editor: a combined Save · Render · Export button, and custom formats by exact pixels or aspect ratio.
- Home and each brand's overview now feel like one continuous surface.
July 11, 2026
- Any pipeline, however it was started (chat, API, or form), now opens on the same node canvas you'd use to build one by hand — so you can watch any run happen live.
July 10, 2026
- Boards: a durable place to review work that can gather creatives from many runs, with one share link exposing everything on it.
- Durable pipelines: press Run, close the tab, it keeps building without you.
- Ask the AI to design a pipeline for a goal ("a campaign for saving elephants") and review the plan before anything runs.
- One sortable table of every run: status, cost, and what it made.
July 7, 2026
- The brand overview now loads instantly.
June 6, 2026
- Foundational fixes to layout auto-fit and AI edit reporting.