Files
SHiNE-server/docs/Blockchain/CHANGELOG.md
T

23 KiB
Raw Blame History

История изменений документации блокчейна

2026-08-12 13:00:00 +0400

  • Базовый коммит-ориентир: working tree.
  • Канонический текстовый формат служебных тегов сокращён:
    • TEXT_CHANNEL_META теперь пишет <S:title> и <S:ava>;
    • вложения теперь пишутся как <S:att;v=1;nm=...;sz=...;sha256=...;ar=...>;
    • превью во вложениях задаётся полями preAr/preSha256 без отдельной новой версии v=2;
    • DM-вставки теперь пишутся с префиксом <S:.
  • Зафиксирована обратная совместимость чтения:
    • старые теги <SHiNE:...> продолжают поддерживаться;
    • старые поля name/size/previewAr/previewSha256 продолжают поддерживаться;
    • legacy-вложения v=2 продолжают читаться как вложения с превью.

2026-08-09 23:30:06 +0400

  • Базовый коммит-ориентир: ee185cf.
  • Нумерация STATUS_ACTION уточнена под дневник действий:
    • 10STATUS_DONE_ONCE;
    • 20STATUS_LEARNED;
    • 30STATUS_SERVICE_PASSED;
    • 100STATUS_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 схему через временный кандидат <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/61known_person / unknown_person (знаю этого человека);
    • 70/71shine_confirmed / shine_unconfirmed (точно уверен, что сияющий);
    • 74/75shine_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/.