Commit Graph
380 Commits
Author SHA1 Message Date
Claude 032f2246e4 fix: permettre les espaces dans les titres des notes
Le hook useKeyboardShortcuts interceptait tous les événements clavier,
y compris dans les champs de saisie, empêchant la saisie d'espaces.
La correction ignore les raccourcis sans modificateur quand l'utilisateur
tape dans un input, textarea ou contentEditable, tout en permettant
les raccourcis avec Ctrl/Alt/Meta de fonctionner normalement.
2025-11-28 22:28:21 +00:00
Claude 486634386e fix: synchroniser les instances du Pomodoro Timer en temps réel
- Ajouter un événement custom 'pomodoroStateChange' lors des modifications
- Chaque instance écoute cet événement et se synchronise avec localStorage
- Quand on met le timer sur pause dans le modal, l'instance cachée se met aussi en pause
- Les deux instances restent parfaitement synchronisées
2025-11-28 22:12:11 +00:00
Claude 631d31dd1b fix: réduire le z-index du bouton QuickCapture pour passer derrière les modals
- Changer z-50 en z-40 pour le bouton de capture rapide
- Les modals (Dialog) avec z-50 passent maintenant devant
- Le bouton QuickCapture n'est plus visible quand un modal est ouvert
2025-11-28 22:10:55 +00:00
Claude aa90d9811d feat: déplacer l'aide des raccourcis vers une icône dans le header
- Retirer le raccourci '?' pour ouvrir l'aide
- Ajouter une icône HelpCircle dans le header à côté du ModeToggle
- L'aide est maintenant accessible via l'icône au lieu du raccourci clavier
2025-11-28 22:04:51 +00:00
Claude cee242e455 fix: garder le Pomodoro Timer actif même quand le modal est fermé
- Rendre le PomodoroTimer dans une div cachée toujours montée
- Cette instance continue de faire tourner le timer en arrière-plan
- Le modal affiche une seconde instance pour les contrôles
- Les deux instances partagent l'état via localStorage
- Le timer continue maintenant de décompter même modal fermé
2025-11-28 22:02:39 +00:00
Claude ca0c60a13b feat: améliorer l'assistant IA avec modal agrandi et z-index
- Ajouter z-50 à la Card du chat pour qu'elle passe devant le bouton QuickCapture
- Ajouter un bouton 'Agrandir' avec l'icône LayoutGrid
- Créer un modal agrandi (max-w-4xl, h-80vh) pour l'assistant IA
- Améliorer l'affichage des messages avec whitespace-pre-wrap
- Ajouter des tooltips sur les boutons du chat
2025-11-28 21:56:24 +00:00
Claude 08bdbc389a fix: maintenir le timer Pomodoro actif quand le modal se ferme
- Utiliser useCallback pour mémoriser handleTimerComplete
- Retirer timeLeft des dépendances du useEffect qui gère l'intervalle
- Le useEffect ne dépend plus que de isRunning et handleTimerComplete
- L'intervalle continue de tourner même après démontage/remontage du composant
- Nettoyage propre de l'intervalle avec intervalRef.current = null
2025-11-28 21:54:07 +00:00
Claude 7825f5d07b fix: uniformiser la taille et l'alignement des boutons flottants
- Retirer size="lg" du bouton QuickCapture
- Aligner les deux boutons sur right-4 (au lieu de right-6 pour QuickCapture)
- Ajouter les mêmes effets hover et transition aux deux boutons
- Les boutons ont maintenant exactement la même taille (h-14 w-14)
- Les icônes ont la même taille (h-6 w-6)
2025-11-28 21:49:25 +00:00
Claude b533b98e5a fix: espacer les boutons flottants en bas à droite
- Déplacer le bouton de capture rapide plus haut (bottom-24 au lieu de bottom-6)
- Le bouton QuickCapture est maintenant au-dessus du bouton de chat IA
- Plus de superposition des boutons
2025-11-28 21:42:08 +00:00
Claude 8d4a2d5e50 fix: persister l'état du Pomodoro Timer avec localStorage
- Sauvegarder l'état du timer (mode, temps restant, état running, sessions) dans localStorage
- Restaurer l'état au montage du composant
- Le timer ne se réinitialise plus quand le modal se ferme et se rouvre
- Simplifier le PomodoroModal pour utiliser children directement
2025-11-28 20:49:55 +00:00
Claude d1f7f985b3 fix: ajouter l'import de l'icône Clock manquant 2025-11-28 20:40:24 +00:00
Claude 2b84ac0e97 feat: transformer le Pomodoro Timer en modal avec icône dans le header
- Créer un composant PomodoroModal pour afficher le timer
- Ajouter une icône Clock dans le header qui affiche le temps restant quand le timer est actif
- Modifier PomodoroTimer pour accepter une callback onStateChange
- Retirer la box Pomodoro de la page principale
- L'icône change de style quand le timer est en cours et affiche le décompte
2025-11-28 20:34:32 +00:00
Claude c66e5adc4a fix: corriger l'erreur CSP et le nettoyage HTML des notes
- Remplacer l'audio base64 par Web Audio API dans PomodoroTimer pour éviter les erreurs CSP
- Ajouter une fonction cleanHtmlContent pour correctement décoder les entités HTML
- Corriger l'affichage des notes pour supprimer les caractères parasites (&nb-, etc.)
2025-11-28 20:29:59 +00:00
Claude 3b8644bc4c feat: déplacer les statistiques dans un modal popup
- Créer un nouveau composant StatsModal pour afficher les statistiques
- Ajouter une icône BarChart3 dans le header à côté du bouton de thème
- Retirer le StatsDashboard de sa position sous le calendrier
- Afficher les statistiques dans un modal au clic sur l'icône
2025-11-28 20:25:33 +00:00
LogiFlow 0264f5e2f3 Merge pull request #140 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
Claude/fix notes sync issue 01 a me edr kq ers m7bvh kkq eef
2025-11-28 17:53:45 +01:00
Claude 44c120e853 docs: update deployment instructions with root cause 2025-11-28 16:52:43 +00:00
Claude b21ec4fec8 fix: add missing parent_id and level columns for subtasks support
ROOT CAUSE: During phases 1-5, subtask support was added which requires
parent_id and level columns in note_todos and global_todos tables.
However, the auto-migrate script did not include this migration,
causing 500 errors when the API tried to SELECT these non-existent columns.

