153 Commits

Author SHA1 Message Date
22a0f2f99b docs(phase-10): complete phase execution
Some checks failed
CI / ci (push) Has been cancelled
Build and Release to F-Droid / build-and-deploy (push) Has been cancelled
Build and Release to F-Droid / ci (push) Has been cancelled
v1.2.0
2026-03-19 08:29:15 +01:00
35905af70c docs(10-01): add self-check and final commit hash to SUMMARY.md 2026-03-19 08:25:57 +01:00
80e701187e docs(10-01): complete dead-code-cleanup plan
- Create 10-01-SUMMARY.md: deleted 3 orphaned v1.0 daily plan files, removed DailyPlanState
- Update STATE.md: position, decisions, blocker resolved, session info
- Update ROADMAP.md: Phase 10 complete, 10-01-PLAN.md checked off
- Update REQUIREMENTS.md: CLN-01 marked complete
2026-03-19 08:25:13 +01:00
510529a950 chore(10-01): delete orphaned v1.0 daily plan presentation files and remove DailyPlanState
- Delete daily_plan_providers.dart (orphaned since Phase 5 calendar strip)
- Delete daily_plan_task_row.dart (orphaned since Phase 5 calendar strip)
- Delete progress_card.dart (orphaned since Phase 5 calendar strip)
- Remove DailyPlanState class from daily_plan_models.dart (only used by deleted files)
- Preserve TaskWithRoom class (still used by calendar system)
2026-03-19 08:21:38 +01:00
11c70f63ae docs(10-dead-code-cleanup): create phase plan 2026-03-19 08:17:25 +01:00
d83e6332cd docs(phase-09): complete phase execution 2026-03-18 22:51:10 +01:00
8af0b1b4e5 docs(09-01): complete frequency picker rework plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 22:47:04 +01:00
8a0b69b688 feat(09-01): rework frequency picker with shortcut chips and freeform picker
- Replace 10-chip grid + hidden Custom mode with 4 shortcut chips (Täglich, Wöchentlich, Alle 2 Wochen, Monatlich)
- Always-visible freeform 'Alle [N] [Tage/Wochen/Monate]' picker row below chips
- Bidirectional sync: tapping chip populates picker; editing picker recalculates chip highlight
- _resolveFrequency() now reads exclusively from picker (single source of truth)
- Edit mode correctly loads all 8 IntervalType values including quarterly and yearly
- Add l10n keys frequencyShortcutDaily/Weekly/Biweekly/Monthly to app_de.arb
2026-03-18 22:45:38 +01:00
1fd6c05f0f docs(09): complete phase planning 2026-03-18 22:42:23 +01:00
c482f16b8d docs(09-task-creation-ux): create phase plan 2026-03-18 22:40:38 +01:00
8a3fb65e20 docs(phase-08): complete phase execution
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 21:08:28 +01:00
6db4611719 docs(08-02): complete task delete UI plan
- Add 08-02-SUMMARY.md with delete button and smartDeleteTask outcomes
- Update STATE.md with progress, decisions, and session continuity
- Update ROADMAP.md: phase 08-task-delete 2/2 plans complete
- Mark DEL-01 and DEL-04 requirements complete
2026-03-18 21:03:21 +01:00
6133c977f5 feat(08-02): add delete button and confirmation dialog to TaskFormScreen
- Red FilledButton.icon with error color below history section (edit mode only)
- _onDelete shows AlertDialog with taskDeleteConfirmTitle/Message l10n strings
- Confirm calls smartDeleteTask and pops back to room task list
- Cancel dismisses dialog with no action
- Button disabled while _isLoading
- All 144 tests pass, dart analyze clean
2026-03-18 21:01:53 +01:00
1b1b981dac feat(08-02): add smartDeleteTask to TaskActions provider
- Checks completion count before deleting
- Hard-deletes tasks with 0 completions
- Soft-deletes (isActive=false) tasks with completions
- Keeps existing deleteTask method for cascade/other uses
2026-03-18 21:00:29 +01:00
3bfa411d29 docs(08-01): complete isActive column and DAO filtering plan
- Create 08-01-SUMMARY.md with execution results and deviation docs
- Update STATE.md: progress 50%, decisions recorded, session updated
- Update ROADMAP.md: phase 8 marked In Progress (1/2 plans complete)
- Mark requirements DEL-02 and DEL-03 complete in REQUIREMENTS.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 20:58:44 +01:00
b2f14dcd97 feat(08-01): add isActive filters to CalendarDao, DailyPlanDao, RoomsDao
- CalendarDao: filter all 6 task queries (watchTasksForDate,
  watchTasksForDateInRoom, watchOverdueTasks, watchOverdueTasksInRoom,
  getTaskCount, getTaskCountInRoom) by isActive=true
