En bref
wallet au Web App Manifest que vous avez déjà. C’est le Wallet App Manifest, un format ouvert que n’importe quel wallet peut lire. Casa Tookan affiche alors votre site avec son propre nom et son icône, un écran de lancement pendant le chargement, une carte avec votre bannière dans Explorer › Apps, et un avertissement quand vous demandez quelque chose qu’il ne propose pas.


| Vous déclarez | Casa Tookan affiche |
|---|---|
name, icons | Votre nom et votre icône dans la barre d’adresse, et dans la fenêtre où l’utilisateur approuve une signature |
wallet.splashImageUrl, background_color | Un écran de lancement pendant le chargement de votre app, jusqu’à ce que vous appeliez window.wallet.ready() |
wallet.heroImageUrl, wallet.subtitle, start_url | Une carte dans Explorer › Apps quand l’utilisateur enregistre votre app, qui s’ouvre sur start_url |
wallet.chains, wallet.capabilities | Un avertissement que l’on peut fermer quand vous exigez quelque chose qui manque à Casa Tookan ; votre app s’ouvre quand même |
casatookan. Casa (casa.io) est un autre wallet Bitcoin, sans aucun lien avec Casa Tookan. Dans Casa Tookan, une casa est l’un des profils de l’utilisateur : un ensemble d’adresses Bitcoin et EVM entre lesquelles il passe. Votre app voit la casa active.Le manifeste
Casa Tookan lit le Wallet App Manifest, un format ouvert que n’importe quel wallet peut lire : le Web App Manifest du W3C que votre site a très probablement déjà, plus un membre wallet qui ne contient que ce pour quoi le standard n’a pas de membre.
{
"name": "Orb Quest",
"short_name": "Orbs",
"description": "A card game played with your Counterparty assets.",
"start_url": "/play",
"scope": "/",
"background_color": "#101820",
"categories": ["games", "trading-cards", "counterparty"],
"icons": [{ "src": "/icon-1024.png", "sizes": "1024x1024", "type": "image/png" }],
"screenshots": [{ "src": "/shots/duel.png", "sizes": "1284x2778", "form_factor": "narrow" }],
"wallet": {
"version": "1",
"subtitle": "Duel with your orbs",
"heroImageUrl": "/hero-1200x630.png",
"splashImageUrl": "/splash-200.png",
"chains": { "required": ["bip122:000000000019d6689c085ae165831e93"], "optional": ["eip155:8453"] },
"capabilities": {
"required": ["provider.counterparty", "wallet.ready"],
"optional": ["casatookan:identity.ceid"]
},
"extensions": {
"casatookan": { "identity": { "level": 1, "reason": "One player per device" } }
}
}}
Standard W3C en bleu, inchangé · Ajouté en surbrillance : toute l’extension.
walletAvec un manifeste sans membre wallet, ou dont le wallet.version n’est pas 1 / 1.x, le site n’est pas traité comme une app : il n’a ni écran de lancement ni carte dans Apps. Casa Tookan affiche quand même le site sous le name du manifeste et sa plus grande icône. Presque tous les sites ont un manifeste ; seuls ceux qui le demandent sont affichés comme des apps.Où Casa Tookan le trouve
https://<your-domain>/.well-known/wallet-app.json: le même JSON, servi seul ;- sinon le
<link rel="manifest">du<head>de votre page d’accueil (https://<your-domain>/). Gardez-le dans le HTML servi : un lien ajouté par un script n’est pas vu.
Le premier qui a un membre wallet est utilisé en entier : les deux ne sont pas fusionnés. Les URL relatives sont résolues par rapport à l’URL d’où le manifeste a été récupéré.
Standard W3C Membres repris tels quels
| Membre | Usage par Casa Tookan | Notes |
|---|---|---|
name | Le nom de votre app | 32 caractères au plus, sinon short_name (32 au plus) est affiché. |
icons | L’icône de votre app | La plus grande icône matricielle de purpose any ; maskable seulement en dernier recours ; jamais monochrome ni SVG. Voir images. |
start_url | Où s’ouvrent votre app et son favori | Doit être sur votre domaine, sinon ignoré. |
scope | Quelles pages sont l’app | Règles du W3C : le scope déclaré s’il est sur votre domaine et contient start_url, sinon le répertoire de start_url. Les pages en dehors sont affichées comme votre site web ordinaire. |
background_color | Fond de l’écran de lancement | Couleurs hexadécimales uniquement. |
description | La fiche de votre app | 170 caractères au plus, texte brut, sans emoji. |
categories | Catégorie et tags | Jusqu’à 5, de 20 caractères chacune, en minuscules, sans espaces. La première qui correspond devient la catégorie : une catégorie de Casa Tookan telle quelle, ou utilities → utility, shopping → marketplace, photo → art-creativity. |
screenshots | La fiche de votre app | form_factor: "narrow" pour les téléphones. Pas encore affichées par Casa Tookan. |
Ajouté Le membre wallet
| Champ | Type | Notes |
|---|---|---|
version | chaîne | Obligatoire : "1". Toute 1.x est lue comme 1, une autre version majeure est ignorée. |
subtitle | chaîne | 30 caractères au plus, sans emoji. Une ligne sous le nom. |
heroImageUrl | URL | La bannière dans Explorer › Apps. Voir images. |
splashImageUrl | URL | L’image de l’écran de lancement ; par défaut, l’icône. |
chains | objet | required / optional : des identifiants CAIP-2 (voir chaînes). |
capabilities | objet | required / optional (voir capacités). |
association | objet | La preuve que le domaine est à vous (voir plus bas). |
extensions | objet | Un objet par wallet. Casa Tookan lit extensions.casatookan et ignore les autres. |
Chaque champ est lu avec indulgence : celui qui échoue à sa vérification est ignoré, le reste s’applique quand même.
Casa Tookan uniquement extensions.casatookan
identity : ce que votre app peut demander au Casa Estates ID du joueur : level (0–3), une reason, et addresses, le plus grand nombre d’adresses par chaîne CAIP-2 qu’elle demandera jamais ([{ "chain": "…", "max": 1–5, "reason": "…" }]). Voir CEID.
association
La preuve que le domaine vous appartient, signée par n’importe quel compte blockchain :
"association": {
"account": "eip155:1:0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
"payload": "eyJkb21haW4iOiJvcmJxdWVzdC5nYW1lIn0",
"type": "eip191",
"signature": "0x…"
}
account: un compte CAIP-10 ;payload: du JSON en base64url{ "domain": "your-domain", "issuedAt": "…" };type: le type de signature,eip191pour EVM,bip322-simplepour Bitcoin ;signature: la signature du message défini dans la spécification.
Casa Tookan l’enregistre sans la vérifier pour l’instant. Elle sera exigée pour tout ce qui est propre à votre domaine.
Images
| Image | Membre | Taille | Format |
|---|---|---|---|
| Icône | icons, purpose any | 1024 × 1024 (au moins 512) | PNG, opaque |
| Bannière | wallet.heroImageUrl | 1200 × 630 (1,91:1), affichée sans recadrage | PNG ou JPEG |
| Écran de lancement | wallet.splashImageUrl | 200 × 200 | PNG, transparence autorisée |
| Captures d’écran | screenshots, form_factor: "narrow" | 1284 × 2778 en portrait, jusqu’à 3 affichées | PNG ou JPEG |
Les mêmes tailles que les mini apps Farcaster : un seul jeu de fichiers sert aux deux. L’icône se pose sur des fonds clairs et sombres et dans des masques ronds : donnez-lui un fond opaque, et gardez le dessin dans les 80 % centraux. Pas de SVG : beaucoup de vues d’image natives ne savent pas l’afficher. Sans bannière, Explorer se rabat sur les images de votre manifeste Farcaster (celles en 3:2 sont recadrées en 1,91:1), puis sur votre icône posée sur une copie floutée d’elle-même.
Chaînes
Des identifiants CAIP-2. Tout le reste est ignoré.
| Chaîne | Identifiant |
|---|---|
| Bitcoin mainnet | bip122:000000000019d6689c085ae165831e93 |
| Ethereum | eip155:1 |
| Base | eip155:8453 |
| Kaia | eip155:8217 |
| Optimism · Arbitrum · Polygon · BNB Chain · Avalanche · Gnosis | eip155:10 · 42161 · 137 · 56 · 43114 · 100 |
provider.counterparty.Capacités
| Capacité | Ce que votre page reçoit |
|---|---|
provider.ethereum | window.ethereum (EIP-1193, annoncé via EIP-6963) sur le compte EVM de la casa. |
provider.bitcoin | sats-connect, Wallet Standard et window.unisat sur les comptes Bitcoin de la casa (segwit, taproot, legacy). |
provider.counterparty | window.webXCP / window.web3xcp sur l’adresse legacy ; les PSBT Counterparty sont décodées et montrées à l’utilisateur avant la signature. |
wallet.ready | window.wallet.ready() (voir écran de lancement). |
casatookan:identity.ceid Casa Tookan uniquement | window.casaTookan.ceid, pour connecter le joueur avec son Casa Estates ID (voir CEID). |
casatookan:tookans.spend Casa Tookan uniquement | window.casaTookan.tookans.spend({ offer }), pour vendre un objet contre les Tookans du joueur : une fenêtre montre l’objet, le prix et le solde, et votre page reçoit un reçu signé. |
casatookan:identity.estate Casa Tookan uniquement | Réservée, non disponible pour l’instant. |
Les capacités provider.* et wallet.ready viennent du registre ouvert de la spécification : des noms que tout wallet qui héberge des apps peut proposer tels quels. Ce que seul Casa Tookan propose porte son préfixe casatookan: ; les autres wallets l’ignorent. Les anciens noms restent acceptés : casatookan.ready (désormais wallet.ready), identity.ceid et identity.estate (désormais préfixés).
Une chaîne ou une capacité obligatoire qui manque à Casa Tookan affiche à l’utilisateur un avertissement que l’on peut fermer ; votre app s’ouvre quand même. Les optionnelles sont informatives.
Dans la page
Injecté avant vos propres scripts. La signature passe par les providers standard ci-dessus : il n’y a pas d’API de signature propre à Casa Tookan.
window.wallet = {
ready(), // hide the splash screen (the neutral name)
};
window.casaTookan = { // Casa Tookan’s own
isCasaTookan: true,
version: '1',
ready(), // the same, by its former name
ceid, // Casa Estates ID sign-in
};
if (window.casaTookan?.isCasaTookan) {
// running inside Casa Tookan: ceid is there
}
Appelez window.wallet?.ready() et votre app fonctionne dans tout wallet qui le propose ; ne testez la présence de Casa Tookan que pour ce qui lui est propre. Un window.wallet défini par vos propres scripts est laissé tel quel.
Écran de lancement
- Affiché dès le début avec
wallet.splashImageUrl(ou l’icône) surbackground_color. - Déclarez
wallet.readyet il reste jusqu’à ce que vous appeliezwindow.wallet.ready(), pendant 10 s au plus. - Sans cela, il disparaît une fois la page inactive depuis 2,5 s après le chargement.
- Appelez
ready()une fois votre premier écran dessiné.
Casas
- L’utilisateur peut changer de casa pendant qu’il est sur votre page : vous recevez l’habituel
accountsChangeddes providers (surwindow.ethereumetwindow.unisat). - Chaque casa a son propre stockage :
localStorage,sessionStorageet IndexedDB sont séparés par casa, si bien qu’une session reste avec la casa qui l’a ouverte.
window.addEventListener('load', () => {
renderFirstScreen();
window.wallet?.ready();
});
Comment Casa Tookan le lit
| Situation | Ce qui se passe |
|---|---|
| Quand il est récupéré | Directement depuis votre site, une fois par domaine et par lancement de l’app : un changement est vu au lancement suivant. |
| Format | Servez du application/json. Une page HTML avec le statut 200 (un fallback de SPA) compte comme « pas de manifeste ». |
404 / 410 | Pas de manifeste. |
| CORS | Envoyez Access-Control-Allow-Origin: * sur chaque réponse sous /.well-known/, les 404 compris. L’app mobile n’en a pas besoin ; la version web de Casa Tookan (devapp.casatookan.com) et le validateur ci-dessous, si. Sans cet en-tête, un navigateur ne peut pas lire le fichier, ni distinguer un fichier absent d’une erreur réseau. |
Erreur réseau, délai dépassé, 403, 5xx | « Impossible de savoir » : Casa Tookan garde ce qu’il savait et ne rétrograde jamais une app à cause d’une panne. Ne placez pas le fichier derrière un challenge anti-bot. |
| Où | /.well-known/wallet-app.json et le <link rel="manifest"> de votre page d’accueil, demandés en parallèle. Une page d’accueil que Casa Tookan ne peut pas lire (challenge anti-bot, 403) compte comme « pas de manifeste lié ». |
| Images | Pas derrière un challenge anti-bot ni une connexion non plus, et lisibles en cross-origin (Access-Control-Allow-Origin: *). Publiez une nouvelle image sous une nouvelle URL : les wallets peuvent les mettre en cache. |
| Quelles pages sont l’app | Celles de votre scope. Ailleurs sur votre domaine, Casa Tookan affiche votre site web ordinaire, sous le nom et l’icône de votre manifeste. |
| Une app enregistrée | Un favori par domaine, sur votre start_url, rafraîchi à chaque visite : un nouveau nom, une nouvelle bannière ou un nouveau start_url sont suivis ; un champ que vous retirez est retiré ; un manifeste disparu pour de bon la ramène à un simple favori. |
Mini apps Farcaster
Casa Tookan lit aussi /.well-known/farcaster.json et héberge les mini apps construites avec @farcaster/miniapp-sdk quand la casa active possède un compte Farcaster : contexte, Sign In With Farcaster, le wallet, les retours haptiques. Servez les deux manifestes et ils sont fusionnés champ par champ, le Wallet App Manifest d’abord. Vous n’avez besoin d’un Wallet App Manifest que pour remplacer ce qui diffère dans Casa Tookan, ou pour déclarer Bitcoin et Counterparty. Un domaine déclaré par farcaster.json seul n’est l’app qu’à son homeUrl et en dessous.
Non pris en charge : l’ajout de la mini app et ses notifications (pas de serveur de notifications), la publication de casts (confiée à farcaster.xyz).
Playground
Modifiez un manifeste et voyez, au fil de la frappe, ce que Casa Tookan en fait : les vérifications que l’app applique, votre icône à toutes les tailles, et les écrans que vos utilisateurs verront. Il démarre avec un vrai manifeste, celui du Dev Playground, en ligne à ctserver.everdreamsoft.com/.well-known/wallet-app.json. Changez son nom, sa bannière ou sa couleur, chargez votre propre domaine, ou collez votre manifeste. Pour les vérifications complètes de la spécification, utilisez le validateur de la spécification.
Le Dev Playground sert icon-1024.png (1024 × 1024), hero-1200x630.jpg et splash-200.png (200 × 200) : un seul jeu de fichiers pour la barre d’adresse, Explorer, la fiche de l’app et l’écran de lancement. Ouvrez-le dans Casa Tookan depuis ctserver.everdreamsoft.com/playground.