Журнал изменений движка
Изменения в движке Notepub после последнего коммита и их влияние на поведение.
Базовая точка отсчета: коммит 4c8f9a8 (2026-02-06, chore: clean core repo, add release workflow).
Ниже перечислены изменения в коде движка после этого коммита, которые сейчас есть в рабочем дереве.
Релиз v0.1.3 (2026-02-11)
- Кроссплатформенная блокировка файла в indexer
- Файлы:
internal/indexer/indexer.go,internal/indexer/filelock_unix.go,internal/indexer/filelock_nonunix.go - Использование
syscall.Flockвынесено в OS-специфичные обертки. - Результат: релизная сборка теперь компилируется для
windows_amd64и всех целевых платформ. - Поведение в рантайме:
- unix: сохраняется неблокирующий эксклюзивный lock;
- non-unix: best-effort fallback lock.
- Восстановлен релизный pipeline
- Workflow для тега
v0.1.2падал на шагеBuild binariesиз-за непереносимого lock-кода. - Релиз
v0.1.3завершен успешно с полным набором артефактов:notepub_darwin_amd64notepub_darwin_arm64notepub_linux_amd64notepub_linux_arm64notepub_windows_amd64.exechecksums.txt
Что обновить в recipe/docs:
- зафиксировать
NOTEPUB_VERSIONнаv0.1.3в CI workflows и инструкциях.
internal/serve/server.go
-
В обработчике
/searchдобавлена загрузка resolve-индекса и построениеdata.Collections. -
Практический эффект: страница поиска теперь получает ту же структуру коллекций/хабов, что и другие страницы, и может рендерить полноценный sidebar документации.
-
Изменение безопасно по обратной совместимости: если индекс недоступен, логика продолжает работать без падения.
-
В
renderNotFoundдобавлен заголовокContent-Type: text/html; charset=utf-8. -
Практический эффект: 404-страница рендерится браузером как HTML, а не как сырой текст.
-
Это улучшает отображение и корректную обработку кириллицы.
internal/serve/theme.go
- В
embedдобавлено включениеembed/templates/partials/*.html. - Практический эффект: partial-шаблоны теперь гарантированно попадают во встроенную тему бинарника.
- Это важно для универсальности standalone-режима, когда тема не читается с диска.
Проверка после обновлений:
- Запустить
notepub index --config ./config.yaml --rules ./rules.yaml. - Проверить, что
/searchпоказывает sidebar с хабами и статьями. - Проверить 404 по несуществующему URL: страница должна отображаться как обычный HTML-шаблон.