Палитра «Сияние» по умолчанию, новые роли цветов. Лента канала: плоские записи, ряд действий с равным шагом иконок, дата у записи. Обсуждение со строкой ввода, личный чат, шторки. Вход и регистрация: стартовый экран (надпись «СИЯНИЕ», сияние мандалы), настройки входа со статусами серверов, статус логина в одну строку, вход с другого устройства (код, таймер, шаги), сохранение ключей с переключателями. Корневые разделы – заголовок по центру; фильтр чатов – переключатель; уведомления – список как в чатах; фото – просмотр на весь экран. Общее: один зазор под шапкой (--page-top-gap), переключатели высотой с поле ввода, второстепенные кнопки по одной роли (в том числе на экранах устройств и серверов), иконки только из ui-icon.js, полоса прокрутки скрыта, среднее тире в текстах интерфейса. Что нужно от сервера и разработчика – docs/UI-Design/UI-v4-for-dev.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SHiNE Arweave Viewer v2 — ANS-104 / Frame v1
Новая версия viewer для формата, где каждый пользовательский блок хранится в Arweave как отдельный ANS-104 DataItem, а data DataItem содержит один SHiNE Frame v1.
Основной файл: index.html.
Быстрый запуск
Через логин (ключ берётся из Solana PDA):
index.html?login=aidarkc&channel=books
Напрямую через blockchain public key, без Solana:
index.html?key=<BASE58_BLOCKCHAIN_PUBLIC_KEY>&channel=books
Дополнительные параметры:
&arweaveGateway=https://arweave.net
&solanaRpc=https://api.mainnet-beta.solana.com
channel можно не передавать. Тогда viewer ищет все DataItem пользователя с App=test5590 и строит список каналов из найденных блоков.
Что делает viewer
- Если передан
login, вычисляет PDAuser_login=<login>программыSHiNEPr1APdAgNBteUyBXcNovaHctpSjUu8oH2ZJdN6и читаетblockchainKey. - Если передан
key, использует его напрямую и не обращается к Solana. - Из Ed25519/Solana public key вычисляет Arweave owner address как
base64url(SHA-256(pubkey32)). - Делает Arweave GraphQL запрос по owner +
App=test5590;channelприменяется локально после загрузки авторского блокчейна. - Загружает payload каждого DataItem через gateway
/<DataItemId>. - Разбирает payload как SHiNE Frame v1 (
frameCode=0x0001, header 56 bytes). - Дедуплицирует повторно опубликованные одинаковые пользовательские блоки по SHA-256 Frame v1.
- Восстанавливает канал/сообщения тем же body parser, который использовал старый viewer.
Важно
При фильтрации по конкретному channel viewer получает только блоки с соответствующим тегом c. Поэтому он не заявляет полную проверку глобальной prevHash-цепочки пользователя: между двумя блоками одного канала могут существовать блоки других каналов. SHA-256 каждого загруженного Frame вычисляется локально.
Старый shine-solana-arweave-viewer/ не изменяется; новая версия лежит отдельно в shine-solana-arweave-viewer-v2/.
Проверка данных (v3.3)
Нижняя строка показывает краткий итог доступных проверок. Нажатие на неё или ⋮ → Проверка данных открывает отдельный экран:
- локально вычисленный SHA-256 каждого SHiNE Frame;
prevHashобщей цепочки, когда предыдущий глобальный блок загружен;prevLineHashканальной цепочки, когда указанный предыдущий блок загружен;- наличие DataItem в выборке Arweave owner соответствующего blockchain key;
- разрывы «нет данных» отдельно от доказанных несовпадений;
- честный статус ANS-104 signature: gateway payload/GraphQL не содержит сырой подписи, поэтому она не помечается как локально перепроверенная.
○ нет данных не является ошибкой. ⚠ появляется только при фактическом несовпадении доступных хэшей.