# Changelog - SimpleConnect Electron
## [1.4.0] - 2025-10-21
### Ajouté
- **Affichage de la version dans l'interface** : La version de l'application s'affiche désormais clairement
- Version affichée sous le titre "SimpleConnect" sur la page de connexion (centrée, gris clair)
- Version affichée dans le header de la page principale à côté du logo
- Handler IPC `get-app-version` pour exposer la version du package.json
- Injection automatique de la version au chargement de l'application
### Modifié
- **Titre de la fenêtre avec version** : Le titre de la barre native affiche maintenant "SimpleConnect vX.X.X"
- Titre initial défini dans BrowserWindow avec la version
- Titre mis à jour dynamiquement lors de la connexion/déconnexion agent
- Listener `did-finish-load` pour forcer le titre après chargement du HTML
- Format : "SimpleConnect v1.4.0 - Agent: XXX - Tel: XXX" quand connecté
### Technique
- Nouveau style CSS `.app-version-login` pour l'affichage de la version sur la page de login
- Style CSS `.app-version` pour l'affichage dans le header principal
- Utilisation de `app.getVersion()` pour récupérer la version depuis package.json
- Résolution du conflit entre `
` HTML et titre de BrowserWindow
## [1.3.1] - 2025-10-17
### Ajouté
- **Saisie manuelle de postes téléphoniques personnalisés** : L'utilisateur peut désormais taper un numéro de poste qui n'est pas dans la liste officielle
- Activation de `addItems` et `addChoices` dans Choices.js pour les éléments ``
- Validation de format numérique uniquement
- Avertissement visuel non-bloquant (5 secondes) si le poste n'est pas dans la liste officielle
- Textes UX explicites guidant l'utilisateur ("Rechercher ou saisir un poste...")
- Le serveur accepte tout numéro de poste valide
### Modifié
- **Affichage des terminaux simplifié** : Les numéros de postes s'affichent maintenant sans le préfixe "Poste"
- Affichage direct "2101" au lieu de "Poste 2101"
- Interface plus épurée et compacte
- Modifié dans Choices.js et dans tous les fallbacks natifs
### Corrigé
- **Contraste de l'élément survolé dans la liste déroulante** : Amélioration de la lisibilité
- Fond bleu clair (#e8f0fe) au lieu de bleu foncé (#667eea)
- Texte noir foncé (#1a1a1a) au lieu de blanc
- Poids de police semi-gras (500) pour meilleure lisibilité
- Résout le problème d'illisibilité lors de la navigation au clavier
## [1.3.0] - 2025-09-12
### Ajouté
- **Support dual SignalR/SocketIO avec fallback automatique** : Compatibilité totale avec backends .NET et Python
- ConnectionManager qui essaie d'abord SignalR puis bascule sur SocketIO
- WebSocketAdapter qui émule l'API SignalR complète avec socket.io-client
- Abstraction totale : même API peu importe le protocole utilisé
- Détection automatique du type de serveur disponible
- Messages de statut indiquant le type de connexion active (SignalR ou WebSocket)
### Modifié
- **Architecture de connexion refactorisée** : Système modulaire avec adaptateurs
- Nouveau module `connection-manager.js` pour gérer la stratégie de fallback
- Nouveau module `websocket-adapter.js` pour l'émulation SignalR avec SocketIO
- Code principal simplifié grâce à l'abstraction de connexion
- Meilleure gestion des erreurs et reconnexion automatique
### Technique
- Ajout de la dépendance `socket.io-client` v4.8.1
- Pattern Adapter pour unifier les APIs SignalR et SocketIO
- Gestion des promesses pour les invocations asynchrones
- Mapping automatique des événements entre les deux protocoles
- Conservation de la compatibilité ascendante avec les serveurs existants
### Documentation
- Support confirmé pour les backends Python/FastAPI avec SocketIO
- Migration transparente entre serveurs .NET et Python
- Logs détaillés du type de connexion utilisé
## [1.2.16] - 2025-09-05
### Ajouté
- **Système de logging SignalR complet** : Capture et analyse de tous les événements
- Fichier de log centralisé dans `~/.simpleconnect-ng/signalr.log`
- Logger universel pour tous les messages SignalR reçus
- Écoute de 13 types d'événements potentiels (IpbxEvent, AgentStatusChanged, QueueUpdate, etc.)
- Format JSON structuré avec timestamp, arguments et contexte agent
- Logs des méthodes invoquées (AgentLogin, AgentLogoff, GetTerminalListByServiceProvider)
- Identification des codes IPBX 0-5 avec descriptions détaillées
### Corrigé
- **Icônes manquantes sur Linux** : Remplacement des emojis par des SVG
- Icônes SVG inline pour les boutons Rafraîchir et Notes
- Compatibilité universelle (Windows, Mac, Linux)
- Style adaptatif suivant le thème (currentColor)
- Animations au survol et lors des actions
- **Barre de menu Electron** : Suppression complète sur tous les OS
- Ajout de `autoHideMenuBar: true` dans BrowserWindow
- `setMenuBarVisibility(false)` pour forcer la suppression
- `Menu.setApplicationMenu(null)` pour suppression globale
- Interface épurée sans menu "File, Edit, View, Window, Help"
### Modifié
- **Configuration de build Linux** : Support multi-architectures
- Ajout des cibles AppImage, .deb et .rpm
- Support x64 et arm64
- Scripts npm dédiés : `build:linux-x64` et `build:linux-arm64`
- Métadonnées Linux enrichies (maintainer, vendor, synopsis)
### Technique
- Module `os` ajouté pour accès au répertoire home utilisateur
- Fonctions de logging : `ensureLogDirectory()`, `logToSignalRFile()`, `logSignalR()`
- CSS pour icônes SVG avec transitions et animations
- Build cross-platform depuis Mac M1 vers Linux AMD64
### Documentation
- Instructions complètes pour le build Linux
- Guide d'utilisation des fichiers AppImage, .deb et .rpm
- Explication du poids des fichiers AppImage (106 MB)
## [1.2.15] - 2025-09-04
### Corrigé
- **Position des notifications** : Les bandeaux de notification ne cachent plus les boutons
- Décalage vertical de 20px à 70px pour apparaître sous la barre d'outils
- Les boutons restent accessibles pendant l'affichage des notifications
### Modifié
- **Bouton de déconnexion remplacé par "Quitter"** : Changement du comportement de fermeture
- Le bouton "Déconnecter" devient "Quitter" pour plus de clarté
- Déconnexion automatique de l'agent avant fermeture
- Animation de déconnexion maintenue pour une transition fluide
- Fermeture propre de la connexion SignalR
- Arrêt complet de l'application après déconnexion
### Technique
- Nouveau handler IPC `quit-app` pour fermer l'application
- Modification de `handleConfirm()` pour appeler la fermeture après déconnexion
- Délai de 1 seconde avant fermeture pour voir l'animation complète
### Documentation
- **README.md entièrement réécrit** : Mise à jour complète de la documentation
- Ajout des fonctionnalités actuelles (SignalR, CTI, panneau de notes)
- Architecture technique détaillée et à jour
- Workflow d'utilisation complet
- Section dépannage avec problèmes courants
- Roadmap des fonctionnalités futures
- Structure moderne avec emojis et organisation claire
### Configuration
- **Nettoyage complet du config.json** : Suppression des éléments obsolètes
- Suppression de la section agents (maintenant géré via SignalR)
- Suppression de la section centres (fournis par le serveur)
- Suppression de la section CTI (ancien système de simulation)
- Suppression de la section preferences (non utilisée)
- Conservation uniquement de la configuration SignalR essentielle
- Fichier réduit de 118 lignes à 8 lignes
## [1.2.14] - 2025-09-04
### Ajouté
- **Système de persistance des notes amélioré** : Sauvegarde et restauration automatiques
- Auto-save après 2 secondes d'inactivité
- Restauration automatique des notes au démarrage
- Synchronisation localStorage + fichier serveur
- Notification visuelle lors de la restauration
- Historique local des 20 dernières notes dans localStorage
### Modifié
- **Gestion des fichiers de notes** : Un seul fichier par agent au lieu de multiples
- Format `notes_{agentId}.json` unique par agent
- Mise à jour du même fichier à chaque sauvegarde
- Historique des 50 dernières versions intégré dans le fichier
- Plus d'accumulation de fichiers datés
### Amélioré
- **Expérience utilisateur des notes** : Persistance transparente
- Chargement prioritaire depuis le fichier serveur
- Fallback sur localStorage si fichier absent
- Bouton "Effacer" vide aussi localStorage
- Messages de confirmation et notifications
### Technique
- Nouvelle fonction `loadSavedNotes()` asynchrone
- Handler IPC `get-notes` pour récupérer depuis le serveur
- Auto-save avec debouncing de 2 secondes
- Structure JSON avec note courante + historique
## [1.2.13] - 2025-09-04
### Corrigé
- **Panneau de notes partiellement visible** : Correction du bug d'affichage au démarrage
- Le panneau était partiellement visible même fermé
- Position cachée ajustée à -620px pour garantir l'invisibilité complète
- Gestion dynamique du décalage selon la largeur actuelle
- Réinitialisation explicite de la position à l'ouverture
### Amélioré
- **Indicateur de redimensionnement plus visible** : Meilleure visibilité des barres
- Zone de clic élargie à 16px pour faciliter la saisie
- 3 barres verticales créées avec gradient CSS au lieu de caractères
- Hauteur de 30px pour une meilleure visibilité
- Changement de couleur gris vers violet au survol
## [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