73 Commits

Author SHA1 Message Date
Victor Wiebe
4cb6700a20 v0.4.0: Eisenhower Matrix (gtd-matrix block)
- New gtd-matrix block: 2x2 prioritisation grid with axis headers
  (Urgent / Not urgent x Important / Not important)
- Quadrants from two configurable tags (urgent-tag default 'urgent',
  important-tag default 'important'): both -> Do First; important ->
  Schedule; urgent -> Delegate; neither -> Eliminate (default bucket)
- Completed to-dos excluded entirely (prioritisation view, not tracking;
  kanban Done is where completions live); to-dos only; matrix note
  excluded; warns when both axis tags are identical
- Same scope/todos/sort-type/sort/card-detail options as kanban; cards
  reuse kanban rendering (compact, recurrence mark, drilldown)
- Quadrant colour accents: red Do First, blue Schedule, amber Delegate,
  grey Eliminate
- SPEC roadmap restructured: matrix shipped as v0.4.0 (views axis);
  drag-and-drop + create-from-view clustered as the v0.5.0+ authoring
  epic with multi-board refresh and trigger/target questions recorded
- Version 0.4.0; 11 new tests (80 total); README documented
2026-07-03 09:45:47 -04:00
Victor Wiebe
1cc6f184f0 v0.3.2: per-type Unscheduled visibility toggles
- New gtd-calendar options unscheduled-todos and unscheduled-notes
  (default yes), independently showing/hiding each Unscheduled
  sub-section. Accepts yes/no, true/false, show/hide.
- Solves duplicate Unscheduled lists when two calendars share a note:
  e.g. show unscheduled to-dos under the week strip, unscheduled notes
  under the month grid.
- Permissive parseBoolean helper; invalid values warn and default to yes.
- Threaded through payload; webview gates each sub-section on its flag
  (empty OR toggled-off both omit cleanly).
- Version 0.3.2; 4 new tests (69 total); README updated.
2026-06-13 10:45:36 -04:00
Victor Wiebe
a3d7acde7f v0.3.1: split Unscheduled into to-dos and notes
- The Unscheduled section now shows two labeled sub-sections —
  'Unscheduled to-dos' (first) then 'Unscheduled notes' — so actionable
  items stay visually separate from reference notes.
- A sub-section is omitted entirely when empty (no lonely '(0)' headers).
- Webview-only change (uses the existing isTodo flag); data layer and
  tests unchanged.
- Version 0.3.1; README updated.
2026-06-13 10:31:46 -04:00
Victor Wiebe
d3c0f0ee7f v0.3.0: read-only kanban board (gtd-kanban block)
- New gtd-kanban block renders a three-column board from to-dos:
  Backlog / In Progress / Done. Notes excluded; to-dos only.
- Bucketing: Done wins (todo_completed), else in-progress tag, else
  Backlog. in-progress tag name configurable (IN_PROGRESS_TAG constant,
  in-progress-tag: option).
- Backlog shows all uncompleted untagged to-dos; Done filtered to a
  configurable done-window (default 7 days; 'all' for full history).
- Per-column sort: due-date (default; dateless last) | title |
  modified-date, asc/desc.
- Compact cards with configurable detail panel (hover/always/none),
  recurrence ↻, click-to-open drilldown. Empty columns still shown.
- Reuses the calendar data layer: scope resolution, inclusion, the
  getNoteTagTitles tag fetch from v0.2.0, gtd block parsing.
- markdown-it renderer now handles both gtd-calendar and gtd-kanban
  fences (data-block-type); webview branches getEvents/getKanban.
- SPEC sort-type vocabulary noted for cross-block consistency
  (modified_date accepted as alias).
- Version 0.3.0; 32 new tests (65 total). Read-only — drag-and-drop
  write-back is v0.4.0.
