Flèche d'envoi : la centrer pour de bon

La flèche était décalée de 8 px vers la gauche dans son pavé — mesuré, pas
supposé : centre du bouton 1339, centre du dessin 1331.

La cause n'était pas dans la feuille de style mais dans le JS. syncSendBtn
montrait et cachait les deux boutons avec `style.display = 'inline-block'` ; ce
style INLINE l'emportait sur le `display:flex` de la règle commune. Le bouton
gardait donc sa boîte de 34 px, mais son icône de 18 px se collait au bord
gauche, `justify-content` n'ayant plus rien à centrer. Invisible tant que
l'icône était un glyphe de texte (qui remplit sa ligne), flagrant depuis qu'elle
est un SVG de taille fixe.

L'état « génération en cours » passe désormais par un attribut sur <html>
(data-busy) et c'est la feuille qui décide lequel des deux boutons s'affiche —
comme pour le thème, la barre latérale et le panneau Fichiers. Le style inline
`display:none` du bouton d'arrêt disparaît aussi du gabarit.

Vérifié au pixel dans les deux états : écart nul entre le centre du bouton et
celui du dessin, pour les trois commandes de la barre (dépôt, fichiers, envoi)
comme pour le bouton d'arrêt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LPyFxVHNAN9u5pVzSYMwjd
This commit is contained in:
Claude committed 2026-08-16 19:33:22 +00:00
1 parent fef8cca2c4
commit 9c7f5283cf
4 files changed
+26 -6

No files matched your search

+6 -2
View File
@@ -136,8 +136,12 @@ function labelTokens(el, role, n, firstTs, lastTs){
function setBusy(on){ busy=on; if(!REPLAYING) syncSendBtn(); }
function syncSendBtn(){
const sb=document.getElementById('send');
sb.style.display=busy?'none':'inline-block';
document.getElementById('stop').style.display=busy?'inline-block':'none';
// ⚠️ L'état passe par un ATTRIBUT, jamais par un style inline. Ces deux
// boutons étaient montrés/cachés avec `style.display='inline-block'`, qui
// l'emportait sur le `display:flex` de la feuille : le bouton gardait sa
// boîte de 34 px mais son icône de 18 px se collait à gauche, décalée de 8 px.
// C'est invisible tant que l'icône est un glyphe de texte, flagrant en SVG.
document.documentElement.setAttribute('data-busy', busy ? '1' : '0');
// Tant que le moteur n'a pas fini de charger le modèle, envoyer ne mène à rien :
// on bloque le bouton et l'Entrée, et on le DIT sous le champ. `STATUS_SEEN`
// évite de verrouiller le chat quand /api/status n'a pas encore répondu (ou ne