73 lines
3.7 KiB
Markdown
73 lines
3.7 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
## [0.2.0] - 2026-01-04
|
|
|
|
### Added
|
|
- **Label Management System**: Complete redesign of label/tag management with color filtering
|
|
- Added `Label` model to Prisma schema with centralized database storage
|
|
- Fields: id, name, color, userId, createdAt, updatedAt
|
|
- Color field supports 10 pastel colors (default, red, orange, yellow, green, teal, blue, purple, pink, gray)
|
|
- Created `LabelContext` for global state management with React Context API
|
|
- Provides labels array and loading state
|
|
- Exposes functions: addLabel, updateLabel, deleteLabel, getLabelColor, refreshLabels
|
|
- Added `useLabels` hook for easy access to label functionality
|
|
- Implemented full CRUD API for labels (GET, POST, PUT, DELETE)
|
|
- `/api/labels` - GET all labels, POST create new label
|
|
- `/api/labels/[id]` - GET specific label, PUT update, DELETE remove
|
|
- Updated all components to use the new context instead of localStorage
|
|
- **New Components**:
|
|
- `LabelBadge` - Reusable component for displaying label badges
|
|
- 3 variants: default, filter, clickable
|
|
- Automatic color display via context
|
|
- Optional remove button (X icon)
|
|
- `LabelSelector` - Dropdown for selecting labels in note input
|
|
- Shows count of selected labels
|
|
- Uses LabelBadge for each option
|
|
- `LabelFilter` - Filter interface with color and label selection
|
|
- Color filter: 10 color buttons with label count per color
|
|
- Label filter: Checkbox list of all labels
|
|
- Clear all button to reset filters
|
|
- **Color Filtering**:
|
|
- Filter notes by label color via URL parameter `?color=blue`
|
|
- Shows number of labels per color
|
|
- Highlights selected color with ring effect
|
|
- Automatically filters label list when color is selected
|
|
- **Updated Components**:
|
|
- `note-input.tsx` - Added LabelSelector for label selection during note creation
|
|
- `note-card.tsx` - Uses LabelBadge to display labels on notes
|
|
- `note-editor.tsx` - Uses LabelBadge to display labels in editor
|
|
- `header.tsx` - Added selectedColor and onColorFilterChange props
|
|
- `header-wrapper.tsx` - Manages color filtering via URL params
|
|
- `page.tsx` - Filters notes by selected label color
|
|
- `layout.tsx` - Wraps app with LabelProvider
|
|
|
|
### Fixed
|
|
- **Tests**: Fixed Playwright drag-and-drop tests to work with dynamically generated note IDs
|
|
- Changed selectors from hardcoded text (`text=Note 1`) to flexible attribute selectors (`[data-draggable="true"]`)
|
|
- Updated matchers from `toContain('Note')` to regex patterns `toMatch(/Note \d+/)` to handle unique IDs with timestamps
|
|
- Replaced UI-based cleanup with API-based cleanup using `request.delete()` for more reliable test cleanup
|
|
|
|
### Database
|
|
- Cleaned up 38 accumulated test notes from database using MCP memento tool
|
|
- Retained only essential notes: "test" and 2x "New AI Framework Released"
|
|
- Added migration `20260104203746_add_labels_table` for new Label model
|
|
|
|
### Technical Details
|
|
- **Label Management**:
|
|
- Labels now stored in database with colors, eliminating localStorage duplication
|
|
- All label operations are centralized through LabelContext
|
|
- Automatic synchronization across all components
|
|
- Better performance with single source of truth
|
|
- Support for user-specific labels (userId field for future auth)
|
|
|
|
- **Tests**:
|
|
- The drag-and-drop functionality itself was working correctly
|
|
- The issue was in Playwright tests which expected exact text matches but notes were created with unique IDs (e.g., `test-1767557327567-Note 1`)
|
|
- Tests now properly handle the dynamic note generation system
|
|
|
|
## [Previous Versions]
|
|
|
|
See individual commit history for earlier changes.
|