10 KiB
10 KiB
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
- SLICE8 complete — incremental card limits
- SLICE9 complete — opted-in note cards
- SLICE10 complete — child-notebook boards and matrices
- SLICE11 complete — ordinary-note completion with a
donetag - SLICE12 complete — independent project-note and task-to-do filters
- SLICE13 complete — underline removal for kanban and matrix cards
- SLICE14 complete — opt-in kanban drag and drop
- 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
- Add normalized
page-sizefields toKanbanConfigandMatrixConfiginsrc/Gtd/types.ts. - Recognize
page-sizeinparseKanbanConfig.tsandparseMatrixConfig.ts. - Default
page-sizeto 10. - Accept positive integer overrides.
- Warn and fall back to 10 for zero, negative, fractional, or non-numeric values.
- Add parser tests for defaults, valid overrides, and invalid fallbacks.
- Send normalized
pageSizein successful and missing-source-note kanban and matrix responses. - Preserve collector arguments, result shapes, sorting, totals, and scope behavior while adding the payload field.
Rendering and interaction
- Add reusable incremental-list behavior to
src/gtd-calendar-webview.js. - Initially render at most
page-sizecards in each kanban column. - Initially render at most
page-sizecards in each matrix quadrant. - Add a separate "List more" control to every bucket with hidden cards.
- Reveal the next
page-sizecards in only the clicked bucket. - Update the remaining-entry count after every click.
- Remove the control when no hidden cards remain.
- Reset all expansion state when the rendered note reloads.
- Keep complete collection results and total-card statistics; apply limits only while rendering.
Accessibility and styling
- Style the button and remaining-count popup in
src/event-calendar.css. - Show the exact remaining-entry count on pointer hover.
- Make the same summary available on keyboard focus.
- Ensure activating "List more" never triggers a card's note-open action.
Tests, documentation, and acceptance
- Test empty buckets and buckets smaller than one batch.
- Test buckets containing exactly one batch.
- Test one card beyond a batch boundary.
- Test repeated expansion and final-control removal.
- Test independent expansion across columns, quadrants, and stacked blocks.
- Document
page-sizeand transient expansion in README.md. - Document the behavior and data-flow boundary in SPEC.md.
- Add the feature to CHANGELOG.md.
- Run the full automated test suite and record command/results.
- Run the production package build and record command/artifact.
- Manually verify kanban with more than 20 cards in one column in Joplin.
- Manually verify Skeleton and Eisenhower matrices with more than 20 cards in one quadrant in Joplin.
- Confirm sorting, card navigation, styling, warnings, and statistics remain unchanged.
- Mark SLICE8 complete in
SLICE8.mdand this file.
SLICE9 — Include opted-in note cards in kanban and matrix views
Collection and types
- Update kanban collection to inspect ordinary notes (
is_todo: 0). - Include an ordinary note only when its body contains a
gtdblock. - Keep ordinary notes without a
gtdblock excluded. - Keep the host view note excluded even when it contains a
gtdblock. - Preserve current
todos:behavior for to-do notes. - Place eligible normal notes with the configured in-progress tag in the kanban In Progress column.
- Place other eligible normal notes in the kanban Backlog column.
- Never place normal notes in the kanban Done column.
- Apply existing urgent/important tag bucketing to normal notes in an Eisenhower matrix.
- Apply existing date bucketing to normal notes in a Skeleton matrix.
- Reuse
gtdtitle, date, colour, icon, and text overrides on note cards. - Ensure normal notes are never marked completed or recurring.
- Update card types to represent notes and to-dos accurately.
- Fetch note bodies wherever opted-in notes may be collected while retaining only safe body-fetch optimizations.
Tests
- Test kanban inclusion for a note containing a valid
gtdblock. - Test kanban exclusion for a plain note.
- Test kanban Backlog and In Progress placement for note cards.
- Test host-note exclusion and malformed
gtdblock warnings. - Test that current to-do and Done behavior is unchanged.
- Test note-card bucketing in Skeleton matrix mode.
- Test note-card bucketing in Eisenhower matrix mode.
- Test completed-to-do exclusion remains unchanged in matrices.
- Test mixed note/to-do sorting and click-to-open payloads.
- Test that SLICE8 limits use the combined note and to-do card count.
Documentation and acceptance
- Document note-card opt-in rules and examples in README.md.
- Update SPEC.md with mixed note/to-do behavior.
- Add the feature to CHANGELOG.md.
- Run the full automated test suite and record command/results.
- Run the production package build and record command/artifact.
- Manually verify mixed note/to-do kanban views in Joplin.
- Manually verify mixed note/to-do views in both matrix modes in Joplin.
- Confirm existing to-do filtering, completion, sorting, styling, warnings, and navigation do not regress.
- Mark SLICE9 complete in
SLICE9.mdand this file.
SLICE10 — Separate child-notebook kanban and matrix views
Scope and folder grouping
- Preserve explicit
scope: childrenplusgroup: notebookintent in normalized kanban and matrix configuration. - Keep numeric scope,
this-folder, andscope: allsemantics unchanged. - Add a shared folder-tree helper that returns notebook IDs, titles, paths, and parent relationships in deterministic tree/path order.
- Handle nested notebooks and duplicate notebook names correctly.
- Create one result group for cards owned directly by the root notebook.
- Create one result group for cards owned directly by each descendant notebook.
- Ensure every in-scope card appears in exactly one notebook group.
- Omit empty notebook groups.
- Preserve one overall empty-state presentation when all groups are empty.
Payloads and rendering
- Add named per-notebook kanban and matrix groups to collection result types.
- Retain compatible single-view results unless both
scope: childrenandgroup: notebookare selected. - Provide aggregate and per-view statistics without double-counting notes or cards.
- Preserve warnings at the appropriate overall or notebook-view level.
- Update plugin-to-webview messages and handlers for grouped results.
- Render a complete kanban or matrix component for every non-empty group.
- Use the full notebook path as each view heading.
- Give every generated view independent SLICE8 expansion state.
- Apply the configured
page-sizeindependently within every view bucket. - Group SLICE9 note cards by owning notebook in the same way as to-do cards.
Tests
- Test preservation of explicit
childrenplusgroup: notebookintent. - Test deterministic folder ordering, nested paths, duplicate names, and empty groups.
- Test that kanban cards appear exactly once in their owning notebook group.
- Test the same invariant in Skeleton and Eisenhower matrices.
- Include both note and to-do cards in grouping tests.
- Test aggregate statistics and warnings for double-counting regressions.
- Test independent batching and "List more" state across generated views.
- Test that ungrouped
children, numeric scope,this-folder, andscope: allstill produce one view with unchanged behavior.
Documentation and acceptance
- Document
scope: childrenplusgroup: notebookmulti-view behavior in README.md. - 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.
- Run the full automated test suite and record command/results.
- Run the production package build and record command/artifact.
- Manually verify a parent notebook containing multiple children and grandchildren in Joplin.
- Confirm headings, ordering, empty-group handling, no duplication, sorting, styling, navigation, warnings, and independent expansion.
- Mark SLICE10 complete in
SLICE10.mdand this file.
Final cross-slice verification
- Run the complete automated suite after all three slices are integrated.
- Build the final production
.jpland record its path and version. - Verify a dashboard containing kanban and both matrix modes together.
- Verify more than 20 mixed note/to-do cards across multiple child notebooks.
- Confirm reload resets every expanded list to its configured initial size.
- 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.
Subsequent slice status
- SLICE11 complete. Implementation, focused and full automation, production JPL inspection, and manual Joplin acceptance were completed on 2026-07-28.
- SLICE12 complete. Implementation, focused and full automation, production JPL inspection, and manual Joplin acceptance were completed on 2026-07-28.
- SLICE13 complete. Implementation, automation, production package inspection, and manual Joplin acceptance were completed on 2026-07-28.
- SLICE14 complete. Phases 1–7 passed; explicit manual Joplin acceptance was received on 2026-07-31. Slice 15 remains not started.
- SLICE14a complete. Phases 1–5 passed and explicit manual acceptance was received on 2026-07-31.
- SLICE15 complete. Phases 1–7 passed, production packaging was inspected, and explicit manual Joplin acceptance was received on 2026-07-31.