> ## Documentation Index
> Fetch the complete documentation index at: https://product.mmbrn.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Editor overview

> Save/draft, export, правый сайдбар (Узлы | Журнал | Трейс), захват, clear branch.

# Editor overview

Обзор возможностей редактора device-board. Детали edit/undo и функций — отдельные страницы.

<CardGroup cols={2}>
  <Card title="Edit & navigation" icon="rotate-left" href="/device-board/editor/edit-and-navigation">
    Undo, dirty baseline, branch revert, breadcrumbs, runtime highlight
  </Card>

  <Card title="User functions" icon="diagram-project" href="/device-board/editor/user-functions">
    Список функций, pins, collapse, лимит 9/9
  </Card>

  <Card title="User Workspace" icon="copy" href="/device-board/user-workspace">
    Слоты сценариев, квота, клон из каталога
  </Card>
</CardGroup>

## Save и draft

* **Manual save** — сценарий не уходит на сервер автоматически; `isDirty` сравнивает fingerprint с последним сохранённым снимком.
* Persist-адаптер (cabinet / local) — только по явному Save.
* Переключение handler-ветки без Save — см. [branch snapshot](/device-board/editor/edit-and-navigation#branch-snapshot-f7).

## Export JSON

| Контекст                              | Файл                                     |
| ------------------------------------- | ---------------------------------------- |
| Вкладка **Signal**                    | полный `DeviceScenarioDocument`          |
| Вкладка **Scenario** (активная ветка) | `branch-scenario` JSON только этой ветки |

Имя файла ветки: `device-scenario-{deviceKind}-{branch}.json`.

## Clear branch

Очищает узлы **текущей** ветки; системные Event-entry и loop-repeat (∞) сохраняются.
Действие попадает в **undo depth-1** (один шаг отката).

## Правый сайдбар: Узлы | Журнал | Трейс

| Вкладка    | Содержимое                                                                                                                                                         |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Узлы**   | палитра узлов и инспектор выбранного узла (заметки о поведении — для detection-узлов см. [node reference](/device-board/nodes/index))                              |
| **Журнал** | журнал **телеметрии** устройства (треки и отчёты детекции): компактный хвост последних записей, empty-state, кнопка «Открыть журнал» — переход в модуль телеметрии |
| **Трейс**  | живой хвост scenario-трассы во время Run: follow-tail, копировать / скачать / очистить                                                                             |

Вкладку «Журнал» наполняет хост (клиент): на хостах без телеметрии (кабинет,
автономные) сайдбар показывает только «Узлы | Трейс».

**Ширина сайдбара** тянется за ручку на левой кромке (min 240px, max 50vw);
двойной клик по ручке — сброс к дефолту, ширина запоминается в localStorage.

## Управление под захватом

Когда устройство **захвачено** из кабинета, локальные кнопки управления сценарием
подчиняются матрице захвата. Сопряжение и захват — независимые оси: синк журнала
и состояния с сервером идёт всегда, захват меняет только доступность кнопок.

| Состояние                 | Доступно на устройстве                |
| ------------------------- | ------------------------------------- |
| Сопряжён, не захвачен     | play / stop / pause (полный контроль) |
| Захват, сценарий работает | только **Stop**                       |
| Захват soft, остановлен   | **Start**                             |
| Захват hard, остановлен   | ничего (ведомый режим)                |

Пауза под захватом заблокирована **всегда** — кнопка disabled с подсказкой.
**Emergency stop доступен в любом состоянии** — блокируется управление, не звук.

Навигация под захватом также ограничена — см. борд-лок на странице
[Edit & navigation](/device-board/editor/edit-and-navigation).

## Typed ports и edges

* Data-рёбра окрашены по `SocketType` (DeviceRef, MicrophoneRef, AudioStreamRef, …).
* Passthrough labels на exec/data для variable-set и streaming-узлов.

## Variable inspector

При **Run** — снимок входов/выходов выбранного узла (`inspectRuntimeNode`). Канвас read-only.

## UserCases

Готовые сценарии из каталога — [UserCases](/device-board/usercases). Apply-all заменяет scenario-слой;
signal graph не трогается. При `isDirty` — подтверждение перед заменой.
