# SHiNE Browser Plugin Wallet Chrome-compatible Manifest V3 plugin for SHiNE wallet-session login. ## Что уже умеет - создать `wallet-session` через `StartTrustedDeviceLogin`; - показать код подключения; - дождаться подтверждения на доверенном устройстве; - принять `session-only` payload без передачи `deviceKey/rootKey/blockchainKey`; - сохранить `sessionPriv/sessionKey/sessionId` в локальном хранилище plugin; - восстанавливать session через `SessionChallenge -> SessionLogin`; - держать wallet-state в `background service worker`, а side panel использовать как UI. - принимать не адрес сервера, а логин серверного аккаунта SHiNE и находить точный `https://...` / `wss://...` адрес через его PDA. - внедрять legacy `window.solana` / `window.phantom.solana` provider для сайтов. - регистрировать кошелёк как `Wallet Standard` wallet для dapp, которые ищут стандартные кошельки. ## Как загрузить локально 1. Открой `chrome://extensions/` 2. Включи `Developer mode` 3. Нажми `Load unpacked` 4. Выбери папку `SHiNE-browser-plugin-wallet/` 5. Нажми на иконку расширения в toolbar: откроется side panel SHiNE Wallet ## Ограничения текущего этапа - plugin пока не держит постоянный фоновый WS-канал без активного действия пользователя, но хранит wallet-state в `background`; - на этом этапе реализован только `session-only login`; - запросы на подпись будут следующим этапом. - pairing-пароль, если он используется, должен генерироваться в формате `sha256$` от строки `shine-pairing|loginLower|password`. - сторона side panel в Chromium выбирается самим браузером/пользователем; extension не закрепляет панель принудительно слева. - для совместимости с некоторыми dapp расширение одновременно держит и legacy provider, и Wallet Standard регистрацию. ## Сборка crypto bundle Для обычной загрузки plugin это не нужно: bundled crypto-файл уже лежит в репозитории. Если понадобится пересобрать локальный crypto bundle: ```bash npm install npx esbuild js/lib/vendor/noble-ed25519-entry.js --bundle --format=esm --platform=browser --outfile=js/lib/vendor/noble-ed25519-bundle.js npx esbuild js/lib/vendor/solana-publickey-entry.js --bundle --format=esm --platform=browser --outfile=js/lib/vendor/solana-publickey-bundle.js ```