10 KiB
Raw Blame History

Changelog

All notable changes to GTD Calendar are documented here. Versions follow the plugin's manifest.json / package.json version, which also matches the published npm releases.

2.0.0 — Unreleased

Opt-in editable Kanban

  • Added editable: yes | no to gtd-kanban, defaulting to no so every existing board remains read-only.
  • Editable desktop boards support pointer drag handles and keyboard Move to… controls for Backlog, In Progress, and Done.
  • Refined the move control into a compact disclosure arrow beneath the drag handle; its accessible destination menu stays closed until requested instead of occupying a permanent row on every card.
  • Ordinary-note moves persist configured completion/progress tags; native to-do moves persist native completion plus the configured progress tag. Unrelated fields, tags, content, dates, note type, and notebook ownership are preserved.
  • The webview submits constrained semantic intent. The main plugin process reparses configuration, refetches host/scope/item/tag state, derives minimal writes, rejects stale or malformed requests, and refreshes only the initiating view from canonical state.
  • Added pending/error feedback, pointer cancellation and movement thresholds, duplicate-request guards, request sequencing, live announcements, and focus restoration. Sorting and pagination remain authoritative after a move.
  • Pointer and keyboard workflows still require final manual Joplin acceptance; v2.0.0 has not been released or published.
  • Automated validation: 295 tests across 19 suites, TypeScript, webview syntax, whitespace, prohibited-reference checks, and production JPL inspection passed.

1.0.0 — 2026-07-28

Card underline cleanup

  • Removed the inherited clickable underline from kanban and matrix cards for both notes and to-dos.
  • Completed cards retain their line-through styling; other clickable views and card interactions are unchanged.

Independent project-note filters

  • Added notes: all | none to gtd-kanban and gtd-matrix, defaulting to all for backward compatibility.
  • notes: all continues to require explicit ordinary-note opt-in through a gtd block; notes: none enables task-only boards and matrices.
  • Project-note filtering is independent from todos, happens before warnings and tag access, and preserves grouped-view totals and empty-group omission.

Notebook-grouped kanban and matrix views

  • Added explicit group: notebook support when paired with literal scope: children, rendering separate exact-owner views for the root and each non-empty descendant notebook.
  • Cards appear once under their full notebook path; empty parents are omitted without hiding non-empty descendants.
  • Each generated column or quadrant retains independent pagination, while warnings remain with their owning notebook and statistics remain block-wide.

Done-tag completion for ordinary notes

  • Added configurable done-tag support to kanban and matrix blocks for ordinary notes that already opt in with a gtd block.
  • Kanban completion takes priority over in-progress-tag; done-window remains specific to native completed to-dos.
  • Both matrix modes exclude completed notes before quadrant bucketing.
  • Native to-dos still use Joplin completion, calendars are unchanged, and the plugin remains read-only.

Opted-in note cards for kanban and matrix

  • Ordinary notes containing a gtd block now appear in kanban and matrix views. Empty blocks opt in; plain notes without the block remain excluded.
  • Kanban places note cards in Backlog or In Progress from the configured tag; the later done-tag addition places completed project notes in Done. Ordinary notes never display recurrence state.
  • Skeleton and Eisenhower matrices apply their existing date/tag axes to note cards. Completed to-dos remain excluded.
  • Note cards reuse gtd title, date, colour, icon, and text overrides. They use 📄 when no custom icon is provided and click through to the source note.
  • Malformed gtd blocks remain visible with fallback values and the existing warning. The todos: option continues to govern only to-dos.
  • Kanban and matrix inspect bodies whenever an admitted type can use a gtd block; tag requests remain limited to eligible items.
  • Validation: 185 automated tests passed, the production JPL was built, and manual Joplin acceptance passed on 2026-07-27.

Incremental kanban and matrix card limits

  • Added page-size to gtd-kanban and gtd-matrix (positive integer, default 10); invalid values warn and fall back to 10.
  • Each kanban column and matrix quadrant initially shows one batch. List more reveals the next batch independently without changing saved configuration; reload resets expansion.
  • Hovering over or focusing List more shows the exact number of hidden entries. The control uses a linked accessible tooltip, retains keyboard focus between intermediate clicks, and disappears after the final batch.
  • Collectors still return complete sorted results and statistics; batching is transient webview state, so headings and totals remain complete.
  • Validation: 164 automated tests passed, the production JPL was built and inspected, and manual Joplin acceptance passed on 2026-07-27.

