# Changelog

> What changed in the Taskadence API contract, newest first.

**What this is:** contract changes, newest first. **When you need it:** before upgrading the SDK or relying on a new field.

2026-10-030.x

## TasksMate is now Taskadence

The product is renamed; the contract is otherwise unchanged. Everything old keeps working:

-   Hosts: the API’s address is in the [reference](https://docs.taskadence.com/reference/); these docs are at `https://docs.taskadence.com`.
-   New tokens start `tkd_live_` / `tkd_test_`; `tm_live_` / `tm_test_` tokens still authenticate.
-   Problem types are `urn:taskadence:problem:*` (formerly `urn:tasksmate:problem:*`; match both if you stored them).
-   Headers: send `X-Taskadence-Client`; webhooks carry `X-Taskadence-Event`.
-   Packages: `pip install taskadence` (`import taskadence`), `taskadence-mcp`, `@taskadence/mcp`. The packages read `TASKADENCE_*` and still fall back to `TASKSMATE_*` with a deprecation warning.

2026-09-280.x

## Milestones belong to projects

Milestones now sit under a project, like goals: Project → Milestone → Task. Replaced, not deprecated — nothing had been released.

-   `/v1/projects/{project_id}/milestones`: list, create, update, delete, reorder, move to another project (with its tasks), file and unfile tasks. The team milestone routes answer 404.
-   `GET /v1/milestones` is grouped by project, the shape of `GET /v1/goals`, with `filter[project]` and `filter[status]`.
-   A task files only under a milestone of its own project; moving it to another project clears it.
-   Scopes: `projects:read` / `projects:write` (was `teams:*`).
-   Webhooks: `milestone.*` payloads carry `project_id` instead of `team_id`; new `milestone.reordered` and `milestone.moved`.

2026-09-250.x

## The first published contract

`/v1` with 171 operations and 92 webhook events. 0.x — pre-release, no compatibility promise yet.

-   Access tokens with scopes, project restriction, service accounts and an organization token policy.
-   One error shape (`application/problem+json`), cursor pagination, the `filter[...]` grammar.
-   `Idempotency-Key` on creates; `ETag` / `If-None-Match` / `If-Match`.
-   Signed webhooks with retries, rotation and a delivery log.

---
Source: https://docs.taskadence.com/changelog/
