# Changelog

All notable changes to this project 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).

## [Unreleased]

### Added
- Friends feature: friends service, FriendsProvider, FriendsModal, Settings entry
- Assignee field on tasks (schema v7, model, types, forms, sync, taskActions)
- AssigneeSelector component and assignee display in TaskItem
- QuickAddBar on tasks overview (copied from calendar)
- Removed WheelTimePicker selection band highlighter
- Removed drag lift popup from TaskItem (scale + shadow on drag)
- Removed checkbox from task items
- Fixed selection bar overlapping QuickAddBar on tasks overview
- Backend: mounted friends route, added assigneeId to task validation and sync

### Changed
- Due date prefilled from Calendar "+" button
- 12-hour time formatting across task rows and pickers
- Calendar strip scrolls to selected day when navigating months
- Calendar completion toggle now handles repeating tasks and reminders
- Task color strips now use the task's category color

### Fixed
- WheelTimePicker FlatList scroll clamping: added contentContainerStyle paddingBottom so all hours (0-23) and minutes (0-59) are reachable via scrolling
- WheelTimePicker: added selection highlight background to WheelRow, visually connecting selected item with colon separator
- WheelTimePicker: fixed number alignment in scroll list (row width 100%, contentContainerStyle stretch)
- Tasks without a due date no longer get overdue styling
- `useOverdueTasks` infinite re-subscription loop (Date.now in effect deps)
- Web/Android crashes from decorator transform ordering (babel config)
- FormButtons crash outside FormProvider; Cancel navigation fallback
- Task repeat settings, reminders and series info now sync to the backend
  (previously repeated tasks lost their repeat after sync)

### Deprecated
- N/A

### Removed
- Task color picker (task color now comes from its category)

### Security
- N/A

---

## [1.0.0] - 2026-08-05

### Added
- **Core Features**
  - To-Do List screen with category filter
  - Add New Task screen with all fields
  - Calendar screen with date strip
  - Settings screen
  - Bottom navigation bar

- **Task Management**
  - Create, read, update, delete tasks
  - Category organization (6 default categories)
  - Priority levels (None, Low, Medium, High, Critical)
  - Due dates and times
  - Subtasks with unlimited nesting
  - Descriptions (1000 chars)
  - Task completion with visual feedback
  - Overdue and due-today highlighting

- **Offline-First Architecture**
  - WatermelonDB with SQLite persistence
  - Reactive queries for instant UI updates
  - Background sync with custom API
  - Conflict resolution (last-write-wins)
  - Automatic default category seeding

- **User Interface**
  - Minimalist design with 8px grid
  - Rounded containers (16-20px)
  - Category color coding
  - Smooth animations (150-250ms)
  - Safe area support for notches
  - Dark mode ready (toggle in settings)

- **Navigation**
  - Expo Router file-based routing
  - Persistent bottom tabs (Tasks, Calendar, Settings)
  - Modal stack for Add Task screen
  - Type-safe navigation

- **Developer Experience**
  - TypeScript strict mode
  - ESLint + Prettier configuration
  - Path aliases (@/components, @/hooks, etc.)
  - WatermelonDB decorators support
  - React Hook Form + Zod validation

### Technical Details

#### Database Schema
- `categories` table (id, name, color, order, timestamps)
- `tasks` table (id, title, description, category_id, priority, completed, due_date, due_time, timestamps)
- `subtasks` table (id, task_id, title, completed, order, timestamps)
- Indexes on category_id, due_date, completed for performance

#### Sync Protocol
- Pull: GET /sync?since={timestamp}
- Push: POST /sync/push with batched changes
- Timestamp-based incremental sync
- Upsert semantics for conflict resolution

#### Components
- `Header` - App logo + title with rounded corners
- `CategoryFilter` - Horizontal scrollable chips
- `TaskList` - Virtualized FlatList with sections
- `TaskItem` - Swipeable row with checkbox, title, priority, due date, menu
- `FloatingActionButton` - Animated FAB with rotation
- `CategorySelector` - Chip group for task creation
- `DateTimePicker` - Native date/time pickers
- `PrioritySelector` - Segmented control with colors
- `SubtasksSection` - Dynamic field array
- `FormButtons` - Fixed bottom actions

#### Hooks
- `useDatabase` - Database context + initialization
- `useCategories` - Reactive category list
- `useTasks` - Filtered task queries with loading state
- `useTasksByDate` - Calendar date queries

---

## Version History Template

### [X.Y.Z] - YYYY-MM-DD

#### Added
- New features

#### Changed
- Changes in existing functionality

#### Deprecated
- Soon-to-be removed features

#### Removed
- Removed features

#### Fixed
- Bug fixes

#### Security
- Vulnerability fixes