Changelog

Every release, newest first, exactly as shipped to evaluators. Nothing here is planned — if it’s listed, it exists and is covered by the test suite.

v1.5.0 — Subscription licensing: Fluidraft goes to market

A new subscription edition joins the licence file (purely additive — every licence already issued keeps its exact behaviour). A subscription is judged against time, not build date: while it runs, every current build works fully, offline, and inside the last 30 days the licence chip warns with days remaining. When it ends, the app switches to the watermarked evaluation mode — every project still opens, nothing is deleted, everything already exported stays valid — and installing a renewed licence file restores full access instantly, offline. Rolling the system clock back does not resurrect an expired subscription. Paid modules ride the subscription and can carry their own end date. Ten new backend tests and four new frontend tests cover the term boundaries, the clock guard and the expiry states; suite now 369.

v1.4.2 — ASSAYFORGE: the candidate sandbox — Module 002 complete

Candidates become designs only by your explicit hand. The sandbox shows the current design against a candidate — both actually solved — with each changed parameter as current → candidate. Acceptance is one canonical, undoable commit: it applies the parameters, records the acceptance in the project file, and correctly marks simulation results stale. One Ctrl+Z reverts everything, and the browser test presses it to prove it. An infeasible candidate's Accept stays disabled, with the reason.

v1.4.1 — DROPLET LAB × ASSAYFORGE: the three modules optimise together

DROPLET LAB publishes a droplet-evaluation capability through the module registry; "hit a target droplet size" becomes an ASSAYFORGE objective scored by the validated model. A candidate the model refuses to predict is marked infeasible with the model's own explanation — never ranked on an invented number — and with DROPLET LAB unlicensed the engine refuses outright rather than substituting its own droplet physics. Reference test: target 210 µm plugs → the engine finds the 100 µm channel exactly.

v1.4.0 — ASSAYFORGE: the optimisation engine

Deterministic-grid search over a study's allow-listed variables: bounded (hard cap 500 evaluations), byte-for-byte reproducible, and with zero physics of its own — every candidate is the full project solved by the core solver, and a test re-solves candidates by hand to one part in a million. Hard constraints reject outright and an infeasible candidate can never outrank a feasible one. Validated by a found optimum: on the four-outlet flow balancer the engine must rank the known symmetric design first, at 0.00% outlet variation, or the release doesn't ship.

v1.3.12 — ASSAYFORGE: objectives and hard constraints

A stated vocabulary — balance the outlets, hit a target flow, minimise pressure; max pressure, min/max width, max Reynolds — where every entry names the solver quantity it is evaluated against. The editors render from the vocabulary itself, so UI and validator cannot drift. Validation is project-aware: flow balance demands real outlets, targets must name real objects, and a study without an objective says plainly that the engine will refuse it.

v1.3.11 — DROPLET LAB: the FABRIX bridge

Droplet performance and manufacturing feasibility, side by side: the designed generator is checked against the FABRIX process minimums through the module registry — a 50 µm dispersed arm against a 75 µm CNC floor reads NOT MANUFACTURABLE with both numbers. The process's own tolerance figure prefills the robustness study. Without FABRIX, predictions run unchanged and the panel says why no check appears.

v1.3.10 — DROPLET LAB: manufacturing robustness

Fabrication tolerance → droplet variability, through Fluidraft's canonical tolerance conventions: designed 100 µm ± 5 µm → plug 210 µm, range 195–227 µm. Depth varies only when you state a depth tolerance; samples that leave the model's domain are counted and excluded, never extrapolated; and the band is explicitly not a yield figure.

v1.3.9 — DROPLET LAB: sweeps and the operating map

Bounded 1D sweeps and the Qc × Qd regime map — every point one canonical model evaluation, out-of-domain points shown as such with no number attached. Grids are hard-capped in the domain layer; results export as CSV with the validity column.

v1.3.8 — DROPLET LAB: the prediction workspace

Assign phases with traceable properties (your measured interfacial value wins; the cited pair library is labelled indicative; an unknown pair stays unknown), set the flows, and the answer leads with MODEL STATUS. Two significant figures on screen — ≈ 210 µm, never false precision — and every run persists as the project's droplet system.

v1.3.7 — DROPLET LAB: reference validation opens prediction

The Garstecki T-junction model is validated by automated test against the coefficient band an independent published study fitted to the original experimental data (α = 1.13 ± 0.16 — Nekouei & Vanapalli, Phys. Fluids 2017; primary source Garstecki et al., Lab Chip 2006), plus two mandatory out-of-domain cases that must refuse to answer. Only because that gate passed does the prediction API exist.

