Releases: aai2k/TFStudio
Release list
TFStudio 1.7.2
Changelog
v1.7.2
Added
- Coating Library: a new window in the Design group holds coatings as reusable stacks, yours and a built-in set of checked starting designs, searchable by type, tags, substrate and wavelength. Each shows its spectrum and can be placed on the front or back of the active design.
- Design Editor: the Tools menu can save the front or back coating into the Coating Library.
- Coating Library: Share a coating… offers one of your coatings for the built-in library, as a prefilled GitHub post, an email or a file.
- Process Exporter: a witness-chip mode writes each chip's spectra to its own folder, following the chip plan from the Monitor Worksheet; a warning shows when the spectral range runs past a material's measured data, with an offer to pull it back.
- Material Editor: imports TFCalc and Essential Macleod material files alongside OptiLayer, interpolated between their points the way those programs do it, with an n/k preview before a material is added to a catalog.
- Setup tab: an Import button reads TFCalc, Essential Macleod and OptiLayer design files into a project, matching their materials to your catalogs and previewing each design before it is added. Rugate designs are refused for now.
- Design import: a TFCalc design keeps its wavelength unit and, where TFCalc did, is evaluated with both substrate surfaces; an OptiLayer design keeps the materials from its folder unless you pick a catalog material; an Essential Macleod design takes its materials from the program's own database on the computer, with a button to point at the folder when it is elsewhere.
- Design import: a material matched from your catalogs is marked as matched on name alone, with the file's own index shown beside it where the file has one; a design in optical thickness says the material you pick sets its layer thicknesses.
- Optical Evaluation: the vertical axis can be shown in decibels or optical density, so a blocking band is legible; density applies to transmittance only.
- Material Editor: a tabulated material has a switch between cubic and linear interpolation of its points; the choice travels with the material inside a design, and GD/GDD curves break at the table points under linear.
Changed
- Material Editor: the chart spans the material's own wavelength range; type a wavelength under it to read n and k, beside a sampled n, k table. Wavelength limits keep their decimals.
- Material Editor: the Cauchy and general Sellmeier formulas take any number of terms, added with a button in the form; their names no longer carry an OptiLayer prefix.
- Monitor Worksheet: the Crystal column shows the thickness on every layer and highlights the layers the crystal has to carry.
- Process Exporter: polarization, angle, spectral range and export step moved behind a Settings button and the witness-chip controls into the sidebar, so the control row no longer wraps on resize.
- Stack Formula: a coefficient can sit inside a run of symbols, so
LHLHL6HLHLHparses without spaces; Start from substrate is now on by default.
Fixed
- Design Editor: the stack diagram and the OT, QW and FW columns now read a material that travels inside the design instead of treating it as air; a material that resolves nowhere shows a dash.
- Monitoring windows: the witness chip is monitored in air whatever medium the design is embedded in, so a filter designed between two glasses no longer shows a monitor signal near 100 %.
- Monitor Worksheet: a layer the monitor cannot see, such as silica on a silica chip or one deep in a saturated stopband, now reports no turning points and an infinite Δd, and no longer decides the chip's Auto λ.
- Process Exporter: spectra on screen and in the .res files are computed with the part or chip in air, whatever medium the design is embedded in; saving the .res files of a design with hundreds of layers is many times faster and no longer freezes the window.
- Torn-off windows: dragging a window by its title bar no longer shakes or jumps, and the window keeps its exact size on the way instead of nudging its controls about.
- Torn-off windows: the divider between a table and its plot can be dragged, and a plot's scrollbar handle or zoom box lets go where the mouse does instead of sticking to it.

