Release notes

What changed

Every release, in plain language — including the parts that are still unverified.

2026-08-13

MusicPrompt 2.1

2.0 shipped the workspace. 2.1 is about making sure people can find it — and it starts with an uncomfortable discovery.

The 2.0 SEO work was never live

Everything 2.0 built for search — prerendered pages, per-page titles, hreflang, structured data, a real 404 — was sitting on an unmerged branch. Production was still serving the previous build as a client-only app, which meant every English URL returned byte-identical HTML with a canonical link pointing at the home page. Search engines were being told, explicitly, that nothing except the home page was worth indexing.

That is fixed. It was also the single largest thing on this list; everything below is a real but much smaller improvement on top of it.

One h1 per page, and landmarks everywhere

The changelog rendered two h1 elements — one from the page, one from each release's markdown — and would have grown another with every release. Release titles are now demoted to h2, so the page keeps a single heading root no matter how long it gets.

Library genre and mood pages jumped straight from h1 to h3, and mood pages had no h2 at all. They now have a real section heading above the blueprint grid. /blog, blog posts and guide pages were missing a <main> landmark; all page types have exactly one now.

Fonts are self-hosted

Every page was blocking on a stylesheet from a third-party font host before it could paint. Both families are variable fonts, so the whole set is now two files totalling 70 KB, served from the same origin and preloaded.

The Studio workspace also moved into its own chunk. It is the largest component tree in the app and is reachable from exactly one route, so every marketing and library page was downloading it for nothing.

Structured data on every page type

/guides, /blog, /changelog and /studio had no JSON-LD at all. They now carry ItemList and BreadcrumbList, guide and blog posts gained breadcrumbs, and every page carries site-level Organization and WebSite nodes.

No SearchAction was added. The library filters in memory and has no URL you can send a search to, and declaring an endpoint that does not resolve is worse than declaring none.

Icons, and a real /favicon.ico

The icon existed only as a data URI inlined into each page, so a direct request for /favicon.ico — which crawlers and link-preview bots make — returned the app shell. There is now a real icon file, an Apple touch icon, and a web manifest.

Social cards are no longer shared: each library genre gets its own generated card carrying its name and blueprint count, so links to different genres no longer preview identically.

Guides, doubled

Three of the four guides carried under seventy words of their own once the header and footer were discounted. All three have been rewritten at length, and two guides have been added: one on section tags and song structure, one on using the Exclude field without over-constraining.

/blog also stopped claiming to be a how-to collection. It was competing with /guides for the same readers while holding a single post; it is now what it actually is — notes on how the product got built.

Smaller things

Meta descriptions were cut at 155 characters mid-word; they now break on a word boundary. The language switcher was a pair of buttons, so there was no crawlable link between the English and Chinese versions of a page — it renders real links now. A hardcoded keyword list and author tag were being emitted on all 57 pages, including every Chinese one; both are gone.

2026-08-13

MusicPrompt 2.0

Version 2.0 is the release where MusicPrompt stopped being a prompt generator and became a workspace you come back to.

The Studio is staged

The tool used to be one long page. It is now five stages — Brief, Blueprint, Export, Result, Improve — with exactly one primary action at each. Export will not let you move on until all three pasteable fields are actually copied, and Settings became a checklist you tick off inside Suno rather than a field pretending to be copyable.

Projects live on a dashboard that shows what each one needs next: which stage it is on, how many versions and results it has, and whether a keeper is set.

Every diagnostic ends somewhere

When a suggested change can be applied automatically, one button applies it. When it cannot, the diagnostic now spells out the steps, points at the exact control, and — when the fix belongs in Suno — hands you the text to paste. There is no longer a state where the app names a problem and leaves you with it.

Marking a keeper is its own action. It used to happen silently when you filed "usable" feedback, which meant the most important decision in the workflow was a side effect.

Versions can be compared

Every version now shows what changed against the keeper, what was kept, and whether the change really was a single variable. That comparison is the whole point of iterating one change at a time, and it was previously left to memory.

Your work is safer

Storage moved from localStorage to IndexedDB, with localStorage kept as a fallback and as a recovery copy. Writes are debounced and flushed when the tab closes. Before any schema migration the original data is copied aside, and data that cannot be read is quarantined and offered back as a download rather than replaced with an empty workspace. You can back up and restore the whole workspace as a file.

A prompt library, and other targets

/prompts is a browsable library of blueprints by genre, mood and use case. Every field on those pages is compiled live by the same engine the Studio runs, so what you read is what you would get, and any entry opens in the Studio as a real project.

Output now adapts to Udio and ElevenLabs Music as well as Suno. Suno's output is unchanged, byte for byte. The other two are marked as unverified until someone checks them against the live products — the app says so rather than implying confidence it does not have.

Smaller things

Light theme, a searchable tag catalogue that matches Chinese and English names, share links that carry a blueprint in the URL fragment without a server, real 404s, and a sitemap that cannot drift from the pages that exist.