v1.3.4 – v1.3.6 — DROPLET LAB: the scientific foundation

Pair-interfacial properties with one strict rule (measured value → cited library → explicitly unknown, never invented); dimensionless utilities with exact definitions; the model registry with five machine-readable validity states; the T-junction component gains junction angle and independent arm depth with defaults that reproduce the previous geometry to the nanometre; and a geometry-extraction service that both the workspace and the optimiser consume.

v1.3.1 – v1.3.3 — two new modules take their places

ASSAYFORGE (Module 002) and DROPLET LAB (Module 003) register through the same module system FABRIX introduced — each independently licensed, each honestly locked when absent, each carrying its mark on its own launcher. The module registry gains capabilities, so modules compose without ever importing each other (enforced by test); the right-panel tab strip gets a dedicated plug-in row that never clips a module's name; and DROPLET LAB ships with a written audit of the droplet science Fluidraft already carried. The variables system (v1.3.5) makes studies editable: an allow-list with bounds, validated against the real project.

v1.3.0 — FABRIX complete: licence schema 2, module entitlements

Module 001 is finished. This release makes the paid module sellable without changing anything for anyone who already holds a licence.

Test state: 185 backend + 19 gateway + 45 frontend unit + Playwright E2E including the complete FABRIX workflow, on the app and the offline demo.

v1.2.4 — FABRIX: the manufacturing package

One zip for the shop, assembled from exporters Fluidraft already ships — nothing redrawn, nothing converted through a lower-quality intermediate (tests compare the packaged geometry to the core exporters byte for byte).

v1.2.3 — FABRIX: manufacturing tolerance

The question this release answers: the shop will miss nominal by a few microns — does the device still behave?

v1.2.2 — FABRIX brand integration

FABRIX now looks like what it is: a product inside Fluidraft. A branded launcher carrying the FABRIX mark sits next to the FLUIDRAFT wordmark in the toolbar; the same mark appears on the module tab, the workspace header and the activation panel. Launchers render generically from the module registry — the toolbar names no module, so future modules get the same treatment by supplying an icon. The mark ships embedded, so it survives the app, the single-file demo and the evaluation kit offline.

v1.2.1 — FABRIX: the DFM engine

The module starts earning its place: can this design be made with the process you chose, and what exactly is in the way?

v1.2.0 — the Fluidraft module system (FABRIX foundation)

The architecture release: first-party modules, compiled into the product and activated by entitlement — FABRIX first, with the registry built so later modules need no changes to the app shell.

v1.1.6 — one continuous cavity: seamless joints, no caps at connections

Physical honesty drove this release: a real microfluidic chip is ONE continuous cavity — component boundaries exist in the CAD, not in the glass. The 3D view now renders it that way.

Note: the view STL export mirrors the display mesh, so at connected ports it is open-ended by design; fabrication exports (GDSII, DXF, STEP, STL from the solid model) are unaffected.

v1.1.5 — close-zoom 3D construction: miter rings, opaque bodies, joint bridges

Close-up inspection (user-reported, third pass) exposed three remaining construction defects, all now fixed at the geometry level:

No solver, export or API changes; canonical geometry is untouched — these are pure view-construction fixes, verified against close-zoom screenshots of the reported scenes.

v1.1.4 — bends finished properly; division rebrand

Geometry (user-reported, second pass):

Brand: the division identity is now ALIANTICO RESEARCH SYSTEMS with the tagline "Scientific Software for Research & Engineering" — applied to the boot screen, fluidraft.com and the division hub site.

v1.1.3 — sweep construction fixed at the core (user-reported)

Close inspection of canonical-mode channels exposed two real construction defects in the 3D sweeps — geometry bugs, not styling:

Both fixes apply to all three cross-section profiles (rect/dome/circle) and to every render style; Canonical remains the exact solver polyline.

v1.1.2 — brand integration

The Fluidraft logo (the F carrying its own microchannel) becomes the product icon and favicon: inlined as a data URI in both the app and the single-file demo (which therefore stays fully offline), with a reversed variant for dark surfaces. fluidraft.com gains the mark in the navigation and hero, plus a full favicon set (ICO + PNG + apple-touch).

v1.1.1 — the "Tech" render style

A fourth viewport style alongside Drafting/Clay/Holo, bringing the visual language of plant-CAD renders to Fluidraft's true geometry — and nothing but the true geometry (no invented flanges or hardware):

v1.1.0 — closing the gaps: STEP, distributed transients, droplet prediction, CFD hand-off

