Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

v2.9.21 (2026-08-18)

✨ Improvements

  • Shortened the Preserve unmanaged Vault content setting description for faster scanning.

v2.9.20 (2026-08-17)

✨ Improvements

  • Project sync now preserves unmanaged Vault content by default. Task notes remain fully managed by immutable todoist_task_id, while a versioned folder-creation ledger limits folder cleanup to empty folders actually created by Tasks Bridge. User-created Bases, notes, attachments, and folders inside mappings survive Todoist renames and deletions; managed task notes still move or go to the configured Obsidian trash as required. A settings toggle retains the legacy exclusive-mirror behavior for dedicated roots.

v2.9.19 (2026-08-17)

🐛 Bug Fixes

  • Project sync now preserves every legitimate same-level Todoist item with a duplicate portable name. Colliding tasks or projects use readable UTC creation times, adding a typed short ID only when time is missing or still identical, while non-colliding names and displayed titles remain unchanged; legacy numeric and ID-only paths migrate to the new canonical layout.

v2.9.18 (2026-08-16)

🐛 Bug Fixes

  • Anchored Obsidian menus now open beneath their trigger, automatically avoid viewport overflow, and close when the same trigger is pressed again, including the completion heatmap range selector.

v2.9.17 (2026-08-16)

🐛 Bug Fixes

  • Filter blocks now recursively include every active descendant of matched tasks, while completed subtasks remain opt-in through completedTasks: true and grouped views preserve the task hierarchy.
  • Query caches and completed-history merging now honor Todoist's current task state, so active or reopened tasks cannot appear completed because of nullable or stale completion records.

v2.9.16 (2026-08-15)

🐛 Bug Fixes

  • Fixed community review build verification by emitting the plugin assets from the root build into the repository-level dist directory.

v2.9.15 (2026-08-15)

🐛 Bug Fixes

  • Fixed production builds from clean source archives where Git metadata is unavailable.
  • Completed the Settings tab migration to Obsidian's declarative API and removed the deprecated imperative fallback.

v2.9.14 (2026-08-15)

🔁 Changes

  • Updated query checkboxes and selector DOM construction to supported UI APIs, tightened callback typing, and added a reproducible root plugin build command for community review tooling.

v2.9.13 (2026-08-15)

🐛 Bug Fixes

  • Project sync now mirrors Todoist task deletion by moving the corresponding Markdown note to the user's configured Obsidian trash after one complete successful snapshot. Failed or incomplete fetches, cross-mapping moves, out-of-scope child projects, open notes, and newer local projections remain protected.

v2.9.12 (2026-08-15)

🐛 Bug Fixes

  • Fixed the Tasks List completion heatmap when a Base is embedded in a Markdown note on mobile. Markdown table styling no longer enlarges or misaligns the calendar, and horizontal scrolling stays inside the heatmap.

v2.9.11 (2026-08-14)

🔁 Changes

  • Refined query empty, warning, and error states to use Obsidian's native callout appearance. Empty results now use the native green success style and check icon.

v2.9.10 (2026-08-14)

🐛 Bug Fixes

  • Fixed Project task completion controls and the native todoist_completed property so completing or reopening a task reaches Todoist immediately without waiting for the next Project sync, including rapid toggles and delayed metadata updates.

v2.9.9 (2026-08-13)

✨ Features

  • Redesigned Tasks List so Project overview focuses on the completion percentage and daily heatmap, while each always-visible project row carries its complete descendant-aware counts and progress. Task rows start collapsed without hiding child projects.
  • Migrated task creation, editing, Heatmap range selection, and Settings selectors to Obsidian's official menu, modal, suggestion, and dropdown APIs. Menus now follow the user's Native menus preference.

🐛 Bug Fixes

  • Fixed completion and reopen loaders so they remain centered inside task checkboxes without overlapping the checked or unchecked state.
  • Fixed the Heatmap range selector opening an oversized mobile system picker and showing conflicting dropdown arrows.

v2.9.8 (2026-08-13)

✨ Features

  • Project sync now represents task hierarchy directly in the Vault: a task with subtasks becomes a same-named folder containing its own Markdown note and its direct children, with the same structure applied recursively for deeper subtasks.
  • Replaced the raw managed task body with a compact Obsidian-styled task card with collapsible subtask controls, while keeping user-relevant task fields visible as native Markdown properties for Bases.
  • Added automatic Todoist write-back when todoist_completed is checked or unchecked, including serialized updates and rollback after rejected requests.

