Skip to content

Changelog

This changelog tracks all notable changes across the Maiilo product: the app, the builder, the API and integrations.


  • Builder: faster editing
    • Click any element to select it; clicking a second element switches the selection
    • Quick tools on the selected element or section: common style settings, Move up, Move down, Duplicate, All settings and Delete
    • Edit text is the first quick tool on a Text block, so its words are one step away
    • Save to Block Library is now a quick tool on sections
    • The builder toolbar shows which version SendGrid has next to the save status
  • Needs Attention selection — Stale-block and SendGrid-behind rows have checkboxes, all ticked to start. Batch buttons read “Re-publish all N” or “Re-push N selected”; every row keeps its own one-click action
    • Stale templates are grouped by the block that changed
  • Attention popover — Click the Needs attention count in the sidebar to see the items behind it and fix them in place
  • Plan & usage page with your plan, API requests this period, and template and block usage
  • Template search on Templates — by name, subject or template ID
  • Subject is optional until you push — Build and publish without a subject; SendGrid asks for one before a push
  • Drag and drop no longer jumps: the dragged item keeps its place, and drop targets are steadier
  • Calmer canvas: the grid background is gone, and hover, selection and drop targets each look different
  • The per-element hover toolbar is removed; its actions are in quick tools
  • Integrations, Needs Attention, Templates, Blocks and API keys pages use the new layout
  • Duplicating a template now counts toward your plan’s template limit, like creating one
  • The preheader field is removed. Templates no longer have a separate preheader setting; add preview text in your HTML if you need it. Templates that already had a preheader keep it
  • Deleting one API key deleted all of your keys. Only the chosen key is deleted now, and deleting asks you to confirm
  • The push button explains when a subject was added after the last publish (“Publish to include your subject”) instead of failing
  • New accounts always get the “Edit me” starter template, even if a sign-up step is delayed
  • The Needs attention count no longer breaks the page if it cannot be loaded

  • Flatter sidebar — Two groups instead of nested menus: Workspace (Dashboard, Templates, Blocks, Needs attention) and Configure (Integrations, API keys). Every destination is one click away, and the collapsed icon rail now shows all of them
  • Buttons, cards, dialogs and forms across the app were restyled to match the new design

  • New dashboard — Once you have published a template, the dashboard reports on template health, what needs attention, SendGrid status and recent activity (publishes and pushes)
  • Guided first run — Before your first publish, the dashboard shows three steps in order (create, publish, connect) with one clear next action. Connecting SendGrid is optional

  • Template details page is now the template’s source of truth:
    • The published preview beside the API endpoint that serves it
    • A version rail: every version, when and by whom it was published, with Live or Restore
    • A Destination card with SendGrid’s sync status, which version it is running, and the push button. It replaces the separate “SendGrid has vN” alert
    • The push log: every push attempt, its version, timing and outcome

  • App redesign — The app uses the same design system as maiilo.io: new type, colours and status styles in light and dark mode

  • Needs attention count in the sidebar — How many items need action: stale blocks, templates behind in SendGrid, and recent failed pushes. Nothing shows at zero, and it caps at 99+

  • SendGrid integration (Pro) — Push published templates straight into SendGrid. See SendGrid
    • Connect on the Integrations page. Your key is verified with SendGrid before it is stored, stored encrypted, and never shown again. The card shows which account you connected (“Connected as …”)
    • Push a published version into a SendGrid dynamic template. Later pushes update the same template in place, so SendGrid has one template per Maiilo template
    • Drift detection — Maiilo shows when SendGrid is running an older version than the one you published, on the template and on Needs Attention, with Re-push all for batches
    • Push history — Every push attempt, including failures and the reason
    • Variables pass through unchanged, and your preheader is added as hidden preview text
    • Clear error messages for bad keys, missing permissions, SendGrid outages and templates SendGrid cannot parse
    • Disconnecting deletes the stored key. Reconnecting the same account keeps your template links and push history

  • Sign-up is more reliable: an account is set up on first sign-in even if a background sign-up step was missed, and re-using an email from a deleted account no longer blocks sign-up

  • Block staleness — When you edit a shared block, templates published before the edit are flagged as needing a re-publish. See Staleness and re-publishing
  • Needs Attention page — Lists every stale template with the block that changed, with Re-publish per template or in a confirmed batch
  • Block edits no longer change published output. A block edit updates drafts; each template picks it up when you re-publish

  • Version history on the template details page — Every published version, when and by whom it was published, and which one is live
  • Restore — Copy any earlier version (content, subject, preheader and variables) into your draft, then publish to make it live as a new version. Restore always asks you to confirm. See History and rollback

  • Versioned publishing — Every publish freezes your draft into a numbered, immutable version (v1, v2, v3…) with its HTML, subject, preheader and variables. See Publishing and versions
  • Autosave — The builder saves your draft automatically about two seconds after each change. The toolbar shows Saving…, Saved, or a retrying state
  • The API serves the published version. GET /api/v1/templates/:id returns the frozen published version, not the live draft. Draft edits and shared-block edits no longer change API output until you publish
  • Never-published templates return 404 with {"error":"template_not_published"} from the API
  • Export gives the published version’s HTML
  • The Save button is removed. Editing a published template keeps it published; your changes go live when you publish again

  • Code Editor — The Code Block now uses a full code editor instead of a plain text box
    • HTML syntax highlighting and line wrapping for long lines
    • Format and Minify buttons to tidy up or compact your HTML
    • Fullscreen Expand mode for editing large snippets
    • Variables ({{first_name}}) keep working inside code
  • HTML Import (Pro) — Create a template from an existing HTML email
    • Paste your HTML or upload a .html file
    • Your HTML is imported exactly as-is and exported unchanged — nothing is rewritten or wrapped
    • Imported templates open in a dedicated code editor canvas; edit the HTML directly

  • Pro Trial (14-day, no credit card) — Try every Pro feature free for 14 days
    • Start your trial from the pricing page or the in-app upgrade menu — no card required
    • Unlocks unlimited templates and blocks, the Code Block, and higher API limits
    • Sidebar shows “Pro Trial — X days left” with a dismissible reminder banner
    • One trial per account; automatically returns to the Free plan when it ends, unless you upgrade

  • Onboarding emails — New users now receive a welcome email on sign-up and a follow-up a few days later with tips to get started

  • Starter template on sign-up — New accounts begin with a ready-made “Edit me” template so you can explore the designer right away instead of a blank canvas

  • Multi-column sections — Split a section into 2 or 3 columns for side-by-side layouts like feature lists, product grids, and footers
    • Each column accepts its own elements and nested content
    • Responsive-friendly output that renders across major email clients

  • Block Library — Save any Section as a reusable block and drag it into any
    template

    • Linked sections stay in sync — editing a linked section prompts to update the
      source block or detach
      • Changed in 0.7.3: a block edit updates drafts only. Published versions keep their block content until you re-publish; see Staleness and re-publishing
    • Block edit mode — enter a dedicated edit state from the section header; all changes apply on Save or are discarded on Cancel
    • Block preview — inspect a block’s content before dropping it
    • Search — filter saved blocks by name in the Block Library panel
  • Block Library Quota — Free plan is limited to 5 saved blocks; Pro and
    Founding plans are unlimited

    • Quota enforced server-side on block creation
    • Usage counter shown in the sidebar Free Plan status and in the Block Library
      panel
    • Upgrade prompt with action button when the limit is reached
  • Section nesting prevention — Dropping a section inside another section is
    blocked

  • Drag overlays — All drag overlays (sidebar elements, blocks, sections) now
    use a unified compact pill style
  • Element action menus — Replaced the ⋮ dropdown menu on each element with
    inline Pencil and Trash icon buttons shown on hover
  • Section border — Removed the always-visible dashed border; replaced with a hover ring that does not cause layout shift
  • Canvas drop — Dragging an existing element to blank canvas space below all
    elements now correctly repositions it
  • Block count sync — Block usage counter updates immediately on add or delete
    without requiring a page refresh

  • Independent padding controls — Section, Text, and Template Settings now expose
    separate Top, Right, Bottom, and Left padding fields instead of a shared X/Y pair; existing templates migrate automatically at load time

  • Superscript formatting — Apply superscript to text in the editor via toolbar button or Cmd+.; renders as <sup> in email output and designer preview
  • Link Styling — Apply color, bold, and italic to hyperlinks in text blocks
  • Smart Enter in text editor — First Enter inserts a line break (<br>) within the same paragraph; second consecutive Enter splits into a new paragraph. Heading and list behavior is unchanged.
  • Heading level badges — H1–H4 labels displayed inline in the editor for visual
    clarity
  • Hard breaks rendered in email output — <br> nodes are now correctly output as
    <br> tags in both the email HTML and the designer preview (previously rendered as
    empty spans)
  • Paragraph spacing in designer canvas — Paragraph breaks now show visible top margin in the canvas, distinguishing them from line breaks

  • Code Block (Pro) — Drop custom HTML anywhere in your template
    • Paste any HTML — tables, layouts, custom structures
    • Variables ({{first_name}}) work inside code blocks
    • Validation warns about scripts and unsafe code
    • Clean export — no wrapper divs, your code as-is
  • Variable System
    • Insert {{variables}} in text, links, and image URLs for dynamic content.
    • Variables are visually highlighted in the text editor.
    • Variables are automatically detected and stored on template save.
    • Preview screen includes Test Data panel to preview emails with sample values.
    • Test data persists in browser for convenience.
  • Export Dialog
    • Added “Variables” tab to export dialog showing all detected variables.
    • Copy variables list for easy ESP integration.
  • GET /templates/:id?format=variables endpoint to retrieve variables used in a template.
  • Variables array included in standard template response.

  • Outlook Button Background Fix
    • Fixed button background colors not rendering correctly in Outlook.
  • Button Border Radius
    • Added border radius options for buttons: none, small, medium, and full.

  • Send Test Email
    • Added the ability to send test emails directly from the designer.
    • Supports rendering the current template state and delivering it to a specified email address.
  • Text Lists Support
    • Added support for unordered (bullet) and ordered lists in the Text element.
    • Lists are preserved across designer, renderer, and exported HTML.
  • Image Width Control
    • Added a width property to the Image element, allowing precise layout control.
  • Image Alignment Fix
    • Fixed alignment issues where images were not respecting center and right alignment in certain layouts.

  • Improved renderer consistency between designer preview and exported HTML.
  • Stabilized Section and nested children updates when editing via the Inspector.
  • Reduced unnecessary re-renders in the designer canvas.
  • Fixed state persistence issues when reopening the Inspector for previously edited elements.
  • Fixed issues where linked text marks were not correctly rehydrated from stored JSON content.

  • Public Template Library
    • Introduced built-in templates available to all users.
    • Added Pro-only templates with plan-based access control.
  • Use Template
    • Users can copy a public template into their workspace and customize it.
  • Added database schema and seeding for public templates.
  • Improved template serialization and hydration from persisted content.

  • Initial release of the Maiilo visual email builder.
  • Drag-and-drop, block-based email designer.
  • Core layout and content elements:
    • Text
    • Image
    • Button
    • Spacer
    • Section
  • Inline rich text editor with support for:
    • Headings
    • Paragraphs
    • Links
    • Bold, italic, and inline formatting
  • Inspector panel for editing element properties and layout settings.
  • Nested layout support via Sections and child elements.
  • Real-time canvas preview with immediate visual feedback.
  • HTML rendering powered by React Email.
  • Export of production-ready email HTML.
  • Persistent template storage using a JSON-based content schema.
  • Preview HTML generation for thumbnails and quick previews.
  • Public REST API available at https://app.maiilo.io/api/v1
  • GET /templates/:id?format=html endpoint for retrieving compiled email HTML
  • API key authentication using Authorization: Bearer <key>
  • Plan-based rate limiting (Free, Pro)
  • API key management and usage metering
  • Production-ready CORS configuration