The two loudest "does not do" lines shrink — honestly, with real implementations, not copy edits:

A real B-Rep kernel (ADR-035). STEP export on OpenCascade: rectangular processes as exact footprint prisms (holes honored), circular and dome processes as true profile sweeps along the channel centerlines — the same process-true cross-sections the solver uses. Round-trip verified with the kernel itself (write → read → count solids). Optional heavy dependency (requirements-step.txt); without it the endpoint answers 501 with install guidance, never a fake file. STEP joins the toolbar export menu.

Distributed 1D transients (ADR-036). Each channel becomes an R-C transmission line (~100 µm segments): pressure events now propagate ALONG channels, settle times are position-dependent, and P(x,t) is reported and plotted. The Lab's Transient card gains a Lumped 0D / Distributed 1D model toggle. Steady limits provably match the exact steady solver; agreement with the 0D model in its own regime is tested.

Droplet generator prediction (ADR-037). In the squeezing regime, droplet T-junctions now predict plug length, volume, generation frequency and spacing from the Garstecki et al. (2006) scaling — labeled a reduced-order correlation, and WITHHELD with a stated reason outside its validity envelope rather than extrapolated. Shown in the results panel next to the regime estimate; the single-phase caveat never leaves.

OpenFOAM case export — the honest CFD bridge. When a design does need field CFD, Fluidraft now hands off instead of walling off: one click exports a meshing-ready case (true fluid-domain STL from the B-Rep solids, fitted blockMesh, snappyHexMesh with locationInMesh inside a real channel, transportProperties from the actual case fluid, and a README that lists the solved per-port velocities as boundary anchors and names the one remaining manual step — patch splitting — instead of hiding it).

Test state: backend 110 (+10: STEP round-trips and process-true profiles, 1D transient consistency, droplet correlation exactness and withholding, OpenFOAM case physics), gateway 19, frontend unit 16, 3 Playwright suites.

v1.0.1 — Stripe fulfilment: the checkout rail closes

Aliantico's existing Stripe account (Managed Payments, proven on the Chromastore launch) becomes Fluidraft's checkout rail. The one piece Stripe lacks natively — per-customer licence issuance — now lives in the gateway (services/ai-gateway/stripe_fulfillment.py):

v1.0.0 — the commercial release: yearly licensing with perpetual fallback (ADR-034)

Fluidraft becomes a licensable product, with the Aliantico group's annual-licence promise implemented as the mechanism itself:

v0.10.10 — the 3D returns to the loader

The Research Runtime splash regains its third dimension, per the original "2D front + static 3D hologram backgrounds" direction: two static isometric wireframe projections of the same Y-junction co-flow chip float behind the plot (projection base, light beam, slab wireframe, cyan/violet co-flow streams with the dashed diffusive interface, corner fiducials, 75.00 × 25.00 mm dimension callouts). Still pure SVG/CSS — no WebGL on the loader — with a slow breathing glow, hidden on narrow screens, and disabled under prefers-reduced-motion. Boot-gate contract unchanged; all suites green.

v0.10.9 — the "Research Runtime" boot screen

The loader is redesigned as a scientific instrument warming up, not a sci-fi splash: an annotated Y-junction co-flow device rendered as an engineering plot, with axes, dimension leaders, a pressure probe, and a live solver-convergence strip (normalized residual 1.0e+0 → 1.0e-6).

v0.10.8 — STL export (closing the loop on the CTO's §5 positioning review)

Rather than only *labeling* the gap between viewport and CAD kernel, this release ships the part of it that customers actually need:

Version 0.10.8 everywhere (enforced by the release-hygiene tests).

v0.10.7 — the beta-candidate hardening release (Pietro's v0.10.6 punch list)

Closes every P0/P1 and the agreed P2 items from the CTO's v0.10.6 technical evaluation, in his stated order: configuration security first, then E2E coverage of the viewport and recorder, then release-package hygiene.

P0 — deployment security

P1 — verification

P2 — robustness & hygiene

Deliberately deferred (tracked, not hidden): the multi-temperature fluid property editor (UI edits the single active property set; the schema already supports multiple) and the experimental Q–ΔP validation campaign on fabricated chips — the latter is the first item of the commercial roadmap and the CTO's stated gate for "validated".

Test state: 91 backend + 13 gateway + 16 frontend unit (Vitest) + 3 Playwright E2E suites (editor, interactions, viewport/recorder — the last also against the offline demo). All green on this build.

v0.10.2 – v0.10.6 — polish pass (user feedback)

v0.10.1 — refinement pass (user feedback)

v0.10.0 — CAD viewport (ADR-033)