chore: complete v1.2 milestone — archive roadmap, requirements, update retrospective
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,23 +2,17 @@
|
||||
|
||||
## What This Is
|
||||
|
||||
A local-first Flutter app for organizing household chores, built for personal/couple use on Android. Uses a room-based task scheduling model where users create rooms, add recurring tasks with frequency intervals, and the app auto-calculates the next due date after each completion. Features a horizontal calendar strip home screen with day-by-day task navigation, task completion history, configurable sorting (alphabetical, interval, effort), bundled German-language task templates, room cleanliness indicators, and daily summary notifications. Fully offline, free, privacy-respecting — all data stays on-device.
|
||||
A local-first Flutter app for organizing household chores, built for personal/couple use on Android. Uses a room-based task scheduling model where users create rooms, add recurring tasks with frequency intervals, and the app auto-calculates the next due date after each completion. Features a horizontal calendar strip home screen with day-by-day task navigation, task completion history, configurable sorting, smart task delete (soft/hard), intuitive frequency picker with shortcuts, anytime task completion regardless of schedule, and recurring task pre-population across interval windows with muted styling. Bundled German-language task templates, room cleanliness indicators, and daily summary notifications. Fully offline, free, privacy-respecting — all data stays on-device.
|
||||
|
||||
## Core Value
|
||||
|
||||
Users can see what needs doing today, mark it done, and trust the app to schedule the next occurrence — without thinking about it.
|
||||
|
||||
## Current Milestone: v1.2 Polish & Task Management
|
||||
## Current State
|
||||
|
||||
**Goal:** Add task delete with smart soft/hard behavior, rework the task creation frequency picker for better UX, clean up dead code from v1.0, and improve task management with anytime completion and recurring task pre-population.
|
||||
Shipped v1.2 (2026-04-03). All milestone goals achieved across 4 phases, 6 plans, 14 requirements.
|
||||
|
||||
**Target features:**
|
||||
- Delete action in task edit form (hard delete if never completed, soft delete if completed at least once)
|
||||
- Intuitive "Every [N] [unit]" frequency picker replacing the flat preset chip grid
|
||||
- Common frequency shortcuts (daily, weekly, biweekly, monthly) as quick-select
|
||||
- Dead code cleanup (orphaned v1.0 daily plan files)
|
||||
- Anytime task completion — checkboxes always enabled regardless of day
|
||||
- Recurring task pre-population on all applicable interval days with muted visual styling
|
||||
**v1.2 delivered:** Smart task delete, intuitive frequency picker, dead code cleanup, anytime task completion, and recurring task pre-population with muted visual styling.
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -69,13 +63,13 @@ Users can see what needs doing today, mark it done, and trust the app to schedul
|
||||
|
||||
## Context
|
||||
|
||||
- Shipped v1.1 with 13,031 LOC Dart (9,051 lib + 3,980 test), 108 tests
|
||||
- Shipped v1.2 with 13,232 LOC Dart (lib + test), Drift schema v3
|
||||
- Tech stack: Flutter + Dart, Riverpod 3 + code generation, Drift 2.31 SQLite, GoRouter, flutter_local_notifications, SharedPreferences
|
||||
- Inspired by BeTidy (iOS/Android household cleaning app) — room-based model, no cloud/social
|
||||
- Built for personal use with partner on a shared Android device; may publish publicly later
|
||||
- Code and comments in English; UI strings German-only through v1.1
|
||||
- Code and comments in English; UI strings German-only through v1.2
|
||||
- Gitea (self-hosted on Hetzner) for version control; no CI/CD pipeline yet
|
||||
- Dead code from v1.0: daily_plan_providers.dart, daily_plan_task_row.dart, progress_card.dart (DailyPlanDao still used by notification service)
|
||||
- v1.0 dead code cleaned up in Phase 10 (DailyPlanDao preserved for notification service)
|
||||
|
||||
## Constraints
|
||||
|
||||
@@ -105,6 +99,11 @@ Users can see what needs doing today, mark it done, and trust the app to schedul
|
||||
| In-memory sort over SQL ORDER BY | Sort preference changes without re-querying DB | Good — stream.map applies sort after DB emit, reactive to preference changes |
|
||||
| SharedPreferences for sort | Simple enum.name string persistence for sort preference | Good — lightweight, no DB migration needed, survives app restart |
|
||||
| PopupMenuButton for sort UI | Material 3 AppBar action pattern, overlay menu | Good — clean integration in both HomeScreen and TaskListScreen AppBars |
|
||||
| isActive soft-delete over row deletion | Preserve completion history for future statistics | Good — BoolColumn.withDefault(true) auto-migrates existing rows |
|
||||
| Shortcut chips + freeform picker | Replace 10-chip grid with intuitive "Every N unit" | Good — fewer taps, picker is single source of truth |
|
||||
| Query-time virtual instances for pre-population | No schema migration, provider-layer only | Good — interval-window logic in providers, zero DB changes |
|
||||
| Today-based nextDueDate on non-due completion | User expects next occurrence relative to today, not original schedule | Good — simple baseDate swap in tasks_dao |
|
||||
| 0.55 Opacity for pre-populated tasks | Muted distinction without custom painting | Good — clear visual hierarchy between due/overdue/upcoming |
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-03 after Phase 11 complete — all v1.2 phases finished*
|
||||
*Last updated: 2026-04-03 after v1.2 milestone*
|
||||
|
||||
Reference in New Issue
Block a user