0.7.0 — Gantt chart

  • New gtd-gantt block: a project-grouped timeline of bars and milestones.
  • Dual-role fence — a gtd-gantt block with a project: key is an item declaration (renders as an inline gantt: <project> badge); without one it's the chart. Same rule applied by the renderer and the collector.
  • Notes → bars (begin-date + end-date; both required and valid, endbegin, else excluded with a warning). To-dos → milestones (◆ on the native due date; begin/end on a to-do are ignored with a warning; no due date → excluded). No Unscheduled section.
  • Items grouped into swimlanes by project: (case-insensitive, alphabetical); completed milestones dimmed/struck, recurring get ↻; styling keys (bg-colour/fg-colour/title/text) mirror the gtd block.
  • Chart options: title, scope (incl. all), notebook, filter-project, sort/sort-type (begin-date/title/modified-date), card-detail. No notes/todos option (items opt in via project:).
  • Rendering: CSS-grid timeline with a month tick header, a "today" line, horizontal scroll for wide ranges, and click-to-open. Read-only.

0.6.0 — Notebook targeting & profile-wide scope

  • Added notebook: to every view block (gtd-calendar, gtd-kanban, gtd-matrix, gtd-gantt): root the folder scan at a specific notebook — by unique name, Parent/Child title path, or 32-char folder id — even one outside the host note's tree. scope then applies relative to it. Unknown/ambiguous notebooks warn and fall back to the host note's folder.
  • Added scope: all: scan every notebook in the profile. Guardrails — the stats footnote reports the scan size and is marked scope: all, and a soft ⚠ warning appears past ~2000 scanned notes. notebook: is ignored under scope: all (with a warning).
  • Performance: view collectors now request note bodies only when the inclusion mode actually needs the gtd block, trimming data fetched for profile-wide scans.

0.5.0 — The Skeleton Matrix

  • Added mode: skeleton | eisenhower to gtd-matrix (default: skeleton).
  • Skeleton mode replaces Eisenhower's opinion-based axes with derived ones: rows = active (in-progress-tag, shared with the kanban), columns = due soon (urgent-window days, default 3, overdue included; urgent-tag as a manual override for dateless items). Quadrants: Do Next, Scheduled, On Deck, Backlog — nothing is ever "Eliminate".
  • Classic Eisenhower preserved via mode: eisenhower.
  • MatrixBoard is now positional internally (top-left…bottom-right); labels are supplied per mode, and rendering is fully shared between the two modes.

0.4.0 — Eisenhower Matrix

  • New gtd-matrix block: a 2×2 prioritisation grid with labelled axes.
  • Quadrants from two tags (urgent-tag, important-tag): Do First / Schedule / Delegate / Eliminate.
  • Completed to-dos excluded entirely (a prioritisation view, not a tracking view).
  • Cards reuse the kanban's rendering (compact, recurrence mark, drilldown, card-detail).

0.3.2 — Unscheduled visibility toggles

  • Added unscheduled-todos and unscheduled-notes options to gtd-calendar (default: yes for both; also accepts true/false, show/hide).
  • Lets a dashboard with multiple stacked calendar blocks show each Unscheduled sub-section under only one of them, instead of duplicating the list.

0.3.1 — Split Unscheduled section

  • The Unscheduled area now shows two labelled sub-sections — Unscheduled to-dos (first) and Unscheduled notes — instead of one mixed list.
  • A sub-section is omitted entirely when it has no items.

0.3.0 — Kanban board

  • New gtd-kanban block: three columns (Backlog / In Progress / Done) built from to-dos only.
  • Bucketing: todo_completed wins → Done; else the in-progress-tag → In Progress; else → Backlog.
  • Done column limited to a configurable done-window (default 7 days; all for full history).
  • Per-column sort (due-date / title / modified-date); dateless cards sort last under due-date.
  • Compact cards with a configurable detail panel (card-detail: hover | always | none).
  • Read-only.

0.2.0 — Recurring to-do awareness

  • Recurring to-dos (as managed by the Repeating To-Dos plugin, v2) are marked with a ↻ symbol across every view.
  • Detected via the recurring tag the Repeating To-Dos plugin maintains as its own query index — no coupling to its note-body format, no code duplication of its recurrence logic.

0.1.0 — Initial release

  • Forked from WeMakeMachines/joplin-plugin-event-calendar.
  • gtd-calendar block populated by real notes and to-dos (instead of hand-written YAML) in the calendar note's folder and, optionally, its descendants (scope).
  • Views: day, week, month (compact tile strip, upstream-style) and month-grid (full current-month 7-column grid with weekday headers).
  • Notes and to-dos opt in via a gtd fenced block (empty block valid); to-dos schedule automatically from their Joplin due date.
  • Unscheduled items (no resolvable date) collect below the grid.
  • Drilldown: every tile opens its source note.
  • Fixed an upstream bug where the week view silently grouped by month.