# TASKS — SLICE8 through SLICE14 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 - [x] SLICE10 complete — child-notebook boards and matrices - [x] SLICE11 complete — ordinary-note completion with a `done` tag - [x] SLICE12 complete — independent project-note and task-to-do filters - [x] SLICE13 complete — underline removal for kanban and matrix cards - [x] SLICE14 complete — opt-in kanban drag and drop - [x] SLICE14a complete — compact move menu Slices 8–13 are complete. SLICE14 is the next implementation slice. ## 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. - [x] 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. - [x] Mark SLICE10 complete in `SLICE10.md` and this file. ## Final cross-slice verification - [x] Run the complete automated suite after all three slices are integrated. - [x] 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. - [x] Re-run the repository-wide prohibited-reference audit. - [x] Ensure README.md, SPEC.md, CHANGELOG.md, TASKS.md, and SLICE8–10 reflect the final implementation state. ## Subsequent slice status - [x] SLICE11 complete. Implementation, focused and full automation, production JPL inspection, and manual Joplin acceptance were completed on 2026-07-28. - [x] SLICE12 complete. Implementation, focused and full automation, production JPL inspection, and manual Joplin acceptance were completed on 2026-07-28. - [x] SLICE13 complete. Implementation, automation, production package inspection, and manual Joplin acceptance were completed on 2026-07-28. - [x] SLICE14 complete. Phases 1–7 passed; explicit manual Joplin acceptance was received on 2026-07-31. Slice 15 remains not started. - [x] SLICE14a complete. Phases 1–5 passed and explicit manual acceptance was received on 2026-07-31. - [x] SLICE15 complete. Phases 1–7 passed, production packaging was inspected, and explicit manual Joplin acceptance was received on 2026-07-31.