diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2124468..aabd610 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,6 +5,9 @@ on: push: branches: [main] +permissions: + contents: read + jobs: build: runs-on: ubuntu-latest diff --git a/README.md b/README.md index 71a286c..edcb57a 100644 --- a/README.md +++ b/README.md @@ -71,11 +71,27 @@ of your own. ``` src/ -├── App.tsx single-page UI -├── localSign.ts v1 + raw-scalar decoders, RFC-8032 Ed25519 signing -├── solana.ts RPC, balance/holdings, SOL + SPL transfer builders -├── polyfills.ts Buffer global (required by @solana/spl-token at module-eval) -├── main.tsx React root -├── styles.css Para design tokens -└── vite-env.d.ts VITE_SOLANA_*_RPC_URL types +├── localSign.ts v1 + raw-scalar decoders, RFC-8032 Ed25519 signing +├── solana.ts RPC, balance/holdings, SOL + SPL transfer builders +├── polyfills.ts Buffer global (required by @solana/spl-token at module-eval) +├── main.tsx React root +├── App.tsx top-level shell + AccountProvider +├── global.css Tailwind v4 entry +├── theme.css Para design tokens +├── vite-env.d.ts VITE_SOLANA_*_RPC_URL types +├── lib/ +│ └── utils.ts cn() class-name helper +├── state/ +│ └── account.tsx AccountProvider — the only place the decoded key lives +└── components/ + ├── ImportForm.tsx pre-import paste-the-key screen + ├── AccountHeader.tsx address, network toggle, custom RPC, key details + ├── BalanceCard.tsx SOL + SPL balances + ├── SendSolCard.tsx SOL transfer form + ├── SendSplCard.tsx SPL transfer form + ├── SignMessageCard.tsx arbitrary-message signing + ├── TransactionsCard.tsx submitted-tx history + ├── NetworkToggle.tsx mainnet / devnet switch + ├── Footer.tsx repo + license links + └── base/ shadcn primitives (button, card, input, …) ``` diff --git a/src/components/AccountHeader.tsx b/src/components/AccountHeader.tsx index 6c43c1e..b823528 100644 --- a/src/components/AccountHeader.tsx +++ b/src/components/AccountHeader.tsx @@ -51,7 +51,7 @@ export function AccountHeader() { onClick={() => window.open(explorerAccountUrl(address, network), '_blank', 'noreferrer')} > - View on Solana Explorer + View on Solscan - + + + Import Solana private key + Paste the Solana private key that you exported from Para into the field below. The key is held in this browser tab only — never sent to any server, stored in your browser, or shared with Para.