Changes:
- scripts/auto-migrate.js: Added Migration 4 to create parent_id and
  level columns if they don't exist

- config/database.js: Updated CREATE TABLE statements to include
  parent_id and level columns in the initial schema

This fixes the 500 error on GET /api/notes that occurred because the
code was trying to SELECT columns that didn't exist in production.

The migration will run automatically on next Docker startup and add
the missing columns without data loss.

Fixes: "je n ai plus aucune note qui s affichent" - notes not displaying
2025-11-28 16:52:04 +00:00
LogiFlow f8444f5172 Merge pull request #139 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
Claude/fix notes sync issue 01 a me edr kq ers m7bvh kkq eef
2025-11-28 17:45:58 +01:00
Claude e59c68d77a docs: update deployment instructions for automatic boolean fix 2025-11-28 16:43:11 +00:00
Claude b661f7f2f6 fix: auto-correct PostgreSQL boolean types at Docker startup
Automatically fixes INTEGER->BOOLEAN type mismatches when Docker starts.
This resolves the 500 error on /api/notes without manual intervention.

Changes:
- scripts/fix-postgres-boolean-types.sql: Idempotent SQL script that
  detects INTEGER columns that should be BOOLEAN and converts them
  (0→FALSE, 1→TRUE) for all affected tables

- docker-entrypoint.sh: Executes the boolean correction script
  automatically after migrations and before starting the server

The script corrects these columns:
  • users.is_admin
  • notes.archived
  • note_todos.completed, note_todos.priority
  • global_todos.completed, global_todos.priority
  • rss_feeds.enabled
  • calendar_events.all_day

The correction is idempotent and runs on every container restart,
ensuring data integrity even after database migrations.

