Changelog

This page tracks what we ship in Flowershow.

  1. Publish HTML, not just Markdown

    HTML pages publish as-is with their CSS, JavaScript and data, side by side with Markdown. New guides cover what you can publish and how.

    Put Markdown, HTML, data, images and Obsidian Canvas files in one folder and publish it as one site. Markdown gets your theme and navigation; HTML is served exactly as written, so the report or dashboard you built keeps its own styles and scripts.

    • Supported file types: what each file becomes, the URL it gets (.html URLs keep their extension) and publish limits. See Supported file types.
    • Publishing HTML guide: standalone HTML sites, and HTML inside Markdown pages. See Publishing HTML.
    • Host more kinds of files: ebooks (.epub), Office and OpenDocument files, calendar invites (.ics), archives, data files (.parquet, .jsonl, .sqlite, Jupyter notebooks) and map files (.gpx, .kml) now have their own URL, so you can link to them for readers to download.

    Fixes

    • .flac, .ogv, .m4v, .aac and .opus embeds (![[clip.ogv]]) now play.
    • Updated CSS, JavaScript and images now show up right after you republish, instead of being cached for several minutes. Deleted files stop loading too. Works with every publishing method, including older CLI versions.
    • The Obsidian Canvas docs now give the right URL for canvas pages (no .canvas extension).
  2. Tags support

    Tag your notes in frontmatter or inline with

    Flowershow now supports Obsidian-style tags. Tag any page and we'll build browsable tag pages for your whole site — no configuration needed.

    Two ways to tag. Declare tags in frontmatter, inline in the body, or both — they're combined into a single tag set for the page:

    ---
    tags: [book, book/fiction]
    ---
    
    Reading notes on my favourite #book and #book/fiction titles.
    

    Tag pages. Visit /tags for an index of every tag on your site with page counts, and /tags/{tag} for a listing of every page carrying a tag. Tags are hierarchical, so book also surfaces book/fiction, and matching is case-insensitive.

    Rendered pills. Inline #tags render as clickable pills, and frontmatter tags appear as a row of pills at the top of the page — each linking to its tag page.

    Now in Bases. file.tags and file.hasTag() in Obsidian Bases now include inline #tags from the body, not just frontmatter tags.

    Optional. If you use #tags just to organize your notes, set showTags: false (in your dashboard settings or config.json) to keep them off your published site — inline tags render as plain text and the tag pages go away.

    Learn more in the Tags reference.

  3. Built-in changelog pages

    Put dated Markdown files in a changelog/ folder, or keep a single CHANGELOG.md, and Flowershow renders a full timeline with no components or config.

    Your changelog now looks like one out of the box. Add a changelog/ folder of dated Markdown files and Flowershow renders it as a timeline at /changelog: newest first, with the date and authors beside each entry, then its title, summary, optional image and full content. This page is built with it.

    • One file per entry. For example changelog/2026-09-19-my-release.md, with title, date, description, authors, image and an optional version in the frontmatter. If you leave out date, it is read from the date at the start of the file name.
    • A page for every entry. Each entry also gets its own URL, with a link back to the changelog and links to the previous and next entries.
    • Authors and pages. Authors are looked up in your people/ folder, the same way as blog posts. The timeline shows 10 entries per page, with ?page=2 and so on for older ones.
    • Your README is the intro. Any text in changelog/README.md appears above the timeline. With no README you still get a "Changelog" page.
    • Fits your theme. Colours and fonts come from your theme, and it works with all the official themes. To adjust spacing or the date marker, set the --changelog-* CSS variables.
    assets/changelog-entry-page

    Any other folder can be a changelog too: add layout: changelog to its README.md, for example for a releases/ folder. To keep a changelog folder as ordinary pages, give its README.md a different layout, such as layout: default.

    Prefer a single CHANGELOG.md? It renders as the same timeline: each version gets its own entry with its date, a link you can share (/CHANGELOG#1.2.0), and a Compare link when the heading has one. Keep a Changelog, Changesets, release-please and date-based headings all work without any configuration, and the file is also available at /changelog. To render another file the same way, add layout: changelog to its frontmatter.

    If your changelog page used a <List> component, remove it: the timeline replaces it. See the changelog docs for the full reference.

  4. Obsidian Bases: tag & link filters, date math, and more file properties

    Bases queries now support tag and link filters, date + duration arithmetic, and more file properties — plus an empty query now returns your whole vault.

    We've closed several gaps in our Obsidian Bases support, so more of your existing queries now render on your published site exactly as they do in Obsidian.

    Query the whole vault by default. A Bases block with no filters now returns every page on your site, matching Obsidian's default — instead of an empty result.

    Tag and link filters. You can now filter on tags and links:

    filters:
      or:
        - file.hasTag("book")
        - file.hasLink("Reading List")
    

    file.hasTag() matches nested frontmatter tags too — hasTag("book") also matches book/fiction.

    Date + duration arithmetic. Formulas can now add and subtract durations from dates:

    formulas:
      deadline: '(date(start) + "2w").format("YYYY-MM-DD")'
      isRecent: 'file.mtime > now() - "1 week"'
    

    Durations support y / M / w / d / h / m / s units, including compound values like "1y2M3d", and the duration() function. Month and year math is calendar-aware.

    More file properties. file.mtime, file.ctime, file.tags, file.basename, file.links, and file.backlinks now resolve in filters and formulas — so you can sort by last-modified time, list a note's outgoing links, or count its backlinks.

    formulas:
      backlinkCount: file.backlinks.unique().length
    

    More of the Bases spec is on the way. See the full Bases documentation for what's supported today.

  5. Monospace theme is now available

    Choose the compact Monospace theme from the dashboard or config.

    Monospace is now an official Flowershow theme for technical documentation, notes, and blogs. Select it in the dashboard or set "theme": "monospace" in your site configuration. See the themes gallery for a live preview.

  6. Dollar amounts in prose no longer break your text

    Currency mentions like "$61 … $76" are no longer mistaken for math formulas.

    Text that mentioned two dollar amounts used to break silently. A sentence like:

    Solar cost about $61 per MWh, cheaper than gas at $76/MWh.

    was mistaken for a math formula: everything between the two $ signs — including the *cheaper* emphasis — got swallowed and rendered as garbled KaTeX instead of text.

    This is now fixed. A $…$ is only treated as math when there's no space right after the opening $ and no space right before the closing $. Every other $ — currency amounts, a lone dollar sign, $HOME, etc. — renders as a literal dollar sign, and any markdown around it (bold, italic, links) renders normally.

  7. Custom Head Code — site-wide scripts and meta tags

    Inject analytics, verification meta tags, fonts, and widget loaders into the head of every page — from the dashboard or config.json.

    You can now add custom HTML to the <head> of every page on your site — no per-page embedding required.

    Use it for anything that belongs site-wide:

    • Third-party analytics and tag managers
    • Site-verification <meta> tags (Google Search Console, Bing, Pinterest…)
    • Custom fonts (<link> / <style>)
    • Widget loader scripts (Tally, Mailchimp, chat widgets…)

    Set it from the dashboard under Site Settings → Analytics → Custom Head Code, or in config.json:

    {
      "head": "<script defer src=\"https://tally.so/widgets/embed.js\"></script>"
    }
    

    Verification <meta> tags are rendered into the page <head> on the server, so crawlers see them on the first load.

    For form and widget embeds, put the loader script here once and drop just the <iframe> on the pages that need it — instead of repeating the whole embed on every page.

    CustomHtml is now deprecated

    Previously, the recommended way to embed a script was the CustomHtml component inside a page's markdown. It still works, but it's now deprecated: it re-runs the loader on every page that uses it and only works from .md/.mdx content.

    To migrate, split your embed in two — move the <script> into Custom Head Code, and keep just the embed markup (e.g. the <iframe>) in your page:

    <!-- before (deprecated) -->
    <CustomHtml html={`<iframe data-tally-src="https://tally.so/embed/your-form-id"></iframe><script src="https://tally.so/widgets/embed.js"></script>`}/>
    
    <!-- after: script in Custom Head Code, iframe in the page -->
    <iframe data-tally-src="https://tally.so/embed/your-form-id"></iframe>
    

    See the Custom Head Code docs for details.

  8. Sign in with email

    You can now sign in to Flowershow with a magic link sent to your email — no GitHub or Google account required.

    You can now sign in to Flowershow using just your email address. Enter your email on the login page and we'll send you a magic link — click it and you're in. No password to remember, and no GitHub or Google account required.

    Signing in with GitHub or Google still works exactly as before. And if you originally signed up with Google or GitHub, a magic link sent to that same email address signs you into your existing account — it won't create a duplicate.

  9. Knowledge graph is now live

    Interactive graph of how your notes connect — one of Obsidian's most beloved features, now in Flowershow.

    If you've used Obsidian, you know the graph. A mini graph panel now appears on every page of your Flowershow site: the current note sits at the centre, highlighted in orange, with every connected note radiating outward. Hover a node to dim everything unrelated; click one to navigate to it. Two buttons in the corner let you go further: one opens a full-size local graph in a modal, and another opens the global graph — every note in your site at once.

    Why it's here now

    The graph needs a fast, queryable map of which page links to which. The backlinks feature shipped that infrastructure — a dedicated Link table that captures every wiki link, note embed, and CommonMark link during the publish pipeline. The graph is the second feature built on top of it.

    Configuring it

    The graph is off by default. Turn it on site-wide in Settings → Show Knowledge Graph or via config.json:

    {
      "showKnowledgeGraph": true
    }
    

    Learn more in the Knowledge Graph reference.

  10. Backlinks are now live

    Pages on your site now show which other pages link to them.

    Every page on your site now shows a Links to this page panel listing all other pages that link to it — using wiki links or standard Markdown links.

    Backlinks are on by default. To turn them off, disable Show Backlinks in your site's Settings or set showBacklinks: false in your config.json.

    Learn more in the Backlinks reference.

Built with LogoFlowershow