🔁 Changes

  • Documented and tested todoist_project_path as an ordered root-to-current-project list.
  • Simplified Project sync notes to one binding identifier, todoist_task_id; synchronization-only ownership, hierarchy IDs, missing counters, order, and completion history now live in the plugin's data.json catalog.

v2.9.7 (2026-08-13)

🔁 Changes

  • Renamed every npm workspace to the Tasks Bridge namespace and aligned the root, plugin, documentation, scripts, and lockfile workspace versions. The release command now updates and validates all workspace versions together.
  • Streamlined the release command so a completed release also installs its official assets into a symlinked development Vault while preserving the plugin's existing settings and local data.

🐛 Bug Fixes

  • Corrected the Docs button in both supported Settings implementations and the README Project sync guide to use the deployed Tasks Bridge documentation routes.

v2.9.6 (2026-08-12)

🐛 Bug Fixes

  • Prevented the Tasks Bridge settings tab from entering an infinite render loop when a configured Project sync folder has been renamed or removed.
  • Moved Project Overview's internal project catalog from the Vault content tree into the plugin's data.json. Existing _Tasks Bridge catalog files are migrated before the obsolete folder is moved to the user's configured Obsidian trash.

v2.9.5 (2026-08-12)

🔁 Changes

  • Updated the plugin manifest description and author profile URL to follow the Obsidian community plugin directory guidelines.

🐛 Bug Fixes

  • Fixed architecture-diagram arrowheads scaling disproportionately on mobile renderers.
  • Removed React's unused dynamic script-resource injection paths from the production bundle to satisfy the community plugin security review.

v2.9.4 (2026-08-12)

🐛 Bug Fixes

  • Project overview now restores immediately from the synchronized local Markdown projection when the Vault opens instead of waiting for a new Todoist refresh.
  • Project sync now preserves zero-task projects and repeated complete → reopen → complete events in the local projection, keeping overview totals and heatmap history complete after restarts and across devices.

v2.9.3 (2026-08-12)

🔁 Changes

  • Updated plugin author metadata to list Haiqiang Zhang first.

v2.9.2 (2026-08-12)

✨ Features

  • Moved the Tasks List root-project choice into Obsidian's native Configure view menu and persist it in the .base view definition, so each view can keep an independent hierarchy root.
  • Expanded Project overview data to consistently cover the selected root project and all descendants.

🔁 Changes

  • Automatic Project sync now schedules each interval after the previous refresh finishes, preventing long refreshes from shortening the configured delay.
  • Updated the README backend diagram with distinct implemented and planned integrations, including TickTick, Microsoft To Do, and Google Tasks.

🐛 Bug Fixes

  • Reconciled Project sync notes by stable Todoist task identity, repairing canonical paths and removing true duplicates without discarding conflicting user-written content.
  • Rejects Project mappings that do not belong to the currently authenticated Todoist account, while still supporting an intentional account switch after mappings are updated.
  • Fixed Tasks List completion and reopen refresh states and invalid completed-task responses.
  • Restored square, first-line-aligned task checkboxes that follow Obsidian's native typography and control styling.

v2.9.0 (2026-08-12)

✨ Features

  • Added a GitHub-style daily completion heatmap to the Tasks List Project overview. It covers the selected root and all descendants, offers recent ranges and available calendar years, preserves recurring and reopened-task completion events, and uses responsive, keyboard-accessible Obsidian-native controls.

v2.8.2 (2026-08-12)

🐛 Fixes

  • Made Project sync projection updates atomic and revision-aware, with live identity validation, in-flight Vault activity fencing, and safe create/rename race handling instead of overwriting files changed by Sync.
  • Prevented stale mutation refreshes, malformed managed YAML, revisionless snapshots, and stale missing-task snapshots from restoring or duplicating older task state.

v2.8.1 (2026-08-11)

🐛 Fixes

  • Realigned the Project overview header with the native Obsidian Bases layout, including vertically centered controls, balanced left and right metadata, and responsive narrow-width alignment.

🔁 Changes

  • Replaced the interactive PR-based release process with the resumable one-line npm run release -- <version|patch|minor|major> command. It validates, tests, versions, commits, tags, reports GitHub build progress, and publishes the GitHub Release without manual intermediate steps.

v2.8.0 (2026-08-10)

