Skip to content

Calendar items

If you use the TaskNotes calendar, your day is bigger than tasks with scheduled/due dates: recurring routines, tracked time, timeblocks, notes carrying date properties, and subscribed external calendars all show up there. TaskNotes Gantt can bring every one of those families into the timeline too — as flat, read-only bars, day by day, using the same toggle vocabulary you already know from the calendar.

Opt-in, not automatic

Every family starts off in a fresh view, even ones the calendar shows by default. Turn on what you want under Settings → Calendar items. One exception — see Recurring task instances.

Recurring task instances

(Companion only.) Turn on Show recurring tasks and the task's row grows a bar per instance instead of one plain scheduled→due span, using the same @tasknotes/model expansion engine the calendar itself uses.

State Look Meaning
Next Solid accent bar The next upcoming occurrence — the row's anchor.
Projected Hollow dashed outline A future pattern occurrence — the pattern's prediction, not a claim.
Completed Dimmed, struck through A recorded completed instance.
Skipped Dimmed, hatched A recorded skipped instance.
Materialized Outlined, clickable Its own occurrence note exists and matches this view's Base query.

Hover a piece for its date and state. Clicking a materialized piece opens its own note; any other piece opens the parent recurring task.

Recorded and materialized instances ignore the master toggle

Completed, skipped, and materialized instances render even with "Show recurring tasks" off — the calendar shows those regardless of its own recurring toggle, and the Gantt matches it. The completed/skipped sub-toggles still gate them independently.

A materialized note also matches your Base query in its own right, so it appears twice — its own task row, plus the marked piece on the parent's row. Intentional, not a duplicate.

Coarse zoom: pieces only tile at hour/day zoom. Week/month falls back to a dashed spine across first-to-last instance — never a solid bar, because a solid bar would claim continuous occupancy the data doesn't have.

Turning the family off restores the plain scheduled→due bar; a recorded instance outside that span still renders alongside it, not instead of it.

Time entries

(Companion only.) One row per finished tracked time entry — a still-running entry (no end time) never renders. An entry crossing local midnight becomes a two-day bar.

Timeblocks

Daily-note timeblocks (core Daily Notes plugin), one bar per valid block, day-attributed to its note's own date. A block needs a valid id and HH:MM start/end; a malformed one is skipped. Untitled blocks show as (untitled block).

Property-based events

Any note matched by this view's Base query becomes an event bar, driven by three property pickers you map — start, end, title — never a hardcoded name. Start-only is a one-day bar; start+end spans the days between; a blank title property falls back to the file name.

Scoped by the view's own query

Property events are rows from this view's Base result, not a separate feed. Parity with the calendar holds only when both look at the same set of notes.

External calendars

(Companion only.) TaskNotes' own ICS subscriptions and Google/Microsoft calendar connections, each with its own toggle, listed live under Settings → External calendars once TaskNotes has at least one configured.

Each provider only ever caches a bounded sync window — the Gantt inherits whatever's already synced, nothing more:

Provider Window Notes
ICS Each event's own start to ~1 year ahead Capped at 3,000 instances per recurring series.
Google ~6 months back / 3 ahead Initial-sync default — incremental sync may add more.
Microsoft ~1 month back / 3 ahead Initial-sync default — incremental sync may add more.

An event outside its provider's synced window isn't there yet — expected, not data loss. Each toggle group states its own window on the panel.

A recurring external event (an ICS/Google/Microsoft series) collapses to one row spanning its first-to-last occurrence, with only the actual occupied days piece-marked — the same occupancy rendering recurring task instances use, gaps included. It's still one plain read-only bar underneath, not a task: see Everything here is read-only.

When a service is unreachable

A missing/reshaped TaskNotes calendar service degrades quietly: that family's events don't render, the rest of the view keeps working, and you get a one-time notice — "TaskNotes Gantt: some external-calendar services are unavailable — their events are not shown." A gray line also stays under External calendars for the rest of the session.

A cold cache instead shows "Fetching external events…" in the toolbar until the first sync lands — normal startup, not the degrade case. That clears on the first completed refresh signal for the visible feeds, even when a calendar turns out to be empty; it's a "have we heard back yet?" indicator, not an emptiness check.

Everything here is read-only

Non-task items and a recurring row's occupancy pieces/spine never drag, resize, or write back — their geometry is derived, not editable. Edit the underlying task, time entry, timeblock, or note the usual way — through the editor, the grid, or the note itself.

Quick source switcher

Hide/show active families instantly, without touching settings. Open with the "Quick source switcher…" command, or the Sources button in the toolbar (enable Show toolbar first). Keyboard-operable: arrows move, Space/Enter toggles, Escape closes.

It covers recurring tasks, time entries, timeblocks, property-based events, and external-calendar events — an external family counts as active whenever at least one per-subscription/per-calendar feed is visible in the view, and it hides/shows instantly through the switcher, exactly like every other source. Switcher state is per view, per session: it survives a refresh of the same view, resets on reopen, and is never written to the view's settings.

Requirements

Family Needs TaskNotes?
Recurring task instances, Time entries, External calendars Yes
Timeblocks No — core Daily Notes plugin only
Property-based events No — reads this view's Base query

Recurring parity is built against the recurrence engine TaskNotes 4.11.x ships; an older install may still work (the Gantt's only hard version check is TaskNotes' general compatibility gate), but treat that baseline as "verified identical to the calendar," not a strict floor.