Commit Graph
24 Commits
Author SHA1 Message Date
Claude e480d50bea Feature: Ajout du support d'API Key pour Google Calendar
Ajout d'une troisième méthode d'authentification pour Google Calendar :
- OAuth 2.0 (existant)
- Service Account (existant)
- API Key (nouveau)

Modifications :
- Interface d'administration avec sélection API Key
- Champs pour configurer la clé API et l'ID du calendrier
- Backend mis à jour pour gérer l'authentification par API Key
- Routes calendar adaptées pour supporter le nouveau type
- Affichage du statut de connexion mis à jour

L'utilisateur peut maintenant :
1. Sélectionner "API externe" dans les paramètres Google Calendar
2. Entrer sa clé API Google Calendar
3. Spécifier l'ID du calendrier (ou "primary")
4. Synchroniser directement avec Google Calendar
2025-11-12 13:22:34 +00:00
Claude 81f25a09d1 Fix: Correction des erreurs TypeScript de build
Corrections apportées pour résoudre l'échec de build :

1. **Index.tsx** :
   - Ajout du else manquant dans le ternaire conditionnel (ligne 1536)
   - Ajout du type explicite pour calendarAuthStatus (authType)
   - Cast de type pour google_auth_type dans onValueChange
   - Ajout d'un bouton "Synchroniser" pour Service Account

2. **SettingsService.ts** :
   - Ajout des nouvelles propriétés à l'interface Settings :
     - google_auth_type?: 'oauth2' | 'service_account'
     - google_service_account_key?: string
     - google_calendar_email?: string

Le build passe maintenant avec succès (✓ built in 8.72s).
2025-11-12 13:10:59 +00:00
Claude 3cb6c81489 Feature: Ajout du support OAuth2 et Service Account pour Google Calendar
Ajout de deux méthodes d'authentification au choix pour Google Calendar :

1. **OAuth 2.0** (méthode existante améliorée) :
   - ✅ Prompt de sélection de compte Google ('select_account consent')
   - ✅ Gestion dynamique du redirect_uri avec APP_URL
   - ✅ Idéal pour accès au calendrier personnel avec consentement

2. **Service Account** (nouvelle méthode) :
   - ✅ Authentification via clé JSON sans interaction utilisateur
   - ✅ Parfait pour calendriers partagés en entreprise
   - ✅ Synchronisation automatique en arrière-plan
   - ✅ Configuration de l'email du calendrier à synchroniser

## Backend (routes/calendar.routes.js) :
- Ajout des constantes AUTH_TYPES (oauth2, service_account)
- Fonction getAuthType() pour récupérer la méthode configurée
- Fonction getServiceAccountClient() pour Service Account
- Fonction getCalendarClient() unifiée qui choisit la bonne méthode
- Route /auth-status mise à jour pour retourner le type d'auth
- Route /sync adaptée pour supporter les deux méthodes
- Support du calendrier email personnalisé pour Service Account

## Frontend (src/pages/Index.tsx) :
- Menu déroulant pour choisir entre OAuth2 et Service Account
- Interface conditionnelle selon la méthode choisie
- Champ textarea pour la clé JSON du Service Account
- Champ email pour spécifier le calendrier à synchroniser
- Affichage du type d'authentification dans le statut
- Amélioration de l'UI avec descriptions claires

## Documentation :
- OAUTH_SETUP.md : Guide complet mis à jour avec les deux méthodes
  - Section dédiée au choix de la méthode
  - Guide pas à pas pour Service Account
  - Dépannage pour les deux méthodes
- README_GOOGLE_CALENDAR.md : Guide de démarrage rapide (nouveau)
  - Comparaison des deux méthodes
  - Configuration rapide pour chaque méthode
  - Liens vers la documentation complète

Cette implémentation offre une flexibilité maximale pour s'adapter
à différents cas d'usage : personnel (OAuth2) ou professionnel (Service Account).
2025-11-12 13:05:40 +00:00
Claude 95eba6ce63 Fix: Résolution des problèmes OAuth Google Calendar
Corrections apportées :

1. **redirect_uri_mismatch** :
   - Ajout de la variable APP_URL dans .env.example avec documentation
   - Amélioration de la fonction getOAuth2Client pour accepter une URI personnalisée
   - Gestion plus flexible du redirect_uri (APP_URL ou localhost par défaut)

2. **Choix du compte Google** :
   - Modification du prompt OAuth : 'consent' → 'select_account consent'
   - Force maintenant l'affichage du sélecteur de compte Google

3. **Interface utilisateur** :
   - Ajout d'un encadré d'avertissement visible avec l'URL de redirection exacte
   - Instructions claires pour la configuration dans Google Cloud Console
   - Indication pour configurer APP_URL si nécessaire

