**Motivations:**
- Enable nostrimg.com to see detailed diagnostic logs
- Verify if the issue is code-related or server-side
- Collect logs to diagnose 500 errors
**Root causes:**
- Need to see actual request/response logs to diagnose the issue
**Correctifs:**
- Temporarily enabled nostrimg.com (enabled: true)
- Added comment indicating it's for diagnostic purposes
- Detailed logging already in place to capture request/response details
**Evolutions:**
- None
**Pages affectées:**
- lib/configStorageTypes.ts
**Motivations:**
- Document the code verification for nostrimg.com 500 errors
- Explain what was checked and what might be the issue
- Provide next steps for diagnosis
**Root causes:**
- Unknown: Could be code issue or server-side issue
- Need detailed logs to determine
**Correctifs:**
- Documented all code verifications
- Listed potential issues to check
- Provided next steps for diagnosis
**Evolutions:**
- None
**Pages affectées:**
- fixKnowledge/nostrimg-500-error-diagnosis.md (new)
**Motivations:**
- Diagnose why nostrimg.com returns 500 errors
- Verify if the code is causing the errors or if it's a server-side issue
- Log request and response details for troubleshooting
**Root causes:**
- Unknown: Could be code issue (wrong field name, headers, format) or server issue
- Need detailed logs to determine the cause
**Correctifs:**
- Added detailed request logging for nostrimg.com:
- URL, method, field name, filename, content type, file size
- All headers (Content-Type, Accept, User-Agent, Authorization)
- Added detailed response logging for nostrimg.com:
- Status code, status message, response headers
- Body preview (500 chars), body length, HTML detection
- Added comment about field name ('file') - some endpoints might need different names
**Evolutions:**
- None
**Pages affectées:**
- pages/api/nip95-upload.ts
**Motivations:**
- Provide clearer error messages when NIP-98 authentication is not available
- Disable nostrimg.com by default since it returns server errors (500)
- Help users understand why nostrcheck.me endpoint is skipped
**Root causes:**
- NIP-98 authentication requires unlocked account but error message was generic
- nostrimg.com endpoint consistently returns 500 errors
- Users don't understand why nostrcheck.me is skipped
**Correctifs:**
- Added detailed error messages for NIP-98 unavailability:
- No account: 'Please create or import an account'
- Account not unlocked: 'Please unlock your account with your recovery phrase'
- Disabled nostrimg.com by default (enabled: false) due to server errors
- Improved console warnings with specific reasons for skipping endpoints
**Evolutions:**
- None
**Pages affectées:**
- lib/nip95.ts
- lib/configStorageTypes.ts
**Motivations:**
- Fix Next.js 16.1.1 warning about unsupported eslint configuration
- Remove deprecated eslint option from next.config.js
**Root causes:**
- Next.js 16+ no longer supports eslint configuration in next.config.js
- The eslint option has been moved to command-line options or .eslintrc.json
**Correctifs:**
- Removed eslint configuration block from next.config.js
- Added comment explaining the change and alternatives
**Evolutions:**
- None
**Pages affectées:**
- next.config.js
**Motivations:**
- Document the issue with nostrimg.com returning HTML instead of JSON
- Explain possible root causes and solutions
- Provide diagnostic steps for troubleshooting
**Root causes:**
- Missing HTTP headers (Accept, User-Agent)
- Possible incorrect endpoint URL
- Possible authentication requirements
- Endpoint may be unavailable or changed
**Correctifs:**
- Added Accept and User-Agent headers
- Improved HTML error detection and classification
- Enhanced error messages and logging
**Evolutions:**
- None
**Pages affectées:**
- fixKnowledge/nostrimg-html-response-error.md (new)
**Motivations:**
- Some NIP-95 endpoints require Accept and User-Agent headers
- Better diagnosis of HTML error responses (404, 403, 500)
- More detailed error messages for troubleshooting
**Root causes:**
- Missing Accept: application/json header may cause endpoints to return HTML
- Missing User-Agent header may cause some servers to reject requests
- HTML error pages need better detection and classification
**Correctifs:**
- Added Accept: application/json header to all requests
- Added User-Agent: zapwall.fr/1.0 header to all requests
- Improved HTML error detection with 404/403/500 classification
- Enhanced error messages with specific suggestions based on error type
- Increased body preview in logs from 200 to 500 characters for better diagnosis
**Evolutions:**
- None
**Pages affectées:**
- pages/api/nip95-upload.ts
**Motivations:**
- Better error handling when endpoints return HTML error pages instead of JSON
- Provide clearer error messages to users
**Root causes:**
- Some NIP-95 endpoints (e.g., nostrimg.com) return HTML error pages instead of JSON
- Current error handling only catches JSON parse errors without detecting HTML responses
- Users get confusing error messages about JSON parsing when the real issue is an HTML response
**Correctifs:**
- Added HTML detection before JSON parsing
- Extract error message from HTML title or h1 tags when possible
- Provide clearer error message indicating HTML response instead of JSON
- Improved error logging with HTML body preview
**Evolutions:**
- None
**Pages affectées:**
- pages/api/nip95-upload.ts
**Motivations:**
- Translate settings page and all its components to French and English
- Provide consistent multilingual experience
**Root causes:**
- Settings page and components were hardcoded in English
- No translation support for key management and NIP-95 configuration
**Correctifs:**
- None (new feature)
**Evolutions:**
- Added translations for settings page title
- Added translations for KeyManagementManager component:
- Public keys display (npub and hex)
- Import form and validation messages
- Recovery phrase display
- All buttons and warnings
- Added translations for Nip95ConfigManager component:
- Endpoint list and management
- Add/edit/remove actions
- Error messages
- Updated both fr.txt and en.txt translation files
- All text now uses t() function for i18n support
**Pages affectées:**
- pages/settings.tsx
- components/KeyManagementManager.tsx
- components/Nip95ConfigManager.tsx
- public/locales/fr.txt
- public/locales/en.txt
- locales/fr.txt
- locales/en.txt
**Motivations:**
- Fix import error when importing nsec private keys
- Support both string and Uint8Array formats from nip19.decode
**Root causes:**
- nip19.decode returns decoded.data as Uint8Array, not string
- Validation in KeyManagementManager only checked for string type
- importPrivateKey in keyManagement.ts only handled string type
**Correctifs:**
- Updated KeyManagementManager validation to accept Uint8Array
- Updated importPrivateKey to convert Uint8Array to hex using bytesToHex
- Improved error messages to show actual validation errors
**Evolutions:**
- None
**Pages affectées:**
- components/KeyManagementManager.tsx
- lib/keyManagement.ts
**Motivations:**
- Provide a dedicated interface for managing Nostr keys
- Allow users to view public keys (npub and hex)
- Enable importing private keys via URL or text format
- Respect the existing two-level encryption system
**Root causes:**
- No dedicated interface for key management
- Users need to view their public keys easily
- Users need to import keys in various formats (nsec URL, nsec text, hex)
**Correctifs:**
- None (new feature)
**Evolutions:**
- Created KeyManagementManager component for key management
- Added public key display (npub and hex formats)
- Implemented private key import with support for:
- nostr:// URLs with nsec
- nsec text format (nsec1...)
- hex format (64 characters)
- Automatic key extraction from URLs
- Account replacement warning and confirmation
- Recovery phrase display after import
- Individual copy buttons for each key format
- Integration in settings page
**Pages affectées:**
- components/KeyManagementManager.tsx (new)
- pages/settings.tsx (modified)
- features/key-management-configuration.md (new)
**Motivations:**
- Corriger l'erreur 404 pour favicon.ico demandé par les navigateurs
- Corriger l'erreur 500 de l'API NIP-95 upload empêchant les uploads de fichiers
**Root causes:**
- Fichier favicon.ico manquant dans public/ causant des erreurs 404 répétées
- Incompatibilité entre form-data (npm) et fetch() natif de Node.js dans l'API NIP-95
**Correctifs:**
- Ajout de favicon.svg et mise à jour des références dans les pages
- Remplacement de fetch() par https/http natifs de Node.js dans nip95-upload.ts
- Amélioration de la gestion des erreurs et nettoyage des fichiers temporaires
**Evolutions:**
- Documentation des problèmes et solutions dans fixKnowledge/
**Pages affectées:**
- components/HomeView.tsx
- pages/docs.tsx
- pages/presentation.tsx
- pages/api/nip95-upload.ts
- features/account-creation-buttons-separation.md
- fixKnowledge/favicon-404-error.md (nouveau)
- fixKnowledge/nip95-upload-500-error.md (nouveau)
- public/favicon.svg (nouveau)
**Motivations:**
- Improve UI clarity by displaying two distinct buttons instead of one combined button
- Reduce the number of clicks needed to access the import functionality
- Allow users to directly choose their desired action without an intermediate step
**Evolutions:**
- Added optional 'initialStep' prop to CreateAccountModal to initialize modal at 'import' or 'choose' step
- Refactored NoAccountView to display two separate buttons: 'Générer un nouveau compte' and 'Importer une clé existante'
- Extracted buttons into separate NoAccountActionButtons component to respect function line limit
- Removed unused 'connected' parameter from AuthorPresentationFormView
**Pages affectées:**
- components/CreateAccountModal.tsx
- components/AuthorPresentationEditor.tsx
- features/account-creation-buttons-separation.md
**Motivations:**
- Ensure user interfaces are designed to minimize user interactions
- Improve overall user experience by reducing friction
**Root causes:**
- N/A (new requirement)
**Correctifs:**
- N/A
**Evolutions:**
- Added new UX section with click minimization principles
- Defined guidelines for direct actions, functional grouping, optimized forms
- Specified what to avoid in user interfaces
**Pages affectées:**
- .cursor/rules/quality.mdc