@overcrow/mcp 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +7 -7
  2. package/dist/bootstrap/pin.json +42 -42
  3. package/dist/content/docs/en/cli.md +32 -31
  4. package/dist/content/docs/en/dev-channel.md +5 -5
  5. package/dist/content/docs/en/elements.md +5 -5
  6. package/dist/content/docs/en/forms.md +32 -30
  7. package/dist/content/docs/en/guide.md +16 -16
  8. package/dist/content/docs/en/index.md +12 -12
  9. package/dist/content/docs/en/limits.md +5 -4
  10. package/dist/content/docs/en/logic.md +30 -28
  11. package/dist/content/docs/en/manifest.md +35 -33
  12. package/dist/content/docs/en/mcp.md +13 -13
  13. package/dist/content/docs/en/package.md +7 -7
  14. package/dist/content/docs/en/publish-keys.md +6 -5
  15. package/dist/content/docs/en/publishing.md +9 -8
  16. package/dist/content/docs/en/reference.md +5 -5
  17. package/dist/content/docs/en/result-shapes.md +3 -3
  18. package/dist/content/docs/en/sdk.md +11 -11
  19. package/dist/content/docs/en/security.md +30 -30
  20. package/dist/content/docs/en/service-reference.md +2 -2
  21. package/dist/content/docs/en/services.md +33 -32
  22. package/dist/content/docs/en/style-properties.md +2 -2
  23. package/dist/content/docs/en/style.md +19 -18
  24. package/dist/content/docs/en/testing.md +36 -35
  25. package/dist/content/docs/en/view.md +13 -12
  26. package/dist/content/docs/en/widget-statistics.md +18 -17
  27. package/dist/content/docs/en/widgets.md +1 -1
  28. package/dist/content/docs/fr/cli.md +33 -29
  29. package/dist/content/docs/fr/dev-channel.md +8 -8
  30. package/dist/content/docs/fr/elements.md +5 -5
  31. package/dist/content/docs/fr/forms.md +35 -34
  32. package/dist/content/docs/fr/guide.md +13 -12
  33. package/dist/content/docs/fr/index.md +15 -15
  34. package/dist/content/docs/fr/limits.md +5 -5
  35. package/dist/content/docs/fr/logic.md +42 -37
  36. package/dist/content/docs/fr/manifest.md +40 -39
  37. package/dist/content/docs/fr/mcp.md +21 -19
  38. package/dist/content/docs/fr/package.md +8 -7
  39. package/dist/content/docs/fr/publish-keys.md +6 -5
  40. package/dist/content/docs/fr/publishing.md +8 -8
  41. package/dist/content/docs/fr/reference.md +6 -6
  42. package/dist/content/docs/fr/result-shapes.md +4 -3
  43. package/dist/content/docs/fr/sdk.md +12 -11
  44. package/dist/content/docs/fr/security.md +41 -39
  45. package/dist/content/docs/fr/service-reference.md +2 -2
  46. package/dist/content/docs/fr/services.md +34 -33
  47. package/dist/content/docs/fr/style-properties.md +2 -2
  48. package/dist/content/docs/fr/style.md +25 -22
  49. package/dist/content/docs/fr/testing.md +43 -43
  50. package/dist/content/docs/fr/view.md +17 -16
  51. package/dist/content/docs/fr/widget-statistics.md +20 -20
  52. package/dist/content/docs/fr/widgets.md +1 -1
  53. package/dist/content/examples/clock/README.md +3 -3
  54. package/dist/content/examples/fps/README.md +3 -3
  55. package/dist/content/examples/media/README.md +2 -2
  56. package/dist/content/examples/notes/README.md +1 -1
  57. package/dist/content/examples/performance/README.md +2 -2
  58. package/dist/content/examples/playervox-journal/README.md +5 -5
  59. package/dist/content/examples/playervox-rating/README.md +3 -3
  60. package/dist/content/examples/playervox-reviews/README.md +3 -3
  61. package/dist/content/examples/playervox-score/README.md +3 -3
  62. package/dist/content/examples/session/README.md +3 -3
  63. package/dist/content/examples/stopwatch/README.md +3 -3
  64. package/dist/content/examples/twitch-chat/README.md +4 -4
  65. package/dist/content/examples/warframe-market/README.md +2 -2
  66. package/dist/content/reference/errors.json +16 -16
  67. package/dist/prompts.js +2 -2
  68. package/dist/resources.js +1 -1
  69. package/dist/version.js +1 -1
  70. package/npm-shrinkwrap.json +2 -2
  71. package/package.json +1 -1
@@ -40,14 +40,15 @@ gestionnaires que la vue appelle avec `on:activate={increment}`.
40
40
  `setTimeout`, ni `console`, ni `Intl`, ni `require`. Les objets standard
41
41
  d’ECMAScript sont là (`Math`, `JSON`, `Date`, `Map`, `Promise`…), et le
42
42
  SDK est la seule porte de sortie.