4. **Documentation** :
   - Création du fichier OAUTH_SETUP.md avec guide complet
   - Checklist de vérification pour le débogage
   - Exemples de configuration pour local et production

Ces modifications permettent de résoudre l'erreur 400 redirect_uri_mismatch
et d'offrir le choix du compte Google lors de la connexion.
2025-11-12 12:50:07 +00:00
Claude 0e8b36e1d7 Fix critique: Système de notes complètement refondu pour fonctionner
Problème majeur résolu:
- L'éditeur de notes réinitialisait le contenu à chaque modification
- Causé par dangerouslySetInnerHTML qui forçait React à synchroniser
- Résultat: impossible d'éditer les notes correctement

Solution:
- Suppression de dangerouslySetInnerHTML du RichTextEditor
- Conservation du useEffect avec deps vides pour initialisation unique
- Utilisation du key prop pour forcer remount lors du changement de note
- Éditeur maintenant complètement "uncontrolled"

Migration complète Google Calendar vers OAuth 2.0:
- Remplacement de l'API Key simple par OAuth 2.0 (Client ID + Secret)
- Nouvelle table google_oauth_tokens pour stocker les tokens
- Routes OAuth:
  * GET /api/calendar/auth-url - Génère l'URL d'authentification
  * GET /api/calendar/oauth-callback - Callback OAuth avec échange de code
  * GET /api/calendar/auth-status - Vérifier le statut de connexion
  * POST /api/calendar/disconnect - Déconnecter Google
- Gestion automatique du rafraîchissement des tokens expirés
- Interface utilisateur mise à jour:
  * Champs Client ID et Client Secret
  * Indicateur de statut de connexion (connecté/non connecté)
  * Bouton "Se connecter avec Google" ouvrant popup OAuth
  * Bouton "Déconnecter"
  * URI de redirection affichée pour configuration Google Cloud Console
- Synchronisation maintenant avec calendrier principal de l'utilisateur
- Accès complet aux données privées du calendrier

Architecture:
- CalendarService.ts: Nouvelles méthodes getAuthUrl(), getAuthStatus(), disconnect()
- Settings: Ajout de google_client_id et google_client_secret
- Popup OAuth avec communication window.postMessage
- Gestion d'erreur avec re-authentification automatique si token expiré
2025-11-12 10:00:33 +00:00
Claude 4425695b4f Feature: Système de tags et liste automatique des modèles OpenRouter
Ajouts majeurs:
- Système de tags complet pour les notes
  * Table note_tags en base de données avec indexes
  * API REST pour CRUD des tags (GET/POST/DELETE)
  * UI avec onglet Tags dans l'éditeur de notes
  * Badges cliquables avec icônes et suppression au survol
  * Modal pour ajouter des tags

- Liste automatique des modèles OpenRouter
  * Nouvelle route API /api/openrouter/models
  * Cache des modèles avec rafraîchissement automatique (1h)
  * Dropdown dans l'admin avec tous les modèles disponibles
  * Bouton "Actualiser" pour forcer le refresh
  * Affichage du nom et description de chaque modèle
  * Fallback sur input manuel si pas de clé API

Améliorations UI:
- Ajout de dates de création et modification dans les notes
- Affichage des dates dans les cartes et l'éditeur
- Format français pour toutes les dates
- Onglets passés de 4 à 5 colonnes pour inclure Tags
- Animation de chargement sur le bouton refresh des modèles

Architecture:
- Nouveau service TagsService.ts pour la gestion des tags
- Nouveau service OpenRouterService.ts pour l'API OpenRouter
- Nouvelles routes openrouter.routes.js
- Support Select component pour les dropdowns
- Modals InputModal utilisés pour les tags
2025-11-12 09:47:47 +00:00
Claude ece7232f0d Fix CRITIQUE: Écriture fluide dans les notes réparée 2025-11-12 09:37:00 +00:00
Claude a36bb04c66 Fix critique: Système de notes complètement refondu pour fonctionner
Problèmes résolus :
1. **Écriture lente/bloquée** : Implémentation d'un système de debounce (1s) pour l'auto-save
   - onChange du RichTextEditor n'appelle plus l'API à chaque frappe
   - Mise à jour locale immédiate de l'état pour une interface réactive
   - Sauvegarde automatique après 1 seconde d'inactivité

2. **Images ne s'affichent pas** :
   - Fix extraction de result.image || result dans uploadImage
   - Mise à jour immédiate de l'état local avant l'API call
   - Reset du input file après upload
   - Ajout message de succès

3. **Fichiers ne s'affichent pas** :
   - Fix extraction de result.file || result dans handleFileUpload
   - Mise à jour immédiate de l'état local
   - Reset du input file après upload

4. **Architecture améliorée** :
   - handleUpdateNote avec useCallback pour performance
   - handleContentChange dédié avec debounce
   - Mise à jour optimiste de l'UI (local state update avant API)
   - Cleanup proper du timer sur unmount

