Commit Graph

10 Commits

Author SHA1 Message Date
ceae7d7d61 feat(06-01): add watchCompletionsForTask DAO method and history localization strings
- Add watchCompletionsForTask(taskId) to TasksDao: Stream<List<TaskCompletion>> sorted newest first
- Regenerate tasks_dao.g.dart with build_runner
- Add taskHistoryTitle, taskHistoryEmpty, taskHistoryCount to app_de.arb
- Regenerate app_localizations.dart and app_localizations_de.dart
- All 5 new DAO tests pass, zero analyze issues
2026-03-16 21:55:44 +01:00
2687f5e31e test(06-01): add failing tests for watchCompletionsForTask DAO method
- Tests cover empty state, single completion, multiple completions in reverse order
- Tests cover task isolation (different taskIds do not cross-contaminate)
- Tests cover stream reactivity (new completion triggers emission)
2026-03-16 21:53:21 +01:00
f718ee8483 feat(05-02): build CalendarStrip, CalendarTaskRow, CalendarDayList widgets
- Add totalTaskCount field to CalendarDayState to distinguish first-run from celebration
- Add getTaskCount() to CalendarDao (SELECT COUNT from tasks)
- CalendarStrip: 181-day horizontal scroll with German abbreviations, today highlighting, month boundary labels, scroll-to-today controller
- CalendarTaskRow: task name + room tag chip + checkbox, no relative date, isOverdue coral styling
- CalendarDayList: loading/error/first-run-empty/empty-day/celebration/has-tasks states, overdue section (today only), slide-out completion animation
- Update home_screen_test.dart and app_shell_test.dart to test new calendar providers instead of dailyPlanProvider
2026-03-16 21:35:35 +01:00
f5c4b4928f test(05-01): add failing tests for CalendarDao
- watchTasksForDate: empty list, date filter, multi-room, alpha sort, no overdue carry-over
- watchOverdueTasks: empty list, before-date filter, excludes reference date, sorted by date
2026-03-16 21:19:55 +01:00
77de7cdbf3 feat(04-02): add widget tests for notification settings UI
- 5 tests for Benachrichtigungen section: header rendering, toggle OFF default,
  time picker visibility on/off with AnimatedSize, formatted time display
- Uses notificationSettingsProvider.overrideWithValue for test isolation
- Uses themeProvider.overrideWithValue to avoid SharedPreferences dependency
- UncontrolledProviderScope + ProviderContainer follows home_screen_test pattern
- All 89 tests pass (84 existing + 5 new)
2026-03-16 15:07:26 +01:00
e7e6ed4946 fix(03-03): resolve dart analyze warnings in test files
- Remove unused drift import in daily_plan_dao_test
- Fix unused local variable in tasks_dao_test
- Switch ProviderScope to UncontrolledProviderScope in home_screen_test
  and app_shell_test to resolve riverpod_lint scoped_providers warning

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:51:39 +01:00
444213ece1 feat(03-02): rewrite HomeScreen with daily plan UI, completion animation, empty states, and tests
- Complete HomeScreen rewrite: progress card, overdue/today/tomorrow sections
- Animated task completion with SizeTransition + SlideTransition on checkbox tap
- "All clear" celebration state when all tasks done, "no tasks" state for first-run
- Room name tags navigate to room task list via context.go
- 6 widget tests covering empty, all-clear, normal state, overdue, tomorrow sections
- Fixed app_shell_test to override dailyPlanProvider for new HomeScreen dependency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:39:04 +01:00
74b3bd5543 test(03-01): add failing tests for DailyPlanDao cross-room query and completion count
- 7 failing tests for watchAllTasksWithRoomName and watchCompletionsToday
- DAO stub with UnimplementedError methods registered in AppDatabase
- TaskWithRoom and DailyPlanState model classes defined

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:28:21 +01:00
da270e5457 feat(02-01): German task templates for 14 room types with detectRoomType
- Create TaskTemplate class with name, intervalType, intervalDays, effortLevel
- Add roomTemplates const map with 3-6 templates per room type (14 total)
- Implement detectRoomType with case-insensitive matching and alias support
- Room types: kueche, badezimmer, schlafzimmer, wohnzimmer, flur, buero,
  garage, balkon, waschkueche, keller, kinderzimmer, gaestezimmer, esszimmer, garten
- All 11 template tests passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 21:52:05 +01:00
d2e452655c feat(02-01): Drift tables, DAOs, scheduling utility, domain models with tests
- Add Rooms, Tasks, TaskCompletions Drift tables with schema v2 migration
- Create RoomsDao with CRUD, watchAll, watchWithStats, cascade delete, reorder
- Create TasksDao with CRUD, watchInRoom (sorted by due), completeTask, overdue detection
- Implement calculateNextDueDate and catchUpToPresent pure scheduling functions
- Define IntervalType enum (8 types), EffortLevel enum, FrequencyInterval model
- Add formatRelativeDate German formatter and curatedRoomIcons icon list
- Enable PRAGMA foreign_keys in beforeOpen migration strategy
- All 30 unit tests passing (17 scheduling + 6 rooms DAO + 7 tasks DAO)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 21:50:12 +01:00