Skip to content
Release archive

Documentation

Velloo documentation

Markdown for LLMs ↗

Release archive

Release notes for Velloo 0.6.0 and earlier.

The three newest releases are on What’s new. These are the ones before them, newest first.

Velloo 0.6.0

This minor release reworks how notes and comments look and behave on the canvas, makes undo yours alone, and tightens what Velloo says about how a design renders. Codegen, captures, and the MCP surface pick up a long round of fixes found by running model evaluations against real apps.

Notes that sit on the canvas

Notes no longer look like amber sticky cards. A free note is a thin rule and its text, placed where you put it. With the note tool, a click places a note and a drag sets its size. A note fits its text until you resize it; a resized note keeps its height and scrolls inside.

A note attached to a node is now a small marker on that node, inside the frame, instead of a card moved beside the frame with a connector. Hover a marker to read the note and click to keep it open. With a node selected, press t to attach a note, as c starts a comment.

Live markdown in notes and comments

Notes and comments format as you type: ## starts a heading, - a bullet, and closing **bold**, *italic*, or [text](url) formats the run. Select text for a toolbar with the same actions. Markdown remains the stored format, so agents read and write notes exactly as before.

Hover a comment pin to read its thread in place. Pins and note markers on the same spot fan out so each one can be reached.

Undo is yours

⌘Z undoes only your own canvas edits. An agent’s MCP writes are no longer on the canvas undo stack. If an agent has changed something since your edit, undo refuses that step rather than overwriting the agent’s work. Creating, editing, moving, resizing, and deleting a note are each one undo step.

Cloud threads you can resolve and delete

  • Resolve or reopen a thread from its row in the comments list or from its pin card. Board managers can delete a cloud thread, with the same confirmation as a local one; the dialog offers to resolve it instead.
  • Threads belong to their link. A board published from another branch gets its own link and its own conversation. Cloud threads show the branch they were published from, and the publish dialog can bring open comments over from a board’s other links.
  • Threads you can no longer manage (a revoked link, a changed role, or while signed out) show read-only instead of offering actions that would fail.

Roles and permissions →

Honest fidelity reports

component_status now reports how each component actually renders instead of claiming a bundled library where there is none. Two statuses are new: server-rendered, when the server render is what the screen shows (antd, Chakra UI, and HTML folders), and unchecked, when nothing could establish an answer. An exact or adapted that no mounted frame has confirmed carries observed: false. The canvas shows the same answer as a fidelity badge in the library and the inspector.

One component no longer takes down a screen: a component that cannot be bundled renders from its server output inside the mount, and its neighbours stay real. compare_to_url reports the components drawn by a stand-in (render/stand-ins) and where a bare name renders Velloo’s component although the app has its own (repo/shadowed-by-velloo).

component_status →

Your app’s components, everywhere

  • velloo export and velloo render now mount the app’s own components and run live islands, as the canvas and publish already did.
  • App stylesheets that use Tailwind directives (@tailwind, @apply, @theme, @config) are expanded before the canvas loads them, so their rules no longer disappear. preview_status reports incomplete when the preview entry never imports the app’s global stylesheet.
  • Framework recipes apply under any adapter. A Mantine app in an MUI or shadcn folder gets Mantine’s theme and adaptations, and emit_theme writes one native theme module per component source.
  • When a bare name such as Text resolves to Velloo’s component but carries props only the app’s version takes, the write is refused with ShadowedComponent and a pointer to the qualified tag (<Mantine.Text>).

Codegen in every framework’s idiom

Every framework is now a codegen target, shadcn included, so emit no longer treats shadcn as the default. Fixes from that change:

  • antd Card, Button, and Input emit as antd components, and dotted parts emit as Typography.Title and List.Item.Meta. MUI’s Box tag override emits as component=.
  • No-library Tailwind folders emit plain HTML for Card, Button, and Input instead of advising npx shadcn add.
  • An extension now takes precedence over a library component with the same name in emit_code, as it already did on the canvas.
  • emit_code no longer asks to install shadcn files the app already has. It drops props from another library that reach plain HTML, with a warning, and warns about typeset utilities the host Tailwind app doesn’t define.

