From 9c996ae27843c390b7c748d61ca033e6f59c0ec6 Mon Sep 17 00:00:00 2001 From: Ashley Venn Date: Thu, 2 Jul 2026 08:35:03 -0700 Subject: [PATCH] docs: complete date selection handoff --- ..._BLOCK_02_SELECTED_DATE_STATE_AND_READS.md | 11 +++++++- ..._BLOCK_03_TOP_BAR_NAVIGATION_AND_PICKER.md | 10 +++++++- ..._04_DATE_AWARE_COMMANDS_AND_PERSISTENCE.md | 11 +++++++- ...1_BLOCK_05_COMPLETION_DATE_PRESENTATION.md | 10 +++++++- ...ELECTION_01_BLOCK_06_VALIDATION_HANDOFF.md | 23 ++++++++++++++++- .../DATE_SELECTION_01_EXECUTION_ORDER.md | 2 +- .../DATE_SELECTION_01_SUMMARY.md | 25 ++++++++++++++++++- .../README.md | 2 +- .../Current Software Plan/README.md | 7 +++--- 9 files changed, 90 insertions(+), 11 deletions(-) diff --git a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_02_SELECTED_DATE_STATE_AND_READS.md b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_02_SELECTED_DATE_STATE_AND_READS.md index ba2a811..a807770 100644 --- a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_02_SELECTED_DATE_STATE_AND_READS.md +++ b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_02_SELECTED_DATE_STATE_AND_READS.md @@ -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 diff --git a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_03_TOP_BAR_NAVIGATION_AND_PICKER.md b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_03_TOP_BAR_NAVIGATION_AND_PICKER.md index 93ec340..b02d5de 100644 --- a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_03_TOP_BAR_NAVIGATION_AND_PICKER.md +++ b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_03_TOP_BAR_NAVIGATION_AND_PICKER.md @@ -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 diff --git a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_04_DATE_AWARE_COMMANDS_AND_PERSISTENCE.md b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_04_DATE_AWARE_COMMANDS_AND_PERSISTENCE.md index 261bbb2..868aa96 100644 --- a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_04_DATE_AWARE_COMMANDS_AND_PERSISTENCE.md +++ b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_04_DATE_AWARE_COMMANDS_AND_PERSISTENCE.md @@ -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 diff --git a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_05_COMPLETION_DATE_PRESENTATION.md b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_05_COMPLETION_DATE_PRESENTATION.md index f55694a..6cc29a2 100644 --- a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_05_COMPLETION_DATE_PRESENTATION.md +++ b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_05_COMPLETION_DATE_PRESENTATION.md @@ -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 diff --git a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_06_VALIDATION_HANDOFF.md b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_06_VALIDATION_HANDOFF.md index 8b943a9..9d5bbc4 100644 --- a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_06_VALIDATION_HANDOFF.md +++ b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_BLOCK_06_VALIDATION_HANDOFF.md @@ -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 diff --git a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_EXECUTION_ORDER.md b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_EXECUTION_ORDER.md index 2553d59..aeb53b2 100644 --- a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_EXECUTION_ORDER.md +++ b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_EXECUTION_ORDER.md @@ -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. diff --git a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_SUMMARY.md b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_SUMMARY.md index bd530b1..7e0e57c 100644 --- a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_SUMMARY.md +++ b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/DATE_SELECTION_01_SUMMARY.md @@ -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. diff --git a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/README.md b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/README.md index be10eb3..ae4c367 100644 --- a/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/README.md +++ b/Codex Documentation/Current Software Plan/Date Selection 01 - Day Navigation and Date Picker/README.md @@ -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 diff --git a/Codex Documentation/Current Software Plan/README.md b/Codex Documentation/Current Software Plan/README.md index 174263c..85d0fa8 100644 --- a/Codex Documentation/Current Software Plan/README.md +++ b/Codex Documentation/Current Software Plan/README.md @@ -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