@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
@@ -25,15 +25,15 @@ Chaque widget tourne derrière deux barrières.
25
25
  capability, un Job Object par widget, et des mitigations de processus
26
26
  qui interdisent le code dynamique et le système de fenêtres.
27
27
 
28
- OverCrow dessine tout lui-même : la VM envoie une description de la vue,
29
- jamais de pixels, et n’exécute jamais de code dans le processus d’OverCrow.
30
- Le survol, le focus, l’état pressé et les transitions sont résolus par
31
- OverCrow : un widget n’observe pas les mouvements du pointeur qu’il n’a pas
32
- demandés par un événement.
33
-
34
- Un dépassement de budget n’arrête que ce widget. OverCrow affiche une
35
- erreur fixe dans son cadre et le relance après 1, 5 puis 15 secondes, trois
36
- fois au plus ; une erreur de paquet ou de protocole attend que
28
+ PlayerVox OverCrow dessine tout lui-même : la VM envoie une description de
29
+ la vue, jamais de pixels, et n’exécute jamais de code dans le processus
30
+ d’OverCrow. Le survol, le focus, l’état pressé et les transitions sont
31
+ résolus par OverCrow : un widget n’observe pas les mouvements du pointeur
32
+ qu’il n’a pas demandés par un événement.
33
+
34
+ Un dépassement de budget n’arrête que ce widget. PlayerVox OverCrow affiche
35
+ une erreur fixe dans son cadre et le relance après 1, 5 puis 15 secondes,
36
+ trois fois au plus ; une erreur de paquet ou de protocole attend que
37
37
  l’utilisateur le réactive. Les chiffres figurent dans les
38
38
  [limites](limits.md#logique).
39
39
 
@@ -44,24 +44,26 @@ déclaration n’accorde rien à elle seule. À l’installation du widget, le
44
44
  Centre de contrôle propose chaque permission cochée, et l’utilisateur peut
45
45
  en décocher. Ensuite, l’utilisateur autorise ou retire chaque permission
46
46
  dans le Centre de contrôle ; en retirer une redémarre le widget sans elle.
47
- OverCrow vérifie de nouveau la permission à chaque appel
47
+ PlayerVox OverCrow vérifie de nouveau la permission à chaque appel
48
48
  d’un service.
49
49
 
50
50
  Quatre permissions ouvrent les services généraux : `network` (des routes
51
- HTTPS exactes, par le broker d’OverCrow), `storage` (un stockage clé-valeur
52
- pour ce seul widget), `clipboardWrite` (l’écriture de texte, pendant une
53
- action de l’utilisateur) et `gameEvents` (des événements de jeu nommés).
54
-
55
- Les capabilities donnent accès à des données et à des actions d’OverCrow et
56
- des comptes de l’utilisateur. Une capability **sensible** révèle des
57
- données personnelles ou le jeu en cours : un widget qui en déclare une ne
58
- peut pas déclarer aussi `network` ni `clipboardWrite`, et son stockage ne
59
- dure que le temps de son processus, pour que ces données ne puissent pas
60
- quitter la machine par le widget.
61
-
62
- Les connexions aux comptes (PlayerVox, Twitch) appartiennent à OverCrow :
63
- la connexion, les codes et les jetons sont affichés et conservés par
64
- OverCrow, et un widget ne reçoit que les données que décrit sa capability.
51
+ HTTPS exactes, par le broker de PlayerVox OverCrow), `storage` (un stockage
52
+ clé-valeur pour ce seul widget), `clipboardWrite` (l’écriture de texte,
53
+ pendant une action de l’utilisateur) et `gameEvents` (des événements de jeu
54
+ nommés).
55
+
56
+ Les capabilities donnent accès à des données et à des actions de
57
+ PlayerVox OverCrow et des comptes de l’utilisateur. Une capability
58
+ **sensible** révèle des données personnelles ou le jeu en cours : un widget
59
+ qui en déclare une ne peut pas déclarer aussi `network` ni `clipboardWrite`,
60
+ et son stockage ne dure que le temps de son processus, pour que ces données
61
+ ne puissent pas quitter la machine par le widget.
62
+
63
+ Les connexions aux comptes (PlayerVox, Twitch) appartiennent à
64
+ PlayerVox OverCrow : la connexion, les codes et les jetons sont affichés et
65
+ conservés par OverCrow, et un widget ne reçoit que les données que décrit sa
66
+ capability.
65
67
 
66
68
  Chaque permission, chaque capability et les services qu’elle ouvre sont
67
69
  décrits dans [services et permissions](services.md). Déclarez le strict
@@ -79,17 +81,17 @@ appelés que pendant que la logique traite une vraie action de l’utilisateur
79
81
  dans le widget : un clic, une touche, une modification, la validation d’un
80
82
  formulaire. Un appel depuis un minuteur, une réponse de service ou une
81
83
  ligne du menu d’options est refusé avec `gesture_required`. Les widgets ne