✨ Features

  • Added completedTasks: true to query blocks. The newest three months load automatically with 200-task cursor pagination; Load 6 months, Load 9 months, Load 12 months, and later steps fetch older three-month windows.
  • Cached completed-task history and progress for immediate display. Completed tasks remain checked, read-only, and compatible with filtering, grouping, sorting, and metadata options.
  • Added one-way Project Sync with multiple validated Todoist-project-to-Vault-folder mappings, optional descendant folders, complete available active and completed history, and Bases-friendly todoist_* Markdown properties.
  • Added safe, resumable projections that preserve user content, defer open notes and conflicts, retain stale or out-of-scope tasks, and preserve notes during folder or cross-mapping moves.
  • Added hierarchical project selection, Obsidian's folder selector, inline validation, Sync now, the Sync Todoist projects command, startup sync, and shared periodic refresh.
  • Added the Tasks List Bases view with Project → Section → Task → Subtask hierarchy, arbitrary roots, native Base controls, note navigation, and Todoist-backed edit, complete, and reopen actions.
  • Added a collapsible Project overview with complete selected-root, descendant, zero-task-project, and multi-mapping statistics independent of Base-filtered rows.

🔁 Changes

  • Rebranded Todoist Sync ++ as Tasks Bridge with plugin ID tasks-bridge, positioning Todoist as the first supported task backend while retaining the acknowledgement of the original Todoist Sync project.
  • Extended global Auto-refresh to both query blocks and Project Sync while retaining per-block interval overrides.
  • Project task notes now use human-readable filenames without Todoist ID suffixes while retaining stable identifiers in their properties.
  • Unified Tasks List typography and responsive styling with Obsidian's interface font, theme variables, native controls, and reduced-motion support.
  • Reworked the documentation with a Project Sync guide, Tasks List Base template, completed-history API explanation, migration instructions, updated branding and links, and current-version-only publishing.
  • Updated release tooling to publish GitHub Releases under the Tasks Bridge name without generating duplicate versioned documentation.
  • Existing users must preserve data.json, rename the local plugin folder from todoist-sync-plus to tasks-bridge, restart Obsidian, enable the new plugin ID, and update full command-ID prefixes.

🐛 Bug Fixes

  • Fixed Tasks List complete and reopen actions remaining stuck or reporting false failures after Todoist accepted the change.
  • Fixed completion-state and account-change races during Project Sync, including reopened recurring tasks and responses from obsolete credentials.
  • Prevented completed-history pagination loops; failed windows remain retryable, and same-filter blocks share requests and progress.
  • Stabilized grouped-query headers during metadata hydration and synchronized completion changes across active-only and completed-enabled caches.
  • Prevented failed or interrupted Project Sync refreshes from replacing the last complete Project overview snapshot with partial statistics.
  • Tasks List now reports disabled, unconfigured, syncing, unavailable-root, and failed overview states without an indefinite spinner.

v2.7.1 (2026-08-09)

🔁 Changes

  • Changed the plugin ID and local plugin directory name to todoist-sync-plus so the fork has its own standards-compliant Obsidian identity.
    • If you installed v2.7.0 manually, disable it, replace its three plugin assets with the v2.7.1 files without deleting data.json, rename the directory to todoist-sync-plus, restart Obsidian, and enable the new ID once.
  • The development build path now derives its plugin directory from manifest.json, preventing the folder name and plugin ID from drifting apart.
  • Updated the setup guide with the fork's manual GitHub Release installation steps.

v2.7.0 (2026-08-09)

✨ Features

  • Todoist query blocks now render from a persistent cache immediately, then synchronize with Todoist in the background and update when fresh results arrive.
  • You can now sort tasks by their deadlines by name using deadline or deadlineDescending in the sorting field.

🔁 Changes

  • Added account-isolated, validated, and bounded cache storage, with protection against stale requests after a query or account change.
  • Task completion now updates cached queries consistently, invalidates affected cache entries, and rolls back when Todoist rejects the request.
  • Rebranded this fork as Todoist Sync ++ and clarified its acknowledgement of the original Todoist Sync project.

🐛 Bug Fixes

  • Same-day due dates are now formatted correctly in the configured time zone.
  • Filter strings now have Unicode whitespace characters (e.g., non-breaking spaces from copy-paste) normalized to regular spaces, preventing API errors.

v2.6.0 (2026-02-01)

✨ Features

  • You can now select where the plugin should store your API token.
    • By default, this is Obsidian's secret storage as this is the most secure option.
    • You may select the old file-based approach that was used prior to v2.5.0

