# Ce qui change, version par version

Ce fichier est **le journal des versions d'OverScript**. Il répond à une seule question, celle que
se pose quelqu'un devant une mise à jour : **qu'est-ce que je gagne à l'installer ?**

## ⚠ Les quatre règles de ce fichier

1. **Le numéro qui fait autorité vit dans `package.json`**, et nulle part ailleurs. Tout le reste —
   le nom du paquet, le désinstalleur, la notice — en dérive. Les rares endroits qui le **recopient**
   sont gardés par `bancs/version.test.js`, qui rougit dès qu'une copie s'éloigne.
2. **Une version publiée ne se réécrit pas.** On ajoute au-dessus, on ne corrige pas en dessous —
   quelqu'un a peut-être déjà lu l'ancienne entrée depuis son client.
3. **On écrit ce que la personne CONSTATE**, pas ce qu'on a modifié. « Le MOTD s'affiche en entier »
   se lit ; « correction du parseur de `372` » ne se lit pas. Le détail technique vit dans
   `OverScript.md` et dans l'historique git.
4. 🔴 **LES CORRECTIONS SE REGROUPENT AVANT D'ÊTRE PUBLIÉES** — tranché par SerVuS le 03/09/2026,
   après **quatre versions sorties dans la même journée**. Chacune corrigeait un défaut réel, et
   chacune valait une notification de mise à jour pour tous ceux qui l'avaient installée.

   Ce qui vient d'être corrigé va donc sous **« Prochaine version — non publiée »**, juste en
   dessous. Publier, c'est **renommer cette section** en `## X.Y.Z` et monter `package.json`.

   ⚠⚠ **RENOMMER, ET RIEN D'AUTRE. Ne PAS rouvrir une section d'attente vide dans la foulée** :
   ce fichier est **déposé sur le site** à chaque publication, et `Web/tests/test-overscript.php`
   — sur la machine qui sert — **refuse un journal publié qui porte encore ce titre**. Essayé le
   03/09/2026 : la section rouverte est partie chez les gens et le banc a rougi. Elle se recrée
   d'elle-même à la correction suivante, en écrivant simplement son titre au-dessus.

   ⚠ L'exception, et elle est étroite : un défaut qui **empêche de se connecter, expose un secret
   ou fait perdre des données** ne se regroupe pas. Dans ce cas, le dire plutôt que de trancher
   seul.

⚠ **Ce fichier PART CHEZ LES GENS.** Il est déposé sur le site à chaque publication —
`Web/.run/overscript-changelog.md` — et rendu sur `?p=versions&pour=overscript`, la page où atterrit
le bouton de mise à jour. Une entrée écrite ici se lit donc ailleurs que sur ce poste.

⚠⚠ **Cette phrase a menti jusqu'au 26/08/2026.** Elle affirmait déjà que le journal « est publié
avec chaque version » — **il ne l'était nulle part** : le site n'y avait aucun accès. Une
affirmation d'état, dans un fichier qui part chez les utilisateurs, et qu'aucun banc ne pouvait
attraper. Le dépôt est réel depuis.

---

## 0.6.47
- **Au démarrage, une fenêtre « Connexion » confirme l'identification et le passage opérateur.** Quand
  « S'identifier automatiquement » ou l'opérateur automatique est coché, une petite fenêtre suit les
  deux étapes en direct : en cours, puis réussi, refusé, bloqué ou pas de réponse. Tout est vert : un
  compte à rebours s'affiche et elle se ferme seule au bout de 30 secondes. Une étape échoue : elle
  reste, en alerte, et dit pourquoi — « Encore 2 essais avant le blocage du pseudo », ou « bloqué
  jusqu'à 21:45 » avec le temps qui reste — avec les boutons « Mot de passe oublié » (la page du
  site), « Corriger le mot de passe » et « Réessayer » (grisé tant que le pseudo est bloqué). Le
  verdict vient du réseau lui-même (le message d'OverNick destiné à OverScript, à défaut le mode +r,
  et les réponses du serveur à l'OPER), jamais d'une phrase lue à l'écran. Les lignes habituelles
  restent dans l'onglet du serveur.
- **Après un mot de passe refusé, OverScript n'insiste plus tout seul.** Quand OverNick refuse le mot de
  passe, bloque ou suspend le pseudo, l'identification automatique s'arrête : ni l'invitation
  « identifiez-vous », ni une reconnexion ne renvoient le même mot de passe (trois erreurs bloquent le
  pseudo). Un OPER automatique refusé n'est plus renvoyé à chaque reconnexion non plus. `/identify`,
  `/oper` ou « Réessayer » reprennent la main.
- **Fenêtre « Consoles » : le port proposé suit le robot choisi.** « Ajouter une console » proposait
  3335 (la console d'IriX) même pour OverCore : choisir « OverCore » propose maintenant 3336, revenir
  à « Eggdrop » repropose 3335. Un port que vous avez tapé n'est jamais remplacé, et un port
  laissé vide prend celui qui est proposé.
- **Fenêtre « Consoles » : OverCore d'abord, plus de renvoi vers IriX.** IriX s'arrête : « Ajouter
  une console » propose maintenant OverCore d'office (127.0.0.1:3336, le mot de passe de votre pseudo).
  Le choix « IriX (Eggdrop) » devient « Eggdrop (robot tiers) », pour la console d'un autre robot.
  Les textes ne renvoient plus vers `/msg IriX consolepass` ni vers l'outil d'IriX pour l'empreinte,
  et changer le mot de passe d'un Eggdrop ne promet plus qu'« OverCore le suivra dans l'heure ».
- **`/dcc chat` vers un service du réseau dit où trouver sa console.** `/dcc chat OverCore` (ou
  `/ctcp OverCore chat`) répondait seulement « DCC refusé : OverCore n'est pas identifié ». Quand le
  serveur désigne le pseudo comme un service du réseau, le refus dit maintenant que sa console
  s'ouvre par Menu → Consoles (celle d'OverCore : 127.0.0.1:3336). Le DCC reste refusé comme avant.
- **Copier des messages d'un salon donne une ligne par message.** Sélectionner plusieurs lignes puis
  copier-coller mettait l'heure, le pseudo et le texte chacun sur sa propre ligne. Chaque ligne se
  colle maintenant comme elle s'affiche : « 13:10 [ karim ] : bonjour », « 13:11 * lea fait coucou »,
  « 13:12 karim a quitté le salon » ; une sélection qui commence ou finit au milieu d'une ligne ne
  copie que ce qui est surligné. Rien ne change pour le champ de saisie.
- **Sur Overtchat, la réidentification automatique suit le message d'OverNick destiné à OverScript,
  plus sa phrase.** Quand OverNick demande de s'identifier (« Le pseudo … est enregistré.
  Identifiez-vous »), OverScript renvoyait le mot de passe en reconnaissant cette phrase. Une fois
  inscrit auprès du réseau, il ne réagit plus qu'au message machine qu'OverNick lui envoie en même
  temps, après avoir vérifié qu'il vient bien du service du réseau et qu'il vise votre pseudo. Les
  mêmes garde-fous qu'avant s'appliquent : la case « S'identifier automatiquement », le mot de passe
  retenu pour ce pseudo, rien après un refus, pas deux envois de suite. Sur un autre réseau, rien ne
  change : la phrase garde son rôle.
- **Sur Overtchat, une fenêtre de proposition de grade ne s'ouvre plus sur une phrase.** Une fois
  OverScript inscrit auprès du réseau, seul le message machine du réseau ouvre la fenêtre « Accepter /
  Refuser / Plus tard » ; le texte de la proposition reste affiché dans l'onglet du service, comme
  avant. Sur un autre réseau, ou avant l'inscription, le texte ouvre la fenêtre comme avant.

## 0.6.46
- **`/msg OverNick ACCESS #salon` tapé à la main affiche enfin la réponse.** OverScript cachait toute
  réponse « ACCESS … » du robot du réseau — c'est elle qui allume le menu du clic droit. Depuis la
  0.6.45, le robot étant OverNick, la réponse à votre propre commande disparaissait. Seule se tait
  maintenant la réponse à une question posée par le menu lui-même.
- **Consoles : le mot de passe de la console d'OverCore est celui de votre pseudo.** La fenêtre de
  connexion le dit (elle renvoyait à `/msg IriX consolepass`), et accepte un mot de passe de plus de
  64 caractères. Un Eggdrop garde son mot de passe de partyline.

## 0.6.45
- **Sur Overtchat, le robot du réseau est OverNick, sans rien régler.** IriX, le robot Eggdrop, quitte
  le réseau : c'est OverNick qui tient désormais les accès de salon (`access`) — mêmes réponses, autre
  nom. Un profil Overtchat dont « Robot du réseau » est vide, ou dit encore « IriX », s'adresse à
  OverNick : le menu du clic droit et la fenêtre de proposition de grade continuent de marcher sans
  retoucher le profil (« IriX » y est lu comme OverNick, parce qu'IriX ne répond plus à ces
  commandes). Sur un autre réseau, rien ne change : un champ vide reste « aucun robot », et ce que
  vous y avez écrit — IriX compris — est respecté.
- **L'authentification automatique auprès du robot n'a plus d'objet sur Overtchat.** OverNick n'a pas
  de session « auth » : s'identifier (« S'identifier automatiquement », ou `/identify`) suffit, et le
  mot de passe est le même. La case « S'authentifier auprès du robot automatiquement » cochée sur un
  profil Overtchat ne fait plus rien — une ligne d'information le dit à la connexion, sans envoyer le
  mot de passe ; `/auth` et `/deauth` le disent aussi. Les trois restent utiles pour un robot tiers
  d'un autre réseau.

## 0.6.44
- **Une proposition de grade de salon s'ouvre dans une fenêtre à boutons.** Quand quelqu'un vous
  nomme (owner, op, halfop, voice) sur un salon, OverScript ouvre une petite fenêtre à part :
  « Accepter », « Refuser », « Plus tard ». Accepter fait tout seul ce qu'il fallait taper : si vous
  n'êtes pas identifié, OverScript vous identifie d'abord auprès du service des pseudos (avec le mot
  de passe retenu dans le coffre, et seulement auprès de ce service vérifié), attend la
  confirmation, puis répond au robot du salon — et non au service qui a porté l'avis. Le résultat
  s'affiche dans la fenêtre ; un grade op ou owner une fois accepté, un bouton « Prendre l'op sur #salon » vous donne
  l'op (ou vous propose d'abord de rejoindre le salon). Refuser demande une simple confirmation.
  Sans mot de passe retenu, la fenêtre le dit et indique la commande à taper. Une proposition mise
  « Plus tard » ne revient pas toute seule : « Menu » → « Propositions de grade » la rouvre. La
  fenêtre ne s’ouvre que si l’avis vient d’un service du réseau vérifié, et que le robot du réseau
  est renseigné dans « Réglages du serveur » — une imitation envoyée par n'importe qui reste un
  simple texte — et les avis restent affichés comme avant.
- **OverScript se fait connaître du réseau pour recevoir ses fenêtres directement.** Une dizaine de
  secondes après la connexion (et après un changement de pseudo), OverScript s'annonce au service
  « OverCore » du réseau — seulement si ce pseudo est bien un service du réseau, vérifié auprès du
  serveur ; l'annonce ne contient que la version d'OverScript et ce qu'il sait afficher, aucun mot
  de passe. Une fois inscrit, les propositions de grade arrivent par un message codé que seul un
  service vérifié peut envoyer : la fenêtre s'ouvre alors même si « Robot du réseau » n'est pas
  renseigné, et une même proposition reçue en code et en texte n'ouvre qu'une fenêtre. Ces messages
  codés ne s'affichent pas ; le texte, lui, reste affiché comme avant. Le nom du service se règle
  dans « Réglages du serveur » → « Registre OverScript » (vide : OverCore). Sur un réseau qui n'a
  pas ce service, rien ne change.

## 0.6.43
- **Un texte collé de plusieurs lignes part ligne par ligne.** Jusqu'ici, coller trois lignes
  envoyait un seul message où elles étaient entassées, séparées par des espaces. Désormais chaque
  ligne fait un message, dans l'ordre ; les lignes vides sont ignorées, une ligne trop longue est
  coupée proprement (jamais au milieu d'un caractère accentué ou d'un emoji), et l'envoi est espacé
  pour que le serveur ne vous déconnecte pas pour « flood ». Au-delà de 5 lignes, OverScript
  demande d'abord — « Envoyer » ou « Annuler » ; ce nombre se règle dans « Menu ». Une ligne collée
  qui commence par « / » n'est ni exécutée ni envoyée : elle est écartée et OverScript le dit — une
  commande se tape (un « /msg … IDENTIFY motdepasse » copié d'une page d'aide ne doit pas partir dans
  un salon). Un collage d'une seule ligne se comporte comme avant.
- **Le symbole de genre de quelqu'un qui arrive après vous s'affiche.** Il manquait à côté du
  pseudo de toute personne entrée dans le salon après vous — dont celle qui revient après avoir été
  déconnectée (KILL) — jusqu'à un `/names` à la main : seul l'âge/sexe/ville déclaré par ceux déjà
  présents à votre arrivée était lu. OverScript le demande maintenant à chaque arrivée, sans bruit,
  et sans ralentir ce que vous écrivez (une rentrée en masse après une coupure ne fait qu'une
  demande par salon).
- **« Journal des versions » dans le menu Aide.** Ce qui change, version par version, s'ouvre
  quand vous voulez — plus seulement après une mise à jour.
- **Les adresses dans les messages se cliquent.** Le lien du site que porte une annonce du réseau
  diffusée dans un salon (et toute adresse http/https écrite par quelqu'un) s'ouvre dans votre
  navigateur habituel d'un clic — jamais dans OverScript, et jamais autre chose qu'une page web :
  seules les adresses http et https reçues dans un message peuvent être ouvertes.
- **La ligne « IriX répond sur les accès de salon… » ne s'affiche plus** dans la fenêtre de
  discussion : elle va au journal. C'est du protocole entre le client et le robot, pas une nouvelle.

## 0.6.42
- **Après un redémarrage du serveur, tout revient tout seul.** OverScript se reconnecte souvent
  avant le service des pseudos et avant le robot. L'identification attendait déjà leur retour, mais
  la demande d'opérateur partait aussitôt — avant d'être identifié, donc parfois refusée — et
  l'authentification auprès du robot s'arrêtait sur « authentification automatique ABANDONNÉE ».
  Désormais, quand l'identification aboutit enfin, l'opérateur et l'authentification auprès du
  robot sont refaits, une seule fois — sauf si vous êtes déjà opérateur ou déjà authentifié. Et le
  robot absent est attendu comme le service : « nouvel essai dans 15 s (1/4) », jusqu'à quatre
  fois, sans jamais envoyer le mot de passe à un absent.
- **Le service qui revient juste après l'abandon est servi.** Après quatre essais sans réponse,
  sa demande d'identification arrivée dans les 30 secondes était ignorée sans un mot ; vous
  restiez non identifié. Elle est maintenant servie.
- **`/consoles` ne frappe plus en clair à la porte chiffrée.** La console chiffrée d'IriX (port
  3335) et les consoles que vous avez retenues dans la fenêtre « Consoles » sont interrogées en
  chiffré. Elles n'apparaissent plus comme des « ports silencieux » assortis d'un conseil faux
  (« faites-lui son hello ») : elles sont annoncées comme consoles chiffrées — avec leur nom quand
  le robot a eu le temps de le donner — et renvoient au bouton « Consoles », le seul chemin qui
  les ouvre (`/console` parle en clair).
