=== SkyeGate ===
Contributors: skyemeta
Tags: token-gating, membership, crypto, wallet, nft
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.2.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Condition-based access for WordPress. Gate content by token balance, NFT ownership, or on-chain attestations. 32 blockchains, free.

== Description ==

SkyeGate is condition-based access for WordPress: recognition, not passwords. Visitors connect a wallet, SkyeGate checks the conditions you set through InsumerAPI (the condition-based access API), and qualifying visitors see your content. Nothing to sign up for, nothing to leak, and no personal data collected. Your site never sees balances or holdings, just a signed yes or no.

**Free and fully functional.** Install, add a shortcode, and start gating content immediately. No API key or account required.

= What you can gate by =

* **Membership passes**: recognize community membership passes created with SkyeMeta's Bothy. Members prove it's them with a one-time code sent to their email, no wallet app needed
* **Token balance**: require visitors to hold a minimum amount of any ERC-20 or SPL token
* **NFT ownership**: require visitors to own an NFT from a specific collection
* **EAS attestations**: require on-chain attestations via Ethereum Attestation Service
* **Native tokens**: gate by ETH, SOL, POL, and other native chain tokens

= Supported chains =

Ethereum, Solana, Polygon, Arbitrum, Base, Optimism, BNB Chain, Avalanche, XRP Ledger, and 23 more (32 blockchains total).

= How it works =

1. Add the `[skyegate]` shortcode around any content
2. Visitors see a "Connect Wallet" button
3. After connecting, SkyeGate verifies their holdings via InsumerAPI
4. If they qualify, the gated content is revealed (loaded server-side, not in page source)

= Wallets supported =

MetaMask, Phantom (EVM + Solana), Coinbase Wallet, Coinbase Smart Wallet (passkey, no extension needed), and any wallet that supports EIP-6963.

= Need more? SkyeGate Pro =

The free plugin runs one condition per gate, forever. [SkyeGate Pro](https://skyemeta.com/skyegate/) stacks up to 10 conditions per gate, adds Farcaster conditions, covers 32 chains, and one license works on both WordPress and Vercel. SkyeGate is part of SkyeMeta's Recognition Network: one membership, recognized everywhere.

== Installation ==

1. Upload the `skyegate` folder to `/wp-content/plugins/` or install via the WordPress plugin directory
2. Activate the plugin through the Plugins menu
3. Add a `[skyegate]` shortcode to any post or page, it works immediately
4. Optionally configure default chain, button text, and gate style under Settings > SkyeGate

== Frequently Asked Questions ==

= Do I need an API key to get started? =

No. SkyeGate includes InsumerAPI verification out of the box. No API key or account required.

= What wallets are supported? =

MetaMask, Phantom (EVM + Solana), Coinbase Wallet, and any wallet that supports EIP-6963. Visitors without a wallet extension can use a Coinbase Smart Wallet: a passkey wallet that opens in a popup, no install required.

= Can I gate by Solana tokens? =

Yes. Use `chain="solana"` in the shortcode. Phantom wallet connects automatically for Solana verification.

= Is the gated content truly hidden? =

Yes. Gated content is stored server-side and only delivered via AJAX after wallet verification passes. It is not present in the page source.

= Is user data collected? =

No. SkyeGate uses InsumerAPI to check on-chain data (token balances, NFT ownership). Verification results are cryptographically signed (ECDSA + JWKS). No personal information, email addresses, or wallet contents are stored.

== External Services ==

This plugin connects to two external services for wallet verification. No personal data is collected or transmitted; only public blockchain wallet addresses and your site domain are sent.

= SkyeGate API (skyemeta.com) =

When a visitor connects their wallet, the plugin sends a POST request to `https://skyemeta.com/api/verify` with the visitor's public wallet address, the gate conditions you configured, and your site domain. The service returns a signed verification result. This happens each time a visitor attempts to access gated content.

* [SkyeGate Terms of Service](https://skyemeta.com/terms/)
* [SkyeGate Privacy Policy](https://skyemeta.com/privacy/)

= InsumerAPI (api.insumermodel.com) =

To verify that the returned attestation was genuinely signed by InsumerAPI and has not been tampered with, the plugin fetches a public signing key (JWKS) from `https://api.insumermodel.com/.well-known/jwks.json`. No user data is sent; this is a public key fetch, cached for 24 hours.

* [InsumerAPI Terms of Service](https://insumermodel.com/terms-of-service)
* [InsumerAPI Privacy Policy](https://insumermodel.com/privacy-policy)

== Source Code ==

The unminified source for `public/js/skyegate-wallet.js` is included in the plugin at `src/wallet.js`. The minified file is built with Vite using `npm run build`. The build configuration is in `package.json` and `vite.config.js`.

== Screenshots ==

1. The gate: connect a crypto wallet, or continue with a membership pass (email) or a passkey wallet
2. Gated content revealed after wallet verification
3. Settings page with configuration options

== Changelog ==

= 1.2.0 =
* New: "Membership pass (email)" on every gate. Visitors whose community pass lives in an email wallet (a SkyeMeta Bothy pass) connect through a secure window on the pass's own site: they approve once and the gate verifies as usual. No app, no extension, nothing installed
* Clearer gate: "Connect Crypto Wallets" says what it does, the passkey option carries its current Base account name, and each alternative explains who it's for
* Works alongside every existing wallet connection, nothing changes for MetaMask, Phantom, Coinbase, GemWallet, or Crossmark

= 1.1.0 =
* New: Coinbase Smart Wallet (passkey) support. Visitors without a wallet extension can connect with a passkey popup; the Coinbase Wallet SDK ships inside the plugin and loads only when chosen (no CDN)
* Clearer guidance when no browser wallet is detected


= 1.0.4 =
* Single-condition gates on 31 blockchains (token balance, NFT ownership, EAS attestation)
* Multi-wallet: MetaMask, Phantom, Coinbase Wallet, and any wallet supporting EIP-6963
* Cryptographically signed verification results (ECDSA + JWKS), verified on the server before content release
* Server-side content delivery: gated HTML is never present in the page source
* Per-visitor session binding so a verification in one browser does not unlock gated content in another
* Built-in caching to minimize verification calls
