# Versions

The actions of the version group, with their input fields and their names on every transport.

5 actions: 5 on the command line, 5 as MCP tools, 5 as HTTP endpoints and 5 in the page.

## diff.run

**Diff.** The mutation list between two revisions in prose, optionally with before and after crops.

| Field    | Type                 | Required | Description                                                     |
| -------- | -------------------- | -------- | --------------------------------------------------------------- |
| `from`   | integer              | no       | The older revision; omitted with staged, the last named version |
| `to`     | integer              | no       | Defaults to the current revision                                |
| `staged` | boolean              | no       | Diff from the newest named version below the current revision   |
| `render` | boolean              | no       | Write before and after crops of every touched block             |
| `themes` | "light" \| "dark"\[] | no       | Themes to render the crops in; defaults to light                |
| `out`    | string               | no       | Crop directory; defaults to .turboslide/diff                    |

* Command line: `turboslide diff <from> <to> --staged --render --theme <themes> --out <out>`
* MCP tool: `deck_diff`
* HTTP: `POST /api/actions/diff.run`
* Runs on: command line, MCP, HTTP, page.
* Changes the presentation: no.

## version.save

**Save version.** Saves a named version at the current revision.

| Field  | Type   | Required | Description |
| ------ | ------ | -------- | ----------- |
| `note` | string | yes      |             |

* Command line: `turboslide version save -m <note>`
* MCP tool: `deck_version_save`
* HTTP: `POST /api/actions/version.save`
* Runs on: command line, MCP, HTTP, page.
* Changes the presentation: yes.

## version.list

**List versions.** The saved versions with author, note and revision.

It takes no input.

* Command line: `turboslide version list`
* MCP tool: `deck_version_list`
* HTTP: `POST /api/actions/version.list`
* Runs on: command line, MCP, HTTP, page.
* Changes the presentation: no.

## version.restore

**Restore version.** Restores a version as a mutation, so it is undoable and visible in History.

| Field          | Type    | Required | Description                                                      |
| -------------- | ------- | -------- | ---------------------------------------------------------------- |
| `n`            | integer | yes      |                                                                  |
| `baseRevision` | integer | yes      | The revision the caller read; a stale value is rejected with 409 |

* Command line: `turboslide version restore <n>`
* MCP tool: `deck_version_restore`
* HTTP: `POST /api/actions/version.restore`
* Runs on: command line, MCP, HTTP, page.
* Changes the presentation: yes; send the `baseRevision` you read.

## version.diff

**Show changes.** The mutations between two revisions grouped by touched block and by author, the data behind Show changes; from omitted with staged is the last named version, to defaults to the current revision.

| Field    | Type    | Required | Description |
| -------- | ------- | -------- | ----------- |
| `from`   | integer | no       |             |
| `to`     | integer | no       |             |
| `staged` | boolean | no       |             |

* Command line: `turboslide version diff <from> <to> --staged`
* MCP tool: `deck_version_diff`
* HTTP: `POST /api/actions/version.diff`
* Runs on: command line, MCP, HTTP, page.
* Changes the presentation: no.
