81 Commits

Author SHA1 Message Date
44adae2d05 UI: remove manual continue buttons for setup flows\n\nMotivations:\n- Enchaînement automatique des étapes sans interaction inutile\n- Éviter confusion pendant faucet/sync\n\nModifications:\n- Suppression des boutons dans wallet-setup.html et block-sync.html\n- Adaptation wallet-setup.ts pour redirection auto sans bouton\n\nPage affectées:\n- src/pages/wallet-setup/wallet-setup.html, src/pages/block-sync/block-sync.html, src/pages/wallet-setup/wallet-setup.ts 2025-10-30 11:54:09 +01:00
bd1762ee0c ci: docker_tag=dev-test
Motivations:
- Fix 502 en prod via build multi-pages et routes stables
- Stabilize IndexedDB (création stores) et faucet obligatoire
- Déploiement robuste: port 3004 garanti et logs

Modifications:
- Vite: inputs multi-pages, alias npm deploy:front
- Router/redirects: chemins
- Pages setup: URLs corrigées, suppression log faucet disabled
- DB: bump version à 5, upgrade crée stores manquants
- Script: scripts/deploy_front.sh (kill 3004, clean, build, start bg)
- Lint: perf monitor param non utilisé, warnings corrigés

Page affectées:
- vite.config.ts, src/router.ts
- src/pages/* (home, pairing, block-sync, wallet-setup, security-setup)
- src/services/* (database-config, performance-monitor)
- package.json, scripts/deploy_front.sh
2025-10-30 11:46:04 +01:00
10f85e20df Fix import path and logging syntax errors
**Motivations:**
• Fix import path error for secure-logger in router.ts
• Fix syntax error in home.ts logging call

**Modifications:**
• Updated import path from '../services/secure-logger' to './services/secure-logger' in router.ts
• Fixed logging call syntax in home.ts

**Pages affected:**
• router.ts
• home.ts
2025-10-30 08:03:40 +01:00
c9ff430b09 Standardize logging system and fix error display
**Motivations :**
- Inconsistent use of console.* methods across codebase
- Missing structured logging with proper levels and context
- Inline error display breaking UI layout
- Risk of sensitive data exposure in logs

**Modifications :**
- Replace all console.* calls with secureLogger.* in main files
- Add proper log levels: DEBUG, INFO, WARN, ERROR
- Add component context for better debugging
- Create styled error/warning/success containers
- Add comprehensive logging guidelines documentation
- Fix import paths for secureLogger in security-setup.ts

**Pages affectées :**
- src/services/service.ts - Main service logging
- src/pages/home/home.ts - Home page logging
- src/pages/security-setup/security-setup.ts - Security setup logging
- src/utils/sp-address.utils.ts - SP address utilities logging
- src/router.ts - Router logging
- src/websockets.ts - WebSocket logging
- src/4nk.css - Error container styles
- docs/LOGGING_GUIDELINES.md - Logging best practices
2025-10-30 00:14:39 +01:00
b8e5ae3088 Fix wallet key recognition by using restoreDevice instead of create_device_from_sp_wallet
**Motivations :**
- create_device_from_sp_wallet() créait un nouveau device, effaçant birthday et last_scan
- restoreDevice() préserve toutes les données existantes du device
- Le faucet est temporairement désactivé car le relay n'a pas de wallet Bitcoin Core configuré

**Modifications :**
- src/services/service.ts : Remplacé create_device_from_sp_wallet() par restoreDevice()
- src/pages/home/home.ts : Désactivé temporairement le faucet avec message explicatif
- Supprimé la vérification du birthday qui n'est plus nécessaire

**Pages affectées :**
- src/services/service.ts : Correction de ensureWalletKeysAvailable() pour préserver les données du device
- src/pages/home/home.ts : Désactivation temporaire du faucet
2025-10-29 22:47:00 +01:00
fb47dfbfd2 Fix wallet keys format - spend_key must be {Secret: string} object
**Motivations :**
- Le faucet fonctionne mais les clés ne sont pas reconnues par le SDK
- has_spend_key: false, has_scan_key: false malgré l'injection des clés
- Le format des clés n'est pas correct pour le SDK

**Modifications :**
- src/services/service.ts : Correction du format de spend_key en objet {Secret: string}
- Ajout de logs pour vérifier le format des clés injectées
- Cela correspond au format attendu par le SDK

**Pages affectées :**
- src/services/service.ts : Amélioration de ensureWalletKeysAvailable() pour le bon format des clés
2025-10-29 22:27:58 +01:00
039f6e3583 Fix faucet WebSocket connection issue
**Motivations :**
- Le faucet échoue avec 'Cannot read properties of undefined (reading 'readyState')'
- La connexion WebSocket n'est pas prête quand le faucet est appelé
- Il faut s'assurer que les relays sont connectés avant d'appeler le faucet

**Modifications :**
- src/pages/home/home.ts : Ajout de connectAllRelays() avant l'appel du faucet
- Cela garantit que la connexion WebSocket est prête

**Pages affectées :**
- src/pages/home/home.ts : Amélioration de la gestion du faucet avec connexion des relays
2025-10-29 22:23:37 +01:00
84d9852aa2 Fix faucet timing - move to pairing page after credentials creation
**Motivations :**
- Le faucet s'exécute pendant birthday-setup mais les credentials n'existent pas encore
- Cela cause des erreurs 'No credentials found' et 'WebAuthn decryption required'
- Le faucet doit s'exécuter après la création des credentials dans la page de pairing

**Modifications :**
- src/services/service.ts : Désactivation de l'appel automatique du faucet dans updateDeviceBlockHeight()
- src/services/service.ts : Rendre getTokensFromFaucet() public pour l'appeler depuis home.ts
- src/pages/home/home.ts : Ajout de l'appel du faucet après la création des credentials

**Pages affectées :**
- src/services/service.ts : Amélioration de la gestion du faucet
- src/pages/home/home.ts : Ajout de l'appel du faucet au bon moment
2025-10-29 22:18:40 +01:00
f7c2f86d30 Fix pairing credentials restoration and wallet keys management
**Motivations :**
- Le pairing échouait avec l'erreur 'Wallet keys not available - WebAuthn decryption required'
- Le device stocké en base ne contenait pas les clés spend_key et scan_key dans sp_wallet
- Ces clés étaient stockées séparément dans les credentials chiffrés
- Il fallait restaurer ces clés dans le device en mémoire avant de pouvoir les utiliser

**Modifications :**
- ensureWalletKeysAvailable() : Maintenant asynchrone, vérifie si les clés sont disponibles dans le device en mémoire, sinon les restaure depuis les credentials
- Restauration des clés : Si les clés ne sont pas en mémoire, la méthode récupère les credentials, restaure les clés dans le device, et le restaure via restoreDevice()
- Méthodes asynchrones : getAmount() et getDeviceAddress() sont maintenant asynchrones pour supporter la restauration des clés
- Appels mis à jour : Tous les appels à ces méthodes ont été mis à jour avec await

**Pages affectées :**
- src/services/service.ts : Restauration automatique des clés depuis les credentials
- src/utils/sp-address.utils.ts : Appels asynchrones à getDeviceAddress()
- src/router.ts : Appels asynchrones à getDeviceAddress()
- src/components/device-management/device-management.ts : Appels asynchrones à getDeviceAddress()
- src/services/iframe-pairing.service.ts : Appels asynchrones à getDeviceAddress()
2025-10-29 20:26:33 +01:00
90bb585251 refactor: remove duplicated code and dead code
**Motivations :**
- Éliminer la duplication de code pour la vérification PBKDF2 key
- Éliminer la duplication de code pour la vérification du wallet avec retries
- Supprimer les imports commentés (code mort)
- Centraliser la logique de vérification des prérequis dans un utilitaire

**Modifications :**
- Créer src/utils/prerequisites.utils.ts avec checkPBKDF2Key() et checkWalletWithRetries()
- Remplacer toutes les occurrences dupliquées dans router.ts, home.ts, birthday-setup.ts, block-sync.ts, wallet-setup.ts
- Supprimer les imports commentés dans device-management.ts, pairing.service.ts, modal.service.ts
- Utiliser pbkdf2KeyResult.key au lieu de récupérer la clé plusieurs fois dans wallet-setup.ts

**Pages affectées :**
- src/utils/prerequisites.utils.ts (nouveau fichier utilitaire)
- src/router.ts (utilise checkPBKDF2Key)
- src/pages/home/home.ts (utilise checkPBKDF2Key, checkWalletWithRetries)
- src/pages/birthday-setup/birthday-setup.ts (utilise checkPBKDF2Key, checkWalletWithRetries)
- src/pages/block-sync/block-sync.ts (utilise checkPBKDF2Key, checkWalletWithRetries)
- src/pages/wallet-setup/wallet-setup.ts (utilise checkPBKDF2Key, pbkdf2KeyResult.key)
- src/services/service.ts (supprime imports commentés)
- src/components/device-management/device-management.ts (supprime import commenté)
- src/services/pairing.service.ts (supprime imports commentés)
- src/services/modal.service.ts (supprime import commenté)
2025-10-29 16:47:12 +01:00
aa95537254 fix: correct TypeScript and ESLint errors
**Motivations :**
- Corriger les erreurs TypeScript qui bloquaient la compilation
- Corriger les erreurs ESLint pour améliorer la qualité du code
- Utiliser les bons formats pour secureLogger.error

**Modifications :**
- Corriger les appels secureLogger.error pour passer error comme 2e paramètre
- Ajouter les imports manquants (Database dans security-mode.service.ts)
- Préfixer les variables non utilisées avec _ pour respecter ESLint
- Corriger les comparaisons BigInt (utiliser BigInt(0) au lieu de 0n)
- Ajouter @ts-expect-error pour PasswordCredential API expérimentale
- Corriger le paramètre services non utilisé dans router.ts

**Pages affectées :**
- src/services/service.ts (comparaisons BigInt, imports)
- src/services/security-mode.service.ts (import Database)
- src/services/secure-credentials.service.ts (secureLogger.error, PasswordCredential)
- src/services/credentials/encryption.service.ts (secureLogger.error, salt type)
- src/router.ts (paramètre _services)
- src/components/device-management/device-management.ts (variable _data)
- src/components/secure-credentials/secure-credentials.ts (variable _error)
- src/components/security-mode-selector/security-mode-selector.ts (paramètre _mode)
- src/components/login-modal/login-modal.js (window globals)
2025-10-29 16:37:28 +01:00
8e6756539d fix: replace dynamic imports with static imports in home.ts
**Motivations :**
- Les imports dynamiques causaient des erreurs de redéclaration TypeScript
- L'erreur 500 venait de ces erreurs de compilation
- Les imports statiques sont plus fiables avec Vite

**Modifications :**
- Ajouter les imports statiques de SecureCredentialsService et SecurityModeService en haut de home.ts
- Remplacer tous les imports dynamiques par des références aux imports statiques
- Supprimer les redéclarations de SecureCredentialsService qui causaient l'erreur TS2451

**Pages affectées :**
- src/pages/home/home.ts (imports statiques)
2025-10-29 16:29:20 +01:00
36adf1df12 refactor: extract device reading to lightweight service to avoid WebAssembly initialization
**Motivations :**
- home.ts utilise Services uniquement pour getDeviceFromDatabase() et getDeviceAddress()
- Services initialise WebAssembly qui peut causer des erreurs de mémoire
- Créer un service léger qui lit le device sans WebAssembly

**Modifications :**
- Créer DeviceReaderService qui lit le device depuis IndexedDB sans WebAssembly
- Extraire getDeviceFromDatabase() et getDeviceAddress() dans DeviceReaderService
- Modifier home.ts pour utiliser DeviceReaderService au lieu de Services
- DeviceReaderService déchiffre le device et extrait l'adresse depuis sp_wallet.address
- Supprimer l'import de Services dans home.ts

**Pages affectées :**
- src/services/device-reader.service.ts (nouveau service léger)
- src/pages/home/home.ts (utilise DeviceReaderService au lieu de Services)
2025-10-29 15:38:45 +01:00
b3af85d3a0 fix: add prerequisite checks and real block sync to block-sync page
**Motivations :**
- La page block-sync ne vérifie pas les prérequis comme les autres pages
- La synchronisation est simulée au lieu d'être réelle
- Il manque les vérifications de PBKDF2, wallet et birthday

**Modifications :**
- Ajout des vérifications de prérequis (PBKDF2 key, wallet, birthday) dans block-sync.ts
- Remplacement de la synchronisation simulée par une synchronisation réelle via updateDeviceBlockHeight()
- Ajout de la connexion aux relais si chain_tip n'est pas disponible
- Ajout de vérifications de wallet avec retry pour gérer les problèmes de synchronisation
- Ajout de la gestion d'erreur avec redirection vers les pages appropriées selon le type d'erreur
- Amélioration de la gestion d'erreur avec messages clairs et redirections automatiques
- Déplacement de l'écouteur du bouton continuer avant le try pour être toujours disponible
- Ajout de vérifications de nullité pour les éléments DOM

**Pages affectées :**
- src/pages/block-sync/block-sync.ts (ajout des vérifications de prérequis et synchronisation réelle)
- src/pages/home/home.ts (ajout des vérifications de prérequis pour la page de pairing)
2025-10-29 15:21:19 +01:00
c2bd615e88 fix: resolve 'Device not found' error in birthday-setup
**Motivations :**
- L'erreur 'Device not found' se produit lors de la mise à jour de la date anniversaire
- Le wallet est bien créé et sauvegardé mais n'est pas trouvé lors de la récupération
- Problème d'incohérence entre l'accès direct à IndexedDB et l'accès via service worker

**Modifications :**
- Ajout de logs de débogage dans getDeviceFromDatabase pour tracer le problème
- Modification de getDeviceFromDatabase pour utiliser directement IndexedDB au lieu du service worker
- Correction des erreurs TypeScript dans birthday-setup.ts et home.ts
- Correction des comparaisons BigInt dans service.ts
- Modification de birthday-setup.ts pour éviter l'utilisation de méthodes privées

**Pages affectées :**
- src/services/service.ts (getDeviceFromDatabase, updateDeviceBlockHeight)
- src/services/database.service.ts (getObject)
- src/pages/birthday-setup/birthday-setup.ts
- src/pages/home/home.ts
- src/components/security-mode-selector/security-mode-selector.ts
2025-10-28 13:30:45 +01:00
057102300a Fix TypeScript errors and display issues
**Motivations:**
- Corriger les erreurs TypeScript dans secure-credentials.service.ts qui empêchaient le chargement du module
- Résoudre l'affichage cassé des pages de setup en utilisant une redirection directe
- Supprimer le mode 'browser' et nettoyer le code mort

**Modifications:**
- Correction de la méthode inexistante getEncryptedKey() dans secure-credentials.service.ts
- Correction de la redéclaration de variable encryptedKey dans generatePBKDF2Key()
- Suppression des références au mode 'browser' supprimé dans security-mode.service.ts
- Ajout des propriétés requiresOTP et requiresPassword dans l'interface SecurityModeConfig
- Suppression de la méthode retrieveKeyFromBrowser() non utilisée dans storage.service.ts
- Changement de stratégie de routage pour les pages de setup (redirection directe au lieu d'injection)
- Mise à jour des textes des options de sécurité (Proton Pass → Clé de sécurité, OTP → code à usage unique)

**Pages affectées:**
- src/services/secure-credentials.service.ts (correction des erreurs principales)
- src/services/security-mode.service.ts (correction des références au mode browser)
- src/services/credentials/storage.service.ts (suppression de la méthode non utilisée)
- src/router.ts (changement de stratégie de routage)
- src/pages/security-setup/security-setup.html (mise à jour des textes)
- src/pages/wallet-setup/wallet-setup.html (mise à jour des textes)
- src/components/security-mode-selector/ (suppression du mode browser)
- src/pages/home/home.ts (suppression du mode browser)
- src/services/service.ts (suppression du mode browser)
2025-10-27 18:56:51 +01:00
0b92af0905 fix: add missing methods validatePasswordStrength and deleteCredentials to SecureCredentialsService 2025-10-26 03:04:44 +01:00
aa913ef930 feat: centralize database configuration and fix service worker blocking
**Motivations :**
- Centralize database configuration to prevent version inconsistencies
- Fix service worker blocking during wallet setup
- Ensure all database stores are created at initialization

**Modifications :**
- Created database-config.ts with centralized DATABASE_CONFIG (name, version, stores)
- Updated storage.service.ts to use DATABASE_CONFIG and create all stores on upgrade
- Updated security-setup.ts to initialize database with complete configuration
- Updated wallet-setup.ts to call SDK directly and bypass service worker blocking
- Updated database.service.ts, webauthn.service.ts, and database.worker.js to use DATABASE_CONFIG
- Removed service worker dependency for wallet setup page

**Pages affected :**
- security-setup.html: Initializes database with all stores on page load
- wallet-setup.html: Saves wallet directly to IndexedDB without service worker dependency
2025-10-26 02:19:00 +01:00
653c7f32ca ci: docker_tag=dev-test
**Motivations :**
- Implémentation du système de sélection de mode de sécurité
- Séparation claire entre les données de sécurité et les données du wallet
- Suppression des duplications entre 'encrypted-pbkdf2-key' et 'pbkdf2-key'
- Architecture modulaire pour la gestion des credentials

**Modifications :**
- Ajout du composant security-mode-selector pour la sélection du mode de sécurité
- Création des pages séquentielles : security-setup, wallet-setup, birthday-setup
- Implémentation des services de credentials (encryption, storage, webauthn)
- Ajout du service security-mode pour la gestion des modes de sécurité
- Correction du stockage des clés PBKDF2 avec le securityMode dynamique
- Suppression des méthodes redondantes dans StorageService
- Nettoyage des appels redondants dans secure-credentials.service.ts

**Pages affectées :**
- src/components/security-mode-selector/ (nouveau composant)
- src/pages/security-setup/ (nouvelle page)
- src/pages/wallet-setup/ (nouvelle page)
- src/pages/birthday-setup/ (nouvelle page)
- src/services/credentials/ (nouveaux services)
- src/services/security-mode.service.ts (nouveau service)
- src/services/secure-credentials.service.ts (modifié)
- src/services/database.service.ts (modifié)
- src/router.ts (modifié)
- src/pages/home/home.ts (modifié)
2025-10-24 18:29:31 +02:00
fe65881b02 ci: docker_tag=dev-test
**Motivations :**
- Correction de l'import dynamique dans getDeviceFromSDK()
- Ajout du déchiffrement des credentials après WebAuthn pour rendre les clés disponibles au SDK
- Résolution du problème où les clés restent chiffrées après WebAuthn

**Modifications :**
- Correction de l'import dans secure-credentials.service.ts (serviceModule.default)
- Ajout de retrieveCredentials() après storeCredentials() dans home.ts
- Les clés sont maintenant déchiffrées et disponibles pour le SDK après WebAuthn

**Pages affectées :**
- src/services/secure-credentials.service.ts
- src/pages/home/home.ts
2025-10-24 02:16:31 +02:00
1ddcde6b24 ci: docker_tag=dev-test
**Motivations :**
- Correction du problème WebAuthn qui ne se déclenche pas
- Réorganisation de l'ordre d'initialisation pour déclencher WebAuthn avant getDeviceAddress()
- Éviter le blocage sur ensureWalletKeysAvailable() avant WebAuthn

**Modifications :**
- Déplacement de handleMainPairing() avant getDeviceAddress() dans initHomePage()
- WebAuthn se déclenche maintenant en premier, puis l'UI est configurée après
- Correction de l'ordre logique : WebAuthn → déchiffrement → accès aux clés → UI

**Pages affectées :**
- src/pages/home/home.ts
2025-10-24 02:13:33 +02:00
4a3b23c9d7 ci: docker_tag=dev-test
**Motivations :**
- Correction du chiffrement : PBKDF2 génère les clés du SDK, pas des clés personnalisées
- WebAuthn chiffre maintenant les clés du SDK générées par PBKDF2
- Ajout de getDeviceFromSDK() pour récupérer les clés du SDK

**Modifications :**
- Remplacement de generateSpendKey/generateScanKey par getDeviceFromSDK()
- WebAuthn chiffre maintenant device.sp_wallet.spend_key et device.sp_wallet.scan_key
- Ajout de la méthode getDeviceFromSDK() pour accéder au SDK

**Pages affectées :**
- src/services/secure-credentials.service.ts
2025-10-24 01:57:30 +02:00
d34848c54e ci: docker_tag=dev-test
**Motivations :**
- Corriger l'ordre d'initialisation pour éviter l'erreur 'Current block height not set'
- Ajouter waitForBlockHeight() pour attendre que le handshake soit traité avant la synchronisation
- Corriger la détection des tokens du faucet en forçant un scan complet depuis birthday
- Corriger le birthday des nouveaux wallets pour permettre le scan des transactions faucet
- Ajouter les événements clés dans le champ de messages de l'interface web avec timestamps

**Modifications :**
- src/router.ts: Ajout de waitForBlockHeight() et messages utilisateur pour l'initialisation
- src/services/service.ts: Correction de la logique de scan, birthday antérieur pour nouveaux wallets, scan initial automatique, messages utilisateur avec timestamps
- src/pages/home/home.ts: Messages WebAuthn améliorés et processus de pairing

**Pages affectées :**
- Router d'initialisation avec synchronisation correcte
- Service de gestion des tokens faucet avec scan complet
- Interface utilisateur avec messages détaillés et timestamps
2025-10-24 01:19:12 +02:00
422ceef3e9 ci: docker_tag=dev-test
**Motivations :**
- Corriger la détection des tokens du faucet en forçant la synchronisation du wallet
- Ajouter des messages utilisateur compréhensibles pour remplacer les logs techniques
- S'assurer que le scan des blocs est effectué après création/restauration du wallet

**Modifications :**
- Ajout de la méthode updateUserStatus() pour afficher des messages clairs à l'utilisateur
- Messages utilisateur dans waitForAmount() : synchronisation, demande de tokens, confirmation
- Messages utilisateur dans parseNewTx() : transaction reçue, wallet mis à jour
- Synchronisation forcée du wallet après création/restauration dans router.ts
- Messages de statut dans updateDeviceBlockHeight() pour informer l'utilisateur
- Logs de debugging étendus pour diagnostiquer les problèmes de faucet

**Pages affectées :**
- src/services/service.ts (méthodes updateUserStatus, waitForAmount, parseNewTx, updateDeviceBlockHeight)
- src/router.ts (synchronisation après création/restauration du wallet)
2025-10-24 00:36:41 +02:00
f46f82be7a revert: restore automatic WebAuthn authentication without manual button
**Motivations :**
- Remove manual authentication button as requested by user
- Restore automatic WebAuthn triggering like before
- Maintain seamless user experience without manual intervention
- Keep WebAuthn security while ensuring automatic flow

**Modifications :**
- Removed manual authentication button and click handler
- Restored automatic WebAuthn triggering in handleMainPairing()
- Simplified authentication flow to be automatic on page load
- Maintained proper error handling and user feedback
- Kept spinner and status messages for user feedback

**Pages affectées :**
- src/pages/home/home.ts: Restored automatic WebAuthn authentication flow
2025-10-23 22:31:10 +02:00
8057ff5b2c refactor: remove dead code and obsolete components
**Motivations :**
- Clean up unused functions and components
- Remove obsolete QR scanner functionality
- Remove unused modal and member selection code
- Keep iframe functionality as requested
- Simplify codebase by removing dead code

**Modifications :**
- Removed openModal, scanDevice, populateMemberSelect functions
- Removed showHomeLoadingSpinner and hideHomeLoadingSpinner functions
- Removed unused imports (Routing)
- Removed loading-flow div from HTML
- Removed global window assignments for unused functions
- Kept all iframe-related functionality intact

**Pages affectées :**
- src/pages/home/home.ts: Removed dead code and unused functions
- src/pages/home/home.html: Removed obsolete loading state div
2025-10-23 22:18:51 +02:00
535bcf5314 fix: restore automatic WebAuthn authentication without manual button
**Motivations :**
- Remove manual authentication button as requested by user
- Restore automatic WebAuthn triggering like before
- Maintain seamless user experience without manual intervention
- Keep WebAuthn security while ensuring automatic flow

**Modifications :**
- Removed manual authentication button and click handler
- Restored automatic WebAuthn triggering in handleMainPairing()
- Simplified authentication flow to be automatic on page load
- Maintained proper error handling and user feedback
- Kept spinner and status messages for user feedback

**Pages affectées :**
- src/pages/home/home.ts: Restored automatic WebAuthn authentication flow
2025-10-23 22:04:08 +02:00
9b3af0b5ea fix: improve WebAuthn button visibility and add debug logging
**Motivations :**
- WebAuthn window not appearing due to button visibility issues
- Add debug logging to troubleshoot authentication flow
- Ensure authentication button is clearly visible to user
- Improve user experience with better styling and feedback

**Modifications :**
- Added inline styles to authentication button for better visibility
- Added comprehensive debug logging to track button creation and click events
- Improved button styling with centered layout and clear visual hierarchy
- Added error handling for missing DOM elements
- Enhanced user feedback with clear instructions

**Pages affectées :**
- src/pages/home/home.ts: Enhanced button visibility and debug logging
2025-10-23 22:02:35 +02:00
4f8e43ed87 fix: implement proper WebAuthn user interaction and fix WebAssembly serialization
**Motivations :**
- WebAuthn requires user gesture (click) to work properly
- Fix WebAssembly serialization error 'invalid type: sequence, expected a map'
- Provide clear UI for user to trigger WebAuthn authentication
- Ensure proper error handling for authentication failures

**Modifications :**
- Added authentication button in home.ts that requires user click for WebAuthn
- Fixed WebAssembly members parameter to pass object map instead of array
- Added CSS styles for authentication button with hover effects
- Improved error handling and user feedback for authentication process
- Maintained user interaction requirement for WebAuthn security

**Pages affectées :**
- src/pages/home/home.ts: Added user interaction button for WebAuthn
- src/services/service.ts: Fixed WebAssembly serialization to use object map
- src/4nk.css: Added authentication button styles with responsive design
2025-10-23 21:59:35 +02:00
5def07797e fix: remove manual WebAuthn button and restore automatic authentication
**Motivations :**
- Remove the manual 'Authenticate with Browser' button that was reappearing
- Restore automatic WebAuthn authentication flow as requested by user
- Ensure seamless user experience without manual intervention

**Modifications :**
- Removed dynamic button creation in sp-address.utils.ts onCreateButtonClick()
- Changed WebAuthn flow from manual button click to automatic trigger
- Updated status message from 'Click to authenticate' to 'Authenticating with browser...'
- Simplified WebAuthn authentication to be automatic without user gesture requirement

**Pages affectées :**
- src/utils/sp-address.utils.ts: Removed manual button creation and restored auto WebAuthn
2025-10-23 21:53:45 +02:00
e393a4f615 fix: resolve multiple critical issues
**Motivations :**
- Fix WebAuthn authentication regression (button reappeared instead of auto-trigger)
- Resolve infinite loop of 'process.states is not an array' logs
- Fix WebAssembly serialization error 'invalid type: map, expected a sequence'
- Improve WebAuthn error handling and timeout management

**Modifications :**
- Restored automatic WebAuthn triggering in home.ts initHomePage()
- Fixed handshake deduplication logic in service.ts using content-based keys
- Added membersList validation before WebAssembly calls to prevent empty object errors
- Enhanced WebAuthn error handling with specific error messages and increased timeout to 2 minutes
- Improved error messages for NotAllowedError, NotSupportedError, and SecurityError

**Pages affectées :**
- src/pages/home/home.ts: Restored auto WebAuthn trigger, removed manual button
- src/services/service.ts: Fixed handshake deduplication and added membersList validation
- src/services/secure-credentials.service.ts: Enhanced WebAuthn error handling and timeout
2025-10-23 21:49:20 +02:00
8af1fd055d Fix WebAssembly members parameter type error
**Motivations :**
- WebAssembly expects array (sequence) but was receiving object (map) for members parameter
- Error: 'invalid type: map, expected a sequence at line 1 column 86'

**Modifications :**
- Convert getAllMembers() object to array using Object.values() before passing to WebAssembly
- Fixed in createProcess, createPrdUpdate, createResponsePrd, validateState, parseCipher, parseNewTx, requestData
- Added debug logging for members array length

**Pages affectées :**
- src/services/service.ts
2025-10-23 21:29:50 +02:00
bf68677d3a Update error message to indicate waiting for user validation
**Motivations :**
- User wants clearer message when authentication is pending
- Instead of 'Authentication failed', indicate that we're waiting for user validation

**Modifications :**
- Changed error message from ' Authentication failed' to ' Waiting for user to validate secure key access...'
- Changed color from error-color to info-color to be less alarming
- Message is now in English as requested

**Pages affectées :**
- src/pages/home/home.ts
2025-10-23 21:25:51 +02:00
63f6ac828f Remove process display functionality
**Motivations :**
- Process display is not needed at this stage and clutters the interface
- User feedback indicates it's ugly and unnecessary

**Modifications :**
- Removed displayExistingProcesses() function calls from handleMainPairing()
- Removed displayExistingProcesses() function calls from initHomePage()
- Deleted the entire displayExistingProcesses() function
- Simplified interface to focus on core pairing functionality

**Pages affectées :**
- src/pages/home/home.ts
2025-10-23 21:23:12 +02:00
cbe49aff5c Simplify process display to avoid interface lag
**Motivations :**
- Interface was lagging when adding processes one by one
- Need to display all processes at once in a simple format

**Modifications :**
- Changed from adding processes one by one to building all messages first
- Display all processes in a single div with pre-line formatting
- Use simple text concatenation instead of DOM manipulation loops

**Pages affectées :**
- src/pages/home/home.ts
2025-10-23 21:20:23 +02:00
6cd46f33d5 Display each process as separate message
**Motivations :**
- User wants each process displayed as a separate message, not all together
- Each process should be added individually to the status field

**Modifications :**
- Changed from joining all messages to displaying each process individually
- Each process is added as a separate line with <br> tag
- Messages are accumulated in the status field one by one

**Pages affectées :**
- src/pages/home/home.ts
2025-10-23 21:18:23 +02:00
60ab17bb26 Simplify process display to simple text messages
**Motivations :**
- User wants simple text messages, one per line, not complex UI
- Simplify the process display to basic text format

**Modifications :**
- Changed from complex HTML cards to simple text messages
- Each process displayed as one line of text with basic info
- Messages joined with newlines and displayed in monospace font
- Removed complex styling and containers

**Pages affectées :**
- src/pages/home/home.ts
2025-10-23 21:17:31 +02:00
a9f3ff8037 Display existing processes in status field
**Motivations :**
- User wants to see each retrieved process displayed as a message in the status field
- Need to show process information after authentication or initialization

**Modifications :**
- Added displayExistingProcesses() function to fetch and display processes
- Modified handleMainPairing() to call displayExistingProcesses() after authentication
- Modified initHomePage() to display processes even if authentication fails
- Each process shows: ID (truncated), states count, members count, last update
- Processes displayed in scrollable container with styled cards

**Pages affectées :**
- src/pages/home/home.ts
2025-10-23 21:16:15 +02:00
06df2ff6c1 Add debug logs to router navigation
**Motivations :**
- Application initializes but doesn't display anything after service initialization
- Need to identify where navigation fails in the router flow

**Modifications :**
- Added debug logs to navigate() function to track path processing
- Added debug logs to handleLocation() function to track route handling
- Added debug logs to home route processing to track component creation
- Added debug logs to navigation completion in init() function

**Pages affectées :**
- src/router.ts
2025-10-23 21:13:53 +02:00
3260ea9695 refactor: Remove manual authentication button, improve auto-flow
**Motivations :**
- Remove unnecessary 'Authenticate with Browser' button since authentication is automatic
- Simplify UI by removing manual interaction requirement
- Add better logging for relay connection debugging

**Modifications :**
- Removed mainPairingButton from home.html template
- Simplified setupMainPairing() to not handle button events
- Cleaned up handleMainPairing() to remove button state management
- Added relay connection success logging in router.ts

**Pages affectées :**
- src/pages/home/home.html - Removed authentication button
- src/pages/home/home.ts - Simplified authentication flow
- src/router.ts - Added relay connection logging
2025-10-23 21:09:34 +02:00
73b8d722c2 fix: Initialize home page after component creation
**Motivations :**
- Fix blank page after account deletion
- Ensure home page is properly initialized when navigating to home
- Add proper initialization call after login-4nk-component creation

**Modifications :**
- Added initHomePage() call after login-4nk-component is added to DOM
- Added error handling for home page initialization
- Added debug logs to track initialization process

**Pages affectées :**
- src/router.ts - Added home page initialization in handleLocation
2025-10-23 21:04:35 +02:00
1d711932ce fix: Actually trigger WebAuthn authentication
**Motivations :**
- Fix misleading 'Authentication completed successfully' message
- Ensure WebAuthn is actually triggered, not just pairing process
- Provide accurate status messages for WebAuthn operations

**Modifications :**
- Import secureCredentialsService directly in handleMainPairing
- Check for existing credentials and trigger appropriate WebAuthn flow
- Separate status messages for credential decryption vs creation
- Only show success message after actual WebAuthn completion

**Pages affectées :**
- src/pages/home/home.ts - Fixed WebAuthn triggering logic
2025-10-23 21:01:19 +02:00
65132ea2f0 fix: Prevent handshake processing loop and auto-trigger WebAuthn
**Motivations :**
- Fix infinite loop of 'process.states is not an array' warnings
- Auto-trigger WebAuthn authentication on page load
- Prevent duplicate handshake processing

**Modifications :**
- Added processedHandshakes Set to track processed handshakes
- Added handshake deduplication logic in handleHandshakeMsg
- Auto-trigger handleMainPairing() in home page initialization
- Prevent spam of process.states warnings

**Pages affectées :**
- src/services/service.ts - Added handshake deduplication
- src/pages/home/home.ts - Auto-trigger WebAuthn on init
2025-10-23 20:54:34 +02:00
4ec026e892 fix: Add array check for process.states iteration
**Motivations :**
- Fix TypeError: process.states is not iterable error
- Ensure process.states is an array before iteration
- Prevent runtime errors during handshake processing

**Modifications :**
- Added Array.isArray() check before iterating over process.states
- Added warning log when process.states is not an array
- Continue to next process if states is not iterable

**Pages affectées :**
- src/services/service.ts - Fixed process.states iteration safety
2025-10-23 20:52:20 +02:00
8261e0533d fix: Always trigger WebAuthn authentication
**Motivations :**
- Restore previous WebAuthn behavior that was lost in interface simplification
- Ensure WebAuthn is always triggered regardless of existing credentials
- Maintain consistent authentication flow

**Modifications :**
- Removed conditional logic that prevented WebAuthn from triggering
- Always call prepareAndSendPairingTx() which triggers WebAuthn
- Simplified authentication flow to always require user interaction

**Pages affectées :**
- src/pages/home/home.ts - Fixed WebAuthn triggering logic
2025-10-23 20:40:41 +02:00
050351d52e fix: Resolve WebSocket parsing and WASM serialization errors
**Motivations :**
- Fix JSON parsing error in parseNewTx method
- Fix process.states iteration error in handleHandshakeMsg
- Add debugging for WASM serialization issues
- Improve error handling for malformed data structures

**Modifications :**
- Fixed parseNewTx to handle both string and object inputs
- Added Array.isArray check for process.states before iteration
- Added debug logging for members data in createProcess
- Enhanced error handling for WebSocket message processing

**Pages affectées :**
- src/services/service.ts - Fixed parsing and iteration errors
2025-10-23 20:24:14 +02:00
33935f4b18 feat: Improve UI layout and add account deletion
**Motivations :**
- Make status field same width as authentication button
- Add secure account deletion functionality
- Improve visual consistency of interface

**Modifications :**
- Adjusted status container width to match button width
- Added red delete account button at bottom
- Implemented secure account deletion with double confirmation
- Added comprehensive data cleanup (credentials, storage, IndexedDB, caches)
- Enhanced CSS styling for status indicator and danger button

**Pages affectées :**
- src/pages/home/home.html - Added delete account button
- src/pages/home/home.ts - Added account deletion logic
- src/4nk.css - Enhanced styling for status and danger button
2025-10-23 20:20:51 +02:00
802a77b568 refactor: Simplify pairing interface with direct WebAuthn flow
**Motivations :**
- Simplify user experience with single authentication flow
- Remove confusing mode selection interface
- Hide 4 words display (will be used later in interface)
- Direct WebAuthn authentication for both new and existing pairings

**Modifications :**
- Replaced mode selection with single pairing interface
- Added logic to detect existing credentials vs new pairing
- Removed 4 words display from pairing process
- Simplified HTML structure with single main interface
- Updated JavaScript logic for direct WebAuthn flow

**Pages affectées :**
- src/pages/home/home.html - Simplified to single interface
- src/pages/home/home.ts - Added direct WebAuthn flow logic
- src/utils/sp-address.utils.ts - Removed 4 words display
2025-10-23 20:18:05 +02:00
82b3b27ab6 feat: Add mode selection interface for creator/joiner
**Motivations :**
- Improve user experience with clear role selection
- Add intuitive interface to choose between creator and joiner modes
- Provide easy navigation between modes

**Modifications :**
- Added mode selection screen with two main buttons
- Added back buttons to return to mode selection
- Enhanced CSS styling for mode buttons and navigation
- Added JavaScript logic for mode switching

**Pages affectées :**
- src/pages/home/home.html - Added mode selection interface
- src/pages/home/home.ts - Added mode selection logic
- src/4nk.css - Added styling for mode selection and back buttons
2025-10-23 20:13:34 +02:00
bec3ab1729 fix: Improve relay readiness logic and prevent iframe initialization in full page
**Motivations :**
- Fix 'Waiting for relays to be ready...' issue by properly waiting for relay spAddress
- Prevent unnecessary iframe creation when application runs in full page mode
- Improve relay address validation logic

**Modifications :**
- Enhanced createProcess to properly wait for relay spAddress before proceeding
- Added better relay address validation with non-empty string check
- Conditional iframe initialization only when running in iframe context
- Added debug logging for available relays when address not found

**Pages affectées :**
- src/services/service.ts - Relay readiness logic
- src/pages/home/home.ts - Conditional iframe initialization
2025-10-23 19:02:42 +02:00