forked from eva/focus-flow
docs: complete date selection handoff
This commit is contained in:
parent
a82b58167e
commit
9c996ae278
9 changed files with 90 additions and 11 deletions
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
# Date Selection 01 Block 02 — Selected-Date State and Reads
|
# 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.
|
**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
|
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.
|
`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
|
## Chunk 2.1 — Add selected-date state API
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
# Date Selection 01 Block 03 — Top-Bar Navigation and Date Picker
|
# 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
|
**Goal:** Wire the visible top-bar controls to selected-date state while
|
||||||
preserving the compact dark UI.
|
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
|
After this block, the user can click previous/next day arrows and open a date
|
||||||
picker from the displayed 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
|
## Chunk 3.1 — Refactor `TopBar` callback API
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
# Date Selection 01 Block 04 — Date-Aware Commands and Persistence
|
# 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
|
**Goal:** Ensure task commands run against the currently selected date and persist
|
||||||
correctly across multiple days.
|
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
|
visible day, close the app, reopen it, and see the expected state on the same
|
||||||
selected day.
|
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
|
## Chunk 4.1 — Make command controller date-aware
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
# Date Selection 01 Block 05 — Completion Date Presentation
|
# Date Selection 01 Block 05 — Completion Date Presentation
|
||||||
|
|
||||||
**Status:** Planned.
|
**Status:** Complete.
|
||||||
**Goal:** Show enough completion timestamp context when the completed date and
|
**Goal:** Show enough completion timestamp context when the completed date and
|
||||||
scheduled date differ.
|
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
|
completion, but they show date context when completion happened on a different
|
||||||
local date than the scheduled slot.
|
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
|
## Chunk 5.1 — Add completion date fields to presentation models
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
# Date Selection 01 Block 06 — Validation and Handoff
|
# 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.
|
**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
|
After this block, Date Selection 01 should be complete and Task Pushing 01 can
|
||||||
begin from a date-aware, persistence-backed UI.
|
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
|
## Chunk 6.1 — Add end-to-end date navigation tests
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
# Date Selection 01 Execution Order
|
# Date Selection 01 Execution Order
|
||||||
|
|
||||||
**Status:** Planned.
|
**Status:** Complete.
|
||||||
|
|
||||||
Run these files in order. All chunks are intended for `XHIGH` execution unless a
|
Run these files in order. All chunks are intended for `XHIGH` execution unless a
|
||||||
chunk explicitly says otherwise.
|
chunk explicitly says otherwise.
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
# Date Selection 01 Summary — Day Navigation and Date Picker
|
# Date Selection 01 Summary — Day Navigation and Date Picker
|
||||||
|
|
||||||
**Status:** Planned.
|
**Status:** Complete.
|
||||||
**Scope level:** XHIGH implementation plan.
|
**Scope level:** XHIGH implementation plan.
|
||||||
**Primary outcome:** The Flutter desktop app can switch the visible planning day,
|
**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
|
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
|
## Important implementation decision
|
||||||
|
|
||||||
Do not make `DemoSchedulerComposition.date` the durable date-navigation model.
|
Do not make `DemoSchedulerComposition.date` the durable date-navigation model.
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
# Date Selection 01 — Day Navigation and Date Picker
|
# 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.
|
**Scope level:** XHIGH implementation plan.
|
||||||
|
|
||||||
This plan makes the compact Today timeline date-aware. The top-bar arrows move
|
This plan makes the compact Today timeline date-aware. The top-bar arrows move
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,12 @@
|
||||||
|
|
||||||
Ordered implementation queue:
|
Ordered implementation queue:
|
||||||
|
|
||||||
1. `Date Selection 01 - Day Navigation and Date Picker/`
|
1. `Date Selection 01 - Day Navigation and Date Picker/` — Complete; review
|
||||||
2. `Task Pushing 01 - Past Task Push Controls/`
|
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
|
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`.
|
Start each plan with its `*_SUMMARY.md`, then follow its `*_EXECUTION_ORDER.md`.
|
||||||
Completed implementation plans live in `../Archived plans/`. Curated copies that
|
Completed implementation plans live in `../Archived plans/`. Curated copies that
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue