# Card SDK changelog

> What changed in @neurosquad/card-sdk and the card contract, version by version — new APIs, the NeuroSquad version each needs, permissions and migration notes.

Source: https://docs.neurosquad.ai/en/card-sdk/changelog

Changes to `@neurosquad/card-sdk` and the card contract it speaks, newest first. The same list ships
with the package as `CHANGELOG.md`.

Three versions matter to a card author:

- **SDK / contract version** (`SDK_VERSION`) — the headings below. New methods and events arrive in
minor versions.
- **Wire protocol** (`CARD_PROTOCOL_VERSION`, still **1**) — a card built for a newer protocol is
refused by an older app with `PROTOCOL_MISMATCH`.
- **NeuroSquad version** — the host. Check `card.host.supports('<method>')` before using a newer
method, or set [`minAppVersion`](https://docs.neurosquad.ai/en/card-sdk/manifest) when the card can't work without it.

NeuroSquad versions below are the first public release that has the change.

## Unreleased

**Host change, NeuroSquad 0.1.264.** A card whose page process dies on its own — usually the computer
running out of memory — is reloaded automatically instead of staying a grey rectangle; the new frame
starts with `launch: 'reloaded'`. After three such reloads within 10 minutes the card shows *The card
stopped working* with **Reload**. Nothing to change in your card; keep what must survive a reload in
[storage](https://docs.neurosquad.ai/en/card-sdk/api/storage-settings).

## 1.2.0 — 2026-10-04

Needs NeuroSquad **0.1.264** or newer.

**Added**

- [`card.agents.timeline(agentId, since, until?)`](https://docs.neurosquad.ai/en/card-sdk/api/agents#timeline): one
arrow-connected AI agent's model requests (completion time; send time where the agent's log records
it; tokens; tool calls), its status as consecutive spans, and its turns — what the official
[Agent Pulse](https://docs.neurosquad.ai/en/cards/agent-pulse) card draws. `requestTimes` is `start-end`, `end` or `none`; at most
2000 requests (the newest, with `truncated`).
- Types `AgentTimeline`, `AgentRequestSpan`, `AgentTurnSpan`.
- [Mock host](https://docs.neurosquad.ai/en/card-sdk/testing): the `agentTimeline` option and `setAgentTimeline()`.

**Compatibility.** Same permission and scope as `agents.usage` — [`usage.read`](https://docs.neurosquad.ai/en/card-sdk/permissions#usage-read)
and an arrow to an AI agent; no new permission. 60 calls a minute per card. An older app answers
`METHOD_NOT_FOUND`: check `card.host.supports('agents.timeline')`.

## 1.1.0 — 2026-10-04

Needs NeuroSquad **0.1.264** or newer.

**Added**

- [`card.agents.usage(agentId, since, until?)`](https://docs.neurosquad.ai/en/card-sdk/api/agents#usage): one arrow-connected AI
agent's run inside a window — model requests, tokens by kind, prompts, working and elapsed time,
cost (rounded up, with `costPartial`), model and provider. What the official
[Run Stats](https://docs.neurosquad.ai/en/cards/run-stats) card shows. The timing comes from the app's own status history, so it
is right even while your card was paused.
- Type `AgentUsage`.
- [Mock host](https://docs.neurosquad.ai/en/card-sdk/testing): the `agentUsage` option and `setAgentUsage()`.
- Contract types for the [verified cards](https://docs.neurosquad.ai/en/card-sdk/verified-cards) catalog (`VerifiedCatalog`,
`VerifiedEntry`, `validateVerifiedCatalog` and friends), new in the package since 1.0.0.

**Behaviour**

- A token count that isn't reported is `null`, never `0` — a number the agent's log doesn't carry, an
agent CLI with no readable usage log (Amp, Cursor: `usageReadable: false`), a zero cache count from
the user's own model server, a zero cache write outside the Anthropic API. Show it as "not
reported".
- A model with no known price — a model on the user's own server included — has `costMicroUsd: null`,
never 0.
- `prompts` leaves out a finished turn without a single model request (a status blip).

**Compatibility.** Permission [`usage.read`](https://docs.neurosquad.ai/en/card-sdk/permissions#usage-read) (already in 1.0; it
now also unlocks this method for agents connected by an arrow). Not connected — `NOT_CONNECTED`; a
shell — `INVALID_PARAMS`. 60 calls a minute per card. An older app answers `METHOD_NOT_FOUND`: check
`card.host.supports('agents.usage')`. The protocol stays 1, so cards built with 1.0.0 run unchanged —
to upgrade, bump the dependency to `^1.1.0` (or `^1.2.0`); no code changes are needed.

### Host changes within contract 1.0

Released between SDK 1.0.0 and 1.1.0, with no SDK version change; listed because they can change what
a card sees.

- **0.1.253, 0.1.230, 0.1.160, 0.1.141, 0.1.138** — more manifest `name` values are reserved: the
tool families of the Graphify, Memory, Context7, Code Graph, RTK and caveman plugins, the canvas
wiring tools (`canvas_connect`, `canvas_disconnect`, `canvas_list`), `agent_set_model` and
`neurosquad_models`. A manifest with such a name fails validation.
- **0.1.214** — `fs.*` refuses writes to more files that run code on the next push: GitLab, Jenkins,
CircleCI, Buildkite, Travis, Bitbucket, Drone, AppVeyor and Azure Pipelines configs. For a
workspace in WSL, `workspace.path` is this computer's view of it; for an SSH workspace it is empty
and `fs.*` answers `UNAVAILABLE`. `usage.summary` rounds costs up, so a tiny priced cost never reads
as 0. `neurosquad-card dev` needs developer mode on.
- **0.1.128** — `agents.lastReply` works for every agent CLI with a readable transcript, not only
Claude Code, and an agent's built-in `reply` port sends the final answer for all of them.
- **0.1.125** — the [verified cards](https://docs.neurosquad.ai/en/card-sdk/verified-cards) catalog.

## 1.0.0 — 2026-09-25

Needs NeuroSquad **0.1.123** or newer. First public release: `connect()` and the typed `Card` with the
whole API, the [manifest](https://docs.neurosquad.ai/en/card-sdk/manifest) and its JSON Schema, [permissions](https://docs.neurosquad.ai/en/card-sdk/permissions),
[React bindings](https://docs.neurosquad.ai/en/card-sdk/react), the optional [UI kit](https://docs.neurosquad.ai/en/card-sdk/styling), the
[mock host](https://docs.neurosquad.ai/en/card-sdk/testing) and the [`neurosquad-card` CLI](https://docs.neurosquad.ai/en/card-sdk/cli).

> Building on a newer method but want the card to install on older apps too? Leave `minAppVersion`
> out, check `card.host.supports()` and show a short "update NeuroSquad to use this view" message
> when it's missing.
