Keep/CHANGELOG.md

3.7 KiB

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.