## Translation Files - Add 11 new language files (es, de, pt, ru, zh, ja, ko, ar, hi, nl, pl) - Add 100+ missing translation keys across all 15 languages - New sections: notebook, pagination, ai.batchOrganization, ai.autoLabels - Update nav section with workspace, quickAccess, myLibrary keys ## Component Updates - Update 15+ components to use translation keys instead of hardcoded text - Components: notebook dialogs, sidebar, header, note-input, ghost-tags, etc. - Replace 80+ hardcoded English/French strings with t() calls - Ensure consistent UI across all supported languages ## Code Quality - Remove 77+ console.log statements from codebase - Clean up API routes, components, hooks, and services - Keep only essential error handling (no debugging logs) ## UI/UX Improvements - Update Keep logo to yellow post-it style (from-yellow-400 to-amber-500) - Change selection colors to #FEF3C6 (notebooks) and #EFB162 (nav items) - Make "+" button permanently visible in notebooks section - Fix grammar and syntax errors in multiple components ## Bug Fixes - Fix JSON syntax errors in it.json, nl.json, pl.json, zh.json - Fix syntax errors in notebook-suggestion-toast.tsx - Fix syntax errors in use-auto-tagging.ts - Fix syntax errors in paragraph-refactor.service.ts - Fix duplicate "fusion" section in nl.json 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> Ou une version plus courte si vous préférez : feat(i18n): Add 15 languages, remove logs, update UI components - Create 11 new translation files (es, de, pt, ru, zh, ja, ko, ar, hi, nl, pl) - Add 100+ translation keys: notebook, pagination, AI features - Update 15+ components to use translations (80+ strings) - Remove 77+ console.log statements from codebase - Fix JSON syntax errors in 4 translation files - Fix component syntax errors (toast, hooks, services) - Update logo to yellow post-it style - Change selection colors (#FEF3C6, #EFB162) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
44 KiB
| specificationType | featureName | project | author | date | status | version |
|---|---|---|---|---|---|---|
| feature-ux-design | Memory Echo Connections Management | Keep | Sally (UX Designer) & Ramez | 2026-01-10 | draft | 1.0 |
UX Design Specification - Memory Echo Connections Management
Project: Keep (Memento) Feature: Gestion Évoluée des Connexions Memory Echo Author: Sally (UX Designer) & Ramez Date: 2026-01-10 Version: 1.0
Table des Matières
- Executive Summary
- Context & Problem Statement
- User Personas & Scenarios
- Design Principles
- User Flow Diagrams
- Interface Specifications
- Interaction Design
- Visual Design Specifications
- Technical Considerations
- Implementation Roadmap
- Success Metrics
Executive Summary
Vision
Transformer Memory Echo d'une feature "push only" (notifications uniquement) à un système interactif de gestion des connexions, permettant aux utilisateurs de visualiser, comprendre et agir sur les relations sémantiques entre leurs notes.
Objectifs Principaux
- Visibilité permanente - Les connexions ne disparaissent plus après un clic
- Exploration flexible - L'utilisateur peut voir les connexions à différents niveaux de détail
- Actions intelligentes - Fusion et gestion des notes similaires
- Scalabilité - Fonctionne de 2 à 22+ connexions sans surcharger l'interface
Philosophie de Design
"Révélation Progressive" (Progressive Disclosure)
Les informations et actions apparaissent graduellement, du plus simple au plus détaillé, selon le besoin de l'utilisateur.
- Niveau 1 : Indicateur visuel discret
- Niveau 2 : Vue d'ensemble rapide (overlay)
- Niveau 3 : Détails et actions complètes (éditeur)
Context & Problem Statement
État Actuel
Memory Echo (Phase 1) :
- ✅ Détection automatique des connexions sémantiques
- ✅ Notifications push quand nouvelles connexions
- ✅ Modal temporaire pour voir 2 notes côte à côte
- ✅ Feedback utilisateur (pouces haut/bas)
Limites Identifiées :
- Modal éphémère - Le modal se ferme et on perd la vue
- Pas de vue globale - Impossible de voir toutes les connexions d'une note
- Actions limitées - Pas de fusion ou gestion des notes similaires
- Pas scalable - Avec 22 notes similaires, le modal actuel est inadapté
Scénario Problème
Ramez a créé 22 notes sur "Project X" depuis 3 mois. Memory Echo détecte toutes ces connexions. Il clique sur "View Connection", voit 2 notes dans un modal... puis le modal se ferme. Il doit cliquer à nouveau pour voir les 2 notes suivantes. Il n'a PAS de vue globale. Il ne peut PAS fusionner ces 22 notes facilement. C'est fastidieux.
Besoins Utilisateur
Primary Use Case : "Je veux voir toutes les notes connexes d'un coup, comprendre les relations, et décider quoi faire (fusionner, garder séparé, etc.)"
Secondary Use Cases :
- Explorer les connexions sans obligation d'action
- Fusionner intelligemment des notes dupliquées
- Comprendre pourquoi deux notes sont connectées
- Naviguer rapidement entre notes connexes
User Personas & Scenarios
Persona Principal : Ramez
Profile :
- Développeur intermédiaire
- Utilise Keep quotidiennement pour notes techniques
- Beaucoup de notes sur des sujets similaires
- Veut de l'efficacité, pas de la friction
Motivations :
- "Je ne veux pas perdre de temps à chercher mes notes"
- "Si j'ai 3 fois la même info, je veux fusionner"
- "Montre-moi ce qui est pertinent, cache le reste"
Frustrations Actuelles :
- Modal qui disparaît trop vite
- Pas de vue globale des connexions
- Fusion manuelle chronophage
User Journey
Journey 1 : Découverte de Connexions Multiples
1. Ramez ouvre Keep
→ Voir badge "⚡ 12 connexions" sur une note
2. Il clique sur le badge
→ Overlay s'ouvre avec liste des 12 notes connexes
3. Il parcourt la liste
→ Voit similarité % pour chaque note
4. Il décide de voir plus en détail
→ Clique "Voir côte à côte" sur 3 notes
5. Modal s'ouvre avec les 3 notes
→ Il comprend les relations
6. Il décide de fusionner
→ Clique "Fusionner intelligemment"
7. Preview de la fusion
→ Il valide
8. Fusion réussie !
→ Les 3 notes originales archivées
→ Nouvelle note combinée créée
Journey 2 : Exploration Sans Action
1. Ramez ouvre une note dans l'éditeur
2. En bas, section "⚡ Notes Connexes (8)"
3. Il parcourt les connexions
→ Clique sur une note connexe
4. Cette note s'ouvre dans un nouvel onglet/panel
→ Il compare les deux
5. Il décide de NE PAS fusionner
→ Ferme la note connexe
6. Il continue d'explorer
→ Clique sur une autre connexion
7. Il revient à sa note originale
→ Continuer son travail
Design Principles
1. Révélation Progressive
Les informations apparaissent graduellement :
- Toujours visible : Badge discret sur les notes
- Au clic : Overlay avec liste des connexions
- En éditor : Section permanente avec détails
2. Non-Intrusif
La feature ne gêne pas l'utilisation normale :
- Badge visible mais pas dominant
- Overlay se ferme facilement
- Section dans l'éditor peut être réduite
3. Contextuel
Les actions sont au bon endroit :
- Dans la grille → Quick view (overlay)
- Dans l'éditeur → Actions détaillées
- Dans le modal → Fusion intelligente
4. Scalable
Fonctionne avec peu ou beaucoup de connexions :
- 2-3 connexions : Affichage direct
- 4-10 connexions : Liste avec pagination
- 11+ connexions : Liste + filtres + tri
5. Performant
Rapide et fluide :
- Lazy loading des connexions
- Pagination si besoin
- Pas de rechargement de page
User Flow Diagrams
Flow 1 : Découverte depuis la Grille
┌─────────────────────────────────────────────────────────────┐
│ GRILLE PRINCIPALE │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Note A │ │ Note B │ │ Note C │ │
│ │ │ │ │ │ │ │
│ │ ⚡ 5 connex. │ │ │ │ ⚡ 12 connex. │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
Clic sur badge "⚡ 5 connex."
│
▼
┌─────────────────────────────────────────────────────────────┐
│ OVERLAY CONNEXIONS │
│ │
│ ⚡ Notes Connexes (5) [X] │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 📝 Note A1 - Related Topic 94% │ │
│ │ [Voir] [Voir côte à côte ▼] │ │
│ ├─────────────────────────────────────────────────────┤ │
│ │ 📝 Note A2 - Similar Content 89% │ │
│ │ [Voir] [Voir côte à côte ▼] │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ [Voir tout côte à côte] │
└─────────────────────────────────────────────────────────────┘
│
┌───────────┴───────────┐
▼ ▼
Clic "Voir" Clic "Voir côte à côte"
│ │
▼ ▼
Ouvre note MODAL COMPARAISON
dans éditeur (2-3 notes côte à côte)
│
▼
Actions:
- Fusionner
- Voir note
- Fermer
Flow 2 : Gestion dans l'Éditeur
┌─────────────────────────────────────────────────────────────┐
│ ÉDITEUR DE NOTE │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 📝 Ma Note │ │
│ │ │ │
│ │ [Contenu de la note...] │ │
│ │ │ │
│ │ │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ ⚡ Notes Connexes (5) [−] │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 📝 Note A1 - Related Topic 94% │ │ │
│ │ │ [Voir] [Fusionner ▼] │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 📝 Note A2 - Similar Content 89% │ │ │
│ │ │ [Voir] [Fusionner ▼] │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ [Tout voir côte à côte] [Tout fusionner...] │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Flow 3 : Fusion Intelligente
┌─────────────────────────────────────────────────────────────┐
│ MODAL FUSION │
│ │
│ 🔗 Fusion Intelligente │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Sélection: 3 notes │ │
│ │ │ │
│ │ ┌──────────────────────┐ │ │
│ │ │ 📝 Note 1 │ │ │
│ │ │ "Meeting about..." │ │ │
│ │ └──────────────────────┘ │ │
│ │ + │ │
│ │ ┌──────────────────────┐ │ │
│ │ │ 📝 Note 2 │ │ │
│ │ │ "Discussed..." │ │ │
│ │ └──────────────────────┘ │ │
│ │ + │ │
│ │ ┌──────────────────────┐ │ │
│ │ │ 📝 Note 3 │ │ │
│ │ │ "Project X..." │ │ │
│ │ └──────────────────────┘ │ │
│ │ = │ │
│ │ ┌──────────────────────┐ │ │
│ │ │ 📝 NOTE FUSIONNÉE │ ← Preview IA │ │
│ │ │ "Team meeting about │ │ │
│ │ │ Project X: discussed│ │ │
│ │ │ deadlines and..." │ │ │
│ │ └──────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Options: │
│ ☑ Archiver les notes originales │
│ ☑ Conserver les tags de toutes les notes │
│ │
│ [Annuler] [Modifier manuellement] [Confirmer la fusion] │
└─────────────────────────────────────────────────────────────┘
Interface Specifications
Composant 1 : Badge de Connexions (Grille)
Emplacement : Coin inférieur droit de chaque note card dans la grille Masonry
Apparence :
┌─────────────────────────────┐
│ Titre de la note │
│ │
│ Contenu de la note... │
│ │
│ ⚡ 5 connexions ◀─────── Badge
└─────────────────────────────┘
Spécifications :
- Couleur : Fond ambre/or clair (
bg-amber-100 dark:bg-amber-900/30) - Texte : "⚡ X connexions" en ambre foncé (
text-amber-700 dark:text-amber-400) - Icône : ⚡ (Sparkles de Lucide-react)
- Police : xs (12px), font-weight normal
- Border-radius : rounded-md
- Padding : px-2 py-1
- Position : absolute bottom-2 right-2
- Z-index : 10 (au-dessus du contenu)
- États :
- Normal : Opacité 100%
- Hover : Opacité 100%, cursor pointer, bordure ambre
- Disabled/Aucune connexion : Non affiché
Interaction :
- Click → Ouvre l'overlay des connexions
- Hover → Léger zoom + tooltip "Voir les connexions"
Condition d'affichage :
- Si 1+ connexions → Afficher le badge
- Si 0 connexions → Masquer
Composant 2 : Overlay Connexions
Type : Modal/Dialog centré
Dimensions :
- Largeur : max-w-2xl (672px)
- Hauteur : max-h-[80vh]
- Position : fixed inset-0, centré
Structure :
┌─────────────────────────────────────────────────┐
│ ⚡ Notes Connexes (12) [X] │
├─────────────────────────────────────────────────┤
│ 🔍 [Filtrer...] [Tri par: similarité ▼] │
├─────────────────────────────────────────────────┤
│ ┌───────────────────────────────────────────┐ │
│ │ 📝 Note connexe 1 94% [▾] │ │
│ │ Preview du contenu... │ │
│ │ [Voir] [Voir côte à côte ▼] │ │
│ └───────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────┐ │
│ │ 📝 Note connexe 2 89% [▾] │ │
│ │ Preview du contenu... │ │
│ │ [Voir] [Voir côte à côte ▼] │ │
│ └───────────────────────────────────────────┘ │
│ │
│ [< 1 2 3 4 5 >] (pagination si 10+ connexions) │
├─────────────────────────────────────────────────┤
│ [Voir tout côte à côte] │
└─────────────────────────────────────────────────┘
Spécifications :
Header :
- Titre : "⚡ Notes Connexes (X)"
- Bouton close (X) en haut à droite
- Icône ⚡ en ambre
Filtres et Tri (optionnel, visible si 7+ connexions) :
- Input recherche : filtrer par titre/contenu
- Dropdown tri : "Plus similaire", "Plus récent", "Plus ancien"
Liste des connexions :
- Chaque connexion = carte avec :
- Titre de la note connexe (gras, cliquable)
- Badge pourcentage de similarité (coins haut à droite)
- Preview du contenu (line-clamp-2, 2 lignes max)
- Tags/labels si présents
- Dropdown menu [▾] :
- "Voir cette note"
- "Voir côte à côte"
- "Fusionner avec..."
- "Masquer cette connexion"
- Boutons rapides :
- [Voir] → Ouvre la note dans l'éditeur
- [Voir côte à côte ▼] → Menu : sélectionner 2-3 notes à comparer
Pagination :
- Si > 10 connexions : afficher 10 par page
- Pagination en bas : [< 1 2 3 4 5 >]
Footer :
- Bouton principal : [Voir tout côte à côte]
- Ouvre modal avec toutes les connexions (max 5)
Composant 3 : Modal Comparaison Côte à Côte
Dimensions :
- Largeur : max-w-6xl (896px) pour 2 notes, max-w-7xl (1024px) pour 3 notes
- Hauteur : max-h-[90vh]
Layout : Grid avec 2 ou 3 colonnes selon sélection
Structure :
┌─────────────────────────────────────────────────────────────┐
│ ⚡ Comparaison de Notes [X] │
│ Ces notes sont connectées par 94% de similarité │
├─────────────────────────────────────────────────────────────┤
│ 💡 Insight: "Ces notes traitent toutes du même │
│ sujet sous des angles complémentaires..." │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ 📝 Note 1 │ │ 📝 Note 2 │ │
│ │ [Titre] │ │ [Titre] │ │
│ │ │ │ │ │
│ │ [Contenu...] │ │ [Contenu...] │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ └─────────────────────┘ └─────────────────────┘ │
│ [Cliquez pour ouvrir] [Cliquez pour ouvrir] │
├─────────────────────────────────────────────────────────────┤
│ [← Ajouter une note] [Fusionner tout ▼] │
└─────────────────────────────────────────────────────────────┘
Spécifications :
Header :
- Titre : "⚡ Comparaison de Notes"
- Sous-titre : "Ces notes sont connectées par X% de similarité"
- Pourcentage affiché en ambre
Section Insight IA (optionnelle) :
- Fond ambre clair
- Icône 💡
- Texte explicatif généré par l'IA
- "Ces notes traitent toutes du même sujet..."
Grille de notes :
- Layout :
grid grid-cols-2 gap-6(2 notes) ougrid grid-cols-3 gap-4(3 notes) - Chaque note :
- Bordure fine
- Hover : bordure ambre, curseur pointer
- Titre en gras (couleur distincte par note)
- Contenu avec
line-clamp-8(8 lignes max) - Bas de carte : "Cliquez pour ouvrir"
Footer :
- Bouton gauche : [← Ajouter une note] (si < 3 notes)
- Bouton droit : [Fusionner tout ▼]
- Dropdown : "Fusionner intelligemment", "Fusionner manuellement"
Composant 4 : Section Connexions (Éditeur)
Emplacement : En bas de l'éditeur de note, après le contenu
États :
- Ouvert : Affiche toutes les connexions
- Réduit : Affiche juste le header
Structure - État Ouvert :
┌───────────────────────────────────────────────────────────┐
│ 📝 Ma Note │
│ [Éditeur...] │
├───────────────────────────────────────────────────────────┤
│ ⚡ Notes Connexes (5) [−] │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 📝 Note A1 - Related Topic 94% │ │
│ │ [Preview...] │ │
│ │ [Voir] [Fusionner ▼] │ │
│ └─────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 📝 Note A2 - Similar Content 89% │ │
│ │ [Preview...] │ │
│ │ [Voir] [Fusionner ▼] │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ [Tout voir côte à côte] [Tout fusionner...] │
└───────────────────────────────────────────────────────────┘
Structure - État Réduit :
┌───────────────────────────────────────────────────────────┐
│ ⚡ Notes Connexes (5) [+] │
└───────────────────────────────────────────────────────────┘
Spécifications :
- Header avec bouton [−]/[+] pour réduire/ouvrir
- Même layout que l'overlay, mais intégré dans l'éditeur
- Pas de bouton close (X)
- Scrollable si beaucoup de connexions
- Sticky header si scroll
Composant 5 : Modal Fusion Intelligente
Dimensions :
- Largeur : max-w-3xl (768px)
- Hauteur : auto (adaptable au contenu)
Structure :
┌─────────────────────────────────────────────────────────────┐
│ 🔗 Fusion Intelligente │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 📝 Notes à fusionner │ │
│ │ ┌───────────────────────────────────────────────┐ │ │
│ │ │ ☑ Note 1: "Meeting about Project X" │ │ │
│ │ │ Created: Jan 5, 2026 │ │ │
│ │ ├───────────────────────────────────────────────┤ │ │
│ │ │ ☑ Note 2: "Discussed deadlines..." │ │ │
│ │ │ Created: Jan 8, 2026 │ │ │
│ │ ├───────────────────────────────────────────────┤ │ │
│ │ │ ☑ Note 3: "Project X deliverables" │ │ │
│ │ │ Created: Jan 10, 2026 │ │ │
│ │ └───────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ [+ Ajouter une note] │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 💬 Prompt de fusion (optionnel) │ │
│ │ [Instruction optionnelle pour l'IA...] │ │
│ │ │ │
│ │ [Générer la fusion] │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 📝 Preview de la note fusionnée │ │
│ │ ┌───────────────────────────────────────────────┐ │ │
│ │ │ "Team meeting about Project X: discussed │ │ │
│ │ │ deadlines and deliverables. Key points:..." │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ └───────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ [Modifier manuellement] │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Options de fusion │ │
│ │ ☑ Archiver les notes originales │ │
│ │ ☑ Conserver tous les tags │ │
│ │ ☐ Conserver la note la plus récente comme titre │ │
│ │ ☐ Créer un rétrolien vers les notes originales │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ [Annuler] [Modifier manuellement] [✓ Confirmer la fusion] │
└─────────────────────────────────────────────────────────────┘
Spécifications :
Section 1 : Sélection des notes
- Liste avec checkboxes (toutes cochées par défaut)
- Chaque note : titre + date de création
- Hover : preview du contenu (tooltip)
- Bouton [+ Ajouter une note] pour en inclure d'autres
Section 2 : Prompt (optionnel)
- Input textarea pour instruction personnalisée
- Exemple : "Garder le style formel de la note 1"
- Par défaut : vide = l'IA fait de son mieux
Bouton [Générer la fusion] :
- Appelle l'IA pour générer la note fusionnée
- Show loading spinner pendant génération
- Preview apparaît dans la section suivante
Section 3 : Preview
- Zone de texte éditable
- Peut être modifiée manuellement
- Syntax highlighting/markdown support
- Scrollable si long contenu
Section 4 : Options
- Checkboxes pour comportement post-fusion
- Toutes cochées par défaut (sauf exception)
Actions footer :
- [Annuler] : Ferme le modal, annule tout
- [Modifier manuellement] : Focus sur la preview, désactive le bouton "Générer"
- [✓ Confirmer la fusion] : Crée la nouvelle note, archive les originaux
Interaction Design
Interactions Badge Connexions
États :
- Normal : Badge visible, statique
- Hover :
- Opacity: 100% → 100% (pas de changement)
- Transform: scale(1.05)
- Border: 1px solid ambre
- Cursor: pointer
- Tooltip: "Voir les X connexions"
- Active : Click → ouvre overlay
Transitions :
- Duration: 150ms
- Easing: ease-out
- Properties: transform, border-color
Feedback :
- Click : Overlay apparaît avec fade-in + slide-up (200ms)
Interactions Overlay
Ouverture :
- Animation : fade-in (0% → 100%) + scale(0.95 → 1)
- Duration : 200ms
- Easing : ease-out
- Backdrop : bg-black/50 avec backdrop-blur-sm
Fermeture :
- Click sur X ou backdrop
- Animation : fade-out + scale(1 → 0.95)
- Duration : 150ms
- Escape key : ferme aussi
Scroll :
- Si > 5 connexions : overflow-y-auto
- Scrollbar stylisée (ambre)
- Max-height : 60vh
Hover sur une connexion :
- Background : hover:bg-gray-50 dark:hover:bg-zinc-800
- Border-left : 3px solid ambre
- Transform: translateX(4px)
- Duration: 150ms
Interactions Modal Comparaison
Clic sur une note :
- Ouvre la note dans l'éditeur
- Ferme le modal
- Toast: "Note ouverte"
Bouton [← Ajouter une note] :
- Ouvre dropdown avec les autres connexions
- Max 3 notes dans le modal
Bouton [Fusionner tout ▼] :
- Dropdown : "Fusionner intelligemment", "Fusionner manuellement"
- "Fusionner intelligemment" → Ouvre modal fusion intelligente
- "Fusionner manuellement" → Ouvre modal d'édition de fusion
Interactions Modal Fusion
Génération IA :
- Click [Générer la fusion]
- Button → loading state avec spinner
- Toast: "Génération en cours..."
- Après 2-3s : Preview apparaît
- Toast: "Fusion générée !"
Modification manuelle :
- Click [Modifier manuellement]
- Focus sur textarea de preview
- Button désactivé : [Générer la fusion]
- Button activé : [Confirmer la fusion]
Confirmation :
- Click [✓ Confirmer la fusion]
- Loading state sur le bouton
- API call pour créer la note
- Archives des notes originales
- Modal ferme
- Toast: "✓ Notes fusionnées avec succès !"
- Éditeur s'ouvre avec la nouvelle note
Interactions Section Éditeur
Toggle Ouvert/Réduit :
- Click sur [−] ou [+]
- Animation : slide-up / slide-down
- Duration : 200ms
- Easing : ease-in-out
- Icon transition : rotate(0deg) ↔ rotate(180deg)
Scroll :
- Section scrollable indépendamment
- Header sticky en haut
- Max-height : 300px
Visual Design Specifications
Palette de Couleurs
Primary (Amber/Memory Echo) :
amber-50: bg-amber-50 (sous-fonds très clairs)amber-100: bg-amber-100 (badges, cards)amber-200: border-amber-200 (bordures légères)amber-400: text-amber-400 (texte secondaire dark mode)amber-500: text-amber-500 (texte principal)amber-600: bg-amber-600 (boutons primary)amber-700: text-amber-700 (texte dark mode)amber-900/30: bg-amber-900/30 (badges dark mode)amber-950/20: bg-amber-950/20 (sous-fonds dark mode)
Neutral (Gray/Zinc) :
- Utiliser la palette existante de l'appli
gray-50,gray-100, ...,gray-900zinc-50,zinc-100, ...,zinc-900(dark mode)
Sémantique :
- Success (fusion réussie) :
green-600 - Error (erreur fusion) :
red-600 - Warning (confirmation action) :
yellow-600
Typographie
Familles : Utiliser les fonts de l'appli (probablement Inter ou system-ui)
Tailles :
- Badge : text-xs (12px)
- Titre note : text-base (16px), font-semibold
- Preview contenu : text-sm (14px)
- Similarity % : text-xs (12px), font-medium
- Insight IA : text-sm (14px)
Weights :
- Regular : 400
- Medium : 500
- Semibold : 600
- Bold : 700
Espacements
Badges : px-2 py-1 (8px horizontal, 4px vertical) Cards connexions : p-3 (12px padding) Modal : p-6 (24px padding) Sections : gap-3, gap-4 entre éléments
Icônes
Source : Lucide React Tailles :
- Small : h-3 w-3, h-4 w-4
- Medium : h-5 w-5
- Large : h-6 w-6
Icônes utilisées :
- ⚡ Sparkles : connexions Memory Echo
- 💡 Lightbulb : insights IA
- 🔗 Link : fusion
- 👁️ Eye : voir
- ✏️ Edit : modifier
- ✓ Check : confirmer
- ✕ X : fermer/annuler
- ▼ ChevronDown : dropdowns
- ▲ ChevronUp : toggle ouvert
- ➕ Plus : ajouter
- ➔ ArrowRight : navigation
Ombres & Bordures
Ombres :
- Badge : shadow-sm
- Card : shadow
- Modal : shadow-xl
Bordures :
- Badge : border-amber-200
- Card : border-gray-200 dark:border-zinc-700
- Modal : border-gray-200
Border-radius :
- Badge : rounded-md (4px)
- Card : rounded-lg (8px)
- Modal : rounded-lg (8px)
Technical Considerations
Performance
Lazy Loading :
- Charger les connexions au clic sur le badge
- Pas précharger toutes les connexions de toutes les notes
- Pagination pour 10+ connexions
Caching :
- Cache les connexions récupérées (session storage)
- Invalider le cache quand une note est modifiée
- TTL : 5 minutes
API Calls :
- Endpoint :
/api/ai/echo/connections?noteId={id} - Response format :
{
"connections": [
{
"noteId": "xxx",
"title": "Note connexe",
"content": "Preview...",
"similarity": 0.94,
"insight": "Ces notes sont..."
}
],
"total": 12
}
Responsive Design
Mobile :
- Badge : toujours visible en bas à droite
- Overlay : full-screen au lieu de modal centré
- Modal comparaison : grid 1 colonne au lieu de 2-3
- Section éditeur : collapsée par défaut
Tablet :
- Similar to desktop
- Réduire largeur modale (max-w-xl au lieu de max-w-2xl)
Desktop :
- Spécifications détaillées ci-dessus
Accessibility
ARIA Labels :
- Badge :
aria-label="Voir les 5 connexions de cette note" - Overlay :
role="dialog" aria-modal="true" - Boutons :
aria-labeldescriptifs
Keyboard Navigation :
- Tab : naviguer entre les connexions
- Enter/Space : sélectionner une connexion
- Escape : fermer overlay/modal
- Arrow keys : naviguer dans la liste
Screen Readers :
- Annoncer "5 connexions disponibles"
- Lire la similarité en pourcentage
- Annoncer les actions disponibles
Focus Management :
- Ouverture overlay : focus sur première connexion
- Fermeture : focus retourne sur le badge
- Modal fusion : focus sur première checkbox
États & Gestion d'État
États nécessaires :
interface ConnectionsState {
// Overlay
isOverlayOpen: boolean
selectedNoteId: string | null
// Modal comparaison
isComparisonModalOpen: boolean
comparisonNotes: string[] (max 3)
// Modal fusion
isFusionModalOpen: boolean
selectedNotesForFusion: string[]
fusionPreview: string | null
isGeneratingFusion: boolean
// Section éditeur
isConnectionSectionExpanded: boolean
// Données
connections: Connection[]
isLoadingConnections: boolean
}
Events :
onOpenConnections: ouvrir overlayonCloseConnections: fermer overlayonSelectConnection: sélectionner une connexiononOpenComparison: ouvrir modal comparaisononOpenFusion: ouvrir modal fusiononGenerateFusion: générer fusion IAonConfirmFusion: confirmer fusiononToggleSection: toggle section éditeur
Error Handling
Cas d'erreur :
-
Échec chargement connexions :
- Message : "Impossible de charger les connexions"
- Action : bouton "Réessayer"
-
Échec génération fusion :
- Message : "Erreur lors de la génération"
- Action : bouton "Réessayer" ou "Modifier manuellement"
-
Échec création note fusionnée :
- Message : "Erreur lors de la création de la note"
- Action : conserver dans le modal pour retry
-
Pas de connexions :
- Badge non affiché
- Message dans section : "Aucune connexion détectée"
Implementation Roadmap
Phase 1 : Fondations (Semaine 1)
Sprint 1.1 : Backend API
- Créer endpoint
/api/ai/echo/connections - Implémenter la logique de récupération des connexions
- Ajouter pagination si > 10 connexions
- Tests unitaires
Sprint 1.2 : Composant Badge
- Créer
ConnectionsBadge.tsx - Intégrer dans
NoteCard.tsx - Gérer l'état de visibilité
- Tests composant
Phase 2 : Overlay & Découverte (Semaine 2)
Sprint 2.1 : Overlay Connexions
- Créer
ConnectionsOverlay.tsx - Implémenter la liste des connexions
- Ajouter filtres et tri
- Pagination si > 10
- Animations d'ouverture/fermeture
Sprint 2.2 : Modal Comparaison
- Créer
ComparisonModal.tsx - Grid 2-3 colonnes
- Insight IA optionnel
- Actions rapides
Phase 3 : Éditeur & Actions (Semaine 3)
Sprint 3.1 : Section Éditeur
- Créer
EditorConnectionsSection.tsx - Toggle ouvert/réduit
- Liste des connexions
- Actions rapides
Sprint 3.2 : Modal Fusion (Partie 1)
- Créer
FusionModal.tsx - UI de sélection des notes
- Preview area
- Options de fusion
Phase 4 : Fusion Intelligente (Semaine 4)
Sprint 4.1 : Backend Fusion
- Endpoint
/api/ai/echo/merge - Intégrer génération IA (prompt)
- Créer la note fusionnée
- Archiver les notes originales
Sprint 4.2 : Modal Fusion (Partie 2)
- Connecter au backend
- Loading states
- Error handling
- Toast notifications
Phase 5 : Polish & Tests (Semaine 5)
Sprint 5.1 : UX Refinement
- Micro-interactions
- Animations fluides
- Responsive design
- Accessibility audit
Sprint 5.2 : Testing & Documentation
- Tests E2E
- Tests d'intégration
- Documentation utilisateur
- Migration guide
Success Metrics
Metrics Quantitatives
Adoption :
- % d'utilisateurs qui cliquent sur le badge dans les 7 premiers jours
- Nombre moyen de connexions vues par session
- Taux d'utilisation de la fusion
Engagement :
- Temps passé dans l'overlay
- Nombre de connexions explorées avant action
- Taux de conversion (vue → action)
Performance :
- Temps de chargement des connexions < 500ms
- Temps de génération fusion < 3s
- 0 bugs critiques
Metrics Qualitatifs
User Feedback :
- Feedback positif sur les connexions trouvées
- "Les fusions sont utiles"
- "Je trouve ce que je cherche plus vite"
UX Quality :
- L'overlay est intuitif (pas de confusion)
- La fusion donne de bons résultats
- La feature ne gêne pas l'utilisation normale
Success Criteria
MVP Success (Phase 1-2) :
- ✅ Badge visible sur les notes avec connexions
- ✅ Overlay fonctionnel avec liste des connexions
- ✅ Modal comparaison pour 2-3 notes
- ✅ 0 régression bug
Full Success (Phase 1-4) :
- ✅ Toutes les fonctionnalités implémentées
- ✅ Fusion intelligente fonctionnelle
- ✅ Section éditeur intégrée
- ✅ 90%+ satisfaction utilisateur
Stretch Goals (Phase 5+) :
- Vue mind-map/graph (backlog)
- Fusion en lot (batch merge)
- Connexions transientes (A ↔ B ↔ C)
- Export des connexions en JSON
Conclusion
Cette spécification UX fournit un plan complet pour la gestion évoluée des connexions Memory Echo, en suivant le principe de révélation progressive et en respectant la philosophie "Zéro Prise de Tête".
Points clés :
- ✅ Visibilité permanente des connexions
- ✅ Exploration flexible à 3 niveaux
- ✅ Actions intelligentes (fusion)
- ✅ Scalable de 2 à 22+ connexions
- ✅ Non-intrusif et performant
La priorisation par phases permet un développement itératif avec des valeur livrables dès la Phase 1.
Document Status : ✅ Draft v1.0 - Ready for Review Next Steps : Validation avec Ramez, puis implémentation Phase 1
Generated by Sally (UX Designer) & Ramez - Keep Project Date: 2026-01-10