Sets expectations clearly: the plugin is desktop-only (custom code-block
rendering + webview messaging aren't reliably supported on mobile), but
the underlying to-dos sync and appear in Joplin's native mobile views.
- Detect recurrence via the 'recurring' tag maintained by the Repeating
To-Dos plugin (v2 stores recurrence in userData, not the note body, so
tag-presence is the correct signal — not body scanning)
- DataAdapter gains getNoteTagTitles; lookup runs for to-dos only (notes
can't recur), keeping extra API calls minimal
- GtdEvent.isRecurring threaded through collector and payload
- Webview shows ↻ to the right of any icon/glyph across all views:
strip tiles, hover-card rows, month-grid chips, unscheduled chips
- RECURRING_TAG constant leaves room for a future configurable tag name
- README documents the pairing; SPEC roadmap marks Option A shipped
- Version bumped to 0.2.0; 2 new tests (49 total)
- README rewritten for end users: quick start, full option reference for
both blocks, date-resolution rules, drilldown, limitations, credits
- Four screenshots added under docs/screenshots/
- SPEC.md remains the design/developer document, linked from README
- groupEvents: buildMonthGrid covers the entire current calendar month
padded to full weeks; adjacent-month padding days are flagged (dimmed)
but can still hold events; events outside the window are counted
- Localised short weekday names as column headers; month/year label
- Webview renders a CSS grid: day cells with date number, today border
highlight, clickable event chips (colour, icon/glyph, strikethrough,
ellipsis overflow)
- Config accepts view: month-grid (alias: grid)
- SPEC.md updated; 5 new tests (47 total)
- src/Gtd/groupEvents.ts: render-ready day/week/month grouping mirroring
upstream semantics (empty groups across the span, month-coloured tiles,
primary labels on month/year boundaries, current-period flag). Divergence:
the span always includes today so the highlight is visible.
- Grouping runs in the main process; payload now carries calendar.groups +
calendar.unscheduled. Webview is a pure DOM builder.
- Webview rebuilds upstream's .event-calendar / .group / .hover-card
structure so existing CSS applies: tile per period, first event's
icon/2-chars (+N for multiples), bg/fg colours, hover card listing
events with type glyphs and strikethrough for completed todos.
- Drilldown: single-event tiles open the note directly; hover-card rows
and Unscheduled chips are individually clickable.
- Stable pastel from note-id hash replaces upstream's per-render random
colour for events without bg-colour.
- Unscheduled section: chip list below the grid (the GTD bucket).
- 9 new grouping tests (42 total)
- New markdown-it content script intercepts ```gtd-calendar fences and
emits a placeholder div (config URI-encoded in a data attribute)
- New webview asset (gtd-calendar-webview.js) finds placeholders, requests
data via webviewApi.postMessage, renders a debug view, and wires
click-to-open drilldown (openNote command)
- index.ts registers the content script and handles getEvents/openNote;
getEvents parses the YAML config for real but returns hardcoded events,
including one pointing at the current note to prove drilldown
- Old event-calendar content script removed; Calendar/ classes retained
for reuse in Phase 3
- Fork CSS section appended (placeholder, error, debug styles)
- New manifest id com.victorwiebe.joplin.plugin.gtd-calendar (coexists with upstream)
- Version reset to 0.1.0
- Fix Calendar/index.ts importing MonthGrouping as WeekGrouping (upstream bug:
week view silently grouped by month)