TFStudio 1.7.1
Do you use an ellipsometer? This release imports measured Ψ and Δ, and I want it to read your instrument's files exactly as exported. Share a sample file in issue #66 and the format gets supported.
Changelog
v1.7.1
Added
- Monitoring windows: an absolute noise floor joins the relative signal error, so a wavelength where the signal has died scores as unusable instead of noiseless.
- Monochromatic Monitoring Wizard: one wavelength and one termination strategy can be set on the whole run at once.
- Wavelength vs Angle: a new analysis window maps T, R or A over a wavelength range and an angle range at once, as a heatmap or a rotatable surface.
Changed
- Every analysis window that sweeps a wavelength range now warns when it reaches past a material's measured data and offers to pull the range back; windows that work at a single wavelength offer the same for that wavelength.
- Plot Engine: the curve and surface panels now use the same controls as the rest of the analysis windows.
- Monitor Worksheet: Layers per chip now goes up to the whole run, so direct monitoring on a single chip can be planned; long runs also compute much faster.
- Monochromatic Monitoring Wizard: the per-layer monitoring plan has its own page; Auto λ now plans wavelength and termination strategy together, and is much faster on long designs.
- Process Exporter and the Broadband Monitoring Wizard compute much faster on designs with many layers.
Fixed
- A 3D surface now draws each swept axis over the range it was swept, instead of squeezing the data into a corner of the box.
- A surface with a point it could not compute now colours the rest of the map normally, instead of flattening every cell to one colour.
- Surfaces and heatmaps: the colour bar fills the plot and names the value on hover; both redraw much faster and no longer trail behind a window resize.
- Plot Engine: number fields in the curve and surface panels can be cleared and retyped.
- The Monitor Worksheet and Process Exporter charts no longer lag on designs with hundreds of layers.
- Monochromatic Monitoring Wizard: running the simulation on a design with hundreds of layers no longer freezes the app.
- Monitoring wizards: the layer buttons scroll on long designs instead of running off the page, and the selected layer stays in view during playback.
- Monitoring wizard signal previews: the readout can now land exactly on the marked cut line instead of hopping over it.

