Casa Tookan Développeurs
Wallet App Manifest

Créez une app Casa Tookan.

Un membre wallet dans le manifeste web que vous avez déjà, et votre site a son nom, son icône, sa bannière et son écran de lancement dans Casa Tookan.

En bref

En une phraseAjoutez un membre 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.
Explorer › Mes apps dans Casa Tookan : le Dev Playground enregistré comme app, avec sa bannière, son icône, son nom et son sous-titre
Explorer › Mes appsVotre bannière, votre icône, votre nom et votre sous-titre, dès qu’un joueur vous enregistre.
La fenêtre de Casa Tookan qui demande de se connecter au Dev Playground
Fenêtres de signatureVotre nom et votre icône sur chaque demande.
Le Dev Playground ouvert dans le navigateur de Casa Tookan, connecté
Votre app, connectéeLa pastille de la casa montre qui est connecté.
Vous déclarezCasa Tookan affiche
name, iconsVotre nom et votre icône dans la barre d’adresse, et dans la fenêtre où l’utilisateur approuve une signature
wallet.splashImageUrl, background_colorUn écran de lancement pendant le chargement de votre app, jusqu’à ce que vous appeliez window.wallet.ready()
wallet.heroImageUrl, wallet.subtitle, start_urlUne carte dans Explorer › Apps quand l’utilisateur enregistre votre app, qui s’ouvre sur start_url
wallet.chains, wallet.capabilitiesUn avertissement que l’on peut fermer quand vous exigez quelque chose qui manque à Casa Tookan ; votre app s’ouvre quand même
Écrivez Casa Tookan en entierPartout : Casa Tookan / 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.

Une app a besoin du membre 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

  1. https://<your-domain>/.well-known/wallet-app.json : le même JSON, servi seul ;
  2. 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

MembreUsage par Casa TookanNotes
nameLe nom de votre app32 caractères au plus, sinon short_name (32 au plus) est affiché.
iconsL’icône de votre appLa plus grande icône matricielle de purpose any ; maskable seulement en dernier recours ; jamais monochrome ni SVG. Voir images.
start_urlOù s’ouvrent votre app et son favoriDoit être sur votre domaine, sinon ignoré.
scopeQuelles pages sont l’appRè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_colorFond de l’écran de lancementCouleurs hexadécimales uniquement.
descriptionLa fiche de votre app170 caractères au plus, texte brut, sans emoji.
categoriesCatégorie et tagsJusqu’à 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.
screenshotsLa fiche de votre appform_factor: "narrow" pour les téléphones. Pas encore affichées par Casa Tookan.

Ajouté Le membre wallet

ChampTypeNotes
versionchaîneObligatoire : "1". Toute 1.x est lue comme 1, une autre version majeure est ignorée.
subtitlechaîne30 caractères au plus, sans emoji. Une ligne sous le nom.
heroImageUrlURLLa bannière dans Explorer › Apps. Voir images.
splashImageUrlURLL’image de l’écran de lancement ; par défaut, l’icône.
chainsobjetrequired / optional : des identifiants CAIP-2 (voir chaînes).
capabilitiesobjetrequired / optional (voir capacités).
associationobjetLa preuve que le domaine est à vous (voir plus bas).
extensionsobjetUn 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, eip191 pour EVM, bip322-simple pour 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

ImageMembreTailleFormat
Icôneicons, purpose any1024 × 1024 (au moins 512)PNG, opaque
Bannièrewallet.heroImageUrl1200 × 630 (1,91:1), affichée sans recadragePNG ou JPEG
Écran de lancementwallet.splashImageUrl200 × 200PNG, transparence autorisée
Captures d’écranscreenshots, form_factor: "narrow"1284 × 2778 en portrait, jusqu’à 3 affichéesPNG 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îneIdentifiant
Bitcoin mainnetbip122:000000000019d6689c085ae165831e93
Ethereumeip155:1
Baseeip155:8453
Kaiaeip155:8217
Optimism · Arbitrum · Polygon · BNB Chain · Avalanche · Gnosiseip155:10 · 42161 · 137 · 56 · 43114 · 100
CounterpartyCounterparty fonctionne sur Bitcoin et n’a pas d’identifiant de chaîne propre. Exigez Bitcoin et la capacité provider.counterparty.

Capacités

CapacitéCe que votre page reçoit
provider.ethereumwindow.ethereum (EIP-1193, annoncé via EIP-6963) sur le compte EVM de la casa.
provider.bitcoinsats-connect, Wallet Standard et window.unisat sur les comptes Bitcoin de la casa (segwit, taproot, legacy).
provider.counterpartywindow.webXCP / window.web3xcp sur l’adresse legacy ; les PSBT Counterparty sont décodées et montrées à l’utilisateur avant la signature.
wallet.readywindow.wallet.ready() (voir écran de lancement).
casatookan:identity.ceid Casa Tookan uniquementwindow.casaTookan.ceid, pour connecter le joueur avec son Casa Estates ID (voir CEID).
casatookan:tookans.spend Casa Tookan uniquementwindow.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 uniquementRé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) sur background_color.
  • Déclarez wallet.ready et il reste jusqu’à ce que vous appeliez window.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 accountsChanged des providers (sur window.ethereum et window.unisat).
  • Chaque casa a son propre stockage : localStorage, sessionStorage et 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

SituationCe 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.
FormatServez du application/json. Une page HTML avec le statut 200 (un fallback de SPA) compte comme « pas de manifeste ».
404 / 410Pas de manifeste.
CORSEnvoyez 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é ».
ImagesPas 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’appCelles 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éeUn 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.

Les images sont chargées depuis votre serveur et mesurées.

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.