SHA256
183 lines
20 KiB
Markdown
183 lines
20 KiB
Markdown
# История изменений документации блокчейна
|
||
|
||
## 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 схему через временный кандидат `<blockchainName>.tmp_bch`, sidecar `<blockchainName>.write_check` и marker `<blockchainName>.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)` для скрытого технического снимка профиля канала.
|
||
- Зафиксирован формат тегов `<SHiNE:title;v=1;...>` и `<SHiNE:avatar;v=1;size=...;sha256=...;ar=...>`; описание хранится хвостовым 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/`.
|