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>
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
---
|
||||
gsd_state_version: 1.0
|
||||
milestone: v1.0
|
||||
milestone_name: milestone
|
||||
milestone: v1.1
|
||||
milestone_name: Calendar & Polish
|
||||
status: completed
|
||||
stopped_at: Completed 07-task-sorting/07-02-PLAN.md
|
||||
last_updated: "2026-03-16T21:43:23.009Z"
|
||||
last_activity: 2026-03-16 — Completed Phase 6 Plan 01 (task completion history)
|
||||
stopped_at: Milestone v1.1 archived
|
||||
last_updated: "2026-03-16T23:26:00.000Z"
|
||||
last_activity: 2026-03-16 — Milestone v1.1 archived
|
||||
progress:
|
||||
total_phases: 3
|
||||
completed_phases: 3
|
||||
@@ -21,55 +21,32 @@ progress:
|
||||
See: .planning/PROJECT.md (updated 2026-03-16)
|
||||
|
||||
**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:** v1.1 Calendar & Polish — Phase 6: Task History
|
||||
**Current focus:** Planning next milestone
|
||||
|
||||
## Current Position
|
||||
|
||||
Phase: 6 — Task History
|
||||
Plan: 1/1 complete (Phase 6 done)
|
||||
Status: Phase Complete
|
||||
Last activity: 2026-03-16 — Completed Phase 6 Plan 01 (task completion history)
|
||||
Milestone: v1.1 Calendar & Polish — SHIPPED
|
||||
Status: Milestone Complete
|
||||
Last activity: 2026-03-16 — Archived milestone v1.1
|
||||
|
||||
```
|
||||
Progress: [██████████] 100% (1/1 plans in Phase 6)
|
||||
Progress: [██████████] 100% (v1.1 shipped)
|
||||
```
|
||||
|
||||
## Performance Metrics
|
||||
|
||||
| Metric | v1.0 | v1.1 |
|
||||
|--------|------|------|
|
||||
| Phases | 4 | 3 planned |
|
||||
| Plans | 13 | TBD |
|
||||
| LOC (lib) | 7,773 | TBD |
|
||||
| Tests | 89 | TBD |
|
||||
| Phase 05-calendar-strip P01 | 5 | 2 tasks | 10 files |
|
||||
| Phase 05-calendar-strip P02 | 8 | 3 tasks | 9 files |
|
||||
| Phase 06-task-history P01 | 5 | 2 tasks | 9 files |
|
||||
| Phase 07-task-sorting P01 | 4 | 2 tasks | 9 files |
|
||||
| Phase 07-task-sorting P02 | 4 | 2 tasks | 5 files |
|
||||
| Phases | 4 | 3 |
|
||||
| Plans | 13 | 5 |
|
||||
| LOC (lib) | 7,773 | 9,051 |
|
||||
| Tests | 89 | 108 |
|
||||
|
||||
## Accumulated Context
|
||||
|
||||
### Decisions
|
||||
|
||||
| Decision | Rationale |
|
||||
|----------|-----------|
|
||||
| Calendar strip replaces daily plan home screen | v1.1 goal per PROJECT.md — not additive, the stacked overdue/today/upcoming sections are removed |
|
||||
| Phase 5 before Phase 6 and 7 | Calendar strip is the primary UI surface; history and sorting operate within or alongside it |
|
||||
| Phase 6 and 7 both depend on Phase 5 only | History and sorting are independent of each other — could execute in either order |
|
||||
| HIST-01 and HIST-02 in same phase | Data layer (HIST-01) is only 1-2 DAO additions; grouping with the UI (HIST-02) keeps the phase coherent |
|
||||
| Used NotifierProvider<SelectedDateNotifier> instead of deprecated StateProvider | Riverpod 3.x removed StateProvider; NotifierProvider is the correct replacement |
|
||||
| calendarDayProvider fetches overdue tasks with .first in asyncMap when isToday | Consistent with dailyPlanProvider pattern; avoids combining two streams |
|
||||
| watchTasksForDate sorts alphabetically by task name | Same-day tasks have no meaningful time-based order; alpha sort is deterministic and user-friendly |
|
||||
| CalendarStripController as VoidCallback holder | Avoids GlobalKey for single imperative scroll-to-today action — simpler |
|
||||
| Tests use pump()+pump(Duration) instead of pumpAndSettle() | CalendarStrip animation controllers cause pumpAndSettle timeout — fixed-duration pump steps are reliable |
|
||||
| No separate Riverpod provider for history sheet | ref.read(appDatabaseProvider) directly in ConsumerWidget — one-shot modals do not need a dedicated provider |
|
||||
| CalendarTaskRow onTap navigates to task edit form | Makes history accessible in one tap from home screen, consistent with GoRouter route patterns |
|
||||
- [Phase 07-task-sorting]: Default sort is alphabetical — continuity with existing A-Z SQL sort in CalendarDayList
|
||||
- [Phase 07-task-sorting]: overdueTasks are NOT sorted — pinned at top in existing order per design decision
|
||||
- [Phase 07-task-sorting]: Sort preference stored as enum.name string in SharedPreferences (not intEnum) — enum reordering safe
|
||||
- [Phase 07-task-sorting]: Used PopupMenuButton for SortDropdown in AppBar — menu overlay vs inline expansion, Material 3 pattern
|
||||
- [Phase 07-task-sorting]: HomeScreen uses nested Scaffold for AppBar — standard StatefulShellRoute.indexedStack per-tab AppBar pattern
|
||||
Decisions archived to PROJECT.md Key Decisions table.
|
||||
|
||||
### Pending Todos
|
||||
|
||||
@@ -77,11 +54,11 @@ None.
|
||||
|
||||
### Blockers/Concerns
|
||||
|
||||
- Phase 5 complete. daily_plan_providers.dart, daily_plan_task_row.dart, and progress_card.dart are now dead code (safe to clean up in a future phase). DailyPlanDao must NOT be deleted — still used by the 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)
|
||||
|
||||
## Session Continuity
|
||||
|
||||
Last session: 2026-03-16T21:40:24.556Z
|
||||
Stopped at: Completed 07-task-sorting/07-02-PLAN.md
|
||||
Last session: 2026-03-16
|
||||
Stopped at: Milestone v1.1 archived
|
||||
Resume file: None
|
||||
Next action: Phase 7 (task sorting) or release
|
||||
Next action: /gsd:new-milestone
|
||||
|
||||
Reference in New Issue
Block a user