ReadAware

Publier une extension

Le marché d'extensions fonctionne comme le dépôt d'extensions de Raycast : votre extension vit dans le dépôt public readaware-plugins, entrant par pull request. Une fois fusionné, elle apparaît dans « Réglages → Extensions → Marché d'extensions » de l'application, installable en un clic.

Écrire en TypeScript

TypeScript est recommandé. Le dépôt est livré avec un template/, déjà connecté à l'API typée (types/plugin-api.d.ts) — copiez-le, écrivez src/main.ts, puis construisez en un seul module autonome :

bun build src/main.ts --outfile main.js --format esm

Ce qui est soumis au marché d'extensions est toujours le main.js construit ; gardez les commits de src/ pour que les réviseurs puissent lire le vrai code. JavaScript pur est également accepté. Les extensions officielles dans plugins/ sont écrites ainsi — traitez-les comme des exemples vivants.

Soumettre

  1. Forkez le dépôt.
  2. Copiez template/ en plugins/<your-plugin-id>/, au minimum manifest.json et main.js. Le nom du dossier doit correspondre à l'id du manifest.
  3. Ajoutez l'entrée correspondante dans registry.json, en gardant le tableau trié par id.
  4. Exécutez localement les mêmes vérifications que la CI :
    node scripts/validate.mjs
    npx tsc --noEmit
  5. Ouvrez une pull request, expliquant ce que fait l'extension et pourquoi chaque permission déclarée est nécessaire.

La CI applique la cohérence registre-manifest, le format d'id, la liste blanche de permissions et l'existence des fichiers, et vérifie le type de chaque extension TypeScript.

Mettre à jour

Même flux : augmentez version dans manifest.json et registry.json dans la même pull request. Notez que l'application lit le registre via CDN, donc les mises à jour fusionnées peuvent prendre un certain temps pour apparaître dans l'onglet marché d'extensions.

Exigences de révision

  • Ne déclarez que les permissions minimales. Les permissions déclarées au-delà de l'utilisation réelle du code feront échouer la pull request — voir le tableau des permissions.
  • main.js doit être lisible, ou livré avec les sources qui le construisent.
  • Pas de code obscurci, pas d'analytics ou de tracking, pas de chargement de code distant.

Les extensions s'exécutent à l'intérieur de l'application, avec la même capacité d'accès que l'application elle-même. L'installation est une décision de confiance que l'utilisateur prend pour chaque extension individuellement, et cette révision est la première ligne de défense de la communauté — écrivez le genre d'extension que vous installeriez vous-même d'un étranger.