Smaller MCP papercuts

  • add_screen, add_snippet, update_snippet, and batch return a compact summary with a nodeCount instead of echoing the whole tree. Read a tree with get_screen when you need it.
  • update_props warns when replacing a whole object prop drops keys, and when a propPatch is empty.
  • A slot prop given a markup string warns that it renders as literal text. styleDiff reports boxSizing and minHeight.
  • call_velloo { operation: "operation_schema" } works, and suggestions for unknown arguments take the value into account: import_theme { path: "x.css" } suggests cssPath.
  • Board captures finish as soon as the page settles instead of waiting out a fixed timeout, and frames render at their exact viewport size.

Upgrade

From your application checkout, run:

velloo upgrade

Existing designs keep schema version 4. Notes gain an optional height, set when you resize one on the canvas. If your agent workflow reads the tree from a write’s result, or relies on how component_status names a bundled library, see the changes above.

Source changes since v0.5.0

Velloo 0.5.0

This minor release extends Velloo to server-rendered HTML and htmx apps, brings your written design system into the design loop, and makes it easier for agents to recreate and refine existing screens.

Design HTML and htmx apps

Velloo now works with server-rendered apps such as Flask, FastAPI, Django, Rails, Laravel, and Go, as well as plain HTML sites. velloo init detects templates and routes, selects the HTML + htmx provider, and copies the app’s linked stylesheets into the design.

Compose editable screens from semantic HTML, with your app’s classes and real hx-* attributes. The canvas uses stored copies of stylesheets, images, and fonts, so reviewing a design does not depend on the app running. Refresh those copies from source or a browser capture with store_host_files.

emit_code returns native HTML with the classes and server routes it relies on. velloo emit <screen> --to page.html writes markup to integrate into your templates. The canvas keeps hx-* inert; your app supplies the handlers and behavior.

Design an HTML or htmx app →

Follow your DESIGN.md

DESIGN.md is a Google Labs format for describing a visual design system to coding agents. It combines machine-readable tokens with written design rationale, so agents can read both the values and the intent behind them.

When your app has a design-system DESIGN.md, initialization offers to seed the theme from it, layered over the app’s stylesheet. Agents are pointed at the document’s current prose rules as well as the imported tokens.

Use import_theme with designMdPath or designMd to preview the token mapping, including coverage and values that could not be represented. Export a theme with emit_theme { format: "design-md" } or velloo theme export --format design-md; a theme with dark colors also produces DESIGN.dark.md. Export leaves the document the design follows untouched.

Import and export a design system →

A clearer first loop

The initialization handoff is shorter and focused on the design goal. For redesigns, it asks the agent to match your theme and fonts, recreate the whole page, fix the comparison’s largest mismatches, and then explore directions side by side. When you skip permanent agent wiring, init can offer to launch a supported agent connected for that project session.

Easier composition and more useful checks

  • compose can append several siblings in one call, accepts lowercase HTML tags, and handles static text expressions and JSX comments copied from app source.
  • The guided MCP surface accepts an update_props single edit as { screenId, path, props }; the existing atomic patches form still works.
  • find_nodes can search text, and add_frame can use the folder’s default viewport without explicit dimensions.
  • Diagnostics recognize classes and variables from preview stylesheets, warn about text that overrides a filled button’s label color, and flag a whole app page placed as one opaque node.
  • Captures settle visible loading states and freeze animations for more consistent comparisons. A page error is reported instead of treating a broken page as a reference.
  • Hand-edited design config reloads while the canvas runs. MUI icon rendering and discovery of shadcn variants also receive fixes.

Upgrade

From your application checkout, run:

velloo upgrade

This updates Velloo through its installation channel, migrates the checkout’s designs, and refreshes installed agent guidance. Existing designs keep schema version 4; the new config fields are optional. See the CLI reference for preview and selection options.

Source changes since v0.4.1