TFStudio 1.7.0
Do you use an ellipsometer? This release imports measured Ψ and Δ, and I want it to read your instrument's files exactly as exported. Share a sample file in issue #66 and the format gets supported.
Changelog
v1.7.0
Added
- Layer Thicknesses: a new analysis window that draws every layer as a bar in its material's color, with the thickness axis in nm, optical thickness, QWOT or FWOT.
- Tear-off windows: drag a window's tab anywhere that is not a docking target and it becomes its own window you can put on a second monitor Drag it back over the layout to dock it, or use the dock button on its title bar.
- Monitor Worksheet: a new window that says whether the design can be terminated on an optical monitor. It divides the run across witness chips, picks a monitoring wavelength for each, and flags the layers that cannot be stopped closely enough.
- n,k Characterization: a new window that derives a film's index, extinction and thickness from a measured transmittance and reflectance, or from an ellipsometric Ψ and Δ pair. It says how far the model is from the measurement, and names the conditions under which a small residual is still describing the wrong film; the result saves as a material, or as a design that reproduces the measurement it was fitted to.
- Measured Spectra: fit a design to an imported measured curve. The fit becomes one row in the merit function, and you choose whether it uses the measured points as they are, every Nth of them, or an even wavelength step.
- Measured Spectra: a curve records the angle of incidence, polarization and side it was measured at, and the fit refuses a curve measured on the side the design is not evaluated on.
- Measured Spectra: measured curves export in nanometres, micrometres or wavenumber, as a fraction or a percentage, and you pick which curves go in the file.
- Measured Ellipsometry: a new window that imports a measured Ψ and Δ pair from a spectroscopic ellipsometer, including a file whose axis is photon energy in eV and one that repeats its wavelengths for several angles of incidence. The pair is drawn over the calculated curves on the ellipsometry plot, and measured or calculated Ψ/Δ export as CSV.
- A splash screen while the app starts, showing the version.
Changed
- Mono Simulator: the monitor signal now reads through the whole witness chip, bare back face included, and the chip's glass can be set separately from the design substrate.
- BBM Simulator: the same witness-chip signal and chip glass choice as the Mono Simulator.
- Measured Spectra: rebuilt to match the analysis windows. The preview is a real chart of the measurement against the design, and an imported curve can be renamed, recoloured, retyped, rescaled and trimmed without importing it again.
- Optical Evaluation: the plot dims the wavelengths that fall outside a material's data range, with the material named in the band. The out-of-range warning gains a button that sets the range to where every material has data.
- The ribbon is now five tabs: Setup, Analysis, Optimization, Production and Help. The tolerance and needle tools are laid out on the tab instead of hidden in a dropdown, and double-clicking the open tab collapses the ribbon.
- A search box on the tab strip finds a tool by name from any tab and opens it.
- The menu bar is gone. New, Open, Save, Undo and Redo are on the Setup tab and repeated in the title bar; the welcome tour, tutorials, documentation, About and the update check are on the Help tab; layouts and fullscreen are under the logo.
- Settings is now a Preferences button on the Setup tab, and the dialog is rebuilt: each setting is one row with its control beside it, instead of a stack that left most of the window empty.
- Preferences gained a Quick Access page: choose which tools sit in the title bar and in what order. The list is kept with the other preferences, so a reinstall does not take it with it.
- Dropping a window's tab on the docking compass shows where it will land before you let go.
- The portable build starts much faster.
Fixed
- Ctrl+O opens a design file. It was listed as a shortcut but did nothing, as were Ctrl+N, Ctrl+, and Ctrl+1.
- The readout lists every curve at the wavelength under the pointer. A measured curve is on the instrument's wavelength step, so between the design's samples the readout showed the measurement alone, and on them the design alone.
- The app no longer opens in the light theme for a moment before switching to yours, and the window edge no longer flashes white while being resized.
- Preferences and the Design Editor tool dialogs no longer close when you click beside them.
- Merit Function Editor: the Add and Delete buttons above the operand table are translated.
- Mono Simulator: a thin layer cut on a level no longer converges to a slightly wrong thickness even with a perfect monitor.
- Measured Spectra: a column headed R% is read as reflectance, and the import now says how many rows in the file held no value.
- Measured Spectra: PerkinElmer ASCII exports no longer read their own header settings as the start of the spectrum.
- Measured Spectra: files that tag every data row, and headers split into a name row and a unit row, import correctly instead of being rejected or misnamed.
- Wavelength plots keep a readable grid whatever they span. An axis reading far outside the usual few hundred nanometres lost its labels entirely, and the Integral Values overlay drew a gridline every 50 nm however wide the range.
- Ellipsometry Evaluation: hiding Ψ left the plot with no grid lines at all. The grid now follows whichever curve is on screen.
- Ellipsometry Evaluation: the second Δ convention was labelled "Woollam", which is not what a Woollam instrument writes. It is now "360° − Δ", and both options say what they are for. The default is unchanged and still matches measurement files.
- Design Editor: the layer right-click menu and the drag handle are translated.
- Whole-sample spectra are now fast at every angle of incidence, not only at normal.
- Ellipsometry Evaluation redraws several times faster, in both the wavelength sweep and the angle sweep.
- The portable build keeps your preferences, window layout and theme between runs, and no longer shows the welcome screen at every launch.

