June 8, 2026
Brand-aligned theme refresh, semantic zoom on validation plots, Navigator helper and new data agent skills, tunable solver_kwargs with PyBaMM 26.6 support
Brand-aligned theme refresh
Studio is no longer the unmodified Minimals MUI template — it now follows the Ionworks brand guide. Pink (#FF87B7) drives primary
CTAs, selection, focus, and active nav/tabs; green-black (#020E0D)
anchors text and neutrals; blue (#0C68E9) is reserved for
hyperlinks so links stay obviously clickable. Corners are sharpened
to 4px, typography is updated, and JSON viewers, plots, tables, and
ID chips have been re-skinned to match. All changes are
theme-level — no component or data-flow changes — so every screen
lifts at once.Semantic zoom on pipeline validation plots
Validation plots now fetch their data on demand and decimate server-side based on the visible x-range. Box-zoom into a region re-requests denser data for that window; a step-back zoom and a full-reset control are stacked in a zoom history. Pipeline and datafit jobs gain two new endpoints (/pipelines/validations/{job_id}/plot_data
and /pipelines/datafits/{job_id}/plot_data) that return decimated
traces with stride sampling, cached for one hour per
(job_id, organization_id).Tunable solver_kwargs with PyBaMM 26.6 support
iwp.Simulation accepts a new solver_kwargs dict that merges
over the tuned IonworksSolver defaults — e.g.
solver_kwargs={"options": {"compile": True}} flips IDAKLU
compilation on for long unified-experiment runs without restating
the rest of the solver configuration. It threads through every
simulation-backed objective (CurrentDriven, Pulse,
CalendarAgeing, CycleAgeing). The workspace also upgrades to
PyBaMM 26.6 (first release with the serialisation kernel), with a
compatibility sniffer that accepts both the new fully-qualified
$type tags and the legacy short type tags so historical and
freshly-generated payloads both decode.Navigator helper and new data agent skills
ionworks.Navigator is a new cached walker over the
cell_spec → cell_instance → cell_measurement → steps / time_series
hierarchy. It memoises every lookup, paginates automatically,
returns name-sorted listings for stable iteration, and copies
cached DataFrames so callers can’t corrupt the cache. Two new agent
skills land alongside it: build-data-report (multi-section
markdown + PDF analysis covering rate capability, DCIR, OCV, GITT,
entropic, aging, and gap analysis) and validate-data (a
pre-upload gate covering header audit, schema, parquet, and strict
measurement validators).Studio
Studio
Improvements
- Cell-measurements list endpoints have been consolidated and now
use server-side pagination across project, spec, and instance
scopes. The frontend resolves spec metadata from the existing
cells store and pre-fetches spec-level filters (
spec_name,spec_anode,spec_cathode) separately so the main list query stays cheap.
- Deleting a project no longer shows a misleading “The project you are trying to access does not exist…” toast. The delete confirmation dialog also now requires typing the exact project name to enable the Delete project button, matching the destructive-action pattern used elsewhere.
- Signed-URL generation for measurement files retries on
httpx.ReadTimeoutwith 0.5 s / 1.0 s backoff; a new batch endpoint replaces the N parallel calls in the file-list path with a single POST. File downloads also retry onJSONDecodeError(raised when the storage gateway returns HTML instead of JSON under load) and surface exhausted attempts as a structured 502. - Cell-instance measurements grid no longer renders the previous
spec’s rows after navigating between specs;
CellSelectorshows a skeleton while loading and no longer bails when an unrelated cells fetch is in flight; the ECM measurement selector switched from loading every project measurement into memory to true server-side pagination. - The
list_for_templatedrive-cycles endpoint now awaitsexecute()— previously it raisedAttributeErroron.dataat runtime — and has been upgraded to standardlimit/offsetpagination. RHFAutocompletenow forwardsslotProps(listbox,paper,popper, …) as a properslotPropsobject instead of spreading them as flat props that MUI silently ignored.
Pipeline
Pipeline
Improvements
skip_objective_callbacksis a newDataFitoption that skips the pre- and post-fit objective callbacks, each of which runs an extra full objective simulation purely to capture initial/final results that the server does not surface. Backend datafit jobs now set it by default for faster cluster fits; local users keep the existing callbacks unless they opt in.- Configuration errors raised inside
ionworkspipelineare nowUserConfigurationError(the new name forConfigurationError) instead of bareValueError, so the job classifier reliably maps them toCONFIGURATION_ERRORrather thanSOLVER_ERRORand the Configuration error UI path lights up correctly.
Python API
Python API
Improvements
client.simulation.get_result()returns a typedSimulationResultdataclass withtime_seriesandstepsas DataFrames (polars by default, pandas whenset_dataframe_backend("pandas")is active) andmetricsas a plain dict, replacing the previous raw-dict response. Callers use attribute access and.columnsmembership checks instead of dict-key lookups.
Data Processing
Data Processing
Improvements
DataLoader.dataandDataLoader.stepsno longer emit the Polars-migrationFutureWarningon every access — the polars return type is now the established default.
Skills
Skills
Improvements
- New
sim-resultsSDK skill: fetching time-series and step data from a completed simulation, computing SOC via step-boundary cumulation, identifying step types by mean current, deriving DCIR from pulse steps using an OCV baseline plus onset current, and polars-aware plotting conventions. - The
parameterizeskill now documents electrode geometry (thickness, porosity, particle radius, AM fraction, maximum concentration) as a hard build requirement for DFN/SPMe — a physics-based model cannot be assembled without these structural parameters. Geometry lives on the cell spec’s components (not on a measurement), can come from teardown / metrology / vendor datasheet / literature, and FPBM is no longer offered as “available” for Tier-2 cells that lack it.