> ## 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 20

<Update label="April 20, 2026" description="Python SDK resource clients, validation initial conditions, capacity calculation fix">
  ## Python SDK resource clients

  The Python SDK gains typed sub-clients for managing Studio resources programmatically. You can now
  create, list, retrieve, update, and delete projects, models, parameterized models, studies,
  protocols, and optimizations directly from the `Ionworks` client — for example, `client.project.list()`,
  `client.model.get(id)`, or `client.study.create(...)`. A new "Managing resources" section in the
  Python API docs walks through each sub-client with usage examples, and requests for Projects,
  Models, and Studies no longer require your organization to be specified separately — it's resolved
  from your account automatically.

  ## Validation initial conditions and UX polish

  Validations now let you choose how the simulation is initialized: auto-detect from the measurement,
  a custom starting voltage, or a custom state of charge. Each validation row in the Report tab can
  be removed individually with a confirmation dialog, and a dedup bug that caused two measurements
  sharing the same initial voltage to overwrite each other's drive cycle has been fixed. Validation
  error plots also now render with grid lines for easier reading.

  ## Capacity calculation fix for multi-electrode cells

  A capacity calculation was reading a non-canonical parameter name for the number of electrodes
  connected in parallel, causing the maximum concentration to be over-computed by a factor of N when
  users set the correct key. The fix aligns all lookups with PyBaMM's canonical parameter name so
  multi-electrode cells parameterize correctly.

  <AccordionGroup>
    <Accordion title="Studio">
      **Improvements**

      * Studies with simulations of a single experiment type now auto-select that type so the visualization
        view is immediately accessible.
      * Failed variable-evaluation jobs now surface an error state with a Retry button instead of spinning
        indefinitely.
      * Studies list and parameterized models list now support pagination.

      **Fixes**

      * Fixed a crash when rendering time-series measurements with thousands of short steps (e.g. HPPC
        pulse protocols with \~1500 steps) — the dashboard can now load these measurements.
      * Fixed coupled custom variables being silently dropped when their resolution failed, which could
        remove convenience variables like "Temperature \[degC]" from simulation outputs.
      * Fixed an issue where an overly large page size on the models list could cause an error.
    </Accordion>

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

      * Bumped PyBaMM to 26.3.1, which falls back to a base model with a warning when a custom
        model references a package that isn't installed in the run environment.
      * Improved reliability of OCP-related fitting objectives so they work correctly in Validation
        pipelines.

      **Fixes**

      * Fixed an issue where a data fit submitted with a single objective could fail unexpectedly.
    </Accordion>

    <Accordion title="Python API">
      **Improvements**

      * Added typed sub-clients for Models, Studies, Optimizations, Projects, Protocols, and
        ParameterizedModels, replacing raw HTTP requests for resource management.
      * Requests no longer require your organization to be specified in resource paths — it's resolved
        from your account automatically.
      * Simulation polling now propagates errors immediately instead of swallowing them, and uses typed
        job status objects with clearer completion/failure fields.

      **Fixes**

      * Fixed the simulation job poll endpoint, which was pointing at an incorrect route.
    </Accordion>

    <Accordion title="Data Processing">
      **Fixes**

      * Fixed a sign-detection bug in the ECM validator where a symmetric current profile (charge /
        discharge / charge returning to the same net charge) was incorrectly rejected despite having a
        non-zero SOC span.
    </Accordion>
  </AccordionGroup>
</Update>