- **Un nouvel installateur, aux couleurs d'OverScript.** Au centre, l'anneau du logo se remplit
  avec la vraie progression de l'installation, le pourcentage en son milieu, et l'étape en cours
  dessous : « Préparation… », « Installation des fichiers… », « Création des raccourcis… ».
- **Vous voyez où il s'installe avant qu'il ne commence.** Le dossier proposé est celui de votre
  installation actuelle s'il y en a une ; « Modifier… » en choisit un autre. « Pour moi seulement »
  ou « Pour tous les utilisateurs » est déjà réglé comme votre installation existante. Rien ne
  s'installe avant « Installer », et « Annuler » ne laisse aucune trace.
- **Une seule demande d'autorisation de Windows**, et seulement pour une installation « pour tous
  les utilisateurs ». « Pour moi seulement » n'en demande aucune.
- **La fin se dit clairement** : « OverScript est installé », avec la case « Lancer OverScript »
  déjà cochée. Si l'installation n'aboutit pas, un écran le dit en français, avec la raison quand
  elle est connue (par exemple OverScript resté ouvert) et le code d'erreur — l'installateur ne
  disparaît plus sans un mot.
- **La mise à jour automatique montre le même anneau** : OverScript se ferme, l'anneau se
  remplit, puis OverScript se rouvre tout seul, sans aucune question — sauf quand l'installateur
  ne peut pas savoir laquelle mettre à jour (deux installations d'OverScript sur l'ordinateur, ou
  aucune) : il vous montre alors son premier écran. L'installateur est en français, comme
  OverScript.

## 0.6.41
- **`/topic` seul affiche vraiment le sujet.** Depuis la 0.6.40 il ne l'effaçait plus, mais la
  réponse du serveur ne servait qu'à remettre à jour la barre du salon : rien ne s'écrivait. Il
  dit maintenant « Sujet de #salon : … », puis qui l'a posé et quand, ou « Aucun sujet sur
  #salon. » Le sujet reçu en entrant dans un salon, lui, reste discret.
- **Le menu d'un pseudo ne propose plus une K-line qui ne vise personne.** « K-line » et
  « G-line » écrivaient « `/kline toto` », que le serveur comprend comme une machine nommée
  « toto ». Le menu écrit maintenant « `/kline *@` » et vous dit de compléter l'hôte de la
  personne (lisible par `/whois toto`), puis le motif.

## 0.6.40
- **Les motifs de plusieurs mots partent en entier.** « `/away je reviens` » vous disait absent
  pour « je », « `/kick toto règles du salon` » expulsait pour « règles » : le serveur ne gardait
  que le premier mot. C'est réparé pour `/away`, `/kick`, `/kill`, `/kline`, `/gline`, `/zline`,
  `/qline`, `/wallops`, `/globops` et `/topic`, et pour la commande que propose l'alerte de
  modération (qui nomme désormais le salon).
- **`/quit je pars` envoie votre motif.** Il partait toujours « OverScript ».
- **`/topic` seul affiche le sujet** au lieu de l'effacer. `/topic #autre texte` change le sujet de
  #autre, et non plus celui du salon ouvert ; pour effacer un sujet, `/topic :`.
- **`/names` seul liste enfin le salon ouvert.** La 0.6.23 l'annonçait ; il partait pourtant sans
  salon, et rien ne s'affichait.
- **`/invite toto` fonctionne** : il partait à l'envers (salon, puis pseudo) et le serveur
  répondait « pas de tel pseudo ». `/invite #salon toto` est remis dans l'ordre.
- **`/aide` (ou `/commandes`) liste les commandes d'OverScript**, une ligne chacune, dans la
  fenêtre ouverte ; `/aide kick` n'en montre qu'une. `/help` reste l'aide du serveur.
- La notice d'installation est remise à jour : toutes les commandes, `/server -w` pour une seconde
  fenêtre, les paquets Linux.

## 0.6.39
- **Les messages se lisent « [ pseudo ] : texte »**, le texte un peu plus éloigné du pseudo. Les
  avis du serveur et les actions (`/me`) gardent leur présentation ; un copier-coller du salon
  reste propre (les crochets sont un décor, pas du texte).
- **Les changements de mode sont mis en valeur** : en vert quand un mode est posé (`+o`, `+v`…),
  en rouge quand il est retiré, avec une barre à gauche — on voit d'un coup d'œil qui reçoit ou
  perd la main.
- **Vos grades se disent en clair** : « vous êtes maintenant opérateur de #salon », « vous n'êtes
  plus porteur de la voix de #salon »… pour propriétaire, administrateur, opérateur,
  demi-opérateur et voix. Et quitter le statut d'opérateur IRC (`/mode VotrePseudo -o`) se
  confirme enfin : « vous n'êtes plus opérateur IRC ».
- Le menu d'un pseudo (clic droit dans la liste) ne se referme plus tout seul quand un message
  arrive dans la conversation.

## 0.6.38
- `/mode <pseudo> …` vise enfin le pseudo : « `/mode SerVuS -o` », tapé dans un salon pour retirer
  son propre statut d'opérateur, partait sur le salon — le serveur prenait les lettres du pseudo
  pour des modes du salon. Un `/mode` qui commence par `+` ou `-` vise toujours le salon ouvert.

---

## 0.6.37
### La mise à jour se voit pendant qu'elle s'installe

- **Plus d'écran vide entre « installer » et le retour d'OverScript.** La mise à jour s'installait
  en silence : OverScript se fermait, puis plus rien pendant de longues secondes. La fenêtre
  d'installation s'affiche désormais, à l'icône d'OverScript, avec sa barre de progression, puis
  OverScript se rouvre tout seul, comme avant.
- Rien de plus à faire de votre côté : aucune question « pour qui installer ? », aucun bouton
  « Terminer » à cliquer — l'installation reprend celle qui existe. Si vous aviez installé
  OverScript « pour tous les utilisateurs », Windows demande toujours son autorisation, une seule
  fois, comme aujourd'hui.
- La fenêtre parle la langue de votre Windows.
- ⚠ Elle apparaît dès l'installation de cette version-ci, lancée depuis la 0.6.36.

### Renforcement de sécurité (revue de la checklist Electron, 30/09/2026)

