2026-07-28 12:11:09 -04:00

192 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TASKS — SLICE8 through SLICE10
Use this file as the cross-slice implementation checklist. Update it whenever a
task is completed or its status changes. Keep automated validation results and
manual Joplin acceptance recorded separately.
## Overall status
- [x] SLICE8 complete — incremental card limits
- [x] SLICE9 complete — opted-in note cards
- [ ] SLICE10 complete — child-notebook boards and matrices
Implementation order: SLICE8, then SLICE9, then SLICE10.
## SLICE8 — Incremental card limits for kanban and matrix views
### Configuration and types
- [x] Add normalized `page-size` fields to `KanbanConfig` and `MatrixConfig` in
`src/Gtd/types.ts`.
- [x] Recognize `page-size` in `parseKanbanConfig.ts` and
`parseMatrixConfig.ts`.
- [x] Default `page-size` to 10.
- [x] Accept positive integer overrides.
- [x] Warn and fall back to 10 for zero, negative, fractional, or non-numeric
values.
- [x] Add parser tests for defaults, valid overrides, and invalid fallbacks.
- [x] Send normalized `pageSize` in successful and missing-source-note kanban
and matrix responses.
- [x] Preserve collector arguments, result shapes, sorting, totals, and scope
behavior while adding the payload field.
### Rendering and interaction
- [x] Add reusable incremental-list behavior to
`src/gtd-calendar-webview.js`.
- [x] Initially render at most `page-size` cards in each kanban column.
- [x] Initially render at most `page-size` cards in each matrix quadrant.
- [x] Add a separate "List more" control to every bucket with hidden cards.
- [x] Reveal the next `page-size` cards in only the clicked bucket.
- [x] Update the remaining-entry count after every click.
- [x] Remove the control when no hidden cards remain.
- [x] Reset all expansion state when the rendered note reloads.
- [x] Keep complete collection results and total-card statistics; apply limits
only while rendering.
### Accessibility and styling
- [x] Style the button and remaining-count popup in `src/event-calendar.css`.
- [x] Show the exact remaining-entry count on pointer hover.
- [x] Make the same summary available on keyboard focus.
- [x] Ensure activating "List more" never triggers a card's note-open action.
### Tests, documentation, and acceptance
- [x] Test empty buckets and buckets smaller than one batch.
- [x] Test buckets containing exactly one batch.
- [x] Test one card beyond a batch boundary.
- [x] Test repeated expansion and final-control removal.
- [x] Test independent expansion across columns, quadrants, and stacked blocks.
- [x] Document `page-size` and transient expansion in README.md.
- [x] Document the behavior and data-flow boundary in SPEC.md.
- [x] Add the feature to CHANGELOG.md.
- [x] Run the full automated test suite and record command/results.
- [x] Run the production package build and record command/artifact.
- [x] Manually verify kanban with more than 20 cards in one column in Joplin.
- [x] Manually verify Skeleton and Eisenhower matrices with more than 20 cards
in one quadrant in Joplin.
- [x] Confirm sorting, card navigation, styling, warnings, and statistics remain
unchanged.
- [x] Mark SLICE8 complete in `SLICE8.md` and this file.
## SLICE9 — Include opted-in note cards in kanban and matrix views
### Collection and types
- [x] Update kanban collection to inspect ordinary notes (`is_todo: 0`).
- [x] Include an ordinary note only when its body contains a `gtd` block.
- [x] Keep ordinary notes without a `gtd` block excluded.
- [x] Keep the host view note excluded even when it contains a `gtd` block.
- [x] Preserve current `todos:` behavior for to-do notes.
- [x] Place eligible normal notes with the configured in-progress tag in the
kanban In Progress column.
- [x] Place other eligible normal notes in the kanban Backlog column.
- [x] Never place normal notes in the kanban Done column.
- [x] Apply existing urgent/important tag bucketing to normal notes in an
Eisenhower matrix.
- [x] Apply existing date bucketing to normal notes in a Skeleton matrix.
- [x] Reuse `gtd` title, date, colour, icon, and text overrides on note cards.
- [x] Ensure normal notes are never marked completed or recurring.
- [x] Update card types to represent notes and to-dos accurately.
- [x] Fetch note bodies wherever opted-in notes may be collected while retaining
only safe body-fetch optimizations.
### Tests
- [x] Test kanban inclusion for a note containing a valid `gtd` block.
- [x] Test kanban exclusion for a plain note.
- [x] Test kanban Backlog and In Progress placement for note cards.
- [x] Test host-note exclusion and malformed `gtd` block warnings.
- [x] Test that current to-do and Done behavior is unchanged.
- [x] Test note-card bucketing in Skeleton matrix mode.
- [x] Test note-card bucketing in Eisenhower matrix mode.
- [x] Test completed-to-do exclusion remains unchanged in matrices.
- [x] Test mixed note/to-do sorting and click-to-open payloads.
- [x] Test that SLICE8 limits use the combined note and to-do card count.
### Documentation and acceptance
- [x] Document note-card opt-in rules and examples in README.md.
- [x] Update SPEC.md with mixed note/to-do behavior.
- [x] Add the feature to CHANGELOG.md.
- [x] Run the full automated test suite and record command/results.
- [x] Run the production package build and record command/artifact.
- [x] Manually verify mixed note/to-do kanban views in Joplin.
- [x] Manually verify mixed note/to-do views in both matrix modes in Joplin.
- [x] Confirm existing to-do filtering, completion, sorting, styling, warnings,
and navigation do not regress.
- [x] Mark SLICE9 complete in `SLICE9.md` and this file.
## SLICE10 — Separate child-notebook kanban and matrix views
### Scope and folder grouping
- [x] Preserve explicit `scope: children` plus `group: notebook` intent in
normalized kanban and matrix configuration.
- [x] Keep numeric scope, `this-folder`, and `scope: all` semantics unchanged.
- [x] Add a shared folder-tree helper that returns notebook IDs, titles, paths,
and parent relationships in deterministic tree/path order.
- [x] Handle nested notebooks and duplicate notebook names correctly.
- [x] Create one result group for cards owned directly by the root notebook.
- [x] Create one result group for cards owned directly by each descendant
notebook.
- [x] Ensure every in-scope card appears in exactly one notebook group.
- [x] Omit empty notebook groups.
- [x] Preserve one overall empty-state presentation when all groups are empty.
### Payloads and rendering
- [x] Add named per-notebook kanban and matrix groups to collection result types.
- [x] Retain compatible single-view results unless both `scope: children` and
`group: notebook` are selected.
- [x] Provide aggregate and per-view statistics without double-counting notes or
cards.
- [x] Preserve warnings at the appropriate overall or notebook-view level.
- [x] Update plugin-to-webview messages and handlers for grouped results.
- [x] Render a complete kanban or matrix component for every non-empty group.
- [x] Use the full notebook path as each view heading.
- [x] Give every generated view independent SLICE8 expansion state.
- [x] Apply the configured `page-size` independently within every view bucket.
- [x] Group SLICE9 note cards by owning notebook in the same way as to-do cards.
### Tests
- [x] Test preservation of explicit `children` plus `group: notebook` intent.
- [x] Test deterministic folder ordering, nested paths, duplicate names, and
empty groups.
- [x] Test that kanban cards appear exactly once in their owning notebook group.
- [x] Test the same invariant in Skeleton and Eisenhower matrices.
- [x] Include both note and to-do cards in grouping tests.
- [x] Test aggregate statistics and warnings for double-counting regressions.
- [ ] Test independent batching and "List more" state across generated views.
- [x] Test that ungrouped `children`, numeric scope, `this-folder`, and
`scope: all` still produce one view with unchanged behavior.
### Documentation and acceptance
- [x] Document `scope: children` plus `group: notebook` multi-view behavior
in README.md.
- [x] Add a parent/child/grandchild notebook example to README.md or SPEC.md.
- [x] Update architecture and payload behavior in SPEC.md.
- [x] Add the feature to CHANGELOG.md.
- [x] Run the full automated test suite and record command/results.
- [x] Run the production package build and record command/artifact.
- [x] Manually verify a parent notebook containing multiple children and
grandchildren in Joplin.
- [x] Confirm headings, ordering, empty-group handling, no duplication, sorting,
styling, navigation, warnings, and independent expansion.
- [ ] Mark SLICE10 complete in `SLICE10.md` and this file.
## Final cross-slice verification
- [ ] Run the complete automated suite after all three slices are integrated.
- [ ] Build the final production `.jpl` and record its path and version.
- [x] Verify a dashboard containing kanban and both matrix modes together.
- [x] Verify more than 20 mixed note/to-do cards across multiple child notebooks.
- [x] Confirm reload resets every expanded list to its configured initial size.
- [x] Record manual Joplin acceptance without conflating it with automated checks.
- [ ] Re-run the repository-wide prohibited-reference audit.
- [ ] Ensure README.md, SPEC.md, CHANGELOG.md, TASKS.md, and SLICE810 reflect the
final implementation state.