Skip to content

Releases: callumalpass/tasknotes

4.5.3

30 Apr 21:31

Choose a tag to compare

TaskNotes 4.5.3

Fixed

  • (#1834, #1847) Fixed empty Bases formula and custom properties showing null or undefined on TaskNotes task cards.
  • (#1836) Fixed TaskNotes Bases views not refreshing task cards after status, archive, and auto-archive updates.

4.5.2

26 Apr 10:19

Choose a tag to compare

TaskNotes 4.5.2

Added

  • (#1342, #1793) Added native tag autocomplete to time entry descriptions by using the embedded markdown editor in the time entry editor modal.
  • (#1756, #1798) Added HTTP API support for configured custom user fields so task responses include them and create/update requests can round-trip their values.
    • Thanks to @Treygec for the request and PR.
  • (#1777) Added a Modal Fields setting to choose whether Tab/Shift+Tab move focus out of the task details editor or use the markdown editor's indentation behavior.
    • Thanks to @P-Sc for the PR.

Changed

  • Updated the Obsidian API dependency to 1.12.3 and switched the Bases integration to the official API type declarations.
  • Bases task cards and property-event cards now render metadata values through Obsidian's native Bases value renderer so links, dates, lists, icons, and formula values display more faithfully.

Fixed

  • (#1778) Fixed MCP initialize requests using newer protocol versions such as 2025-11-25 failing instead of negotiating down to TaskNotes' supported MCP version.
  • (#1781) Fixed duplicate metadata properties on Bases task cards when bare and note.-prefixed property IDs map to the same TaskNotes field.
    • Thanks to @loukandr for reporting and tracing the issue.
  • (#1787) Removed the "(click to change)" helper text from recurrence tooltips on task cards.
  • (#1828) Fixed subtask creation from a task card dropping the parent task project when natural-language input also adds projects.
  • (#1786) Fixed TaskNotes task cards and relationships/subtasks widgets appearing inside embedded task-note heading or block sections.
    • Skips note-level widget injection in detached or embedded Markdown editor contexts used by plugins such as Block Link Plus.
    • Thanks to @3zra47 for reporting.
  • (#1815) Fixed the Priority property settings so the NLP trigger character field is visible and editable even when priority NLP parsing is disabled.
    • Thanks to @spiv for reporting.
  • (#1035) Fixed the task modal title field causing the modal to jump to the bottom when focused on iPhone.
    • Thanks to @3zra47 for reporting and following up.
  • (#1045) Fixed inline linked recurring tasks keeping the previous day's completed state after the calendar day changes.
    • Thanks to @3zra47 for reporting and following up.
  • (#1788) Fixed Task List subgroup headers and cards rendering without clear indentation.
  • (#1810) Updated Japanese Kanban terminology to use the more natural katakana spelling.
  • (#1633) Fixed Bases task cards using fallback labels instead of Bases display names for mapped task fields and file properties.
    • Thanks to @Sarryaz for reporting the Bases task card i18n and field-mapping issue.
  • (#884) Fixed untranslated strings and English placeholder examples across non-English interface translations.
    • Thanks to @berzernberg for reporting Russian translation gaps.
  • (#1765, #1769) Fixed auto-archived tasks leaving stale Google Calendar events when cleanup runs before calendar sync is ready or after the task moves into the archive folder.
  • (#1764) Fixed Google Calendar sync using stale task metadata after rapid task updates, and fixed late recurring completions/skips recording the completion day instead of the scheduled occurrence date.
    • Thanks to @martin-forge for the PR and to @jpmoo for reporting the recurring completion issues.
  • (#1782) Fixed CI test runs resolving the NLP parser package from a local sibling checkout instead of the published dependency.
  • Published mdbase-tasknotes 0.1.3 with compatibility fixes for TaskNotes-generated mdbase schemas.
    • Includes clearer create-path diagnostics, natural-language mtn list --due filters, timer log datetime filters, home-directory path expansion, project wikilink preservation, and correct mtn --version reporting.
    • Thanks to @tparsons9, @anomatomato, @npondel, @plashal, and @waspeer for the reports and PR.
  • (#1667) Fixed NLP scheduled-date parsing so standalone scheduled and start triggers can set scheduled dates alongside due dates.
  • Fixed NLP parser title cleanup for explicit date triggers and Japanese/Chinese priority phrases.
  • (#1658) Fixed Pomodoro stats date bucketing for sessions near local midnight.
    • Pomodoro session stats now compare the recorded session calendar date against UTC-anchored target days without shifting through UTC or the reader's current timezone.
    • Pomodoro daily-note storage now writes sessions to the daily note matching the recorded session date.
    • Thanks to @ewgdg for reporting, @AntonIlinykh and @dkchacha for follow-up discussion, and @ITblacksheep for PR #1758.
  • (#1813) Fixed Pomodoro timer UI stalls caused by refreshing session statistics on every timer tick.
    • Pomodoro stats now refresh on initial render and session completion instead of once per second.
    • Pomodoro daily-note stats now read the relevant date/range instead of routing through all history.
    • Native Pomodoro notifications now respect the notification setting and granted permission before showing.
    • Thanks to @Szu-Szu for reporting and @its-thex for confirming.
  • (#1744) Fixed Bases Task List views so changing the per-view Expanded relationships option takes effect on re-render.
    • Restores the expected show-all behavior for setups that hide subtasks at the top level with note.projects.isEmpty().
    • Thanks to @minol-dev for reporting, @Glint-Eye for follow-up discussion, and @stanley-910 for PR #1792 exploring the related standalone-subtask workflow.
  • Fixed tag clicks in task cards opening the task edit modal in addition to the tag search panel, and kept rendered tag metadata on a single row inside task cards.

4.5.1

31 Mar 09:46

Choose a tag to compare

TaskNotes 4.5.1

Fixed

  • (#1672) Fixed custom date ranges in the MCP time summary tool so from and to dates work as expected
    • Thanks to @pib for the fix
  • (#1742) Fixed calendar week and day views so the time scale stays aligned on the left instead of drifting inward
    • Thanks to @ysafonov for the report and screenshot

4.5.0

30 Mar 21:54

Choose a tag to compare

Fixed

  • (#1652) Fixed API, MCP, and NLP task creation so it respects your configured filename format when title storage in filenames is disabled
  • (#1601, #1709) Fixed reading-mode relationship widgets sometimes rendering multiple times during startup
    • Applied the same protection to task cards so overlapping refreshes are coalesced there too
    • Thanks to @wealthychef1 and @CarlJohnson99 for reporting, and @benmartinek for confirming the behavior
  • (#1713) Fixed ICS export so date-only scheduled tasks are written as all-day events instead of midnight events
    • Thanks to @bepolymathe for the request and interoperability details
  • (#267, #948, #1682, #1717, #1725) Fixed expanded subtasks and dependency cards in Bases Task List and Kanban views so related items can inherit the current view's filters instead of always showing every linked task
  • Improved custom view and search-pane activation when reopening deferred tabs
  • (#1720) Fixed Bases Task List cards showing icon tokens such as clock instead of readable date-like values, and fixed property labels to use Bases display names instead of raw property IDs
  • (#1633) Fixed interactive task-card labels and ribbon labels so Bases-backed cards use translations and configured display names instead of hardcoded English or raw property IDs
  • (#1651) Fixed date is query filtering so date-only searches also match timed scheduled and due values during prefiltering
  • (#1644) Fixed generated default task views so recurring tasks without a complete_instances property still appear as incomplete where appropriate
  • (#1513, #1686) Fixed a calendar issue where creating or editing events and timeblocks could reset the visible date back to today
    • In-place calendar recreation now preserves the visible date unless you explicitly navigate elsewhere
    • Thanks to @owenoxen for opening #1513, and @Lorite for opening #1686 and contributing the fix
  • Fixed documentation deployment CI failures caused by docs-builder/src/js/main.js being excluded by a broad .gitignore rule
  • Reduced background calendar-sync overhead when persisting sync tokens
  • Prevented duplicate auto-stop time-tracking listeners from accumulating after settings reloads
  • Fixed a settings-lifecycle issue that could accumulate calendar update callbacks while the Integrations tab is repeatedly opened
  • (#1630) Fixed TaskNote inline task cards ignoring centered "Readable line length" layout in the Minimal theme
  • Fixed a broken docs cross-reference from Property Types Reference to Task Properties settings
  • Fixed docs site links so internal Markdown links resolve to app routes instead of broken .md paths
  • Fixed docs release-note links by building Markdown pages even when they are not listed directly in the sidebar

Added

  • (#1704) Added an option to widen the current day column in multi-day calendar time-grid views
    • You can control the width multiplier and choose whether it applies to week view, custom multi-day view, or both
    • Thanks to @dictionarymouse for the feature request
  • Added TaskNotes Obsidian CLI commands for task creation, time tracking, and Pomodoro control
    • Includes shared NLP-to-task conversion across the CLI, modal, and API capture flows, plus new user documentation for the built-in CLI commands
  • (#1716) Added roomier subtask and dependency cards inside the task modal while keeping the task options menu available
    • Thanks to @hokfujow for the feature request
  • (#1619, #386, #621) Added drag-to-reorder for Kanban and Task List views
    • Supports grouped Task List moves, manual ordering via the tasknotes_manual_order property, and improved drag/drop behavior for swimlanes, filtered views, and interactive task controls
    • To use it, sort the view by the Manual Order field (tasknotes_manual_order by default), or regenerate the built-in .base templates from Settings → TaskNotes → General → Create Default Files
    • Thanks to @ac8318740 for the original contribution in PR #1619, @iholston and @dsebastien for opening #386 and #621, and @mdbraber, @elvarb, @LucidToday, @craziedde, @kmaustral, @SKIERZZ, @sookochoff, and @kanzaki1201 for follow-up discussion and testing across the linked issues and PR
  • Added a standalone TaskNotes Specification repo and docs section covering the data model, field mapping, recurrence behavior, validation rules, and conformance tests
  • Added tasknotes-tui, a terminal UI for working with TaskNotes vaults
    • Includes keyboard-driven views, date navigation, time tracking, recurring task support, and a command palette

Changed

  • Refactored several internal modules to reduce coupling and make maintenance safer
  • Updated generated _types/task.md output so dateCreated and dateModified include generated timestamp values, and recurrence_anchor defaults to scheduled
  • Cleaned up API, webhook, NLP, privacy, settings, and view documentation for clarity and accuracy
  • Expanded Task List and Kanban documentation for drag-to-reorder, including manual-order sorting, grouped and swimlane scope, and filtered-view limitations

4.4.0

17 Feb 11:00

Choose a tag to compare

TaskNotes 4.4.0

Added

  • Mdbase type generation now includes tn_role annotations so external tools can identify each field's role even when frontmatter names are customized
  • (#1618) Mdbase type matching now follows your task identification settings (tag or frontmatter property), with fallback to tag matching when needed
    • Thanks to @jimbo108108 for reporting
    • Mdbase type status fields now include tn_completed_values so external tools can reliably identify which status values count as completed
  • (#1576) Added an optional Checklist Progress task-card property that renders a compact progress bar and completed/total count from top-level markdown checkboxes
    • Uses metadata cache list items and excludes nested checklist entries so progress reflects top-level task steps
    • In Bases views, map tasks (file.tasks) to Checklist Progress
    • Existing .base files need file.tasks added to the view order YAML manually
    • Newly generated .base templates now include file.tasks in view order by default
    • Thanks to @phortx for opening #1576 and for the earlier implementation PR, and @piyushaswani55 for feedback in the issue discussion

Changed

  • Mdbase type generation no longer overwrites mdbase.yaml if the file already exists, preserving user customisations
  • Webhooks now fire consistently regardless of whether updates come from the UI, HTTP API, or MCP
  • Webhook runtime state now syncs automatically when plugin settings change
  • Shared HTTP response/body parsing utilities are now consolidated in a dedicated httpUtils module
  • Release notes now include a reminder on every release page that default generated .base template changes never overwrite existing user .base files, and that users can regenerate templates from Settings to pick up updates

Fixed

  • (#1608) Fixed task title frontmatter being removed when storeTitleInFilename is enabled
    • title is now retained in frontmatter while filename derivation from title remains unchanged
    • Thanks to @victoraraujo105 for the PR
  • (#1602) Fixed time tracking statistics showing incorrect or zero values for Today/Week/Month due to UTC-anchored date range boundaries in Stats View
    • Updated range calculations to use local calendar-day boundaries consistently
  • (#1602) Fixed inconsistent timeEntries timestamp formats across create/edit/drag/resize flows
    • Time entry timestamps are now written in canonical UTC ISO format (toISOString() with Z) across all write paths
  • (#1602) Fixed denormalized timeEntries.duration drift after edits
    • Time tracking calculations now derive duration from startTime/endTime
    • Time entry save paths now strip legacy duration values instead of persisting them
    • Thanks to @dy66 for opening #1602

4.3.3

15 Feb 04:31

Choose a tag to compare

TaskNotes 4.3.3

Changed

  • Published mdbase-tasknotes (mtn), a standalone CLI for managing tasks in markdown files via mdbase

    • Works on the same vault and _types/task.md schema that TaskNotes generates, without requiring the plugin or HTTP API
    • Preferable over tasknotes-cli as a lighter-weight alternative and when Obsidian is not running, on remote machines, or in scripts and CI environments
    • Supports natural language task creation, time tracking, project aggregation, statistics, and an interactive REPL
  • Extracted shared natural language parsing logic into the standalone npm package tasknotes-nlp-core

    • The NLP parser and related language configuration are now shared through this package
    • This keeps behavior consistent between the plugin and CLI tools

Added

  • (#1549) Added setting to reset markdown checkboxes when recurring tasks are completed

    • When enabled, all checked checkboxes (- [x]) in the task body are reset to unchecked when a recurring task instance is completed and rescheduled
    • Useful for recurring tasks with subtask checklists that need to be repeated each instance
    • Configurable via Settings > Features > Recurring Tasks > "Reset checkboxes on recurrence"
    • Thanks to @phortx for the feature request
  • (#1548) Added ability to create calendar events on connected external calendars directly from the calendar view

    • When clicking or dragging to select a time slot, a new "Create calendar event" option appears in the context menu
    • Opens a modal to enter event title, description, location, and select which calendar to create on
    • Supports both Google Calendar and Microsoft Calendar providers
    • Thanks to @Robubble for the feature request
  • (#1597) Added MCP server for AI agent integration

    • Exposes TaskNotes tools at /mcp endpoint, gated behind enableMCP setting
    • Supports tasks (CRUD, query, toggle status/archive, parse from text), time tracking, pomodoro, calendar events, and task statistics
    • Thanks to @dstotijn for the contribution

Fixed

  • Fixed generated mdbase type definitions for task dependencies using the wrong field type

    • In _types/task.md, blockedBy[].uid now uses type: link (was type: string)
    • Better matches how dependency links are serialized in task frontmatter ([[...]])
  • Fixed generated mdbase reminder type definitions to better match TaskNotes reminder data

    • In _types/task.md, reminders[].type now uses enum values absolute|relative
    • reminders[].relatedTo now uses enum values due|scheduled
    • reminders[].absoluteTime now uses type: datetime (was type: string)
  • (#1597) Fixed webhook payloads for time tracking start-with-description containing stale data

  • (#1581) Fixed Pomodoro starting break instead of work session after app restart

    • After completing a work session and restarting, pressing Start would incorrectly start a break
    • Now properly resets nextSessionType when clearing stale sessions or stopping the timer
    • Thanks to @Sirnii for the detailed bug report and root cause analysis
  • (#1577) Fixed Edit Note/Task modal hiding action buttons when content exceeds viewport height

    • Added vertical scroll to modal content area while keeping buttons pinned at bottom
    • Thanks to @hossam-elshabory for reporting and @ivannin for helping in discussion
  • (#1600) Fixed kanban view grouping not working when more than 20 views exist

    • The getGroupByPropertyId() method had a hardcoded loop limit of 20 iterations
    • Views at index 20 or higher would not be found, causing groupBy to return null
    • Thanks to @IHaveNoShame for reporting
  • (#1595) Fixed task modal floating buttons blocking content on mobile

    • Added mobile-specific (body.is-mobile) CSS to ensure proper flex layout
    • Button container now stays pinned at bottom without overlapping scrollable content
    • Thanks to @Jomo94 for reporting
  • (#1590) Fixed HTTP API not allowing blockedBy dependencies when creating tasks

    • Added blockedBy field support to TaskService.createTask()
    • Updated API documentation with blockedBy, recurrence, and reminders fields
    • Thanks to @hGriff0n for reporting
  • (#1582) Fixed recurring tasks not appearing at end of visible calendar range for non-UTC timezones

    • Daily/weekly recurring tasks with times after ~1pm would disappear on the last day of the visible range for users in positive UTC offsets (e.g., UTC+11)
    • Fixed date boundary comparisons in both generateRecurringInstances() and generateRecurringTaskInstances() to compare dates only, not timestamps
    • Thanks to @benefitbug for reporting
  • (#1580) Fixed Google Calendar sync failing after OAuth token expires with unhelpful error message

    • When refresh tokens expire or are revoked (e.g., Google Cloud project in Testing mode, user revoked access), the error message was confusing: "Failed to refresh google token: Request failed, status 400"
    • Now detects irrecoverable token errors (invalid_grant, invalid_client) and automatically disconnects the OAuth connection
    • Shows actionable error message: "Google Calendar connection expired. Please reconnect in Settings > Integrations."
    • Prevents repeated failed refresh attempts and error message spam
    • Thanks to @osxisl for reporting and @Naesue for helping in discussion
  • (#1584) Fixed DOMTokenList error when task status values contain spaces

    • Clicking the status ring on a task card threw an error when status contained spaces (e.g., "In Progress")
    • Status and priority values are now sanitized before being used as CSS class names
    • Thanks to @omber for reporting

4.3.2

08 Feb 08:27

Choose a tag to compare

TaskNotes 4.3.2

Added

  • (#1520) Tag and Context fields in Edit Task modal now show all available suggestions immediately on focus

    • Previously required typing at least one character before suggestions appeared
    • Already-selected values are excluded from the suggestion list
    • Thanks to @Glint-Eye for the suggestion
  • (#1506) Added setting to configure the default color for new timeblocks

    • New color picker in Settings > Features > Timeblocking
    • Previously hardcoded to indigo; now user-configurable
    • Thanks to @phillipadsmith for the suggestion

Fixed

  • Fixed mdbase-spec type definition generation not triggering when settings change

  • (#1456) Fixed inline tasks jumping visually when marked as completed

  • (#1364) Fixed auto-stop time tracking not triggering when completing recurring task instances

  • (#1465) Fixed all-day events synced to Google Calendar receiving wrong notification time

    • All-day events now use Google Calendar's configured all-day notification defaults instead of a minutes-based reminder
    • Thanks to @Jomo94 for reporting
  • (#1470) Fixed cursor showing as default instead of pointer on interactive elements

  • (#1491) Fixed boolean property values being quoted as strings in Bases filter generation

    • When using a boolean property (e.g. tasknote: true) for task identification, the filter now correctly handles the value
    • Thanks to @denisgorod for reporting
  • (#1494) Fixed Kanban swimlane resetting to "None" on initial load and after navigation

  • (#1555) Fixed "Folder already exists" error when creating tasks or converting inline tasks

  • (#1532) Fixed expanded task modal buttons being cut off when content exceeds viewport height

  • (#1542) Fixed declined and cancelled events from ICS calendar subscriptions appearing in calendar view

  • (#1556) Fixed completion-based recurring tasks not rescheduling when the recurrence interval is large

  • (#1492) Fixed hardcoded "open" status leaking into filenames, recurring task displays, and parsing fallbacks

    • Users with custom default statuses (e.g. "inbox") no longer see "open" where their configured default should appear
    • Recurring tasks now show their actual configured status instead of always displaying "open" when not completed
    • Thanks to @macdrifter for reporting
  • (#1501) Fixed Google/Microsoft Calendar event colors not showing in agenda/list view

    • Per-event and calendar-level colors now display correctly in the list view, matching grid view behavior
    • Added today indicator highlighting to list view day headers
    • Thanks to @Robubble for the suggestion

4.3.1

08 Feb 03:23

Choose a tag to compare

TaskNotes 4.3.1

Added

  • (#1546) Added sticky kanban column headers that remain visible while scrolling

  • (#1458) Added CSS color classes to context tags for custom styling

    • Each context tag now receives a unique CSS class based on its name (e.g., context-tag--color-0 through context-tag--color-19)
    • Enables styling individual contexts via CSS snippets
    • Thanks to @phortx for the contribution
  • Added mdbase-spec type definition generation

    • New setting in Integrations tab to generate mdbase-spec v0.2.0 type definition files (mdbase.yaml and _types/task.md) at the vault root
    • Type definitions are derived from TaskNotes settings (statuses, priorities, field mappings, user fields) and regenerated automatically when settings change
    • Enables interoperability with other tools that support the mdbase-spec format

Fixed

  • (#1472) Fixed task dependencies not being stored as wikilinks in frontmatter

    • Dependencies now retain their [[wikilink]] format when saved, preventing them from breaking on file rename
    • Thanks to @renekalff for reporting
  • (#1443) Fixed default status/priority not updating when the referenced custom value is deleted

    • Deleting a custom status or priority that was set as the default now resets the default to the first available value
    • Thanks to @l-mb for the contribution
  • (#1448) Fixed project removals not persisting from the task edit modal

    • Removing all projects from a task now correctly clears the projects field
    • Different link formats (e.g., markdown links vs wikilinks) no longer cause false change detection
    • Thanks to @normenmueller for the contribution
  • (#1514), (#1517) Fixed task reminders not syncing to Google Calendar

    • Task-specific reminders (both relative and absolute) now sync to Google Calendar
    • Previously only the global default reminder setting was used, ignoring per-task reminders
    • Thanks to @christenbc for the contribution
  • (#1525), (#1531) Fixed subtask status dot not refreshing visually when clicked

    • Status dot, checkbox, and card styling now update instantly when cycling status
    • Thanks to @christenbc for the contribution
  • (#1537) Fixed Google Calendar errors during bulk sync

    • Added rate limiting to space out API calls, preventing errors when syncing many tasks at once
    • Thanks to @Lorite for the contribution
  • (#1515), (#1540) Fixed time loss when setting recurrence and recurrence not clearing from Google Calendar

    • Setting recurrence on a task with a scheduled time now preserves the time, preventing Google Calendar events from appearing as all-day
    • Clearing recurrence from a task now also removes it from the synced Google Calendar event
    • Thanks to @christenbc for the contribution
  • (#1428), (#1559) Fixed hierarchical tags with slashes (e.g., #project/sub-project) being truncated in link text

    • Tags containing slashes, hyphens, and Unicode characters now render correctly
    • Thanks to @normenmueller for the contribution and @ysafonov for reporting
  • (#1565) Fixed Google Calendar target calendar dropdown appearing empty after app restart

    • The dropdown now re-populates once calendars are fetched during startup
    • Thanks to @N-HEDGER for reporting
  • (#1567) Fixed inline task card widgets disappearing momentarily

    • When the task cache is temporarily cleared (e.g., during Smart Connections processing), the previously-rendered widget is now preserved instead of reverting to a plain wiki link
    • Thanks to @scztt for reporting
  • (#1568) Fixed deleted tasks not being removed from Google Calendar

    • When a task file is deleted outside of TaskNotes (e.g., via Obsidian's file manager), the synced Google Calendar event is now cleaned up automatically
    • Thanks to @kmaustral for reporting
  • Fixed Integrations tab spacing and layout issues

    • Improved positioning of buttons and status indicators across Google Calendar, ICS, and Webhooks sections

4.3.0

07 Jan 09:43

Choose a tag to compare

TaskNotes 4.3.0

Changed

  • (#1437) Unified template variable syntax and available variables across filename and body templates
    • Both systems now use double-brace {{variable}} syntax consistently
    • Single-brace {variable} syntax remains supported for backwards compatibility but is deprecated
    • Settings UI shows a warning when deprecated single-brace syntax is detected
    • Filename templates gain body template variables: {{contexts}}, {{tags}}, {{hashtags}}, {{timeEstimate}}, {{details}}, {{parentNote}}
    • Body templates gain filename template variables: {{zettel}}, {{nano}}, and all extended date/time variables
    • Thanks to @23maverick23 and @Jpeeters for reporting (#865)

Added

  • (#1361) Option to disable inline task overlay for aliased wikilinks

    • New setting in Features → Inline Tasks: "Disable overlay for aliased links"
    • When enabled, links with aliases like [[Task|Check Status]] render as plain links
    • Links without aliases continue to show the interactive task widget
    • Useful when embedding tasks in prose where the widget would be disruptive
    • Thanks to @diegomarzaa for the contribution and @jldiaz for proposing this feature in #1117
  • (#1199, #1205) Google Calendar export for tasks

    • Sync tasks to Google Calendar based on scheduled or due dates
    • Automatic sync on task create, update, complete, and delete
    • Configurable event title templates with placeholders ({{title}}, {{status}}, {{priority}}, etc.)
    • Event descriptions include task metadata and optional Obsidian deep link
    • Support for all-day or timed events with customizable duration
    • Event color customization using Google Calendar's color palette
    • Default reminder setting for popup notifications
    • Bulk sync and unlink actions in settings
    • Task-event linking stored in frontmatter (googleCalendarEventId)
    • Recurring tasks sync as Google Calendar recurring events
    • Completed or skipped recurring instances are automatically excluded
    • Thanks to @someromans and @Leonard-44 for requesting this feature, and @dmantisk, @farangkao, @rayvermey, and @rdpr for their input

Fixed

  • (#1413) Fixed angle-bracket links and project title display

    • Angle-bracket links like [Spec](<Projects/Client X/Spec.md>) now resolve correctly
    • Project links display frontmatter title instead of raw filename/path when available
    • Dependency values normalize consistently across wikilinks, markdown links, and angle-bracket variants
    • Many thanks to @normenmueller for the contribution
  • (#1414) Kanban column headers now display configured priority labels instead of raw values

  • (#1416) Fixed property-based task identification mutating tags unexpectedly

    • Tags are only written when explicitly changed by the user
    • Task tag is only added in tag-based identification mode
    • Fixes #1391
    • Thanks to @loukandr for reporting and @normenmueller for the fix
  • (#1187) Fixed "Unknown view types" error when opening Bases views after upgrading from pre-V4

    • Users who had disabled Bases support in earlier versions could not open Bases views after upgrading
    • Settings migration now automatically re-enables Bases support since the toggle was removed in V4
    • Thanks to @MiracleXYZ for reporting
  • (#1144) Fixed relationships.base showing empty views for Projects, Blocked By, and Blocking tabs

    • The top-level task filter was excluding non-task files from the Projects view
    • Projects can be any file type (not just tasks), so the filter is now applied per-view
    • Subtasks, Blocked By, and Blocking views retain the task filter; Projects view does not
    • Users with existing relationships.base files should delete and regenerate them to get the fix
    • Thanks to @needo37 for reporting, and @n1njaznutz, @nestor50, and @IvyDliu for investigating and confirming the solution
  • Fixed calendar view type not persisting or applying when changed

    • View type changes via header buttons (week/day/month) are now saved to the .base file
    • View type changes via Bases settings panel now apply immediately without reload
  • (#1441) Fixed task dragging broken with "Span tasks between scheduled and due dates" enabled

    • Span events can now be dragged to move tasks in time
    • Dragging shifts both scheduled and due dates proportionally, preserving the span duration
    • Previously, dragging span events would cause a visual/data mismatch where the calendar showed the wrong position
    • Thanks to @Peeeet for reporting

4.2.1

04 Jan 01:01

Choose a tag to compare

TaskNotes 4.2.1

Added

  • New Calendars API endpoint for access to calendar data
    • Access calendar provider information and connection status
    • Query events from Google Calendar, Microsoft Calendar, and ICS subscriptions
    • Filter events by date range
    • tasknotes-cli has been updated to make use of this endpoint

Fixed

  • (#1424) Fixed "Create New Task" command creating tasks in active folder instead of default folder

    • "Create New Task" now correctly uses the configured default task folder
    • "Create New Inline Task" continues to use the inline task folder setting
    • Thanks to @Gogo-XD for reporting and @TonyAtlas for confirming
  • (#1421), (#1042) Fixed natural language parser only setting one date when both scheduled and due dates are specified

    • Entering something like "task due Jan 9 at Jan 9" now correctly sets both the due date and scheduled date
    • Thanks to @wealthychef1 and @dblinnikov for reporting
  • (#1410) Fixed vim insert mode not activating in task creation modal

    • The modal now correctly enters insert mode when vim keybindings are enabled
    • Thanks to @Leo310 for the feature request
  • (#1422) Fixed tags with dashes not being parsed correctly

    • Tags like #my-tag were being truncated to #my
    • Thanks to @JerryLu086 for reporting
  • (#1419) Fixed custom statuses and priorities not saving in settings

    • Values entered in text fields were sometimes lost when closing the settings modal
    • Thanks to @s33a for reporting