Отсутствующие API и совместимость
Что явно не входит в текущий контракт и как это влияет на планирование интеграции.
| Показатель | Значение |
|---|---|
| click / double-click | нет в public Surface Host contract |
| right-click / context-menu provider | нет |
| public canonical hitTest(x,y) | нет |
| arbitrary node mutation | нет одной универсальной команды |
| stable semver | нет; 1.0.0-draft |
| remote unauthenticated WS | запрещён; loopback + token |
| binary WS frames | не принимаются |
| renderer-owned truth | запрещена; модель/история/save принадлежат Rust |
До снятия draft партнёр обязан pin-ить SHA/версию бинаря вместе с TypeScript declarations и проверять bootstrap schema + supported_commands.
Rust commands: crates/fastdoc-cli/src/protocol.rs
Rust dispatch/results: crates/fastdoc-cli/src/serve.rs
Typed editing: crates/fastdoc-model/src/editing_session/command.rs, position.rs, ids.rs
Generated session types: apps/fastdoc-shell/src/generated/session-protocol.ts
Desktop Web API: apps/fastdoc-shell/src/shell-contract/api*.ts
Runtime bridge: apps/fastdoc-shell/src/preload.ts
Embedded surface: crates/fastdoc-cli/src/surface_assets/surface.js
Baseline: 342102ff1414abfaf3dd8d4aa61d2074fc4e60bb