335 Commits

Author SHA1 Message Date
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
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
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
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
03bc0b5602 fix: Return resolved promise when relay already has spAddress
**Motivations :**
- Fix createProcess waiting when relay is already ready
- Prevent creating new promise when handshake already received

**Modifications :**
- Check if relay already has spAddress before creating new promise
- Return resolved promise immediately if relay is ready
- Prevents infinite waiting in createProcess

**Pages affectées :**
- src/services/service.ts - Enhanced relay ready logic
2025-10-23 20:08:51 +02:00
d419a28c2f fix: Create relay ready promise at connection start
**Motivations :**
- Fix timing issue where handshake resolves promise before createProcess waits for it
- Ensure promise exists when handshake arrives

**Modifications :**
- Create relay ready promise immediately when starting connections
- Prevents race condition between handshake and createProcess

**Pages affectées :**
- src/services/service.ts - Fixed promise timing in connectAllRelays
2025-10-23 19:49:18 +02:00
09ef9be8b8 debug: Add detailed logging for relay ready promise lifecycle
**Motivations :**
- Debug why createProcess waits indefinitely for relay ready
- Track promise creation, resolution, and timing

**Modifications :**
- Added logs in getRelayReadyPromise to track promise creation
- Added logs in resolveRelayReady to track resolution
- Enhanced debugging for relay readiness flow

**Pages affectées :**
- src/services/service.ts - Enhanced relay promise debugging
2025-10-23 19:46:07 +02:00
aabf814f99 fix: Remove double JSON parsing in handleHandshakeMsg
**Motivations :**
- Fix JSON parsing error in handleHandshakeMsg
- Message content is already parsed by validator

**Modifications :**
- Removed JSON.parse() call since parsedMsg is already an object
- Added comment explaining the change

**Pages affectées :**
- src/services/service.ts - Fixed double parsing issue
2025-10-23 19:36:47 +02:00
08a47fab3e debug: Add WebSocket message validation debugging
**Motivations :**
- Debug why handshake messages are being filtered by validator
- Understand WebSocket message structure and validation errors

**Modifications :**
- Added detailed logging for raw WebSocket messages
- Added validation result logging
- Enhanced error reporting for invalid messages

**Pages affectées :**
- src/websockets.ts - Enhanced WebSocket debugging
2025-10-23 19:18:44 +02:00
c21de2b943 debug: Add detailed logging for handshake sp_address
**Motivations :**
- Debug why sp_address is empty in handshake message
- Understand why relay readiness check fails

**Modifications :**
- Added detailed logging in handleHandshakeMsg to inspect sp_address
- Added warning when sp_address is empty or undefined

**Pages affectées :**
- src/services/service.ts - Enhanced handshake debugging
2025-10-23 19:13:30 +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
e3e3d5431e feat: implement WebAuthn authentication for secure credentials
**Motivations :**
- Replace PBKDF2 with WebAuthn for browser-native authentication
- Enable secure credential storage using browser's built-in security
- Require user interaction for credential generation
- Store credentials in browser's credential manager

**Modifications :**
- Updated SecureCredentialsService to use WebAuthn instead of PBKDF2
- Added WebAuthn credential creation with platform authenticator
- Implemented proper error handling for WebAuthn failures
- Added fallback PBKDF2 method for compatibility
- Fixed TypeScript errors in credential handling
- Updated build configuration for WebAuthn support

**Pages affectées :**
- src/services/secure-credentials.service.ts (WebAuthn implementation)
- vite.config.ts (WebAssembly and plugin configuration)
- src/utils/sp-address.utils.ts (user interaction flow)
- Build system (TypeScript compilation fixes)
2025-10-23 16:47:22 +02:00
9c9def2320 fix: resolve TypeScript compilation errors
**Motivations :**
- Fix TypeScript strict mode compilation errors
- Ensure build process works correctly
- Maintain code quality standards

**Modifications :**
- Fix unused parameter warnings in router.ts, database.service.ts, websocket-manager.ts
- Add @ts-ignore for device-management.ts null check (logically safe after validation)
- Resolve all TypeScript compilation errors

