# История изменений документации блокчейна ## 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-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/`.