Changelog

This page tracks what we ship in Flowershow.

  1. Add JavaScript to a single page

    Premium sites can load their own JavaScript files on one page with the new scripts frontmatter field, and it runs on every visit.

    You can now add interactivity to a single page, like a calculator, a toggle or a chart, without loading that code across your whole site. List your .js files in the page's frontmatter:

    ---
    title: Pricing calculator
    scripts:
      - /js/calculator.js
    ---
    

    ⭐️ Page scripts are a Premium feature. Premium is $5/month or $50/year per site. See pricing

    • Runs on every visit: on a full page load, when readers navigate to the page from elsewhere on your site, and when they come back to it.
    • Your files or a CDN: use paths from your site root or relative to the page, or https:// URLs. Up to 10 scripts per page, run in order.
    • Works in .md and .mdx pages.
    • Premium only. On free sites the field is ignored.

    See Page scripts for path rules and a script template that is safe to run on repeat visits.

    Fixes

    • The Publishing HTML docs said <script> tags in Markdown pages don't run. Inline scripts in .md pages do run on a full page load, but not when readers reach the page by clicking a link within the site. The docs now say so and point to page scripts.
  2. Customize your site even more

    Premium sites can replace the default footer with their own HTML, any page can hide the navbar or footer, and brand fonts, tag colors and list cards are easier to style.

    Your site can now look even more like the rest of your brand. Add a _footer.html file at the root of your site and it replaces the default footer on every page. For landing pages that bring their own header, you can hide the site navbar and footer page by page.

    ⭐️ Custom footers are a Premium feature. Premium is $5/month or $50/year per site. See pricing

    • Custom footer (Premium): write _footer.html as an HTML fragment, with links, images and Tailwind classes. Relative href and src paths resolve from your site root on every page (in pages they resolve from the page's own folder). It replaces the whole default footer, and it's never served as a page of its own.
    • Hide the navbar or footer on a page (all plans): set showNavbar: false and/or showFooter: false in a page's frontmatter. Pair them with layout: plain for a fully bespoke landing page. You can also set them in config.json to hide the navbar or footer site-wide.

    See Footer configuration and Navbar configuration for details.

    More ways to style your site

    • Brand fonts without a giant custom.css: publish your .woff2 files alongside your site and point to them from custom.css, or import Google Fonts. See Custom fonts.
    • Tag pill colors: recolor tag pills with four CSS variables (--color-tag-pill-text, -bg, -text-hover, -bg-hover). See Tags.
    • List cards: the <List> component has documented, stable class names, including new hooks for item links and the empty and error states. See List component.
    • Full-width plain pages: layout: plain pages already span the full width, so full-bleed sections need no 100vw workaround. See Custom styles.

    Fixes

    • custom.css now loads as a stylesheet the browser caches, instead of being copied into every page, so pages are smaller and repeat visits are faster. Relative url() paths in custom.css (like url('fonts/Brand.woff2')) now resolve from your site root; previously they resolved against each page's URL and broke on nested pages.
    • The custom styles docs said Flowershow uses CSS cascade layers so custom.css always wins. It doesn't: custom.css loads after the theme, so a rule with equal or higher specificity wins. The docs now say so.
    • Setting --navbar-height in your CSS now actually changes the navbar's height, and heading anchor links and the changelog's sticky date follow it too. Before, only the sidebar and table of contents moved.
  3. Show reading time in the page header

    Pages can show an estimated reading time, like "8 min read", next to the authors and date.

    Long guides and essays can now tell readers up front how long they'll take. Turn on reading time and the page header shows an estimate like "8 min read", next to the authors and date.

    • Site-wide: toggle Show Reading Time under Settings → Content in the dashboard, or set "showReadingTime": true in config.json. It's off by default.
    • Per page: set showReadingTime: true or false in a page's frontmatter to override the site setting.
    • How it's calculated: word count at 200 words per minute, rounded up.

    See Page headers for details.

  4. Click an image to see it full size

    Clicking an image on a page now opens the original file full size in a lightbox.

    Clicking an image on a page now opens it full size on a black background. Click again or press Esc to close it.

    • Supported syntax: ![](), ![[...]] and <img> tags in .md and .mdx files. No configuration needed.
    • Original file: the lightbox shows the original image, not the resized version used on the page.
    • Keyboard: images can be focused with Tab and opened with Enter or Space.

    Fixes

    • width and height on an HTML <img> tag in a .md file are no longer dropped.
  5. Show breadcrumbs above the page title

    Pages now show a breadcrumb trail like "Guides › Install" above the title, on desktop and mobile.

    Readers can now see where a page sits in your site and jump back up a level. The page header now shows a trail like Guides › Advanced › Tuning above the title. Until now breadcrumbs were only shown on mobile, in the sidebar bar; they now sit above the title on every screen size.

    • On by default: to turn breadcrumbs off, toggle Show Breadcrumbs under Settings → Content in the dashboard, or set "showBreadcrumbs": false in config.json.
    • Per page: set showBreadcrumbs: true or false in a page's frontmatter to override the site setting.
    • Flat sites: set section: Use it in a page's frontmatter to show Use it › Page title when your folders don't express the grouping.
    • Styling: the trail uses the .page-header-breadcrumbs class.

    See Page headers for details.

  6. Every page gets its own social preview

    Every page on your site now gets a generated social preview card with its title, description and site name, and a short description is computed when you haven't written one.

    Share any page and it now unfurls with its own preview card instead of a generic thumbnail. See SEO and social media metadata.

    • A card for every page: a 1200×630 card with your logo (or a monogram), site name, page title, description and URL. Free sites include a small Flowershow mark; premium sites don't.
    • Your own image still wins on premium: if you set an image on a page or your site, that image is used instead.
    • Protected sites stay private: password-protected sites get a card with only the site name and tagline.
    • Descriptions when you haven't written one: Flowershow uses the opening sentence of the page (up to 140 characters) for search results, previews, listings and RSS. It isn't repeated in the page header.

    Fixes

    • Premium pages without an image no longer produce a broken, empty image tag in their previews.
    • Removed the stray twitter:creator @flowershowapp tag that was added to every user site.
  7. Get feedback on drafts with annotations

    Turn on annotations and anyone with the link can select text on your page and leave a note, no account needed. Then your AI agent pulls the open notes, revises your pages and resolves them.

    Send a colleague a link to your draft and get notes back on the exact words, without asking anyone to sign up for anything.

    • One click, or one flag. Switch on Annotations in Settings → Features, or publish with fl --annotations. Pages can opt out with annotations: false.
    • No account for reviewers. They select text, tap Annotate, write a note and, if they like, their name. Works on phones too.
    • Give it to your agent. fl annotations pull prints the open notes with the quoted text, file and page URL. Claude Code or Codex can run it and revise your pages; you can also paste the output into ChatGPT or any other agent. fl annotations resolve marks notes done.
    • Notes that follow your edits. Annotations stay on their text when it moves; if you rewrite it, they're marked outdated instead of disappearing.

    Try it with colleagues

    Want to see it first? Open the demo draft, select any sentence and leave a note.

    You (the author):

    1. Publish your draft with annotations on: fl --annotations ./draft (needs fl 2.6.0 or later; on macOS or Linux, upgrade by re-running the install script). Or switch on Annotations in Settings → Features for an existing site.
    2. Send the link to the people you want feedback from, with the note below.
    3. When notes come in, fl tells you how many are open. Run fl annotations pull and hand the output to your agent ("apply these notes, republish, then resolve them"), or read them in the dashboard under Annotations.

    What to send your reviewers:

    Here's a draft I'd love your feedback on: . Select any text and tap Annotate to leave a note on it. No account needed, and adding your name is optional. Notes are visible to anyone with the link.

    Learn more in Annotations.

  8. Publish from Claude and ChatGPT (beta)

    Add the Flowershow connector to Claude or ChatGPT, ask it to publish, and get a live link. Nothing to install, no account needed.

    You can now publish straight from a chat in the Claude and ChatGPT apps. Add https://flowershow.app/api/mcp as a connector once, then ask your AI to "publish this". You get a live link in seconds. See Publish from Claude and ChatGPT.

    • Nothing to install, no account: each new site gets a …-anon.flowershow.me link and a claim link. Claim it to keep the site; otherwise it expires after 7 days.
    • Change it as you go: ask for edits in the same conversation and they go live at the same address.
    • Markdown, HTML and images: one page or a small site, up to 50 files and about 3 MB per publish. For bigger sites, use the fl CLI.

    This is a beta. The connector can't sign in to your account yet, so make your changes first, then claim the site. Tell us how it goes on Discord.

    In coding agents such as Claude Code, Codex and Cursor, keep using the Flowershow skill. The Publish with AI page now shows both paths.

  9. Publish without an account

    Run fl --anon to put a folder online with no signup, then claim it to keep it.

    You can now publish with fl --anon ./folder and no account. You get a live link straight away, and a claim link to keep the site. Handy for trying Flowershow, and for AI agents that can't log in for you. See Publish without an account.

    • Live in seconds: the site gets a random …-anon.flowershow.me URL.
    • Claim it to keep it: anonymous sites expire after 7 days. Open the claim link, sign in or sign up, and confirm to move the site into your account. After that, publishing the same folder while logged in (from the machine that published it, which keeps its link in .flowershow) updates your claimed site.
    • Re-run to update: running fl --anon on the same folder updates the same URL.
    • Limits: 200 files and 50 MB per site.

    Also

    • Set FLOWERSHOW_TOKEN to a personal access token to use fl without fl login, for CI and cloud agents. See Environment token.
    • Agents using the updated Flowershow skill can offer --anon when you just want a link now.

    Fixes

    • Expired anonymous sites stop being served immediately, not only after cleanup.
    • Anonymous sites are marked noindex, so search engines don't index them.

    Requires fl 2.5.0 or later. Upgrade with the steps in Upgrade.

  10. Publish with AI

    Go from your AI session to a live website. A new Publish with AI page, an updated Flowershow skill, per-agent install guides and a safer fl CLI.

    Whatever you're working on with Claude, ChatGPT, Codex or Cursor, you can now just ask it to publish: one page or a whole site, live in seconds. See Publish with AI.

    • Updated Flowershow skill: your agent installs and logs in to fl for you, publishes HTML as-is alongside Markdown, checks for site-name clashes before a first publish, and can convert .docx, .pptx and .pdf files to Markdown before publishing. Update it with npx skills add flowershow/skills --global.
    • Install guides for every agent: Claude Code, Codex, Cursor, the Claude apps and ChatGPT, with or without Node.js. See Supported agents.
    • Easier CLI install: set FL_INSTALL_DIR to install fl without sudo, handy for agents and CI. See CLI docs.

    Fixes in fl 2.4.0

    • Publishing a new folder no longer silently overwrites an existing site with the same name. fl now asks first, and --yes refuses rather than overwriting. Pass --overwrite when you mean it. See Name collisions.
    • fl now exits non-zero on every failure, and fl whoami exits 1 when you're logged out, so scripts and agents can tell when something went wrong.
Built with LogoFlowershow