82
- reçoivent d’entrées qu’en mode interactif d’OverCrow ; en mode passif, les
83
- clics les traversent. Supprimer une note ou une session du journal demande
84
- aussi une confirmation à l’utilisateur, dans une boîte de dialogue dessinée
85
- par OverCrow. Voir
84
+ reçoivent d’entrées qu’en mode interactif de PlayerVox OverCrow ; en mode
85
+ passif, les clics les traversent. Supprimer une note ou une session du
86
+ journal demande aussi une confirmation à l’utilisateur, dans une boîte de
87
+ dialogue dessinée par OverCrow. Voir
86
88
  [les appels qui demandent une action de l’utilisateur](services.md#les-appels-qui-demandent-une-action-de-lutilisateur).
87
89
 
88
90
  Ce que l’utilisateur écrit dans ses notes, dans un avis PlayerVox et dans
89
91
  le chat ne passe jamais par votre logique : un `form` doté d’un `intent` envoie les
90
- valeurs de ses propres champs de texte et curseurs, qu’OverCrow remplit,
91
- modifie et valide lui-même. Votre logique peut les lire, pas les écrire.
92
- Voir
92
+ valeurs de ses propres champs de texte et curseurs, que PlayerVox OverCrow
93
+ remplit, modifie et valide lui-même. Votre logique peut les lire, pas les
94
+ écrire. Voir
93
95
  [les formulaires qui écrivent des données de l’utilisateur](forms.md#les-formulaires-qui-écrivent-des-données-de-lutilisateur).
94
96
 
95
97
  ## Ce qu’un widget ne peut pas faire
@@ -100,10 +102,10 @@ Voir
100
102
  l’exécution ou télécharger du code : le seul code est le `logic.js` relu
101
103
  du paquet.
102
104
  - Voir les autres widgets, leur état, leur stockage ou leurs permissions,
103
- ni la mémoire, la fenêtre ou les entrées du jeu. OverCrow ne s’injecte
104
- jamais dans le jeu.
105
+ ni la mémoire, la fenêtre ou les entrées du jeu. PlayerVox OverCrow ne
106
+ s’injecte jamais dans le jeu.
105
107
  - Dessiner hors de son cadre, couvrir ou imiter le cadre, les menus ou les
106
- confirmations d’OverCrow.
108
+ confirmations de PlayerVox OverCrow.
107
109
  - Lire des jetons de compte, des cookies ou des identifiants.
108
110
  - Lire le presse-papiers.
109
111
  - Écrire des journaux en production : la sortie de `log.*` n’apparaît que
@@ -114,13 +116,13 @@ Voir
114
116
  ## Ce qu’OverCrow vérifie
115
117
 
116
118
  Chaque paquet est vérifié lors de son admission au catalogue, puis chaque
117
- fois qu’OverCrow le démarre : le catalogue signé, le registre de ses
118
- fichiers et la vue compilée doivent concorder, sinon le widget ne démarre
119
- pas. Voir [le paquet](package.md#comment-overcrow-vérifie-un-paquet) et
120
- [publication et revue](publishing.md).
119
+ fois que PlayerVox OverCrow le démarre : le catalogue signé, le registre de
120
+ ses fichiers et la vue compilée doivent concorder, sinon le widget ne
121
+ démarre pas. Voir [le paquet](package.md#comment-overcrow-vérifie-un-paquet)
122
+ et [publication et revue](publishing.md).
121
123
 
122
124
  Une version du catalogue peut être suspendue ou révoquée après sa
123
- publication : OverCrow arrête alors la copie installée. Voir
125
+ publication : PlayerVox OverCrow arrête alors la copie installée. Voir
124
126
  [statuts des versions](publishing.md#statuts-des-versions).
125
127
 
126
128
  ## Signaler une vulnérabilité
@@ -231,7 +231,7 @@ mise à jour.
231
231
 
232
232
  ### `notes.delete`
233
233
 
234
- - **Nature** : appel, à réponse unique ; l’utilisateur le confirme d’abord, dans une boîte de dialogue dessinée par OverCrow
234
+ - **Nature** : appel, à réponse unique ; l’utilisateur le confirme d’abord, dans une boîte de dialogue dessinée par PlayerVox OverCrow
235
235
  - **Exige** : capability `notes.write`
236
236
  - **Quand l’appeler** : Seulement pendant une action de l’utilisateur
237
237
  - **Paramètres** : `note` : texte ≤ 128 octets
@@ -294,7 +294,7 @@ mise à jour.
294
294
 
295
295
  ### `journal.delete`
296
296
 
297
- - **Nature** : appel, à réponse unique ; l’utilisateur le confirme d’abord, dans une boîte de dialogue dessinée par OverCrow
297
+ - **Nature** : appel, à réponse unique ; l’utilisateur le confirme d’abord, dans une boîte de dialogue dessinée par PlayerVox OverCrow
298
298
  - **Exige** : capability `journal.delete`
299
299
  - **Quand l’appeler** : Seulement pendant une action de l’utilisateur
300
300
  - **Paramètres** : `session` : texte ≤ 128 octets
@@ -30,7 +30,7 @@ du [manifeste](manifest.md#permissions) :
30
30
  - quatre **permissions** pour les services généraux : `network`, `storage`,
31
31
  `clipboardWrite` et `gameEvents` ;
32
32
  - des **capabilities**, listées sous `permissions.capabilities`, pour les
33
- données et les actions d’OverCrow lui-même et des comptes de
33
+ données et les actions de PlayerVox OverCrow lui-même et des comptes de
34
34
  l’utilisateur : la fréquence d’images, le lecteur multimédia, les notes de
35
35
  l’utilisateur, la note qu’il donne à un jeu sur PlayerVox, le chat
36
36
  Twitch…
@@ -93,8 +93,8 @@ async function readStored(key: string): Promise<JsonValue | undefined> {
93
93
  }
94
94
  ```
95
95
 
96
- **Un abonnement** prend un écouteur. OverCrow l’appelle aussitôt avec la
97
- valeur courante, puis à chaque nouvelle valeur, jusqu’à ce que vous
96
+ **Un abonnement** prend un écouteur. PlayerVox OverCrow l’appelle aussitôt
97
+ avec la valeur courante, puis à chaque nouvelle valeur, jusqu’à ce que vous
98
98
  l’annuliez avec `cancel()` ou qu’il se termine par un échec. L’écouteur
99
99
  vient en dernier ; un service qui a des paramètres les prend en premier.
100
100
 
@@ -127,9 +127,9 @@ Les services sont regroupés dans des espaces de noms du SDK : `storage`,
127
127
  `journal`, `twitch`). Chaque service figure, avec ses paramètres et son
128
128
  résultat, dans la [référence des services](service-reference.md).
129
129
 
130
- OverCrow vérifie chaque appel à son arrivée, dans cet ordre : la permission
131
- ou la capability, les paramètres, l’action de l’utilisateur quand le
132
- service en demande une, puis le compte quand il en faut un. Les types du
130
+ PlayerVox OverCrow vérifie chaque appel à son arrivée, dans cet ordre : la
131
+ permission ou la capability, les paramètres, l’action de l’utilisateur quand
132
+ le service en demande une, puis le compte quand il en faut un. Les types du
133
133
  SDK vous aident à appeler correctement un service ; ce ne sont pas eux qui
134
134
  font respecter les règles.
135
135
 
@@ -166,20 +166,20 @@ dernière mise à jour.
166
166
  | `gesture_required` | Le service ne peut être appelé que pendant une action de l’utilisateur, et cet appel n’a pas eu lieu pendant le traitement d’une telle action, ou cette action a déjà autorisé un autre appel. |
167
167
  | `not_connected` | Le service a besoin du compte PlayerVox ou Twitch de l’utilisateur, qui n’est pas connecté pour le moment. |
168
168
  | `stale_context` | Ce sur quoi portait l’appel a changé avant la réponse : un autre jeu, un autre compte, un autre lecteur multimédia, un objet supprimé entre-temps. Relisez l’état courant. |
169
- | `unavailable` | La source d’OverCrow pour ces données a échoué, ou ne peut pas agir pour l’instant. Un abonnement qui se termine ainsi peut être relancé plus tard. |
169
+ | `unavailable` | La source de PlayerVox OverCrow pour ces données a échoué, ou ne peut pas agir pour l’instant. Un abonnement qui se termine ainsi peut être relancé plus tard. |
170
170
  | `busy` | Trop d’opérations sont en cours : une confirmation est déjà ouverte, une file ou le budget des réponses réseau est plein, ou le fournisseur demande d’attendre. Réessayez plus tard. |
171
171
  | `cancelled` | L’utilisateur a refusé la confirmation, ou a quitté le mode interactif pendant qu’elle était ouverte. |
172
172
  | `quota_exceeded` | Un quota est atteint : le stockage, les minuteurs, les notes, les chaînes favorites. |
173
173
  | `unsupported` | La cible ne sait pas le faire : un lecteur multimédia qui ne propose pas la commande, par exemple. |
174
- | `url_invalid` | `http.fetch` : l’URL n’est pas une URL HTTPS absolue qu’OverCrow accepte. |
174
+ | `url_invalid` | `http.fetch` : l’URL n’est pas une URL HTTPS absolue que PlayerVox OverCrow accepte. |
175
175
  | `resolve_failed` | `http.fetch` : le nom d’hôte n’a pas pu être résolu. |
176
176
  | `address_denied` | `http.fetch` : le nom d’hôte se résout en une adresse locale, privée ou non publique. |
177
- | `too_many_addresses` | `http.fetch` : le nom d’hôte se résout en plus d’adresses qu’OverCrow n’en accepte. |
177
+ | `too_many_addresses` | `http.fetch` : le nom d’hôte se résout en plus d’adresses que PlayerVox OverCrow n’en accepte. |
178
178
  | `peer_mismatch` | `http.fetch` : le serveur qui a répondu n’est pas à l’une des adresses résolues et vérifiées. |
179
- | `redirect_denied` | `http.fetch` : le serveur a répondu par une redirection. OverCrow n’en suit aucune : déclarez et demandez l’URL finale. |
180
- | `encoding_denied` | `http.fetch` : la réponse est compressée ou encodée d’une façon qu’OverCrow n’accepte pas, ou son corps ne se décode pas comme `as` le demande (JSON ou texte invalide). |
181
- | `content_type_denied` | `http.fetch` : le type de média de la réponse n’est pas de ceux qu’OverCrow accepte pour cette requête. |
182
- | `response_metadata_limit` | `http.fetch` : la ligne d’état ou les en-têtes de la réponse sont mal formés ou dépassent les limites d’OverCrow. |
179
+ | `redirect_denied` | `http.fetch` : le serveur a répondu par une redirection. PlayerVox OverCrow n’en suit aucune : déclarez et demandez l’URL finale. |
180
+ | `encoding_denied` | `http.fetch` : la réponse est compressée ou encodée d’une façon que PlayerVox OverCrow n’accepte pas, ou son corps ne se décode pas comme `as` le demande (JSON ou texte invalide). |
181
+ | `content_type_denied` | `http.fetch` : le type de média de la réponse n’est pas de ceux que PlayerVox OverCrow accepte pour cette requête. |
182
+ | `response_metadata_limit` | `http.fetch` : la ligne d’état ou les en-têtes de la réponse sont mal formés ou dépassent les limites de PlayerVox OverCrow. |
183
183
  | `request_body_limit` | `http.fetch` : le corps de la requête dépasse 256 Kio. |
184
184
  | `response_body_limit` | `http.fetch` : le corps de la réponse dépasse la limite de la règle réseau (`maxResponseBytes`, ou 1 Mio sans lui et pour `as: "image"`). |
185
185
  | `image_invalid` | `http.fetch` avec `as: "image"` : la réponse n’est pas une image PNG, JPEG ou WebP dans les limites des images. |
@@ -193,8 +193,8 @@ Trois habitudes couvrent la plupart des cas :
193
193
  logique ; l’utilisateur voit « Prévisions indisponibles », pas
194
194
  `transport_failed`.
195
195
  - **Réabonnez-vous quand un abonnement s’est terminé.** Une source
196
- d’OverCrow peut échouer pendant que le widget tourne (la session du
197
- lecteur multimédia, par exemple) : l’abonnement se termine avec
196
+ de PlayerVox OverCrow peut échouer pendant que le widget tourne (la
197
+ session du lecteur multimédia, par exemple) : l’abonnement se termine avec
198
198
  `unavailable`. Réabonnez-vous quelques secondes plus tard avec
199
199
  `timers.after` ; OverCrow relance la source pour le nouvel abonnement. Le
200
200
  widget Média attend cinq secondes :
@@ -241,11 +241,12 @@ est refusé avec `gesture_required`.
241
241
  - Une action de l’utilisateur autorise un seul appel protégé. Appelez le
242
242
  service directement dans le gestionnaire, pas après un `await` sur autre
243
243
  chose.
244
- - Les widgets ne reçoivent d’entrées qu’en mode interactif d’OverCrow : un
245
- appel protégé ne peut donc avoir lieu que dans ce mode.
244
+ - Les widgets ne reçoivent d’entrées qu’en mode interactif de
245
+ PlayerVox OverCrow : un appel protégé ne peut donc avoir lieu que dans ce
246
+ mode.
246
247
  - `notes.delete` et `journal.delete` demandent en plus une confirmation à
247
- l’utilisateur, dans une boîte de dialogue dessinée par OverCrow ; une
248
- confirmation refusée donne `cancelled`.
248
+ l’utilisateur, dans une boîte de dialogue dessinée par PlayerVox OverCrow
249
+ ; une confirmation refusée donne `cancelled`.
249
250
 
250
251
  Les tableaux ci-dessous indiquent, pour chaque service, quand l’appeler.
251
252
 
@@ -338,8 +339,8 @@ Chaque paramètre de chemin ou de requête porte une contrainte :
338
339
  | `string` | `{ maxLength }` | Paramètres de requête seulement ; tout texte sans caractère de contrôle ; `maxLength` de 1 à 256 octets. |
339
340
  <!-- /generated:parameter-constraints -->
340
341
 
341
- La requête sort par le broker d’OverCrow, jamais du processus du widget.
342
- Le broker :
342
+ La requête sort par le broker de PlayerVox OverCrow, jamais du processus du
343
+ widget. Le broker :
343
344
 
344
345
  - refuse toute URL qu’aucune règle n’autorise (`permission_denied`), avant
345
346
  toute requête DNS ;
@@ -376,8 +377,8 @@ aussitôt avec `busy`.
376
377
 
377
378
  ### Stockage
378
379
 
379
- `storage` est un stockage clé-valeur qu’OverCrow tient pour votre seul
380
- widget : `storage.get({ key })`, `storage.set({ key, value })`,
380
+ `storage` est un stockage clé-valeur que PlayerVox OverCrow tient pour votre
381
+ seul widget : `storage.get({ key })`, `storage.set({ key, value })`,
381
382
  `storage.remove({ key })` et `storage.keys()`. Une valeur est n’importe
382
383
  quelle valeur JSON. Il n’y a aucun accès aux fichiers.
383
384
 
@@ -418,8 +419,8 @@ le presse-papiers.
418
419
  ```
419
420
 
420
421
  Le texte que l’utilisateur sélectionne dans un élément `text` doté de
421
- l’attribut `selectable` est copié par OverCrow lui-même, sans aucune
422
- permission.
422
+ l’attribut `selectable` est copié par PlayerVox OverCrow lui-même, sans
423
+ aucune permission.
423
424
 
424
425
  ### Événements de jeu
425
426
 
@@ -431,8 +432,8 @@ que l’un d’eux se produit.
431
432
  ## Capabilities
432
433
 
433
434
  Une capability donne accès à des données ou à des actions que détient
434
- OverCrow : les ressources qu’utilise le jeu, le lecteur multimédia, les
435
- notes de l’utilisateur, ses comptes PlayerVox et Twitch.
435
+ PlayerVox OverCrow : les ressources qu’utilise le jeu, le lecteur
436
+ multimédia, les notes de l’utilisateur, ses comptes PlayerVox et Twitch.
436
437
 
437
438
  <!-- generated:capability-list -->
438
439
  | Capability | Sensible | Compte | Signification |
@@ -513,12 +514,12 @@ capability sensible, faites deux widgets.
513
514
  ### Comptes
514
515
 
515
516
  Certaines capabilities ont besoin du compte PlayerVox ou Twitch de
516
- l’utilisateur. La connexion appartient à OverCrow : c’est lui qui dessine
517
- l’écran de connexion, conserve les jetons et affiche son propre panneau
518
- par-dessus le widget tant que le compte est déconnecté. Un widget ne voit
519
- jamais un jeton ; il ne reçoit que les données que décrit sa capability, et
520
- ses appels échouent avec `not_connected` tant que le compte n’est pas
521
- connecté.
517
+ l’utilisateur. La connexion appartient à PlayerVox OverCrow : c’est lui qui
518
+ dessine l’écran de connexion, conserve les jetons et affiche son propre
519
+ panneau par-dessus le widget tant que le compte est déconnecté. Un widget ne
520
+ voit jamais un jeton ; il ne reçoit que les données que décrit sa
521
+ capability, et ses appels échouent avec `not_connected` tant que le compte
522
+ n’est pas connecté.
522
523
 
523
524
  ### Des données qui changent
524
525
 
@@ -268,5 +268,5 @@ Lucide 1.34.0, 1777 icônes.
268
268
  Tout autre nom est refusé. Le type `IconName` du SDK les liste tous : un nom
269
269
  erroné dans la logique est donc une erreur TypeScript. Au sein de l’API v1,
270
270
  le jeu d’icônes peut grandir, mais il ne perd ni ne renomme jamais une
271
- icône. OverCrow dessine les icônes lui-même : un widget n’embarque aucune
272
- police d’icônes.
271
+ icône. PlayerVox OverCrow dessine les icônes lui-même : un widget n’embarque
272
+ aucune police d’icônes.
@@ -82,11 +82,11 @@ une espace (descendant) ou par `>` (enfant).
82
82
  }
83
83
  ```
84
84
 
85
- Les états sont résolus par OverCrow, pas par votre logique : `:hover` et
86
- `:active` suivent le pointeur, `:focus` le focus clavier, `:disabled`
87
- l’attribut `disabled`, et `:checked` l’état d’un `toggle` ou d’une
88
- `checkbox`. OverCrow ne signale pas au widget les mouvements du pointeur :
89
- un effet de survol ne lui coûte rien.
85
+ Les états sont résolus par PlayerVox OverCrow, pas par votre logique :
86
+ `:hover` et `:active` suivent le pointeur, `:focus` le focus clavier,
87
+ `:disabled` l’attribut `disabled`, et `:checked` l’état d’un `toggle` ou
88
+ d’une `checkbox`. OverCrow ne signale pas au widget les mouvements du
89
+ pointeur : un effet de survol ne lui coûte rien.
90
90
 
91
91
  Quand deux règles définissent la même propriété, le sélecteur le plus
92
92
  spécifique l’emporte : les classes et les états comptent d’abord, puis les
@@ -140,7 +140,8 @@ rebours place le temps au milieu de son anneau :
140
140
  }
141
141
  ```
142
142
 
143
- Un widget ne peut pas dessiner hors de son cadre : OverCrow le rogne.
143
+ Un widget ne peut pas dessiner hors de son cadre : PlayerVox OverCrow le
144
+ rogne.
144
145
 
145
146
  ## Valeurs
146
147
 
@@ -151,18 +152,19 @@ forme `#rrggbb`, `#rrggbbaa` ou `rgb(r g b / a)`, les durées en `ms` ou en
151
152
  `var(--name)`. La notation exacte de chaque sorte de valeur figure dans
152
153
  [valeurs](style-properties.md#valeurs).
153
154
 
154
- Les longueurs sont des pixels logiques : OverCrow les multiplie par
155
- l’échelle du contenu de l’utilisateur (de 50 % à 175 %) et par la densité de
156
- l’écran. `12px` a donc la même taille physique sur tous les écrans. Les
157
- propriétés raccourcies se développent comme en CSS : une à quatre valeurs
158
- pour les côtés et les coins, une ou deux pour les espacements.
155
+ Les longueurs sont des pixels logiques : PlayerVox OverCrow les multiplie
156
+ par l’échelle du contenu de l’utilisateur (de 50 % à 175 %) et par la
157
+ densité de l’écran. `12px` a donc la même taille physique sur tous les
158
+ écrans. Les propriétés raccourcies se développent comme en CSS : une à
159
+ quatre valeurs pour les côtés et les coins, une ou deux pour les
160
+ espacements.
159
161
 
160
162
  ## Tokens du design system
161
163
 
162
- Un token est une valeur du design system d’OverCrow, écrite `var(--name)`.
163
- Les tokens de couleur changent avec le thème de l’utilisateur, clair ou
164
- sombre : un widget stylé avec des tokens suit le thème sans aucun code.
165
- Préférez-les aux couleurs littérales.
164
+ Un token est une valeur du design system de PlayerVox OverCrow, écrite
165
+ `var(--name)`. Les tokens de couleur changent avec le thème de
166
+ l’utilisateur, clair ou sombre : un widget stylé avec des tokens suit le
167
+ thème sans aucun code. Préférez-les aux couleurs littérales.
166
168
 
167
169
  <!-- source: docs/content/examples/countdown/style.ocss -->
168
170
  ```css
@@ -185,8 +187,9 @@ pas déclarer ses propres propriétés personnalisées. Tous les tokens sont
185
187
  listés dans
186
188
  [tokens du design system](style-properties.md#tokens-du-design-system).
187
189
 
188
- OverCrow dessine le panneau derrière le widget (`--color-surface-panel`),
189
- son cadre et son ombre : partez d’un fond transparent.
190
+ PlayerVox OverCrow dessine le panneau derrière le widget
191
+ (`--color-surface-panel`), son cadre et son ombre : partez d’un fond
192
+ transparent.
190
193
 
191
194
  ## Texte
192
195
 
@@ -196,8 +199,8 @@ sur un conteneur pour styler ce qu’il contient.
196
199
 
197
200
  - Il existe trois familles de police : `ui` (Noto Sans, la valeur par
198
201
  défaut), `mono` (Noto Sans Mono, pour les valeurs) et `display` (Space
199
- Grotesk, pour les grades et les scores). OverCrow les embarque ; les
200
- polices du système ne sont jamais utilisées : un widget a donc le même
202
+ Grotesk, pour les grades et les scores). PlayerVox OverCrow les embarque ;
203
+ les polices du système ne sont jamais utilisées : un widget a donc le même
201
204
  aspect sur toutes les machines.
202
205
  - `font-variant-numeric: tabular-nums` donne la même largeur à tous les
203
206
  chiffres : un nombre qui change ne déplace pas ses voisins.
@@ -237,9 +240,9 @@ un bloc `@keyframes` de la même feuille.
237
240
  Seules les propriétés qui modifient le dessin, et non la mise en page,
238
241
  peuvent être animées : `opacity`, `color`, `background-color`,
239
242
  `border-color` et `transform`. Un bloc `@keyframes` ne contient que
240
- celles-là. OverCrow exécute l’animation lui-même : aucun minuteur ni aucun
241
- code du widget ne tourne pendant qu’elle joue, et rien n’est redessiné quand
242
- rien ne change. Un widget masqué ne s’anime pas.
243
+ celles-là. PlayerVox OverCrow exécute l’animation lui-même : aucun minuteur
244
+ ni aucun code du widget ne tourne pendant qu’elle joue, et rien n’est
245
+ redessiné quand rien ne change. Un widget masqué ne s’anime pas.
243
246
 
244
247
  `@keyframes` est la seule règle @. Son nom est un identifiant qui n’est pas
245
248
  un mot-clé d’animation, unique dans la feuille.
@@ -6,10 +6,10 @@ bureau, sans jeu et sans compte :
6
6
  - **Les tests unitaires de la logique**, dans Node.js, avec
7
7
  `@overcrow/sdk/testing` : rapides, pour les fonctions de `logic.ts`.
8
8
  - **Les scénarios**, joués par `overcrow-widget test` dans le **runtime
9
- headless** d’OverCrow : la vraie VM, le vrai style, la vraie mise en page
10
- et le vrai moteur de rendu, les vérifications d’OverCrow lui-même, des
11
- services simulés, un temps virtuel et des images de référence. Ce qui
12
- passe là est ce que l’overlay affiche.
9
+ headless** de PlayerVox OverCrow : la vraie VM, le vrai style, la vraie
10
+ mise en page et le vrai moteur de rendu, les vérifications d’OverCrow
11
+ lui-même, des services simulés, un temps virtuel et des images de
12
+ référence. Ce qui passe là est ce que l’overlay affiche.
13
13
 
14
14
  <!-- source: templates/counter/tests/example.scenario.json -->
15
15
  ```json
@@ -37,11 +37,11 @@ image.
37
37
  projet créé par `overcrow-widget init`, sinon
38
38
  `npm install --save-dev --save-exact @overcrow/sdk@1.0.0`.
39
39
 
40
- `installRuntime()` met en place une doublure d’OverCrow avant l’import de la
41
- logique : les appels de service renvoient des promesses que votre test
42
- résout ou rejette, les abonnements reçoivent les valeurs que vous poussez,
43
- les minuteurs se déclenchent quand vous avancez le temps, et `Date.now()`
44
- est virtuel.
40
+ `installRuntime()` met en place une doublure de PlayerVox OverCrow avant
41
+ l’import de la logique : les appels de service renvoient des promesses que
42
+ votre test résout ou rejette, les abonnements reçoivent les valeurs que vous
43
+ poussez, les minuteurs se déclenchent quand vous avancez le temps, et
44
+ `Date.now()` est virtuel.
45
45
 
46
46
  <!-- source: widgets/clock/tests/logic.test.mjs -->
47
47
  ```js
@@ -77,7 +77,7 @@ test("one timer at the next local minute, then each minute", () => {
77
77
  | --- | --- |
78
78
  | `installRuntime({ now, host })` | Installe la doublure ; `Date.now()` renvoie le temps virtuel. Une seule à la fois. |
79
79
  | `now`, `advance(ms)` | Le temps virtuel ; `advance` déclenche, dans l’ordre, les minuteurs arrivés à échéance (un minuteur répétitif se réarme) et renvoie leur nombre. |
80
- | `setHost(changes)` | Modifie `host` comme le fait OverCrow : `region`, `locale`, `options`… |
80
+ | `setHost(changes)` | Modifie `host` comme le fait PlayerVox OverCrow : `region`, `locale`, `options`… |
81
81
  | `calls`, `lastCall(service)` | Chaque appel de service, avec `resolve(value)` et `reject(code)`. |
82
82
  | `push(service, value)`, `fail(service, code)` | La prochaine mise à jour, ou l’échec final, des abonnements à un service. |
83
83
  | `menu(row)` | Choisit une ligne `action` du menu d’options. |
@@ -85,10 +85,10 @@ test("one timer at the next local minute, then each minute", () => {
85
85
  | `uninstall()` | Retire la doublure et restaure `Date.now`. |
86
86
 
87
87
  La doublure n’exécute que votre logique : elle n’applique pas les règles
88
- d’OverCrow (les autorisations accordées, les comptes, la règle de l’action
89
- de l’utilisateur) et ne rend rien. Les scénarios, eux, le font. Les widgets
90
- de référence compilent leur `logic.ts` avec un petit chargeur avant de
91
- l’importer :
88
+ de PlayerVox OverCrow (les autorisations accordées, les comptes, la règle de
89
+ l’action de l’utilisateur) et ne rend rien. Les scénarios, eux, le font. Les
90
+ widgets de référence compilent leur `logic.ts` avec un petit chargeur avant
91
+ de l’importer :
92
92
 
93
93
  <!-- source: widgets/clock/tests/load-logic.mjs -->
94
94
  ```js
@@ -149,13 +149,13 @@ Tout est facultatif.
149
149
  | `size` | la taille préférée du manifeste | `{ width, height }` du cadre, en pixels logiques ; le `fit` du manifeste s’applique quand même. |
150
150
  | `mode` | `passive` | `interactive` donne les entrées au widget. |
151
151
  | `visible` | `true` | Masqué, le widget ne reçoit aucun déclenchement de minuteur. |
152
- | `frame` | `false` | `true` capture le cadre d’OverCrow autour du contenu. |
152
+ | `frame` | `false` | `true` capture le cadre de PlayerVox OverCrow autour du contenu. |
153
153
  | `background` | la couleur de panneau du thème | `#rrggbb` derrière le widget. |
154
154
  | `region` | `us`, ordre de date de la langue | `{ numberFormat, dateOrder }`. |
155
155
  | `zone` | UTC | `{ offsetMinutes, transitions: [{ at, offsetMinutes }] }` : le décalage UTC de l’utilisateur, et les instants où il change. |
156
156
  | `startAt` | 2026-01-01T00:00:00Z | Le temps virtuel auquel le widget démarre, en millisecondes Unix. |
157
157
  | `options` | les valeurs par défaut des lignes | Les valeurs des lignes du menu d’options. |
158
- | `grants` | `"declared"` | Ou la liste exacte de ce que l’utilisateur a accordé (`storage`, `network`, `fps.read`…) : OverCrow refuse le reste. |
158
+ | `grants` | `"declared"` | Ou la liste exacte de ce que l’utilisateur a accordé (`storage`, `network`, `fps.read`…) : PlayerVox OverCrow refuse le reste. |
159
159
  | `accounts` | connectés | `{ playervox, twitch }`, chacun valant `connected`, `disconnected`, `pending`, `expired` ou `offline`. |
160
160
  | `features` | toutes | Les sources de données de la machine, pour `requires`. |
161
161
  | `storage` | vide | Le stockage du widget avant son démarrage. |
@@ -180,15 +180,15 @@ Tout est facultatif.
180
180
  },
181
181
  ```
182
182
 
183
- Avec un compte qui n’est pas `connected`, OverCrow dessine son propre
184
- panneau de compte par-dessus le widget, comme il le fait pour
183
+ Avec un compte qui n’est pas `connected`, PlayerVox OverCrow dessine son
184
+ propre panneau de compte par-dessus le widget, comme il le fait pour
185
185
  l’utilisateur ; capturez-le avec `frame`.
186
186
 
187
187
  ### `fixtures`
188
188
 
189
189
  Les fixtures remplacent la provenance des données, jamais les vérifications
190
- d’OverCrow. Un appel franchit d’abord les mêmes contrôles que dans
191
- l’overlay : autorisations accordées, paramètres, règle de l’action de
190
+ de PlayerVox OverCrow. Un appel franchit d’abord les mêmes contrôles que
191
+ dans l’overlay : autorisations accordées, paramètres, règle de l’action de
192
192
  l’utilisateur et compte. C’est seulement ensuite qu’une fixture lui répond.
193
193
  Chaque valeur doit avoir la forme du [résultat](result-shapes.md) du
194
194
  service : une valeur qui ne l’a pas est une erreur du scénario, pas du
@@ -199,7 +199,7 @@ widget.
199
199
  | `subscriptions` | La valeur d’un abonnement à son démarrage ; les étapes `publish` envoient les suivantes. |
200
200
  | `calls` | Les réponses aux appels d’un service, dans l’ordre : `{ "value": … }` ou `{ "error": code }`. Un appel au-delà est une erreur du scénario. |
201
201
  | `http` | Les réponses aux requêtes `http.fetch`, chacune utilisée une fois : `{ "request": { method, url }, "response": { status, contentType, body } }` (ou `bodyBase64`), ou `{ "request": …, "error": code }`. Les règles réseau du manifeste s’appliquent d’abord, et les limites de réponse s’appliquent comme dans l’overlay. |
202
- | `confirmations` | `accept` ou `cancel`, dans l’ordre, pour la confirmation par OverCrow de `notes.delete` et `journal.delete`. |
202
+ | `confirmations` | `accept` ou `cancel`, dans l’ordre, pour la confirmation par PlayerVox OverCrow de `notes.delete` et `journal.delete`. |
203
203
  | `intents` | La réponse à chaque [intent d’écriture](forms.md#les-formulaires-qui-écrivent-des-données-de-lutilisateur) envoyé, dans l’ordre : `"accepted"`, `{ "error": code }` ou `"pending"`. |
204
204
 
205
205
  <!-- source: widgets/stopwatch/tests/errors.scenario.json -->
@@ -275,7 +275,7 @@ widget.
275
275
  ]
276
276
  ```
277
277
 
278
- Les codes qu’OverCrow attribue lui-même (`permission_denied`,
278
+ Les codes que PlayerVox OverCrow attribue lui-même (`permission_denied`,
279
279
  `gesture_required`, `not_connected`, `invalid_request`) ne peuvent pas
280
280
  s’écrire dans une fixture : obtenez-les par la voie réelle, avec `grants`,
281
281
  `accounts`, un appel hors d’une action de l’utilisateur ou des paramètres
@@ -284,11 +284,11 @@ d’OverCrow et n’ont besoin d’aucune fixture.
284
284
 
285
285
  ### `assets`
286
286
 
287
- Des images qu’une fixture remet au widget, comme OverCrow lui remet la
288
- pochette d’un média ou une emote du chat : `{ "<name>": "<path>" }`, 8 au
289
- plus, chacune étant un PNG ou un JPEG du projet (`tests/assets/cover.png`).
290
- Là où un résultat contient un identifiant d’image, la fixture écrit
291
- `"fixture:<name>"`.
287
+ Des images qu’une fixture remet au widget, comme PlayerVox OverCrow lui
288
+ remet la pochette d’un média ou une emote du chat :
289
+ `{ "<name>": "<path>" }`, 8 au plus, chacune étant un PNG ou un JPEG du
290
+ projet (`tests/assets/cover.png`). Là où un résultat contient un identifiant
291
+ d’image, la fixture écrit `"fixture:<name>"`.
292
292
 
293
293
  ### `steps`
294
294
 
@@ -324,7 +324,7 @@ qu’il a reçu et plus rien n’est en cours. Il n’y a aucune attente réelle
324
324
  | `state` | `starting`, `running`, `restarting`, `failed`, `refused` ou `stopped`. |
325
325
  | `fault` | La dernière faute de la VM du widget, ou `none`. |
326
326
  | `clipboard` | Le dernier texte que le widget a écrit dans le presse-papiers. |
327
- | `intents` | Exactement ces intents d’écriture ont été envoyés depuis la vérification `intents` précédente, dans l’ordre : `{ intent, fields?, outcome? }`. `fields` contient les valeurs exactes que le formulaire d’OverCrow a envoyées. |
327
+ | `intents` | Exactement ces intents d’écriture ont été envoyés depuis la vérification `intents` précédente, dans l’ordre : `{ intent, fields?, outcome? }`. `fields` contient les valeurs exactes que le formulaire de PlayerVox OverCrow a envoyées. |
328
328
 
329
329
  <!-- source: templates/chart/tests/example.scenario.json -->
330
330
  ```json
@@ -378,8 +378,8 @@ mêmes octets, sous Linux comme sous Windows.
378
378
  - Le temps est virtuel : `Date.now()` et `new Date()` renvoient le temps du
379
379
  scénario, et les minuteurs se déclenchent quand le scénario l’avance.
380
380
  - `Math.random()` est initialisé avec une graine fixe.
381
- - Le texte utilise les polices fournies avec OverCrow, jamais celles du
382
- système.
381
+ - Le texte utilise les polices fournies avec PlayerVox OverCrow, jamais
382
+ celles du système.
383
383
  - Le rendu ne dépend pas de la carte graphique.
384
384
 
385
385
  Cela ne vaut que pour le runtime de test : dans l’overlay, le temps et le
@@ -387,23 +387,23 @@ hasard sont réels.
387
387
 
388
388
  ## Le runtime headless
389
389
 
390
- `overcrow-widget-headless` est le code d’OverCrow lui-même, sans fenêtre :
391
- il valide le paquet comme le fait l’overlay et exécute la logique du widget
392
- dans le même sandbox. `overcrow-widget test` exécute la version que la CLI
393
- épingle, 0.7.1-beta.1, et affiche sa version et son SHA-256. Sans le
394
- sandbox du système d’exploitation, le runtime refuse de s’exécuter et le
390
+ `overcrow-widget-headless` est le code de PlayerVox OverCrow lui-même, sans
391
+ fenêtre : il valide le paquet comme le fait l’overlay et exécute la logique
392
+ du widget dans le même sandbox. `overcrow-widget test` exécute la version
393
+ que la CLI épingle, 0.7.2-beta.1, et affiche sa version et son SHA-256. Sans
394
+ le sandbox du système d’exploitation, le runtime refuse de s’exécuter et le
395
395
  dit ; la commande de test se termine alors avec le code 2.
396
396
 
397
397
  La première fois que `test` a besoin du runtime, il le télécharge : dans
398
- le ZIP des outils créateurs de votre plateforme, dans la release OverCrow
399
- qui l’a publié, il ne garde que le runtime, et seulement si son SHA-256
400
- est celui que la CLI épingle. Le ZIP n’est pas conservé. Le runtime reste
401
- ensuite dans le cache de la CLI :
398
+ le ZIP des outils créateurs de votre plateforme, dans la release
399
+ PlayerVox OverCrow qui l’a publié, il ne garde que le runtime, et seulement
400
+ si son SHA-256 est celui que la CLI épingle. Le ZIP n’est pas conservé. Le
401
+ runtime reste ensuite dans le cache de la CLI :
402
402
 
403
403
  | Plateforme | Chemin |
404
404
  | --- | --- |
405
- | Linux | `~/.cache/overcrow-widget/runtime/0.7.1-beta.1/` (`$XDG_CACHE_HOME` au lieu de `~/.cache` s’il est défini) |
406
- | Windows | `%LOCALAPPDATA%\overcrow-widget\runtime\0.7.1-beta.1\` |
405
+ | Linux | `~/.cache/overcrow-widget/runtime/0.7.2-beta.1/` (`$XDG_CACHE_HOME` au lieu de `~/.cache` s’il est défini) |
406
+ | Windows | `%LOCALAPPDATA%\overcrow-widget\runtime\0.7.2-beta.1\` |
407
407
 
408
408
  Pour travailler hors ligne, placez-y vous-même le runtime du ZIP des
409
409
  outils créateurs (exécutable sous Linux) : `test` le trouve et ne
@@ -413,5 +413,5 @@ défini dans `HTTPS_PROXY` est utilisé.
413
413
  La CLI vérifie son SHA-256 avant chaque exécution. Si un téléchargement
414
414
  échoue, rien n’est conservé et `test` propose de réessayer ou de passer
415
415
  `--runtime`. `--runtime <path>` exécute un autre runtime à la place, par
416
- exemple compilé depuis OverCrow ; la sortie dit alors que ce n’est pas le
417
- runtime épinglé.
416
+ exemple compilé depuis PlayerVox OverCrow ; la sortie dit alors que ce n’est
417
+ pas le runtime épinglé.