Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
"commit": false,
"fixed": [],
"linked": [],
"access": "restricted",
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
"ignore": ["@hermis/solana-headless-enterprise-core"]
}
19 changes: 0 additions & 19 deletions .changeset/pre.json

This file was deleted.

4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ Add useTokenBalance hook for querying SPL token balances

## Documentation

Our documentation is built with **Mintlify** and hosted at [docs.hermis.io](https://docs.hermis.io).
Our documentation is built with **Mintlify** and hosted at [docs.hermis.dev](https://docs.hermis.dev).

### Contributing to Docs

Expand Down Expand Up @@ -367,7 +367,7 @@ Use workspace protocol for internal dependencies:

If you have questions or need help:

1. Check the [documentation](https://docs.hermis.io)
1. Check the [documentation](https://docs.hermis.dev)
2. Search existing [GitHub Issues](https://github.com/Assylum-Labs/hermis/issues)
3. Open a new issue with your question
4. Be specific and provide context
Expand Down
10 changes: 5 additions & 5 deletions README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ A modular, UI-agnostic wallet adapter for Solana applications. Build wallet inte

## Documentation

Comprehensive documentation is available at **[docs.hermis.io](https://docs.hermis.io)**
Comprehensive documentation is available at **[docs.hermis.dev](https://docs.hermis.dev)**

- [Getting Started](https://docs.hermis.io/getting-started)
- [Quick Start Guides](https://docs.hermis.io/quickstart)
- [API Reference](https://docs.hermis.io/api-reference)
- [Examples](https://docs.hermis.io/examples)
- [Getting Started](https://docs.hermis.dev/getting-started)
- [Quick Start Guides](https://docs.hermis.dev/quickstart)
- [API Reference](https://docs.hermis.dev/api-reference)
- [Examples](https://docs.hermis.dev/examples)

## Packages

Expand Down
9 changes: 9 additions & 0 deletions apps/sample-dapp/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# sample-dapp

## 1.0.10

### Patch Changes

- Updated dependencies [b0d2b24]
- @hermis/solana-headless-core@2.1.0
- @hermis/solana-headless-adapter-base@2.1.0
- @hermis/wallet-standard-base@1.1.0

## 1.0.9

### Patch Changes
Expand Down
3 changes: 2 additions & 1 deletion apps/sample-dapp/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "sample-dapp",
"version": "1.0.9",
"version": "1.0.10",
"private": true,
"description": "",
"main": "index.js",
"type": "module",
Expand Down
4 changes: 2 additions & 2 deletions apps/sample-dapp/src/docs-validation-ui.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
sortWalletAdapters,
getAdaptersByReadyState
} from '@hermis/solana-headless-adapter-base';
import { Adapter, WalletReadyState } from '@hermis/solana-headless-core';
import { Adapter, WalletAdapterNetwork, WalletReadyState } from '@hermis/solana-headless-core';
import {
testBasicTransferWeb3,
testBasicTransferKit,
Expand Down Expand Up @@ -90,7 +90,7 @@ async function initializeApp() {
async function initializeWalletManager() {
try {
// Single call - everything built-in with adapter management
manager = createWalletConnectionManager([], 'selectedWallet', 'https://api.devnet.solana.com');
manager = createWalletConnectionManager([], WalletAdapterNetwork.Devnet, 'selectedWallet', 'https://api.devnet.solana.com');

// Subscribe to adapter changes (handles both initial load and dynamic updates)
manager.onAdaptersChange((adapters) => {
Expand Down
9 changes: 9 additions & 0 deletions apps/sample-react-dapp/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# sample-react-dapp

## 0.0.15

### Patch Changes

- Updated dependencies [b0d2b24]
- @hermis/solana-headless-core@2.1.0
- @hermis/solana-headless-adapter-base@2.1.0
- @hermis/solana-headless-react@2.1.0

## 0.0.14

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion apps/sample-react-dapp/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "sample-react-dapp",
"private": true,
"version": "0.0.14",
"version": "0.0.15",
"type": "module",
"scripts": {
"dev": "vite --host",
Expand Down
2 changes: 2 additions & 0 deletions apps/sample-react-dapp/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ export default defineConfig(({ command }) => {
define: {
global: 'globalThis',
'process.env': {},
// Enable development mode for better error messages from @hermis/errors
__DEV__: !isProduction,
},
resolve: {
alias: {
Expand Down
19 changes: 12 additions & 7 deletions docs/api-reference/adapter-base/kit-integration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,13 @@ The Kit integration utilities allow you to convert legacy wallet adapters into K
Convert a wallet adapter to Kit-compatible signers.

```typescript
import { createKitSignersFromAdapter, getStandardWalletAdapters } from '@hermis/solana-headless-adapter-base';
import { createKitSignersFromAdapter } from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';
import { Connection } from '@solana/web3.js';

// Auto-detect wallet-standard compatible wallets
const adapters = getStandardWalletAdapters([]);
const adapters = await getStandardWalletAdapters([], undefined, WalletAdapterNetwork.Mainnet);
const adapter = adapters[0]; // Use first detected wallet
await adapter.connect();

Expand Down Expand Up @@ -69,7 +71,9 @@ const { address, addressString, messageSigner, transactionSigner } =
### Usage with Kit

```typescript
import { createKitSignersFromAdapter, getStandardWalletAdapters } from '@hermis/solana-headless-adapter-base';
import { createKitSignersFromAdapter } from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';
import { createSolanaRpc, devnet } from '@solana/kit';
import { getTransferSolInstruction } from '@solana-program/system';
import {
Expand All @@ -81,7 +85,7 @@ import {
} from '@solana/kit';

// Auto-detect wallet-standard compatible wallets
const adapters = getStandardWalletAdapters([]);
const adapters = await getStandardWalletAdapters([], undefined, WalletAdapterNetwork.Mainnet);
const adapter = adapters[0]; // Use first detected wallet
await adapter.connect();

Expand Down Expand Up @@ -314,15 +318,16 @@ import {
createKitSignersFromAdapter,
createKitTransaction,
adapterSupportsMessageSigning,
adapterSupportsTransactionSending,
getStandardWalletAdapters
adapterSupportsTransactionSending
} from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';
import { createSolanaRpc, devnet } from '@solana/kit';
import { getTransferSolInstruction } from '@solana-program/system';
import { lamports } from '@solana/kit';

// Auto-detect wallet-standard compatible wallets
const adapters = getStandardWalletAdapters([]);
const adapters = await getStandardWalletAdapters([], undefined, WalletAdapterNetwork.Mainnet);
const adapter = adapters[0]; // Use first detected wallet
await adapter.connect();

Expand Down
9 changes: 7 additions & 2 deletions docs/api-reference/adapter-base/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,15 @@ await manager.disconnect();

Get all standard wallet adapters including custom ones.

> **Breaking change in v2:** `network` is now a required argument. Inferring the
> cluster from the RPC endpoint URL has been removed — substring matching is
> unsafe because untrusted URLs containing "mainnet" would be misclassified.

```typescript
import { getStandardWalletAdapters } from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';

const adapters = getStandardWalletAdapters(customAdapters);
const adapters = await getStandardWalletAdapters(customAdapters, undefined, WalletAdapterNetwork.Mainnet);
```

### sortWalletAdapters()
Expand Down
19 changes: 15 additions & 4 deletions docs/api-reference/adapter-base/wallet-connect.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,17 @@ description: 'Manage wallet connections in vanilla TypeScript'
Factory function that creates a wallet connection manager for vanilla TypeScript applications.

```typescript
import { createWalletConnectionManager, getStandardWalletAdapters } from '@hermis/solana-headless-adapter-base';
import { createWalletConnectionManager } from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';

// Auto-detect wallet-standard compatible wallets
const wallets = []; // Add custom wallet adapters here if needed
const adapters = getStandardWalletAdapters(wallets);
const adapters = await getStandardWalletAdapters(wallets, undefined, WalletAdapterNetwork.Mainnet);

const manager = createWalletConnectionManager(
adapters,
WalletAdapterNetwork.Mainnet,
'wallet-name-storage-key',
'https://api.devnet.solana.com' // Optional: for wallet detection
);
Expand All @@ -27,6 +30,12 @@ const manager = createWalletConnectionManager(
Array of wallet adapters to manage
</ParamField>

<ParamField path="network" type="WalletAdapterNetwork" required>
Active Solana network. Required so wallet adapters can set their chain hint
explicitly — previous versions inferred this from the RPC URL which was
unsafe (untrusted URLs containing "mainnet" would be misclassified).
</ParamField>

<ParamField path="localStorageKey" type="string" default="walletName">
Key to store the selected wallet name in localStorage
</ParamField>
Expand Down Expand Up @@ -214,12 +223,14 @@ unsubscribe();
## Complete Example

```typescript
import { createWalletConnectionManager, getStandardWalletAdapters } from '@hermis/solana-headless-adapter-base';
import { createWalletConnectionManager } from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';
import { Connection, Transaction, SystemProgram, LAMPORTS_PER_SOL } from '@solana/web3.js';

// Auto-detect wallet-standard compatible wallets
const wallets = []; // Add custom wallet adapters here if needed
const adapters = getStandardWalletAdapters(wallets);
const adapters = await getStandardWalletAdapters(wallets, undefined, WalletAdapterNetwork.Mainnet);

// Create manager
const manager = createWalletConnectionManager(
Expand Down
6 changes: 4 additions & 2 deletions docs/cookbook/connect-wallet.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,13 @@ function WalletSelector() {
## Vanilla JavaScript

```javascript
import { WalletAdapterManager, getStandardWalletAdapters } from '@hermis/solana-headless-adapter-base';
import { WalletAdapterManager } from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';

// Auto-detect wallet-standard compatible wallets
const wallets = []; // Add custom wallet adapters here if needed
const adapters = getStandardWalletAdapters(wallets);
const adapters = await getStandardWalletAdapters(wallets, undefined, WalletAdapterNetwork.Mainnet);
const manager = new WalletAdapterManager(adapters);

manager.on('connect', (publicKey) => {
Expand Down
16 changes: 10 additions & 6 deletions docs/examples/vanilla-js.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -175,20 +175,22 @@ h1 {

<CodeGroup>
```javascript app.js (Web3.js)
import { WalletAdapterManager, getStandardWalletAdapters } from '@hermis/solana-headless-adapter-base';
import { WalletAdapterManager } from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';
import { Connection, clusterApiUrl, LAMPORTS_PER_SOL } from '@solana/web3.js';

// Global state
let manager;
let connection;

// Initialize wallet manager and connection
function initWalletManager() {
async function initWalletManager() {
connection = new Connection(clusterApiUrl('devnet'));

// Auto-detect wallet-standard compatible wallets
const wallets = []; // Add custom wallet adapters here if needed
const adapters = getStandardWalletAdapters(wallets);
const adapters = await getStandardWalletAdapters(wallets, connection.rpcEndpoint, WalletAdapterNetwork.Devnet);

manager = new WalletAdapterManager(adapters);
setupEventListeners();
Expand Down Expand Up @@ -281,7 +283,9 @@ initWalletManager();
```

```javascript app.js (Kit)
import { WalletAdapterManager, createKitSignersFromAdapter, getStandardWalletAdapters } from '@hermis/solana-headless-adapter-base';
import { WalletAdapterManager, createKitSignersFromAdapter } from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';
import { Connection, clusterApiUrl } from '@solana/web3.js';

// Global state
Expand All @@ -290,12 +294,12 @@ let connection;
let kitSigners;

// Initialize wallet manager with Kit support
function initWalletManager() {
async function initWalletManager() {
connection = new Connection(clusterApiUrl('devnet'));

// Auto-detect wallet-standard compatible wallets
const wallets = []; // Add custom wallet adapters here if needed
const adapters = getStandardWalletAdapters(wallets);
const adapters = await getStandardWalletAdapters(wallets, connection.rpcEndpoint, WalletAdapterNetwork.Devnet);

manager = new WalletAdapterManager(adapters);
setupEventListeners();
Expand Down
18 changes: 8 additions & 10 deletions docs/getting-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -113,18 +113,17 @@ function WalletButton() {
```

```typescript Adapter Base (web3.js)
import {
WalletAdapterManager,
getStandardWalletAdapters
} from '@hermis/solana-headless-adapter-base';
import { WalletAdapterManager } from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';
import { Connection, clusterApiUrl } from '@solana/web3.js';

// Create connection
const connection = new Connection(clusterApiUrl('devnet'));

// Auto-detect wallet-standard compatible wallets
const wallets = []; // Add custom wallet adapters here if needed
const adapters = getStandardWalletAdapters(wallets);
const adapters = await getStandardWalletAdapters(wallets, connection.rpcEndpoint, WalletAdapterNetwork.Devnet);

// Create wallet manager
const manager = new WalletAdapterManager(adapters);
Expand All @@ -144,18 +143,17 @@ await manager.connect();
```

```typescript Adapter Base (@solana/kit)
import {
WalletAdapterManager,
getStandardWalletAdapters
} from '@hermis/solana-headless-adapter-base';
import { WalletAdapterManager } from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';
import { createSolanaRpc, devnet } from '@solana/kit';

// Create connection
const rpc = createSolanaRpc(devnet('https://api.devnet.solana.com'));

// Auto-detect wallet-standard compatible wallets
const wallets = []; // Add custom wallet adapters here if needed
const adapters = getStandardWalletAdapters(wallets);
const adapters = await getStandardWalletAdapters(wallets, undefined, WalletAdapterNetwork.Devnet);

// Create wallet manager
const manager = new WalletAdapterManager(adapters);
Expand Down
6 changes: 4 additions & 2 deletions docs/installation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -150,11 +150,13 @@ After installation, verify everything works:

**For Adapter Base:**
```typescript
import { WalletAdapterManager, getStandardWalletAdapters } from '@hermis/solana-headless-adapter-base';
import { WalletAdapterManager } from '@hermis/solana-headless-adapter-base';
import { getStandardWalletAdapters } from '@hermis/wallet-standard-base';
import { WalletAdapterNetwork } from '@hermis/solana-headless-core';

// Auto-detect wallet-standard compatible wallets
const wallets = []; // Add custom wallet adapters here if needed
const adapters = getStandardWalletAdapters(wallets);
const adapters = await getStandardWalletAdapters(wallets, undefined, WalletAdapterNetwork.Mainnet);
const manager = new WalletAdapterManager(adapters);
console.log('Hermis Adapter Base initialized successfully!');
```
Expand Down
Loading
Loading