157 lines
10 KiB
Markdown
157 lines
10 KiB
Markdown
# 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, `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.
|