192 lines
9.3 KiB
Markdown
192 lines
9.3 KiB
Markdown
# 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.
|
||
- [ ] Update architecture and payload behavior in SPEC.md.
|
||
- [ ] 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 SLICE8–10 reflect the
|
||
final implementation state.
|