🐛 Bug Fixes

  • Task descriptions will now correctly be rendered if the show parameter of the query is omitted entirely.

v2.5.0 (2026-01-25)

✨ Features

  • The plugin will now automatically refresh your Todoist projects, sections, and labels in the background. This happens every 10 minutes. This should reduce the incidence of "unknown" metadata labels.
  • You can now use view.hideNoTasks in your query to completely hide the query output when no tasks are returned.

🔁 Changes

  • Copied task links now use a cleaner format for pasting back into Obsidian
    • Task content [[file link]] [Todoist](url) instead of [Task content [file name](obsidian://...)](url)
  • Your Todoist API token is now stored in Obsidian's built-in secret storage instead of a plain file
    • Existing tokens will be automatically migrated after updating
  • There is now a fancy icon next to the plugin settings menu item

🐛 Bug Fixes

  • Queries sorted by dateAdded and dateAddedAscending should now work as expected
  • Queries should now respect the natural order of tasks properly if no sorting parameter is provided

v2.4.0 (2025-12-28)

✨ Features

  • You can now sort tasks alphabetically by name using alphabetical or alphabeticalDescending in the sorting field
  • You can now provide 'time' to the show field on a query. This will only render the time of the task (unless the end of the task is on a different day than the start).
  • You can now provide 'section' to the show field on a query to display only the section name for tasks in sections.
  • You can now customize the "no tasks found" message using view.noTasksMessage in your query to display a personalized message when a query returns no tasks.

🐛 Bug Fixes

  • Date grouping now correctly groups tasks on the same day together regardless of whether they have times
  • Fixed an issue where the task content would be rendered incorrectly the task was edited and the query refreshed

v2.3.0 (2025-12-06)

✨ Features

  • Task deadlines are now displayed in the task metadata with a target icon, and can be toggled using deadline in the show query property.
  • You can now set a deadline when creating tasks from the task creation modal. This option only appears for premium Todoist users.
  • You can now automatically copy a markdown link to newly created tasks, with options for either app URI or web URL format.
  • Token input now includes a "Paste from clipboard" button for easier token entry during setup.

🔁 Changes

  • Added debug logging for token validation to help troubleshoot setup issues.

🐛 Bug Fixes

  • Token validation now removes erroneous whitespace automatically
  • The task creation modal no longer intercepts key presses when in an IME

v2.2.1 (2025-09-22)

🐛 Bug Fixes

  • Fixed an issue where task with times would cause the plugin to fail to load tasks.

v2.2.0 (2025-09-21)

✨ Features

  • You can now configure default values for due date, project, and labels when creating tasks from inside Obsidian.
    • For due date, you can select none, today, or tomorrow.
    • For project, you can select any project or the Inbox.
    • For labels, you can select one or more of the available labels.
  • Group headers in grouped task views are now collapsible, allowing you to hide sections you don't need to see.

⚙ Internal

  • Migrated from Todoist REST API v2 to the new Todoist API v1.

v2.1.0 (2025-07-13)

✨ Features

  • Tasks which are marked as recurring in Todoist will now have a icon to indicate this next to the date in the task metadata.
  • The refresh button now has a tooltip indicating when the query was last refreshed.
  • You can now provide show: none in your query to hide all task metadata (project, due date, labels, description).
  • Your tasks' durations will now be rendered with the due date.
  • You can now set a task duration when creating a new task.
  • Project icons in the task creation modal will now show that project's color.
  • You can now select whether to include a link to the current page in the task creation modal.

🔁 Changes

  • A warning will now be displayed if there is an unexpected key in the query YAML/JSON.
  • API requests resulting in 5xx server errors now show a dedicated error message in the rendered query.
  • There is now a build stamp indicating version, commit SHA, and time of build in the settings.

🌐 Translations

  • Added translations for Dutch (nl language code). Thanks @tr3kl0v for the contribution!

v2.0.1 (2024-12-16)

🔁 Changes

  • Tweaked the size of icons throughout the plugin.

🐛 Bug Fixes

  • Tasks with floating task time timezones are now rendered correctly in the current system timezone.

v2.0.0 (2024-12-15)

Info

Help wanted!

This release has added rudimentary support for translating the plugin into other languages. If you'd like to help out, please see the translation contribution guide.

Warning

Note: the style changes in this release mean that you may need to tweak any custom CSS or themes. The changes are designed for the default Obsidian theme.

Breaking changes

  • Removed the deprecated settings for rendering the description, due date, labels, or projects. Please use the show property in the query.
  • Removed the group property in queries. Please use the groupBy property instead.

✨ Features

  • Rebuilt the task renderer from the ground up. This now resembles Todoist more closely and has improved the default styling.
  • Added support for translations in the plugin
  • Added a setting to control whether the embedded "Add task" button in a query should automatically add a link to the current page.
    • This behaviour can now be turned off or configured to append to the task name or description.

🔁 Changes

  • Tweaked the onboarding modal to hopefully be more reliable in validating the token and allowing you to save the token.
  • Greatly reduced plugin startup time. This should improve your vault's load time.
  • The setup button in the settings is no longer disabled except when the plugin is validating the token.

v1.13.0 (2024-04-10)

✨ Features

  • Rebuilt the onboarding modal that users are presented with upon installing the plugin. This now offers feedback to users based on the token they've provided.
    • We also no longer use a native browser alert if the token isn't present. Instead, we prefer to open the modal each time Obsidian is opened if there is no valid token.
  • Rebuilt the settings page from scratch. It is now divided into sections to organize the settings.
    • Now includes useful links to documentation and GitHub issues.
    • API token validation is done in the settings page with an option to open the modal if the validation fails.
  • You can now group by different task properties like: priority, due date, and others. Please see the documentation for more details.
  • Rebuilt the add task dialog from scratch. This should fix a number of bugs with the date picker, improves the UX, and brings it inline with the native Todoist experience.
  • Added a new command 'Add task with current page in task description' which offers the ability to append a link to the current page to the task description when it is created.
  • Added support for adding time to due dates in the "create task" modal.

🔁 Changes

  • Added rendered deprecation warnings to queries. Please follow the warnings to avoid breaking changes in the future!

🐛 Bug Fixes

  • The priorityAscending and priorityDescending options now sort tasks in the correct order.

v1.12.0 (2024-02-09)

Note: the style changes in this release mean that you may need to tweak any custom CSS or themes. The changes are based on the default theme.

Deprecated

  • Please note that the "Render Descriptions", "Render Dates", "Render project & section", and "Render labels" settings are now deprecated. You can now control whether these render or not via the show property in the query itself. These will be removed in a future release.

✨ Features

  • Added the option to wrap page links in parenthesis when creating tasks with the command. You may find this useful if you primarily use Todoist on mobile where links are less obvious. Thanks to @ThDag for the contribution!
  • You can now use the {{filename}} placeholder in the filter property. This will be replaced with the name of the file where the query is defined.
    • For example, if the full file path is My Vault/Notes/How to Take Smart Notes.md then the replaced file name will be How to Take Smart Notes.
  • Added "Add item" button to rendered queries. This will open the task creation modal.
  • Added the ability to control which elements of the task metadata render with tasks inside the query with the show keyword.
  • You can now sort by when the task was added to Todoist using dateAdded and dateAddedAscending sort options.
  • The div rendered when there are no tasks returned by a query now has a todoist-no-tasks class to allow you to customize the CSS.

🔁 Changes

  • You can now toggle whether or not task descriptions are rendered for each task.
  • Change the style of the sync button to match the Obsidian style of the "edit" codeblock button.
  • Fix intent level to match standard markdown levels in order to have consistent style.
  • Aligned the grouping behaviour with Todoist's when grouping by project. This will be expanded on in a future release.
  • Changed all icons to be part of the Lucide set to align with Obsidian.
  • The title part of the query is now optional.

🐛 Bug Fixes

  • Opening tasks via the context menu should now work properly on mobile devices.

v1.11.1 (2023-04-09)

🐛 Bug Fixes

  • Task completions should now behave properly.

v1.11.0 (2023-04-08)

✨ Features

  • You can now use YAML for writing your Todoist queries.
  • Tasks that are due today now have the task-today CSS class.
  • Task descriptions are now rendered with the task.
    • If the description is multiple lines or has complex Markdown, it is rendered as a preview.
    • The preview can be expanded and closed by double-clicking on the preview.
  • The task description can now be set from the 'Add Todoist task' modal.

🔁 Changes

  • Improved the alignment of the task metadata for the default Obsidian theme.

🐛 Bug Fixes

  • Using the 'Add Todoist Task' command should correctly use the selection in an editor pane.
  • Subtask lists should no longer display erroneous messages when all the subtasks are closed.
  • Fixed logical bugs in handling failures when marking a task as done.

⚙ Internal

  • Ensured that all API requests to Todoist have debug & error logging.

v1.10.1 (2022-12-22)

🐛 Bug Fixes

  • Requests to Todoist's API should no longer fail CORS checks.

v1.10.0 (2022-10-17)

✨ Features

  • You can now press 'Enter' in the create task dialog to create the task. Thanks to @oleeskild
  • This plugin's default styles updated to the new theme in Obsidian v1.0.

🔁 Changes

  • The priority CSS classes now appear on the outer div for a given task. This should allow you to style the entire task, not just the checkbox/description.

🐛 Bug Fixes

  • The plugin should now respect your Vault configuration directory when saving your Todoist token.

⚙ Internal

v1.9.0 (2022-01-19)

✨ Features

  • This plugin is now compatible with live preview! Please report any functionality regressions in this mode.

[1.8.1] - 2021-08-24

🐛 Bug Fixes

  • Token path location should no longer be incorrect on Linux machines.

v1.8.0 (2021-08-07)

✨ Features

  • This plugin is now compatible with Obsidian on mobile devices!
  • All task lists created by this plugin now also have the todoist-task-list CSS class on them for easier styling.
  • Added the ability to fold the projects & section groupings when using the grouped task list view.
  • Added an additional sorting option dateDescending. This behaves the opposite of the sorting option date.

🐛 Bug Fixes

  • The date picker in the 'Add task' modal works correctly with more themes.

v1.7.1 (2021-06-17)

🐛 Bug Fixes

  • Right-click context menu now works with the latest Obsidian version.

v1.7.0 (2021-01-24)

✨ Features

  • Markdown within tasks is now rendered as part of the task. This means that bold, italics and inline code blocks are supported, as are links (both internal and external).
  • Uncompletable tasks have a disabled checkbox, this may look different depending on your theme, but it will stop you completing these tasks accidentally.
  • You can now template the number of tasks returned by the query in the query name by using {task_count}
    • For example, setting the name to Tasks ({task_count}) will render as Tasks (10) if there are 10 tasks returned by the query.
  • Right clicking on a task will now open a context menu where you can either complete the task or open it in the browser or application.

v1.6.2 (2021-01-13)

🔁 Changes

  • Removed built-in update checker as Obsidian has one for plugins now!

🐛 Bug Fixes

  • Fixed an issue where queries didn't resolve on first load.

v1.6.1 (2021-01-06)

🐛 Bug Fixes

  • Refreshing tasks no longer causes any existing task to disappear and then reappear.
  • Use MarkdownRenderChild correctly to prevent potential memory leaks.

v1.6.0 (2020-12-31)

✨ Features

  • A long awaited and requested feature is finally here! You can create Todoist tasks from within Obsidian.
    • This is accessible through a command which will open a modal for the task details.
    • There is a second command which will append the link to the current active page at the end of the Todoist task.
    • Any selected text under the cursor will be pre-filled as the task text.
    • This does not support Todoist's syntax such as '#' for projects, '@' for labels, and smart date recognition.
  • Improved the setup of the plugin. Now the plugin will prompt you for an API token on launch and you can set the token through the settings.
  • There is now a message rendered if your query returns no tasks.
  • Add default CSS for the default Obsidian theme.

🔁 Changes

  • The 'Refresh Metadata' command no longer has a duplicate 'Todoist' identifier in front of it.

🐛 Bug Fixes

  • JSON parsing errors are now correctly handled and displayed to the user.

⚙ Internal

  • Refactored component injection to use the MarkdownPostProcessor API.

v1.5.0 (2020-10-31)

✨ Features

  • This plugin is now compatible with the official Obsidian API. It was developed against Obsidian 0.9.10.

v1.4.0 (2020-10-19)

Along with this release, I've released an Obsidian theme which has built-in support for this plugin! 🎉

Check it out at jamiebrynes7/moonlight-obsidian-theme!

✨ Features

  • The version of the plugin is now displayed in the settings tab along with a link to the changelog.
  • You can specify that the result of a query should be grouped by project & section. To do this, add the "group": true field to the JSON query.
    {
      "name": "My Tasks",
      "filter": "today | overdue",
      "group": true
    }
  • You can now check for plugin updates in the Todoist plugin settings.
  • The JSON query is now validated and errors are presented in a more user-friendly fashion.
  • Any workspace-leaf which has an injected query will have the contains-todoist-query CSS class attached. This allows you to style these leafs independently of the others.

🔃 Changed

  • Errors are displayed more prominently in the injected Todoist query.

⚙ Internal

  • Added the ability to turn on debug logging in the plugin.

v1.3.1 (2020-09-18)

🐛 Bug Fixes

  • Fixed an issue where the 'Render labels' setting did not work.

v1.3.0 (2020-09-17)

✨ Features

  • Tasks now render labels under them by default. This can be toggled in the settings (along with the accompanying icon).

  • Tasks now render projects & section under them by default. This can be toggled in the settings (along with the accompanying icon).

    • The layout of the project, date, and label combo can be configured in CSS. For example:

      /* To make date & project sit inline */
      .task-metadata {
        display: inline;
      }
      
      /* To make date & project sit on top of each other. */
      .task-metadata {
        display: block;
      }
  • There is a new command Todoist: Refresh Metadata which will re-fetch your projects, sections, and labels. If you add/remove/rename these, you should refresh the metadata. This is done automatically at startup.

  • Added contains-task-list to match latest Obsidian styling.

  • The entire task (li element) has the task-overdue class on it, in addition to the date element specifically.

  • The task (li element) has either has-time or has-no-time derived from the date field. (No date or time will also have has-no-time).

  • Add support for Obsidian v0.8.14

🐛 Bug Fixes

  • Fixed a bug where tasks with datetimes were sometimes sorted incorrectly.

v1.2.2 (2020-09-06)

🐛 Bug Fixes

  • Fixed an issue where the task-overdue status would disappear if a task above it was checked off.

v1.2.1 (2020-09-06)

🐛 Bug Fixes

  • Fixed an issue where subtasks would cause errors with sorting.

v1.2.0 (2020-09-05)

✨ Features

  • Subtasks are now nested under their parent if both are included in the filter. If a subtask is captured by a filter, but the parent is not, it will be listed as a top level item. You may need to adjust your priority CSS to accommodate these changes. For example:
    + .todoist-p1 > input[type="checkbox"] {
    - .todoist-p1 input[type="checkbox"] {
        /* This matches against the input element rendered for a priority 1 task. */
    }
  • Tasks now render dates under them by default. This can be toggled in the settings (along with some the accompanying icon). If you choose to use icons, I recommend you at least add the following CSS to your own (tweaking may be required based on your theme):
    .task-calendar-icon {
      vertical-align: middle;
      height: 17px;
      width: 17px;
    }
  • Added support for controlling the ordering of the rendered tasks. This can be done by either priority or date, or a combination of them (e.g. - sort by priority, then by date). To use this feature, amend your queries:
    ```json
    {
      "name": "My Tasks",
      "filter": "today | overdue",
      "autorefresh": 30,
      "sorting": ["date", "priority"]
    }
    ```

⚙ Internal

  • Ported the plugin to (almost entirely) Typescript.

v1.1.0 (2020-08-31)

✨ Features

  • Each rendered task's CSS now contains information about the task's priority. You can use this information to style each priority differently. These classes are todoist-p1, todoist-p2, todoist-p3, and todoist-p4. For example:
    .todoist-p1 input[type="checkbox"] {
      /* This matches against the input element rendered for a priority 1 task. */
    }
  • When a task is removed or added, it now transitions with a smooth fading effect, rather than immediately being added/removed. This can be turned off in the settings.
  • Added support for auto-refreshing queries. This can be set at a global level within the settings tab or overridden for each individual query. For example:
    ```json
    {
      "name": "My Tasks",
      "filter": "today | overdue",
      "autorefresh": 30
    }
    ```
  • Added a setting tab in the Obsidian setting menu. There are three settings included in this release:
    • "Task fade animation" - controls whether to use the fade animation
    • "Auto-refresh" - controls whether all queries should auto-refresh
    • "Auto-refresh interval" - controls the default interval for auto-refreshing queries

🔃 Changes

  • The rendered task list now uses the ordering as defined by the Todoist API.

🐛 Bug Fixes

  • The injected Todoist query components are correctly destroyed when removed from the DOM.

v1.0.0 (2020-08-29)

This was the initial release of the Obsidian x Todoist plugin. It contained the basic functionality for:

  • materializing tasks in an Obsidian note
  • allowing you to check tasks off from an Obsidian note