Выгрузите набор знаний в один HTML-файл, чтобы читать заметки, проверять источники и переходить по связям без установки отдельной программы просмотра. Начните с первого рабочего примера. Демонстрацию знаний репозитория со ссылками на источники также можно выгрузить командой scripts/build-viewer-demo.sh OUTPUT.html из корня репозитория.
okf view <bundle> --output viewer.html --lang ru
Файл содержит CSS, JavaScript, представление заметок и данные о связях. Он открывается с диска в браузере без сервера, сетевых запросов, CDN и внешних шрифтов. В интерфейсе есть список с поиском, фильтр по типу, прямые ссылки (#<ConceptID в кодировке URL>), сведения о заметке, источники, типизированные входящие и исходящие связи и необязательный локальный граф SVG. Граф использует воспроизводимое радиальное расположение, а не физическую симуляцию.
| Параметр | Поведение |
|---|---|
--lang en\|ru |
Начальный язык интерфейса; по умолчанию en. Неподдерживаемый язык вызывает ошибку до создания или замены выходного файла. |
--output FILE |
Обязательный путь выходного файла. Для замены существующего файла укажите --overwrite. |
--max-nodes N |
Максимальное число заметок, по умолчанию 10 000. Превышение приводит к ошибке до публикации файла. |
--spec auto\|0.1\|0.2 |
Проверяет заявленную версию набора. |
--temporal-profile instant-0b87c52\|date-3fcbb9f |
Выбирает закреплённый контракт времени OKF 0.2. Контракт календарных дат действует по умолчанию; контракт точных моментов времени выбирается явно. |
--as-of |
Опорное время для оценки актуальности: RFC3339 со смещением часового пояса для точного момента, YYYY-MM-DD для календарной даты. Без параметра актуальность имеет значение unevaluated («не оценено»). Часы браузера его не меняют. |
Практическая инструкция по выгрузке объясняет, как выбрать корень набора, версию и опорное время, обработать занятый путь, проверить результат локально и продолжить работу при отсутствии инструмента.
Частая ошибка — выгрузить файл по занятому пути без --overwrite. Выберите новый путь или явно разрешите замену. Результат сначала записывается во временный файл рядом с целевым, затем публикуется атомарно. Markdown-файл заметки и любой путь хранилища .okf/ нельзя использовать для выходного файла.
Представление в JSON содержит версию экспортёра, ревизию спецификации, основание выбора опорного времени, отдельные поля trust, status и staleness (проверка, состояние и актуальность), отрисованный Markdown, источники и типизированные связи. HTML, CSS и JavaScript написаны в этом проекте без сторонних библиотек интерфейса. Markdown обрабатывается Go-библиотекой Goldmark, которая уже является зависимостью репозитория. Исходный HTML и небезопасные URL подавляются; запросы изображений исключены. Политика безопасности содержимого блокирует сетевые подключения и разрешает только встроенный скрипт с соответствующим хешем. Внешние ссылки на источники открываются только по нажатию пользователя.
Панель «Источники» следует действующим правилам происхождения данных документа. Само наличие YAML-ключа sources заменяет старый раздел # Citations, даже если новое значение пустое, равно null, некорректно или продублировано. В представление попадают только корректные структурированные записи. Некорректная замена не возвращает старые цитаты.
Если sources отсутствует, записи старых цитат, выделенные парсером, отображаются в порядке документа. Имеющиеся заголовки и ресурсы сохраняются; просмотрщик не придумывает идентификаторы источников, URL, проверку или доверие. Текстовые записи без ресурса показывают свой текст. Исходный раздел Citations остаётся в отрисованном содержимом заметки.
При разрешении декодированного фрагмента URL существующий ConceptID имеет приоритет, в том числе идентификаторы с началом fn: или fnref:. Прямые ссылки с процентным кодированием и кнопки браузера «Назад»/«Вперёд» используют один и тот же маршрут. Настоящие ссылки на сноски Goldmark и обратные ссылки прокручивают текущую карточку, сохраняя выбранную заметку. Фрагмент существующего якоря сноски сохраняет эту карточку. Неизвестный фрагмент открывает первую заметку. Метки сносок не являются записями источников. Повторные ссылки используют нумерованные обратные якоря Goldmark fnref1:, fnref2: и далее с тем же поведением локальной прокрутки.
Options.Language выбирает язык выгрузки; пустое значение означает en. Существующий Render(ctx, projection) выводит английский интерфейс. Для русского используйте RenderWithOptions(ctx, projection, RenderOptions{Language: "ru"}). Допустимы только en, ru и пустое значение по умолчанию. Язык меняет оформление и не влияет на смысловое представление данных в JSON.
Встроенный переключатель EN/RU меняет подписи интерфейса, известные значения состояний и названия связей. Текущая заметка, поисковый запрос, фильтр по типу и состояние показа графа сохраняются. После перезагрузки возвращается язык, указанный при выгрузке; просмотрщик не использует хранилище или сеть для запоминания временного выбора. Авторский Markdown, идентификаторы, текст источников и неизвестные пользовательские значения не изменяются. Атрибут html lang и заголовок документа соответствуют выбранному языку.
Канонический источник: viewer/README.md. Поле source_revision выше указывает на предыдущую опубликованную основу, а не на полный текст этой редакции. Эта редакция включает текущие дополнения задачи 017: Options.Language, RenderOptions, RenderWithOptions, --lang и переключатель языка. Она описывает текущий рабочий контракт просмотрщика и не переопределяет спецификацию OKF.