- Rien de visible à l'usage : les fenêtres refusent mieux de sortir du site (navigations ET
  redirections), la caméra et le micro des Rencontres ne sont accordés qu'à la page qui les demande
  vraiment, les liens externes ne s'ouvrent qu'en http(s), les canaux internes sensibles (coffre,
  mise à jour, rapport, fond d'écran) n'obéissent qu'aux fenêtres d'OverScript, le paquet de mise à
  jour se télécharge dans un dossier privé, un faux coffre Linux (« basic_text ») est refusé plutôt
  que d'écrire en faux chiffré, les pages portent une politique de contenu plus stricte, quatre
  commandes de services de plus sont masquées dans le journal, et les « fusibles » Electron sont
  grillés à l'empaquetage.
- Electron passe de 43.4.0 à 43.7.6, le dernier correctif de sa branche (avis de sécurité Electron
  de 2026, dont la sandbox non héritée et le cache du préchargement).

### Les mises à jour sont signées

- **OverScript n'installe plus une mise à jour qu'il ne peut pas authentifier.** Chaque version
  publiée est désormais signée par l'éditeur, et OverScript vérifie cette signature avant de
  télécharger, puis encore juste avant de lancer l'installation. Un site détourné ou piraté ne
  peut donc plus vous faire installer autre chose qu'une vraie version d'OverScript, ni une
  ancienne version à la place d'une nouvelle.
- Si la vérification échoue, rien n'est installé : le bandeau l'indique (« Mise à jour non
  vérifiable ») et vous propose la page de téléchargement du site, comme avant.
- ⚠ Cette protection vaut à partir de **cette** version : la mise à jour qui l'apporte s'installe
  encore comme d'habitude depuis la 0.6.36.

<!-- ⚠⚠ EN ATTENTE DE DÉCISION DE SerVuS — revue de sécurité du 30/09/2026.
     (D7, l'authenticité des mises à jour, n'y est plus : tranché le 30/09 par SerVuS — signature
     Ed25519 détachée, entrée « Les mises à jour sont signées » ci-dessus ; D7a à D7i verts.
     ⚠ AVANT DE PUBLIER : la clé publique `src/main/cle-maj.pub` doit être posée — sans elle,
     cette version refuserait TOUTE installation automatique ; voir OverScript.md.)
  · D10 — FAIT le 30/09 (feu vert de SerVuS) : Electron 43.7.6 ; npm test D10 vert, rendu 832/0,
    coffre 90/0. ⚠ npm n'a PAS lancé le script d'installation d'electron (politique allowScripts) :
    le binaire a été posé par `node node_modules/electron/install.js` (vérifié par checksums.json).
    À refaire après tout `npm install` qui change sa version.
-->

---

## 0.6.36
### Corrigé

- **Une notice ne vous « appelle » plus**, même venue d'un service : quand OverNick vous demande de
  vous identifier en citant votre pseudo, « HL : OverNick vous a appelé » ne s'affiche plus. Les
  robots et services répondent par notice ; seul un message ou un `/me` qui cite votre pseudo
  compte comme un appel.
- Le masque des notices serveur s'affiche en français à la connexion — « masque des notices
  serveur : +clkose » — au lieu de la ligne brute « +clkose Server notice mask ».
- **Les accents sont revenus** dans de nombreux textes affichés : « certificat NON vérifié »,
  « identification automatique ABANDONNÉE », « le mot de passe n'a PAS été envoyé », « les suivants
  sont masqués », les modes des salons, le cadre « Statut » (« état », « réseau », « système »…),
  les boutons « Arrêter », « Modération », « Mise à Jour ». Au passage, « mot de passé » et « se
  connecté depuis » redeviennent « mot de passe » et « se connecte depuis ».
- **Plus de fausse alerte « OverScript prend … Mo à lui seul » après une reconnexion.** Revenir
  sur le serveur (salons, modes, historique) fait monter la mémoire quelques minutes, puis elle
  redescend d'elle-même : OverScript vous conseillait pourtant de le relancer. L'alerte ne part
  désormais que si la mémoire reste au-dessus d'un gigaoctet pendant plus de 5 minutes d'affilée —
  et elle peut revenir plus tard si la mémoire, après être vraiment redescendue, remonte pour de bon.

## 0.6.35

### Nouveau

- **`/sajoin`, `/sapart` et `/sanick` fonctionnent** (réservés aux IRCop) : quand le service
  **OverHub** est présent sur le réseau, OverScript lui passe la commande — `/sanick` sous son nom
  de service, SVSNICK — et OverHub vous répond (« rejoint — constaté », ou son refus). La ligne
  « → OverHub : … » vous montre ce qui est parti. Sans OverHub, le message d'aide reste.

### Corrigé

- **L'identification automatique ne renonce plus quand le service revient après vous.** Après un
  redémarrage du serveur, OverScript se reconnecte souvent avant le service de pseudos : il
  abandonnait aussitôt. Il réessaie désormais pendant environ quatre minutes (15 s, 30 s, 1 min,
  2 min) et le dit à l'écran ; le mot de passe ne part toujours que vers un **vrai** service
  réseau. Et si le service vous demande de vous identifier en revenant, la demande est servie.
- Une notice **du serveur** qui cite votre pseudo (message de connexion, avis d'opérateur…)
  n'affiche plus « vous a appelé » ni de pastille : seul un appel venu d'une **personne** ou d'un
  **service** compte.

## 0.6.34

### Changer le mot de passe de console, depuis OverScript

- Dans la fenêtre **Consoles**, une fois connecté à la console d'**IriX** : **Changer le mot de
  passe**. Vous le tapez **une seule fois**, dans un champ masqué qui se vide aussitôt — il n'est
  jamais affiché, ni à l'écran ni au journal.
- OverScript attend la **confirmation du robot** avant de dire « changé » ; un refus ou un silence
  est dit tel quel, jamais présenté comme un succès. Si le mot de passe était retenu dans le coffre,
  il y est remplacé — seulement après cette confirmation.
- 8 à 30 caractères, sans espace : le robot ne garderait sinon que le premier mot, ou couperait le
  reste, sans rien dire. OverCore suit le nouveau mot de passe dans l'heure.

## 0.6.33

### Chercher une mise à jour, tout de suite

- **Aide → Rechercher une mise à jour** cherche une nouvelle version sans attendre le contrôle
  automatique (au démarrage, puis toutes les heures), et **dit toujours le résultat** : vous êtes à
  jour, le site ne répond pas, ou le bandeau de la nouvelle version — qui revient même si vous
  aviez cliqué « Plus tard ».
- Une mise à jour **déjà téléchargée** n'est plus oubliée à la vérification suivante : le bouton
  « Installer » ne répond plus « aucun paquet téléchargé » tant que le site annonce le même paquet.

### Vos mots de passe restent cachés

- `/msg IriX consolepass <mot de passe>` (le mot de passe de la console d'IriX) n'apparaît plus en
  clair : ni à l'écran, ni dans le journal d'OverScript. Tapé par erreur dans un salon, il est
  retenu au lieu de partir.
- Dans la fenêtre **Consoles**, une commande qui porte un mot de passe (`.chpass`, `.newpass`)
  s'affiche masquée sous la saisie — elle part quand même intacte vers le robot.

## 0.6.32

### La fenêtre « Consoles »

- **Menu → Consoles** ouvre une fenêtre à part, aux couleurs du réseau, pour se connecter à la
  **console d'un robot** par une connexion **chiffrée** : **IriX** (sa partyline chiffrée) ou
  **OverCore** — on choisit le robot en ajoutant la console.
- Une **barre suit les vraies étapes** — connexion, chiffrement, robot, identification, admis — et
  s'arrête sur celle qui échoue, en disant pourquoi.
- À la première connexion, l'**empreinte du certificat** du robot vous est montrée pour la
  reconnaître ; si elle change un jour, rien n'est envoyé et vous êtes prévenu.
- Le mot de passe de console (celui de `/msg IriX consolepass`) est demandé **une seule fois**,
  masqué, et peut être **retenu chiffré** dans le coffre — il n'est plus jamais tapé ni affiché.
- Les commandes du robot s'affichent en boutons : un clic les prépare dans la saisie. IriX ne
  publie pas de liste de commandes : la fenêtre le dit, au lieu d'en inventer une.
- Fermer la fenêtre ferme les consoles et efface leur historique.

### La liste des salons a sa propre fenêtre

- `/list` ouvre maintenant une **vraie fenêtre**, « Salons du réseau », que l'on déplace
  librement — sur un autre écran si l'on veut — au lieu d'un panneau coincé dans la fenêtre du
  chat. Filtre, double-clic pour rejoindre, et la liste reste ouverte pour le salon suivant.

### Une barre de menu qui ne passe plus devant tout

- La barre de menu restait affichée **par-dessus** les panneaux (Connexion, Aide, réglages d'un
  salon…) : ces panneaux la recouvrent désormais, comme ils le doivent.
- **Couleur Texte**, **Mise à jour** et **Modération** ont rejoint le menu **Menu**, avec les
  autres réglages. Ils restent des interrupteurs On/Off.

### L'avis de maintenance dans la bannière

- Quand une maintenance du réseau est annoncée, elle s'affiche **en tête de la bannière**, en
  couleur d'alerte, avec l'heure prévue et le compte à rebours — elle ne se perd plus dans un
  onglet privé. Elle disparaît d'elle-même quand la maintenance est terminée.

### Répondre en privé marche du premier coup

- Une conversation privée ouverte par `/msg`, par un clic sur un pseudo ou par le menu du clic
  droit pouvait répondre « pas connecté » alors que le réseau allait très bien : elle n'était
  rattachée à aucun réseau. Elle prend désormais celui de la fenêtre d'où vous l'ouvrez.

## 0.6.31

### Joindre une capture d'écran à un signalement

- Dans **Aide → Signaler un problème**, le bouton **« Joindre une capture… »** ajoute une image
  (JPEG, PNG ou WEBP, **1 Mo au plus**). Son aperçu s'affiche avant l'envoi, et **« Retirer »**
  l'enlève.
- ⚠ **La capture part telle quelle** : vérifiez qu'elle ne montre ni conversation privée, ni mot
  de passe. Le site en efface les informations cachées (appareil, position) et ne la montre qu'à
  l'équipe.
- Si le site refuse l'image, le rapport arrive quand même, et le client vous dit pourquoi l'image
  n'est pas passée. Si le site ne répond pas, le rapport est gardé pour plus tard **sans** la
  capture — elle n'est jamais enregistrée sur votre disque.

### Votre fond d'écran revient au démarrage, et le journal se rouvre

- Depuis la 0.6.25, l'image de fond choisie **n'était pas remise au démarrage** tant que la fenêtre
  des journaux n'avait pas été ouverte une fois, et cette fenêtre **refusait de s'ouvrir une
  deuxième fois**. Les deux marchent de nouveau.

### La bannière montre enfin TOUTES les annonces

- Elle ne changeait de texte qu'au rythme où le robot diffuse dans les salons — **une fois par
  demi-heure** : on ne voyait qu'une annonce. Désormais **un texte neuf à chaque passage complet**
  du défilement, tiré au hasard et jamais deux fois de suite le même. Survolée, elle s'arrête, et
  le suivant attend.
- Si votre système demande de réduire les animations, le texte reste immobile et change **toutes
  les 20 secondes**.

### La liste des salons (/list) ne se fait plus couper, et se déplace

- Elle passait **sous la barre d'outils**, qui la coupait en deux : elle passe maintenant devant.
- **Saisissez-la par sa barre de titre** pour la déplacer où vous voulez ; elle reste dans la
  fenêtre. **Un double-clic** sur la barre la remet à sa place. Le panneau d'informations se
  déplace de la même façon.

### Les liens de la bannière s'ouvrent d'un clic

- Une annonce qui propose une adresse la montre **soulignée** : un clic l'ouvre dans votre
  navigateur (la bannière s'arrête déjà quand on la survole).
- Par sécurité, OverScript n'ouvre **que les liens envoyés par le site du réseau**, en http ou
  https : une page piégée ne peut pas s'en servir pour ouvrir autre chose.

### La correction automatique, si vous la voulez

- **Menu → « Correction : On/Off »** (éteinte au départ) : les fautes de frappe sont corrigées
  **avant l'envoi**, avec le dictionnaire de votre système, et chaque correction est **dite**
  (« corrigé : bonjoru → bonjour »).
- Elle reste **prudente** : jamais un pseudo présent, un salon, une commande, une adresse, un mot
  à chiffres, un sigle ou un nom propre ; seulement un mot très proche de la suggestion. Et
  **jamais** une ligne qui porte un mot de passe.
- Elle ne corrige que **dans les salons** : les conversations privées, où l'on parle aux robots
  et aux services avec des mots de passe, restent telles que vous les tapez.

### Un capteur de connexion, et un anti-flood des messages privés

- OverScript **mesure la latence** jusqu'au serveur toutes les 30 secondes et l'affiche dans le
  cadre **Statut** (« 120 ms — stable », « 1 800 ms — lente »…).
- Quand la connexion devient **instable** (plus de 3 secondes, ou pas de réponse), vous êtes
  **prévenu** qu'elle risque de tomber — et prévenu aussi quand elle se rétablit.
- Quelqu'un qui vous **inonde en privé** (plus de dix messages en dix secondes) voit ses
  messages suivants **masqués** ; OverScript le dit, puis dit **combien** ont été masqués quand
  c'est fini. Seul lui est touché ; les services, le robot du réseau, votre bouncer et les salons
  ne sont pas concernés.

### La partyline se nomme, et répond à votre demande

- Le groupe où s'affichent les consoles et les conversations DCC s'appelle désormais
  **« Partyline »**, et plus « Serveur », qui faisait croire à une connexion IRC.
- Quand **vous** demandez une conversation (`/ctcp <pseudo> CHAT`), la réponse de ce pseudo est
  **acceptée d'office** pendant une minute : plus besoin de taper `/dcc accepter`. Une offre que
  vous n'avez pas demandée attend toujours votre accord — et aussi une réponse qui viendrait de
  votre propre poste ou d'un réseau privé : elle vous est montrée, pour que vous décidiez.
- `/console <port>` sans surnom prend **votre pseudo**, et le dit.

### Signaler ou proposer, en un clic

- Le menu **Aide** propose désormais **« Signaler un problème »** et **« Proposer une
  amélioration »** : le formulaire s'ouvre directement, le bon choix coché, prêt à écrire.

## 0.6.30

### Les annonces du réseau, dans une bannière qui défile

- Entre la barre de mémoire et la barre d'outils, une **bannière** montre les annonces du réseau
  auquel vous êtes connecté — celles qu'IriX diffuse — **hors de la conversation** : elles ne se
  mêlent plus aux messages.
- **Deux bandes au plus.** La bande **réseau** est là dès que le site du réseau a répondu ; sans
  annonce, elle montre son message d'accueil. La bande **salon** montre les annonces du salon que
  vous regardez, et **se replie** quand il n'en a pas (ou quand l'onglet n'est pas un salon).
- Un texte à la fois, **tiré au hasard** (jamais deux fois de suite le même), changé au rythme
  choisi par le réseau. Le texte **défile** ; **passez la souris dessus pour l'arrêter** et le lire.
  Si votre système demande de **réduire les animations**, il reste immobile, coupé proprement.
- **Menu → « Bannière : On/Off »** la masque, et le choix est **retenu** d'un lancement à l'autre.
  Masquée, elle ne demande plus rien au site du réseau.
- Un réseau **sans site** n'affiche **aucune** bannière : rien n'est inventé.

### Le fond des salons s'anime

- Les **ondes** du fond des salons **ondulent** doucement, leurs couleurs **glissent** du turquoise
  au bleu puis au violet, et un **trait lumineux** court le long de chacune.
- Tout reste **discret, derrière le texte** : la lecture n'en est pas gênée.
- Si votre système demande de **réduire les animations**, le fond reste **immobile**.

### « Rencontres » devient un menu

- Le bouton **Rencontres** de la barre d'outils s'ouvre maintenant comme **Menu** et **Aide** : il
  propose **« Rencontres »** (les profils et la visio, comme avant) et **« Mon profil »** — votre
  page du **trombinoscope** sur le site.
- « Mon profil » **quitte le Menu**, qui garde Connexion, Fond et la bannière.

## 0.6.29

> **La conversation DCC CHAT arrive — et rien ne s'ouvre sans votre accord.** Une offre reçue
> s'annonce et attend votre réponse ; les transferts de fichiers sont refusés, et l'écran le dit.

### Parler en DCC CHAT

- **Qui peut** : il faut être **identifié** (pseudo enregistré). Entre deux personnes, le DCC est
  réservé aux **IRCops** — il suffit que l'un des deux le soit — et l'autre doit être identifié
  aussi. Vers un **robot**, c'est le robot qui décide de l'accès. Un refus dit toujours pourquoi.
- **Proposer** : `/dcc chat <pseudo>`. Vers une personne, l'offre part d'abord en **mode passif**
  (c'est elle qui écoute : rien à ouvrir chez vous) ; sans réponse après vingt secondes, une offre
  **directe** suit si vous avez réglé votre adresse publique. L'offre s'éteint au bout de soixante
  secondes en le disant ; fermer l'onglet la retire aussitôt.
- **Depuis Internet** : `/dcc reglage <adresse publique> <premier port>` — puis ouvrez ce port et
  les deux suivants (TCP) vers votre ordinateur dans votre box. `/dcc reglage` seul affiche le
  réglage, `/dcc reglage effacer` le retire. Sans lui, le DCC marche en passif, et vers les robots
  de votre propre machine.
- **Recevoir** : une offre s'annonce avec le pseudo qui la fait et d'où elle vient (ce poste, un
  réseau privé, Internet — dans ce dernier cas, l'accepter fait connaître votre adresse). Répondez
  par `/dcc accepter <pseudo>` ou `/dcc refuser <pseudo>` ; sans réponse, elle expire au bout de
  soixante secondes. Rien ne se connecte tant que vous n'avez pas accepté.
- **Avec un robot Eggdrop** : il demande son mot de passe, et une petite boîte masquée s'ouvre —
  comme pour `/console`. Le mot de passe ne part que si le robot l'a demandé, et ne se relit nulle
  part.
- **Quand le robot refuse, vous le savez tout de suite** : si IriX vous refuse sa console (liste
  noire, aucun accès accordé par le propriétaire, hôte associé à un autre compte…), le motif
  s'affiche dans l'onglet de l'offre, et l'offre est retirée aussitôt au lieu d'attendre soixante
  secondes. S'il vous accorde l'accès mais que vous n'avez pas encore de mot de passe de console,
  l'onglet vous dit où le choisir : sur le panel du site (page « Accès à la partyline »), ou par
  `/msg IriX consolepass <mot de passe>`. S'il vient d'enregistrer votre hôte, il vous invite à
  refaire `/dcc chat IriX`. Seul le robot à qui vous avez proposé la conversation peut ainsi la
  retirer ; ses messages restent affichés comme d'habitude.

### Les transferts de fichiers sont refusés — et c'est dit

Une offre d'envoi de fichier (DCC SEND, et ses variantes) est **refusée**, avec un message qui la
nomme. OverScript ne reçoit aucun fichier par DCC : c'est un choix, pas un oubli.

### Une console qui déborde se ferme

Un correspondant qui enverrait du texte sans jamais passer à la ligne faisait grossir la mémoire du
client sans limite. Au-delà de 16 000 caractères, la conversation se ferme, en le disant.

### Les symboles des pseudos suivent les changements de grade

Le `@`, le `%`, le `+`… à côté d'un pseudo se mettent à jour quand un grade est donné ou retiré —
par une personne, par un service comme IriX ou par le serveur lui-même —, sans avoir à taper
`/names`. Une personne qui rejoint un salon où elle figure déjà garde son grade, et une coupure au
milieu d'une liste de présents ne mélange plus l'ancienne liste à la nouvelle. Si l'affichage d'une
conversation échoue, la liste des présents se met à jour quand même, et l'incident est noté au
journal.

### Le pseudo se colle à l'heure

Dans la conversation, le pseudo commence juste après l'heure : l'espace vide qui les séparait pour
les pseudos courts (`@IriX`) est passé du côté du texte.

### Plus d'onglet « Serveur » vide au démarrage

Quand un profil s'ouvre tout seul au lancement, l'onglet de démarrage ne reste plus affiché à vide :
ses lignes (la version d'OverScript) passent en tête de l'onglet du réseau ouvert. Si aucun réseau
n'a pu s'ouvrir, il reste, avec les raisons de l'échec.

### Le cadre « Serveur » devient « Statut », et il s'explique

- Le cadre s'appelle **Statut**. Ses lignes sont rangées sous trois intitulés — **Connexion**,
  **Vous**, **OverScript** — et chacune dit ce qu'elle signifie quand on la survole.
- Les valeurs longues (hôte masqué, compte, version) vont à la ligne au lieu d'être coupées.
- La ligne **logiciel**, qui devait donner la version du serveur, ne s'affichait jamais : elle
  apparaît désormais une fois connecté.

### Le nombre de salons, à côté du réseau

Le titre « Salons » et son compteur ont quitté la colonne de gauche (la liste des fenêtres, elle,
reste). La barre du bas dit maintenant « Réseau — pseudo · 3 salons », pour le réseau que vous
regardez.

### Une barre d'outils rangée

- **Menu** déroule Connexion, Profil et Fond ; **Aide** déroule Journaux, Aide et **Contact**
  (nouveau : ouvre la page de contact du site). Un choix, un clic ailleurs ou Échap les referment.
- Les interrupteurs (Couleur Texte, Mise à Jour, Modération) sont regroupés à droite : **cadre vert
  quand ils sont sur On, rouge sur Off**.

### Signaler un problème… ou proposer une idée

Le formulaire de l'aide demande s'il s'agit d'un **problème** ou d'une **suggestion**. Une
suggestion n'arrive plus sur le site rangée parmi les pannes.

## 0.6.28

> **Un mot de passe tapé ne se relit plus nulle part, et la console d'un robot dit enfin la
> vérité.** `/console` sans mot de passe ouvre une vraie boîte de saisie au lieu de ne rien faire,
> un refus du robot s'affiche comme un refus, et une console ouverte ne se ferme plus toute seule.

### `/console` demande le mot de passe — pour de bon

Taper `/console 3333 VotreSurnom` sans mot de passe ne produisait **rien du tout** : l'invite
employée n'existe pas dans l'application, et l'erreur restait invisible. Une petite boîte s'ouvre
maintenant dans la fenêtre : le mot de passe s'y tape masqué, **Entrée** valide, **Échap** annule,
et la boîte est effacée dès qu'on a répondu.

Plus largement, **une commande qui échoue le dit désormais à l'écran**, au lieu de ne laisser
qu'une trace dans le journal.

### `/consoles` ne prend plus qu'un argument

`/consoles 3333 VotreSurnom motdepasse` prenait toute la ligne pour un nom de machine : le mot de
passe se réaffichait à l'écran. Une ligne de cette forme est maintenant **transmise à `/console`**,
qui est ce que vous vouliez ; toute autre ligne à plusieurs mots est refusée, sans être répétée.

### La console d'un robot : un refus est un refus

Un mot de passe faux sur la console d'IriX affichait « console admise », puis « Négatif,
Houston. » — le refus d'Eggdrop en français, que le client ne connaissait pas. Le refus est
reconnu dans toutes les langues d'Eggdrop, une console qui raccroche juste après le mot de passe
est dite **refusée**, et « admise » n'est plus annoncé que sur un vrai accueil du robot.

Et une console **ouverte et silencieuse ne se ferme plus d'elle-même** au bout de trente
secondes : ce délai ne vaut plus que pendant la connexion.

### Vos mots de passe ne se relisent plus à l'écran

- `/msg OverNick identify …`, `auth`, `recup`… et le même texte tapé dans la fenêtre privée d'un
  service ne s'affichent plus qu'en `identify ••••` — le message, lui, part entier.
- Un texte qui **commence** par `identify`, `auth`, `recup`, `ghost`, `register`… tapé dans un
  **salon** n'est pas envoyé : tout le salon l'aurait lu. Le client indique `/identify` ou
  `/auth`, qui emploient le coffre (et `/msg #salon …` pour l'envoyer quand même).

### Le menu du clic droit s'allume enfin pour les opérateurs

Le clic droit sur un pseudo restait **entièrement éteint**, même pour un opérateur du réseau
présent en « @ » :

- un **opérateur du réseau** retrouve ses actions tout de suite, sans attendre le robot — le
  serveur le laisse de toute façon passer outre, et l'acte est signalé ;
- la réponse du robot IriX est maintenant **reconnue** (elle était ignorée), et elle ne
  s'affiche plus dans la conversation à chaque ouverture du menu ; une réponse de ce genre
  venue d'un **autre** pseudo reste visible et est signalée comme non fiable ;
- si aucun robot n'est déclaré pour le réseau, le menu **et** le salon disent où le renseigner
  (« Réglages du serveur » → « Robot du réseau ») ;
- le robot n'est plus interrogé à chaque clic droit, et l'accès d'un salon ne déborde plus sur
  le salon du même nom d'un autre réseau.

### Le journal ne garde plus ce qu'il ne devait pas garder

Le journal masquait déjà `identify` et `auth` ; il masque aussi, désormais, `recup`, `supprime`,
`verify` (les commandes des services d'Overtchat), `ident`, `login`, `confirm`, `group`,
`set password`, **la clef d'un salon rejoint par `/join #salon clef`**, celle que le serveur
renvoie dans les modes du salon, et la réponse d'un robot à un changement de mot de passe.

⚠ **Un journal écrit AVANT cette version peut contenir de tels secrets** : il se trouve dans
`%APPDATA%\OverScript\journaux\` (le bouton « Journaux » l'ouvre). Le supprimer ne fait rien perdre
d'autre que l'historique des incidents.

### `/ctcp` : interroger quelqu'un, et savoir ce qu'il a répondu

`/ctcp <pseudo> <verbe>` envoie une demande CTCP : `VERSION`, `PING`, `TIME`, `CLIENTINFO`,
`FINGER`, `USERINFO`, `SOURCE` ou `CHAT`. La réponse s'affiche **comme une réponse**. Pour un
`PING`, c'est le temps d'aller-retour : `/ctcp OverNick PING` affiche par exemple « Réponse PING de
OverNick : 0,01 s ». Auparavant, une réponse reçue s'affichait « CTCP reçu — sans réponse », ce qui
était faux.

OverScript répond désormais **tout seul au `PING` qu'on lui envoie en privé**, et à rien d'autre.
Jamais `VERSION` ni `TIME` à un inconnu, ce qui dirait quel logiciel et quelle heure vous avez. Il ne
répond pas au `PING` adressé à un salon entier, et une rafale ne reçoit que quelques réponses. Quand
il a répondu, il vous le dit.

---

## 0.6.27

> **L'application porte enfin les couleurs du réseau.** L'écran de connexion affiche le logo
> Service-Overtchat, les fenêtres de conversation ont leur propre décor, et votre image
> personnelle passe toujours devant si vous en choisissez une.

### Le logo sur l'écran de connexion

Jusqu'ici, l'écran d'ouverture était un fond noir uni. Il porte maintenant le logo du réseau —
le même tracé que celui du site, pas une copie approchante. Le nom complet est écrit sous
« OverScript », sur cet écran comme sur celui de démarrage.

### Un décor propre aux conversations

Les fenêtres de salon ont leur **propre** fond, volontairement différent du logo : des ondes et
un semis discrets, sans rien qui se reconnaisse. Redire la marque au dos de chaque conversation
l'aurait usée.

⚠ Ce décor s'arrête au bord de la zone de conversation. La liste des salons, les présents et les
barres d'outils restent nets — un décor partout n'est plus un décor.

### Votre image passe toujours devant

Le bouton « Fond » n'a pas changé : l'image que vous choisissez remplace le décor par défaut,
dans la zone de conversation. Le voile qui la recouvre reste non réglable — il garantit que le
texte demeure lisible quelle que soit l'image.

### Une pastille qui ne s'affichait plus

Le point qui signale un salon où l'on vous appelle était effacé pour tout le monde, à cause d'une
règle d'affichage trop large. Il réapparaît.

---

## 0.6.26

> **Fermer la fenêtre pendant que plusieurs réseaux sont ouverts les déconnecte maintenant
> tous.** Jusqu'ici, un seul partait proprement : sur les autres, vos correspondants vous
> voyaient disparaître en « Ping timeout » pendant une minute au lieu d'un départ net.

### Quitter proprement, sur tous les réseaux à la fois

Depuis que l'application tient plusieurs réseaux dans une même fenêtre, la fermeture les parcourt
un par un pour envoyer le `QUIT` et refermer chaque connexion. Dans certains cas, ce parcours
s'arrêtait au **premier** : les réseaux suivants ne recevaient jamais leur départ, et leur
connexion restait pendante côté serveur jusqu'à son propre délai d'expiration.

Pour vous, cela se voyait de l'autre côté : sur le premier réseau vos correspondants lisaient un
départ net, sur les autres un « Ping timeout » une minute plus tard.

⚠ **Si vous n'ouvrez qu'un seul réseau à la fois, vous n'étiez pas concerné** — c'est d'ailleurs
pourquoi cela n'a jamais été remarqué en service.

---

## 0.6.25

> **Le clic droit sur un pseudonyme ouvre un vrai menu de modération** — mais seulement si vous
> avez un accès enregistré sur ce salon. Et l'application se laisse enfin habiller : votre propre
> fond d'écran, et un écran de connexion aux couleurs du projet.

### Le menu du clic droit devient un menu de modération

Jusqu'ici, un clic droit sur un pseudonyme proposait quatre entrées : whois, who, profil, message
privé. Il en propose maintenant **douze de plus** — donner ou retirer l'op, le halfop, la voix,
expulser, bannir, et les commandes d'opérateur réseau.

🔴 **Les entrées restent éteintes tant que le robot n'a pas confirmé que vous avez un accès sur ce
salon.** Porter un `@` devant son pseudonyme n'ouvre donc plus rien : c'est l'accès **enregistré**
qui décide, et lui seul. À chaque ouverture du menu, le client demande discrètement au service la
liste de ce que vous pouvez faire ici.

⚠ **Ce n'est pas une sécurité, c'est une discipline.** Cacher un bouton n'empêche personne de taper
la commande à la main — c'est le **serveur** qui accorde ou refuse, et lui seul. Le menu se contente
de ne pas vous proposer ce qu'il sait que vous ne pouvez pas faire.

⚠ **Trois commandes n'envoient rien** : `kill`, `kline` et `gline` **écrivent la commande dans la
zone de saisie**, sans la lancer. Une action irréversible ne part pas sur un clic de menu.

### Votre propre fond d'écran

Vous pouvez choisir une image de fond pour la fenêtre. Le voile qui la recouvre n'est **pas**
réglable : il garantit que le texte reste lisible quelle que soit l'image choisie.

### L'écran de connexion porte l'identité du projet

L'écran d'ouverture garde l'image de Service-Overtchat, au lieu de laisser transparaître ce qui se
trouve derrière.

## 0.6.24

> **Ce qui s'affichait de travers ne s'affiche plus de travers** — la version de votre liaison
> chiffrée, l'ordre des messages d'identification, la couleur des avertissements, et les symboles
> à côté des pseudonymes.

### 🔴 La liaison chiffrée s'annonçait en « SSLv3 »

Au démarrage, le client écrivait par exemple :

```
liaison chiffrée TLS_AES_256_GCM_SHA384 TLSv1/SSLv3 — certificat verifie
```

La liaison était **bonne** — cette suite n'existe qu'en TLS 1.3. C'est le nom du protocole qui
était faux : il venait d'un champ hérité qui ne décrit pas la version négociée. Vous lisiez donc le
nom d'un protocole cassé depuis 2014 sur une connexion parfaitement moderne.

Désormais : `TLS_AES_256_GCM_SHA384 TLSv1.3`, et la version est **mesurée**.

⚠ Rien n'était en danger, et c'est ce qui rendait le défaut coûteux : *un message exact qui se lit
de travers envoie chercher un problème qui n'existe pas.*

### ⚠ L'identification automatique racontait les choses à l'envers

On lisait, dans cet ordre :

```
identification envoyée à overnick
identification automatique — le serveur le déclare service réseau
```

C'est-à-dire « le mot de passe est parti », **puis** « au fait, j'ai vérifié que la cible était bien
un service ». L'ordre réel est l'inverse — le contrôle passe d'abord, et un verdict négatif n'envoie
rien. L'écran le dit maintenant dans le bon ordre.

📌 Et si l'envoi échoue malgré un contrôle réussi, vous le voyez : sans ce démenti, la dernière
nouvelle à l'écran se lisait comme une réussite.

### ⚠ Le mot sur `/samode` alertait alors que la commande marchait

« Overtchat-Hybrid n'a pas de SAMODE… » s'affichait en **ambre**, la couleur d'un problème, alors
que la commande partait bien. Il s'affiche maintenant en information quand elle part, et en ambre
seulement quand elle est refusée. La phrase commence aussi par ce qui s'est passé, plutôt que par ce
qui manque.

### ⚠ Les avis d'appel répétaient le même nom jusqu'à trois fois

```
HL : OverNick vous a appelé sur service-overtchat.hd.free.fr · OverNick
```

Un message privé prenait le pseudo de celui qui parle comme nom de « salon ». On lit maintenant
« … · en privé », et un appel venu du serveur lui-même ne redit plus son nom deux fois.

### 🔴 « /names » ne faisait plus rien du tout

Tapée seule, la commande `/names` ne produisait **rien** : pas de liste rafraîchie, pas de message
d'erreur, pas même une ligne à l'écran. Elle est maintenant complétée du salon de la fenêtre
ouverte, comme `/mode` ou `/kick` — et si vous n'êtes dans aucun salon, elle vous le **dit**.

⚠ `/names #salon` fonctionnait déjà, lui. *La commande n'était pas cassée : elle l'était seulement
sous la forme que tout le monde tape.*

📌 Au passage, une réponse du serveur qui ne rafraîchit aucune liste s'affiche désormais au lieu
d'être avalée. Un geste sans effet doit se voir.

### 🔴 Le symbole ♂ ♀ n'avait aucun rapport avec l'ASV que vous déclarez

Le petit symbole à côté des pseudonymes venait **du site** — du profil « rencontres », et de lui
seul. Quelqu'un qui déclarait son âge, son sexe et sa ville à l'ouverture d'OverScript, sans avoir
de profil sur le site, n'avait donc **aucun symbole** : il venait pourtant de dire qui il était.

Désormais, à défaut de profil sur le site, **le symbole se lit dans ce que vous avez déclaré à la
connexion**. Son infobulle le précise, pour qu'on sache d'où il vient.

⚠ « Secret » n'affiche toujours **rien**, et c'est voulu : dire « je ne le dis pas » ne doit pas
devenir un marqueur qui le signale. L'écran de connexion vous le dit maintenant quand vous le
choisissez — avant, on pouvait croire que sa déclaration n'avait pas marché.

### ⚠ Sur les gros salons, les symboles s'arrêtaient au 200ᵉ pseudonyme

Au-delà, plus rien — sans que rien le dise, et sans qu'on sache lesquels. Ils sont maintenant
demandés en plusieurs fois.

### ⚠ Avec deux réseaux ouverts, un symbole pouvait se poser sur la mauvaise personne

Un même pseudonyme désigne deux personnes différentes sur deux réseaux. Les symboles de l'un
s'affichaient brièvement sur les présents de l'autre en changeant de fenêtre. Chaque réseau a
maintenant les siens.

## 0.6.23

> **Les rencontres s'invitent dans la liste des présents** — vous voyez d'un coup d'œil
> qui cherche quoi, et vous ouvrez un profil sans quitter le chat.

### 🆕 Un symbole de sexe et de webcam à côté du pseudo

Dans la liste des présents d'un salon, chaque personne ayant un profil « rencontres »
visible porte désormais un petit symbole : ♂ ♀ ⚧ ⚲ selon son profil, et 🎥 quand sa
webcam est active — un signe d'activité en direct. Rien à activer : OverScript le lit
sur le site du réseau où vous êtes connecté, et les symboles n'apparaissent que pour
ceux qui ont rempli leur profil.

### 🆕 Un bouton « Profil » et « Voir le profil » au clic droit

Un nouveau bouton **Profil** dans la barre d'outils ouvre votre profil / trombinoscope
pour le remplir (photo, situation, ce que vous cherchez, centres d'intérêt). Et un clic
droit sur un pseudo propose **Voir le profil** : la fiche de la personne s'ouvre sans
fermer votre conversation.

### 🆕 Changer un mot de passe sans couper votre connexion

Le panneau **Connexion** retient trois mots de passe : celui du serveur, celui du service
de pseudos (OverNick) et celui d'opérateur. Jusqu'ici, la seule façon de les enregistrer
était de cliquer **Entrer sur le réseau** : changer un mot de passe imposait donc de
quitter le réseau et d'y revenir, pour un geste qui n'a rien à voir avec le fait d'être
connecté.

Un bouton **« Enregistrer sans se connecter »** est apparu dans le cadre *Coffre*, sous
les champs de mot de passe. Il écrit ce que vous venez de taper et **vous laisse où vous
êtes** — votre conversation continue.

Et il vous dit ce qui suit, parce que ce n'est pas devinable :

- le mot de passe du **service** et celui d'**opérateur** servent **tout de suite** : un
  `/identify` ou un `/oper` emploiera le nouveau, sans reconnexion ;
- celui du **serveur** ne vaudra qu'à **la prochaine connexion** — il est envoyé avant
  même que le réseau vous connaisse, il ne peut pas l'être après ;
- **un champ laissé vide ne perd rien** : il veut dire « je n'y touche pas ». Le bandeau
  le dit en clair quand vous n'avez rien retapé, pour que vous ne recommenciez pas en
  croyant avoir effacé quelque chose.

> Au passage : les boutons **« Oublier »** de ce même cadre annonçaient leur résultat dans
> la conversation, c'est-à-dire **derrière** le panneau, donc invisible. Un clic sans
> retour fait croire que le clic n'a pas pris, et l'on reclique sur un bouton qui a déjà
> fait son travail. Ils répondent maintenant dans le panneau lui-même.

### 🔧 « a rejoint » s'écrit enfin correctement — et neuf autres fautes avec lui

La ligne affichée à chaque arrivée dans un salon disait « *à* rejoint » — la préposition
au lieu du verbe. C'était la ligne la plus vue du client. Deux autres l'accompagnaient :
« a quitt**e** » et « a **ete** expuls**e** », sans accents.

En cherchant s'il en restait, il en restait : « l'acte est signal**e** aux opérateurs »
(le message sur `/samode`), « rien n'a **ete** écrit » du coffre, « le paquet a **ete**
confié », « rien n'a **ete** envoyé », et « aucun salon **a** quitter » — où c'est la
préposition qui manquait. Dix en tout.

> Le français de l'application avait déjà été repassé une fois. Ces dix-là y avaient
> survécu, parce que rien ne les gardait : une correction corrige, elle n'empêche pas de
> revenir. Un contrôle refuse désormais ces formes à chaque campagne.

### 🔧 Votre propre expulsion s'affiche dans le bon salon

Quand vous étiez expulsé d'un salon, la nouvelle allait dans la **fenêtre que vous
regardiez à cet instant** — pas dans celle du salon concerné. Si vous lisiez ailleurs,
elle atterrissait dans une conversation sans rapport, et le salon d'où vous veniez d'être
sorti ne portait aucune trace. Désormais la ligne apparaît **dans le salon quitté**, où
vous la retrouverez en remontant l'historique ; l'alerte immédiate, elle, reste affichée
là où vous êtes.

### 🔧 Une commande refusée dit maintenant OÙ elle vit

`/sajoin` répondait « la commande SAJOIN n'est pas permise par OverScript ». C'était
exact, et trompeur : la phrase laissait croire que la chose était impossible. Elle ne
l'est pas — `SAJOIN` existe, **chez les services**, à la disposition des opérateurs IRC.
Le refus donne désormais la ligne à taper : `/msg OverHub SAJOIN <pseudo> <#salon>`. Même
chose pour `/sapart` et `/sanick`, qui s'appelle `SVSNICK` là-bas.

> Signalé depuis le client par SerVuS, qui a cherché le défaut dans OverScript alors que
> la commande existait depuis toujours ailleurs. Un refus qui ne dit pas où regarder
> ferme une question dont la réponse existe.

## 0.6.22

> **Vous voyez à quel palier tourne le réseau** auquel vous êtes connecté.

### 🆕 Le palier du réseau, dans le cadre « Serveur »

Le cadre « Serveur », à gauche, indique désormais le **palier** du réseau où vous
êtes connecté — Minimum, Standard ou Complète. OverScript le lit directement sur
le réseau, sans rien à faire de votre part ; il n'apparaît que lorsque le réseau
l'annonce.

## 0.6.21

> **Les rencontres arrivent dans OverScript** — profils et visio en direct, avec
> caméra et micro.

### 🆕 Une section « Rencontres » (visio, webcam et micro)

Un nouveau bouton **Rencontres** dans la barre d'outils ouvre une fenêtre dédiée :
les profils, la recherche par distance, et surtout la **visio en direct** entre
membres — caméra **et micro**. La fenêtre affiche la partie rencontre du site ; le
son et l'image vont **de pair à pair**, rien n'est enregistré.

Sa caméra et son micro sont **isolés du reste du client** : ils ne s'ouvrent qu'ici,
au clic, et seulement pour le site. Le client IRC, lui, n'y a jamais accès.

---

## 0.6.20

> **La partyline des robots dans sa propre fenêtre**, et la fin des tentatives de
> connexion qu'on ne pouvait pas arrêter.

### 🆕 Une fenêtre pour la partyline des robots

Demandée par SerVuS le 02/09. Les robots Eggdrop d'un réseau se parlent entre eux
sur une ligne à part, la *partyline* — jusqu'ici invisible depuis le client.

Elle a maintenant **sa propre fenêtre**, comme le journal des versions : on peut la
poser où l'on veut, la redimensionner, la laisser sur un second écran, et continuer
à discuter pendant qu'on la lit.

**Les robots s'y trouvent tout seuls.** Il n'y a rien à déclarer : le client
découvre les consoles ouvertes et les propose. La commande **`/consoles`** affiche
ce qu'il a trouvé.

⚠ Un port qui s'ouvre mais ne répond rien n'est plus compté comme un robot. Il
était annoncé « trouvé », et la fenêtre restait vide sans dire pourquoi.

### 🔴 « Impossible d'arrêter les tentatives » — corrigé, cette fois en entier

Sur un serveur injoignable, le client réessayait **sans fin**, et rien ne pouvait
l'arrêter. Le défaut avait deux moitiés, et seule la première avait été traitée :

- une simple **poignée de main réseau** suffisait à faire croire que le serveur
  avait répondu — alors qu'un pare-feu, un relais ou un serveur saturé la donnent
  aussi, sans qu'aucun serveur soit là ;
- et même une fois cela corrigé, le **compteur de tentatives repartait à zéro** à
  chaque cycle, si bien que la limite d'abandon n'était jamais atteinte.

Mesure : **zéro abandon en quatre secondes** d'essais, là où il en fallait un. Le
client renonce désormais pour de bon, et le dit.

📌 Au passage : après une connexion **réussie**, la reconnexion repart au délai le
plus court. Une session ayant connu quelques ratés au démarrage n'attendait plus
que deux minutes entre chaque essai, pour le reste de la soirée.

### 🔴 La connexion se coupait quand beaucoup de lignes arrivaient d'un coup

En rejoignant un gros salon, ou sur une rafale de messages, la liaison pouvait
tomber. Le client mesurait le **volume reçu** au lieu de la longueur d'une ligne :
quarante kilo-octets de lignes parfaitement normales déclenchaient la même
protection qu'une ligne démesurée.

### ⚠ Ce qui s'affichait mal

- La bannière d'accueil d'un robot annonçait **« Eggdrop »** en dur, même quand
  c'est OverBot qui répond — et OverBot restait alors sans nom.
- La barre de mémoire annonçait **« 140 % »** aux lecteurs d'écran sur une mesure
  aberrante. Le dessin, lui, était déjà borné : seule la personne à qui cette barre
  sert vraiment recevait le chiffre faux.

### ⚠ Des commandes partaient dans le vide

En envoyant beaucoup de commandes à la suite, certaines étaient **perdues sans un
mot**. Le client annonçait « demande servie » pour une ligne qui ne partirait
jamais.

## 0.6.19

> **Le journal des versions dans sa propre fenêtre**, et la fin des réseaux qui
> revenaient à l'écran après qu'on les a fermés.

### 🔴 Un réseau fermé revenait tout seul à l'écran

En cliquant la croix d'un réseau dans la liste, il se fermait — puis
**réapparaissait une fraction de seconde plus tard**, avec sa ligne « Serveur »
intacte. On refermait, il revenait.

La cause : le client prévient le processus interne qu'il ferme la connexion, et
celui-ci répond « voilà, ce réseau est hors ligne ». Cette réponse, parfaitement
normale, recréait ce que la croix venait de retirer.

*Aucun de nos essais automatiques ne le voyait : tous simulaient un interlocuteur
qui ne répond rien.*

### Le journal des versions est maintenant une fenêtre à part

Il s'affichait par-dessus la conversation, sans pouvoir être déplacé ni posé sur
un second écran. C'est désormais **une vraie fenêtre**, indépendante : on peut la
mettre où l'on veut, la redimensionner et continuer à discuter pendant qu'on la
lit.

*Demandé par SerVuS.*

### Le journal se lit palier par palier, en couleurs

Chaque changement d'une version porte **son numéro** — 1, 2, 3 —, et la
numérotation repart à 1 à la version suivante. Les points les plus importants
sont **en rouge**, ceux qui demandent seulement d'être connus en **ambre**, les
corrections ordinaires en vert. Une légende dit ce que les couleurs veulent
dire.

La fenêtre a aussi une vraie barre de défilement sur le côté, accordée au thème
sombre — sur un long journal, elle est le seul repère de progression.

### `/close` ferme le réseau, comme la croix

La commande **refusait** sur une fenêtre « Serveur » — « le tampon serveur ne se
ferme pas » — alors que la croix de la même fenêtre fermait bien le réseau. Le
même geste marchait à la souris et pas au clavier.

### Les trois façons de se déconnecter font maintenant la même chose

Le bouton de la barre, la commande `/disconnect` et la croix d'un réseau
suivaient chacun leur propre chemin. Ils partagent désormais le même ménage —
avec une seule différence, voulue : **la croix ferme le réseau** et l'oublie,
tandis que le bouton et la commande le gardent hors ligne pour qu'on puisse s'y
reconnecter sans tout ressaisir.

## 0.6.18

> **Dix corrections, une seule famille de défaut** : une fenêtre, une liste ou
> un état qui survivait à ce qu'il représentait. Le client montrait quelque
> chose qu'il ne savait plus vrai.

### Se déconnecter ferme vraiment les salons

Après un clic sur **Se déconnecter**, les salons restaient à l'écran avec la
liste des présents affichée — alors qu'on ne recevait plus rien. Ces pseudos
étaient ceux d'avant la coupure : le client montrait un état qu'il ne
connaissait plus.

Les salons se ferment désormais, quel que soit le chemin employé — le bouton de
la barre, la commande `/disconnect`, ou la croix d'un réseau.

*Signalé par SerVuS le 5 septembre 2026.*

### Pendant une reconnexion, la liste des présents se vide

Quand le lien tombe tout seul, le client retente et **garde vos salons ouverts** —
c'est voulu, vous les retrouvez si la connexion revient. Mais il continuait
d'afficher les présents d'avant la coupure, comme si tout le monde était encore
là.

La fenêtre reste, la liste se vide. Elle se remplira de nouveau quand le serveur
répondra.

### Des fenêtres qu'on ne pouvait plus jamais fermer

Un `/topic` ou un `/names` sur un salon où vous n'êtes pas entré ouvrait une
fenêtre que **rien** ne pouvait plus refermer — ni une déconnexion, ni un
changement de réseau. Elle s'accumulait dans la liste, définitivement.

### Quitter le serveur ferme vos salons

Certains serveurs vous renvoient votre propre départ. Le client vous retirait
alors de la liste des présents… sans fermer les salons. Vous restiez devant des
fenêtres où vous n'étiez plus, avec une liste amputée de vous seul.

### Quand le serveur vous met dehors, le client le suit

Un serveur qui ferme votre lien envoie un message d'adieu. Le client l'affichait
puis **ne faisait rien** : si le serveur n'avait pas encore raccroché, vous
restiez jusqu'à **quatre minutes** devant un client qui semblait connecté et ne
répondait plus.

Il ferme maintenant le lien tout de suite — sans tenter de se reconnecter, car
un serveur qui vous met dehors a une raison.

### Le client vous dit quand vos lignes ne partent pas

Si vous écrivez plus vite que le serveur n'accepte, les lignes s'accumulent puis
les suivantes sont abandonnées. Le client le notait dans son journal, **sans
rien vous dire à l'écran**. Vous le voyez désormais, avec le nombre de lignes
concernées.

### La fenêtre « Serveur » de départ se ferme enfin

Celle qui existe avant toute connexion, et qui sert de journal d'ouverture :
elle portait une croix qui ne faisait rien. Elle se ferme, dès lors qu'il reste
une autre fenêtre à regarder.

---

## 0.6.17

### La case « télécharger les mises à jour » n'agissait que dans un sens

Dans la fenêtre **Connexion**, décocher « télécharger les mises à jour
automatiquement » laissait l'interrupteur **Mise à jour** de la barre sur *On*.
Dans l'autre sens, tout marchait — d'où une impression de réglage capricieux.

En réalité la case n'agissait **pas du tout** : elle n'était lue qu'au moment de
se connecter. Elle affichait un état sans jamais le changer, ce qui est pire
qu'un réglage absent — on croit avoir décidé quelque chose.

Les deux vues agissent désormais toutes les deux, et si l'enregistrement échoue,
la case revient à l'état réel plutôt que de rester sur ce que vous venez de
cliquer.

*Signalé par SerVuS le 5 septembre 2026.*

### Une alerte de service qui vous trouve où que vous soyez

Un message d'un service du réseau vous atteint maintenant quel que soit le salon
ou la fenêtre où vous êtes.

### Parler assez lentement pour ne pas se faire couper

Le client règle sa cadence d'envoi sur ce que le serveur accepte. Une salve de
messages — un collage un peu long, une commande qui en produit plusieurs — ne
vous fait plus déconnecter pour excès de trafic.

---

## 0.6.16

### Une modération qui vous SIGNALE, et ne décide jamais à votre place

Une liste de mots vivait dans le projet depuis le 31 août, écrite, commentée — et **rien ne la
lisait**. C'est fait.

Quand vous allumez « Modération : On », le client repère les messages contenant un mot de votre
liste, **sur les salons où vous êtes opérateur**, et vous le dit avec la commande toute prête :

> ⚠ modération — Quidam : « … » (insulte, gravité 2). Rien n'a été envoyé. Pour agir :
> `/mode #salon -v Quidam`

**Rien n'est envoyé sans vous.** Pas de bouton, pas d'expulsion automatique — c'est délibéré, et
c'est même le point le plus important de cette version. Une liste de mots ne voit pas la citation
(« il m'a traité de … » est un *signalement*), ni l'ironie entre gens qui se connaissent, ni la
phrase blessante qui n'emploie aucun de ces mots. Une expulsion sur un faux positif coûte plus
cher que le message qu'elle empêche. Vous verrez d'abord ce qu'elle repère ; l'automatique, si
vous le voulez, viendra après.

Elle ne regarde **jamais** vos messages privés — vous n'y avez aucun pouvoir de modération — ni
vos propres messages, ni les salons où vous n'êtes pas opérateur.

### La liste est à vous

Au premier allumage, une liste de départ est copiée dans vos données personnelles
(`moderation-mots.json`). **Ouvrez-la, retirez ce qui ne vous convient pas, ajoutez ce qui
manque** : aucune liste écrite par quelqu'un d'autre ne connaît votre salon. Chaque mot porte sa
gravité (1 avertir, 2 retirer la voix, 3 expulser) et un réglage `mot_entier` qui évite qu'un mot
court frappe à l'intérieur d'un mot innocent.

⚠ Si votre fichier devient illisible — une virgule en trop suffit — il **n'est pas écrasé** : le
client repart de la liste de départ pour la séance et vous le dit. Votre travail reste là, à
réparer.

### La modération est éteinte au départ

Elle le reste tant que vous ne l'allumez pas, et si le fichier de réglages est illisible, elle
reste éteinte plutôt que de s'allumer par accident.

## 0.6.15

### Le sujet d'un salon ne passe plus sous le bouton

Signalé par SerVuS, et introduit par la version précédente : un sujet un peu long
débordait de son cadre et venait se glisser sous « Options Salon ». Le nom et le sujet
restent centrés, le bouton reste à sa place, quelle que soit la longueur du texte.

### Le cadre « Serveur » se replie

Les détails de la connexion prenaient toute la hauteur du panneau de gauche, même
quand on ne les regardait pas. Une flèche les replie maintenant d'un clic, et la
liste défile si elle s'allonge. **Votre choix est retenu** d'un lancement à l'autre.

### Un clic droit sur un pseudo

Sur n'importe quel nom de la liste des présents, le clic droit ouvre un menu :

- **Qui est-ce ?** — le WHOIS : nom réel, serveur, salons, inactivité
- **Où est-il ?** — le WHO
- **Lui écrire** — ouvre la conversation privée, comme le clic gauche

Le résultat s'affiche dans **sa propre fenêtre**, pas au milieu de la conversation :
vous gardez sous les yeux ce que vous étiez en train de lire. La fenêtre dit qu'elle
cherche, puis ce qu'elle a trouvé — et le dit aussi quand le serveur ne répond rien.

### Écrire en gras, en italique, souligné, en couleur

Une barre est apparue au-dessus de la zone de saisie : **G**, *I*, S, et les seize
couleurs d'IRC.

Ce sont des **interrupteurs qui restent** : vous choisissez le rouge une fois, et vous
écrivez en rouge jusqu'à ce que vous changiez d'avis — y compris après avoir fermé le
client. « Aucune » remet tout à plat.

⚠ La zone de saisie **montre** ce que vous allez envoyer. Sans cela, on découvre la
couleur de son message une fois parti.

📌 C'est différent de l'interrupteur **« Couleur Texte : On/Off »**, qui reste : celui-là
décide si vous *voyez* les couleurs des autres, celui-ci décide de ce que vous *envoyez*.

### Les nouveautés s'affichent après une mise à jour

Cette fenêtre-ci, justement : au premier lancement qui suit une mise à jour, le journal
des versions s'ouvre tout seul. Une fois, puis plus jamais jusqu'à la prochaine.

⚠ Une installation neuve ne le voit pas — l'historique d'un logiciel qu'on découvre
n'apprend rien à personne. Et si vous sautez plusieurs versions, vous les voyez toutes.

---

## 0.6.14

### L’en-tête du salon se lit d’un coup d’œil

Demandé par SerVuS : le nom du salon et son sujet sont maintenant **centrés** dans le cadre, et le
bouton « Gérer » s’appelle **« Options Salon »** — il ne disait pas ce qu’il ouvrait.

Le bouton est aussi plus grand : la cible du doigt a doublé.

### Il vous dit d’un regard si vous pouvez agir

Ce bouton mène aux modes et au sujet du salon, mais les modifier demande d’être **opérateur**.
Rien ne le laissait deviner avant d’avoir ouvert le panneau et trouvé ses champs grisés.

Désormais il s’éclaire dès que vous en avez le droit — que vous soyez opérateur du salon, ou
opérateur du réseau. Et il s’allume **au moment même** où quelqu’un vous donne l’op, sans qu’il
faille rouvrir le salon.

⚠ Il reste **cliquable dans tous les cas** : consulter les modes d’un salon n’a jamais demandé de
grade, et ce n’est pas cette version qui va le retirer. C’est sa couleur qui change, pas son accès.

📌 Les réseaux qui distinguent le **fondateur** (`~`) et l’**administrateur** (`&`) de l’opérateur
sont pris en compte : ces deux grades ouvrent le bouton, puisqu’ils sont au-dessus de `@`.

---

## 0.6.13

### Les deux interrupteurs gardent enfin leur état

Signalé par SerVuS : *« si mise à jour en mode On > redémarrage = Mise à jour en mode Off »*.

Le réglage était bel et bien **écrit** sur le disque. Ce qui manquait, c'est qu'on le **relise**
au démarrage : la relecture existait, mais accrochée au remplissage d'un profil de connexion.
Or l'ouverture a quatre issues, et trois n'y passaient jamais — le bouton gardait alors la
valeur inscrite dans la page.

La **couleur du texte** se retient désormais elle aussi. Elle ne vivait que le temps d'une
session, et c'était un choix assumé — « un confort de lecture, pas un réglage à retenir ». Le
vécu a tranché autrement : un confort qu'il faut reposer chaque jour n'en est pas un.

### Les deux boutons disent ce qu'ils ont fait

Signalé par SerVuS : *« aucun message d'avertissement en cas de modification de mode […] pour
savoir si le mode est bien pris ou pas »*.

Seul l'échec parlait. Un interrupteur qui change de libellé sans un mot laisse la même question
que celui qui ne fait rien — et le doute était fondé, puisque l'état ne survivait pas au
redémarrage.

### La mémoire prévient au lieu de se contenter d'une couleur

Demandé par SerVuS : *« une alerte […] en cas de dépassement de 80 % et une mise en garde
arrivant à 70 % »*.

La barre changeait de teinte, sans un mot. Deux paliers parlent maintenant, **70 %** et **80 %**,
et le retour au calme se dit une fois. La mesure arrive toutes les deux secondes : rien n'est
annoncé tant qu'on reste dans le même palier, et il faut redescendre nettement sous un seuil pour
en sortir — sans quoi une machine qui oscille autour de 80 % parlerait des dizaines de fois par
minute.

Une seconde garde répond à l'autre moitié de la question — *la machine est chargée, mais est-ce
moi ?* : passé **1 Go**, OverScript ne subit plus une charge, il fuit, et le dit.

---

## 0.6.12

**Le français d'OverScript retrouve ses accents.**

Depuis le début, les textes de l'application étaient écrits sans accents et sans apostrophes :
« identification envoyee a overnick », « vous etes maintenant operateur IRC », « demande
d operateur ». Ce n'était pas un défaut d'affichage — les accents n'avaient jamais été tapés.

Environ **390 textes** ont été repris : les menus, les boutons, les infobulles, les messages du
fil de conversation, et les réponses du serveur traduites par le client. Ce que vous lisiez
devient :

> identification **envoyée à** OverNick
> vous **êtes** maintenant **opérateur** IRC
> demande **d'opérateur envoyée** pour SerVuS — la **réponse** du serveur suit

⚠ **Rien d'autre ne change dans cette version.** Aucun comportement, aucun réglage : seulement le
texte affiché.

📌 Signalé par SerVuS, comme le bouton « Ouvrir le site » de la version précédente. Les retours
envoyés depuis l'onglet **Aide** aboutissent — c'est le deuxième d'affilée.

## 0.6.11

**Le bouton « Ouvrir le site » ouvre enfin le site.**

Dans l'onglet Aide, ce bouton menait au **point de mise à jour** — l'adresse technique que le
client interroge pour savoir s'il existe une version plus récente. Le navigateur s'ouvrait donc
sur une ligne de texte brut, `{"produit":"OverScript","version":…}`, au lieu de la page d'accueil.

Signalé depuis le client lui-même, par le formulaire de l'onglet Aide. C'est exactement ce à quoi
il sert, et c'est ce qui a permis de le corriger.

⚠ **Rien d'autre ne change** dans cette version. Si vous n'utilisez pas ce bouton, la 0.6.10 vous
convient tout aussi bien.

## 0.6.10

**La mise à jour fonctionne enfin sous Linux.**

Jusqu'ici, un poste Linux voyait bien qu'une nouvelle version existait, et le bandeau proposait de
l'installer. Ce qui se téléchargeait alors était **l'installateur Windows** — quatre-vingt-dix
mégaoctets — et l'installation était refusée au dernier moment, avec un message expliquant qu'elle
n'existe que sous Windows. Il fallait tout reprendre à la main depuis le site.

Désormais, chaque système reçoit son paquet :

- **Windows** — l'installateur se lance, remplace le client et le rouvre. Rien ne change.
- **Debian et Ubuntu** — le paquet `.deb` est confié au gestionnaire de paquets de votre bureau,
  qui vous demandera votre mot de passe comme il le fait pour n'importe quel logiciel. OverScript
  ne réclame aucun droit d'administrateur, et **ne se ferme pas tout seul** : fermez-le vous-même
  avant de valider l'installation.
- **AppImage** — la nouvelle version est téléchargée, vérifiée, et son dossier s'ouvre. Il n'existe
  pas d'installateur pour ce format : remplacez votre fichier par celui-là et rendez-le exécutable.
  Le message vous dit où il se trouve et sous quel nom.

⚠ **Si vous êtes déjà sous Linux avec la 0.6.9, cette mise à jour ne vous parviendra pas toute
seule** — c'est justement le défaut qu'elle corrige. Prenez la 0.6.10 sur la page **Télécharger**
du site, une fois ; les suivantes arriveront normalement.

**Ce qui a été vérifié** : un client qui tourne depuis une AppImage se voit proposer une AppImage,
jamais un `.deb` — sans quoi il installerait un second OverScript à côté du sien et rouvrirait
l'ancien en croyant s'être mis à jour. Un paquet dont l'empreinte a changé depuis son
téléchargement n'est confié à personne. Et rien n'est jamais exécuté : un `.deb` est remis au
système, une AppImage n'est que déposée.

⚠ **macOS n'est toujours pas là**, pour la même raison qu'avant : un paquet Mac doit être signé par
Apple pour s'ouvrir sans être annoncé comme « endommagé ».

## 0.6.9

**OverScript existe maintenant pour Linux.**

Deux formes, selon ce que vous voulez faire :

- **Sans rien installer** — un fichier `.AppImage` unique. Rendez-le exécutable
  et lancez-le : il tourne sur n'importe quelle distribution, sans droits
  d'administrateur et sans rien laisser sur la machine. C'est l'équivalent de la
  version portable de Windows.
- **Installé pour de bon** — un paquet `.deb` pour Debian et Ubuntu, avec son
  entrée dans le menu, son icône, et une désinstallation propre par le
  gestionnaire de paquets.

Les deux se téléchargent depuis la page **Télécharger** du site.

**Ce qui a été vérifié avant de les mettre en ligne** : le paquet s'installe
dans une Debian vierge, il réclame et obtient les seize bibliothèques dont il a
besoin, l'application démarre et sa fenêtre s'affiche, et la désinstallation ne
laisse rien derrière elle.

⚠ **Aucun bureau particulier n'est imposé.** GNOME, KDE, XFCE, Cinnamon, MATE —
tous conviennent, sous X11 comme sous Wayland. Ce qu'il faut est un affichage
graphique, ce qui va de soi pour un client de discussion.

⚠ **macOS n'est pas encore là**, et ce n'est pas un oubli : un paquet Mac doit
être signé par Apple pour s'ouvrir sans être annoncé comme « endommagé ». Tant
que cette signature n'existe pas, mieux vaut ne rien proposer que proposer
quelque chose qui fait peur au premier lancement.

## 0.6.8

**Dix demandes, et la fenêtre cesse de ramer quand la conversation s'allonge.**

**Les pseudonymes retrouvent leur symbole dans le fil.** Un `@`, un `%` ou un
`+` s'affichait dans la liste des présents mais disparaissait devant chaque
message : impossible de voir qui parlait avec quel grade sans aller vérifier à
côté.

**Les couleurs IRC s'affichent.** Le client les ignorait complètement — le gras,
l'italique, le souligné et les seize couleurs passaient en texte brut, ou pire,
laissaient leurs codes visibles. Un interrupteur **Couleur Texte** permet de
tout éteindre d'un clic pour qui préfère le texte nu.

**Un onglet Serveur se ferme**, par une croix comme les autres. Fermer un
réseau ferme aussi ses salons et ses privés, sans laisser d'onglets orphelins.

**Chaque serveur se replie** : un chevron masque ses salons quand la liste
devient longue. Le salon actif reste visible, même replié — sinon on perdrait
de vue ce qu'on est en train de lire.

**La fenêtre List ne se referme plus toute seule** en entrant dans un salon, et
elle a ses trois boutons : réduire, agrandir, fermer.

**Un interrupteur Mise à Jour**, à côté de l'aide, pour couper la recherche
automatique sans aller dans les réglages.

**Les barres de la bannière s'animent**, à la taille et aux couleurs qu'elles
avaient déjà.

**Une barre de mémoire, en direct.** Elle montre où en est la MACHINE, et
nomme à côté la part qu'OverScript prend. Deux seuils la font passer à
l'avertissement puis à l'alerte. ⚠ Faute de mesure, elle DISPARAÎT au lieu de
retomber à zéro : une jauge vide se lirait « tout va bien », ce qu'on ne sait
justement pas.

**Un limiteur pour les avalanches.** Quand une même source parle trop vite, ses
messages cessent de s'afficher — mais rien n'est jeté et rien n'est coupé. Le
silence s'annonce à son début et à sa fin, avec le nombre de messages passés :
un client qui devient muet sans le dire est indiscernable d'un client en panne.
La limite est par source, jamais globale — sans quoi un seul importun ferait
taire tout le salon.

**Et l'affichage n'est plus quadratique** : au-delà de quelques centaines de
lignes, chaque nouveau message redessinait tout le fil. La fenêtre ralentissait
d'autant plus qu'on l'avait utilisée.

## 0.6.7

**Ce que le serveur vous répond en entrant dans un salon se lit enfin.**

**Quand un salon vous renvoie ailleurs, on vous le dit.** Sur certains réseaux,
demander `##chat` vous dépose en réalité dans `##chat-overflow`. Jusqu'ici la
seule trace était une ligne brute au milieu de l'écran : on croyait être là où
l'on avait demandé, et l'on parlait à un salon qu'on n'avait pas choisi.
Désormais : *« ##chat vous a renvoyé vers ##chat-overflow : vous n'êtes PAS dans
##chat »*.

**Et l'âge d'un salon s'affiche en français**, au lieu d'un horodatage brut.

**`/server -m` n'ouvre plus de fenêtre pour rien.** Il ajoute le réseau à la
fenêtre où vous êtes — ce que celle-ci sait faire depuis qu'elle porte
plusieurs serveurs. La fenêtre séparée reste possible, sous `/server -w`, pour
qui travaille sur deux écrans.

⚠ **Ces deux défauts ont été trouvés sur un vrai réseau, pas au banc.** Ils
arrivent à *chaque* entrée dans un salon, et aucun des six cents contrôles du
projet ne les voyait.

---

## 0.6.6

**Deux corrections visibles, et beaucoup de mesure derrière.**

**Le journal ne trahit plus vos conversations, ni vos clefs de salon.** Le mode
discret écrivait pourtant le texte de chaque message, privés compris ; et
`MODE #salon +k <clef>` partait en clair. *(Déjà décrit en 0.6.3, publié ici
pour la première fois.)*

**Un bouton qui annonçait « Télécharger » ouvrait en fait une page web.** Il dit
désormais ce qu'il fait.

**Vous pouvez oublier un seul mot de passe.** L'écran annonçait « mot de passe :
serveur, opérateur » sans jamais proposer de les retirer — le seul recours était
« Oublier », qui emporte le profil entier.

**Chaque profil peut s'ouvrir au démarrage**, et plusieurs à la fois : chacun
dans son propre onglet. Sinon le panneau se pré-remplit avec le dernier profil
employé, et attend votre clic.

### Ce qui a changé sans se voir

Cinq parties du client n'étaient gardées par **rien**, et le contrôle complet
les avait nommées. Elles le sont maintenant :

- le fichier qui ouvre la fenêtre — bac à sable, isolation, refus de naviguer ;
- la vérification de mise à jour, qui tourne chez vous toutes les heures ;
- les commandes que vous tapez : `/join`, `/msg`, `/oper`, `/quit`… **trois
  branches sur vingt** étaient éprouvées ;
- l'envoi du panneau de connexion, seul endroit où un mot de passe tapé
  traverse l'écran ;
- ce qui s'ouvre au démarrage.

> **263 constats sur la vraie fenêtre** contre 172 en 0.6.1, et **241 atteintes
> volontaires** au code pour vérifier qu'ils mordent. Un mot de passe ne part
> plus qu'au serveur enregistré dans son profil.

## 0.6.5

**Rien ne change à l'usage — tout change à la mesure.**

Deux parties du client n'étaient gardées par rien, et le contrôle complet les
avait nommées. Elles le sont maintenant.

**Le fichier qui ouvre la fenêtre est enfin exécuté par un banc.** Ses 415
lignes n'étaient lues que comme du texte : un réglage de sécurité modifié y
serait passé sans que rien ne rougisse. Le banc le fait désormais tourner et
regarde ce qu'il **construit** — bac à sable, isolation, absence d'accès
système dans la page, refus de naviguer, refus d'ouvrir une seconde fenêtre.

> Huit atteintes volontaires à ces réglages ont été essayées : **les huit sont
> détectées**. Aucune ne l'était ce matin.

**Et l'envoi des rapports entre dans la passe de vérification.** C'était le
seul fichier du client à en être absent — et le seul dont l'absence n'était
signalée nulle part. Douze atteintes posées, onze détectées ; la douzième
bloque le banc au lieu de le faire échouer, ce qui est aussi une détection, et
c'est écrit.

## 0.6.4

**Oublier un seul mot de passe.** L'écran annonçait « mot de passe : serveur,
opérateur » depuis toujours, et **aucun bouton ne permettait de les retirer** :
le seul recours était « Oublier », qui emporte le profil entier. Trois boutons
apparaissent maintenant, un par mot de passe réellement retenu.

> ⚠ Le code existait du début à la fin — canal, implémentation, tout — et rien
> ne l'appelait. C'est le défaut récurrent de ce projet, retrouvé dans le
> coffre.

### Un mot de passe ne part plus qu'au serveur qui l'a reçu

L'interface choisissait **à la fois** l'adresse du serveur et le profil du
coffre, sans qu'aucun contrôle ne les relie. Rien n'empêchait, en principe, de
demander une connexion vers un hôte en présentant le profil d'un autre — et le
mot de passe déchiffré serait parti là-bas.

> ⚠ Ce n'était pas exploitable : la page est notre propre code, sans accès au
> réseau ni au système, sous une politique de contenu stricte. Mais une garde
> qui n'existe que « parce que l'autre côté est sain » n'est pas une garde.

Le secret d'un profil ne sert désormais que sur l'hôte enregistré dans ce
profil. La connexion part quand même — sans mot de passe, ce que le serveur
dira lui-même — et **le refus est écrit au journal** : un secret qui ne part
pas sans qu'on sache pourquoi se cherche une heure du mauvais côté.

## 0.6.3

### Le journal ne trahit plus vos conversations

**Le mode discret ne l'était pas.** `--journal-discret` promettait « les
évènements, sans les conversations » — et écrivait pourtant le texte de chaque
message sur 120 caractères, **privés compris**. Mesuré sur un journal réel :
103 lignes en portaient.

> Hors mode brut, ces champs ne laissent plus que leur longueur. Ce qui décrit
> l'échange — le salon, l'auteur, le canal — reste lisible : c'est la seule
> raison d'être de cette trace.

**La clef d'un salon partait en clair.** `MODE #salon +k <clef>` ne passait par
aucun des deux masquages, alors que celle d'un `JOIN` était masquée depuis
longtemps. La clef atterrissait deux fois dans le journal.

> ⚠ La garde était posée sur un chemin et pas sur son voisin — c'est le motif
> qui coûte le plus cher à ce projet.

### L'outil qui devait attraper l'accident d'hier en était aveugle

`Tools/blessures-restantes.js` existe pour repérer une modification de test
oubliée dans le code. **Il ne pouvait pas voir celle qui a été publiée** : sa
règle exigeait que le texte d'origine ait disparu, or cette modification-là
ajoutait une ligne sans rien retirer.

> Il distingue désormais ce qu'il sait de ce qu'il ne peut pas savoir, et il
> refuse de répondre « intact » sur une question qu'il n'a pas su poser.
> **Et il tourne maintenant avant chaque construction** — il n'était appelé
> par rien.

Il a trouvé au passage une vérification devenue caduche par la refonte de la
0.6.0, qui aurait fait accuser du code juste.

## 0.6.2

### 🔴 Un correctif qui prime sur le reste

**Le contenu chiffré du coffre traversait vers l'interface**, dans les 0.6.0 et
0.6.1. Une seule ligne, glissée dans le code qui projette un profil vers
l'écran, rendait toute la liste blanche inatteignable : les mots de passe
chiffrés et les clefs de salon partaient avec le reste.

> ⚠ Ils restaient **chiffrés**, et l'interface n'a jamais su les lire — mais ce
> matériel n'a rien à faire de ce côté, et c'est la règle que ce coffre existe
> pour tenir.

**C'est aussi ce qui cassait la liste des profils.** Le panneau de connexion
levait en la construisant, restait muet, et gardait ses valeurs par défaut :
d'où l'impression qu'OverScript « ouvre toujours le même serveur malgré le
profil enregistré ».

> **Rien à faire de votre côté** : aucune donnée n'est sortie de votre machine,
> et vos profils sont intacts.

### Les profils par serveur

**Chaque profil porte son serveur** — c'était déjà le cas dans le coffre, mais
le démarrage ne s'en servait pas.

- **Une case « Ouvrir ce serveur au demarrage »**, par profil. Plusieurs
  peuvent la porter : chacun s'ouvre **dans son propre onglet**, ce que la
  0.6.0 vient tout juste de rendre possible.
- **Sinon, le panneau se pré-remplit** avec le dernier profil employé, et
  attend votre clic.

> ⚠ La différence est voulue : se connecter tout seul envoie un pseudo et un
> nom réel avant que personne ait relu. Cela ne se fait que sur une case cochée
> exprès. L'ASV, lui, ne part jamais sans être retapé.

### Ce qui a permis à ce défaut de sortir

Deux bancs l'auraient vu — celui du coffre et celui du rendu. **Aucun des deux
ne tournait avec `npm test`** : il leur faut Electron. Deux versions ont été
publiées sans qu'ils aient tourné.

> La garde vit désormais dans un banc qui tourne, **et** aucun paquet ne peut
> plus être construit sans que les trois suites passent d'abord.

## 0.6.1

**Quand on vous appelle, ça se voit — et ça dit où.**

Le salon où votre pseudo a été prononcé clignote **trois fois**, puis garde sa
pastille jusqu'à ce que vous l'ouvriez. L'onglet Serveur porte un point : vous
savez qu'on vous a appelé « quelque part là-dessous » sans déplier chaque
réseau. Et une ligne apparaît là où vous êtes :

> HL : Toto vous a appelé sur Overtchat · #!Overtchat!

> ⚠ Trois battements, pas une pulsation sans fin : un salon qui clignote
> indéfiniment devient un décor qu'on cesse de voir. Ce qui doit durer, c'est
> l'information, pas le mouvement.

> ⚠ Les appels d'un même salon se **groupent** en une seule ligne, qui se
> réécrit : « Toto et 2 autres vous ont appelé sur #test ». Dix minutes
> d'absence donneraient sinon trente lignes, et la trentième n'apprendrait rien
> de plus que la première. Ouvrir le salon referme le groupe.

**Le pseudo surveillé est celui du réseau**, pas un nom réglé quelque part.
Vous êtes `SerVuS` ici et `SerVuS_` ailleurs : les deux marchent, et la
comparaison suit la casse annoncée par chaque serveur.

**Un salon marqué s'efface dès que vous le regardez, quel que soit le chemin.**
La marque ne partait qu'au clic ; arriver par `/msg`, par l'annuaire ou en
fermant l'onglet voisin y laissait la pastille allumée.

### Les pannes laissent enfin une trace

Une erreur du client n'écrivait **rien** dans le journal. Ni une exception non
gérée, ni une promesse rejetée sans `catch` — la forme la plus silencieuse, et
la plus fréquente ici. C'est ce qui avait rendu la 0.4.3 muette : 513 constats
verts, un client qui ne démarrait pas, et rien à relire.

> Elles y vont désormais avec leur pile, sans rien afficher à l'écran : une
> fenêtre d'erreur à chaque hoquet apprend à cliquer « ok » sans lire.

## 0.6.0

**Plusieurs réseaux dans une seule fenêtre — pour de vrai cette fois.**

Se connecter à un second serveur ne ferme plus le premier. Chaque onglet
Serveur porte sa propre connexion, ses propres salons, son propre pseudo, et
ce que vous tapez part sur le réseau que vous regardez.

> ⚠ La 0.5.0 annonçait déjà cela, **et c'était faux**. L'affichage savait
> grouper plusieurs réseaux ; rien ne pouvait en créer un second. La fonction
> qui ouvre une connexion commençait par fermer la précédente — une seule
> ligne, mais elle annulait tout le reste. C'est le défaut que SerVuS a
> signalé deux fois : « si je lance une nouvelle connexion, ça me déconnecte
> ma fenêtre active ».

**Ce qui change concrètement :**

- **`/server -m`** garde son sens — une fenêtre de plus — mais **le panneau de
  connexion ajoute désormais un réseau** au lieu de remplacer celui en cours.
- **`/quit` ne ferme plus que le réseau où vous êtes.** Il vidait l'écran de
  tous les autres, ce qui ne se voyait pas tant qu'il n'y en avait qu'un.
- **Fermer la fenêtre ferme proprement tous ses réseaux.** Sans cela, chaque
  connexion laissait une socket ouverte et un client fantôme sur le serveur.

> ⚠ Rien n'empêche d'ouvrir deux fois le même serveur. C'est voulu : deux
> pseudos sur un même réseau est un usage courant.

### ⚠ Ce qui reste à faire, et qu'il vaut mieux savoir

Le réseau visé par une commande est **celui de l'onglet regardé**, annoncé au
moment où vous changez d'onglet. Porter la cible sur chaque commande serait
plus robuste — une commande envoyée dans la fraction de seconde qui suit un
changement d'onglet pourrait viser le réseau d'avant. Cela demande de reprendre
une vingtaine d'appels des deux côtés du client ; le défaut corrigé ici était
bien plus grave.

**Les profils restent globaux** : ils ne se rattachent pas encore à un serveur
donné. C'est le chantier suivant.

## 0.5.2

**« réservé : non » sur un pseudo qui l'est.** Le client posait bien la
question au serveur — c'est ce que corrigeait la 0.5.1 — mais il lisait mal la
réponse. Le numérique dont il déduisait la réservation se lit, sur ce réseau,
« vous êtes identifié pour ce pseudo » : le serveur ne l'envoie donc **jamais**
tant que vous ne l'êtes pas, et son absence ne dit rien d'une réservation.
De cette absence, le client concluait « non ».

> Il applique désormais la seule règle qui vaille sur tous les serveurs :
> **être identifié entraîne être réservé**, et jamais l'inverse. Tant que rien
> ne l'établit, la ligne affiche « … » — on ne sait pas, et on le dit.

**Un rapport d'incident n'est plus perdu quand le site ne répond pas.** Il est
gardé sur votre disque, survit à la fermeture du client, et repart tout seul
dès que la connexion revient. L'écran distingue les deux cas : un site muet
n'est pas un refus, et un rapport en attente vous est annoncé comme tel.

> ⚠ Un site qui répond **non** — texte trop long, refus — n'est pas rejoué :
> la réponse ne changerait pas, et vous promettre un envoi qui n'arrivera
> jamais serait pire que de le dire tout de suite.

**Le contrôle de mise à jour laisse une trace dans le journal.** Il n'en
laissait aucune : savoir si le minuteur battait encore demandait d'attendre le
tour suivant. L'écran, lui, garde son silence — un client qui annonce « je
vérifie » toutes les heures apprend à être ignoré.

### ⚠ Une annonce de la 0.5.0 était fausse, et elle est retirée

La 0.5.0 annonçait « plusieurs réseaux dans une seule fenêtre ». **L'affichage
sait les grouper ; rien ne peut en créer un second.** Une fenêtre porte une
seule connexion, et `/server -m` ouvre donc une nouvelle fenêtre — c'est tout
ce que le client sait faire aujourd'hui.

> Ce qui avait été constaté, c'était le groupement à l'écran, sur des réseaux
> fabriqués par un banc. Jamais la voie qui en produirait deux vrais. Le
> chantier est rouvert, et la mesure qui manquait est nommée : `/server -m`
> doit produire **deux sessions vivantes dans une fenêtre**.

## 0.5.1

**Le cadre Serveur disait « identifié : non » alors que vous l'étiez.** Le
client ne demandait jamais ses propres modes au serveur : il ne voyait votre
identification que si le serveur la lui annonçait spontanément. Quand elle a eu
lieu avant votre arrivée — identification automatique, ou reconnexion — rien ne
venait plus le dire, et l'affichage restait faux. Il pose désormais la question.

**Une ligne « réservé » apparaît**, distincte d'« identifié ». Les deux ne
disent pas la même chose : un pseudo peut être enregistré sans que vous y soyez
identifié — c'est justement l'état où la protection finit par vous renommer.

> ⚠ Elle affiche « … » tant que le serveur n'a pas répondu. Annoncer « non »
> avant d'avoir demandé serait le défaut que cette version corrige.

**Le PONG du serveur ne s'affiche plus dans les salons.** Il apparaissait au
milieu des conversations : la réponse au maintien de connexion n'était pas
traitée, et tombait dans l'affichage brut.

## 0.5.0

**Plusieurs réseaux dans une seule fenêtre.** C'était le défaut le plus gênant
au quotidien : `/server` fermait votre connexion en cours, et `/server -m`
ouvrait une fenêtre de plus. Vous deviez donc choisir entre perdre un serveur
et empiler les fenêtres.

Désormais, chaque réseau apparaît **dans la même fenêtre**, avec ses salons en
retrait sous lui — la forme d'un client IRC classique. Vous passez de l'un à
l'autre d'un clic.

Tout ce qui dépend du réseau suit celui que vous regardez : le pseudo affiché
devant la saisie, votre grade dans le salon, les modes que le serveur autorise,
votre statut d'opérateur. **Écrire dans un salon envoie donc bien au bon
réseau**, ce qui paraît évident et ne l'était pas.

> ⚠ Le cadre *Serveur* décrit maintenant le réseau du salon ouvert. En passant
> d'un réseau à l'autre, ses informations changent — c'est voulu.

## 0.4.6

**Vous pouvez signaler un problème sans quitter l'application.** Le panneau
*Aide* porte un nouveau volet « Signaler un problème » : vous écrivez ce qui
s'est passé, et cela arrive directement chez nous.

> ⚠ **Votre journal n'est jamais envoyé.** Il peut contenir vos conversations.
> Ne partent que votre texte, votre version, votre système et votre
> architecture — de quoi savoir où chercher, rien de plus.

**Et rien ne part tout seul.** L'envoi demande un clic, jamais une erreur : un
client qui téléphone à son éditeur dès qu'il trébuche est un client qu'on
n'installe pas.

**Préparation de la version macOS.** La construction pour Mac est configurée —
image disque et archive, pour les Mac Apple comme Intel. Elle ne peut pas être
faite depuis Windows (Apple réserve les outils nécessaires à son système), et
se fait donc sur place ; `MACOS.md` explique comment, et ce à quoi s'attendre.

> ⚠ Un blocage a été trouvé au passage : l'icône du projet faisait 256 px, et
> la construction Mac en exige 512 au minimum. Elle est désormais produite en
> 1024, sans rien changer pour Windows.

## 0.4.5

**Le numéro de version est affiché en permanence**, à côté du nom en haut à
gauche — « OverScript v0.4.5 » — et repris dans le cadre *Serveur*. C'est le
premier renseignement demandé quand on signale quelque chose ; il fallait
jusqu'ici ouvrir le panneau d'aide ou remonter tout le fil.

**Le cadre *Serveur* dit aussi votre système** (Windows, macOS ou Linux, avec
l'architecture) **et la version du logiciel serveur**, telle que celui-ci
l'annonce à la connexion. Les deux questions que l'on pose toujours en premier
sont donc côte à côte, lisibles sans ouvrir de panneau.

**OverScript cherche désormais les mises à jour toutes les heures**, et plus
seulement au démarrage. Un client IRC reste ouvert des jours : une version
sortie entre-temps passait inaperçue jusqu'au prochain lancement.

> ⚠ Il ne redit pas deux fois la même chose. Une version déjà signalée ne fait
> pas revenir le bandeau à chaque tour — en particulier après un clic sur
> « Plus tard ». Au prochain lancement, en revanche, elle est de nouveau
> proposée : un refus n'est pas définitif.

**Et le cadre *Serveur* est enfin surveillé.** Il n'était couvert par aucun
contrôle — pas même les quatre lignes ajoutées la veille (identification,
opérateur, hôte, ident). Huit constats l'éprouvent maintenant sur la fenêtre
réelle.

## 0.4.4

**L'écran de connexion ne s'ouvrait plus du tout.** À chaque démarrage, la 0.4.3
affichait « l'écran d'ouverture n'a pas pu se préparer » et s'arrêtait là : plus
de fenêtre de connexion, plus de profils, plus rien — il ne restait que la
commande `/connect`. C'est corrigé.

La cause tient en une ligne. La refonte des cadres de la 0.4.3 a **emporté** un
élément de la page, `coffre-etat`, que le code continuait d'écrire. Le premier
accès rendait `null`, et toute la préparation de l'écran s'arrêtait là.

**Et surtout, ce défaut ne pourra plus revenir sans qu'on le sache.** Un
nouveau banc croise tous les identifiants que le code va chercher — ils sont 84
— avec ceux que la page porte vraiment, et refuse le moindre écart. Il tourne
avec les autres, à chaque fois.

> ⚠ Pourquoi rien ne l'avait vu : l'erreur était **attrapée** et transformée en
> message à l'écran, donc aucune trace ne remontait à la console — et le banc
> qui charge la vraie page écoute justement la console. *La gestion d'erreur
> soignée avait masqué le défaut au banc.*

## 0.4.3

**Le bandeau de mise à jour restait affiché en permanence, vide.** Un bouton
« Plus tard » et un cadre vert sans texte, à chaque ouverture. Il devait rester
caché tant qu'il n'y a rien à dire — il l'est.

**L'écran de connexion ne déborde plus, et il respire.** Le nom du profil
sortait du cadre ; l'ensemble était trop à l'étroit. Le panneau est plus large
et le débordement est corrigé.

**Les cases « s'identifier » et « devenir opérateur » se lisent enfin.** La case
était à droite, loin de son intitulé, avec l'avertissement empilé dedans. Elles
suivent maintenant la même présentation que les autres cases de l'écran :
case à gauche, intitulé court, explication dessous.

**Le réglage des mises à jour a quitté le bloc « Coffre »** — il y disparaissait
si vous ne cochiez pas « Retenir ce profil », alors qu'il ne concerne pas ce
serveur mais l'application.

**« Aide » rejoint « Connexion » et « Journaux »** au lieu d'être relégué à
l'autre bout de la barre.

**Le cadre « Serveur » dit maintenant si vous êtes identifié et si vous êtes
opérateur**, avec votre hôte et votre ident tels que les autres les voient.

---

## 0.4.2

**Le bandeau de mise à jour existe enfin — et il reste à l'écran.**

Le bouton était bien construit, mais il était ajouté dans la conversation
courante : le premier changement d'onglet l'**effaçait**. Et le message qui
l'annonçait partait dans l'onglet « serveur », celui qu'on ne regarde plus une
fois connecté. Il y a maintenant un bandeau en haut de la fenêtre, qui ne
dépend d'aucun onglet.

**Le client télécharge la mise à jour lui-même**, avec l'avancement en mégaoctets,
puis propose « Installer la mise à jour ». Si le site ne donne pas de quoi
télécharger, le bouton ouvre la page — comme avant.

**Et une case pour tout télécharger sans rien demander**, dans le panneau de
connexion. ⚠ Elle ne couvre que le **téléchargement** : l'installation ferme
OverScript, et fermer votre client au milieu d'une conversation ne sera jamais
automatique. C'est un réglage de l'application, pas de ce serveur : il vaut
pour tous vos profils.

---

## 0.4.1

**L'identification automatique fonctionne enfin sur le réseau Overtchat.** Elle
abandonnait à chaque connexion en disant qu'`OverNick` « ne se déclare pas service
réseau » — alors que le serveur le déclarait bel et bien, à la ligne d'avant. Le
client écoutait un numéro de réponse que ce serveur n'emploie pas.

**Et « Devenir opérateur automatiquement » agit, au lieu de ne rien faire.** La case
se laissait cocher, le nom et le mot de passe se rangeaient au coffre, et il ne se
passait rien — pas même un refus. Pire : la case se rouvrait **décochée**, si bien
qu'enregistrer les réglages effaçait le choix sans le dire.

⚠ Si vous aviez coché « Devenir opérateur automatiquement » avant cette version,
**vérifiez qu'elle est toujours cochée** : une visite aux réglages a pu l'éteindre.

**Un service usurpé est un peu plus difficile à faire passer.** Le client acceptait
une réponse dont il ne lisait pas le texte ; sur les serveurs de cette famille, la
même réponse sert à annoncer un simple volontaire à l'entraide. Il lit le texte
désormais — et il reconnaît les trois formes sous lesquelles ce réseau annonce un
service, selon que c'est le serveur ou les services eux-mêmes qui répondent.

---

## 0.4.0

**Le panneau de gestion du salon ne propose plus que ce que vous pouvez
réellement faire.**

Jusqu'ici, il s'ouvrait en entier dès que vous aviez **un** grade dans le
salon — un simple `+v` suffisait à rendre toutes les cases cliquables. Vous
pouviez donc cocher « sur invitation seulement », voir la case bouger, et
recevoir un refus du serveur.

Désormais, **chaque champ s'ouvre selon le grade qu'il demande vraiment**, et un
champ éteint **dit pourquoi** : survolez-le, il vous répond « demande au moins
« @ » (Opérateurs) » ou « demande d'être opérateur du réseau ».

⚠ **Ce n'est pas une protection, et il ne faut pas le lire ainsi.** C'est le
serveur qui refuse ; le panneau évite seulement de vous proposer ce qui
échouera. Un champ ouvert n'est pas une promesse que l'action passera.

**D'où vient cette connaissance** — et c'est le point qui compte : **le serveur
l'annonce lui-même**, à la connexion. OverScript ne porte aucune table de
« quel mode demande quel grade ». Il lit ce qu'on lui dit.

⚠ **Sur un réseau qui n'annonce rien** — c'est-à-dire partout ailleurs
qu'Overtchat, pour l'instant — **rien ne change** : le panneau se comporte
exactement comme avant. C'était la condition pour que ce confort n'enferme pas
OverScript dans un seul réseau.

**Aussi** : OverScript sait maintenant que vous êtes **opérateur du réseau**, ce
qu'il ignorait complètement. Le panneau vous ouvre donc ce que votre grade réseau
vous permet, même sans `@` dans le salon — comme le serveur le fait déjà — et la
note du panneau le rappelle.

---

## 0.3.0

**Le serveur d'en face n'est plus cru sur parole, et la fenêtre de gestion du
salon dit enfin la vérité.**

### Corrigé — la fenêtre de gestion du salon

- ⚠⚠ **Elle montrait toutes les cases décochées sur un salon qui avait des
  modes.** OverScript ne demandait jamais les modes en entrant dans un salon, et
  ne savait pas lire la réponse quand elle venait. Vous voyiez donc un salon
  « sans aucun mode », et décocher ce qui n'était pas coché envoyait une commande
  de travers. Les modes sont désormais demandés à l'entrée, et affichés tels
  qu'ils sont.
- ⚠⚠ **Un mode changé pendant que la fenêtre est ouverte ne s'y voyait pas.**
  Il fallait la refermer et la rouvrir — et rien ne le disait.
- ⚠⚠ **Elle pouvait annoncer « sans grade dans ce salon » alors que vous êtes
  opérateur**, et griser toutes ses cases. Elle comparait les pseudonymes
  lettre à lettre, alors que le serveur, lui, considère par exemple `[nico]` et
  `{nico}` comme le même pseudonyme.
- **Deux modes portaient exactement le même libellé** (`r` et `R`), et le texte
  était faux pour l'un des deux. Douze modes qui n'avaient aucun libellé en ont
  un.

### Ajouté

- **Un bouton « Gérer » dans l'en-tête du salon**, et la commande **`/salon`**.
  La fenêtre existait depuis le 21/08 mais ne s'ouvrait que par un double-clic
  sur le titre — un geste que rien n'annonçait. Le double-clic continue de
  marcher.

### Sécurité

- **OverScript ne croit plus le serveur sur parole.** Un client IRC se connecte à une machine que
  vous ne contrôlez pas, et la croyait jusqu'ici dès la première ligne. Trois choses changent, et
  vous ne verrez aucune d'elles tant que le serveur se tient bien :

  - **Un salon très peuplé ne fait plus gonfler la mémoire sans fin.** La liste des présents a
    désormais un plafond, comme la liste des salons en avait déjà un. ⚠ **Et si elle est coupée,
    elle le dit** — une liste tronquée en silence ferait conclure « cette personne n'est pas là »
    à quelqu'un qui ne la voit pas.
  - **Un serveur qui annonce des règles absurdes n'est plus suivi.** S'il prétend que les pseudos
    peuvent faire un milliard de caractères, OverScript garde la valeur raisonnable. ⚠ Les limites
    restent larges : elles laissent passer tous les serveurs réels, y compris les plus généreux.
  - **Le journal ne peut plus être utilisé pour vous mentir.** Un serveur pouvait y glisser des
    codes qui, à la relecture dans un terminal, effacent l'écran ou réécrivent les lignes déjà
    affichées. Ils sont désormais rendus **lisibles et inertes** — l'information n'est pas perdue,
    elle est simplement désarmée.

### Corrigé

- **Le mot de passe du service et celui d'opérateur servent enfin.** Vous les saisissiez au
  formulaire de connexion, ils étaient bien retenus… et rien ne les employait : il fallait taper
  `/identify` puis `/oper` à chaque fois. OverScript s'en charge désormais, dans cet ordre.

  ⚠ **Deux cases, deux décisions.** « S'identifier automatiquement » existait ; « Devenir opérateur
  automatiquement » est nouvelle. Ni l'une ni l'autre n'est cochée d'office : un mot de passe qui
  part sans que personne regarde se décide, il ne s'hérite pas d'un profil recopié.

- **⚠⚠ Quand ça ne peut pas marcher, OverScript le DIT.** C'était le vrai défaut : si le nom du
  service ou le nom d'opérateur manquait, il ne se passait *rien du tout* — ni envoi, ni message.
  On croyait à une panne, on recommençait. Chaque refus nomme maintenant ce qui manque **et le
  volet où le remplir**.

  ⚠ Le piège venait de la disposition de l'écran : les **noms** vivent dans « Réglages du
  serveur », les **mots de passe** dans « Coffre ». Deux volets repliés — on remplissait le second
  sans avoir ouvert le premier. Le formulaire refuse désormais d'enregistrer un mot de passe sans
  le nom qui va avec, et ouvre le volet en question.

- **L'opérateur vient après l'identification, jamais avant.** Sur beaucoup de réseaux le bloc oper
  exige un pseudo déjà identifié : dans l'autre ordre, la demande était refusée pour une raison
  qui n'avait rien à voir avec le mot de passe — et le message du serveur ne le disait pas.

### Changé

- **La mise à jour se fait depuis le client, sans passer par le navigateur.** Le bouton
  « Télécharger la version… » télécharge vraiment : il affiche l'avancement en mégaoctets, vérifie
  que le fichier reçu est bien celui annoncé, puis devient « Installer et redémarrer ». OverScript
  se ferme alors, s'installe et se rouvre à jour.

  ⚠ **Deux clics, pas un.** Télécharger ne ferme rien ; c'est le second bouton qui ferme le client,
  et il le dit. Une conversation en cours ne s'interrompt pas parce qu'on a voulu voir la taille du
  fichier.

  ⚠ Si le site annonce une version sans donner de quoi la vérifier, **rien ne change** : le bouton
  ouvre la page de téléchargement, comme avant. Cette voie reste la solution de repli de toutes les
  autres.

---

## 0.2.0

**Le client sait quand il vieillit, et `/list` ne noie plus la conversation.**

### Ajouté

- **Le client dit sa version.** Elle s'affiche sur la première ligne, au démarrage :
  `OverScript 0.1.0 — Electron …, Node …`. Jusqu'ici il annonçait la version d'Electron et celle de
  Node, **jamais la sienne** — il n'y avait donc aucun moyen de dire quelle version on utilisait en
  signalant un problème.
- **Il vérifie s'il existe mieux**, au démarrage, auprès du site du projet. Quand une version plus
  récente est publiée, il l'écrit dans le fil avec ce qui change, et propose un bouton qui ouvre la
  page de téléchargement **dans votre navigateur**.
- **Ce journal des versions**, que vous lisez.
- **`/list` s'affiche dans un panneau**, et non plus dans la conversation. Sur un grand réseau, la
  liste des salons compte plusieurs centaines de lignes : elle chassait de l'écran ce que vous étiez
  en train de lire. Le panneau se filtre par nom ou par sujet, et se referme.
- **Un double-clic sur un salon de cette liste vous y emmène.** C'est déjà le geste qui ouvre le
  panneau d'un salon depuis son en-tête — rien de nouveau à apprendre.
- **Trois lignes de service ne débordent plus dans le fil.** `AWAY`, `TAGMSG` et `INVITE` étaient
  demandées au serveur sans être traitées : elles arrivaient en continu et noyaient la conversation.
  Les deux premières se taisent désormais ; une invitation, elle, se montre — elle est rare et vous
  est adressée.
- **Le bouton de la barre dit ce qu'il fait.** Pendant une reconnexion en boucle, il affichait
  « Se connecter » alors qu'il n'y avait rien à connecter : il n'y avait donc **aucun moyen visible
  d'arrêter**. Il propose maintenant « Arreter ».
- **Un refus se dit.** Quitter un salon, changer de pseudo ou envoyer un message pouvait échouer
  **sans un mot** — cela ressemblait à « rien ne se passe », et on recommençait. Chaque refus porte
  désormais sa raison.

### Ce que la vérification ne fait pas

- **Elle ne télécharge et n'installe rien.** Vous cliquez, votre navigateur s'ouvre, vous décidez.
- **Elle se tait quand elle échoue.** Pas de réseau, en avion, pare-feu : le client s'ouvre
  normalement et n'écrit rien. Un logiciel qui se plaint à chaque ouverture apprend à être ignoré.
- **Elle n'envoie rien sur vous.** La question posée au site est une requête sans paramètre ; la
  version qui s'exécute est comparée **chez vous**, pas chez nous.
- ⚠ **Elle exige HTTPS.** Sur une liaison en clair, n'importe quel intermédiaire pourrait remplacer
  l'adresse de téléchargement par la sienne.

---

## 0.1.0

**La première version.** Un client IRC de bureau pour Windows, aux couleurs de Service-Overtchat.

### Ce qu'il sait faire

- **Se connecter en TLS vérifié**, avec les trois comptes à rebours qui évitent de rester pendu :
  l'établissement, l'enregistrement, et le silence.
- **Une fenêtre par réseau** — `/server -m`. ⚠ Elle ne se connecte pas toute seule : le panneau
  s'ouvre pré-rempli, parce que le nom réel porte l'ASV et mérite d'être relu avant de partir.
- **Un coffre à mots de passe**, qui retient les secrets d'identification, ceux d'opérateur et les
  clefs de salon. ⚠ **Il ne les rend jamais à l'interface** : elle peut savoir qu'un secret existe,
  le poser, l'oublier — jamais le lire.
- **Un sondage du service d'identification** qui **propose** sans jamais choisir. Un mot de passe
  envoyé au mauvais pseudo part chez celui qui le porte, et il a pu le prendre exprès.
- **La complétion au Tab** pour les pseudos et les salons, le grade affiché devant le pseudo, le
  panneau de salon au double-clic sur l'en-tête.
- **Un journal sur disque**, dont l'emplacement est **dit à l'écran au démarrage** — le piège le
  plus coûteux du projet est un journal qu'on cherche au mauvais endroit.

### Ce qu'il ne fait pas, et c'est voulu

- **L'interface ne peut pas fabriquer une commande IRC.** Elle demande un verbe et son reste ; le
  processus principal tient une liste blanche et **refuse en le disant**.
- **Rien n'est présumé du serveur** : les grades, les types de salon, la comparaison des pseudos et
  les modes dérivent tous de ce que le serveur annonce à la connexion.
- **Aucune fenêtre ne s'ouvre vers l'extérieur.** Un lien collé dans un salon ne peut pas emmener
  l'application ailleurs.

### Ce qu'il faut savoir

- ⚠ **Le journal écrit les conversations sur le disque** — c'est le comportement par défaut, choisi
  volontairement tant que rien n'est stable. `--journal-discret` donne le comportement sobre.
- Sur ce réseau, **les salons se créent sur demande** : rejoindre un salon non déclaré rend une
  réponse qui renvoie au formulaire, ce n'est pas une panne.
