docs: complete date selection handoff

This commit is contained in:
Ashley Venn 2026-07-02 08:35:03 -07:00
parent a82b58167e
commit 9c996ae278
9 changed files with 90 additions and 11 deletions

View file

@ -4,7 +4,7 @@
# Date Selection 01 Block 02 — Selected-Date State and Reads
**Status:** Planned.
**Status:** Complete.
**Goal:** Make Today screen loading date-aware without changing task state.
---
@ -14,6 +14,15 @@
After this block, app/controller code can load Today data for any selected
`CivilDate`. The visual top-bar buttons may still be disabled until Block 03.
Implementation notes:
1. Added `SelectedDateController` with no-op repeated selection and explicit
previous/next day movement.
2. Made `TodayScreenController` read through the selected date, clear selected
cards on date change, and protect newer loads from stale in-flight reads.
3. Added controller coverage for direct selection, previous/next, empty reads,
failures, and rapid navigation.
---
## Chunk 2.1 — Add selected-date state API

View file

@ -4,7 +4,7 @@
# Date Selection 01 Block 03 — Top-Bar Navigation and Date Picker
**Status:** Planned.
**Status:** Complete.
**Goal:** Wire the visible top-bar controls to selected-date state while
preserving the compact dark UI.
@ -15,6 +15,14 @@ preserving the compact dark UI.
After this block, the user can click previous/next day arrows and open a date
picker from the displayed date.
Implementation notes:
1. Wired `TopBar` previous, next, and choose-date callbacks through the screen
scaffold.
2. Converted the date label to an accessible button that opens Flutter's themed
date picker.
3. Preserved modal safety by closing selected cards when changing dates.
---
## Chunk 3.1 — Refactor `TopBar` callback API

View file

@ -4,7 +4,7 @@
# Date Selection 01 Block 04 — Date-Aware Commands and Persistence
**Status:** Planned.
**Status:** Complete.
**Goal:** Ensure task commands run against the currently selected date and persist
correctly across multiple days.
@ -16,6 +16,15 @@ After this block, a user can switch days, add/schedule/complete tasks on that
visible day, close the app, reopen it, and see the expected state on the same
selected day.
Implementation notes:
1. `SchedulerCommandController` now reads the selected date at command execution
time.
2. Persistent and demo compositions create date-aware read and command
controllers.
3. SQLite lifecycle coverage proves future-day schedule, complete, uncomplete,
reopen, and unified Backlog behavior.
---
## Chunk 4.1 — Make command controller date-aware

View file

@ -4,7 +4,7 @@
# Date Selection 01 Block 05 — Completion Date Presentation
**Status:** Planned.
**Status:** Complete.
**Goal:** Show enough completion timestamp context when the completed date and
scheduled date differ.
@ -16,6 +16,14 @@ After this block, completed timeline cards still look compact for normal same-da
completion, but they show date context when completion happened on a different
local date than the scheduled slot.
Implementation notes:
1. Timeline read models carry actual start/end completion context.
2. Flutter presentation mapping shows date + time when completion metadata falls
on a different local date than the scheduled slot.
3. Model and persistence-backed tests cover same-day and cross-date completion
labels.
---
## Chunk 5.1 — Add completion date fields to presentation models

View file

@ -4,7 +4,7 @@
# Date Selection 01 Block 06 — Validation and Handoff
**Status:** Planned.
**Status:** Complete.
**Goal:** Prove date selection is stable, persisted, and ready for Task Pushing 01.
---
@ -14,6 +14,27 @@
After this block, Date Selection 01 should be complete and Task Pushing 01 can
begin from a date-aware, persistence-backed UI.
## Handoff notes
Date Selection 01 is complete on `date-selection-01-day-navigation`. The branch
is intentionally unmerged so behavior can be reviewed first.
Validation results:
1. `scripts/bootstrap_dev.sh`: passed.
2. `scripts/test.sh`: blocked before tests at `dart analyze` because the Dart
analysis server failed with `OS Error: Too many open files, errno = 24`.
3. `cd packages/scheduler_core && dart analyze`: blocked by the same Dart
analysis server file-watcher error.
4. `cd packages/scheduler_core && dart test`: passed, 300 tests.
5. `cd packages/scheduler_persistence_sqlite && dart test`: passed, 15 tests.
6. `cd apps/focus_flow_flutter && flutter analyze`: blocked by the same analyzer
server failure in this environment.
7. `cd apps/focus_flow_flutter && flutter test`: passed, 39 tests.
The analyzer failure is an environment/tooling failure, not a reported Dart or
Flutter lint finding.
---
## Chunk 6.1 — Add end-to-end date navigation tests

View file

@ -4,7 +4,7 @@
# Date Selection 01 Execution Order
**Status:** Planned.
**Status:** Complete.
Run these files in order. All chunks are intended for `XHIGH` execution unless a
chunk explicitly says otherwise.

View file

@ -4,7 +4,7 @@
# Date Selection 01 Summary — Day Navigation and Date Picker
**Status:** Planned.
**Status:** Complete.
**Scope level:** XHIGH implementation plan.
**Primary outcome:** The Flutter desktop app can switch the visible planning day,
load the correct persisted timeline for that day, and keep date-specific task
@ -103,6 +103,29 @@ widgets to compute task placement or conflict resolution.
---
## Completion notes
Date Selection 01 is complete on the `date-selection-01-day-navigation` branch
and is intentionally awaiting behavior review before merge.
Implemented behavior:
1. A selected-date controller owns previous, next, and direct date selection.
2. Today reads use the selected `CivilDate` and ignore stale in-flight results.
3. Top-bar previous/next/date-picker controls reload the selected day and keep
the compact dark UI accessible.
4. Schedule, complete, and uncomplete commands read the selected date at
execution time.
5. Future-day schedule, completion, uncompletion, and reopen behavior are covered
with SQLite-backed lifecycle tests.
6. Cross-date completion shows date + time while same-day completion remains
compact.
Validation status is recorded in
`DATE_SELECTION_01_BLOCK_06_VALIDATION_HANDOFF.md`.
---
## Important implementation decision
Do not make `DemoSchedulerComposition.date` the durable date-navigation model.

View file

@ -4,7 +4,7 @@
# Date Selection 01 — Day Navigation and Date Picker
**Status:** Planned. Execute after `Persistence Plan 1 - SQLite Runtime Persistence`.
**Status:** Complete. Execute after `Persistence Plan 1 - SQLite Runtime Persistence`.
**Scope level:** XHIGH implementation plan.
This plan makes the compact Today timeline date-aware. The top-bar arrows move

View file

@ -6,11 +6,12 @@
Ordered implementation queue:
1. `Date Selection 01 - Day Navigation and Date Picker/`
2. `Task Pushing 01 - Past Task Push Controls/`
1. `Date Selection 01 - Day Navigation and Date Picker/` — Complete; review
pending on `date-selection-01-day-navigation`.
2. `Task Pushing 01 - Past Task Push Controls/` — Next incomplete plan.
Execute only the first incomplete plan. Do not implement Task Pushing 01 until
Date Selection 01 is complete.
Date Selection 01 is reviewed and merged.
Start each plan with its `*_SUMMARY.md`, then follow its `*_EXECUTION_ORDER.md`.
Completed implementation plans live in `../Archived plans/`. Curated copies that