# Changelog

Channel: release; package: 1.8.0; source: 7d1e97331656dd74ad0f5471653ac0c5effdff70

Page: https://remilab.ai/rfx/versions/v1.8.0/guide/changelog/
Source: https://github.com/bk-squared/rfx/blob/7d1e97331656dd74ad0f5471653ac0c5effdff70/docs/public/guide/changelog.mdx

This page summarizes user-visible changes.

## Current public status

The recommended starting point remains the **uniform Cartesian Yee RF/FDTD lane**. Non-default lanes such as non-uniform mesh are documented through their [support and evidence envelopes](https://remilab.ai/rfx/versions/v1.8.0/guide/validation/), not presented as the default path.

## Unreleased

- A face-touching dispersive material no longer gets an absorber surround
  carrying its static permittivity without its dispersion poles — a material
  no declared model has. The `dispersive_pole_at_absorber_face` preflight
  advisory now fires for every pole family touching an absorbing face and
  states what the pad actually contains.
- Realized geometry at node-aligned faces no longer depends on
  `JAX_ENABLE_X64` or the solver lane: one exact float64 node formula is
  shared by the uniform lane, the non-uniform lane, and the viewer, and a
  one-cell sheet realizes on one and the same plane in both lanes.
- A `dz_profile`-only simulation now dispatches to the non-uniform waveguide
  S-matrix lane instead of silently solving on the uniform grid built from
  the scalar `dx`. The unsupported default `normalize=False` fails loudly
  there, naming `dz_profile`. dz-graded accuracy remains unvalidated; the
  non-uniform lane reports the same ring-down settling witness as the
  uniform lane.

## v1.7.0 — September 1, 2026

- Long solves can report step count, elapsed time, rate, and ETA with
  `report_every=N` on supported uniform and single-device non-uniform runs.
  Reporting is off by default and the reported and unreported results are
  byte-identity locked.
- `Simulation.fidelity_report()` audits declared geometry against the cells and
  material realization the solver will use, before a run. It reports
  rasterization and realization only; it does not predict RF error.
- `add_msl_port(direction=...)` supports `"+x"`, `"-x"`, `"+y"`, and `"-y"`
  for the Laplace/quasi-TEM path. The eigenmode path remains x-only and outside
  the public support envelope.
- `add_thin_conductor(..., surface_impedance_f0=...)` accepts patterned shapes
  that rasterize to exactly one cell layer and at least one cell, including
  CAD-backed `MeshShape` objects. Unsupported sheet realizations and execution
  lanes fail explicitly.
- The uniform single-device solver offers `precision="float64"` when JAX x64
  is enabled. `precision="mixed"` works with CPML, but its float16 field
  storage raises the absorber residual floor and is not a substitute for
  float32 in low-reflection or S-parameter work.
- `compute_far_field_jax(..., max_phase_bytes=...)` bounds the NTFF phase-array
  allocation by splitting the theta grid. The split is exact and avoids
  materializing the full direction-by-surface array at once.
- S-parameter settling warnings use the same -40 dB rule in
  `compute_msl_s_matrix`, `compute_waveguide_s_matrix`,
  `compute_mixed_s_matrix`, `compute_coaxial_two_port`, and
  `compute_coax_msl_transition`.
- Multi-band graded-z meshes now preserve declared blocks through smoothing,
  with a measured z-axis adjacent-cell ratio cap of 1.4 and explicit
  preflight advisories outside the validated envelope.
- New rasterized-slice and stack-profile views show the cells and material
  layers the solver actually builds.
- Wire-port decomposition, MSL probe extraction, CPML material padding,
  graded-mesh NTFF integration, mesh import containment, and preflight
  diagnostics received correctness fixes without widening their documented
  validation envelopes.
- MSL internal DFT planes now store only the extractor's required crop,
  reducing accumulator cells without changing the extracted matrix.
- Differentiable `forward(...)` objectives are now safe to wrap in an outer `jax.jit`: both `jax.jit(loss)` and `jax.jit(jax.grad(loss))` over `forward(eps_override=...)` are regression-locked against the eager path. This fixes a tracer crash in material assembly without changing eager results.
- `optimize(...)` gained default-off robustness knobs for difficult proxy losses: `n_starts`, `best_iterate`, `step_clamp`, and `seed`. The default single-start Adam path remains byte-identical.
- `add_lumped_rlc(...)` elements now participate in the differentiable uniform `forward(...)` lane. Use `forward(rlc_values_override={...})` when R/L/C values themselves are scalar design variables; this is still a lumped circuit element, not a `Z0`-referenced port.
- Waveguide S-matrix extraction now emits a soft advisory for passive `normalize=False` results whose column power is above the documented single-run over-unity envelope but below the hard unreliability limit. The physics and hard pass/fail thresholds are unchanged.
- RCS and inverse-design docs now pin recent footguns: RCS validation is monostatic-only unless additional evidence is supplied, and a finite-difference gradient check does not prove an empty observation window is physically meaningful.
- A standalone real multi-device witness (`scripts/diagnostics/distributed_witness/multigpu_witness.py`) now compares single-device and sharded PEC/CPML/lumped-port runs on machines with two or more JAX devices; it is a distributed-runner identity check, not a new physics-validation envelope.
- [AD memory-planning docs](https://remilab.ai/rfx/versions/v1.8.0/guide/memory-reduction/) now tag each artifact with an evidence class — static estimate, conservative budget-fit plan, or explainability breakdown — so a planning estimate is never read as a runtime profiler measurement, a peak-memory guarantee, or RF validation evidence. The compiled-executable check reports the JAX compiler's memory *estimate*, not a runtime peak.
- [Differentiable-design guidance](https://remilab.ai/rfx/versions/v1.8.0/guide/autodiff-adjoint/) was tightened: it separates JAX-traced objectives and finite-difference gradient checks from the final port/resonance/far-field physics validation.
- [Non-uniform mesh guidance](https://remilab.ai/rfx/versions/v1.8.0/guide/nonuniform-mesh/) now frames graded-z meshes as a bounded workflow for thin layered structures, stating the unsupported combinations and the caller's validation responsibilities up front.

## v1.6.7 — July 2026
- Open-domain oblique RCS is available through `compute_rcs(theta_inc != 0)` for its documented uniform-grid, `ez`-polarized Method-B TFSF envelope; unsupported combinations fail explicitly.
- The opt-in plane-wave design lane adds complex-Bloch TFSF in `run()`, uniform `forward()` support, differentiable `mu_r_override`, and `compute_rcs_jax`.
- `rfx.MeshShape` imports voxelized STL, OBJ, and PLY geometry; STEP support is available with the `cad` extra. Mesh import is not differentiable.
- `rfx.interop` can emit a validated design document and a runnable openEMS script for representable simulations.
- `run(until_decay=..., radiated_flux_box=...)` can stop on radiated-energy flux, and MSL extraction now resolves automatic probe offsets against both documented clearances. Returned MSL S-matrices enforce passivity by default while retaining raw results in `S_raw`.

## v1.6.6 — June 2026
- Maintenance-only release: a behavior-preserving rectangular-waveguide mode-solver refactor and shipped-documentation hygiene. There was no public API or user-visible behavior change.
## v1.6.5 — June 2026

- [Validation reporting](https://remilab.ai/rfx/versions/v1.8.0/guide/validation/) is stricter: a promoted port-family result now requires magnitude evidence, a phase-consistency witness, an AD-vs-finite-difference check where gradients are part of the claim, and committed (reproducible) artifacts.
- Port-family support wording is clearer: users should match each source or port family to its documented calculator and evidence envelope instead of treating any S-parameter helper as universal.
- `compute_msl_s_matrix` now reports a positive characteristic impedance on both ports. This fixes reported metadata while leaving the S-parameter calculation invariant.
- Non-uniform mesh accuracy coverage now includes an analytic gated cavity case whose resonance frequency depends on the graded axis.
- Public guides and support pages were tightened around maintained workflows, validation boundaries, and device-count-adaptive test behavior.

## v1.6.4 — June 2026

- Rectangular waveguide-port evidence now covers WR-band empty-guide, PEC-short, and dielectric-slab cases with analytic and external-reference comparisons.
- `preflight()` and `preflight_sparameters()` now expose coded report objects for automation while preserving older list/string behavior.
- Run/forward results, S-matrix calculators, sweeps, and optimizers now surface finite-data, passivity, setup, and NaN-gradient issues earlier.
- `compute_coaxial_line_reflection(...)` is the current coaxial line-reflection path inside its documented transmission-line envelope.
- `compute_waveguide_s_matrix(checkpoint_segments=...)` adds segmented checkpointing for uniform waveguide AD-heavy runs.
- Finite-size flux monitors are regression-locked against the matching full-plane integrand window; the old finite-size instability caveat is superseded.
- The directivity objective gained a log-ratio option for sign-correct gradients when design variables change total radiated power.

## Documentation direction

- Current examples are routed through maintained paths: `validation/crossval/05_patch_antenna.py`, `validation/crossval/11_waveguide_port_wr90.py`, `examples/tutorials/nonuniform_patch_demo.py`, and `examples/inverse_design/multilayer_ar_coating.py`.
- [S-parameter documentation](https://remilab.ai/rfx/versions/v1.8.0/guide/probes-sparams/) matches the calculator to the port family: lumped/wire, MSL, waveguide, or bounded coaxial line reflection.

## v1.6 line

- Advanced the differentiable design loops and validation-boundary reporting.
- Added feature-boundary wording so repository code outside the documented support scope is not presented as the default public path.
- Improved port and observable APIs for RF workflows.

## v1.5 line

- Expanded the public guide structure for examples, API surfaces, and validation/support boundaries.
- Added RF examples and clearer routing for patch, waveguide, and microstrip workflows.

## Earlier releases

Earlier releases introduced the core JAX FDTD solver, material/geometry helpers, sources, probes, ports, far-field utilities, and inverse-design workflows. See the Git history and package releases for full implementation detail.
