Исходный Markdown
Редактор исходника
Source mode использует CodeMirror 6 и работает с точной строкой, загруженной с диска. Текущий
basicSetup даёт Markdown highlighting, видимые line numbers, find/replace, bracket matching и
keyboard navigation. raytsystem добавляет diagnostics для конструкций, не квалифицированных для
Visual. Отдельная custom-подсветка frontmatter/wikilinks и настройка line numbers пока не
заявляются.
Редактор сохраняет LF/CRLF и наличие финального newline, если пользователь сам их не изменил. Malformed UTF-8 не перезаписывается: raytsystem показывает read-only ошибку, чтобы не повредить байты.
Черновик и сохранение
Черновик живёт в памяти или session-scoped storage. Private document content не попадает в
localStorage. Индикатор показывает несохранённые изменения, а закрытие вкладки требует решения
пользователя.
Сохранение выполняется явно кнопкой или Cmd/Ctrl+S; автосохранения каждого символа нет.
Каждый update передаёт document ID, expected snapshot и SHA-256 открытой версии. Сервер повторно
проверяет policy, stable document identity и делает no-follow atomic replace. Если изменился только
глобальный index snapshot из-за другого файла, update может выполнить scoped rebase и вернуть
snapshot_rebased; SHA-256 текущего документа при этом всё равно должен совпасть.
Conflict и Diff
Если байты или stable identity файла изменились после открытия, raytsystem не перезаписывает его. Conflict показывает, когда версии безопасно доступны:
- базовую версию на момент открытия;
- текущую версию на диске;
- локальный draft.
Diff отмечает добавленные и удалённые строки и итоговый Markdown. Merge выполняется вручную; автоматический LLM merge не запускается. После merge сохранение использует новый expected hash.
Связанные страницы
Источники истины
ops/decisions/ADR-035-managed-document-workspace.mddocs/13-documents-workspace-architecture.mddocs/14-documents-security-review.md