# История изменений документации блокчейна ## 2026-08-12 13:00:00 +0400 - Базовый коммит-ориентир: `working tree`. - Канонический текстовый формат служебных тегов сокращён: - `TEXT_CHANNEL_META` теперь пишет `` и ``; - вложения теперь пишутся как ``; - превью во вложениях задаётся полями `preAr/preSha256` без отдельной новой версии `v=2`; - DM-вставки теперь пишутся с префиксом `` продолжают поддерживаться; - старые поля `name/size/previewAr/previewSha256` продолжают поддерживаться; - legacy-вложения `v=2` продолжают читаться как вложения с превью. ## 2026-08-09 23:30:06 +0400 - Базовый коммит-ориентир: `ee185cf`. - Нумерация `STATUS_ACTION` уточнена под дневник действий: - `10` — `STATUS_DONE_ONCE`; - `20` — `STATUS_LEARNED`; - `30` — `STATUS_SERVICE_PASSED`; - `100` — `STATUS_CONFIRMED`; - `110/120/130/140/150` — курсные статусы `INTERESTED/STARTED/IN_STUDY/ABANDONED/COMPLETED`. - Зафиксированы допустимые связи `STATUS_ACTION -> target`: - упражнение: `DONE_ONCE`, `LEARNED`; - услуга: `SERVICE_PASSED`; - курс: `INTERESTED`, `STARTED`, `IN_STUDY`, `ABANDONED`, `COMPLETED`. - Добавлен серверный read API `GetPersonalDiary` для виртуальной ленты личного дневника из `STATUS_ACTION`. ## 2026-08-09 19:40:00 +0400 - Базовый коммит-ориентир: `3552e05`. - Уточнено серверное чтение каналов и тредов для `TEXT_RATING`: - `GetChannelMessages` и `GetMessageThread` теперь отдают отдельное поле `ratingsCount`; - `GetMessageThread` включает `TEXT_RATING` в общее дерево потомков вместе с `TEXT_REPLY`; - в `docs/API/06_Channels_Read_API.md` зафиксировано, что потомки треда возвращаются вперемешку по времени создания. ## 2026-08-09 18:55:16 +0400 - Базовый коммит-ориентир: `43f54c9`. - Для первой итерации новых контентных типов обновлена карта `TEXT`-подтипов: - `TEXT_RATING` добавлен как `subType=30` и трактуется как target-based отзыв на конкретный блок; - `TEXT_REPOST` перенесён на `subType=50` и оставлен как отложенная заготовка; - `TEXT_CHANNEL_META` перенесён на `subType=90`; - добавлены line-based `TEXT_ENTRYPOINT (100)`, `TEXT_EXERCISE (110)`, `TEXT_SERVICE (120)`, `TEXT_COURSE (130)`. - Добавлен новый верхнеуровневый тип `STATUS_ACTION (type=5)` с подтипами `10/20/30/40/50/60/70/80`. - `CHANNEL_MEMBERSHIP` в текущую реализацию не включён и ведётся отдельно как отложенная тема. ## 2026-08-04 12:00:00 +0400 - Базовый коммит-ориентир: `391b18a`. - Формат вложений расширен до `SHiNE:attach v=2` для опционального второго preview-файла: добавлены поля `previewAr` и `previewSha256` при сохранении совместимости со старыми `v=1`. - В UI загрузки для видео добавлен сценарий `Добавить превью`: клиент может извлечь первый кадр, загрузить его отдельным файлом в Arweave или через Turbo и сохранить связь preview с основным вложением. - В журнале загрузок файлы с preview помечаются явно и показываются расширенной плиткой с картинкой превью. ## 2026-07-31 17:22:07 +0400 - Базовый коммит-ориентир: `05bd9f5`. - Уточнён UI вложений: превью последнего сообщения в списке каналов скрывает технические attach-блоки, карусель не показывает неактивные стрелки на краях, обычный файл отображается компактной кликабельной полоской без `txId`; формат attach-блока не изменён. ## 2026-07-31 17:13:26 +0400 - Базовый коммит-ориентир: `60ab476`. - Уточнён UI журнала загрузок Arweave: статус доступности перенесён в начало второй строки плитки, верхняя панель закреплена как fixed-полоса вне прокрутки, в меню добавлен пункт `Добавить файл`, меню закрывается при клике вне него; формат attach-блока не изменён. ## 2026-07-31 17:06:55 +0400 - Базовый коммит-ориентир: `bcae285`. - Уточнён UI журнала загрузок Arweave: плитки принудительно не растягиваются по высоте, а контейнер журнала запрещает горизонтальную прокрутку; формат attach-блока не изменён. ## 2026-07-31 16:58:00 +0400 - Базовый коммит-ориентир: `cd67176`. - Уточнён UI журнала загрузок Arweave: экран называется `Загрузка файлов`, верхняя панель стала компактной и закреплённой сверху, плитки журнала тёмные и уменьшены по высоте; формат attach-блока не изменён. ## 2026-07-31 13:48:57 +0400 - Базовый коммит-ориентир: `98eba54`. - Уточнено UI-поведение журнала загрузок Arweave: экран называется `Загрузить файлы в блокчейн`, использует компактные плитки и локальный флаг `Не добавлен в SHiNE` для файлов, которые загружены заранее, но ещё не отправлены во вложении сообщения. - Зафиксировано, что флаг хранится только в клиентском sessionStorage и снимается после успешной отправки сообщения с выбранным вложением; формат attach-блока не изменён. ## 2026-07-31 13:12:24 +0400 - Базовый коммит-ориентир: `c530627`. - Для UI-вложений добавлен отдельный экран журнала загрузок Arweave в настройках: загрузка файла без создания сообщения, плитки истории с `txId`, размером, датой и статусом доступности через gateway. - Уточнено, что журнал хранится только в `sessionStorage` текущего браузера и не влияет на уже записанные attach-блоки в блокчейне. ## 2026-07-31 12:47:41 +0400 - Базовый коммит-ориентир: `f961947`. - Для `SHiNE:attach v=1` уточнено клиентское отображение вложений: горизонтальная карусель над текстом сообщения, счётчик позиции, просмотр image/video в модальном окне и скачивание файлов. - Зафиксирован клиентский лимит: максимум 10 вложений в одном сообщении с сохранением порядка attach-блоков. - Описана диагностика недоступного файла через Arweave gateway: отдельное сообщение для свежих сообщений младше 20 минут и отдельное сообщение для старых недоступных файлов. ## 2026-07-30 11:12:47 +0400 - Базовый коммит-ориентир: `e9e6628`. - Добавлен отдельный документ `docs/Blockchain/15_TEXT_Attachments.md` с полной спецификацией `SHiNE:attach v=1`. - В `docs/Blockchain/README.md` добавлена ссылка на документ вложений. - В UI порядок отображения сообщения с вложениями закреплён как: вложения сверху, пользовательский текст снизу. ## 2026-07-30 10:31:26 +0400 - Базовый коммит-ориентир: `c7684d6`. - Для `TEXT_POST`, `TEXT_REPLY`, `TEXT_EDIT_POST` и `TEXT_EDIT_REPLY` зафиксирован клиентский формат вложений `SHiNE:attach v=1`. - Бинарный `TextBody` не изменён: вложения записываются техническими строками в начале UTF-8 `text`. - Вложение хранит `name`, `size`, `sha256` и короткий Arweave `txId` в поле `ar`; имя файла кодируется через `encodeURIComponent`. - В `docs/Blockchain/11_TEXT_Blocks.md` добавлены правила совместимости, отображения и допустимости пустого пользовательского текста при наличии вложений. ## 2026-07-14 20:43:43 +0400 - Базовый коммит-ориентир: `118be41`. - В `docs/ИТХ/Спецификация_ИТХ_v1.md` изменён магик файла чекпоинта: вместо `SHNCKPT1` (8 байт) — читаемый `SHiNE-CHECKPOINT` (16 байт ASCII, по образцу `SQLite format 3\0`). Версия формата в магик не входит — она в поле `v` заголовка и в первой строке preimage. ## 2026-07-14 19:56:50 +0400 - Базовый коммит-ориентир: `172f007`. - В `docs/ИТХ/Спецификация_ИТХ_v1.md` из TODO убран «вход в график по депозиту»: вход в группу закрытий — по доверию, не за деньги. Зафиксирована целевая модель: DAO ведёт список как временный уровень, пока не сформировано сообщество сияющих; далее приём/исключение серверов — через голосование сияющих (правка в разделе 2 и в TODO). ## 2026-07-14 18:43:18 +0400 - Базовый коммит-ориентир: `4cb98f7`. - Дизайн ИТХ дополнен по итогам обсуждения (`docs/ИТХ/README.md`, `docs/ИТХ/Спецификация_ИТХ_v1.md`): - правило признания явно объявлено правилом чтения: дефолт — rota PDA, но наблюдатель может считать голоса по собственному списку доверия («запись — по общему списку, чтение — по любому»); параллельные группы закрытий разрешены by design; - новый раздел 10 «Форки пользовательских цепочек»: fork-choice дежурного (длиннейшая ветка от зачекпоинченной вершины + tie-break по меньшему `hash32`), зачекпоинченное всегда побеждает локальные ветки, заморозка цепочки (`chain_frozen`) только при противоречии между архивами двух групп закрытий, рестарт с `login-002`; - шаг 9.9 проверки изменён с «конфликт → отказ» на «конфликт → принять версию чекпоинта»: один пользователь больше не может сорвать закрытие дня; - правило для клиентов: повтор отправки блока — только байт-в-байт (дедупликация, а не форк); - TODO дополнен: детерминированный выбор дежурного через hash, вход в график по депозиту, механизм новой цепочки `-002`. - Формат блоков и правила `AddBlock` по-прежнему не изменены (код не реализован); при реализации дописать `chain_frozen` в `docs/API/04_Add_Block_to_Blockchain_API.md`. ## 2026-07-13 14:04:59 +0400 - Базовый коммит-ориентир: `af12d7b`. - Добавлена новая папка документации `docs/ИТХ/` — ежедневное закрытие блокчейна (чекпоинты): - `docs/ИТХ/README.md` — краткий обзор для людей; - `docs/ИТХ/Спецификация_ИТХ_v1.md` — подробная спецификация для реализации (формат чекпоинта в Arweave, меркл-правила ИТХ, rota PDA DAO, слот `CheckpointStateBlock` в PDA серверов, канал закрытий с командой `/.checkpoint`, алгоритмы дежурного и проверяющего). - Формат блоков и правила `AddBlock` не изменены: это новый мета-слой поверх существующего блокчейна. - Код пока не реализован; при реализации обязательно дописать `/.checkpoint` в `02_Channel_Commands.md` и `CheckpointStateBlock` в формат `user_pda`. - В `README.md` этого каталога добавлен раздел «Смежная документация» со ссылками на `docs/ИТХ/`. # 2026-06-26 17:45:18 +0400 - Базовый коммит-ориентир: `44a1ba0`. - На `server2.shineup.me` подтверждена рабочая схема startup sync и full-resync: - после рестарта сервер добивает `BlockchainTmpRecovery` и `BlockchainResyncRecovery`; - `aidartest-001` успешно подтягивается с `shineup.me`; - итоговое локальное состояние по `aidartest-001` дошло до `last_block_number=13`. - В `docs/Blockchain/sync-between-servers.md` добавлен практический результат ручной проверки на тестовом сервере. ## 2026-06-26 17:03:22 +0400 - Базовый коммит-ориентир: `71fdee0`. - Обычный `AddBlock` переведён на crash-safe схему через временный кандидат `.tmp_bch`, sidecar `.write_check` и marker `.write_pending`. - `BlockchainTmpRecoveryOnStartup` теперь разбирает marker-driven recovery для обычной записи блока: - если marker есть, recovery либо завершает swap tmp -> main, либо удаляет мусор; - если marker нет, временные артефакты считаются мусором и удаляются. - В `docs/Blockchain/sync-between-servers.md` добавлено описание обычного `AddBlock` recovery и разделение между `write_pending` и `resync_pending`. ## 2026-05-24 11:40:00 +0300 - Базовый коммит-ориентир: `abdce05`. - `TEXT_REPOST (subType=30)` оставлен как зарезервированный формат, но новые блоки репоста временно отключены на уровне `AddBlock`. - В `11_TEXT_Blocks.md` зафиксировано, что запись `TEXT_REPOST` временно не используется до будущей реализации. - В `docs/API/04_Add_Block_to_Blockchain_API.md` добавлен код отказа `repost_disabled`. ## 2026-08-01 01:45:29 +0400 - Базовый коммит-ориентир: `24afcba`. - Добавлен новый `TEXT`-подтип `TEXT_CHANNEL_META (subType=70)` для скрытого технического снимка профиля канала. - Зафиксирован формат тегов `` и ``; описание хранится хвостовым UTF-8 текстом. - UI создания канала может сразу после `TECH_CREATE_CHANNEL` записать первый `TEXT_CHANNEL_META` с человекочитаемым именем, описанием и аватаром. - Команда `/.desc` удалена из актуальной модели изменения описания канала; профиль канала меняется только через `TEXT_CHANNEL_META`. - API чтения каналов расширен полями `displayName`, `avaAr`, `avaSha256`, `avaSize`, `metaUpdatedAtMs` и списком `metaEvents`. ## 2026-08-01 02:18:00 +0400 - Базовый коммит-ориентир: `8125d1a`. - Увеличен лимит `CreateChannelBody.channelDescription` до `2048` UTF-8 байт. - Для публичных каналов начальный профиль канала теперь хранится прямо в `TECH_CREATE_CHANNEL.channelDescription` тем же meta-форматом, что `TEXT_CHANNEL_META`. - UI создания публичного канала больше не пишет отдельный `TEXT_CHANNEL_META` сразу после создания; отдельный meta-блок используется только для последующих изменений профиля. - Bootstrap `channel_names_state` при старте сервера теперь применяет последующие `TEXT_CHANNEL_META` поверх начального профиля из `TECH_CREATE_CHANNEL`. ## 2026-07-31 17:40:31 +0400 - Базовый коммит-ориентир: `d640dd6`. - Формат блокчейна не менялся. - В UI каналов добавлен технический просмотр данных сообщения из уже полученного ответа сервера: цепочка автора, номер записи, хэш, тип, время, текст, public key/подпись при наличии и сырой JSON-блок. - Удалённые сообщения в UI теперь отображаются компактной строкой с переходом в историю версий. ## 2026-05-21 19:05:00 +0300 - Базовый коммит-ориентир: `5344c42`. - Добавлен новый TEXT-подтип `TEXT_REPOST (subType=30)`: - обновлён перечень типов в `11_TEXT_Blocks.md`; - обновлена быстрая карта типов в `00_Blockchain_Formats_and_Block_Types.md`. - Уточнено API-описание поддержанных подтипов в `docs/API/04_Add_Block_to_Blockchain_API.md`. - В документе `docs/API/08_MCP_Чтение_и_дозапись_персонального_публичного_чата.md` зафиксировано, что чтение канала учитывает `TEXT_POST` и `TEXT_REPOST`. ## 2026-05-20 11:34:17 +0300 - Базовый коммит-ориентир: `a53444b`. - В `13_CONNECTION_Blocks.md` добавлены новые CONNECTION подтипы: - `60/61` — `known_person / unknown_person` (знаю этого человека); - `70/71` — `shine_confirmed / shine_unconfirmed` (точно уверен, что сияющий); - `74/75` — `shine_seen / shine_unseen` (мало знаком, но видел сияющим). - Обновлён список CONNECTION-подтипов в `docs/API/04_Add_Block_to_Blockchain_API.md`. ## 2026-05-19 20:30:21 +0300 - Базовый коммит-ориентир: `7986184`. - Уточнён документ `11_TEXT_Blocks.md`: для `TEXT_EDIT_POST` и `TEXT_EDIT_REPLY` зафиксировано, что `textLen=0` допустим и трактуется как логическое удаление сообщения. - Явно закреплено, что отдельного `DELETE`-подтипа нет, удаление выполняется edit-блоком. ## 2026-05-19 00:22:46 +0300 - Базовый коммит-ориентир: `c27da63a3e65`. - Актуализирован `README.md` как точка входа для MVP-документации по протоколу. - В документации явно зафиксировано, что `channelType=100` и `channelType=200` присутствуют в формате, но пока не используются в UI. - Актуализирован перечень REACTION-подтипов: добавлен `REACTION_UNLIKE (subType=2)`. - Актуализирован перечень CONNECTION-подтипов: добавлены `SPOUSE/PARENT/CHILD/SIBLING` и обратные операции. - В документ `02_Blockchain_Kinds_and_Lines.md` добавлены фактические серверные правила валидации line-полей. - Обновлён корневой `AGENTS.md`: формат блокчейна менять только после явного подтверждения пользователя и с предварительным предупреждением. ## 2026-05-13 00:02:32 +0300 - Базовый коммит-ориентир: `f63f40f1eb2f`. - Добавлен текущий формат `CreateChannelBody` с полями `channelType (2 байта)` и `channelTypeVersion (2 байта)`. - Зафиксированы типы каналов: `0=stories`, `1=public`, `100=personal`, `200=group`. - Серверная уникальность имени канала изменена на `owner + type + name(slug)`. - Root-канал `0` переименован в `stories` на уровне API-чтения. - Для персонального канала (`type=100`) включена сборка парного потока при чтении (`A->B` + `B->A`, если существует). - Добавлена поддержка командного префикса `/.` и команды `/.desc` для актуализации описания канала при чтении. - Зафиксированы команды `/.add` и `/.remove` для каналов `type=200` (зарезервировано под расширение участниками). - В `AGENTS.md` добавлено обязательное правило актуализации документации в `docs/Blockchain/`.