Résultat :
- Écriture fluide et réactive dans les notes
- Upload d'images fonctionnel avec feedback immédiat
- Upload de fichiers fonctionnel
- Ajout de todos dans les notes fonctionnel
- Toutes les modifications sont auto-sauvegardées
2025-11-12 09:27:11 +00:00
Claude f8ec63b5ef Feature: Remplacement de tous les prompts par des modaux + Fix RSS refresh
Modaux :
- Création ConfirmModal pour confirmations avec variants (default/destructive)
- Création InputModal pour saisie de texte/URL/mot de passe
- Création AddUserModal pour création d'utilisateur avec admin checkbox
- Remplacement de tous les prompt() et confirm() par des modaux modernes
- Modaux pour : suppression note, ajout todo, ajout RSS, ajout utilisateur, suppression utilisateur, changement mot de passe, ajout todo dans note

Fix RSS :
- Ajout route POST /api/rss/refresh (alias de /api/rss/fetch)
- Fix uploadImage retour avec result.image || result

UX améliorée :
- Plus de popups navigateur natifs
- Interface cohérente et moderne
- Validation dans les modaux
- Support touche Entrée dans les InputModals
- Auto-focus sur le champ de saisie
2025-11-12 09:24:16 +00:00
Claude 702d0c2088 Feature: Support multi-images, Google Calendar et correction RTL
Images multiples :
- Ajout table note_images dans la base de données
- Routes POST/GET/DELETE /api/notes/:id/images
- Dossier uploads/images séparé pour les images
- Support de plusieurs images par note

Google Calendar :
- Ajout table calendar_events
- Routes /api/calendar pour sync et récupération des événements
- Box Rendez-vous dans l'interface avec affichage des événements à venir
- Configuration Google Calendar dans l'admin (API key et Calendar ID)
- Synchronisation manuelle avec Google Calendar API
- Installation package googleapis

Corrections :
- Fix RichTextEditor: ajout dir="ltr" pour empêcher l'écriture RTL
- Fix Image type conflict (lucide-react vs Note interface)
- Ajout original_name à l'interface Image pour compatibilité

Interface :
- Box Rendez-vous empilée avec Todos et RSS dans la colonne droite
- Nouvel onglet Google Calendar dans l'administration
- Bouton "Synchroniser" pour rafraîchir les événements
2025-11-12 09:11:11 +00:00
Claude 44e6f7bb5e Feature: Nouveau layout avec notes à gauche et boxes à droite
- Layout en 2 colonnes : notes à gauche (2 colonnes), boxes à droite
- Les notes s'ouvrent directement dans l'écran au lieu d'un modal
- Bouton "Retour aux notes" pour revenir à la grille
- Suppression du Dialog modal pour l'édition de notes
- Boxes Todos et RSS empilées verticalement dans la colonne de droite
- Résolution des conflits de types entre Image (lucide-react) et Image (Note)
- Ajout du champ original_name à l'interface Image
2025-11-12 08:46:38 +00:00
Claude 3ac2cc0810 Feature: Redesign de l'interface sans sidebar pour écran 1920x1080
- Suppression de la sidebar : les notes sont affichées en grille 4 colonnes
- Notes s'ouvrent en dialog plein écran au clic
- Boxes Todos et RSS élargies et côte à côte en haut de page
- Optimisation de l'affichage pour résolution 1920x1080
- Ajout du changement de mot de passe dans l'administration
- Ajout du filtre Actives/Archivées pour les notes
- Amélioration des transitions et effets hover sur les cards
2025-11-12 08:30:41 +00:00
Claude f0c68b9db1 Feature: Amélioration de l'interface Todos et RSS avec onglets
Cette mise à jour améliore l'interface utilisateur des tâches et des flux RSS
avec une meilleure organisation et de nouvelles fonctionnalités.

Changements principaux:

1. **Layout Todos et RSS côte à côte**
   - Les deux boxes sont maintenant affichées côte à côte
   - Meilleure utilisation de l'espace disponible
   - Layout en grid responsive

2. **Système d'onglets pour les Todos**
   - Onglet "Actives" : affiche uniquement les tâches non complétées
   - Onglet "Complétées" : affiche les tâches terminées avec style barré
   - Séparation claire entre tâches en cours et terminées
   - Possibilité de re-activer une tâche complétée en cliquant dessus

3. **Endpoint PATCH /api/todos/:id/toggle ajouté**
   - Nouvelle route backend pour basculer l'état d'une tâche
   - Résout l'erreur 404 précédente
   - Logging des actions pour suivi

4. **Optimisations visuelles**
   - Tailles de texte réduites (text-xs) pour plus de contenu visible
   - Hauteurs de boutons optimisées
   - Espacements améliorés
   - Animations et transitions fluides

