Auth now goes through an actual connected Solana wallet instead of a locally-generated ed25519 keypair. Phantom's window.solana provider is only reachable from a page's own JS world, not an isolated-world content script, so this adds a second world:'MAIN' content script (wallet-bridge.content.ts + wallet-bridge/inject.ts) that talks to window.solana directly and relays to the isolated world via window CustomEvents (wallet-bridge/relay.ts), matched by request id. wallet-connect.ts orchestrates: try a silent onlyIfTrusted connect on load; if that fails, show an on-page banner (wallet-bridge/banner.ts) whose click handler is what actually calls connect() -- Phantom requires a real user gesture for the approval popup on a first-ever connect, which a click relayed from the extension popup wouldn't count as by the time it reaches the wallet. background/wallet-auth.ts runs the REST auth flow (nonce -> ask the tab's content script to sign it -> verify -> store session token) once a wallet reports connected. ws-client.ts no longer force-retries with a known-bad token on auth failure; it calls onAuthExpired instead (which clears the token and prompts a silent wallet reconnect) and exposes reconnectNow() so background.ts can short-circuit the backoff wait once a fresh token exists. identity.ts and its tweetnacl dependency are gone -- no more stub signer. Untested against real Phantom (no browser automation available this session) -- flagged in CLAUDE.md as needing manual verification, along with a note that world:'MAIN' needs Firefox 128+. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01YXiHuScXrjxBh7yFGAPq3B
30 lines
768 B
JSON
30 lines
768 B
JSON
{
|
|
"name": "nexa-extension",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"description": "Nexa browser extension frontend — your blockchain powered agent to help with your trading emotions.",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "wxt",
|
|
"dev:firefox": "wxt -b firefox",
|
|
"build": "wxt build",
|
|
"build:firefox": "wxt build -b firefox",
|
|
"zip": "wxt zip",
|
|
"zip:firefox": "wxt zip -b firefox",
|
|
"compile": "tsc --noEmit",
|
|
"postinstall": "wxt prepare"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "^19.2.18",
|
|
"@types/react-dom": "^19.2.7",
|
|
"typescript": "^7.0.2",
|
|
"wxt": "^0.21.4"
|
|
},
|
|
"dependencies": {
|
|
"@wxt-dev/module-react": "^1.2.2",
|
|
"bs58": "^6.0.0",
|
|
"react": "^19.2.8",
|
|
"react-dom": "^19.2.8"
|
|
}
|
|
}
|