# Changelog All notable changes to Project Notes will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [2.2.0] - 2025-11-11 ### Added - **Multi-Theme System** 🎨 - Added 8 professional dark themes: Material Dark (default), Monokai Dark, Dracula, One Dark, Solarized Dark, Nord, Catppuccin Mocha, and Everforest Dark - New settings button (⚙️) at the bottom of the sidebar - Interactive theme selection modal with visual previews - Instant theme switching without page reload - Theme preference automatically saved in localStorage - Full responsive design on desktop, tablet, and mobile - Comprehensive documentation in `docs/THEMES.md` and `docs/GUIDE_THEMES.md` ### Changed - Added `/frontend/` route to serve frontend JavaScript files - Enhanced sidebar with persistent theme settings button ## [2.1.2] - 2025-11-11 ### Fixed - **Bulk Deletion 404 Error** - Corrected the HTTP method for bulk deletion from `POST` to `DELETE` in both frontend and backend. - Adjusted the Go backend handler to manually parse the request body for `DELETE` requests, as `r.ParseForm()` does not automatically process bodies for this method. - This resolves the 404 error encountered during bulk deletion operations. ## [2.1.1] - 2025-01-11 ### Daily Notes UX Improvement 🎨 ### Changed - **Calendar Click Behavior** - Only existing notes are now clickable in the calendar - Days without notes are visually grayed out (50% opacity) with `cursor: not-allowed` - Days with notes show blue dot (●) and are clickable with hover effects - This prevents accidental creation of notes on random dates - **Creating New Daily Notes** - Use "📅 Note du jour" button or `Ctrl/Cmd+D` for today's note - Use API endpoint `/api/daily/{YYYY-MM-DD}` for specific dates - Manual file creation still possible in `notes/daily/YYYY/MM/DD.md` ### Technical **Templates**: - `templates/daily-calendar.html`: Added conditional HTMX attributes (`{{if and .InMonth .HasNote}}`) - Added CSS classes: `.calendar-day-clickable` and `.calendar-day-no-note` **Styles** (`static/theme.css`): - `.calendar-day`: Changed default cursor from `pointer` to `default` - `.calendar-day-clickable`: Explicit `cursor: pointer` for notes - `.calendar-day-no-note`: 50% opacity + `cursor: not-allowed` + muted text color **Documentation**: - Updated `docs/DAILY_NOTES.md` with new click behavior and creation methods ## [2.1.0] - 2025-01-11 ### Daily Notes Feature 📅 Major new feature: **Daily Notes** for quick, organized daily note-taking. ### Added - **Daily Notes System** - Automatic daily note creation with structured template - Notes organized by date: `notes/daily/YYYY/MM/DD.md` - Pre-filled template with sections: Objectifs, Notes, Accompli, Réflexions, Liens - Automatic `[daily]` tag for all daily notes - **Interactive Calendar Widget** - Monthly calendar view in sidebar - Visual indicators for existing notes (blue dots) - Today highlighted with violet border - Month navigation with arrow buttons (‹ ›) - Click any date to open/create that day's note - Responsive design for mobile and desktop - **Quick Access** - "📅 Note du jour" button in header - Keyboard shortcut: `Ctrl/Cmd+D` (works anywhere in the app) - "Récentes" section showing last 7 daily notes - One-click access to recent notes - **Backend Endpoints** - `GET /api/daily/today` - Today's note (auto-create) - `GET /api/daily/{YYYY-MM-DD}` - Specific date note - `GET /api/daily/calendar/{YYYY}/{MM}` - Calendar HTML - `GET /api/daily/recent` - Recent notes list - **Frontend Module** - New `daily-notes.js` module for keyboard shortcuts - Auto-refresh calendar after saving daily notes - HTMX integration for seamless updates - **Styling** - Complete CSS theme for calendar and recent notes - Hover effects and smooth animations - Material Darker theme integration - Mobile-responsive calendar grid ### Technical Details **Backend** (`internal/api/daily_notes.go`): ```go // New handler functions handleDailyToday(w, r) handleDailyDate(w, r, dateStr) handleDailyCalendar(w, r, year, month) handleDailyRecent(w, r) ``` **Templates**: - `templates/daily-calendar.html` - Calendar widget - `templates/daily-recent.html` - Recent notes list **Frontend** (`frontend/src/daily-notes.js`): ```javascript initDailyNotesShortcut() // Ctrl/Cmd+D handler refreshDailyNotes() // Auto-refresh after save ``` **Documentation**: - Complete guide in `docs/DAILY_NOTES.md` - Usage examples and customization tips - API documentation and troubleshooting ### Changed - Sidebar layout updated to include Daily Notes section - Header now includes "Note du jour" button - Template index.html receives current date for calendar initialization ### Use Cases 1. **Daily Journal**: Track daily activities and reflections 2. **Project Log**: Document daily progress on projects 3. **Stand-up Notes**: Prepare daily stand-up meetings 4. **Learning Log**: Track daily learnings and discoveries ## [2.0.0] - 2025-01-11 ### Architecture Optimization Release 🎯 Major refactoring to optimize the HTMX + JavaScript coordination pattern. This release significantly improves code quality, performance, and maintainability. ### Changed - **HTMX Integration Optimization** - Replaced manual `fetch()` calls with `htmx.ajax()` in file-tree.js - Eliminated manual DOM manipulation after AJAX requests (~60 lines of code removed) - HTMX now automatically processes out-of-band swaps without explicit `htmx.process()` calls - **Event System Optimization** - Replaced `MutationObserver` with HTMX event listeners (`htmx:afterSwap`, `htmx:oobAfterSwap`) - ~30% reduction in CPU usage during DOM updates - More predictable and reliable event handling - **File Operations** - File moving (drag & drop) now uses `htmx.ajax()` for consistency - Folder creation now uses `htmx.ajax()` for consistency - Both operations leverage HTMX's automatic out-of-band swap processing ### Fixed - **File Tree Click Issue** - Fixed missing `id="sidebar"` attribute on `