> ## 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 08 03

<Update label="August 3, 2026" description="Project home dashboard, plain-English protocol authoring, test request detail pages with cycler export, and a Butler-Volmer ECM element">
  ## A home page for every project

  Opening a project used to drop you straight onto its studies list. Projects now
  open on a proper **home page**: an assistant prompt front and centre, a
  **Running now** panel showing pipelines still in flight, a **Pick up where you
  left off** row of your most recently touched studies, pipelines, measurements
  and conversations, and browse tiles with counts for each area of the project.
  Ask a question from the home page and it opens a fresh Agent conversation with
  your question already sent.

  ## Describe a test in plain English

  The Lab test scheduler can now **author a protocol from a description**. Type
  something like "1C/1C cycling for 100 cycles between 4.2 V and 2.5 V with
  10-minute rests" and you get back a validated protocol, ready to request. If
  the description leaves out something that would change what physically runs on
  the channel, you're asked about it rather than having a value guessed; common
  conventions (25 °C ambient, CC-CV taper, rest lengths) are assumed and reported
  back to you. If one of your saved protocols already does the job, it's offered
  instead of a new one. Anything the generator returns is a protocol the platform
  accepts — it's validated before you ever see it.

  ## Test requests get their own page, and export to your cycler

  Planned tests now open on a **detail page** instead of jumping straight into
  the edit form, with the request, its scheduling, and its actions laid out
  separately — so an unscheduled request reads as "not booked yet" rather than a
  half-empty form. From that page you can **export the request's protocol in a
  cycler's native format** — Maccor, Arbin, Neware, BioLogic (BT-Lab) or Novonix
  — preview it, and download it, with no need to re-author the test in vendor
  software. Exports that need more than one file arrive as a single zip.

  ## Charge-transfer kinetics in the ECM

  The Equivalent Circuit Model gained an optional **Butler-Volmer
  charge-transfer element**. Enabling it adds a symmetric charge-transfer
  overpotential driven by a new **Exchange current \[A]** parameter, which
  captures rate-dependent losses that a linear series resistance cannot — nearly
  linear at low current, logarithmic at high current. It's off by default, so
  existing models and simulations are completely unchanged, and the new
  **Charge-transfer overpotential \[V]** output is available when it's on.

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

      * ECM simulation results now show a real **voltage components** plot — open-circuit
        voltage, the series-resistance drop, and one band per RC pair, stacked down to the
        terminal voltage.
      * Measurement views gained a **Filter by Steps or Cycles** selector. Measurements with
        no cycle data — OCV sequences, pulse and DCIR tests, single-pass characterisations —
        now get the full step filter instead of no filter controls at all, and open on Steps.
      * **Channel incident history** — taking a channel out of service now records the
        outage with its cause, category, who reported it and when. A down channel shows a
        callout with the cause, start time and running duration plus a **Return to service**
        action, and the channel page lists its past incidents.
      * Organization admins can manage the **Programs** catalog from a new Programs tab in
        Organization settings — create, rename and delete the programs used to tag planned
        tests.
      * **Protocols are now scoped to a project.** Every project starts with its own
        editable copy of the standard protocols instead of sharing a read-only library, so
        edits in one project can't affect another. Existing projects have been seeded with
        theirs.
      * Uploading measurement time series now returns immediately and **processes in the
        background**, with progress and any processing error visible in the measurement
        list, so large uploads no longer block the request.
      * Revoking an API key now takes effect **immediately** rather than after a delay.

      **Fixes**

      * The Agent widget's **New chat** button now actually starts a blank conversation
        instead of re-opening the last one.
      * Reloading the page mid-reply no longer blanks the earlier messages in an Agent
        conversation — history and the streaming reply are merged rather than one replacing
        the other.
      * Failed API-key authentication no longer echoes the submitted key back in the error
        response; only the key's short prefix is returned.
      * Sorting or filtering cell specifications by **last-updated** no longer errors —
        the field is now stored and returned alongside `created_at`.
      * Transient failures in authentication and membership lookups now report a
        retryable error with a real cause instead of an opaque failure.
      * Program names consisting only of whitespace are now rejected, and program-related
        text meets WCAG contrast requirements.
    </Accordion>

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

      * Pipeline elements now return **typed result objects** — parameter-estimation,
        optimization, posterior, ensemble, regression and validation results each have
        their own type, reachable from `Pipeline.results`. A new `iwp.analysis` namespace
        collects post-fit analyses, including `LinearConfidenceInterval` and
        `SobolSensitivity`.
      * Interpolant-valued parameters (for example a measured ambient-temperature profile
        supplied per objective) now serialise from a plain dictionary, not just from a
        `pybamm.ParameterValues`. Array-valued parameters round-trip correctly instead of
        being misread as indexed parameters.

      **Fixes**

      * Fixed a memory leak where every fit result held a reference to itself, keeping
        results alive longer than necessary. A parent result whose child happened to hold
        equal parameter values also no longer silently loses that child when copied.
    </Accordion>

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

      * New clients for **channel incidents** and for the **background measurement upload**
        flow, so an upload can be started and its processing state polled from the SDK.
      * Protocol clients are now project-scoped, matching the per-project protocol change
        above.
      * **Breaking (direct `ionworkspipeline` users only):** `result.optimizer_result`,
        `iwp.OptimizerResult` and `iwp.SamplerResult` are removed in favour of the typed
        result objects above (`OptimizationResult.x` / `.fun` / `.success`,
        `PosteriorResult`, …), and `RegressionResult.result` is now `.results`.
    </Accordion>

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

      * **Power \[W]** is now computed when a measurement is processed and stored with the
        time series, rather than derived on every read. It also stays correct when the
        current sign is auto-corrected during processing.
    </Accordion>

    <Accordion title="Protocol Simulator">
      **Improvements**

      * A protocol can now be **resumed exactly from a captured point** — its position,
        loop counts, variables, cycle number and full physical state — so a run can be
        checkpointed and continued with no rest step and no loss of accuracy.
      * New **protocol authoring warnings** flag common mistakes before you run anything:
        mistyped or cross-scope jumps, missing subroutines, loop conditions that can never
        be satisfied, unreachable steps, voltage limits that contradict the step direction,
        targets outside the safety window, and rests with a current-based end condition.
        These are advisory — nothing that runs today stops running — and can be made
        blocking if you'd rather catch them as errors.
      * Protocols now report their derived **voltage and current limits** — the minimum and
        maximum voltage and the peak charge and discharge currents implied by the steps,
        safety limits and drive cycles.

      **Fixes**

      * Maccor and Novonix exports now use the **earliest** duration end condition rather
        than the last, so a step no longer runs for longer than requested.
      * Fixed a Novonix export writing a structured safety-limit value where a plain number
        was expected.
      * Fixed Arbin loop detection and Neware template handling cases where two
        divergent code paths disagreed.
    </Accordion>

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

      * **Manage equipment** covers recording and reading a channel's incident history.
      * **Upload data** covers the background upload flow and how to poll a measurement's
        processing state.
    </Accordion>
  </AccordionGroup>
</Update>