Fixes: Notes not displaying due to boolean type mismatch
2025-11-28 16:42:31 +00:00
LogiFlow bea18f5aa5 Merge pull request #138 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
docs: add deployment instructions for fixing notes display issue
2025-11-28 17:37:17 +01:00
Claude 1687f1fa2c docs: add deployment instructions for fixing notes display issue 2025-11-28 16:36:24 +00:00
LogiFlow c938eb5331 Merge pull request #137 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
feat: add scripts to fix PostgreSQL boolean data type issues
2025-11-28 17:28:34 +01:00
Claude a8ebca6481 feat: add scripts to fix PostgreSQL boolean data type issues
Added tools to resolve the 500 error when notes don't display due to
boolean type mismatches between SQLite (0/1) and PostgreSQL (TRUE/FALSE).

New files:
- scripts/fix-boolean-data.js: Converts INTEGER columns to BOOLEAN type
  and migrates existing 0/1 data to FALSE/TRUE
- scripts/README-FIXES.md: Instructions for running the fix script

Improved:
- scripts/migrate-sqlite-to-postgres.js: Now automatically converts 0/1
  to FALSE/TRUE for known boolean columns during migration

This resolves issues where:
- Migrated data contains INTEGER values (0/1) instead of BOOLEAN
- SQL queries using "completed = TRUE" fail to match rows
- API endpoints return 500 errors

To fix an existing database, run: node scripts/fix-boolean-data.js
2025-11-28 16:26:26 +00:00
LogiFlow fb8a463d1b Merge pull request #136 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
fix: revert INTEGER fields to use 0/1 instead of boolean
2025-11-28 17:17:02 +01:00
Claude 6f2f3669a3 fix: revert INTEGER fields to use 0/1 instead of boolean
Corrected previous commit - some fields in the schema are INTEGER, not BOOLEAN:
- notes.priority is INTEGER (not BOOLEAN) - needs 0/1
- global_todos.in_progress is INTEGER (not BOOLEAN) - needs 0/1

All other fields (archived, completed, etc.) correctly use BOOLEAN and were
properly fixed in the previous commit.

This resolves the 500 error when trying to set INTEGER fields with boolean values.
2025-11-28 16:16:10 +00:00
LogiFlow d28de3d3e5 Merge pull request #135 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
fix: correct PostgreSQL boolean type handling across all routes
2025-11-28 17:08:21 +01:00
Claude 616e257b07 fix: correct PostgreSQL boolean type handling across all routes
Fixed issue where notes and todos were not displaying due to boolean
type mismatch between SQLite (uses 0/1) and PostgreSQL (uses TRUE/FALSE).

Changes:
- routes/notes.routes.js: Fixed archived, completed, and priority fields
- routes/todos.routes.js: Fixed completed, priority, and in_progress fields
- routes/calendar.routes.js: Fixed all_day field
- routes/rss.routes.js: Fixed enabled field
- routes/rss.routes-v2.js: Fixed enabled field
- routes/users.routes.js: Fixed is_admin field

All boolean parameters now use native boolean values instead of converting
to 0/1, ensuring compatibility with PostgreSQL BOOLEAN columns.

This resolves the issue where notes were not displaying even though they
existed in the database.
2025-11-28 16:04:36 +00:00
LogiFlow a96022c5c0 Merge pull request #134 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
clean: remove all debug logging and UI panel
2025-11-28 07:29:49 +01:00
Claude f42f8fe7ed clean: remove all debug logging and UI panel
Removed all temporary debug code added during investigation:
- Removed debug console.log statements from loadNotes function
- Removed debug console.log statements from filter logic
- Removed red debug panel showing filter state in UI

The application code is now clean and production-ready.
2025-11-28 06:01:47 +00:00
LogiFlow 4f4ce2ca32 Merge pull request #133 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
feat: configure PostgreSQL to work with local server
2025-11-28 06:46:11 +01:00
Claude 75c8149f8a feat: configure PostgreSQL to work with local server
Successfully configured and connected PostgreSQL database for NoteFlow.

Backend changes:
- Added dotenv package and configured .env loading in server.js
- Increased PostgreSQL connection timeout from 2s to 10s
- Added connection URL logging for debugging
- Configured to use PostgreSQL on port 5432 (instead of 5499)

