2.8 KiB
ADR-0010: Папка .private, справочник сотрудников и частичные подписи
Дата: 2026-08-31
Статус: Принято
Контекст
ZIP installer и отдельная build task скрывали второй переключатель private media от автора и не поддерживали реальные фамильные имена PNG. В проектах подписи поступают постепенно, а для каждого изображения уже подобрано индивидуальное вертикальное смещение. Чистый fork при этом обязан собираться без приватного каталога.
Рассматриваемые варианты
- Оставить ZIP и
sys.inputs— безопасно для clean fork, но preview и обычная task не совпадают, а схема имён жёстко привязана к ролям. - Автоматически сканировать
.private— желаемый UX, но Typst 0.15 не предоставляет file-exists и падает при попытке открыть отсутствующий PNG. - Условный import и явная карта доступности — один параметр в
main.typ, отсутствие записи означает пустое место, offsets живут рядом с приватными PNG.
Решение
Выбран вариант 3. Публичный tracked-справочник хранит идентификатор, ФИО, обычную должность и фиксированное имя PNG. Игнорируемый .private/settings.typ хранит доступность и offset. main.typ импортирует его только при literal use-private-assets = true. Все build/preview пути используют один entrypoint.
Последствия
Становится проще: копировать .private целиком, менять роль сотрудника в одной строке, видеть реальные подписи в preview, работать при частично полученных PNG и публиковать clean fork с false.
Становится сложнее: при получении нового PNG нужно вручную включить запись; включённый, но отсутствующий файл по-прежнему вызывает точную ошибку Typst.
Закрывает дверь на: автоматическое определение файлов, role-based имена responsible.png, отдельную private build task и ZIP installer.