diff --git a/AGENTS.md b/AGENTS.md index 7a11373..259adad 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -13,6 +13,8 @@ - Это точка входа (оглавление), рядом расположены детальные файлы по форматам, типам каналов и командным сообщениям. - При любом изменении кода, связанного с блокчейном (формат блока, типы каналов, правила чтения/записи, команды), обязательно обновлять соответствующие документы в `Dev_Docs/Blockchain/`. - Дополнительно обязательно вести `Dev_Docs/Blockchain/CHANGELOG.md`: дописывать изменения построчно с указанием даты/времени и хэша коммита, после которого внесено изменение. +- Перед любым изменением формата блокчейна обязательно заранее предупреждать пользователя, что формат будет изменён. +- Изменять формат блокчейна можно только после явного подтверждения пользователя (без подтверждения формат не менять). ## Версионирование - Единый файл версий проекта: `VERSION.properties` (в корне репозитория). diff --git a/Dev_Docs/Blockchain/00_Blockchain_Formats_and_Block_Types.md b/Dev_Docs/Blockchain/00_Blockchain_Formats_and_Block_Types.md index 17d0d40..8c1fd2f 100644 --- a/Dev_Docs/Blockchain/00_Blockchain_Formats_and_Block_Types.md +++ b/Dev_Docs/Blockchain/00_Blockchain_Formats_and_Block_Types.md @@ -16,8 +16,8 @@ - `type=0` — TECH: HEADER, CREATE_CHANNEL. - `type=1` — TEXT: POST/EDIT_POST/REPLY/EDIT_REPLY. -- `type=2` — REACTION: LIKE. -- `type=3` — CONNECTION: FRIEND/CONTACT/FOLLOW и обратные операции. +- `type=2` — REACTION: LIKE/UNLIKE. +- `type=3` — CONNECTION: FRIEND/CONTACT/FOLLOW/SPOUSE/PARENT/CHILD/SIBLING и обратные операции. - `type=4` — USER_PARAM: key/value-параметры пользователя. ## Примечание diff --git a/Dev_Docs/Blockchain/01_Channel_Types_and_CreateChannel.md b/Dev_Docs/Blockchain/01_Channel_Types_and_CreateChannel.md index eb523cc..0322cda 100644 --- a/Dev_Docs/Blockchain/01_Channel_Types_and_CreateChannel.md +++ b/Dev_Docs/Blockchain/01_Channel_Types_and_CreateChannel.md @@ -1,7 +1,7 @@ # Типы каналов и CreateChannel -## 1. Формат `CreateChannelBody` -Формат `TECH_CREATE_CHANNEL` поддерживает единственный текущий `version=1` и включает: +## 1. Формат `CreateChannelBody` (`msg_type=0`, `subType=1`, `version=1`) +Payload включает: 1. line-поля канала (`lineCode`, `prevLineNumber`, `prevLineHash32`, `thisLineNumber`); 2. `channelName`; @@ -17,6 +17,10 @@ Версия типа (`channelTypeVersion`) сейчас используется со значением `1`. +Важно для MVP: +- `100` и `200` в формате поддерживаются, но в текущем UI не используются. +- В MVP рабочий UI-флоу — каналы `0` и `1`. + ## 3. Имя root-канала - Root-канал (`line_code = 0`) в API/чтении отображается как `stories`. - Публикации в `stories` разрешены владельцу собственного блокчейна. diff --git a/Dev_Docs/Blockchain/02_Blockchain_Kinds_and_Lines.md b/Dev_Docs/Blockchain/02_Blockchain_Kinds_and_Lines.md index 7134425..86e7427 100644 --- a/Dev_Docs/Blockchain/02_Blockchain_Kinds_and_Lines.md +++ b/Dev_Docs/Blockchain/02_Blockchain_Kinds_and_Lines.md @@ -24,7 +24,21 @@ - связей и подписок; - пользовательских параметров. -## 3. Root-идея для каналов и подписок +## 3. Правила line-полей (фактическая серверная валидация) + +Line-поля: `lineCode`, `prevLineNumber`, `prevLineHash32`, `thisLineNumber`. + +- Line-поля разрешены только для `msg_type`: `0`, `1`, `3`, `4`. +- Если передано хотя бы одно line-поле, должны быть переданы все 4. +- `prevLineNumber/prevLineHash32` должны указывать на существующий блок этой же цепочки. +- Для первого шага после root (`prevLineNumber == lineCode`): + - `TEXT (msg_type=1)`: `thisLineNumber = 0`; + - `TECH/CONNECTION/USER_PARAM (0/3/4)`: `thisLineNumber = 1`. +- Для обычного шага: + - `TEXT`: `thisLineNumber` допускает `same` или `+1` от предыдущего блока линии; + - `TECH/CONNECTION/USER_PARAM`: строго `+1`. + +## 4. Root-идея для каналов и подписок Для ссылок вида follow/friend/contact принято ссылаться на корневые блоки: - `HEADER` для базовой сущности пользователя/канала `0`; diff --git a/Dev_Docs/Blockchain/02_Channel_Commands.md b/Dev_Docs/Blockchain/02_Channel_Commands.md index 448e7e6..2fe6c3b 100644 --- a/Dev_Docs/Blockchain/02_Channel_Commands.md +++ b/Dev_Docs/Blockchain/02_Channel_Commands.md @@ -27,3 +27,7 @@ - Команды передаются как обычные `TEXT_POST` сообщения. - Сервер уже применяет `/.desc` при вычислении актуального описания канала. - Команды `/.add` и `/.remove` зарезервированы под расширенную модель участников `type=200` на уровне UI/агрегации. + +## 4. Статус для MVP +- В текущем UI каналы `type=100` и `type=200` не используются. +- Соответственно, `/.add` и `/.remove` считаются запланированными и пока не участвуют в рабочем UI-сценарии. diff --git a/Dev_Docs/Blockchain/10_TECH_Blocks.md b/Dev_Docs/Blockchain/10_TECH_Blocks.md index ffd2339..0290844 100644 --- a/Dev_Docs/Blockchain/10_TECH_Blocks.md +++ b/Dev_Docs/Blockchain/10_TECH_Blocks.md @@ -10,7 +10,7 @@ TECH-тип покрывает системные записи цепочки. 2. `subType=1` — `TECH_CREATE_CHANNEL` - создание нового канала; - - хранит line-поля + `channelName`. + - хранит line-поля + `channelName` + `channelDescription` + `channelType` + `channelTypeVersion`. ## Назначение diff --git a/Dev_Docs/Blockchain/12_REACTION_Blocks.md b/Dev_Docs/Blockchain/12_REACTION_Blocks.md index d76c83c..58f8ac2 100644 --- a/Dev_Docs/Blockchain/12_REACTION_Blocks.md +++ b/Dev_Docs/Blockchain/12_REACTION_Blocks.md @@ -5,6 +5,9 @@ 1. `subType=1` — `REACTION_LIKE` - лайк на целевой блок; - хранит target: `toBlockchainName`, `toBlockGlobalNumber`, `toBlockHash32`. +2. `subType=2` — `REACTION_UNLIKE` + - снятие лайка с целевого блока; + - хранит target: `toBlockchainName`, `toBlockGlobalNumber`, `toBlockHash32`. ## Назначение diff --git a/Dev_Docs/Blockchain/13_CONNECTION_Blocks.md b/Dev_Docs/Blockchain/13_CONNECTION_Blocks.md index fecc241..bbfe25a 100644 --- a/Dev_Docs/Blockchain/13_CONNECTION_Blocks.md +++ b/Dev_Docs/Blockchain/13_CONNECTION_Blocks.md @@ -10,6 +10,14 @@ CONNECTION-тип описывает социальные связи и подп 4. `subType=21` — `CONNECTION_UNCONTACT` 5. `subType=30` — `CONNECTION_FOLLOW` 6. `subType=31` — `CONNECTION_UNFOLLOW` +7. `subType=40` — `CONNECTION_SPOUSE` +8. `subType=41` — `CONNECTION_UNSPOUSE` +9. `subType=50` — `CONNECTION_PARENT` +10. `subType=51` — `CONNECTION_UNPARENT` +11. `subType=52` — `CONNECTION_CHILD` +12. `subType=53` — `CONNECTION_UNCHILD` +13. `subType=54` — `CONNECTION_SIBLING` +14. `subType=55` — `CONNECTION_UNSIBLING` ## Общий формат payload @@ -22,3 +30,4 @@ CONNECTION-тип описывает социальные связи и подп - FOLLOW указывает на root канала: - `HEADER` для канала `0`; - `CREATE_CHANNEL` для пользовательского канала. +- Для остальных типов связи (`SPOUSE/PARENT/CHILD/SIBLING`) используется тот же target-формат. diff --git a/Dev_Docs/Blockchain/CHANGELOG.md b/Dev_Docs/Blockchain/CHANGELOG.md index 7a28d05..6800a9a 100644 --- a/Dev_Docs/Blockchain/CHANGELOG.md +++ b/Dev_Docs/Blockchain/CHANGELOG.md @@ -1,5 +1,14 @@ # История изменений документации блокчейна +## 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 байта)`. diff --git a/Dev_Docs/Blockchain/README.md b/Dev_Docs/Blockchain/README.md index e4c925c..4f3177d 100644 --- a/Dev_Docs/Blockchain/README.md +++ b/Dev_Docs/Blockchain/README.md @@ -1,16 +1,33 @@ -# Blockchain Docs (Актуально) +# Документация блокчейна SHiNE (MVP) -## Назначение -Этот набор файлов — актуальная документация по текущему формату блокчейна SHiNE для каналов, их типов и командных сообщений. +Этот каталог описывает только текущий рабочий формат протокола для MVP. -## Оглавление -1. [01_Channel_Types_and_CreateChannel.md](./01_Channel_Types_and_CreateChannel.md) - Текущий формат `CreateChannelBody`, типы каналов, уникальность имён и правила `stories`. -2. [02_Channel_Commands.md](./02_Channel_Commands.md) - Командные сообщения в каналах: `/.desc`, `/.add`, `/.remove`. -3. [CHANGELOG.md](./CHANGELOG.md) - История изменений документации и блокчейн-правил. +## Основные документы +1. [01_Common_Block_Format.md](./01_Common_Block_Format.md) + Единый бинарный формат блока (Frame v0), подпись, базовые проверки. +2. [02_Blockchain_Kinds_and_Lines.md](./02_Blockchain_Kinds_and_Lines.md) + Виды цепочек и правила line-полей. +3. [10_TECH_Blocks.md](./10_TECH_Blocks.md) + Системные блоки (`msg_type=0`). +4. [11_TEXT_Blocks.md](./11_TEXT_Blocks.md) + Текстовые блоки (`msg_type=1`). +5. [12_REACTION_Blocks.md](./12_REACTION_Blocks.md) + Реакции (`msg_type=2`). +6. [13_CONNECTION_Blocks.md](./13_CONNECTION_Blocks.md) + Социальные связи (`msg_type=3`). +7. [14_USER_PARAM_Blocks.md](./14_USER_PARAM_Blocks.md) + Параметры пользователя (`msg_type=4`). +8. [01_Channel_Types_and_CreateChannel.md](./01_Channel_Types_and_CreateChannel.md) + Типы каналов и формат `CreateChannelBody`. +9. [02_Channel_Commands.md](./02_Channel_Commands.md) + Команды в текстовых сообщениях каналов. +10. [CHANGELOG.md](./CHANGELOG.md) + Журнал изменений документации. -## Обязательное правило сопровождения -- Любое изменение блокчейн-кода (форматы, типы, правила чтения/записи, команды) должно сопровождаться обновлением файлов из этого каталога. -- Изменение обязательно фиксируется в `CHANGELOG.md` с датой/временем и хэшем коммита-основания. +## Важные ограничения MVP +- Каналы `type=100` и `type=200` присутствуют в формате, но сейчас не используются в UI. +- Поддерживаемый рабочий сценарий UI на текущем этапе: `stories (type=0)` и `public (type=1)`. + +## Обязательное сопровождение +- При любом изменении формата/правил блокчейна в коде документы этого каталога обновляются в том же наборе изменений. +- Каждое обновление документов фиксируется в `CHANGELOG.md` с датой/временем и хэшем коммита-основания. diff --git a/Dev_Docs/Pending_Features/2026-05-13_0248_вкладки-каналов-и-legacy-fallback-createchannel.md b/Dev_Docs/Pending_Features/вроде сделанное/2026-05-13_0248_вкладки-каналов-и-legacy-fallback-createchannel.md similarity index 100% rename from Dev_Docs/Pending_Features/2026-05-13_0248_вкладки-каналов-и-legacy-fallback-createchannel.md rename to Dev_Docs/Pending_Features/вроде сделанное/2026-05-13_0248_вкладки-каналов-и-legacy-fallback-createchannel.md diff --git a/Dev_Docs/Pending_Features/2026-05-13_0258_исправление-версии-createchannel.md b/Dev_Docs/Pending_Features/вроде сделанное/2026-05-13_0258_исправление-версии-createchannel.md similarity index 100% rename from Dev_Docs/Pending_Features/2026-05-13_0258_исправление-версии-createchannel.md rename to Dev_Docs/Pending_Features/вроде сделанное/2026-05-13_0258_исправление-версии-createchannel.md diff --git a/Dev_Docs/Pending_Features/2026-05-14_1243_каналы-поиск-просмотр-и-подписка.md b/Dev_Docs/Pending_Features/вроде сделанное/2026-05-14_1243_каналы-поиск-просмотр-и-подписка.md similarity index 100% rename from Dev_Docs/Pending_Features/2026-05-14_1243_каналы-поиск-просмотр-и-подписка.md rename to Dev_Docs/Pending_Features/вроде сделанное/2026-05-14_1243_каналы-поиск-просмотр-и-подписка.md diff --git a/Dev_Docs/Pending_Features/2026-05-14_1414_ui-ошибки-в-сервер-и-персональный-публичный-чат.md b/Dev_Docs/Pending_Features/вроде сделанное/2026-05-14_1414_ui-ошибки-в-сервер-и-персональный-публичный-чат.md similarity index 100% rename from Dev_Docs/Pending_Features/2026-05-14_1414_ui-ошибки-в-сервер-и-персональный-публичный-чат.md rename to Dev_Docs/Pending_Features/вроде сделанное/2026-05-14_1414_ui-ошибки-в-сервер-и-персональный-публичный-чат.md diff --git a/Dev_Docs/Pending_Features/2026-05-14_1627_мультиаккаунты-и-улучшенный-поиск-каналов.md b/Dev_Docs/Pending_Features/вроде сделанное/2026-05-14_1627_мультиаккаунты-и-улучшенный-поиск-каналов.md similarity index 100% rename from Dev_Docs/Pending_Features/2026-05-14_1627_мультиаккаунты-и-улучшенный-поиск-каналов.md rename to Dev_Docs/Pending_Features/вроде сделанное/2026-05-14_1627_мультиаккаунты-и-улучшенный-поиск-каналов.md diff --git a/Dev_Docs/Pending_Features/2026-05-14_1945_персональный-чат-формат-блока-и-обратный-канал.md b/Dev_Docs/Pending_Features/вроде сделанное/2026-05-14_1945_персональный-чат-формат-блока-и-обратный-канал.md similarity index 100% rename from Dev_Docs/Pending_Features/2026-05-14_1945_персональный-чат-формат-блока-и-обратный-канал.md rename to Dev_Docs/Pending_Features/вроде сделанное/2026-05-14_1945_персональный-чат-формат-блока-и-обратный-канал.md diff --git a/VERSION.properties b/VERSION.properties index 93367e4..eac0084 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ -client.version=1.2.59 -server.version=1.2.53 +client.version=1.2.60 +server.version=1.2.54