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.mdschema 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
- Works on the same vault and
-
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
- When enabled, all checked checkboxes (
-
(#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
/mcpendpoint, gated behindenableMCPsetting - Supports tasks (CRUD, query, toggle status/archive, parse from text), time tracking, pomodoro, calendar events, and task statistics
- Thanks to @dstotijn for the contribution
- Exposes TaskNotes tools at
Fixed
-
Fixed generated mdbase type definitions for task dependencies using the wrong field type
- In
_types/task.md,blockedBy[].uidnow usestype: link(wastype: string) - Better matches how dependency links are serialized in task frontmatter (
[[...]])
- In
-
Fixed generated mdbase reminder type definitions to better match TaskNotes reminder data
- In
_types/task.md,reminders[].typenow uses enum valuesabsolute|relative reminders[].relatedTonow uses enum valuesdue|scheduledreminders[].absoluteTimenow usestype: datetime(wastype: string)
- In
-
(#1597) Fixed webhook payloads for time tracking start-with-description containing stale data
- Thanks to @dstotijn for the fix
-
(#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
nextSessionTypewhen 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
- The
-
(#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
- Added mobile-specific (
-
(#1590) Fixed HTTP API not allowing
blockedBydependencies when creating tasks- Added
blockedByfield support toTaskService.createTask() - Updated API documentation with
blockedBy,recurrence, andremindersfields - Thanks to @hGriff0n for reporting
- Added
-
(#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()andgenerateRecurringTaskInstances()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