43
- - Tout le reste se passe par **tours**. OverCrow envoie un événement, un
44
- déclenchement de minuteur, une réponse de service ou un changement de ses
45
- propres données ; votre code s’exécute ; puis la VM réévalue la vue et
46
- n’envoie à OverCrow que ce qui a changé. Vous ne mettez jamais la vue à
47
- jour à la main.
48
- - Un tour a un budget de temps, et la VM un plafond de mémoire. OverCrow
49
- arrête et relance, quelques fois, un widget qui dépasse l’un ou l’autre ;
50
- voir [ce qui se passe en cas d’échec](#ce-qui-se-passe-en-cas-déchec).
43
+ - Tout le reste se passe par **tours**. PlayerVox OverCrow envoie un
44
+ événement, un déclenchement de minuteur, une réponse de service ou un
45
+ changement de ses propres données ; votre code s’exécute ; puis la VM
46
+ réévalue la vue et n’envoie à OverCrow que ce qui a changé. Vous ne mettez
47
+ jamais la vue à jour à la main.
48
+ - Un tour a un budget de temps, et la VM un plafond de mémoire.
49
+ PlayerVox OverCrow arrête et relance, quelques fois, un widget qui dépasse
50
+ l’un ou l’autre ; voir [ce qui se passe en cas
51
+ d’échec](#ce-qui-se-passe-en-cas-déchec).
51
52
 
52
53
  Le seul import permis à un module de logique est `@overcrow/sdk`. Tout ce
53
54
  dont il a besoin par ailleurs se trouve dans le module lui-même.
@@ -137,8 +138,8 @@ sauf si la logique exporte le sien.
137
138
 
138
139
  ## Les données d’OverCrow : `host`
139
140
 
140
- `host` contient ce qu’OverCrow sait de l’utilisateur et du widget. Ses
141
- membres donnent toujours la dernière valeur.
141
+ `host` contient ce que PlayerVox OverCrow sait de l’utilisateur et du
142
+ widget. Ses membres donnent toujours la dernière valeur.
142
143
 
143
144
  | Membre | Valeur |
144
145
  | --- | --- |
@@ -153,12 +154,12 @@ membres donnent toujours la dernière valeur.
153
154
  | `host.grants` | Les capabilities accordées par l’utilisateur ; lisez-les avec `hasGrant`. |
154
155
  | `host.messages` | Les messages de la langue active ; lisez-les avec `t`. |
155
156
 
156
- `onHost(listener)` appelle votre écouteur quand OverCrow envoie de nouvelles
157
- valeurs, avec les noms des membres qui ont changé, avant la réévaluation de
158
- la vue. Utilisez-le quand un changement demande plus que l’affichage de la
159
- nouvelle valeur : réarmer un minuteur, se réabonner, redessiner un canvas.
160
- Un membre peut être renvoyé avec la même valeur : comparez-la à celle que
161
- vous avez gardée quand cela compte.
157
+ `onHost(listener)` appelle votre écouteur quand PlayerVox OverCrow envoie de
158
+ nouvelles valeurs, avec les noms des membres qui ont changé, avant la
159
+ réévaluation de la vue. Utilisez-le quand un changement demande plus que
160
+ l’affichage de la nouvelle valeur : réarmer un minuteur, se réabonner,
161
+ redessiner un canvas. Un membre peut être renvoyé avec la même valeur :
162
+ comparez-la à celle que vous avez gardée quand cela compte.
162
163
 
163
164
  <!-- source: widgets/stopwatch/logic.ts -->
164
165
  ```ts
@@ -175,8 +176,9 @@ ses boutons tant que `host.mode` ne vaut pas `"interactive"`.
175
176
 
176
177
  ## Le menu d’options
177
178
 
178
- OverCrow dessine et enregistre les lignes déclarées dans `wrapper.menu` du
179
- [manifeste](manifest.md#le-menu-doptions). La logique les lit :
179
+ PlayerVox OverCrow dessine et enregistre les lignes déclarées dans
180
+ `wrapper.menu` du [manifeste](manifest.md#le-menu-doptions). La logique les
181
+ lit :
180
182
 
181
183
  - `option(id, fallback)` renvoie la valeur enregistrée d’une ligne de type
182
184
  bascule, curseur ou choix, ou `fallback` quand il n’y en a pas ou qu’elle
@@ -212,8 +214,8 @@ pour un service protégé : une ligne `action` peut modifier l’état, pas
212
214
 
213
215
  ## Minuteurs
214
216
 
215
- Il n’y a pas de `setTimeout`. Les minuteurs appartiennent à OverCrow et
216
- passent par `timers` :
217
+ Il n’y a pas de `setTimeout`. Les minuteurs appartiennent à
218
+ PlayerVox OverCrow et passent par `timers` :
217
219
 
218
220
  | Fonction | Se déclenche |
219
221
  | --- | --- |
@@ -231,7 +233,8 @@ timers.every(1000, () => {
231
233
  });
232
234
  ```
233
235
 
234
- Puisque les minuteurs appartiennent à OverCrow, trois règles s’appliquent :
236
+ Puisque les minuteurs appartiennent à PlayerVox OverCrow, trois règles
237
+ s’appliquent :
235
238
 
236
239
  - **Aucun minuteur de moins de 100 ms.** Un intervalle plus court est porté
237
240
  à cette valeur. Le mouvement relève du
@@ -278,8 +281,9 @@ function start(): void {
278
281
  ```
279
282
 
280
283
  Une durée qui doit seulement avancer à l’écran n’a besoin d’aucun minuteur :
281
- OverCrow fait avancer l’élément `elapsed` à partir d’un point de départ que
282
- la logique lui donne. Voir l’[élément `elapsed`](elements.md#elapsed).
284
+ PlayerVox OverCrow fait avancer l’élément `elapsed` à partir d’un point de
285
+ départ que la logique lui donne. Voir l’[élément
286
+ `elapsed`](elements.md#elapsed).
283
287
 
284
288
  ## Heure, dates et nombres
285
289
 
@@ -349,12 +353,12 @@ export function toggleLabel(running: boolean): string {
349
353
  }
350
354
  ```
351
355
 
352
- Quand l’utilisateur change la langue d’OverCrow, la vue est réévaluée avec
353
- les nouveaux messages. En revanche, un texte que la logique a calculé puis
354
- rangé dans l’état ne change pas : calculez les textes dans des fonctions que
355
- la vue appelle, ou rafraîchissez-les dans `onHost` quand `"locale"` change.
356
- Le nom du widget et les libellés de son menu se trouvent dans le manifeste,
357
- pas dans les fichiers de langue.
356
+ Quand l’utilisateur change la langue de PlayerVox OverCrow, la vue est
357
+ réévaluée avec les nouveaux messages. En revanche, un texte que la logique a
358
+ calculé puis rangé dans l’état ne change pas : calculez les textes dans des
359
+ fonctions que la vue appelle, ou rafraîchissez-les dans `onHost` quand
360
+ `"locale"` change. Le nom du widget et les libellés de son menu se trouvent
361
+ dans le manifeste, pas dans les fichiers de langue.
358
362
 
359
363
  `overcrow-widget check` avertit quand la vue appelle `t("key")` avec une clé
360
364
  sans message, et refuse deux fichiers dont les clés diffèrent.
@@ -380,9 +384,10 @@ function paint(): void {
380
384
 
381
385
  Les coordonnées sont en pixels logiques, depuis le coin supérieur gauche du
382
386
  canvas ; les couleurs sont des littéraux (`#rrggbb`) ou des tokens de
383
- couleur. OverCrow vérifie chaque commande et les dessine lui-même : il n’y a
384
- ni accès aux pixels ni shader. Redessinez quand ce que vous affichez change,
385
- et quand `host.theme` change si vous utilisez des couleurs littérales.
387
+ couleur. PlayerVox OverCrow vérifie chaque commande et les dessine lui-même
388
+ : il n’y a ni accès aux pixels ni shader. Redessinez quand ce que vous
389
+ affichez change, et quand `host.theme` change si vous utilisez des couleurs
390
+ littérales.
386
391
 
387
392
  <!-- generated:draw-commands -->
388
393
  | Commande | Arguments | Signification |
@@ -443,17 +448,17 @@ indique par quoi le SDK remplace ce qui manque :
443
448
  | `logic.debugger` | `debugger` donne un avertissement. |
444
449
 
445
450
  Ce contrôle vous aide ; ce n’est pas lui qui protège l’utilisateur. C’est le
446
- rôle du sandbox, des budgets de la VM et de la vérification par OverCrow de
447
- tout ce que le widget envoie.
451
+ rôle du sandbox, des budgets de la VM et de la vérification par
452
+ PlayerVox OverCrow de tout ce que le widget envoie.
448
453
 
449
454
  ## Ce qui se passe en cas d’échec
450
455
 
451
456
  - Une exception dans un gestionnaire met fin à ce tour ; le widget continue
452
457
  de tourner, et `overcrow-widget dev` affiche la faute.
453
458
  - Un tour plus long que son budget (50 ms), un tas au-dessus de son plafond
454
- ou trop de messages dans un tour arrêtent le widget. OverCrow affiche une
455
- erreur fixe dans son cadre et le relance après 1, 5 puis 15 secondes,
456
- trois fois au plus.
459
+ ou trop de messages dans un tour arrêtent le widget. PlayerVox OverCrow
460
+ affiche une erreur fixe dans son cadre et le relance après 1, 5 puis 15
461
+ secondes, trois fois au plus.
457
462
  - La promesse rejetée d’un appel de service est une erreur ordinaire de
458
463
  votre code : interceptez-la. Voir les [erreurs](services.md#erreurs).
459
464
 
@@ -7,7 +7,7 @@ d’options. Vous l’écrivez à la main ; il est empaqueté tel quel.
7
7
 
8
8
  Le fichier est un seul objet JSON strict. Une marque d’ordre des octets, une
9
9
  clé en double, des données après l’objet ou un champ inconnu le font
10
- refuser : OverCrow n’ignore aucun champ.
10
+ refuser : PlayerVox OverCrow n’ignore aucun champ.
11
11
 
12
12
  ## Un exemple complet
13
13
 
@@ -93,13 +93,13 @@ valeurs qu’il remplit. Voici un manifeste avec des permissions et un menu :
93
93
 
94
94
  - **`id`** est l’identité du widget partout : dans le catalogue, dans le
95
95
  profil de l’utilisateur, dans son stockage. Il s’écrit `<pseudo>.<nom>`,
96
- votre pseudo d’éditeur dans l’espace créateurs d’OverCrow et un nom
97
- (`nova.lol-timers`), ou, une fois un domaine vérifié, ce domaine inversé
98
- et un nom (`gg.nova.lol-timers`). Un ID est définitif : il n’est jamais
99
- donné à un autre widget, même après la suppression du vôtre. `nova`,
100
- `example`, `yourhandle` et `yourname` sont des pseudos d’exemple sous
101
- lesquels personne ne peut publier, et les ID sous `com.playervox` sont
102
- réservés aux widgets publiés par PlayerVox.
96
+ votre pseudo d’éditeur dans l’espace créateurs de PlayerVox OverCrow et un
97
+ nom (`nova.lol-timers`), ou, une fois un domaine vérifié, ce domaine
98
+ inversé et un nom (`gg.nova.lol-timers`). Un ID est définitif : il n’est
99
+ jamais donné à un autre widget, même après la suppression du vôtre.
100
+ `nova`, `example`, `yourhandle` et `yourname` sont des pseudos d’exemple
101
+ sous lesquels personne ne peut publier, et les ID sous `com.playervox`
102
+ sont réservés aux widgets publiés par PlayerVox.
103
103
  - **`version`** est une version sémantique. Une version publiée ne change
104
104
  jamais : toute modification d’un widget publié est une nouvelle version,
105
105
  supérieure.
@@ -107,9 +107,9 @@ valeurs qu’il remplit. Voici un manifeste avec des permissions et un menu :
107
107
 
108
108
  ### Noms
109
109
 
110
- `name` donne le nom qu’OverCrow affiche dans sa liste de widgets et dans ses
111
- menus, en anglais et en français. Les deux sont obligatoires. Un nom
112
- s’affiche tel qu’il est écrit : ni caractère de contrôle, ni caractère
110
+ `name` donne le nom que PlayerVox OverCrow affiche dans sa liste de widgets
111
+ et dans ses menus, en anglais et en français. Les deux sont obligatoires. Un
112
+ nom s’affiche tel qu’il est écrit : ni caractère de contrôle, ni caractère
113
113
  invisible ou de sens d’écriture, comme U+200B (espace sans chasse) ou
114
114
  U+202E (forçage de droite à gauche). Les libellés du menu suivent la même
115
115
  règle.
@@ -124,10 +124,10 @@ règle.
124
124
  ## Tailles
125
125
 
126
126
  `sizing` indique la taille du widget quand l’utilisateur l’ajoute, jusqu’où
127
- celui-ci peut le réduire et l’agrandir, et si OverCrow peut ajuster son
128
- cadre à son contenu. Les longueurs sont en pixels logiques, à une échelle de
129
- 100 % ; l’échelle du contenu choisie par l’utilisateur (de 50 % à 175 %)
130
- les multiplie.
127
+ celui-ci peut le réduire et l’agrandir, et si PlayerVox OverCrow peut
128
+ ajuster son cadre à son contenu. Les longueurs sont en pixels logiques, à
129
+ une échelle de 100 % ; l’échelle du contenu choisie par l’utilisateur (de 50
130
+ % à 175 %) les multiplie.
131
131
 
132
132
  <!-- generated:manifest-sizing -->
133
133
  | Champ | Type | Obligatoire | Signification |
@@ -149,12 +149,12 @@ les multiplie.
149
149
  | `height` | entier de 1 à 4096 | oui | Pixels logiques. |
150
150
  <!-- /generated:manifest-dimensions -->
151
151
 
152
- Avec `fit: "both"`, OverCrow donne au cadre la taille dont la vue a besoin,
153
- dans les deux directions : l’Horloge grandit quand l’utilisateur active les
154
- secondes. Avec `fit: "height"`, l’utilisateur choisit la largeur et la
155
- hauteur suit le contenu. Avec `fit: "none"`, le cadre garde la taille que
156
- l’utilisateur lui a donnée et la vue le remplit. L’utilisateur peut toujours
157
- redimensionner à la main.
152
+ Avec `fit: "both"`, PlayerVox OverCrow donne au cadre la taille dont la vue
153
+ a besoin, dans les deux directions : l’Horloge grandit quand l’utilisateur
154
+ active les secondes. Avec `fit: "height"`, l’utilisateur choisit la largeur
155
+ et la hauteur suit le contenu. Avec `fit: "none"`, le cadre garde la taille
156
+ que l’utilisateur lui a donnée et la vue le remplit. L’utilisateur peut
157
+ toujours redimensionner à la main.
158
158
 
159
159
  <!-- source: widgets/clock/manifest.json -->
160
160
  ```json
@@ -196,12 +196,13 @@ les [règles réseau](services.md#règles-réseau).
196
196
 
197
197
  ## Le menu d’options
198
198
 
199
- Chaque widget a un menu d’options, ouvert depuis son cadre. OverCrow y place
200
- d’abord ses propres lignes : opacité, taille du contenu, ajustement au
201
- contenu et, si le widget en a besoin, son compte. La visibilité en mode
202
- passif est l’œil de la barre d’outils du widget, pas une ligne du menu.
203
- `wrapper.menu` ajoute les vôtres en dessous : bascules, curseurs, choix,
204
- actions et groupes, chacun avec un libellé dans les deux langues.
199
+ Chaque widget a un menu d’options, ouvert depuis son cadre.
200
+ PlayerVox OverCrow y place d’abord ses propres lignes : opacité, taille du
201
+ contenu, ajustement au contenu et, si le widget en a besoin, son compte. La
202
+ visibilité en mode passif est l’œil de la barre d’outils du widget, pas une
203
+ ligne du menu. `wrapper.menu` ajoute les vôtres en dessous : bascules,
204
+ curseurs, choix, actions et groupes, chacun avec un libellé dans les deux
205
+ langues.
205
206
 
206
207
  Le menu prend la largeur de sa ligne la plus large, de 248 à 320 points.
207
208
  Au-delà, un libellé se termine par « … » et s’affiche en entier dans une
@@ -240,8 +241,8 @@ libellés courts, dans les deux langues.
240
241
  }
241
242
  ```
242
243
 
243
- OverCrow dessine les lignes, enregistre leurs valeurs dans le profil de
244
- l’utilisateur et les donne à la logique : lisez une valeur avec
244
+ PlayerVox OverCrow dessine les lignes, enregistre leurs valeurs dans le
245
+ profil de l’utilisateur et les donne à la logique : lisez une valeur avec
245
246
  `option(id, fallback)` et suivez les changements avec `onHost`. Une ligne
246
247
  `action` n’a pas de valeur : elle appelle le gestionnaire que vous avez
247
248
  enregistré avec `onMenu`. Voir
@@ -357,8 +358,8 @@ Chaque entrée de `choices` est une valeur et son libellé :
357
358
  Au premier niveau du manifeste, `requires` liste les sources de données sans
358
359
  lesquelles le widget ne peut pas fonctionner, avec les mêmes noms que le
359
360
  `requires` d’une ligne. Sur une machine à laquelle il en manque une,
360
- OverCrow ne démarre pas le widget, ne l’affiche pas et conserve sa place
361
- dans la disposition ; le widget revient quand la source revient.
361
+ PlayerVox OverCrow ne démarre pas le widget, ne l’affiche pas et conserve sa
362
+ place dans la disposition ; le widget revient quand la source revient.
362
363
  Utilisez-le pour un widget qui n’a rien d’autre à afficher, comme un
363
364
  compteur d’images par seconde sans source de fréquence d’images. Pour une
364
365
  seule valeur facultative, préférez le `requires` d’une ligne.
@@ -380,8 +381,8 @@ grand laisse donc moins de place à tout le reste. Ne le demandez que si
380
381
 
381
382
  ## Comment le manifeste est vérifié
382
383
 
383
- `overcrow-widget check` valide le manifeste avec le validateur qu’OverCrow
384
- exécute lui-même, et désigne le membre qu’il refuse :
384
+ `overcrow-widget check` valide le manifeste avec le validateur que
385
+ PlayerVox OverCrow exécute lui-même, et désigne le membre qu’il refuse :
385
386
 
386
387
  ```text
387
388
  error[manifest.sizing]: `sizing` is out of bounds or inconsistent
@@ -393,9 +394,9 @@ error[manifest.sizing]: `sizing` is out of bounds or inconsistent
393
394
  check: 1 error(s), 0 warning(s)
394
395
  ```
395
396
 
396
- OverCrow le valide de nouveau quand le paquet est admis dans le catalogue,
397
- quand il est installé et à chaque démarrage du widget. Une nouvelle version
398
- dont le manifeste demande plus que la précédente (une règle réseau, un
399
- événement de jeu, une capability, le stockage ou le presse-papiers) attend
400
- que l’utilisateur l’approuve dans le Centre de contrôle avant de remplacer
401
- la version installée.
397
+ PlayerVox OverCrow le valide de nouveau quand le paquet est admis dans le
398
+ catalogue, quand il est installé et à chaque démarrage du widget. Une
399
+ nouvelle version dont le manifeste demande plus que la précédente (une règle
400
+ réseau, un événement de jeu, une capability, le stockage ou le
401
+ presse-papiers) attend que l’utilisateur l’approuve dans le Centre de
402
+ contrôle avant de remplacer la version installée.
@@ -11,7 +11,7 @@ il a besoin.
11
11
  claude mcp add overcrow -- npx -y @overcrow/mcp
12
12
  ```
13
13
 
14
- Demandez ensuite : « Crée un widget OverCrow qui affiche… ».
14
+ Demandez ensuite : « Crée un widget PlayerVox OverCrow qui affiche… ».
15
15
 
16
16
  ## Ajouter le serveur
17
17
 
@@ -87,22 +87,22 @@ Claude Desktop.
87
87
 
88
88
  ## Ce que fait le serveur
89
89
 
90
- - **La première fois**, il télécharge les outils créateurs OverCrow de
91
- votre ordinateur ([l’outil en ligne de commande](cli.md) et le runtime
92
- qui joue les [tests](testing.md), environ 15 Mo) depuis la release GitHub
93
- d’OverCrow. Il vérifie chaque fichier avec les empreintes inscrites dans
94
- le serveur, puis les garde dans son propre dossier
95
- (`~/.cache/overcrow-mcp`, ou `%LOCALAPPDATA%\overcrow-mcp` sous Windows).
96
- Rien ne s’ajoute à votre `PATH`, et aucun droit d’administrateur n’est
97
- nécessaire.
90
+ - **La première fois**, il télécharge les outils créateurs
91
+ PlayerVox OverCrow de votre ordinateur ([l’outil en ligne de
92
+ commande](cli.md) et le runtime qui joue les [tests](testing.md), environ
93
+ 15 Mo) depuis la release GitHub d’OverCrow. Il vérifie chaque fichier avec
94
+ les empreintes inscrites dans le serveur, puis les garde dans son propre
95
+ dossier (`~/.cache/overcrow-mcp`, ou `%LOCALAPPDATA%\overcrow-mcp` sous
96
+ Windows). Rien ne s’ajoute à votre `PATH`, et aucun droit d’administrateur
97
+ n’est nécessaire.
98
98
  - **Ensuite**, votre assistant travaille avec ses outils, dans cet ordre :
99
99
  créer le widget depuis un modèle, installer le SDK (il vous le demande
100
100
  d’abord), vérifier, tester (il voit les images qui diffèrent), auditer,
101
101
  empaqueter, préparer la soumission.
102
102
  - **L’identifiant du widget** est définitif. Votre assistant vous le
103
- demande : votre pseudo d’éditeur dans l’espace créateurs d’OverCrow et un
104
- nom (`nova.lol-timers`), ou un domaine que vous pouvez vérifier
105
- (`gg.nova.lol-timers`).
103
+ demande : votre pseudo d’éditeur dans l’espace créateurs de
104
+ PlayerVox OverCrow et un nom (`nova.lol-timers`), ou un domaine que vous
105
+ pouvez vérifier (`gg.nova.lol-timers`).
106
106
  - **La soumission** : le serveur vérifie tout ce que demande l’espace
107
107
  créateurs, puis écrit le zip des sources de votre widget dans `dist/`,
108
108
  sans `node_modules`, `dist`, fichiers cachés ni clés, et liste ce qu’il a
@@ -123,10 +123,11 @@ Claude Desktop.
123
123
  ## Ce qu’il ne fait pas
124
124
 
125
125
  - Il n’envoie, ne signe et ne publie jamais rien. Vous envoyez le zip et
126
- les textes dans l’espace créateurs d’OverCrow, à l’adresse creators.playervox.com.
127
- - Il n’installe pas votre widget dans OverCrow : l’essayer en jeu passe par
128
- le [canal de développement](dev-channel.md) de l’outil en ligne de
129
- commande.
126
+ les textes dans l’espace créateurs de PlayerVox OverCrow, à l’adresse
127
+ creators.playervox.com.
128
+ - Il n’installe pas votre widget dans PlayerVox OverCrow : l’essayer en jeu
129
+ passe par le [canal de développement](dev-channel.md) de l’outil en ligne
130
+ de commande.
130
131
  - Il n’envoie rien sur vous : ni télémétrie, ni compte.
131
132
 
132
133
  ## Sécurité
@@ -136,7 +137,8 @@ Claude Desktop.
136
137
  système, votre dossier personnel entier, les dossiers cachés et les liens
137
138
  qui mènent ailleurs.
138
139
  - **Aucune commande de son choix.** Le serveur lance l’outil en ligne de
139
- commande d’OverCrow et npm, rien d’autre, jamais à travers un shell.
140
+ commande de PlayerVox OverCrow et npm, rien d’autre, jamais à travers un
141
+ shell.
140
142
  - **Téléchargements vérifiés.** Il ne télécharge que les fichiers épinglés
141
143
  depuis GitHub, et les vérifie avant de s’en servir. npm n’installe que
142
144
  `@overcrow/sdk` et TypeScript, sans scripts d’installation, et leur
@@ -150,8 +152,8 @@ Claude Desktop.
150
152
 
151
153
  ## Hors ligne
152
154
 
153
- Téléchargez une fois depuis la release GitHub d’OverCrow le fichier
154
- `overcrow-creator-tools-VERSION-PLATFORME.zip` de votre plateforme,
155
+ Téléchargez une fois depuis la release GitHub de PlayerVox OverCrow le
156
+ fichier `overcrow-creator-tools-VERSION-PLATFORME.zip` de votre plateforme,
155
157
  placez-le dans votre dossier de widgets, et demandez à votre assistant de
156
158
  lancer `setup` avec ce fichier (`zipPath`). Ou lancez le serveur avec
157
159
  `--tools-zip` et le chemin du fichier. Le fichier doit être exactement celui
@@ -64,8 +64,8 @@ ne sert pas et raccourcit les noms locaux. Deux conséquences :
64
64
  - la vue elle-même ne contient aucun code : `view.json` désigne les
65
65
  fonctions de `logic.js` par leur numéro.
66
66
 
67
- Un paquet contient des sources qu’OverCrow peut lire et vérifier, jamais de
68
- bytecode compilé.
67
+ Un paquet contient des sources que PlayerVox OverCrow peut lire et vérifier,
68
+ jamais de bytecode compilé.
69
69
 
70
70
  ## Les mêmes octets à chaque fois
71
71
 
@@ -84,14 +84,15 @@ produite par un autre outil zip est refusée.
84
84
  ## Le registre
85
85
 
86
86
  `ledger.json`, écrit par l’outil, liste tous les autres fichiers avec leur
87
- taille et leur SHA-256. OverCrow le recalcule à partir de l’archive et
88
- exige les mêmes octets. C’est lui qui lie chaque fichier au paquet : un
89
- fichier modifié, ajouté ou retiré après l’empaquetage ne correspond plus.
87
+ taille et leur SHA-256. PlayerVox OverCrow le recalcule à partir de
88
+ l’archive et exige les mêmes octets. C’est lui qui lie chaque fichier au
89
+ paquet : un fichier modifié, ajouté ou retiré après l’empaquetage ne
90
+ correspond plus.
90
91
 
91
92
  ## Comment OverCrow vérifie un paquet
92
93
 
93
- OverCrow valide un paquet en entier lors de son admission au catalogue,
94
- lors de son installation, puis **à chaque démarrage du widget** :
94
+ PlayerVox OverCrow valide un paquet en entier lors de son admission au
95
+ catalogue, lors de son installation, puis **à chaque démarrage du widget** :
95
96
 
96
97
  1. la taille de l’archive, sa structure exacte et la somme de contrôle de
97
98
  chaque entrée ;
@@ -50,10 +50,11 @@ soumet le widget à chaque tag de version :
50
50
 
51
51
  <!-- source: docs/content/examples/weather/.github/workflows/submit.yml -->
52
52
  ```yaml
53
- # Sends the widget to the OverCrow creator space when a version tag is
54
- # pushed. The publish key is a secret of the repository, and the OverCrow
55
- # release whose creator tools to use is a variable of the repository.
56
- name: Submit to OverCrow
53
+ # Sends the widget to the PlayerVox OverCrow creator space when a version
54
+ # tag is pushed. The publish key is a secret of the repository, and the
55
+ # OverCrow release whose creator tools to use is a variable of the
56
+ # repository.
57
+ name: Submit to PlayerVox OverCrow
57
58
 
58
59
  on:
59
60
  push:
@@ -78,7 +79,7 @@ jobs:
78
79
  (cd "$tools" && sha256sum --check --quiet SHA256SUMS)
79
80
  install -D -m 755 "$tools"/overcrow-widget-*-linux-x86_64 "$HOME/.local/bin/overcrow-widget"
80
81
  echo "$HOME/.local/bin" >> "$GITHUB_PATH"
81
- - name: Submit to OverCrow
82
+ - name: Submit to PlayerVox OverCrow
82
83
  run: overcrow-widget submit --submission submission.json
83
84
  env:
84
85
  OVERCROW_PUBLISH_KEY: ${{ secrets.OVERCROW_PUBLISH_KEY }}
@@ -2,8 +2,8 @@
2
2
 
3
3
  > **Les pull requests sont fermées.** Les widgets ne sont plus proposés par
4
4
  > pull request : ceux de PlayerVox passent déjà par l’espace créateurs
5
- > OverCrow, et le vôtre y passera à son ouverture. D’ici là, cette page
6
- > décrit l’admission, la revue et le catalogue que suit un widget.
5
+ > PlayerVox OverCrow, et le vôtre y passera à son ouverture. D’ici là, cette
6
+ > page décrit l’admission, la revue et le catalogue que suit un widget.
7
7
 
8
8
  Les widgets atteignent les utilisateurs de PlayerVox OverCrow par le
9
9
  catalogue signé des widgets : OverCrow n’installe que ce que liste ce
@@ -91,7 +91,7 @@ n’exécute jamais votre code ni `tsc` :
91
91
 
92
92
  1. elle construit le dossier comme le fait `package` : toutes les
93
93
  vérifications des sources, du style, de la logique et du paquet, puis le
94
- lecteur de paquets d’OverCrow lui-même ;
94
+ lecteur de paquets de PlayerVox OverCrow lui-même ;
95
95
  2. avec `--package`, la vue compilée de votre archive doit être, octet pour
96
96
  octet, le résultat de la compilation de `view.ocml` ;
97
97
  3. elle vérifie les limites du schéma, les IDs réservés, `listing.json`,
@@ -142,16 +142,16 @@ publique est dans [`keys/`](../../../keys/). Le catalogue :
142
142
  version publiée ne change jamais, et un changement est une nouvelle
143
143
  version ;
144
144
  - porte un numéro de séquence strictement croissant et expire au bout de
145
- 90 jours au plus : OverCrow refuse une séquence plus ancienne et un
146
- catalogue expiré ;
145
+ 90 jours au plus : PlayerVox OverCrow refuse une séquence plus ancienne et
146
+ un catalogue expiré ;
147
147
  - marque `built-in` les widgets de référence PlayerVox (IDs
148
148
  `com.playervox.*` uniquement) : ils sont installés sur un nouveau profil
149
149
  avec leurs permissions déclarées accordées, sauf pour une mise à jour qui
150
150
  en demande davantage.
151
151
 
152
- OverCrow vérifie la signature, l’empreinte du paquet, son registre et sa
153
- vue compilée avant l’installation, puis à chaque démarrage du widget. Voir
154
- [le paquet](package.md#comment-overcrow-vérifie-un-paquet).
152
+ PlayerVox OverCrow vérifie la signature, l’empreinte du paquet, son registre
153
+ et sa vue compilée avant l’installation, puis à chaque démarrage du widget.
154
+ Voir [le paquet](package.md#comment-overcrow-vérifie-un-paquet).
155
155
 
156
156
  ## Mises à jour
157
157
 
@@ -28,10 +28,10 @@ ensemble ; celles qui suivent sont à garder ouvertes pendant que vous
28
28
 
29
29
  - Les tableaux des éléments, des attributs, des propriétés de style, des
30
30
  tokens, des services, des formes de résultat et des limites sont
31
- **générés à partir du schéma des widgets**, les mêmes tables qu’OverCrow
32
- et l’outil en ligne de commande compilent dans leurs validateurs. Une
33
- vérification échoue dès qu’une page diffère du schéma, en anglais ou en
34
- français.
31
+ **générés à partir du schéma des widgets**, les mêmes tables que
32
+ PlayerVox OverCrow et l’outil en ligne de commande compilent dans leurs
33
+ validateurs. Une vérification échoue dès qu’une page diffère du schéma, en
34
+ anglais ou en français.
35
35
  - Les **types du SDK** sont générés à partir du même schéma : un élément,
36
36
  une icône, une capability ou un paramètre de service erroné est donc une
37
37
  erreur TypeScript dans votre logique.
@@ -52,8 +52,8 @@ et `@overcrow/sdk` 1.0.
52
52
  Trois spécifications, dans le dépôt public, s’adressent à ceux qui
53
53
  implémentent un hôte ou un autre outil plutôt qu’un widget : la
54
54
  [référence complète du schéma, générée](../../widget-schema-v1.md), qui
55
- couvre aussi le protocole entre OverCrow et le processus du widget ainsi que
56
- les données du catalogue ; le
55
+ couvre aussi le protocole entre PlayerVox OverCrow et le processus du widget
56
+ ainsi que les données du catalogue ; le
57
57
  [protocole du canal de développement](../../dev-channel.md) ; et le
58
58
  [format de l’archive et du catalogue](../../widget-package-v1.md). L’auteur
59
59
  d’un widget n’en a pas besoin.
@@ -37,9 +37,10 @@ la vue en lit les membres :
37
37
  - Un membre accompagné de `offsetMinutes` est un horodatage à mettre en
38
38
  forme avec ce décalage UTC ; voir
39
39
  [heure, dates et nombres](logic.md#heure-dates-et-nombres).
40
- - Un identifiant `asset:` est une image qu’OverCrow détient pour le widget :
41
- liez-le au `src` d’une `image` ou d’un `avatar`, ou dessinez-le sur un
42
- canvas. Ce n’est pas une URL, et ses octets ne peuvent pas être lus.
40
+ - Un identifiant `asset:` est une image que PlayerVox OverCrow détient pour
41
+ le widget : liez-le au `src` d’une `image` ou d’un `avatar`, ou
42
+ dessinez-le sur un canvas. Ce n’est pas une URL, et ses octets ne peuvent
43
+ pas être lus.
43
44
  - Un abonnement dont la forme est « … ou `null` » livre `null` quand il n’y
44
45
  a rien à afficher : pas de jeu actif, pas de lecteur multimédia.
45
46
 
@@ -32,8 +32,8 @@ import {
32
32
  Le SDK est assemblé dans le `logic.js` du widget à l’empaquetage et
33
33
  s’exécute dans la VM du widget ; le charger ailleurs lève une erreur. Les
34
34
  parties inutilisées sont retirées du script assemblé. C’est une commodité,
35
- pas une barrière de sécurité : OverCrow vérifie chaque appel, chaque
36
- paramètre et chaque valeur qui sort de la VM.
35
+ pas une barrière de sécurité : PlayerVox OverCrow vérifie chaque appel,
36
+ chaque paramètre et chaque valeur qui sort de la VM.
37
37
 
38
38
  | Export | Nature | Résumé |
39
39
  | --- | --- | --- |
@@ -69,9 +69,9 @@ const state = initState({ values: [50] as number[] });
69
69
 
70
70
  | Export | Nature | Résumé |
71
71
  | --- | --- | --- |
72
- | `host` | constante | Objet figé dont les membres donnent toujours les dernières valeurs envoyées par OverCrow. |
72
+ | `host` | constante | Objet figé dont les membres donnent toujours les dernières valeurs envoyées par PlayerVox OverCrow. |
73
73
  | `HostData` | interface | Type de `host` : `locale`, `messages`, `theme`, `region`, `scale` (en millièmes), `viewport`, `mode`, `visible`, `options`, `grants`. |
74
- | `onHost(listener)` | fonction | Appelle `listener` avec les noms des membres de `host` qu’OverCrow vient d’envoyer (`options` après un changement dans le menu, `visible` quand le widget est affiché ou masqué, `region`…), avant la réévaluation de la vue. Renvoie `{ cancel() }`. |
74
+ | `onHost(listener)` | fonction | Appelle `listener` avec les noms des membres de `host` que PlayerVox OverCrow vient d’envoyer (`options` après un changement dans le menu, `visible` quand le widget est affiché ou masqué, `region`…), avant la réévaluation de la vue. Renvoie `{ cancel() }`. |
75
75
  | `HostKey` | type | Le nom d’un membre de `HostData`. |
76
76
  | `HostListener` | type | Un écouteur de `onHost`. |
77
77
  | `Viewport` | interface | `{ width, height }`, en pixels logiques. |
@@ -100,8 +100,8 @@ onHost((changed) => {
100
100
 
101
101
  ## Services
102
102
 
103
- Chaque service répond par l’intermédiaire d’OverCrow, qui vérifie à chaque
104
- appel sa permission ou sa capability, ses paramètres et l’action de
103
+ Chaque service répond par l’intermédiaire de PlayerVox OverCrow, qui vérifie
104
+ à chaque appel sa permission ou sa capability, ses paramètres et l’action de
105
105
  l’utilisateur.
106
106
 
107
107
  | Export | Nature | Résumé |
@@ -256,7 +256,7 @@ règles de pluriel ne font pas partie de la version 1.0.
256
256
  ## Types générés
257
257
 
258
258
  Ces types sont générés à partir du schéma des widgets : ils correspondent
259
- donc toujours à ce qu’OverCrow accepte.
259
+ donc toujours à ce que PlayerVox OverCrow accepte.
260
260
 
261
261
  | Export | Résumé |
262
262
  | --- | --- |
@@ -295,7 +295,8 @@ nombre : `MAX_TIMERS`, `MIN_TIMER_INTERVAL_MS`, `MAX_SERVICE_CALLS_IN_FLIGHT`,
295
295
 
296
296
  ## Tests unitaires : `@overcrow/sdk/testing`
297
297
 
298
- Un second point d’entrée, jamais assemblé dans un widget, remplace OverCrow
299
- dans un test unitaire de la logique : `installRuntime()` fournit un temps
300
- virtuel, fait aboutir les appels de service et pousse les valeurs des
301
- abonnements. Voir les [tests unitaires](testing.md#tests-unitaires).
298
+ Un second point d’entrée, jamais assemblé dans un widget, remplace
299
+ PlayerVox OverCrow dans un test unitaire de la logique : `installRuntime()`
300
+ fournit un temps virtuel, fait aboutir les appels de service et pousse les
301
+ valeurs des abonnements. Voir les [tests
302
+ unitaires](testing.md#tests-unitaires).