- DailyPlanDao: filter all 3 queries (watchAllTasksWithRoomName,
  getOverdueAndTodayTaskCount, getOverdueTaskCount) by isActive=true
- RoomsDao: filter watchRoomWithStats task query by isActive=true
- Update migration test: add schema_v3.dart, test v1->v3 and v2->v3 paths
- Update database_test schemaVersion assertion to expect 3
- Fix test helpers in home_screen_test and task_list_screen_test to pass isActive=true
2026-03-18 20:56:34 +01:00
4b51f5fa04 feat(08-01): add isActive column, migration v3, softDeleteTask and getCompletionCount
- Add isActive BoolColumn (default true) to Tasks table
- Bump schema version from 2 to 3 with addColumn migration
- Filter watchTasksInRoom to isActive=true only
- Filter getOverdueTaskCount to isActive=true only
- Add softDeleteTask(taskId) - sets isActive=false without removing data
- Add getCompletionCount(taskId) - counts TaskCompletions for a task
2026-03-18 20:49:45 +01:00
a2cef91d7e test(08-01): add failing tests for softDeleteTask, getCompletionCount, isActive filtering
- Tests for softDeleteTask sets isActive=false without removing from DB
- Tests for getCompletionCount with 0 and N completions
- Tests for watchTasksInRoom excludes inactive tasks
- Tests for getOverdueTaskCount excludes inactive tasks
- Test for hard deleteTask still removes task and completions
2026-03-18 20:48:09 +01:00
cff5f9e67b docs(08-task-delete): create phase plan 2026-03-18 20:45:08 +01:00
5fb688fc22 docs(state): record phase 8 context session 2026-03-18 20:40:19 +01:00
aed676c236 docs(08): capture phase context 2026-03-18 20:40:09 +01:00
b00ed8fac1 docs: start milestone v1.2 Polish & Task Management
Define requirements (9 total: task delete, creation UX, cleanup),
create roadmap (phases 8-10), and update PROJECT.md with new
milestone goals. Room cover photos dropped from scope.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 20:24:12 +01:00
1f59e2ef8e chore: release 1.1.5
All checks were successful
CI / ci (push) Successful in 10m56s
Build and Release to F-Droid / ci (push) Successful in 10m50s
Build and Release to F-Droid / build-and-deploy (push) Successful in 12m8s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.1.5
2026-03-17 12:37:19 +01:00
de6f5a6784 fix(ci): remove dart pub audit step (unsupported in runner SDK)
All checks were successful
CI / ci (push) Successful in 10m50s
The stable Flutter SDK on the CI runner does not include
the `dart pub audit` subcommand. Trivy scan still covers
dependency security.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 12:06:19 +01:00
3d28aba0db fix(ci): install jq before flutter-action in CI and release workflows
Some checks failed
CI / ci (push) Failing after 3m33s
subosito/flutter-action@v2 requires jq to parse action inputs.
The ci job in both workflows was missing the install step.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 11:51:32 +01:00
92de2bd7de feat: add F-Droid store icon and CI workflow
Some checks failed
Build and Release to F-Droid / build-and-deploy (push) Has been cancelled
Build and Release to F-Droid / ci (push) Has been cancelled
CI / ci (push) Failing after 1m2s
Add 512x512 app icon to F-Droid metadata for en-US and de-DE locales.
Add CI pipeline with static analysis, tests, security audit, and debug build.
Add security gate in release workflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v1.1.4
2026-03-17 11:44:40 +01:00
bca7e391ad ci: add CI pipeline with analysis, tests, security audit, and debug build
Add ci.yaml triggered on branch pushes and PRs with flutter analyze,
flutter test, dart pub audit, Trivy scan, and debug APK build. Gate the
release workflow behind a CI job so release builds only proceed after
all checks pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 11:42:17 +01:00
3902755f61 docs: add project README with features, screenshots, and setup instructions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 11:03:02 +01:00
8d635970d2 fix(release.yaml): remove accidental text from grep command
All checks were successful
Build and Release to F-Droid / build-and-deploy (push) Successful in 11m33s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v1.1.3
2026-03-17 10:58:27 +01:00
51dba090d6 refactor: switch to MIT License, add tagging instructions, and update F-Droid workflow
- Replaces Apache 2.0 with MIT License and updates copyright details
- Adds tagging instructions to `CLAUDE.md` for semantic versioning and CHANGELOG updates
- Updates release workflow to copy metadata to F-Droid repo
2026-03-17 10:55:46 +01:00
fc5a612b81 feat: add custom house launcher icon, themed splash screen, and F-Droid metadata
Replace default Flutter icon with white house on sage green (#7A9A6D) background.
Add native splash screen with themed colors (#F5F0E8 light, #2A2520 dark).
Include F-Droid metadata with screenshots for de-DE and en-US locales.
Add CHANGELOG.md tracking all releases from v1.0.0 to v1.1.3.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 10:55:32 +01:00
fa778a238a chore(release.yaml): update workflow to set Flutter app version from Git tag
All checks were successful
Build and Release to F-Droid / build-and-deploy (push) Successful in 12m0s
- Adds script to parse Git tag, calculate semantic version and numeric build code
- Updates `pubspec.yaml` with version and build code during release
v1.1.2
2026-03-17 09:39:50 +01:00
d220dbe5ce test(TaskListScreen): add integration tests for filtered and overdue task states
All checks were successful
Build and Release to F-Droid / build-and-deploy (push) Successful in 10m30s
- Covers empty states, celebration state, and scheduled/overdue task rendering
- Verifies proper checkbox behavior for future tasks
- Tests AppBar for sort dropdown, edit/delete actions, and calendar strip
- Adds necessary test helpers and overrides for room-specific tasks
v1.1.1
2026-03-16 23:35:17 +01:00
edce11dd78 chore: complete v1.1 milestone
Archive v1.1 Calendar & Polish milestone artifacts (roadmap,
requirements, phase directories) to milestones/. Evolve PROJECT.md
with validated requirements and new key decisions. Update
RETROSPECTIVE.md with v1.1 section and cross-milestone trends.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 23:32:04 +01:00
0ea79e0853 docs(phase-07): complete phase execution
All checks were successful
Build and Release to F-Droid / build-and-deploy (push) Successful in 10m29s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v1.1
2026-03-16 22:43:41 +01:00
772034cba1 docs(07-02): complete sort dropdown UI plan
- 07-02-SUMMARY.md: SortDropdown widget wired into HomeScreen and TaskListScreen AppBars
- STATE.md: updated metrics, decisions, session record
- ROADMAP.md: Phase 7 complete (2/2 plans done)
2026-03-16 22:40:39 +01:00
a3e4d0224b feat(07-02): add sort dropdown tests to HomeScreen and fix AppShell test regression
- Add sortPreferenceProvider override to _buildApp test helper
- Add 'HomeScreen sort dropdown' test group: verifies PopupMenuButton<TaskSortOption> and AppBar title
- Fix app_shell_test: expect findsWidgets for 'Übersicht' since AppBar title now also shows it
- 115 tests pass total (113 existing + 2 new)
2026-03-16 22:39:18 +01:00
e5eccb74e5 feat(07-02): build SortDropdown widget and integrate into HomeScreen and TaskListScreen
- Create SortDropdown ConsumerWidget using PopupMenuButton<TaskSortOption>
- Displays current sort label with sort icon in AppBar actions
- Check mark shown on active option via Opacity widget
- Add Scaffold with AppBar (title: Übersicht, actions: SortDropdown) to HomeScreen
- Add SortDropdown before edit/delete IconButtons in TaskListScreen AppBar
2026-03-16 22:37:18 +01:00
9398193c1e docs(07-01): complete task sort domain and provider plan 2026-03-16 22:35:01 +01:00
3697e4efc4 feat(07-01): integrate sort logic into calendarDayProvider and tasksInRoomProvider
- calendarDayProvider watches sortPreferenceProvider and sorts dayTasks
- overdueTasks intentionally unsorted (pinned at top per design decision)
- tasksInRoomProvider watches sortPreferenceProvider and sorts via stream.map
- _sortTasks helper (TaskWithRoom) and _sortTasksRaw helper (Task) both support:
  - alphabetical: case-insensitive A-Z by name
  - interval: by intervalType.index ascending, intervalDays as tiebreaker
  - effort: by effortLevel.index ascending (low→medium→high)
- All 113 tests pass, analyze clean
2026-03-16 22:33:34 +01:00
13c7d623ba feat(07-01): create TaskSortOption enum, SortPreferenceNotifier, and localization strings
- TaskSortOption enum with alphabetical, interval, effort values
- SortPreferenceNotifier persists sort preference to SharedPreferences
- Follows ThemeNotifier pattern: sync default (alphabetical), async load
- Generated sort_preference_notifier.g.dart via build_runner
- Added sortAlphabetical/sortInterval/sortEffort/sortLabel to app_de.arb
- Regenerated app_localizations.dart and app_localizations_de.dart
2026-03-16 22:32:06 +01:00
a9f298350e test(07-01): add failing tests for SortPreferenceNotifier
- Tests cover default state (alphabetical)
- Tests cover setSortOption state update
- Tests cover SharedPreferences persistence
- Tests cover persisted value loaded on restart
- Tests cover unknown persisted value fallback
2026-03-16 22:30:05 +01:00
a44f2b80b5 fix(07): remove invalid -x flag from Task 1 verify command 2026-03-16 22:26:50 +01:00
27f18d4f39 docs(07-task-sorting): create phase plan 2026-03-16 22:23:24 +01:00
a94d41b7f7 docs(state): record phase 7 context session 2026-03-16 22:14:31 +01:00
99358ed704 docs(07): capture phase context 2026-03-16 22:14:13 +01:00
2a4b14cb43 chore(release): improve F-Droid release workflow for repo persistence
- Download entire `fdroid/` directory from Hetzner to retain older APKs, repo keystore, and config.yml.
- Add steps to ensure repo signing key and icons during initialization.
- Adjust SCP upload to include the entire `fdroid/` directory for better state continuity.
2026-03-16 22:13:32 +01:00
7a2c1b81de docs(phase-06): complete phase execution 2026-03-16 22:02:03 +01:00
7344933278 docs(06-01): complete task history plan
- Create 06-01-SUMMARY.md with full execution documentation
- Update STATE.md: Phase 6 Plan 1 complete, decisions recorded
- Update ROADMAP.md: Phase 6 marked complete (1/1 plans)
- Mark HIST-01 and HIST-02 requirements complete
2026-03-16 21:59:00 +01:00
9f902ff2c7 feat(06-01): build task history sheet, wire into TaskFormScreen, add CalendarTaskRow navigation
- Create task_history_sheet.dart: showTaskHistorySheet() modal bottom sheet
- Sheet uses StreamBuilder on watchCompletionsForTask, shows dates in dd.MM.yyyy + HH:mm format
- Empty state: Icons.history + 'Noch nie erledigt' message
- Count summary shown above list when completions exist
- Add Verlauf ListTile to TaskFormScreen (edit mode only) opening history sheet
- Add onTap to CalendarTaskRow navigating to /rooms/:roomId/tasks/:taskId
- All 106 tests pass, zero analyze issues
2026-03-16 21:57:11 +01:00