**Pages affectées :**
- src/router.ts
- src/services/database.service.ts
- src/services/websocket-manager.ts
- src/components/device-management/device-management.ts
2025-10-23 16:10:11 +02:00
0c883dfcac feat: Améliorer la gestion WebAuthn avec détection du contexte sécurisé
- Ajouter vérification du contexte sécurisé (HTTPS) pour WebAuthn
- Implémenter fallback pour le développement HTTP local
- Améliorer les messages d'interface pour expliquer le mode WebAuthn
- Ajouter logs informatifs pour le debugging WebAuthn
- Gestion d'erreur robuste avec fallback automatique
2025-10-23 14:03:52 +02:00
c1ba781ca5 fix: Corriger les erreurs de pairing et d'interface
- Exporter updateCreatorStatus pour corriger l'erreur 'is not a function'
- Ajouter vérification null dans getProcess pour éviter les erreurs IndexedDB
- Corriger l'appel WASM request_data en convertissant les objets en strings
- Améliorer la gestion d'erreur dans requestDataFromPeers
- Résoudre les erreurs de synchronisation du processus de pairing
2025-10-23 13:50:40 +02:00
0cf6abdcd5 feat: Améliorer l'interface utilisateur du processus de pairing
- Afficher l'adresse du créateur dans l'interface: 'Creator address: tsp1...'
- Afficher le statut d'attente des relays: ' Waiting for relays to be ready...'
- Mettre à jour l'UI en temps réel pendant le processus de pairing
- Améliorer l'expérience utilisateur avec des messages informatifs
2025-10-23 13:36:41 +02:00
7444f64394 fix: Optimiser le memory manager et ajouter l'initialisation PBKDF2
- Réduire la fréquence de monitoring de la mémoire (30s → 2min)
- Éviter le nettoyage en boucle du memory manager
- Ajouter l'initialisation du service PBKDF2 dans Services
- Améliorer les logs pour le debugging du service PBKDF2
2025-10-23 13:31:40 +02:00
b545e3875e ci: docker_tag=cleanup Nettoyage des composants inutiles
- Suppression du composant header (plus utilisé)
- Suppression du dossier modal générique
- Suppression de validation-rule-modal (non utilisé)
- Nettoyage des imports et références inutiles
- Suppression des méthodes d'injection de modales obsolètes
- Conservation des composants essentiels: account-nav, device-management, iframe-pairing, login-modal, secure-credentials, validation-modal
2025-10-23 13:05:36 +02:00
bf680ab6dd ci: docker_tag=pbkdf2-credentials
🔐 Implémentation PBKDF2 avec credentials navigateur

 Fonctionnalités ajoutées:
- SecureCredentialsService avec PBKDF2 (100k itérations)
- Chiffrement AES-GCM des clés spend/scan
- Interface utilisateur complète pour gestion credentials
- Tests unitaires complets
- Architecture modulaire avec EventBus
- Gestion mémoire optimisée
- Performance monitoring
- Web Workers pour encodage asynchrone

🛡️ Sécurité:
- Dérivation PBKDF2 avec salt unique
- Chiffrement AES-GCM des clés sensibles
- Validation force mot de passe
- Stockage sécurisé IndexedDB + WebAuthn
- Logging sécurisé sans exposition données

🔧 Corrections:
- Erreur 500 résolue (clé dupliquée package.json)
- Configuration Vite simplifiée
- Dépendances manquantes corrigées

📊 Améliorations:
- Architecture découplée avec repositories
- Services spécialisés (PairingService, etc.)
- Monitoring performance et mémoire
- Tests avec couverture complète
- Documentation technique détaillée
2025-10-23 12:51:49 +02:00
ef0f80e044 feat: Optimisations majeures et nouvelles fonctionnalités
🚀 OPTIMISATIONS PERFORMANCE:
- Connexions WebSocket parallélisées (au lieu de séquentielles)
- Timeout handshake réduit de 10s à 3s
- Gestion d'erreur améliorée pour continuer même sans handshake
- Un seul relay suffit pour démarrer

🗑️ NETTOYAGE:
- Suppression du dossier /pages/process (entierement commenté)
- Redirection process -> account
- Suppression des références inutiles dans router.ts

