Skip to content

Render the Calendar view with @tasknotes/calendar and the shared model calendar - #2429

Merged
callumalpass merged 14 commits into
mainfrom
calendar/tnc-engine
Oct 26, 2026
Merged

callumalpass merged 14 commits into
mainfrom
calendar/tnc-engine

Conversation

@callumalpass

Copy link
Copy Markdown
Owner
  • Replace FullCalendar with TaskNotes' own calendar engine (@tasknotes/calendar@0.1.0). Saved .base calendar settings keep applying, and the TaskNotes fc-* event styling hooks remain; CSS snippets that target FullCalendar internals need updating.
  • Update events in place, support popout windows, and improve touch drag/scroll behaviour.
  • Build calendar entries and drag/resize edits with the shared model calendar (@tasknotes/model@0.3.0-rc.18): incremental per-task rebuilds, exact edit plans, and the model's shared calendar fixtures run through the plugin's mapping.
  • Preserve moved recurring occurrence identity across calendar placement, completion, skip and Undo ([Bug]: Calendar shows both dates after rescheduling a virtual recurring task #2396).
  • Group the Calendar view settings into plain-language sections (What to show, Layout, Time grid, Day cells, Advanced) with translations in every supported language, including Italian. No saved keys change.

Verified locally: lint, typecheck, 5,638 Jest tests, build (main.js 4.09 MB, under budget), i18n verify. Isolated Obsidian 1.14.2: calendar engine/settings specs (6), tasknotes.spec.ts calendar tests (27), and calendar/recurring/timeblock issue specs (16, including all #2396 cases).

The branch history contains intermediate vendored package tarballs; squash merging keeps them out of main.

Replace FullCalendar with the in-house @tasknotes/calendar engine.

- calendarEngine converts built events to calendar items and calendar
  changes back to the event shape the mutation and menu helpers expect,
  so calendar-core and the mutation planning stay unchanged.
- Bases layout settings map through basesLayoutOptions, so existing .base
  files keep their view, day counts, slot range, height mode, week numbers,
  weekends, all-day row, today width and event limits.
- Setting changes call setOptions instead of rebuilding the calendar; data
  changes diff items in place.
- Popout windows are supported, so the popout guard is removed, along with
  the FullCalendar sizing, scroll, canvas-zoom and header workarounds.
- TaskNotes' semantic fc-* event classes are kept for CSS snippets;
  FullCalendar-internal styles are removed.
- External drags into the calendar use native HTML drag and drop.
- Unit tests ported to the new engine; FullCalendar-internal tests removed.

The library is vendored as a packed tarball until it is published.
… settings

Swap FullCalendar selectors for the new calendar's classes, compute time
slots from the grid geometry, and add a spec that checks saved Bases
calendar settings apply and that drag and resize write back to tasks.
@callumalpass
callumalpass merged commit 1d40972 into main Oct 26, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant