# Changelog - SimpleConnect Electron ## [1.2.12] - 2025-09-04 ### Ajouté - **Redimensionnement du panneau de notes** : Possibilité d'ajuster la largeur - Poignée de redimensionnement sur le bord gauche du panneau - Indicateur visuel permanent (3 points verticaux) - Largeur minimale : 280px, maximale : 600px - Sauvegarde automatique de la largeur préférée dans localStorage - Restauration de la largeur à la réouverture ### Amélioré - **Fluidité du redimensionnement** : Optimisations pour une meilleure performance - Utilisation de requestAnimationFrame pour 60 FPS - Overlay invisible pendant le drag pour capturer tous les mouvements - Désactivation des transitions CSS pendant le redimensionnement - Indicateur visuel toujours visible (pas seulement au survol) - Changement de couleur de l'indicateur au survol (gris → violet) ### Technique - Variable CSS `--notes-width` pour synchroniser panneau et webview - Classes `.resizing` pour désactiver les transitions pendant le drag - Gestion des événements mouse avec requestAnimationFrame - Limites de taille avec Math.min/max pour contraindre la largeur ## [1.2.11] - 2025-09-04 ### Ajouté - **Panneau de notes latéral moderne** : Refonte complète de l'interface des notes - Panneau qui glisse depuis la droite de l'écran (au lieu du bas) - Header avec gradient violet et icône intégrée - Placeholder avec suggestions d'utilisation - Nouveau bouton "Effacer" pour réinitialiser les notes - Footer dédié pour les actions - Animation fluide cubic-bezier pour l'ouverture/fermeture ### Modifié - **Design du panneau de notes** : Interface plus moderne et cohérente - Hauteur complète (100vh - 60px) au lieu d'une fenêtre popup - Position proche du bouton d'activation pour meilleure cohérence - Bouton de fermeture circulaire avec effet hover - Textarea avec fond grisé qui devient blanc au focus - Notifications modernes remplaçant les alert() natifs - Webview qui se redimensionne automatiquement quand les notes sont ouvertes ### Supprimé - **Badge de notification rouge** : Suppression de l'indicateur de contenu - Plus de point rouge sur le bouton des notes - Suppression du code JavaScript de surveillance du contenu - Interface plus épurée sans distractions visuelles - **Code du bouton flottant** : Nettoyage du CSS non utilisé ### Technique - Nouvelle classe `.notes-open` pour ajuster la webview - Animation `slideInRight` pour l'apparition du panneau - Fonction `clearNotes()` avec confirmation avant effacement - Tooltips modernes sur les boutons avec pseudo-éléments CSS ## [1.2.10] - 2025-09-04 ### Modifié - **Animation de connexion unifiée** : Messages identiques pour tous les types de connexion - Suppression de la différenciation entre connexion normale et avec déblocage - Même expérience visuelle que la case "Débloquer" soit cochée ou non - Messages simplifiés : "Connexion en cours..." / "Authentification auprès du serveur" - Interface plus cohérente et moins confuse pour l'utilisateur ### Technique - Suppression de la condition sur `isForceDisconnect` dans `showLoginProgress()` - Uniformisation des textes d'animation pour tous les cas de connexion ## [1.2.9] - 2025-09-04 ### Ajouté - **Autofocus sur le champ code d'accès** : Amélioration de l'ergonomie de connexion - Focus automatique au lancement de l'application - Focus automatique après déconnexion - Sélection automatique du contenu existant pour remplacement rapide - Plus besoin de cliquer avant de taper ### Modifié - **Expérience utilisateur de connexion** : Accès direct au clavier - Attribut HTML `autofocus` sur le champ code d'accès - Focus forcé après fermeture de la modal de déconnexion - Délais optimisés pour garantir le focus malgré les animations ### Technique - Focus appliqué à 3 endroits : attribut HTML, chargement initial, après déconnexion - Utilisation de `select()` pour sélectionner le contenu existant - Délais de 100-200ms pour contourner les interférences des animations ## [1.2.8] - 2025-09-04 ### Ajouté - **Animation de connexion** : Feedback visuel pendant le processus d'authentification - Modal avec spinner animé identique à celui de déconnexion - Messages dynamiques adaptés au contexte (connexion normale ou forcée) - Progression en plusieurs étapes : authentification → chargement des centres - Design cohérent avec la modal de déconnexion ### Modifié - **Expérience de connexion** : Interface plus professionnelle - Plus d'attente sans feedback visuel - Messages clairs sur l'état du processus - Transitions fluides entre les étapes - Modal automatiquement fermée en cas d'erreur ou de succès ### Technique - Nouvelles fonctions : showLoginProgress(), updateLoginProgress(), hideLoginProgress() - Styles CSS pour .login-progress-modal avec animation scaleIn - Gestion asynchrone avec délais pour transitions fluides - Messages adaptés selon le mode de connexion (normal/forcé) ## [1.2.7] - 2025-09-04 ### Ajouté - **Animation de déconnexion** : Feedback visuel pendant le processus - Spinner circulaire animé avec rotation fluide (1 tour/seconde) - Design cohérent avec le thème violet de l'application - Ombre subtile pour un effet de profondeur - Transition en fondu entre l'icône et le spinner ### Modifié - **Modal de déconnexion** : États visuels dynamiques - Textes mis à jour pendant la déconnexion ("Déconnexion en cours...", "Veuillez patienter") - Boutons masqués pendant le processus pour éviter les doubles clics - Délais optimisés : 300ms avant + 500ms après pour une transition fluide - Restauration automatique de l'état initial après déconnexion ### Technique - Nouvelles fonctions showLogoutProgress() et hideLogoutProgress() - Animation CSS @keyframes spin pour la rotation du spinner - Gestion asynchrone avec Promise pour les délais d'animation - Structure HTML modifiée avec IDs pour contrôle dynamique ## [1.2.6] - 2025-09-04 ### Ajouté - **Tri alphabétique des onglets** : Organisation logique des centres - Les onglets sont maintenant triés par ordre alphabétique du code centre - Utilisation de `localeCompare()` avec locale français - Option `numeric: true` pour gérer correctement les codes avec nombres (ACR2 avant ACR10) ### Modifié - **Ordre d'affichage des centres** : Prévisible et cohérent - Indépendant de l'ordre retourné par SignalR - Premier onglet sélectionné = premier alphabétiquement - Plus facile de retrouver un centre spécifique ### Technique - Création d'une copie triée avec `[...currentCentres].sort()` - Tri appliqué dans `initializeCenters()` et `showMainPage()` - Préservation du tableau original pour les autres fonctionnalités ## [1.2.5] - 2025-09-04 ### Corrigé - **Écran blanc à la connexion** : Sélection automatique du premier onglet - Plus d'écran vide après connexion - Le premier planning s'affiche automatiquement - L'onglet correspondant est marqué comme actif ### Modifié - **Expérience de connexion** : Accès direct au premier planning - Ajout de `selectCenter(currentCentres[0].id)` dans showMainPage() - Suppression du message "Sélectionnez un centre ou attendez un appel entrant" - Transition immédiate vers le contenu utile ### Technique - Appel automatique de selectCenter() après initializeCenters() - Suppression du div .no-center-selected du HTML - Amélioration du flux utilisateur post-connexion ## [1.2.4] - 2025-09-04 ### Corrigé - **Bug du formulaire de connexion après déconnexion** : Réinitialisation complète - Le bouton "Se connecter" restait grisé avec le texte "Reconnexion..." après déconnexion - Les champs restaient pré-remplis avec les anciennes valeurs - La checkbox "Débloquer" restait cochée ### Ajouté - **Fonction resetLoginForm()** : Nettoyage du formulaire de connexion - Vide automatiquement les champs code d'accès et mot de passe - Décoche la checkbox "Débloquer" - Efface les messages d'erreur - Réactive le bouton et restaure le texte "Se connecter" - Préserve la sélection du terminal pour la commodité ### Modifié - **Comportement de déconnexion** : Expérience utilisateur améliorée - Retour sur un formulaire de connexion propre et fonctionnel - Plus d'état "bloqué" avec le bouton désactivé - Réinitialisation également appliquée au démarrage si personne n'est connecté ## [1.2.3] - 2025-09-04 ### Ajouté - **Modal de déconnexion personnalisée** : Interface moderne pour la confirmation - Design élégant avec icône emoji 👋 dans un cercle gradient - Animation pulse sur l'icône et effet scaleIn à l'ouverture - Textes en français avec titre et sous-titre descriptif - Fond flou avec overlay sombre (backdrop-filter) - Boutons stylisés avec gradient violet et effets hover ### Modifié - **Expérience utilisateur de déconnexion** : Remplacement du confirm() natif - Plus de popup système Electron avec logo générique - Interface cohérente avec le design de l'application - Trois méthodes de fermeture : bouton Annuler, clic externe, touche Escape - Gestion propre des event listeners avec nettoyage automatique ### Technique - Nouvelle fonction showLogoutModal() remplaçant le confirm() natif - HTML de la modal ajouté avec structure sémantique - Styles CSS avec animations @keyframes scaleIn - Z-index 3000 pour s'assurer que la modal est au-dessus de tout ## [1.2.2] - 2025-09-04 ### Supprimé - **Barre d'outils des webviews** : Suppression complète de la toolbar - Plus de boutons de navigation (Précédent/Suivant) - Plus d'affichage de l'URL courante - Plus de bouton Rafraîchir dans la toolbar - Gain d'espace vertical supplémentaire (~40px) - Code nettoyé : suppression de navigateWebview() et des event listeners associés ### Ajouté - **Bouton Rafraîchir dans le header** : Nouvelle position pour le rafraîchissement - Icône 🔄 ajoutée dans la zone droite du header - Placé entre le statut de connexion et le bouton Notes - Animation de rotation d'1 seconde lors du clic - Fonction refreshCurrentWebview() pour rafraîchir uniquement la webview active ### Technique - Suppression du code HTML de création de la toolbar - Suppression de l'event listener 'did-navigate' pour l'URL - Nouvelle animation CSS @keyframes rotate pour le bouton - Classe .rotating pour l'animation visuelle du rafraîchissement ## [1.2.1] - 2025-09-04 ### Modifié - **Header et onglets fusionnés** : Optimisation de l'espace vertical - Fusion du header et de la barre d'onglets sur une seule ligne - Logo SimpleConnect et nom de l'agent à gauche - Onglets des centres au milieu (espace flexible) - Statut de connexion et boutons d'action à droite - Gain de 10px en hauteur (60px au lieu de 70px) ### Amélioré - **Interface plus compacte** : Meilleure utilisation de l'espace écran - Plus d'espace vertical pour l'affichage des webviews - Tous les contrôles accessibles sur une seule ligne - Tailles des éléments légèrement réduites (boutons 36x36px, textes 13-14px) - Padding optimisé sur tous les éléments ### Technique - Nouvelle classe CSS `.header-with-tabs` remplaçant l'ancien header séparé - Onglets avec `flex: 1` pour occuper l'espace disponible - Hauteur du conteneur principal ajustée à `calc(100vh - 60px)` - Webview container à 100% de hauteur (plus de déduction pour les onglets) ## [1.2.0] - 2025-09-04 ### Supprimé - **Sidebar latérale gauche** : Interface simplifiée avec suppression complète du panneau latéral - Plus de liste des centres dans la sidebar (navigation uniquement par onglets) - Suppression des statistiques du jour (appels traités et RDV pris) - Gain d'espace significatif pour l'affichage des webviews - **Bouton "Simuler un appel"** : Fonctionnalité de simulation retirée - Suppression du bouton dans le header - Modal de simulation complètement retirée - Code JavaScript associé nettoyé (fonctions showCallSimulation, loadSimulatedCalls, etc.) - Référence au script cti-simulator.js supprimée - **Scrollbars visibles** : Masquage complet des barres de défilement - Scrollbar verticale supprimée via overflow: hidden - Scrollbar horizontale des onglets masquée (reste fonctionnelle au scroll) ### Ajouté - **Zone de notes dynamique** : Panneau de notes rapides affichable/masquable - Nouveau bouton 📝 dans le header pour toggle les notes - Animation fluide de glissement depuis le bas de l'écran - Bouton × pour fermer rapidement le panneau - Sauvegarde automatique des préférences dans localStorage - Panneau masqué par défaut pour maximiser l'espace de travail ### Modifié - **Interface modernisée** : Refonte complète du design - Nouveau fichier styles-modern.css remplaçant l'ancien styles.css - Header épuré avec ombres subtiles et animations - Onglets style Material Design avec indicateur actif coloré - Boutons avec effets hover et transitions fluides - Palette de couleurs plus moderne et contrastée - Animations et transitions ajoutées partout - **Optimisation de l'espace** : Meilleure utilisation de l'écran - Les webviews occupent maintenant toute la largeur disponible - Hauteurs calculées précisément avec calc() CSS - Interface responsive et adaptative - **Structure HTML simplifiée** : Code plus propre et maintenable - Suppression des éléments DOM liés à la sidebar - Suppression de la modal de simulation - Organisation plus claire des sections ### Technique - Gestion des préférences utilisateur via localStorage - Fonctions JavaScript ajoutées : toggleNotes(), showNotes(), hideNotes(), loadUserPreferences() - CSS moderne avec animations @keyframes et transitions - Masquage des scrollbars compatible tous navigateurs (webkit, Firefox, IE/Edge) - Hauteurs calculées dynamiquement pour éviter les débordements ## [1.1.3] - 2025-09-04 ### Modifié - **Onglets des plannings** : Affichage du code client au lieu du nom de la file d'attente - Les titres des onglets affichent maintenant `centre.id` (code client) au lieu de `centre.nom` (queueName) - Permet une identification plus directe et claire du client concerné - Modification dans renderer.js ligne 227 ## [1.1.2] - 2025-09-04 ### Modifié - **Checkbox de déconnexion** : Renommage du libellé "Déconnexion" en "Débloquer" - Terme plus clair et explicite pour l'utilisateur - Meilleure compréhension de l'action (débloquer une session) - **Titre de l'application** : Simplification en "SimpleConnect" - Suppression du sous-titre "Gestion Centralisée des Plannings" - Titre plus concis dans la barre de titre et l'onglet du navigateur ## [1.1.1] - 2025-09-04 ### Ajouté - **Option de déconnexion forcée** sur l'écran de connexion - Nouvelle checkbox permettant de forcer la fermeture d'une session précédente - Utile en cas de déconnexion anormale, crash ou changement de poste - Appel à `AgentLogoff` avant la nouvelle connexion si l'option est cochée - Message adaptatif sur le bouton ("Reconnexion..." au lieu de "Connexion en cours...") ### Modifié - **Interface de connexion** : Ajout d'un conteneur stylisé pour l'option de déconnexion - Design moderne avec checkbox personnalisée - Fond gris clair avec bordures arrondies - Texte d'aide explicatif sous l'option - Effet hover sur le conteneur pour améliorer l'UX - **main.js** : Logique de déconnexion forcée dans le handler `login-agent` - Vérification du paramètre `forceDisconnect` dans les credentials - Tentative de déconnexion avec gestion d'erreur silencieuse - Continuation du processus même si la déconnexion échoue - **renderer.js** : Récupération et transmission de l'état de la checkbox - Lecture de l'état `forceDisconnect` depuis le formulaire - Ajout du paramètre dans l'objet credentials - Adaptation du texte du bouton selon l'option choisie ### Style - **CSS personnalisé** pour la checkbox de déconnexion forcée - Checkbox native HTML avec design moderne - Indicateur visuel coché/non coché avec transitions fluides - Alignement parfait avec le texte "Déconnexion" - Responsive et accessible ### Technique - Implémentation non-bloquante : la connexion continue même si `AgentLogoff` échoue - Gestion des sessions fantômes après crash ou perte réseau - Message informatif dans les logs pour tracer les déconnexions forcées ## [1.1.0] - 2025-09-04 ### Ajouté - **Authentification SignalR réelle** : Remplacement de l'authentification locale simulée par l'authentification SignalR - Connexion via `AgentLogin` avec email, password et terminal - Déconnexion propre via `AgentLogoff` - Gestion automatique des sessions agents côté serveur - **Traitement dynamique des centres** : Génération automatique depuis les données SignalR - Remplacement des placeholders (#CA#, #MP#) dans les URLs - Attribution automatique de couleurs aux centres - Mapping avec les files téléphoniques pour le routage - **Gestion des événements IPBX en temps réel** - Basculement automatique vers le bon centre lors d'un appel entrant - Libération automatique de la file après raccrochage - Filtrage par terminal pour ne recevoir que les événements pertinents - **Notifications visuelles** avec animations CSS - Notifications temporaires pour les événements d'appels - Animations slideIn/slideOut pour une meilleure UX - Son de notification pour les appels entrants ### Modifié - **main.js** : Refonte complète de l'authentification - Suppression de la vérification locale dans config.json - Ajout des handlers SignalR pour AgentLogin et AgentLogoff - Implémentation des événements IpbxEvent (codes 1 et 2) - Mise à jour dynamique du titre avec nom agent et terminal - **renderer.js** : Adaptation pour SignalR - Connexion directe via SignalR au lieu de config.json - Écoute des événements switch-to-center et release-center - Ajout des fonctions updateAgentStatus, showNotification, updateCallStats - **Déconnexion améliorée** : Nettoyage propre des sessions - Appel à AgentLogoff avant fermeture de l'application - Réinitialisation complète des variables d'état ### Technique - Stockage global de `agentConnectionInfo` pour les données SignalR - Traitement des URLs avec fonction `processApplicationUrls()` - Gestion des états de connexion SignalR avec reconnexion automatique - Validation côté client du terminal avant envoi au serveur ### Supprimé - Authentification locale basée sur config.json - Dépendance aux données statiques pour les centres - Configuration manuelle des centres dans config.json ## [1.0.2] - 2025-09-04 ### Corrigé - **DevTools** : Ouverture uniquement en mode développement au lieu de systématiquement - **Mode développement** : Correction de la détection du mode dev pour le simulateur CTI via IPC - **Choices.js** : Suppression de la boucle de retry infinie en cas d'échec de chargement - **Code mort** : Suppression de la fonction `updateSignalRStatus()` vide et inutilisée ### Technique - Ajout du handler IPC `is-development` pour permettre au renderer de détecter le mode - Amélioration de la gestion d'erreur pour Choices.js avec fallback natif sans retry - Nettoyage du code en supprimant les fonctions vides et appels inutiles ## [1.0.1] - 2024-09-04 ### Ajouté - **Intégration de Choices.js** pour améliorer l'expérience utilisateur sur le champ de sélection des postes téléphoniques - Liste déroulante moderne avec recherche instantanée - Support de plus de 100 postes téléphoniques - Interface utilisateur améliorée avec scrollbar personnalisée - Recherche en temps réel pour trouver rapidement un poste ### Modifié - **Page de connexion** : Remplacement du select HTML natif par Choices.js - Amélioration visuelle avec thème personnalisé (violet #667eea) - Ajout d'animations fluides à l'ouverture/fermeture - Indicateurs visuels pour les éléments sélectionnés - **Chargement des ressources** : Migration des CDN vers des fichiers locaux pour éviter les problèmes CSP - **Gestion des erreurs** : Amélioration du fallback en cas d'échec de chargement de Choices.js ### Technique - Installation locale de Choices.js via npm - Copie des fichiers CSS/JS dans le répertoire racine - Adaptation du code pour gérer window.Choices dans le contexte Electron - Suppression du groupement par centaine pour simplifier la navigation ### Corrigé - Résolution des erreurs Content Security Policy (CSP) avec les ressources CDN - Correction de l'initialisation de Choices.js dans l'environnement Electron - Fix des classes CSS pour éviter les erreurs DOMTokenList ## [1.0.0] - 2024-09-01 ### Fonctionnalités initiales - **Connexion agent** avec authentification locale - **Intégration SignalR** pour la communication avec le serveur CTI - **Récupération dynamique** des postes téléphoniques depuis le serveur - **Multi-centres** : Gestion de plusieurs centres médicaux - **Webviews intégrées** pour afficher les plannings médicaux - **Simulation d'appels** pour les tests et démos - **Interface moderne** avec design violet/blanc - **Statistiques journalières** : Compteurs d'appels et de RDV - **Notes rapides** : Prise de notes pendant les appels - **Indicateurs visuels** : États de connexion SignalR et disponibilité agent