Gyroid was never meant to be the endpoint. It's the friendliest of the triply-periodic minimal surfaces to start with — isotropic, self-supporting, forgiving to print — which is exactly why it made sense as the first thing to get right. But a single-surface tool was always a placeholder for something wider.
Why bother with more than one
Gyroid, Schwarz P, and Diamond are all minimal surfaces of the same family, but they behave differently once you actually load a part. Gyroid channels run in every direction with no straight walls at all, which is what makes it isotropic. Schwarz P opens into large, rounded pores along the axes — more permeable, better suited to parts that need airflow or filtration, and stiffer along its principal directions rather than uniformly. Diamond packs the densest network of the three, trading print-friendliness for stiffness and energy absorption per unit weight. None of them is strictly "better" — they're different tools, and a workbench that only offered one was quietly forcing every design into the same mould.
The architectural decision
Adding surfaces wasn't just a matter of dropping in new equations. Each TPMS folds through space differently, so each one needed its own measured density calibration — the density↔isovalue table from the previous post isn't universal, it's specific to the surface it was measured on. The decision was to treat each TPMS as its own self-contained module, complete with its own calibration constant, rather than trying to force one formula to fit all three. Ask for 30% density on a Diamond lattice and 30% on a Gyroid, and they land at genuinely the same relative density — not an approximation carried over from whichever surface happened to be calibrated first.
From macro to workbench
Somewhere in this process, the project stopped being a macro you'd paste into FreeCAD's macro editor and became an actual workbench: proper packaging, its own menu, its own dialog, installed by dropping a folder into FreeCAD's Mod directory rather than copy-pasting code. Alongside the three surfaces, this is also where FEM mid-surface export landed — extracting the lattice's mid-surface so it can be handed to CalculiX, Abaqus, or Gmsh for structural analysis. It's not FEM-grade on its own (that's still a remeshing step in your solver of choice), but it closes the loop from "generate a lattice" to "actually analyse what you built," which was the need that mattered most from day one.
And it's released under the GPLv3, in the open, from the start. That part was never really a decision to deliberate over — it followed directly from why the project exists at all: research-grade lattice design shouldn't need a research budget, and a tool like this is worth more the more people can use it, poke at it, and improve it.