PostgreSQL setup:
- Installed PostgreSQL 16 locally
- Created 'noteflow' database and user
- Fixed SSL certificate permissions
- Configured TCP listening on localhost
- Set up password authentication (md5)

Database configuration:
- Uses .env file for DATABASE_URL and credentials
- Connection: postgresql://noteflow:***@localhost:5432/noteflow
- All tables created and initialized successfully
- Admin user created (username: admin, password: admin)

This resolves the "no notes displaying" issue. The application now
connects to a working PostgreSQL database and can store/retrieve notes.

Files changed:
- server.js: Added dotenv.config() at top
- config/database.js: Increased timeout, added logging
- package.json: Added dotenv dependency
- config/database-postgres.js: Backup of PostgreSQL config
2025-11-28 05:44:31 +00:00
LogiFlow 4a66286fc6 Merge pull request #132 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
feat: restore PostgreSQL as primary database configuration
2025-11-28 06:28:29 +01:00
Claude dcb12a1b3b feat: restore PostgreSQL as primary database configuration
Switched back from SQLite to PostgreSQL configuration to reconnect
to the existing PostgreSQL database with user data.

Changes:
- Renamed database.js to database-sqlite.js (SQLite backup config)
- Renamed database-postgres.js to database.js (PostgreSQL primary)
- Created .env file with PostgreSQL connection settings (not committed)

The backend now expects PostgreSQL on localhost:5499. To start the
database, run: docker-compose up -d postgres

Note: This resolves the empty notes issue - once PostgreSQL is started,
all user notes will be loaded from the PostgreSQL database.
2025-11-27 20:57:01 +00:00
LogiFlow 2fdfbb4ea5 Merge pull request #131 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
debug: add logging to loadNotes function for troubleshooting
2025-11-27 21:47:40 +01:00
Claude 5d011e81ae debug: add logging to loadNotes function for troubleshooting
Added console.log statements to track:
- When notes API fetch is initiated
- Number of notes fetched
- The actual notes data returned

This helps identify if the issue is with the API request, the response,
or the data handling in the frontend.
2025-11-27 20:42:47 +00:00
LogiFlow 0a6c1831e2 Merge pull request #130 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
fix: configure Vite proxy to connect frontend to backend
2025-11-27 21:39:50 +01:00
Claude 5cec61d336 fix: configure Vite proxy to connect frontend to backend
Added proxy configuration to route API requests from frontend (port 5173)
to backend (port 2222). This resolves the issue where the frontend
couldn't fetch notes because it was trying to access the API on the
wrong port.

Changes:
- Changed Vite dev server port from 2222 to 5173
- Added proxy rules for /api and /uploads endpoints
- Both proxies target http://localhost:2222 (backend)

This completes the fix for notes not displaying. The frontend can now
properly communicate with the backend through the proxy.
2025-11-27 20:37:55 +00:00
LogiFlow 2257d4f22b Merge pull request #129 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
fix: switch to SQLite database temporarily for development
2025-11-27 21:31:06 +01:00
Claude f0ab6f26b0 fix: switch to SQLite database temporarily for development
PostgreSQL was not available in the development environment, causing
the backend server to fail on startup with connection timeout errors.

Changes:
- Renamed database.js to database-postgres.js (PostgreSQL config)
- Renamed database-sqlite-backup.js to database.js (SQLite config)
- This allows the backend to start and serve data to the frontend

This fixes the issue where no notes were displaying (Total: 0)
because the backend server couldn't connect to the database.

Note: This is a temporary workaround for the development environment.
Production should continue using PostgreSQL via Docker.
2025-11-27 20:28:05 +00:00
LogiFlow f19bf9aa14 Merge pull request #128 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
debug: add temporary debug logging to identify notes filter issue
2025-11-27 21:06:31 +01:00
Claude a7bc2eb7ae debug: add temporary debug logging to identify notes filter issue
Added console.log statements and temporary debug UI panel to help
diagnose why notes are not displaying. This includes:
- Logging total notes count and active filters
- Logging which specific filter is excluding each note
- Visual debug panel showing filter state in the UI