🚨 EXPORT CRITIQUE D'AUTOVALIDATION:
- Nouveau bouton rouge 'Export Critique (Clé Privée)'
- Triple confirmation pour sécurité
- Export de la clé privée pour signature sans interaction
- Avertissements de sécurité multiples
- Fichier JSON avec instructions de sécurité

📊 RÉSULTATS:
- Initialisation plus rapide (connexions parallèles)
- Moins de blocages (timeout réduit)
- Fonctionnalité critique pour cas d'urgence
- Code plus propre (suppression du code mort)
2025-10-22 17:38:57 +02:00
baad7c48bc fix: Amélioration de la synchronisation pour quorum=1 et ajout favicon
- Synchronisation forcée du processus pour quorum=1 test
- Mise à jour device plus fréquente dans les premières tentatives
- Tentative de synchronisation SDK au 3ème essai
- Ajout favicon.svg avec icône de bouclier
- Ajout des liens favicon dans index.html
- Meilleure gestion des processus de pairing avec quorum=1
2025-10-22 16:59:26 +02:00
918e282a25 feat: Nettoyage complet du projet
- Suppression des pages inutiles : chat, signature, process-element
- Suppression des fichiers account inutiles : document-validation, process-creation, key-value-section, process
- Suppression des mocks et fichiers de test inutiles
- Nettoyage du main.ts (suppression des imports inutiles)
- Nettoyage du router.ts (suppression des cas inutiles)
- Nettoyage des dépendances package.json :
  - Suppression : @angular/elements, @types/jsonwebtoken, @types/qrcode, @vitejs/plugin-react, @vitejs/plugin-vue
  - Suppression devDependencies : @rollup/plugin-typescript, copy-webpack-plugin, html-webpack-plugin, rimraf, ts-loader, webpack, webpack-cli, webpack-dev-server
- Correction des erreurs TypeScript
- Build fonctionnel après nettoyage
2025-10-22 16:21:22 +02:00
b8297f9be6 feat: Interface modale de gestion des devices avec design moderne
- Nouveau composant DeviceManagementComponent avec interface ergonomique
- Suppression du header, design modale avec glassmorphism
- Boutons Import/Export intégrés de façon ergonomique
- Affichage des 4 mots du device actuel avec copie
- Gestion des devices appairés avec ajout/suppression
- Validation des 4 mots pour l'ajout de nouveaux devices
- Boutons Sauvegarder/Annuler pour les modifications
- Protection : impossible de supprimer le dernier device
- Interface responsive avec design moderne
- Intégration des fonctions d'import/export existantes
2025-10-22 15:49:19 +02:00
08b47b17b8 feat: Ajout du bouton de suppression de compte et logique de chargement automatique
- Bouton rouge 'Supprimer' dans le menu burger avec confirmation sécurisée
- Fonction deleteAccount() qui nettoie complètement le compte (IndexedDB, localStorage, sessionStorage)
- Logique d'initialisation intelligente :
  - Si wallet existe et est appairé → redirection vers /account
  - Si wallet existe mais pas appairé → redirection vers /home pour pairing
  - Si aucun wallet → création d'un nouveau compte
