Command Palette

Search for a command to run...

Métadonnées

Documentez chaque champ obligatoire et facultatif du fichier metadata.json d'une présence Nowly.

Champs obligatoires

Chaque présence nécessite :

ChampTypeDescriptionPar défaut
name*stringNom affiché du service ou de la plateforme.-
author*objectAuteur principal affiché en premier dans la bibliothèque et les images OG.-
description*objectDescriptions courtes localisées par langue.-
url*string[]Domaines ou motifs d'URL pris en charge pour la correspondance des pages.-
color*stringCouleur de la marque au format hex, utilisée par l'interface et les embeds.-
category*stringUn parmi streaming, music, video, social, gaming, tools, ai, learning, creator ou other.-

Exemple

{
  "name": "YouTube",
  "author": {
    "name": "Développeur Nowly",
    "github": "exemple"
  },
  "url": ["youtube.com", "www.youtube.com"],
  "color": "#FF0033",
  "category": "streaming",
  "description": {
    "en-US": "Watch and share videos on YouTube."
  }
}

Auteur et contributeurs

  • author - Mainteneur principal, affiché en premier dans la bibliothèque et les images OG.
  • contributors - Personnes supplémentaires ayant contribué à la présence.

Les noms d'utilisateur GitHub (la clé github) servent à résoudre les avatars.

Descriptions et fonctionnalités

  • description - Texte court pour la bibliothèque, organisé par langue.
  • longDescription - Description détaillée pour les pages de détail.
  • features - Liste localisée des comportements pris en charge (ex. boutons, touches multimédias).

Prise en charge native Discord

Certaines plateformes apparaissent déjà sur Discord si l'utilisateur lie son compte (Spotify en est l'exemple habituel). Ce booléen facultatif permet d'expliquer que Nowly reste utile sans cette liaison.

ChampTypeDescriptionPar défaut
discordNativebooleanTrue lorsque Discord affiche déjà cette plateforme si l'utilisateur lie son compte. Facultatif. False par défaut.-
{
  "name": "Spotify",
  "discordNative": true
}

Cela affiche seulement une note d'information sur la page bibliothèque et dans l'extension (boutique et détail d'une présence installée). Cela n'empêche pas l'installation.

Correspondance d'URL

  • url - Domaines ou motifs d'URL pris en charge pour la correspondance des pages.
  • regExp - Correspondance basée sur des expressions régulières pour les motifs d'URL complexes.

Utilisez regExp uniquement lorsque la correspondance simple d'url ne suffit pas. Préférez des listes de domaines explicites.

Contexte d'exécution

Deux champs facultatifs contrôlent comment et quand le script de votre présence s'exécute dans le navigateur.

ChampTypeDescriptionPar défaut
world"main" | "isolated"Monde d'exécution. Par défaut : isolated.-
runAt"document_start" | "document_end" | "document_idle"Moment d'injection du script. Par défaut : document_idle.-

Par défaut, une présence s'exécute dans le monde isolated : elle partage le DOM de la page mais pas son contexte JavaScript. C'est le réglage sûr par défaut et il convient à presque toutes les présences.

Définissez "world": "main" lorsque votre présence a besoin du contexte de la page, en particulier :

  • lire des variables globales de la page (ex. un objet lecteur exposé par le site sur window) ;
  • effectuer un fetch authentifié de même origine qui doit transmettre les cookies de session de l'utilisateur (ex. l'API de métadonnées interne d'un site).
{
  "name": "Netflix",
  "url": ["netflix.com", "www.netflix.com"],
  "world": "main",
  "color": "#E50914",
  "category": "streaming",
  "description": {
    "en-US": "Watch movies and series on Netflix."
  }
}

Un fetch depuis le monde isolé n'est pas considéré comme une requête first-party : les appels authentifiés échouent silencieusement. Si votre présence dépend de l'API connectée du site, vous devez définir "world": "main".

La déclaration se trouve entièrement dans metadata.json - l'extension la lit au moment de l'enregistrement. Aucune modification de l'extension n'est nécessaire pour ajouter une nouvelle présence en contexte page.

Catégorie

Les catégories autorisées sont streaming, music, video, social, gaming, tools, ai, learning, creator et other.