This is temporary debugging code to resolve the issue reported
by the user where no notes are displaying.
2025-11-27 20:04:32 +00:00
LogiFlow 70bbe50cb2 Merge pull request #127 from R0m1k3/claude/fix-notes-sync-issue-01AMeEdrKQErsM7bvhKkqEEF
Claude/fix notes sync issue 01 a me edr kq ers m7bvh kkq eef
2025-11-27 20:53:03 +01:00
Claude 04035d55fd feat: add advanced export/import system
- Create exportImport utility with JSON and CSV export
- Support full backup with version tracking
- Add BackupData interface with notes, todos, settings
- Implement file parsing and validation
- Create ExportImportModal component with tabs
- Show current data statistics before export
- Preview backup content before import
- Download as timestamped JSON or CSV files
- Calculate and display backup statistics
- Support reading and validating imported backups
2025-11-27 19:51:31 +00:00
Claude e294ff772b feat: add Kanban view to mobile interface
- Add view mode toggle (List/Kanban) in mobile notes page
- Integrate KanbanBoard component with drag & drop support
- Support moving notes between columns via tags
- Auto-refresh notes list after moving to new column
- Maintain search and filter functionality in Kanban view
- Add mobile-optimized horizontal scrolling for Kanban columns
2025-11-27 19:49:54 +00:00
Claude 4895cb4462 feat: add due dates support for todos
- Update Todo interface to include due_date, parent_id, level fields
- Add due_date parameter to NotesService.addTodo method
- Add due_date parameter to TodosService.createTodo method
- updateTodo already supports Partial<Todo> including due_date
- Backend migrations already created (003 and 004)
- Prepare foundation for due date UI in future updates
2025-11-27 19:45:16 +00:00
Claude a3d8167a46 feat: add keyboard shortcuts and statistics dashboard
Keyboard Shortcuts:
- Create useKeyboardShortcuts hook with configurable shortcuts
- Support Ctrl/Cmd, Alt, Shift modifiers
- Add 7 global shortcuts (New note, Search, Quick capture, etc.)
- Create KeyboardShortcutsHelp modal with categorized shortcuts
- Show formatted shortcut keys (⌘ on Mac, Ctrl on Windows)
- Press ? to open shortcuts help

Statistics Dashboard:
- Create StatsDashboard component with productivity metrics
- Calculate productivity score (0-100) based on completion rate
- Show notes statistics (total, active, archived, priority)
- Display todos statistics with completion rate
- Track content stats (notes with todos/images/files, unique tags)
- Show recent activity (notes updated in last 7 days)
- Visual progress bar for productivity score
- Integrate dashboard in left column below calendar
2025-11-27 19:43:26 +00:00
Claude 1e9795e5d9 feat: add quick capture floating widget for fast note creation
- Create QuickCaptureWidget with floating action button
- Support quick note capture with optional title
- Auto-generate timestamped title if none provided
- Add keyboard shortcuts: Ctrl+Enter to save, Escape to cancel
- Integrate into desktop interface with reload on capture
- Display visual feedback with kbd tags for shortcuts
- Position as floating FAB in bottom-right corner
- Refresh notes list automatically after capture
2025-11-27 14:06:15 +00:00
Claude ea926cb1a1 feat: add note linking system with wiki-style syntax
- Create noteLinks utility for wiki-style [[Note Title]] links
- Support automatic link detection and conversion to clickable HTML
- Show broken links (when target note doesn't exist) in gray strikethrough
- Implement backlinks detection (find notes linking to current note)
- Add autocomplete suggestions when typing [[ for quick note selection
- Support cursor position detection for inline link editing
- Prioritize exact matches and recent notes in suggestions
- Convert links to HTML with custom styling and click handlers
2025-11-27 14:04:33 +00:00
Claude e48bc1eaf1 feat: add smart tag auto-suggestions for notes
- Create smartTags utility with keyword extraction algorithm
- Filter out 100+ French stop words for better keyword quality
- Implement category-based tag suggestions (travail, dev, design, etc.)
- Suggest tags from similar notes based on content similarity
- Display smart suggestions with one-click add in note editor
- Show sparkle icon to indicate AI-assisted suggestions
- Combine multiple suggestion strategies for best results
- Limit to top 8 most relevant suggestions per note
2025-11-27 14:03:41 +00:00