# 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. ## 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: ` 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, `end` ≥ `begin`, 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](https://github.com/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.