2026-06-13 10:23:49 -04:00
Victor Wiebe
bbde832b6d README: expand Limitations with an explicit Mobile/Android note
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.
2026-06-13 09:52:34 -04:00
Victor Wiebe
cdb5ad022c v0.2.0: mark recurring to-dos with a recurrence symbol
- 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)
2026-06-13 09:49:20 -04:00
Victor Wiebe
5d1173c78e SPEC: record post-launch roadmap (v0.2.0 repeating todos, v0.3.0 kanban, v0.4.0 drag-and-drop) 2026-06-13 08:12:52 -04:00
Victor Wiebe
3b9e799e86 README: absolute screenshot URLs for npm; drop manual-install section
npm is the sole distribution channel; relative image paths don't render
on npmjs.com since screenshots aren't in the published tarball.
2026-06-12 19:03:50 -04:00
Victor Wiebe
2ec8d5f1c5 Phase 4: user-facing README with screenshots
- 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
2026-06-12 19:00:02 -04:00
Victor Wiebe
138fc3e1cb Sharpen manifest description; add repository categories and keywords 2026-06-12 18:49:37 -04:00
Victor Wiebe
360e246262 Add view: month-grid — full current month, 7-column layout
- 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)
2026-06-12 18:38:10 -04:00
Victor Wiebe
57eae2b7f8 Phase 3: calendar grid rendering with hover cards and Unscheduled section
- 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)
2026-06-12 18:38:04 -04:00
Victor Wiebe
fc1b2fcabf Phase 2: real data layer — folder scope, gtd blocks, inclusion matrix
- src/Gtd/: pure, unit-tested modules
  - parseCalendarConfig: SPEC defaults + warnings for invalid options
  - folderScope: BFS scope resolution (this-folder / children / depth N)
  - gtdBlock: extract + YAML-parse the first ```gtd fence (empty block
    is a valid opt-in; malformed YAML opts in with a surfaced warning)
  - resolveDate: gtd date (iso + mm-dd-yyyy) overrides todo_due; nothing
    resolvable -> unscheduled (null date)
  - collectEvents: orchestrates scope -> fetch -> inclusion matrix ->
    date resolution -> sort; always excludes the calendar note
- index.ts: JoplinDataAdapter with pagination; getEvents now returns real
  events plus warnings and scan stats
- Webview debug view shows real data: counts, warnings, colours, icons,
  strikethrough for completed todos, tooltip from text:
- 24 new unit tests (33 total)
2026-06-12 18:37:47 -04:00
Victor Wiebe
16242a2f44 Phase 1: gtd-calendar fence, webview round trip, drilldown proof
- 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)
2026-06-12 17:55:40 -04:00
Victor Wiebe
5791ee5ec2 Phase 0: rename plugin to GTD Calendar; fix week view grouping bug
- 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)
2026-06-12 17:47:50 -04:00
dfd003c4c2 Add SPEC.md 2026-06-12 15:55:07 +02:00
3cd6c61fa5 Update README.md 2026-06-12 15:54:22 +02:00
Franco Speziali
be1e4c9b97 Updated versioning info 2026-05-27 15:11:14 +02:00
Franco Speziali
6891818d1b Added coloured blocks for different months 2026-05-27 15:08:13 +02:00
Franco Speziali
7b858f5255 Fixed broken test 2026-05-27 14:37:42 +02:00
Franco Speziali
0020381c08 Maintenance update; updated packages, updated jest tests to use ESM 2026-05-27 14:31:10 +02:00
Franco Speziali
e800147eaa Default to day grouping if invalid parameter 2023-05-25 15:55:39 +02:00
Franco Speziali
ea994df145 Folder restructuring; grouped view logic together 2023-05-25 15:39:19 +02:00
Franco Speziali
b18c50c205 Removed year grouping 2023-05-25 15:18:14 +02:00
Franco Speziali
904a9c0691 Changed folder structure; all Calendar logic now in src/Calendar 2023-05-25 14:53:22 +02:00
Franco Speziali
f65a4f119f Updated manifest 2023-02-16 23:13:31 +01:00
Franco Speziali
5c5f71bf06 Fixed localisation of calendar days 2023-02-16 23:09:49 +01:00
Franco Speziali
21c5dfb426 Ran npm run update, updated date-fns packages, changed to version 0.2.2 2023-02-16 22:38:03 +01:00
Franco Speziali
ff2c3794d6 Small CSS fix to allow readability with different themes 2022-10-26 16:26:32 +02:00
Franco Speziali
02a8a7e6eb Updated versioning, package-lock.json 2022-06-14 18:47:32 +02:00
Franco Speziali
3d19819fb2 Added highlighting for events that fall under the today's day or month 2022-06-14 18:43:41 +02:00
Franco Speziali
a936de4285 Added option for grouping by year (for handling events that span multiple years) 2022-06-14 18:40:47 +02:00
Franco Speziali
1d848131a3 Added default behaviour for events with no icons - use first two letters from title 2022-06-14 18:06:15 +02:00
Franco Speziali
842a3fdcca Refactored HtmlRenderer - re-organised folder structure 2022-04-25 17:23:01 +02:00
Franco Speziali
e171e443ba Updated versioning 2022-04-24 22:45:15 +02:00
Franco Speziali
20b4935ed7 Updated README 2022-04-24 22:45:01 +02:00
Franco Speziali
675308db50 Ran Joplin update command 2022-04-24 22:19:45 +02:00
Franco Speziali
e860fcbf79 Renamed EventGroupingHtmlRenderer to make it simpler (HtmlRenderer) 2022-04-24 22:14:28 +02:00
Franco Speziali
da62052e79 Refactored entire rendering module; added new feature for "highlighting" a group, when the current date falls within that group 2022-04-24 22:12:58 +02:00
Franco Speziali
024abebf2a Added proxy methods for date-fns 2022-04-24 12:24:22 +02:00
Franco Speziali
8c8095bda7 Updated README 2022-04-14 21:46:02 +02:00
Franco Speziali
d6aad53da9 Updated Calendar typings 2022-03-23 17:32:03 +01:00
Franco Speziali
51dfb8cd7f Updated typescript types for Event 2022-03-23 17:32:03 +01:00
Franco Speziali
97d8429f22 Removed separate Config class 2022-03-23 17:32:00 +01:00
Franco Speziali
b9cbe21203 Removed separate Config class 2022-03-23 11:37:00 +01:00
Franco Speziali
722ddb41e5 Refactoring; Separated EventGrouping class into separate classes for Day, Week, Month. Logic moved upstream into Calendar class. Simplified render selection in interface 2022-03-23 11:28:11 +01:00
Franco Speziali
1e3688ca04 Some renamed groupTypes => groupType as this references a single groupType 2022-03-23 10:34:39 +01:00
Franco Speziali
88a21c5cf2 Minor updates to README 2022-03-22 16:10:24 +01:00
Franco Speziali
d4fad7bc9a Organised styles 2022-03-22 16:10:03 +01:00
Franco Speziali
f102aa7aad Updated README 2022-03-17 22:42:17 +01:00