> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ionworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026 04 27

<Update label="April 27, 2026" description="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 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 simulation engine has 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 data split), and passing `rated_capacity` enables a consecutive same-direction full-step
  check plus a soft warning for any step whose capacity exceeds 5× rated.

  <AccordionGroup>
    <Accordion title="Studio">
      **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 session can recover by signing out via the sign-in 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.
    </Accordion>

    <Accordion title="Pipeline">
      **Improvements**

      * Simulations now compile faster by default, speeding up repeated runs that share the same model.
      * Simulation objectives with custom mesh or spatial-method settings (such as `CycleAgeing`) now
        serialise and reload correctly.
    </Accordion>

    <Accordion title="Python API">
      **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).
    </Accordion>

    <Accordion title="Data Processing">
      **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.
    </Accordion>
  </AccordionGroup>
</Update>
