Запись 46. Рождение веб-летописи: выход из тени репозитория, алгоритм Кнута — Пласса и блог перед зеркалом
⏱️ Время: 25 сентября 2026, 18:30 — 19:15 (~45 минут)1. Повод: почему проекту нужен собственный публичный блог на сайте
Когда Shellit дорос до версии v0.8.5, закрыл критические аудиты безопасности и оброс полноценной документацией, мы оглянулись на пройденный путь.
С самого первого дня в репозитории велся уникальный документ — docs/CHRONICLE.md: более 50 подробных записей, свыше 2600 строк чистой инженерной правды. Это не сухой git log и не заученные релиз-ноуты, а живой дневник того, как продукт создается с нуля: вайб-кодинг без знания синтаксиса Dart, архитектурное управление параллельным роем нейросетей, столкновения UI с суровой реальностью сетевых сокетов, ночной состязательный аудит Qwen против Antigravity.
Но возник резонный вопрос: почему эта ценнейшая история должна пылиться в служебной папке docs/ на гитхабе, где её увидят единицы?
Open-source проект живёт доверием сообщества. Когда люди видят не просто готовый бинарник, а всю подноготную его создания — каждый решённый баг, архитектурный выбор и проверку безопасности — доверие к инструменту возрастает многократно. Пользователю интересно читать живой инженерный процесс, а не сухие маркетинговые брошюры.
Так было принято принципиальное решение: у Shellit должен появиться собственный официальный блог-летопись прямо на сайте shellit.top.
2. Концепция: не корпоративный PR, а живая «Хроника» (Chronicle)
Мы сразу отказались от формата безликого корпоративного блога с абстрактными рекламными статьями. У нас уже есть настоящая, драматичная история.
Мы решили: вытаскиваем летопись на свет!
- Раздел получил благородное имя «Хроника» (в русской версии) и «Chronicle» (в английской). В этом слове есть вес, история и честность.
- Ссылку вынесли на самое видное место — в главную шапку сайта (
Navbar) рядом с «Документацией» и «Дорожной картой». - Продумали модульную архитектуру: не сваливать 400 килобайт текста в одну бесконечную страницу, а упаковать историю в эпические Акты (I–VIII) с интерактивным таймлайном, светящейся киберпанк-струной и перекрестными тегами.
- Создали регламент для субагента
AGENT_6_CHRONICLE_PUBLISHER, который по мере появления новых записей в репозитории автоматически адаптирует их в главы для сайта.
3. Первый блин: бунт против «слепой простыни»
Когда агент собрал первую версию раздела хроники на сайте, я открыл браузер — и у меня потемнело в глазах.
На экране висела бесконечная, монотонная, серая простыня текста на черном фоне. Глазу не за что было зацепиться, не чувствовалось ни ритма, ни той бешеной энергии, с которой мы штурмовали проект.
Последовал немедленный разнос:
«Это слепая простыня. Надо разбавить как-то, заголовки выделить, абзацы и т.д. /plan»
«Разве выключка не должна быть по ширине?»
Так мы шагнули в мета-разработку: создание блога о разработке Shellit потребовало точно такого же перфекционизма, как и сам Shellit.
4. Алгоритм Кнута — Пласса: укрощаем выключку по ширине
Выключка текста по ширине (text-align: justify) в вебе считается дурным тоном, потому что без правильных переносов браузер растягивает пробелы, превращая текст в решето из «белых рек» (rivers of white space).
Но у меня в арсенале был собственный MCP-инструмент — mcp-typography-server, созданный на базе алгоритма Кнута — Пласса (библиотека Justif). Дональд Кнут еще в 1970-х доказал: книжная верстка строится не на растягивании слов, а на математическом расчете точек разрыва строк, мягких переносах (hyphens) и оптимизации штрафов плотности.
Мы внедрили принципы высокой типографики в стили веб-летописи:
text-align: justify; text-justify: inter-word;- Автоматические языковые переносы
hyphens: auto; -webkit-hyphens: auto; - Выверенная книжная ширина колонки (
max-w-3xl) и комфортный интерлиньяж. - Атрибуция сервера типографики в подвале каждой статьи.
Текст мгновенно задышал и обрел плотность добротной печатной книги.
5. Живые диалоги без фальши: спойлеры и динамическое оглавление
Агент по привычке попытался сочинить «причесанные» диалоги ни о чем. Я жестко остановил эту самодеятельность:
«Только брать реальные диалоги из наших бесед»
«Не надо про выбор названия, это неинтересно, что-то более интересное»
«Стенограммы убрать под спойлеры с начальным закрытым состоянием»
Мы подняли сырые логи transcript.jsonl и достали настоящие, непридуманные цитаты: старт параллельного роя через /grill-me, шок от потери паролей хостов при первом запуске, баталии за независимые вкладки терминала и аудит Zero-Knowledge. Упаковали их в сворачиваемый компонент <DialogueSnippet /> — в свернутом виде он не мешает чтению, а по клику приоткрывает подлинную закулисную кухню проекта.
А для навигации переписали компонент ChapterTOC.astro:
«Оглавление на десктопе при прокрутке страницы должно съезжать вправо. На мобильном оставаться как есть»
Теперь на мобильных устройствах оглавление скромно живет в шапке, а на мониторах при прокрутке плавно скользит вправо в парящий док со scrollspy-подсветкой.
6. Честные метрики: 19 часов до MVP
Заодно ликвидировали еще одну галлюцинацию нейросети: агент написал на сайте, будто проект делался «7 дней».
«Почему 7 дней? Ты откуда взял это число? 19 часов до MVP»
От пустой папки до первого рабочего релиза v0.1.0 с SSH, SFTP, локальным терминалом и шифрованием прошло ровно ~19 часов плотнейшего штурма. Последующие дни ушли на полировку, аудит безопасности и создание экосистемы. В плашке статистики на сайте мы закрепили эту честную цифру.
7. Итог
Решение сделать летопись публичной подарило Shellit собственный первоклассный медиа-ресурс.
На сайте https://shellit.top заработал интерактивный раздел Хроники из 8 Актов, где Акт VIII закольцевал историю — рассказал о том, как рождался сам этот веб-раздел. Полная прозрачность разработки, открытый код, академическая типографика и честный диалог с сообществом.