Release 0.21.0 · 12 Sep 2026

Micronaut Planner — what's new

0.21.0 is a correctness release: restoring a previous version, importing a backup, and the autosave ring itself no longer risk quietly dropping the study you had open, and "Clear all stored data" now actually clears everything it says it does, scoped to the tab you run it from. The spillover check that gates export reads your panel the same way the Panel step displays it, names every blocking measurement so you can jump straight to it, and lets you record a per-pair acknowledgement when two dyes really do have to share a panel. A handful of copy and arithmetic errors on this very page, and elsewhere in the app, are also corrected.

Runs from a single HTML file · no install, no account, no server.

Highlights

What 0.21.0 changes.

🛟

Restore, import and autosave can no longer lose your study

Restoring a saved version or importing a backup now protects the study you had open before replacing it, instead of leaving it to a 500ms autosave window or a full autosave ring. A failed import now says plainly that the file wasn't a valid backup, rather than printing a raw parser error.

🧹

"Clear all stored data" now clears everything it names

The walkthrough progress, onboarding answers and other app state it used to leave behind are now swept along with your saved versions -- scoped to the tab you run it from. Your theme is kept, on purpose, and Settings says so.

🔬

The spillover check reads the same panel you see

Export's spillover gate now resolves fluorophores exactly the way the Panel step does -- Panel assembly first, the Markers field only as a fallback -- so a measurement can't read "blocked" in one place and clear in the other. Every blocking issue names the measurement it belongs to.

🤝

Spillover conflicts can now be acknowledged

When two dyes really do have to share a panel, record why (sequential acquisition, filter-separated, or your own reason) and the block downgrades to a visible warning instead of hiding it. The acknowledgement is tied to that exact pair and is withdrawn automatically the moment either dye changes.

🈳

Non-Latin names no longer vanish silently

A group name or factor level that a filename can't represent used to become UNSPECIFIED with no explanation. It now still gets a safe placeholder, but Design and Review also name exactly which value lost its characters and where.

Previously in 0.19.0

A spectral-data release, 05 Sep 2026 -- kept here for the record, not presented as current.

0.19.0 was a spectral-data release. Every one of the 85 fluorophores that had only ever been drafted was checked against a manufacturer or curator source, and 26 of them turned out to be wrong -- including Alexa Fluor 488, off by 6 nm, and DRAQ5, whose stored emission was off by 16 nm. Those values were corrected and cited. 143 of the pack’s 157 top-level entries now carry a source; counted at the level a user actually picks a fluorophore (8 of those entries are families expanding into 41 named variants, 190 selectable spectra in total), 174 are cited and 16 stay drafted. The 14 top-level entries that stay drafted are Cy2, Cy7, TRITC, DCFDA (H2DCFDA), CFP, GFP, IRFP, mRuby, BFP, YFP, GCaMP, miRFP, Hoechst and ER-Tracker — named here so this page is complete on its own, and detailed in the full 0.19.0 changelog entry, because an honest gap is more useful than a confident guess.

🔬

26 spectral values were wrong, and are now fixed

Alexa Fluor 488 was stored as 490/525 nm; Thermo’s own table says 495/519, a 6 nm miss. DRAQ5’s emission was 16 nm low. ATTO 633 was 6 nm out. Each corrected value now carries the manufacturer page it came from, with the date it was read.

📖

143 of 157 top-level entries now cite a source

Up from 72. Seven whole probe families -- MitoTracker, LysoTracker, SYTOX, BODIPY, CellMask, LIVE/DEAD and SYTO -- had every variant sourced, so the family can finally be marked as cited rather than drafted. Counted per selectable spectrum rather than per top-level entry (the 8 families expand into 41 named variants), that’s 174 of 190 cited.

🚧

14 entries deliberately stay uncited

Cy2, Cy7 and TRITC had no primary source worth citing; DCFDA (H2DCFDA)’s source gives a range, not a peak, and so does ER-Tracker’s Blue-White DPX variant, which is why that family stays uncited too. The other nine -- CFP, GFP, IRFP, mRuby, BFP, YFP, GCaMP, miRFP and Hoechst -- see the next card and the 0.19.0 changelog entry on GitHub for the full reasoning behind all fourteen.

🏷️

Some names mean more than one dye

CFP, GFP and mRuby each store one value under a key that could mean several real variants, and the pack carries no note saying which one, nor a reference record for one in this repo yet. IRFP is the exception: its note names it as iRFP713, and that value is backed by a citation. All four remain flagged unreviewed. BFP, YFP and miRFP are similarly generic keys. Hoechst and GCaMP are different: the pack’s own notes name Hoechst specifically as Hoechst 33342 and describe every GCaMP variant as sharing one spectrum, so neither is an ambiguous name — they simply haven’t been checked against a source yet. Left alone for now, because renaming a key would break saved studies.

⚠️

Cited still isn’t specialist-reviewed

A cited entry means its two peak values match a source we fetched and recorded. It does not mean a microscopist checked it, and the Gaussian curve widths in the spectral view remain estimates throughout.

See it in action

A few screens from the shipped example study (the oregano-coating wound-healing plan you can open from Study map).

Study map screen showing the research question, system, comparison groups, experimental unit, and four measurements for the example wound-healing study.
Study map — the shape of a study at a glance: question, system, comparison, and every measurement it holds.
Research brief screen with a free-text study description on the left and, on the right, a Review panel suggesting a structured Magnification field extracted from an exact-text match in that description.
Research brief — the deterministic free-text parser suggests structured fields from your description; nothing is applied until you accept it.
Acquisition panel for a measurement, showing fluorophore channels seeded from the markers field, a source-cited-badge spectral overlap chart, and the structured panel-assembly editor.
Acquisition — fluorophore channels, the spillover check, and the spectral view, each carrying its provenance badge (cited source, or unreviewed for the 14 still-drafted entries) rather than asserted as fact.

Looking for the day-to-day worklist?

ROADMAP.md and TASKS.md track what's being built right now; this page and its changelog track what's actually shipped, by version.

Full changelog

Every version, newest first.

Loading…