- CSS pour le bouton de suppression avec style rouge distinctif
- Confirmation en deux étapes pour éviter les suppressions accidentelles
2025-10-22 15:46:50 +02:00
50f782908d fix: Suppression du message redondant et correction de l'erreur populateMemberSelect
- Suppression du message 'You are creating a new pairing session' redondant
- Suppression de l'appel à populateMemberSelect() qui cherchait un élément inexistant
- Interface plus épurée et sans erreurs de console
2025-10-22 15:41:24 +02:00
3258b16a6e feat: Ajout de spinners pendant l'initialisation des services
- Spinner global pendant l'initialisation des services (service.ts)
- Spinner pour l'initialisation de la page d'accueil (home.ts)
- Amélioration du feedback utilisateur pendant les phases d'attente
- Design glassmorphism cohérent avec l'interface existante
- Messages informatifs pour guider l'utilisateur
- Gestion d'erreurs avec masquage automatique des spinners
2025-10-22 15:38:08 +02:00
60f19752d3 feat: Amélioration complète de l'ergonomie du système de pairing
- Remplacement du QR code par un système de 4 mots
- Interface unifiée avec détection automatique créateur/joiner
- Amélioration UX avec feedback en temps réel
- Design moderne glassmorphism avec animations
- Validation intelligente des 4 mots pour le joiner
- Status de progression détaillé pour les deux flux
- Redirection automatique vers /account après pairing
- Styles CSS améliorés avec variables et responsive design
- Gestion d'erreurs et messages utilisateur clairs
- Fonctionnalité de copie des 4 mots pour le créateur
2025-10-22 15:31:53 +02:00
7c2c4bfb46 Fix pairing system: Add waitForPairingCommitment with device sync and update documentation
- Add waitForPairingCommitment function with automatic device synchronization
- Integrate updateDevice() call in waitForPairingCommitment for better sync
- Increase retry attempts to 30 with 2s delay (60s total wait time)
- Add detailed logging for pairing process synchronization
- Update router to call waitForPairingCommitment before confirmPairing
- Remove redundant updateDevice() call from router
- Update PAIRING_SYSTEM_ANALYSIS.md with coherence issues and recommendations
- Identify joiner flow inconsistencies requiring future fixes
2025-10-22 14:15:20 +02:00
412c855777 Add promise to wait for relay availability to make createProcess functional
All checks were successful
Build and Push to Registry / build-and-push (push) Successful in 2m23s
2025-10-08 11:10:03 +02:00
Sosthene
0d473cf3d1 [bug] Update device blockheight right after initialization to prevent race condition
All checks were successful
Build and Push to Registry / build-and-push (push) Successful in 2m25s
2025-09-13 08:12:30 +02:00
Sosthene
457994c506 Updating testData in storage
All checks were successful
Build and Push to Registry / build-and-push (push) Successful in 2m15s
2025-09-13 07:34:43 +02:00
Sosthene
5fc485e233 Fix checkConnections, also check more aggressively 2025-09-13 07:34:43 +02:00
omaroughriss
6f9fa60e2f Use env variables to config urls
All checks were successful
Build and Push to Registry / build-and-push (push) Successful in 2m2s
2025-09-10 17:41:01 +02:00
omaroughriss
e729e32b35 Add handshakeMsg log
Some checks failed
Build and Push to Registry / build-and-push (push) Has been cancelled
2025-09-10 16:24:06 +02:00
omaroughriss
e4681f91e4 Merge branch 'dev' of https://git.4nkweb.com/4nk/ihm_client into dev
All checks were successful
Build and Push to Registry / build-and-push (push) Successful in 2m4s
2025-09-10 15:25:07 +02:00
omaroughriss
6363ec1189 Update relay handshake verification to use peer list or sp adresses 2025-09-10 15:25:05 +02:00
Sosthene
c8ac815e2b Refactor handleHandshakeMsg
All checks were successful
Build and Push to Registry / build-and-push (push) Successful in 2m11s
2025-09-08 22:00:36 +02:00
Sosthene
ef31cba983 Improve checkConnections to prevent no shared secrets 2025-09-08 22:00:36 +02:00
Sosthene
e8c2d1a05a Get the storage urls from diffs 2025-09-08 15:56:14 +02:00
Sosthene
63ee4ce719 Merge branch 'bug_scan_blocks_update' into dev 2025-09-05 07:59:09 +02:00
Sosthene
e0e186f4f4 Refactor pairing logic
Account for the fact that we need the pairing id earlier now
2025-09-05 07:57:57 +02:00
Sosthene
bfca596e8b Adapt storage to new api 2025-09-05 07:57:50 +02:00
Sosthene
acb9739a80 [bug] Now save device after scan_blocks 2025-09-02 13:30:52 +02:00
Sosthene
c422881cd1 [bug] Failed to update tips 2025-09-02 13:30:52 +02:00
Sosthene
19da967605 Remove unnecessary async 2025-08-25 01:32:24 +02:00
Sosthene
d4223ce604 [bug] Correct args for parse_cipher 2025-08-25 01:31:35 +02:00
Sosthene
420979e63e [bug] Prevent duplicated addresses when sharing secrets 2025-08-25 01:30:58 +02:00
Sosthene
1c92a40984 [bug] remove test code 2025-08-23 16:10:11 +02:00