Skip to content

Releases: callumalpass/tasknotes

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

4.2.0

01 Jan 21:48

Choose a tag to compare

TaskNotes 4.2.0

Added

  • Added Korean (한국어) language support

    • Full translation of all 1911 localization keys
    • Korean language option now available in Settings → General → Language
  • Adopted Obsidian 1.11.0 API features with backwards compatibility

    • Settings tab now displays TaskNotes icon in the sidebar (Obsidian 1.11.0+)
    • Settings sections now use native SettingGroup for improved visual grouping (Obsidian 1.11.0+)
    • Falls back gracefully to traditional section headers on older Obsidian versions
  • (#59) Added shortYear template variable for custom filename and folder templates

    • Use {shortYear} in filename templates (e.g., "25" for 2025)
    • Use {{shortYear}} in folder templates
    • Thanks to @Pixeltica for the feature request
  • (#1393) Option to prevent auto-creation of default Base view files on startup

    • New "Auto-create default files" toggle in Settings → Integrations → Bases Integration
    • When disabled, deleted sample Base files will not be recreated on plugin load
    • The manual "Create Default Files" button remains available for on-demand recreation
    • Thanks to @wealthychef1 for the feature request
  • (#1408) Shift+click on status icon to cycle backwards through statuses

    • Normal click cycles forward through status order
    • Shift+click cycles in reverse order
    • Thanks to @JerryLu086 for the feature request
  • (#1410) Task creation modal now starts in vim insert mode when vim keybindings are enabled

    • Previously required pressing 'i' before typing when Obsidian vim mode was active
    • The modal now automatically enters insert mode on focus, allowing immediate typing
    • Thanks to @Leo310 for the feature request
  • Added button tooltips to calendar view toolbar

    • Hovering over navigation and view buttons now shows descriptive hints
    • Buttons include: Today, Previous, Next, Month, Week, Day, Year, List
  • Added tooltips to task modal action icons

    • Icon buttons for status, date, project, priority, recurrence, and reminder now show tooltips on hover
    • Improves discoverability for new users
  • (#503) Settings now sync automatically across devices via Obsidian Sync

    • Changes to custom statuses, priorities, and other settings apply immediately without restart
    • Thanks to @jhedlund for the feature request and @l-mb for the implementation
  • (#1403) Kanban view option to consolidate status icons in column headers

    • New "Show status icon in column header only" toggle in Kanban view settings (disabled by default)
    • When enabled and grouped by status, shows the icon in the column header and hides it on cards
    • Reduces visual redundancy when the column already indicates the status
    • Thanks to @l-mb for the feature request and implementation
  • (#1401) Calendar view option to span tasks between scheduled and due dates

    • New "Span tasks between scheduled and due dates" toggle in Calendar view Layout settings
    • When enabled, tasks with both scheduled and due dates display as multi-day bars
    • Provides Gantt chart-style visualization for project planning
    • Thanks to @0atman for the feature request
  • (#1334) {{currentNotePath}} now works for "Create new inline task" command

    • The inline task folder setting with {{currentNotePath}} previously only worked for checkbox conversion
    • Now also applies when using the "Create new inline task" command from the command palette
    • Thanks to @kmaustral for the feature request
  • (#1264) Option to open Pomodoro timer in mobile sidebar instead of note panel

    • New "Mobile sidebar" setting in Settings → Features → Pomodoro Timer
    • Choose between: Note panel (default tab behavior), Left sidebar, or Right sidebar
    • Allows quick swipe access to the timer without switching notes on mobile devices
    • Thanks to @Evthestrike for the feature request
  • (#1220) Option to use ICS event end time as task due date

    • New "Use ICS event end time as task due date" toggle in Settings → Integrations → Calendar Subscriptions
    • When enabled, tasks created from calendar events will have their due date set to the event's end time
    • For all-day events, uses the event date (not the ICS container end date which is the next day per ICS spec)
    • For timed events, includes the exact end time
    • Defaults to disabled to preserve existing behavior
    • Thanks to @MiserMagus for the feature request
  • (#1108) Option to use task duration instead of due date for ICS calendar export

    • New "Use task duration for event length" toggle in Settings → Integrations → Automatic ICS Export
    • When enabled, exported calendar events use scheduled date + time estimate as DTSTART/DTEND
    • This aligns with GTD workflows where scheduled + duration represents work planning, while due date represents deadlines
    • When disabled (default), preserves existing behavior using due date as DTEND
    • Thanks to @bepolymathe for the feature request

Fixed

  • (#1384) Fixed title being sanitized even when "Store Task Title in Filename" is disabled

    • Characters like ?, <, >, :, etc. are now preserved in task titles when they won't be used in filenames
    • When storeTitleInFilename is false, only minimal sanitization (whitespace normalization, control character removal) is applied
    • Thanks to @allison-casey for reporting
  • (#1028), (#1140), (#1152), (#1354), (#1362) Fixed duplicate task entries appearing in Agenda view

  • (#1386) Fixed timeEstimateCategory formula showing "Long (>2h)" instead of "No estimate" for new tasks

    • The condition didn't properly handle null values when timeEstimate property is unset
    • Also fixed the same issue in trackingStatus formula
    • Thanks to @nicou for reporting and @osxisl for the PR
  • (#1397) Fixed Bases views (Kanban, Calendar, Task List) resetting to Calendar view after a few minutes

    • Also fixed CalendarView corrupting other view files when saving state on unload
    • Thanks to @music-soul1-1 for reporting
  • (#1398) Fixed overdue strikethrough showing on completed tasks

    • Completed tasks with past due dates no longer display overdue styling
    • Respects the "Hide completed from overdue" setting which defaults to true
  • (#1363) Fixed calendar view showing nothing when a task has an invalid date format

    • Tasks with malformed dates (e.g., "262025-12-16" instead of "2025-12-16") no longer crash the entire calendar
    • Invalid tasks are now skipped with a console warning, allowing other events to display normally
    • Thanks to @Erelen for reporting
  • Fixed today column in week/day calendar views using FullCalendar's default yellow instead of theme accent

    • Today's column now uses a tint of the theme accent color for consistent styling
  • (#1399) Fixed drag-and-drop not working in Kanban view on mobile

    • Cards and columns can now be dragged using long-press gesture on touch devices
    • Includes haptic feedback and auto-scroll when dragging near edges
    • Thanks to @l-mb for reporting and the fix
  • (#1381) Fixed Pomodoro "Change Task" menu not showing newly created tasks

    • Tasks created while the Pomodoro view was open would not appear in the task selector
    • Improved metadata cache synchronization to properly wait for new files to be indexed
    • Thanks to @Ghosthael for reporting
  • (#1344) Fixed "Unsaved Changes" popup appearing randomly when closing task edit modal

    • The popup would appear even when no changes were made to the task
    • Caused by inconsistent trailing whitespace normalization when comparing details content
    • Thanks to @hasanyilmaz for reporting
  • (#1402) Fixed Kanban swimlane view showing tasks in wrong column when grouped by formula

    • After editing task metadata, cards would jump to "None" column until Obsidian reload
    • Column assignment now uses Bases' computed grouping instead of cached formula outputs
    • Thanks to @bailob for the fix
  • (#1352) Fixed date context menu not preserving time when using increment options

    • Using +1 day, -1 day, +1 week, or -1 week on a task with a time (e.g., 2025-12-10T16:00) now preserves the time
    • Previously the time would be stripped, changing 2025-12-10T16:00 to 2025-12-11 instead of 2025-12-11T16:00
    • Thanks to @cathywu for the feature request
  • Fixed v3 saved views exporting incorrectly to Bases format

    • Title filters now correctly use file.name instead of note.title
    • Archived filters now generate valid boolean expressions instead of malformed comparisons
    • "Is Blocked" filters now generate correct expressions with proper operator precedence
  • (#1036) Due dates can now be dragged in the calendar view

    • Previously only scheduled dates were draggable; due dates were locked in place
    • Dragging a due event now updates the task's due date property
    • Thanks to @same774 for reporting
  • Improved calendar view responsiveness for user interactions

    • Task creation, editing, timeblock changes, and view option toggles now update immediately
    • Previously these actions waited 5 seconds due to the debounce intended for external file changes
    • The 5-second debounce is now bypassed for direct user actions while still preventing flicker during typing
  • Improved visual affordance for Pomodoro timer duration adjustment buttons

    • The +/- buttons below the timer now have visible backgrounds and borders
    • Hover states show accent color border for clearer interactivity feedback
    • Previo...
Read more

4.1.3

08 Dec 10:30

Choose a tag to compare

TaskNotes 4.1.3

This patch fixes a critical performance issue affecting the Calendar views. As a bonus, it adds a configurable "split" view to the task creation/edit modals.

Added

  • Split layout for task modals on wide screens (900px+)
    • Details editor appears in a dedicated right column when the modal is expanded
    • New setting "Split layout on wide screens" in Modal Fields settings tab to toggle this behavior
    • Improves usability by showing form fields and details side-by-side

Fixed

  • (#1330) Fixed calendar view regression taking 5 seconds to load and respond to user interactions
    • Initial calendar load is now immediate again
    • User interactions (drag/drop, creating timeblocks, etc.) respond instantly
    • Removed redundant date filtering (FullCalendar handles this more efficiently)
    • Thanks to @ysafonov, @kmaustral, @sunjiawe, @Мизгирь, and @FiliusIcari for reporting

4.1.2

07 Dec 05:24

Choose a tag to compare

TaskNotes 4.1.2

Fixed

  • Significant performance improvements for Bases views (TaskList, Kanban, Calendar)
    • Reduced extractDataItems time from ~4 seconds to ~5-10ms for large vaults (6000+ tasks)
    • Computed file properties (file.backlinks, file.links, etc.) are now fetched lazily during render instead of upfront
    • Only visible items (with virtualization) trigger expensive property computations
    • Added debouncing to onDataUpdated to prevent UI freezes during typing
    • Timeblock generation now uses Obsidian's metadataCache instead of file reads
    • Added date range filtering for calendar events to skip events outside visible range
    • (#1285) Calendar view uses 5-second debounce to prevent flickering while typing
  • Calendar view switching (month/week/day/list) is now much faster
    • View type is now saved on unload instead of on every change
  • Fixed task edit modal archive button being too narrow on mobile devices
  • (#1319) Added missing properties to Field Mapping settings
    • recurrence_anchor - now in Settings > Task Properties > Task Details
    • skipped_instances - now in Settings > Task Properties > Metadata Properties
    • Thanks to @kazerniel for reporting
  • (#1310) Fixed inline task conversion deleting text when task title exceeds filename limits
    • Text that cannot fit in the filename is now preserved in the task note's body
    • Thanks to @prayidae for reporting
  • (#1301) Fixed inline task wikilinks leaving blank space when no metadata properties are visible
  • (#1317) Fixed project autosuggest filters not working correctly when only "Required Property Key" is configured
    • NLP + trigger now properly filters by property existence when no property value is specified
    • Modal "Add to project" button now shows consistent results with inline autosuggest
    • Thanks to @JacksonMcDonaldDev for reporting
  • (#1287), (#1307) The "New" button in Bases views now opens the TaskNotes creation modal
    • Tasks created from Bases views now respect default properties (status, priority, etc.)
    • Tasks are now created in the configured default folder instead of the views folder
    • Thanks to @anareaty and @sylvainfct-dot for reporting
  • (#1291) Fixed Microsoft Calendar OAuth documentation using wrong redirect URI
    • Added instructions for configuring via Azure manifest editor
    • Thanks to @PlecotusAustriacus for reporting

Added

  • (#803) New command "Convert current note to task" to add task properties to an existing note
  • (#1080) Custom user fields now support default values
    • Each field type has an appropriate input: text field, number input, toggle, date preset dropdown, or comma-separated list
    • Defaults are applied when creating tasks via modal, instant conversion, "Create or open task" command, or HTTP API
    • Thanks to @bradyrx for suggesting

Changed

  • Added documentation link to settings panel (links to tasknotes.dev)
  • Reorganized settings panel for improved discoverability
    • Removed "Defaults" tab - default values are now configured alongside each property in the Task Properties tab
    • Moved task filename format settings to the Title property section
    • Moved project autosuggest settings to the Projects property section
    • Body template setting moved to the Features tab
    • Added descriptions to each property explaining its purpose
    • Moved "Folder for converted tasks" setting to General tab under Task Storage for better discoverability
    • Updated setting description to clarify that leaving empty uses the default tasks folder

4.1.1

01 Dec 10:46

Choose a tag to compare

TaskNotes 4.1.1

Added

  • (#1277) Icon autosuggestion for custom status settings
    • Type to search through all available Lucide icons
    • Thanks to @Arachnidai for the suggestion
  • New formula properties in default Base templates
    • Date calculations: daysUntilDue, daysUntilScheduled, daysSinceCreated, daysSinceModified
    • Boolean helpers: isOverdue, isDueToday, isDueThisWeek, isScheduledToday, isRecurring, hasTimeEstimate
    • Time tracking: timeRemaining, efficiencyRatio, timeTrackedThisWeek, timeTrackedToday, timeTrackedFormatted
    • Grouping: dueMonth, dueWeek, scheduledMonth, scheduledWeek, dueDateCategory, timeEstimateCategory, ageCategory, createdMonth, modifiedMonth, priorityCategory, projectCount, contextCount, trackingStatus
    • Combined due/scheduled: nextDate, daysUntilNext, hasDate, isToday, isThisWeek, nextDateCategory, nextDateMonth, nextDateWeek - work with whichever date comes first
    • Sorting: priorityWeight, urgencyScore (combines priority with date proximity)
    • Display: dueDateDisplay (relative dates like "Today", "Tomorrow", "3d ago")
    • Action-oriented views (Not Blocked, Today, Overdue, This Week) now sort by urgency score, showing most important tasks first
    • See Default Base Templates documentation for full details
    • Note: To get these new formulas, either copy them from the documentation, or delete your .base files in TaskNotes/Views/ and restart Obsidian to regenerate them

Changed

  • (#1282) Added spacing between task title and metadata in inline task widgets for improved readability
    • Thanks to @3zra47 for the suggestion
  • Custom status icons now display in all context menus (task context menu, batch operations menu, and task creation/edit modals)
  • Added embedded video guide for Google Calendar OAuth setup in documentation

Fixed

  • (#1279) Fixed Kanban column width setting not being respected on mobile devices
  • (#1026), (#1177) Fixed recurring task completion from Base views recording the wrong date for users in negative UTC offset timezones (e.g., PST/PDT) when completing tasks in the evening
    • The bug caused complete_instances to record the next day instead of the user's current calendar day
    • Thanks to @3zra47 and @nslee123 for reporting and providing detailed reproduction steps