10 KiB
Raw Permalink Blame History

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 done tag
  • 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 813 are complete. SLICE14 is the next implementation slice.

SLICE8 — Incremental card limits for kanban and matrix views

Configuration and types

  • Add normalized page-size fields to KanbanConfig and MatrixConfig in src/Gtd/types.ts.
  • Recognize page-size in parseKanbanConfig.ts and parseMatrixConfig.ts.
  • Default page-size to 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 pageSize in 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-size cards in each kanban column.
  • Initially render at most page-size cards in each matrix quadrant.
  • Add a separate "List more" control to every bucket with hidden cards.
  • Reveal the next page-size cards 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-size and 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.md and 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 gtd block.
  • Keep ordinary notes without a gtd block excluded.
  • Keep the host view note excluded even when it contains a gtd block.
  • 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 gtd title, 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 gtd block.
  • Test kanban exclusion for a plain note.
  • Test kanban Backlog and In Progress placement for note cards.
  • Test host-note exclusion and malformed gtd block 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.md and this file.

SLICE10 — Separate child-notebook kanban and matrix views

Scope and folder grouping

  • Preserve explicit scope: children plus group: notebook intent in normalized kanban and matrix configuration.
  • Keep numeric scope, this-folder, and scope: all semantics 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: children and group: notebook are 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-size independently within every view bucket.
  • Group SLICE9 note cards by owning notebook in the same way as to-do cards.

Tests

  • Test preservation of explicit children plus group: notebook intent.
  • 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, and scope: all still produce one view with unchanged behavior.

Documentation and acceptance

  • Document scope: children plus group: notebook multi-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.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.
  • 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 SLICE810 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 17 passed; explicit manual Joplin acceptance was received on 2026-07-31. Slice 15 remains not started.
  • SLICE14a complete. Phases 15 passed and explicit manual acceptance was received on 2026-07-31.
  • SLICE15 complete. Phases 17 passed, production packaging was inspected, and explicit manual Joplin acceptance was received on 2026-07-31.