diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md index 4027ec2..ffcca6c 100644 --- a/.planning/PROJECT.md +++ b/.planning/PROJECT.md @@ -8,6 +8,16 @@ A local-first Flutter app for organizing household chores, built for personal/co 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 + +**Goal:** Add task delete with smart soft/hard behavior, rework the task creation frequency picker for better UX, and clean up dead code from v1.0. + +**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) + ## Requirements ### Validated @@ -27,9 +37,11 @@ Users can see what needs doing today, mark it done, and trust the app to schedul ### Active -- [ ] Data export/import (JSON) -- [ ] English localization -- [ ] Room cover photos from camera or gallery +- [ ] Task delete with smart soft/hard behavior +- [ ] Task creation frequency picker UX rework +- [ ] Dead code cleanup (v1.0 daily plan files) +- [ ] Data export/import (JSON) — deferred +- [ ] English localization — deferred ### Out of Scope @@ -46,6 +58,7 @@ Users can see what needs doing today, mark it done, and trust the app to schedul - Weekly/monthly calendar views — date strip is sufficient for task app - Drag tasks between days — tasks auto-schedule based on frequency - Calendar sync (Google/Apple) — contradicts local-first, offline-only design +- Room cover photos from camera or gallery — dropped, clean design preferred - Statistics & insights dashboard — v2.0 - Onboarding wizard — v2.0 - Custom accent color picker — v2.0 @@ -90,4 +103,4 @@ Users can see what needs doing today, mark it done, and trust the app to schedul | PopupMenuButton for sort UI | Material 3 AppBar action pattern, overlay menu | Good — clean integration in both HomeScreen and TaskListScreen AppBars | --- -*Last updated: 2026-03-16 after v1.1 milestone completed* +*Last updated: 2026-03-18 after v1.2 milestone started* diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md new file mode 100644 index 0000000..ceeb917 --- /dev/null +++ b/.planning/REQUIREMENTS.md @@ -0,0 +1,91 @@ +# Requirements: HouseHoldKeaper + +**Defined:** 2026-03-18 +**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. + +## v1.2 Requirements + +Requirements for milestone v1.2 Polish & Task Management. Each maps to roadmap phases. + +### Task Delete + +- [ ] **DEL-01**: User can delete a task from the task edit form via a clearly visible delete action +- [ ] **DEL-02**: Deleting a task that has never been completed removes it from the database entirely (hard delete) +- [ ] **DEL-03**: Deleting a task that has been completed at least once deactivates it instead (soft delete) — task is hidden from all active views but preserved in the database for future statistics +- [ ] **DEL-04**: User sees a confirmation before deleting/deactivating a task + +### Task Creation UX + +- [ ] **TCX-01**: Frequency picker presents an intuitive "Every [N] [unit]" interface instead of a flat grid of preset chips +- [ ] **TCX-02**: Common frequencies (daily, weekly, biweekly, monthly) are available as quick-select shortcuts without scrolling through all options +- [ ] **TCX-03**: User can set any arbitrary interval (e.g., every 5 days, every 3 weeks, every 2 months) without needing to select "Custom" first +- [ ] **TCX-04**: The frequency picker preserves all existing interval types and scheduling behavior (calendar-anchored monthly/quarterly/yearly with anchor memory) + +### Cleanup + +- [ ] **CLN-01**: Dead code from v1.0 daily plan (daily_plan_providers.dart, daily_plan_task_row.dart, progress_card.dart) is removed without breaking notification service (DailyPlanDao must be preserved) + +## Future Requirements + +Deferred to future release. Tracked but not in current roadmap. + +### Data + +- **DATA-01**: User can export all data as JSON +- **DATA-02**: User can import data from JSON backup + +### Localization + +- **LOC-01**: User can switch UI language to English + +### v2.0 + +- **ONB-01**: Onboarding wizard for first-time users +- **ACC-01**: User can pick a custom accent color for the app theme +- **STAT-01**: Statistics & insights dashboard showing task completion trends + +## Out of Scope + +Explicitly excluded. Documented to prevent scope creep. + +| Feature | Reason | +|---------|--------| +| Room cover photos from camera or gallery | Dropped — clean design system preferred | +| User accounts & cloud sync | Local-only by design | +| Leaderboards & points ranking | Not a gamification app | +| Subscription model / in-app purchases | Free forever | +| Family profile sharing across devices | Single-device app | +| Server-side infrastructure | Zero backend | +| AI-powered task suggestions | Overkill for curated templates | +| Per-task push notifications | Daily summary is more effective | +| Firebase or any Google cloud services | Contradicts local-first design | +| Real-time cross-device sync | Potential future self-hosted feature | +| Tablet-optimized layout | Future enhancement | +| Weekly/monthly calendar views | Date strip is sufficient for task app | +| Drag tasks between days | Tasks auto-schedule based on frequency | +| Calendar sync (Google/Apple) | Contradicts local-first, offline-only design | + +## Traceability + +Which phases cover which requirements. Updated during roadmap creation. + +| Requirement | Phase | Status | +|-------------|-------|--------| +| DEL-01 | Phase 8 | Planned | +| DEL-02 | Phase 8 | Planned | +| DEL-03 | Phase 8 | Planned | +| DEL-04 | Phase 8 | Planned | +| TCX-01 | Phase 9 | Planned | +| TCX-02 | Phase 9 | Planned | +| TCX-03 | Phase 9 | Planned | +| TCX-04 | Phase 9 | Planned | +| CLN-01 | Phase 10 | Planned | + +**Coverage:** +- v1.2 requirements: 9 total +- Mapped to phases: 9 +- Unmapped: 0 + +--- +*Requirements defined: 2026-03-18* +*Last updated: 2026-03-18 after roadmap creation (phases 8-10)* diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 27859ca..56b3f01 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -4,6 +4,7 @@ - ✅ **v1.0 MVP** — Phases 1-4 (shipped 2026-03-16) - ✅ **v1.1 Calendar & Polish** — Phases 5-7 (shipped 2026-03-16) +- **v1.2 Polish & Task Management** — Phases 8-10 (in progress) ## Phases @@ -30,6 +31,46 @@ See `milestones/v1.1-ROADMAP.md` for full phase details. +**v1.2 Polish & Task Management (Phases 8-10):** + +- [ ] **Phase 8: Task Delete** - Add smart delete action to tasks — hard delete if never completed, soft delete (deactivate) if completed at least once +- [ ] **Phase 9: Task Creation UX** - Rework the frequency picker from flat preset chips to an intuitive "Every N units" interface with quick-select shortcuts +- [ ] **Phase 10: Dead Code Cleanup** - Remove orphaned v1.0 daily plan files and verify no regressions + +## Phase Details + +### Phase 8: Task Delete +**Goal**: Users can remove tasks they no longer need, with smart preservation of completion history for future statistics +**Depends on**: Phase 7 (v1.1 shipped — calendar, history, and sorting all in place) +**Requirements**: DEL-01, DEL-02, DEL-03, DEL-04 +**Success Criteria** (what must be TRUE): + 1. The task edit form has a clearly visible delete action (button or icon) + 2. Deleting a task with zero completions removes it from the database entirely + 3. Deleting a task with one or more completions sets it to inactive/archived — the task disappears from all active views (calendar, room task lists) but its completion records remain in the database + 4. A confirmation dialog appears before any delete/archive action + 5. The tasks table has an `isActive` (or equivalent) column, with all existing tasks defaulting to active via migration + +### Phase 9: Task Creation UX +**Goal**: Users can set any recurring frequency intuitively without hunting through a grid of preset chips — common frequencies are one tap away, custom intervals are freeform +**Depends on**: Phase 8 +**Requirements**: TCX-01, TCX-02, TCX-03, TCX-04 +**Success Criteria** (what must be TRUE): + 1. The frequency section presents a primary "Every [N] [unit]" picker where users can type a number and select days/weeks/months + 2. Common frequencies (daily, weekly, biweekly, monthly) are available as quick-select shortcuts that populate the picker + 3. Any arbitrary interval is settable without a separate "Custom" mode — the picker is inherently freeform + 4. All existing interval types and calendar-anchored scheduling behavior continue to work correctly (monthly/quarterly/yearly anchor memory) + 5. Existing tasks load their current interval into the new picker correctly in edit mode + +### Phase 10: Dead Code Cleanup +**Goal**: Remove orphaned v1.0 daily plan files that are no longer used after the calendar strip replacement, keeping the codebase clean +**Depends on**: Phase 8 (cleanup after feature work is done) +**Requirements**: CLN-01 +**Success Criteria** (what must be TRUE): + 1. daily_plan_providers.dart, daily_plan_task_row.dart, and progress_card.dart are deleted + 2. DailyPlanDao is preserved (still used by notification service) + 3. All 108+ tests pass after cleanup + 4. `dart analyze` reports zero issues + ## Progress | Phase | Milestone | Plans Complete | Status | Completed | @@ -41,3 +82,6 @@ See `milestones/v1.1-ROADMAP.md` for full phase details. | 5. Calendar Strip | v1.1 | 2/2 | Complete | 2026-03-16 | | 6. Task History | v1.1 | 1/1 | Complete | 2026-03-16 | | 7. Task Sorting | v1.1 | 2/2 | Complete | 2026-03-16 | +| 8. Task Delete | v1.2 | - | Planned | - | +| 9. Task Creation UX | v1.2 | - | Planned | - | +| 10. Dead Code Cleanup | v1.2 | - | Planned | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index 4aceb44..34ba5e6 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -1,46 +1,47 @@ --- gsd_state_version: 1.0 -milestone: v1.1 -milestone_name: Calendar & Polish -status: completed -stopped_at: Milestone v1.1 archived -last_updated: "2026-03-16T23:26:00.000Z" -last_activity: 2026-03-16 — Milestone v1.1 archived +milestone: v1.2 +milestone_name: Polish & Task Management +status: planning +stopped_at: Milestone v1.2 roadmap created +last_updated: "2026-03-18" +last_activity: 2026-03-18 — Created v1.2 milestone with requirements and roadmap progress: total_phases: 3 - completed_phases: 3 - total_plans: 5 - completed_plans: 5 - percent: 100 + completed_phases: 0 + total_plans: 0 + completed_plans: 0 + percent: 0 --- # Project State ## Project Reference -See: .planning/PROJECT.md (updated 2026-03-16) +See: .planning/PROJECT.md (updated 2026-03-18) **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 focus:** Planning next milestone +**Current focus:** v1.2 Polish & Task Management — Phase 8: Task Delete ## Current Position -Milestone: v1.1 Calendar & Polish — SHIPPED -Status: Milestone Complete -Last activity: 2026-03-16 — Archived milestone v1.1 +Milestone: v1.2 Polish & Task Management +Phase: 8 — Task Delete (not yet planned) +Status: Ready for /gsd:plan-phase 8 +Last activity: 2026-03-18 — Created v1.2 milestone ``` -Progress: [██████████] 100% (v1.1 shipped) +Progress: [░░░░░░░░░░] 0% (0/3 phases) ``` ## Performance Metrics -| Metric | v1.0 | v1.1 | -|--------|------|------| -| Phases | 4 | 3 | -| Plans | 13 | 5 | -| LOC (lib) | 7,773 | 9,051 | -| Tests | 89 | 108 | +| Metric | v1.0 | v1.1 | v1.2 | +|--------|------|------|------| +| Phases | 4 | 3 | 3 planned | +| Plans | 13 | 5 | TBD | +| LOC (lib) | 7,773 | 9,051 | TBD | +| Tests | 89 | 108 | TBD | ## Accumulated Context @@ -54,11 +55,11 @@ None. ### Blockers/Concerns -- Dead code from v1.0: daily_plan_providers.dart, daily_plan_task_row.dart, progress_card.dart (DailyPlanDao still used by notification service) +- Dead code from v1.0: daily_plan_providers.dart, daily_plan_task_row.dart, progress_card.dart (DailyPlanDao still used by notification service) — scheduled for Phase 10 ## Session Continuity -Last session: 2026-03-16 -Stopped at: Milestone v1.1 archived +Last session: 2026-03-18 +Stopped at: Milestone v1.2 roadmap created Resume file: None -Next action: /gsd:new-milestone +Next action: /gsd:plan-phase 8