Files
SimpleClient-releases/docs/changelog.md
Pierre Marx c64fe44cf0 release: Version 1.4.0 - Affichage de la version
- Affichage de la version dans l'interface (login et header)
- Version dans le titre de la fenêtre native
- Handler IPC pour exposer la version
- Styles CSS pour affichage élégant
- Bump version 1.4.0
2025-10-21 11:41:44 -04:00

666 lines
30 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 `<title>` 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 `<select>`
- 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