Skip to main content
April 27, 2026
Project-scoped ECM fitting, PyBaMM v26.4.0 support, SDK skills plugin, strict upload validators

Project-scoped ECM fitting

Equivalent-circuit-model fitting is now available directly inside a project. Pick any measurement already attached to one of the project’s cells (or upload a fresh CSV), preview the trace, run the fit, and save the result back to the project as a new model with one click. The new flow replaces the multi-step stepper with stacked cards, adds a model-vs-data plot, an error plot, a fitting-progress indicator, an OCV toggle helper, and auto-scrolls to the results when the fit completes. The standalone ECM demo continues to work for unauthenticated users.

PyBaMM v26.4.0 support

The pipeline and protocol simulator have been updated for PyBaMM v26.4.0, which introduces a dedicated Rest step class in place of the old zero-current step and renames the MSMR electrode-capacity parameters from short keys (e.g. Q_n_1, Q_p_1) to descriptive strings (e.g. “Negative electrode host site occupancy capacity (1) [A.h]”). Existing experiments and MSMR parameter sets continue to parse correctly under the new release.

SDK skills as a Claude Code plugin

The Ionworks Python SDK now ships with a set of installable Claude Code skills covering api-discovery, cell-data, data-upload, simulations, pipelines, and projects-and-studies. Each skill documents the relevant sub-clients, method signatures, and the create-or-get patterns so an AI assistant can drive the SDK against the current API surface. Install via /plugin marketplace add ionworks/ionworks-skills and /plugin install ionworks to get the slash commands and SessionStart hook for any Ionworks project.

Strict upload validators in the Python API

CellMeasurementClient.create and create_or_get now run optional client-side validators before sending data to Studio so processing bugs surface as a local error instead of a confusing upload result. A hard time-gap check (>5 h between consecutive rows) runs by default; passing voltage_window enables a voltage-continuity check (catches chronological misordering from a faulty partition_by), and passing rated_capacity enables a consecutive same-direction full-step check plus a soft warning for any step whose capacity exceeds 5× rated.
Improvements
  • Measurement chart controls collapse into a compact header summary; per-axis variable selectors now allow adding and removing series dynamically with a unified two-column layout.
Fixes
  • Study visualization no longer collapses to an empty state when switching between studies whose experiment-type tabs differ — the filter resets to All when the previous tab isn’t present.
  • Users with a stale Supabase session can recover by signing out via the OTP auth/continue page instead of being stuck on the redirect.
  • The empty cells page now uses the correct organization-level permission check, so users who can create cells no longer see a misleading “contact a project admin” message.
  • Pipeline element details view no longer triggers rapid duplicate fetches for Data Fit and Validation configs — the large job_config is read directly from storage and cached.
Improvements
  • Function compilation is now enabled by default in Simulation (IDAKLU solver), speeding up repeated runs that share the same model.
  • submesh_types and spatial_methods now serialise correctly through SimulationObjective.to_config, fixing JSON round-trip for objectives such as CycleAgeing that carry mesh generators or spatial methods in simulation_kwargs.
Fixes
  • Time-monotonicity validation error message now reports the correct two adjacent values (the previous off-by-one showed the values just before the actual violation).
Fixes
  • Sign-convention detection no longer misclassifies low-current pulse datasets as all-rest; the rest threshold now scales relative to the 95th-percentile current so violations are caught on small-amplitude data.