Fichiers modifiés:
- routes/todos.routes.js : ajout de la route toggle
- src/pages/Index.tsx : refonte de la sidebar droite avec onglets

Cette version améliore significativement l'expérience utilisateur pour
la gestion des tâches avec une séparation claire entre tâches actives
et complétées.
2025-11-12 08:17:40 +00:00
Claude 6dd3270f57 Feature: Implémentation complète de NoteFlow avec toutes les fonctionnalités
Cette mise à jour majeure transforme l'application en une plateforme complète
de gestion de notes et de tâches avec de nombreuses nouvelles fonctionnalités.

Nouvelles fonctionnalités:

1. **Éditeur de texte enrichi**
   - Barre d'outils complète avec formatage (gras, italique, souligné)
   - Support des titres (H1, H2, H3)
   - Listes à puces et numérotées
   - Alignement du texte (gauche, centre, droite)
   - Citations et blocs de code
   - Insertion de liens
   - Raccourcis clavier (Ctrl+B, Ctrl+I, Ctrl+U)

2. **Box Tâches globales (sidebar droite)**
   - Liste de tâches accessible depuis toute l'application
   - Ajout/suppression de tâches
   - Marquage des tâches comme complétées
   - Persistance des données

3. **Box Flux RSS (sidebar droite)**
   - Affichage des derniers articles RSS
   - Rafraîchissement manuel des flux
   - Ouverture des articles dans un nouvel onglet
   - Gestion des flux dans l'admin

4. **Support des fichiers joints dans les notes**
   - Upload de tous types de fichiers
   - Affichage de la taille des fichiers
   - Téléchargement et suppression des fichiers
   - Interface utilisateur intuitive

5. **Panel d'administration enrichi**
   - Onglet "Flux RSS" : gestion des flux RSS
   - Onglet "OpenRouter" : configuration de l'API IA
   - Onglet "Paramètres" : configuration de l'intervalle de rafraîchissement RSS
   - Interface organisée avec 4 onglets

6. **Amélioration de l'interface**
   - Layout à 3 colonnes responsive (Notes | Éditeur | Tâches+RSS)
   - Badges pour indiquer le nombre de tâches, images et fichiers par note
   - Design moderne et cohérent
   - Animations et transitions fluides

7. **Mise à jour de l'identité**
   - Nom de l'application : "NoteFlow"
   - Nouveau titre de page
   - Favicon SVG configuré
   - Logo mis à jour dans l'interface

Services ajoutés:
- RssService.ts : gestion des flux RSS et articles
- TodosService.ts : gestion des tâches globales
- SettingsService.ts : gestion des paramètres de l'application

Composants ajoutés:
- RichTextEditor.tsx : éditeur de texte enrichi avec barre d'outils

Modifications techniques:
- Ajout de la propriété "files" au type Note
- Résolution du conflit de nommage avec Settings
- Mise à jour de package.json avec la nouvelle description
- Mise à jour de index.html avec favicon et titre

Cette version représente une évolution majeure de l'application avec une
expérience utilisateur nettement améliorée et de nombreuses fonctionnalités
demandées.
2025-11-12 08:08:28 +00:00
Claude 1592d6ac37 Fix: Mise à jour du composant Calendar pour react-day-picker v9
Le build échouait car le composant Calendar utilisait l'ancienne API
de react-day-picker (IconLeft/IconRight) qui n'est plus supportée
dans la version 9.

Changements:
- Remplacement de IconLeft et IconRight par le composant Chevron
- Le composant Chevron gère maintenant l'orientation (left/right)
- Compatible avec react-day-picker v9.11.1

Cette correction résout l'erreur TypeScript TS2353 et permet au build
de se terminer avec succès.
2025-11-12 07:53:23 +00:00
Michael c759181e23 [dyad] wrote 4 file(s), added tailwindcss-animate package(s) 2025-11-06 16:11:50 +01:00
Michael 24903521f4 [dyad] wrote 4 file(s) 2025-11-06 16:10:48 +01:00
Michael 080b08caf0 [dyad] wrote 3 file(s) 2025-11-06 16:08:49 +01:00
Michael 0bcffed331 [dyad] wrote 4 file(s) 2025-11-06 15:58:55 +01:00
Michael 209c48ee6b [dyad] wrote 5 file(s) 2025-11-06 15:55:54 +01:00
Michael 1ce71f37c2 [dyad] wrote 6 file(s) 2025-11-06 15:50:27 +01:00
Michael 52267eb3ca [dyad] wrote 6 file(s), added @tanstack/react-query package(s) 2025-11-06 15:46:43 +01:00
Michael a24f107f0a [dyad] wrote 3 file(s) 2025-11-06 15:43:47 +01:00
Michael 33b241f0c1 Init Dyad app 2025-11-06 12:20:20 +01:00