TFStudio 1.6.3
Changelog
v1.6.3
Added
- Simplified Chinese is now available for the app interface and bundled documentation (contributed by imyu37).
- Design Editor adds optical-thickness-preserving material replacement, Herpin group collapse/restore, rounding and quantization, repeatable thickness kicks, stack copying, and spreadsheet-style typing.
- Status monitors now cover phase, dispersion, peak field, ellipsometry, spectral features, thickness operands, and stack totals.
- Optical Evaluation adds a 0 to 1 scale; analysis plots add two-axis rectangle zoom and double-click reset.
- Process Deposition Simulator adds layer navigation via up/down arrows and focused or all-layer chart views.
- Needle Automatic, Gradual Evolution, and Structural Search keep separate history for each run.
Changed
- Status monitors use quantity-specific units and precision, a grouped picker, and a scrolling chip row.
- Process Deposition Simulator UI got updated, and its export step now defaults to 0.5 nm.
Fixed
- Updated app icon now appears in Linux application menus at standard icon sizes.
- Numeric fields in DE accept either decimal separator, reject malformed values, keep the thickness caret where clicked, and fit four-digit thicknesses.
- Process Deposition Simulator keeps its columns and timeline labels aligned; whole-sample spectra are much faster at normal incidence.
- Live plots retain hover and zoom during runs; zoom reset, rectangle zoom, and design switching now behave consistently.
- Optical Evaluation targets can be drawn and dragged again.
- Needle Automatic retries thin starting designs; Refinement stops cleanly and keeps Best available.
- Cone-angle averaging no longer blocks the Design Editor during recalculation.
TFStudio 1.6.2
Changelog
v1.6.2
Added
- Design Editor: drag a layer by its handle to move it, and drag a multiple selection to move all of it at once.
- Design Editor: select several layers with Shift-click or Ctrl-click, then copy, paste, insert or delete them from the right-click menu. Paste says how many layers it will place, and puts them above or below the row you clicked.
- Design Editor: edit from the keyboard. Arrow keys move between cells, Enter or F2 starts editing, Enter and Shift+Enter commit and step down or up, Tab moves across.
Changed
- Every plot is drawn with Apache ECharts instead of Plotly. Hovering a curve updates the readout as fast as the pointer moves, where it used to update about a dozen times a second, and windows holding many curves open faster. Expect much smoother experience.
- Design Editor: narrow windows keep the Material column visible and scroll sideways instead of squeezing it away.
Fixed
- The resize cursor no longer flickers while a divider is dragged across plots and toolbars.
TFStudio 1.6.1
Changelog
v1.6.1
Added
- An analysis window's settings panel can save what the window is set to as the values it opens with: Save as default, and Restore defaults to go back. Fourteen windows have it.
- Settings → Analysis now changes everything those panels change: range, step, angle, polarization, mode, distribution and the rest, not just curve colours. Each window keeps its own range, so a scattering plot and a colour calculation can sit on different bands.
- Saved values live in
Documents\TFStudio\Preferences\window-defaults.json, a readable file you can copy to another machine. The curve colours moved there too, so neither is lost when TFStudio is uninstalled. Preferences is a data folder like Designs and Materials and can be pointed anywhere writable. - Every analysis window can save its numbers to a file from the Results strip.
Changed
- All 15 analysis windows were rebuilt on one layout, and give their height to the plot rather than to sidebars and footers. Two windows fit side by side on a laptop with both plots readable.
- Inhomogeneities and Roughness / Scattering draw at 2 nm instead of 5. On a 5 nm grid a graded band edge and a scatter loss following R(λ) both came out as a staircase.
- Both windows also draw avg, s and p together, the way Optical Evaluation does, instead of one channel and one polarization at a time.
- Ellipsometry opens in the Azzam-Bashara Δ convention, with separate Ψ and Δ switches.
- GD/GDD no longer offers Total for transmission. It drew Total, Front, Substrate and Back on one axis with no way to turn any of them off, and a millimetre of substrate is thousands of times the coating term, so the two coating curves sat flat along the bottom. Front and Back are unchanged.
Fixed
- Window controls reset when a window was docked, moved, or closed and reopened. Windows now keep what you set for the rest of the session, along with the result of a search, sweep or Monte-Carlo run.
- The material and operand pickers would not close by clicking the box again.
1.6.0
Changelog
v1.6.0
Added
- Material Dispersion window: phase, GD, GDD and TOD for one material over a path length in nm, µm or mm.
- A complete phase and group-delay operand set: reflection and transmission phase, differential phase, GD, GDD, TOD and their flatness targets, with exact thickness derivatives during refinement. Enabled targets are drawn on the Group Delay curves.
- Cauchy, Sellmeier, Drude and Drude-Lorentz fits for tabulated user materials, each keeping its wavelength range, residuals and residual plot. The number of terms comes from the data, and a fit may not put a resonance between two samples where nothing measured it. The fitted coefficients are listed with the formula they belong to, and the metal models are offered only for a table that has absorption in it.
- One auto-update setting for every window, set from the windows that start optimizer runs. Edits always show immediately, so Optical Evaluation no longer needs a Calculate button.
- The merit table now updates while a refinement runs, in both the Merit Function Editor and Refinement.
- Copyright, MIT licence and trademark notices in the About window.
Changed
- The merit table's last column is each operand's share of the merit function, as a percent with a bar, instead of Δ. The residual is in the cell tooltip.
- Phase, GD, GDD and TOD run on the WebAssembly kernel: about 18 times faster to redraw, about 32 times cheaper per refinement step. The numbers are unchanged.
- Tabulated optical constants use shape-preserving PCHIP interpolation everywhere. Results between table points can move slightly.
- The dispersion windows match Optical Evaluation: same styling and plot toolbar, configurable curve colours, a vertical range control with Auto, and a collapsible Results panel with CSV export.
- Transmission in the Group Delay window has a Total mode, reporting front coating, substrate pass, back coating and their sum.
- The stack diagram elides the middle of coatings over twenty layers, naming the layers and materials it stands for on hover.
- The material and operand pickers open on the value already selected, and on the tab holding it.
- The material picker lists the materials the open design already uses, which is the only way to assign one that travelled inside a .tfs file.
- Documentation site navigation reworked, with an index and a 404 page.
- Updated the bundled RefractiveIndex.info database.
Fixed
- GDD and TOD failed at fine wavelength steps. They are now evaluated analytically at each wavelength, with no finite differences and no phase unwrapping.
- A user material typed with a comma decimal separator was cut at the comma. An index entered as 2,3 was plotted and saved as 2, with nothing saying so. Commas are now read as decimal separators, in the n/k table, the k table, the formula coefficients and the wavelength range.
- Layer Sensitivity ranked layers in the wrong order on a refined design.
- Phase and group-delay targets displayed and edited in percent instead of their own units.
- GD and GDD flatness operands did not show their end wavelength.
- Changing a merit row to MNT or MXT gave it wavelengths as layer numbers.
- The merit table now uses the whole width it is given, with columns sized for what they hold.
- Group Delay controls reset when the window was docked or moved.
- Back-only thickness constraints measured the front coating in the Merit Function Editor.
- An operand that cannot be evaluated no longer blanks the whole merit table.
- Plots lagged behind a window being resized, and stayed collapsed after being squeezed to a sliver.
- The material picker's catalog tabs wrapped to as many rows as it took, crowding out the list. They are one scrolling row now, and catalog names no longer show through onto the materials under them.
- Optical Evaluation drew its plot over the controls underneath when the window got short.
1.5.0
Changelog
v1.5.0
Added
- Update notifications on startup and on demand. Checks can be disabled, individual versions can be ignored, and downloads remain manual.
- Configurable default folders for designs, materials, presets and branding assets.
- Configurable curve colours for every analysis window, plus shared spectral defaults and Optical Evaluation Y-axis defaults.
- A
.debpackage for Debian and Ubuntu with the Chromium sandbox enabled.
Changed
- Settings now uses a category sidebar.
- The Needle Manual P-function plot now shows numbered layer zones and highlights the current candidate layer.
Fixed
- Analysis windows now warn when a material does not cover the selected wavelength range.
- The stack diagram light arrow now follows the evaluated surface.
- The app window now appears on Wayland systems without GPU acceleration.
- Linux archives now start correctly on Ubuntu 24.04 and newer through the bundled launcher.
1.4.3
Changelog
v1.4.3
Added
- Linux version (tested on Ubuntu 26.04)
Changed
- The transfer-matrix engine is now a standalone package, tmmcore, which TFStudio depends on. Identical results, and its accuracy can now be verified without installing TFStudio.
Fixed
- Building from source no longer needs the Emscripten SDK. The prebuilt WebAssembly kernel ships with the dependency, so source builds get the fast path instead of silently falling back to the 8-16x slower JavaScript one.
Note on linux build
1.4.3 failed to start properly on Linux in two ways:
App ran but no window appeared - on Wayland systems without full GPU access (VMs, remote desktops). Workaround was launching with --ozone-platform=x11.
.tar.gz crashed immediately on Ubuntu 24.04+ with a sandbox error. Workaround was --no-sandbox.
Both issues will be fixed in next release. New .deb package will be the recommended install.
1.4.2
Changelog
v1.4.2
Added
- Refinement history now keeps MF plot for each method. Use Plot on a
history row to switch between trajectories after a Try All run.
Fixed
- MF plots now use real iteration counts, include fast DLS runs, resize with
the panel, and keep compact scientific axis labels on-screen.