From 8d4534272729825111c417ea4e16cb3a2c9adf9f Mon Sep 17 00:00:00 2001 From: jeanotx32 Date: Wed, 12 Aug 2026 17:46:44 +0200 Subject: [PATCH] fix : agent full screen system --- README.md | 11 +++++++++++ packages/agent/src/firefox.ts | 31 +++++++++---------------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 2e2bf95..ec9914d 100644 --- a/README.md +++ b/README.md @@ -342,6 +342,17 @@ inspectant la page en direct. Sans effet, mais sans erreur non plus (juste un av dans l'historique), si Stripchat change ce balisage — l'avertissement inclut alors un extrait du menu tel qu'ouvert, pour diagnostiquer sans repasser par les DevTools. +**Refermer le menu ne passe jamais par la touche Échap.** Quand la qualité active est déjà la +meilleure, il n'y a rien à cliquer — le menu se referme en recliquant le bouton qui l'a +ouvert, pas avec Échap comme un premier essai le faisait. Le rappel de plein écran a lieu +avant ce réglage (voir plus haut), et si la touche du lecteur a fait entrer la page dans l'API +plein écran native du navigateur (certains lecteurs mappent leur propre touche de plein écran +dessus), Échap en fait sortir aussitôt — c'est le navigateur qui l'intercepte pour ça, avant +même que la page n'ait son mot à dire, et rien côté site ne peut s'y opposer. Le symptôme : +la fenêtre semblait rétrécir juste après le réglage de qualité, comme un second rappel de +plein écran qui aurait annulé le premier — alors qu'il ne s'agissait que d'un Échap qui +sortait du plein écran natif que la touche du lecteur venait d'activer. + **Le curseur est écarté du lecteur une fois la qualité réglée**, sans quoi la barre de contrôles du lecteur — qui se garde affichée tant qu'une souris réelle la survole — resterait visible en permanence, faute de mouvement ultérieur. Le point de sortie est **calculé, pas diff --git a/packages/agent/src/firefox.ts b/packages/agent/src/firefox.ts index 168a9cc..8ea1324 100644 --- a/packages/agent/src/firefox.ts +++ b/packages/agent/src/firefox.ts @@ -258,8 +258,15 @@ export class FirefoxController { if (!best.active) { await this.click(best.x, best.y); } else { - // Referme le menu sans rien changer. - await this.pressEscape(); + // Referme le menu sans rien changer — en recliquant le bouton qui + // l'a ouvert, pas avec Échap. Le rappel de plein écran a lieu avant + // cet appel (voir l'ordre dans `startCapture`) : si la touche du + // lecteur a fait entrer la page dans l'API plein écran native, + // Échap en sort aussitôt — c'est le navigateur qui l'intercepte pour + // ça, avant même que la page ne la voie passer, et rien côté page ne + // peut s'y opposer. Un second clic sur le même bouton bascule le menu + // fermé sans y toucher. + await this.click(buttonPoint.x, buttonPoint.y); } // Le curseur reste sinon posé sur le bouton ou l'option cliquée : la barre @@ -754,26 +761,6 @@ export class FirefoxController { return JSON.parse(raw) as { x: number; y: number } | null; } - private async pressEscape(): Promise { - await this.send( - 'input.performActions', - { - context: this.context, - actions: [ - { - type: 'key', - id: 'stream-control-keyboard', - actions: [ - { type: 'keyDown', value: webdriverKey('escape') }, - { type: 'keyUp', value: webdriverKey('escape') }, - ], - }, - ], - }, - 5000, - ).catch(() => undefined); - } - private async evaluate(expression: string, userActivation = false): Promise { const response = await this.send<{ type: string;