├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug-report.yaml │ ├── config.yml │ ├── feature-request.yaml │ └── internal-issue.yaml ├── dependabot.yml ├── pull_request_template.md └── workflows │ ├── release.yml │ ├── update-docs-markdown.yml │ └── verify.yml ├── .gitignore ├── .markdownlint-cli2.jsonc ├── .markdownlint.jsonc ├── .prettierrc.js ├── .vscode ├── extensions.json └── settings.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── circular-deps.txt ├── contributing ├── .obsidian │ ├── app.json │ ├── appearance.json │ ├── command-palette.json │ ├── community-plugins.json │ ├── core-plugins-migration.json │ ├── core-plugins.json │ ├── graph.json │ ├── hotkeys.json │ ├── plugins │ │ ├── broken-links │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── cmdr │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── copy-publish-url │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── note-refactor-obsidian │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── obsidian-plugin-update-tracker │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── reveal-active-file-button │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── table-editor-obsidian │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── tag-wrangler │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── templater-obsidian │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── vault-name-status-bar │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ └── vault-nickname │ │ │ ├── main.js │ │ │ └── manifest.json │ ├── publish.json │ └── snippets │ │ └── publish-simulation.css ├── Architecture Decisions │ ├── ADR-001 - Nomenclature for Reusable Instruction Blocks Feature.md │ └── About Architecture Decisions.md ├── Building │ ├── About Building.md │ ├── Developing with WebStorm.md │ ├── Local development.md │ └── Setting up build environment.md ├── Code │ ├── About Code.md │ ├── Generating documentation of the code.md │ ├── How do I add a new field to the Task class.md │ ├── How do I add a new task filter.md │ ├── How do I add one-click support for new themes or snippets for custom statuses.md │ ├── How do I see circular dependencies.md │ ├── How do I use Moment in src.md │ ├── How does Tasks handle status changes.md │ ├── Structure of the code.md │ ├── circular-deps.svg │ ├── class-hierarchy.png │ ├── code-docs-index-page.png │ └── webstorm-open-code-docs.png ├── Contributing │ ├── About Contributing.md │ ├── Reviewing Pull Requests.md │ └── Updating code.md ├── Debugging │ ├── About Debugging.md │ ├── Console logging facilities in Tasks.md │ ├── Console timing facilities in Tasks.md │ ├── Debugging and Performance tools.md │ ├── How do I enable hidden debugging and visualisation facilities.md │ └── Sample flame chart with Timing labels.png ├── Dependencies │ ├── About Dependencies.md │ ├── Dependency Groups.md │ ├── Notes and Special Cases.md │ ├── Overview of dependencies and `package.json`.md │ ├── Summary of Dependency Upgrades and Dependabot.md │ └── Thought-Process for Deciding Whether a Dependency Needs Manual Testing.md ├── Documentation │ ├── About Documentation.md │ ├── Callouts.md │ ├── Documentation and branches.md │ ├── Embedding code and data in documentation.md │ ├── How the documentation is generated.md │ ├── Linking to other pages in the docs.md │ ├── Old Jekyll-based docs │ │ ├── About Old Jekyll-based docs.md │ │ ├── Dependency Management and Updates for the Docs.md │ │ ├── Overview of Jekyll-based docs.md │ │ └── Test documentation locally with Jekyll.md │ ├── Publishing with Obsidian Publish.md │ ├── Redirects - Renaming files.md │ ├── Redirects - Testing old links still work.md │ ├── Rename headings.md │ ├── Screenshots in documentation.md │ ├── Templates for common text snippets.md │ ├── Version numbers in documentation.md │ └── publish-icon-in-ribbon.png ├── Releases │ ├── About Releases.md │ └── How do I make a release.md ├── Testing │ ├── About Testing.md │ ├── Approval Tests.md │ ├── Example Tests.md │ ├── How do I smoke-test the Tasks plugin.md │ ├── How do I test a GitHub build of the Tasks plugin.md │ ├── How do I use Moment in tests.md │ ├── Introduction to Running the tests.md │ ├── Introduction to Writing Unit Tests.md │ ├── Jest Test Framework.md │ ├── Jest and the WebStorm IDE.md │ ├── Simulating Dates and Times.md │ ├── Snapshot Tests.md │ ├── Test Coverage.md │ ├── Testing and Time Zones.md │ ├── Using Obsidian API in tests.md │ └── Writing Tests for New or Refactored Code.md ├── Translation │ ├── About Translation.md │ ├── Contribute translations.md │ ├── Make strings translatable.md │ ├── Overview of the translation setup.md │ ├── Set up Visual Studio Code for translation work.md │ ├── Set up WebStorm for translation work.md │ ├── Support a new language.md │ ├── Translate a new string.md │ └── WebStorm Easy I18n plugin settings.png ├── Useful Links.md ├── User Support │ ├── About User Support.md │ └── Getting test vault to Mobile Device.md ├── Welcome.md ├── _meta │ └── templates │ │ ├── file path for redirecting alias.md │ │ ├── image embed.md │ │ ├── insert 'Released' callout for part of feature.md │ │ ├── insert 'Released' callout for whole feature.md │ │ ├── new documentation file.md │ │ ├── standard frontmatter.md │ │ ├── tags for related pages.md │ │ └── we are tracking this in issue.md └── publish.css ├── docs-snippets ├── snippet-callout-titles-bug.md └── snippet-statuses-overview.md ├── docs ├── .gitignore ├── .obsidian │ ├── app.json │ ├── appearance.json │ ├── command-palette.json │ ├── community-plugins.json │ ├── core-plugins-migration.json │ ├── core-plugins.json │ ├── graph.json │ ├── hotkeys.json │ ├── plugins │ │ ├── broken-links │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── cmdr │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── copy-publish-url │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── obsidian-auto-link-title │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── obsidian-plugin-update-tracker │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── obsidian-tasks-plugin │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── reveal-active-file-button │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── table-editor-obsidian │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── tag-wrangler │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── templater-obsidian │ │ │ ├── data.json │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── vault-name-status-bar │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ └── vault-nickname │ │ │ ├── main.js │ │ │ └── manifest.json │ ├── publish.json │ └── snippets │ │ └── publish-simulation.css ├── Advanced │ ├── About Advanced.md │ ├── Daily Agenda.md │ ├── Notifications.md │ ├── Styling.md │ ├── Tasks Api.md │ └── Urgency.md ├── Editing │ ├── About Editing.md │ ├── Auto-Suggest.md │ ├── Create or edit Task.md │ ├── Editing Dates.md │ ├── Postponing.md │ └── Toggling and Editing Statuses.md ├── Getting Started │ ├── About Getting Started.md │ ├── Dates.md │ ├── Getting Started.md │ ├── Global Filter.md │ ├── Installation.md │ ├── Obsidian Properties.md │ ├── On Completion.md │ ├── Priority.md │ ├── Recurring Tasks.md │ ├── Settings.md │ ├── Statuses.md │ ├── Statuses │ │ ├── About Statuses.md │ │ ├── Check your Statuses.md │ │ ├── Core Statuses.md │ │ ├── Custom Statuses.md │ │ ├── Editing a Status.md │ │ ├── Example Statuses.md │ │ ├── Recurring Tasks and Custom Statuses.md │ │ ├── Status Settings.md │ │ └── Status Types.md │ ├── Tags.md │ ├── Task Dependencies.md │ └── Use Filename as Default Date.md ├── How To │ ├── About How Tos.md │ ├── Find tasks for coming 7 days.md │ ├── Find tasks with invalid data.md │ ├── How to get tasks in current file.md │ ├── How to style backlinks.md │ ├── How to style buttons.md │ ├── Make a query user interface.md │ ├── Set up custom statuses.md │ ├── Show tasks in a calendar.md │ └── Style custom statuses.md ├── Introduction.md ├── Other Plugins │ ├── About Other Plugins.md │ ├── Dataview.md │ ├── Kanban Plugin.md │ ├── Meta Bind Plugin.md │ └── QuickAdd.md ├── Queries │ ├── About Queries.md │ ├── Backlinks.md │ ├── Combining Filters.md │ ├── Comments.md │ ├── Examples.md │ ├── Explaining Queries.md │ ├── Filters.md │ ├── Global Query.md │ ├── Grouping.md │ ├── Layout.md │ ├── Limiting.md │ ├── Line Continuations.md │ ├── Query File Defaults.md │ ├── Regular Expressions.md │ └── Sorting.md ├── Quick Reference.md ├── README.md ├── Reference │ ├── About Reference.md │ ├── Status Collections │ │ ├── About Status Collections.md │ │ ├── AnuPpuccin Theme.md │ │ ├── Aura Theme.md │ │ ├── Border Theme.md │ │ ├── Ebullientworks Theme.md │ │ ├── ITS Theme.md │ │ ├── LYT Mode Theme.md │ │ ├── Minimal Theme.md │ │ ├── SlRvb's Alternate Checkboxes.md │ │ └── Things Theme.md │ └── Task Formats │ │ ├── About Task Formats.md │ │ ├── Dataview Format.md │ │ └── Tasks Emoji Format.md ├── Scripting │ ├── About Scripting.md │ ├── Custom Filters.md │ ├── Custom Grouping.md │ ├── Custom Sorting.md │ ├── Expressions.md │ ├── Placeholders.md │ ├── Presets.md │ ├── Query Properties.md │ └── Task Properties.md ├── Support and Help │ ├── About Support and Help.md │ ├── Known Limitations.md │ ├── Missing tasks in callouts with some Obsidian 1.6.x versions.md │ ├── Report a Bug.md │ ├── Request a Feature.md │ └── Useful Links.md ├── What is New │ ├── Breaking Changes.md │ └── Changelog.md ├── _meta │ └── templates │ │ ├── file path for redirecting alias.md │ │ ├── image embed.md │ │ ├── insert 'Released' callout for part of feature.md │ │ ├── insert 'Released' callout for whole feature.md │ │ ├── insert line in to What's New.md │ │ ├── new documentation file.md │ │ ├── sample mermaid diagram.md │ │ ├── standard frontmatter.md │ │ ├── tags for related pages.md │ │ ├── we are tracking this in discussion.md │ │ └── we are tracking this in issue.md ├── images │ ├── acme.png │ ├── api-create-taskline-modal-quickadd-capture-example.png │ ├── auto-suggest-edit-incorrect-task.png │ ├── auto-suggest-menu-after-due-date.png │ ├── auto-suggest-menu-after-due-emoji.png │ ├── auto-suggest-menu-after-priority.png │ ├── auto-suggest-menu-after-repeat-emoji.png │ ├── auto-suggest-menu-after-repeat-text.png │ ├── auto-suggest-menu-initial-menu.png │ ├── auto-suggest-preview-incorrect-task.png │ ├── backlinks-default-style.png │ ├── backlinks-snippet-tasks-plugin-backlinks-icon.png │ ├── backlinks-snippet-tasks-plugin-backlinks-small-grey.png │ ├── change-status-context-menu-with-custom-statuses.png │ ├── dataview-settings.png │ ├── date-context-menu-1.png │ ├── date-context-menu-2.png │ ├── date-picker-1.png │ ├── date-picker-2.png │ ├── important_project.png │ ├── modal-date-picker.png │ ├── modal-showing-date-needed-on-recurring-task.png │ ├── modal-showing-new-statuses.png │ ├── modal-showing-unparsed-emoji.png │ ├── modal.png │ ├── on-completion-after.png │ ├── on-completion-before.png │ ├── postpone-future-task-context-menu.png │ ├── postpone-future-task-default-action.png │ ├── postpone-overdue-task-context-menu.png │ ├── postpone-overdue-task-default-action.png │ ├── query-file-defaults-file-properties-controls.png │ ├── query-file-defaults-meta-bind-controls.png │ ├── quickadd-settings-configure-capture.png │ ├── quickadd-settings-create-capture.png │ ├── rebuild-vault-metadata.png │ ├── reminder.png │ ├── search-headings-for-date-and-tag.png │ ├── settings-auto-suggest-task-content.png │ ├── settings-core-statuses.png │ ├── settings-custom-statuses-add-unknown-statuses.png │ ├── settings-custom-statuses-added-1.png │ ├── settings-custom-statuses-added.png │ ├── settings-custom-statuses-dialog-1.png │ ├── settings-custom-statuses-dialog-2.png │ ├── settings-custom-statuses-important-loop-added.png │ ├── settings-custom-statuses-initial.png │ ├── settings-custom-statuses-its-theme-first-few.png │ ├── settings-custom-statuses-minimal-theme-first-few.png │ ├── settings-custom-statuses-new-empty-status.png │ ├── settings-global-filter-with-filter.png │ ├── settings-global-filter.png │ ├── settings-global-query.png │ ├── settings-optional-date-fields.png │ ├── settings-provide-access-keys-in-dialogs.png │ ├── settings-recurrence-location.png │ ├── settings-recurrence-remove-scheduled-date.png │ ├── settings-restart-after-change.png │ ├── settings-statuses-initial.png │ ├── settings-statuses-report-samples.png │ ├── settings-statuses-report.png │ ├── settings-task-format.png │ ├── settings-use-filename-for-date.png │ ├── show-tree.png │ ├── snippet-slrvb-alternate-checkboxes.png │ ├── styling-sample-tasks-default-appearance.png │ ├── styling-sample-tasks-slrvb-custom-checkboxes-modified.png │ ├── styling-sample-tasks-slrvb-custom-checkboxes.png │ ├── styling-sample-tasks-style-settings-options-1.png │ ├── styling-sample-tasks-style-settings-options-2.png │ ├── task-dependencies-blocked-by-example.png │ ├── task-dependencies-party.png │ ├── task-dependencies-search.png │ ├── tasks-buttons-alt.png │ ├── tasks-buttons-default.png │ ├── tasks-buttons-gray.png │ ├── tasks-buttons-stylish.png │ ├── tasks-buttons-svg.png │ ├── tasks-buttons-text.png │ ├── tasks-plugin-circular-checkboxes-snippet.png │ ├── tasks-plugin-color-due-today-and-overdue-snippet.png │ ├── tasks-plugin-complete-example-snippet.png │ ├── tasks-plugin-grid-layout-snippet-query.png │ ├── tasks-plugin-grid-layout-snippet-reading.png │ ├── tasks-plugin-highlight-specific-tag-green-glow-snippet.png │ ├── tasks-plugin-highlight-specific-tag-round-red-description-snippet.png │ ├── tasks-plugin-priority-as-checkbox-color-snippet.png │ ├── tasks-plugin-style-status-symbols-snippet.png │ ├── tasks-plugin-style-status-types-snippet.png │ ├── tasks-plugin-tags-links-recurrence-gray-snippet.png │ ├── tasks_custom_groups_categorise_dates.png │ ├── tasks_custom_groups_with_formatting.png │ ├── tasks_grouped.png │ ├── tasks_queries.png │ ├── tasks_ungrouped.png │ ├── theme-anuppuccin-reading-view.png │ ├── theme-aura-reading-view.png │ ├── theme-border-reading-view.png │ ├── theme-ebullientworks-reading-view.png │ ├── theme-its-reading-view-sample.png │ ├── theme-its-reading-view.png │ ├── theme-lyt-mode-reading-view.png │ ├── theme-minimal-reading-view-sample.png │ ├── theme-minimal-reading-view.png │ └── theme-things-reading-view.png ├── migration.md ├── publish.css └── snippets-embedded-in-multiple-pages │ ├── Sample HTML - Full mode.md │ └── Sample HTML - Short mode.md ├── esbuild.config.mjs ├── i18next-parser.config.js ├── jest.config.js ├── lefthook.yml ├── manifest.json ├── mdsnippets.json ├── package.json ├── release.sh ├── resources ├── sample_vaults │ └── Tasks-Demo │ │ ├── .gitignore │ │ ├── .obsidian │ │ ├── app.json │ │ ├── appearance.json │ │ ├── command-palette.json │ │ ├── community-plugins.json │ │ ├── core-plugins-migration.json │ │ ├── core-plugins.json │ │ ├── hotkeys.json │ │ ├── plugins │ │ │ ├── broken-links │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── cmdr │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── dataview │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── helpmate │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── hot-reload │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ ├── js-engine │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── number-headings-obsidian │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── obsidian-kanban │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── obsidian-meta-bind-plugin │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── obsidian-plugin-update-tracker │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── obsidian-style-settings │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── obsidian-tasks-plugin │ │ │ │ ├── .hotreload │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── obsidian-theme-design-utilities │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── obsidian42-brat │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── open-plugin-settings │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── quickadd │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── reveal-active-file-button │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ ├── table-editor-obsidian │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── templater-obsidian │ │ │ │ ├── data.json │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ ├── vault-name-status-bar │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── styles.css │ │ │ └── vault-nickname │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ ├── snippets │ │ │ ├── S - Checkboxes.css │ │ │ ├── dataview-blocks.css │ │ │ ├── js-engine-code-block-border.css │ │ │ ├── tasks-buttons-alt.css │ │ │ ├── tasks-buttons-gray.css │ │ │ ├── tasks-buttons-stylish.css │ │ │ ├── tasks-buttons-svg.css │ │ │ ├── tasks-buttons-text.css │ │ │ ├── tasks-code-block-blue-border.css │ │ │ ├── tasks-plugin-backlinks-icon.css │ │ │ ├── tasks-plugin-backlinks-small-grey.css │ │ │ ├── tasks-plugin-circular-checkboxes.css │ │ │ ├── tasks-plugin-color-due-today-and-overdue.css │ │ │ ├── tasks-plugin-complete-example.css │ │ │ ├── tasks-plugin-explain-text-blue.css │ │ │ ├── tasks-plugin-grid-layout.css │ │ │ ├── tasks-plugin-highlight-specific-tag-green-glow.css │ │ │ ├── tasks-plugin-highlight-specific-tag-round-red-description.css │ │ │ ├── tasks-plugin-priority-as-checkbox-color.css │ │ │ ├── tasks-plugin-smoke-test-query-styling.css │ │ │ ├── tasks-plugin-style-status-symbols.css │ │ │ ├── tasks-plugin-style-status-types.css │ │ │ ├── tasks-plugin-tags-links-recurrence-gray.css │ │ │ └── widen-property-labels.css │ │ ├── themes │ │ │ ├── AnuPpuccin │ │ │ │ ├── manifest.json │ │ │ │ └── theme.css │ │ │ ├── Aura │ │ │ │ ├── manifest.json │ │ │ │ └── theme.css │ │ │ ├── Border │ │ │ │ ├── manifest.json │ │ │ │ └── theme.css │ │ │ ├── Ebullientworks │ │ │ │ ├── manifest.json │ │ │ │ └── theme.css │ │ │ ├── ITS Theme │ │ │ │ ├── manifest.json │ │ │ │ └── theme.css │ │ │ ├── LYT Mode │ │ │ │ ├── manifest.json │ │ │ │ └── theme.css │ │ │ ├── Minimal │ │ │ │ ├── manifest.json │ │ │ │ └── theme.css │ │ │ ├── Prism │ │ │ │ ├── manifest.json │ │ │ │ └── theme.css │ │ │ └── Things │ │ │ │ ├── manifest.json │ │ │ │ └── theme.css │ │ └── types.json │ │ ├── ACME.md │ │ ├── Filters │ │ ├── Boolean Combinations.md │ │ ├── Explain Filters.md │ │ ├── Regular Expression Searches.md │ │ └── Search for tasks in file or folder containing the Query.md │ │ ├── Formats │ │ ├── All Formats Parsing.md │ │ ├── Dataview Format.md │ │ └── Tasks Format.md │ │ ├── Functions │ │ ├── Custom Filters - Demo.md │ │ ├── Custom Filters With Complex Caching.md │ │ ├── Custom Filters With Simple Caching.md │ │ ├── Custom Sorting.md │ │ └── Fields for Functions - Demo.md │ │ ├── How To │ │ ├── Access properties in frontmatter.md │ │ ├── Find tasks in notes with particular tag.md │ │ ├── Reuse instructions across the vault.md │ │ └── Use formatting in custom group headings.md │ │ ├── Important Project.md │ │ ├── Manual Testing │ │ ├── 654 - Unable to find section, when title has tag inside.md │ │ ├── Callouts and Block Quotes.md │ │ ├── Custom Task Statuses.md │ │ ├── Dependencies - Worked Example.md │ │ ├── Dependencies Samples - Recurring Tasks.md │ │ ├── Dependencies Samples.md │ │ ├── Edit Task Modal samples.md │ │ ├── Frontmatter │ │ │ ├── Frontmatter code.canvas │ │ │ ├── Placeholder examples to capture in tests and docs.md │ │ │ ├── Project 1.md │ │ │ ├── Project 2.md │ │ │ ├── Project Search.md │ │ │ ├── Tags in Frontmatter.md │ │ │ └── workdate Example.md │ │ ├── Internal Heading Links │ │ │ ├── Internal Heading Links.md │ │ │ └── Other File.md │ │ ├── Invalid Dates and Happens.md │ │ ├── Invalid Dates.md │ │ ├── Invalid dates with Sorting and Grouping.md │ │ ├── Markdown in group _non-italic filename_.md │ │ ├── QuickAdd Tasks API Demo.md │ │ ├── README - Manual Testing.md │ │ ├── Recurrence handling invalid dates.md │ │ ├── Scheduled Date Implied │ │ │ ├── Nov 05, 2022.md │ │ │ ├── Scheduled Implied - 2022-11-05.md │ │ │ ├── Scheduled Implied - 20221105.md │ │ │ ├── Scheduled Implied - Nov 05, 2022.md │ │ │ └── Search for Scheduled Dates.md │ │ ├── Seeing the Query as HTML │ │ │ ├── HTML from Query - block-language-tasks selected.png │ │ │ ├── HTML from Query - hover over block-language-tasks.png │ │ │ ├── HTML from Query - select an element.png │ │ │ ├── HTML from Query - short mode - empty list.html │ │ │ ├── HTML from Query - short mode.html │ │ │ ├── HTML from Query.html │ │ │ └── HTML from Query.md │ │ ├── SlrVb's Alternative Checkboxes.md │ │ ├── Smoke Testing the Tasks Plugin - Debug View.md │ │ ├── Smoke Testing the Tasks Plugin.md │ │ ├── Smoke test Kanban Integration.md │ │ ├── Styling of Queries.md │ │ ├── Task Toggling Scenarios │ │ │ ├── 1680 - Reading Mode line numbers not updated on editing.md │ │ │ ├── Embed File in to Note - File to Embed.md │ │ │ ├── Embed File in to Note.md │ │ │ ├── Embed Task in to Note.md │ │ │ ├── On Completion Delete.md │ │ │ ├── Reading Mode line numbers in blockquotes.md │ │ │ └── Reading Mode line numbers in callouts.md │ │ ├── Testing File Formats │ │ │ ├── Dataview Format - Queries - Dataview Plugin.md │ │ │ ├── Dataview Format - Queries - Tasks Plugin.md │ │ │ └── Dataview Format - Tasks to Parse.md │ │ ├── Time Zones │ │ │ └── Pacific-Auckland.md │ │ ├── Toggle Done Cursor Fixes.md │ │ └── Urgency Scores Examples.md │ │ ├── Other Plugins │ │ └── Dataview │ │ │ ├── Parent-Child relationships - Searches - Dataview.md │ │ │ ├── Parent-Child relationships - Searches - Tasks.md │ │ │ ├── Parent-Child relationships - Searches.md │ │ │ └── Parent-Child relationships - Tasks.md │ │ ├── Settings Files │ │ ├── data 1.22.0.json │ │ └── data 1.23.0-pre-release-build-1.json │ │ ├── Stress Test │ │ ├── .gitignore │ │ ├── Stress Test Readme.md │ │ ├── limit 1.md │ │ ├── limit 100.md │ │ ├── limit 1000.md │ │ ├── limit 150.md │ │ ├── limit 200.md │ │ ├── limit 2000.md │ │ ├── limit 25.md │ │ ├── limit 250.md │ │ ├── limit 3000.md │ │ ├── limit 4000.md │ │ ├── limit 50.md │ │ ├── limit 500.md │ │ ├── limit 5000.md │ │ └── limit 750.md │ │ ├── Styling │ │ ├── Sample Tasks for Styling Documentation.md │ │ ├── Snippet - SlRvb's Alternate Checkboxes.md │ │ ├── Styling the Backlinks.md │ │ ├── Theme - AnuPpuccin.md │ │ ├── Theme - Aura.md │ │ ├── Theme - Border.md │ │ ├── Theme - Ebullientworks.md │ │ ├── Theme - ITS Theme.md │ │ ├── Theme - LYT Mode.md │ │ ├── Theme - Minimal Theme.md │ │ └── Theme - Things Theme.md │ │ ├── Tasks.md │ │ ├── Test Data │ │ ├── blockquote.md │ │ ├── callout.md │ │ ├── callout_custom.md │ │ ├── callout_labelled.md │ │ ├── callouts_nested_issue_2890_labelled.md │ │ ├── callouts_nested_issue_2890_unlabelled.md │ │ ├── code_block_in_task.md │ │ ├── comments_html_style.md │ │ ├── comments_markdown_style.md │ │ ├── docs_sample_for_explain_query_file_defaults.md │ │ ├── docs_sample_for_task_properties_reference.md │ │ ├── empty_yaml.md │ │ ├── example_kanban.md │ │ ├── inheritance_1parent1child.md │ │ ├── inheritance_1parent1child1newroot_after_header.md │ │ ├── inheritance_1parent1child1sibling_emptystring.md │ │ ├── inheritance_1parent2children.md │ │ ├── inheritance_1parent2children1grandchild.md │ │ ├── inheritance_1parent2children1sibling.md │ │ ├── inheritance_1parent2children2grandchildren.md │ │ ├── inheritance_1parent2children2grandchildren1sibling.md │ │ ├── inheritance_1parent2children2grandchildren1sibling_start_with_heading.md │ │ ├── inheritance_2roots_listitem_listitem_task.md │ │ ├── inheritance_2siblings.md │ │ ├── inheritance_listitem_listitem_task.md │ │ ├── inheritance_listitem_task.md │ │ ├── inheritance_listitem_task_siblings.md │ │ ├── inheritance_non_task_child.md │ │ ├── inheritance_rendering_sample.md │ │ ├── inheritance_task_2listitem_3task.md │ │ ├── inheritance_task_listitem.md │ │ ├── inheritance_task_listitem_mixed_grandchildren.md │ │ ├── inheritance_task_listitem_task.md │ │ ├── inheritance_task_mixed_children.md │ │ ├── internal_heading_links.md │ │ ├── jason_properties.md │ │ ├── link_in_file_body.md │ │ ├── link_in_file_body_with_custom_display_text.md │ │ ├── link_in_heading.md │ │ ├── link_in_task_html.md │ │ ├── link_in_task_markdown_link.md │ │ ├── link_in_task_wikilink.md │ │ ├── link_in_yaml.md │ │ ├── link_is_broken.md │ │ ├── links_everywhere.md │ │ ├── list_statuses.md │ │ ├── list_styles.md │ │ ├── multi_line_task_and_list_item.md │ │ ├── multiple_headings.md │ │ ├── no_heading.md │ │ ├── no_yaml.md │ │ ├── non_tasks.md │ │ ├── numbered_list_items_standard.md │ │ ├── numbered_list_items_with_paren.md │ │ ├── one_task.md │ │ ├── query_file_defaults_all_options_false.md │ │ ├── query_file_defaults_all_options_null.md │ │ ├── query_file_defaults_all_options_true.md │ │ ├── query_file_defaults_ignore_global_query.md │ │ ├── query_file_defaults_short_mode.md │ │ ├── query_using_properties.md │ │ ├── yaml_1_alias.md │ │ ├── yaml_2_aliases.md │ │ ├── yaml_all_property_types_empty.md │ │ ├── yaml_all_property_types_populated.md │ │ ├── yaml_capitalised_property_name.md │ │ ├── yaml_complex_example.md │ │ ├── yaml_complex_example_standardised.md │ │ ├── yaml_custom_number_property.md │ │ ├── yaml_tags_field_added_by_obsidian_but_not_populated.md │ │ ├── yaml_tags_had_value_then_was_emptied_by_obsidian.md │ │ ├── yaml_tags_has_multiple_values.md │ │ ├── yaml_tags_is_empty.md │ │ ├── yaml_tags_is_empty_list.md │ │ ├── yaml_tags_with_one_value_on_new_line.md │ │ ├── yaml_tags_with_one_value_on_single_line.md │ │ ├── yaml_tags_with_two_values_on_one_line.md │ │ ├── yaml_tags_with_two_values_on_two_lines.md │ │ └── zero_width.md │ │ └── _meta │ │ ├── templater_scripts │ │ └── convert_test_data_markdown_to_js.js │ │ └── templates │ │ ├── Test Data file.md │ │ ├── convert_test_data_markdown_to_js.md │ │ ├── daily note template - Templater plugin.md │ │ ├── tasks with range of all dates - Templater plugin.md │ │ ├── tasks with range of due dates - Templater plugin.md │ │ ├── tasks with range of scheduled dates - Templater plugin.md │ │ └── tasks with range of start dates - Templater plugin.md └── screenshots │ └── README-resources-screenshots.md ├── scripts ├── Test-TasksInLocalObsidian.ps1 ├── Test-TasksInLocalObsidian.sh ├── copy-docs-snippet-to-other-css-files.sh └── stress_test_obsidian_tasks.py ├── src ├── Api │ ├── TasksApiV1.ts │ ├── createTaskLineModal.ts │ ├── createTaskLineModalHelper.ts │ └── index.ts ├── Commands │ ├── AddQueryFileDefaultsProperties.ts │ ├── CreateOrEdit.ts │ ├── CreateOrEditTaskParser.ts │ ├── ToggleDone.ts │ └── index.ts ├── Config │ ├── CustomStatusModal.ts │ ├── DebugSettings.ts │ ├── Feature.ts │ ├── GlobalFilter.ts │ ├── GlobalQuery.ts │ ├── PresetsSettingsService.ts │ ├── PresetsSettingsUI.scss │ ├── PresetsSettingsUI.ts │ ├── Settings.ts │ ├── SettingsTab.scss │ ├── SettingsTab.ts │ ├── StatusSettings.ts │ ├── Themes │ │ ├── AnuPpuccinThemeCollection.ts │ │ ├── AuraThemeCollection.ts │ │ ├── BorderThemeCollection.ts │ │ ├── EbullientworksThemeCollection.ts │ │ ├── ITSThemeCollection.ts │ │ ├── LYTModeThemeCollection.ts │ │ ├── MinimalThemeCollection.ts │ │ ├── ThingsThemeCollection.ts │ │ └── index.ts │ └── featureConfiguration.json ├── DateTime │ ├── DateAbbreviations.ts │ ├── DateFallback.ts │ ├── DateFieldTypes.ts │ ├── DateParser.ts │ ├── DateRange.ts │ ├── DateTools.ts │ ├── Postponer.ts │ └── TasksDate.ts ├── IQuery.ts ├── Layout │ ├── LayoutHelpers.ts │ ├── QueryLayout.ts │ ├── QueryLayoutOptions.ts │ ├── TaskLayout.ts │ └── TaskLayoutOptions.ts ├── Obsidian │ ├── Cache.ts │ ├── File.ts │ ├── FileParser.ts │ ├── InlineRenderer.ts │ ├── LivePreviewExtension.ts │ ├── TaskModal.ts │ └── TasksEvents.ts ├── Query │ ├── Explain │ │ ├── Explainer.ts │ │ └── Explanation.ts │ ├── Filter │ │ ├── BacklinkField.ts │ │ ├── BlockingField.ts │ │ ├── BooleanDelimiters.ts │ │ ├── BooleanField.ts │ │ ├── BooleanPreprocessor.ts │ │ ├── CancelledDateField.ts │ │ ├── CreatedDateField.ts │ │ ├── DateField.ts │ │ ├── DependsOnField.ts │ │ ├── DescriptionField.ts │ │ ├── DoneDateField.ts │ │ ├── DueDateField.ts │ │ ├── ExcludeSubItemsField.ts │ │ ├── Field.ts │ │ ├── FilenameField.ts │ │ ├── Filter.ts │ │ ├── FilterInstruction.ts │ │ ├── FilterInstructions.ts │ │ ├── FilterInstructionsBasedField.ts │ │ ├── FilterOrErrorMessage.ts │ │ ├── FolderField.ts │ │ ├── FunctionField.ts │ │ ├── HappensDateField.ts │ │ ├── HeadingField.ts │ │ ├── IdField.ts │ │ ├── MultiTextField.ts │ │ ├── PathField.ts │ │ ├── PriorityField.ts │ │ ├── RandomField.ts │ │ ├── RecurrenceField.ts │ │ ├── RecurringField.ts │ │ ├── RootField.ts │ │ ├── ScheduledDateField.ts │ │ ├── StartDateField.ts │ │ ├── StatusField.ts │ │ ├── StatusNameField.ts │ │ ├── StatusTypeField.ts │ │ ├── TagsField.ts │ │ ├── TextField.ts │ │ └── UrgencyField.ts │ ├── FilterParser.ts │ ├── Group │ │ ├── GroupDisplayHeading.ts │ │ ├── GroupDisplayHeadingSelector.ts │ │ ├── Grouper.ts │ │ ├── GroupingTreeNode.ts │ │ ├── TaskGroup.ts │ │ ├── TaskGroupingTree.ts │ │ ├── TaskGroupingTreeStorage.ts │ │ └── TaskGroups.ts │ ├── Matchers │ │ ├── IStringMatcher.ts │ │ ├── RegexMatcher.ts │ │ └── SubstringMatcher.ts │ ├── Query.ts │ ├── QueryComponentOrError.ts │ ├── QueryFileDefaults.ts │ ├── QueryRendererHelper.ts │ ├── QueryResult.ts │ ├── Scanner.ts │ ├── SearchInfo.ts │ ├── Sort │ │ ├── Sort.ts │ │ └── Sorter.ts │ └── Statement.ts ├── README-code-docs.md ├── Renderer │ ├── QueryRenderer.ts │ ├── QueryResultsRenderer.ts │ ├── Renderer.scss │ ├── TaskFieldRenderer.ts │ └── TaskLineRenderer.ts ├── Scripting │ ├── ExpandPlaceholders.ts │ ├── Expression.ts │ ├── Presets.ts │ ├── QueryContext.ts │ ├── TaskExpression.ts │ └── TasksFile.ts ├── Statuses │ ├── Status.ts │ ├── StatusCollection.ts │ ├── StatusConfiguration.ts │ ├── StatusRegistry.ts │ ├── StatusRegistryReport.ts │ ├── StatusSettingsReport.ts │ └── StatusValidator.ts ├── Suggestor │ ├── EditorSuggestorPopup.ts │ ├── Suggestor.ts │ └── index.ts ├── Task │ ├── ListItem.ts │ ├── Occurrence.ts │ ├── OnCompletion.ts │ ├── Priority.ts │ ├── Recurrence.ts │ ├── Task.ts │ ├── TaskDependency.ts │ ├── TaskLocation.ts │ ├── TaskRegularExpressions.ts │ └── Urgency.ts ├── TaskSerializer │ ├── DataviewTaskSerializer.ts │ ├── DefaultTaskSerializer.ts │ └── index.ts ├── i18n │ ├── i18n.ts │ └── locales │ │ ├── be.json │ │ ├── de.json │ │ ├── en.json │ │ ├── ru.json │ │ ├── uk.json │ │ └── zh_cn.json ├── lib │ ├── ExceptionTools.ts │ ├── HTMLCharacterEntities.ts │ ├── Lazy.ts │ ├── LogTasksHelper.ts │ ├── MarkdownTable.ts │ ├── MockDataCreator.ts │ ├── PerformanceTracker.ts │ ├── PriorityTools.ts │ ├── PropertyCategory.ts │ ├── RecordHelpers.ts │ ├── RegExpTools.ts │ ├── StringHelpers.ts │ ├── TemplatingPluginTools.ts │ ├── TypeDetection.ts │ └── logging.ts ├── main.ts ├── styles.scss └── ui │ ├── DateEditor.svelte │ ├── Dependency.scss │ ├── Dependency.svelte │ ├── DependencyHelpers.ts │ ├── EditInstructions │ ├── DateInstructions.ts │ ├── MenuDividerInstruction.ts │ ├── PriorityInstructions.ts │ ├── StatusInstructions.ts │ └── TaskEditingInstruction.ts │ ├── EditTask.scss │ ├── EditTask.svelte │ ├── EditTaskHelpers.ts │ ├── EditableTask.ts │ ├── Menus │ ├── DateMenu.ts │ ├── DatePicker.ts │ ├── PostponeMenu.ts │ ├── PriorityMenu.ts │ ├── StatusMenu.ts │ └── TaskEditingMenu.ts │ ├── RecurrenceEditor.svelte │ └── StatusEditor.svelte ├── svelte.config.js ├── tests ├── Api │ ├── createTaskLineModal.test.ts │ └── executeToggleTaskDoneCommand.test.ts ├── Commands │ ├── CreateOrEditTaskParser.test.ts │ └── ToggleDone.test.ts ├── Config │ ├── DebugSettings.test.ts │ ├── Feature.test.ts │ ├── GlobalFilter.test.ts │ ├── GlobalQuery.test.ts │ ├── PresetsSettingsService.test.ts │ ├── Settings.test.ts │ ├── StatusSettings.test.StatusSettings_verify_default_status_settings.approved.json │ └── StatusSettings.test.ts ├── CustomMatchers │ ├── CustomMatchersForDates.ts │ ├── CustomMatchersForExpressions.ts │ ├── CustomMatchersForFilters.test.ts │ ├── CustomMatchersForFilters.ts │ ├── CustomMatchersForGrouping.ts │ ├── CustomMatchersForRendering.ts │ ├── CustomMatchersForSorting.ts │ ├── CustomMatchersForTaskBuilder.ts │ ├── CustomMatchersForTaskSerializer.ts │ ├── CustomMatchersForTasks.ts │ └── jest.custom_matchers.setup.ts ├── DateTime │ ├── DateAbbreviations.test.ts │ ├── DateFallback.test.ts │ ├── DateParser.test.ts │ ├── DateRange.test.ts │ ├── DateTools.test.ts │ ├── Postponer.test.ts │ └── TasksDate.test.ts ├── DocumentationSamples │ ├── DefaultsDocs │ │ ├── DocsSamplesForDefaults.test.DocsSamplesForDefaults_demo-short-mode_instructions.approved.txt │ │ ├── DocsSamplesForDefaults.test.DocsSamplesForDefaults_demo-short-mode_yaml.approved.yaml │ │ ├── DocsSamplesForDefaults.test.DocsSamplesForDefaults_fake-types.json.approved.json │ │ ├── DocsSamplesForDefaults.test.DocsSamplesForDefaults_meta-bind-widgets-include.approved.md │ │ ├── DocsSamplesForDefaults.test.DocsSamplesForDefaults_meta-bind-widgets-snippet.approved.md │ │ ├── DocsSamplesForDefaults.test.DocsSamplesForDefaults_supported-properties-empty.approved.yaml │ │ ├── DocsSamplesForDefaults.test.DocsSamplesForDefaults_supported-properties-full.approved.yaml │ │ └── DocsSamplesForDefaults.test.ts │ ├── DependencyDocs │ │ ├── DependencySamples.test.blocking_and_blocked_filters_blocking_and_blocked.approved.md │ │ └── DependencySamples.test.ts │ ├── DocsSamplesForStatuses.test.DefaultStatuses_core-statuses.approved.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_core-statuses.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_custom-statuses.approved.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_custom-statuses.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_done-toggles-to-cancelled-with-unconventional-symbols.approved.detailed.mermaid.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_done-toggles-to-cancelled.approved.detailed.mermaid.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_important-cycle.approved.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_important-cycle.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_pro-con-cycle.approved.detailed.mermaid.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_pro-con-cycle.approved.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_pro-con-cycle.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_todo-in_progress-done.approved.detailed.mermaid.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_todo-in_progress-done.approved.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_todo-in_progress-done.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_toggle-does-nothing.approved.md │ ├── DocsSamplesForStatuses.test.DefaultStatuses_toggle-does-nothing.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.Status_Transitions_status-types.approved.md │ ├── DocsSamplesForStatuses.test.Theme_AnuPpuccin_Table.approved.md │ ├── DocsSamplesForStatuses.test.Theme_AnuPpuccin_Table.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.Theme_AnuPpuccin_Tasks.approved.md │ ├── DocsSamplesForStatuses.test.Theme_AnuPpuccin_Text.approved.txt │ ├── DocsSamplesForStatuses.test.Theme_Aura_Table.approved.md │ ├── DocsSamplesForStatuses.test.Theme_Aura_Table.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.Theme_Aura_Tasks.approved.md │ ├── DocsSamplesForStatuses.test.Theme_Aura_Text.approved.txt │ ├── DocsSamplesForStatuses.test.Theme_Border_Table.approved.md │ ├── DocsSamplesForStatuses.test.Theme_Border_Table.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.Theme_Border_Tasks.approved.md │ ├── DocsSamplesForStatuses.test.Theme_Border_Text.approved.txt │ ├── DocsSamplesForStatuses.test.Theme_Ebullientworks_Table.approved.md │ ├── DocsSamplesForStatuses.test.Theme_Ebullientworks_Table.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.Theme_Ebullientworks_Tasks.approved.md │ ├── DocsSamplesForStatuses.test.Theme_Ebullientworks_Text.approved.txt │ ├── DocsSamplesForStatuses.test.Theme_ITS_Table.approved.md │ ├── DocsSamplesForStatuses.test.Theme_ITS_Table.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.Theme_ITS_Tasks.approved.md │ ├── DocsSamplesForStatuses.test.Theme_ITS_Text.approved.txt │ ├── DocsSamplesForStatuses.test.Theme_LYT_Mode_Table.approved.md │ ├── DocsSamplesForStatuses.test.Theme_LYT_Mode_Table.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.Theme_LYT_Mode_Tasks.approved.md │ ├── DocsSamplesForStatuses.test.Theme_LYT_Mode_Text.approved.txt │ ├── DocsSamplesForStatuses.test.Theme_Minimal_Table.approved.md │ ├── DocsSamplesForStatuses.test.Theme_Minimal_Table.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.Theme_Minimal_Tasks.approved.md │ ├── DocsSamplesForStatuses.test.Theme_Minimal_Text.approved.txt │ ├── DocsSamplesForStatuses.test.Theme_Things_Table.approved.md │ ├── DocsSamplesForStatuses.test.Theme_Things_Table.approved.mermaid.md │ ├── DocsSamplesForStatuses.test.Theme_Things_Tasks.approved.md │ ├── DocsSamplesForStatuses.test.Theme_Things_Text.approved.txt │ ├── DocsSamplesForStatuses.test.ts │ ├── UrgencyDocs │ │ ├── DocsSamplesForUrgency.test.UrgencyTable_urgency-html-table.approved.md │ │ └── DocsSamplesForUrgency.test.ts │ ├── ValidateTasks.test.ts │ ├── ValidateTasks.test.validate-tasks_all-emojis-emojis.approved.text │ ├── ValidateTasks.test.validate-tasks_find-unread-emojis.approved.text │ └── ValidateTasks.test.validate-tasks_find_problem_dates.approved.text ├── Integration │ ├── ESBuildConfig.test.ts │ └── MomentIntegration.test.ts ├── Layout │ ├── QueryLayoutOptions.test.ts │ ├── TaskLayout.test.ts │ └── TaskLayoutOptions.test.ts ├── Obsidian │ ├── AllCacheSampleData.ts │ ├── Cache.test.ts │ ├── File.test.replaceTaskWithTasks_issue_1680_-_Cannot_read_properties_of_undefined.approved.txt │ ├── File.test.replaceTaskWithTasks_issue_688_-_block_referenced_task.approved.txt │ ├── File.test.replaceTaskWithTasks_valid_2-task_test.approved.txt │ ├── File.test.ts │ ├── FileParser.test.ts │ ├── ObsidianSearchFacilities.test.ts │ ├── SimulatedFile.ts │ └── __test_data__ │ │ ├── blockquote.json │ │ ├── callout.json │ │ ├── callout_custom.json │ │ ├── callout_labelled.json │ │ ├── callouts_nested_issue_2890_labelled.json │ │ ├── callouts_nested_issue_2890_unlabelled.json │ │ ├── code_block_in_task.json │ │ ├── comments_html_style.json │ │ ├── comments_markdown_style.json │ │ ├── docs_sample_for_explain_query_file_defaults.json │ │ ├── docs_sample_for_task_properties_reference.json │ │ ├── empty_yaml.json │ │ ├── example_kanban.json │ │ ├── inheritance_1parent1child.json │ │ ├── inheritance_1parent1child1newroot_after_header.json │ │ ├── inheritance_1parent1child1sibling_emptystring.json │ │ ├── inheritance_1parent2children.json │ │ ├── inheritance_1parent2children1grandchild.json │ │ ├── inheritance_1parent2children1sibling.json │ │ ├── inheritance_1parent2children2grandchildren.json │ │ ├── inheritance_1parent2children2grandchildren1sibling.json │ │ ├── inheritance_1parent2children2grandchildren1sibling_start_with_heading.json │ │ ├── inheritance_2roots_listitem_listitem_task.json │ │ ├── inheritance_2siblings.json │ │ ├── inheritance_listitem_listitem_task.json │ │ ├── inheritance_listitem_task.json │ │ ├── inheritance_listitem_task_siblings.json │ │ ├── inheritance_non_task_child.json │ │ ├── inheritance_rendering_sample.json │ │ ├── inheritance_task_2listitem_3task.json │ │ ├── inheritance_task_listitem.json │ │ ├── inheritance_task_listitem_mixed_grandchildren.json │ │ ├── inheritance_task_listitem_task.json │ │ ├── inheritance_task_mixed_children.json │ │ ├── internal_heading_links.json │ │ ├── jason_properties.json │ │ ├── link_in_file_body.json │ │ ├── link_in_file_body_with_custom_display_text.json │ │ ├── link_in_heading.json │ │ ├── link_in_task_html.json │ │ ├── link_in_task_markdown_link.json │ │ ├── link_in_task_wikilink.json │ │ ├── link_in_yaml.json │ │ ├── link_is_broken.json │ │ ├── links_everywhere.json │ │ ├── list_statuses.json │ │ ├── list_styles.json │ │ ├── multi_line_task_and_list_item.json │ │ ├── multiple_headings.json │ │ ├── no_heading.json │ │ ├── no_yaml.json │ │ ├── non_tasks.json │ │ ├── numbered_list_items_standard.json │ │ ├── numbered_list_items_with_paren.json │ │ ├── one_task.json │ │ ├── query_file_defaults_all_options_false.json │ │ ├── query_file_defaults_all_options_null.json │ │ ├── query_file_defaults_all_options_true.json │ │ ├── query_file_defaults_ignore_global_query.json │ │ ├── query_file_defaults_short_mode.json │ │ ├── query_using_properties.json │ │ ├── yaml_1_alias.json │ │ ├── yaml_2_aliases.json │ │ ├── yaml_all_property_types_empty.json │ │ ├── yaml_all_property_types_populated.json │ │ ├── yaml_capitalised_property_name.json │ │ ├── yaml_complex_example.json │ │ ├── yaml_complex_example_standardised.json │ │ ├── yaml_custom_number_property.json │ │ ├── yaml_tags_field_added_by_obsidian_but_not_populated.json │ │ ├── yaml_tags_had_value_then_was_emptied_by_obsidian.json │ │ ├── yaml_tags_has_multiple_values.json │ │ ├── yaml_tags_is_empty.json │ │ ├── yaml_tags_is_empty_list.json │ │ ├── yaml_tags_with_one_value_on_new_line.json │ │ ├── yaml_tags_with_one_value_on_single_line.json │ │ ├── yaml_tags_with_two_values_on_one_line.json │ │ ├── yaml_tags_with_two_values_on_two_lines.json │ │ └── zero_width.json ├── Query │ ├── Explain │ │ ├── DocsSamplesForExplain.test.explain_boolean_combinations.approved.explanation.text │ │ ├── DocsSamplesForExplain.test.explain_boolean_combinations.approved.query.text │ │ ├── DocsSamplesForExplain.test.explain_example_global_query.approved.query.text │ │ ├── DocsSamplesForExplain.test.explain_expands_dates.approved.explanation.text │ │ ├── DocsSamplesForExplain.test.explain_expands_dates.approved.query.text │ │ ├── DocsSamplesForExplain.test.explain_explains_task_block_with_global_query_active.approved.explanation.text │ │ ├── DocsSamplesForExplain.test.explain_explains_task_block_with_global_query_active.approved.query.text │ │ ├── DocsSamplesForExplain.test.explain_line_continuation_-_double_slash.approved.explanation.text │ │ ├── DocsSamplesForExplain.test.explain_line_continuation_-_double_slash.approved.query.text │ │ ├── DocsSamplesForExplain.test.explain_line_continuation_-_single_slash.approved.explanation.text │ │ ├── DocsSamplesForExplain.test.explain_line_continuation_-_single_slash.approved.query.text │ │ ├── DocsSamplesForExplain.test.explain_nested_boolean_combinations.approved.explanation.text │ │ ├── DocsSamplesForExplain.test.explain_nested_boolean_combinations.approved.query.text │ │ ├── DocsSamplesForExplain.test.explain_placeholders.approved.explanation.text │ │ ├── DocsSamplesForExplain.test.explain_placeholders.approved.query.text │ │ ├── DocsSamplesForExplain.test.explain_placeholders_error.approved.explanation.text │ │ ├── DocsSamplesForExplain.test.explain_placeholders_error.approved.query.text │ │ ├── DocsSamplesForExplain.test.explain_query_file_defaults_explanation.approved.explanation.text │ │ ├── DocsSamplesForExplain.test.explain_query_file_defaults_explanation.approved.query.text │ │ ├── DocsSamplesForExplain.test.explain_query_file_defaults_file_content.approved.md │ │ ├── DocsSamplesForExplain.test.explain_regular_expression.approved.explanation.text │ │ ├── DocsSamplesForExplain.test.explain_regular_expression.approved.query.text │ │ ├── DocsSamplesForExplain.test.ts │ │ ├── Explainer.test.ts │ │ └── Explanation.test.ts │ ├── Filter │ │ ├── BacklinkField.test.ts │ │ ├── BlockingField.test.ts │ │ ├── BooleanDelimiters.test.ts │ │ ├── BooleanField.test.boolean_query_-_exhaustive_tests_explain.approved.txt │ │ ├── BooleanField.test.boolean_query_-_exhaustive_tests_preprocess_-_rewrite.approved.txt │ │ ├── BooleanField.test.boolean_query_-_exhaustive_tests_preprocess_-_split_line.approved.txt │ │ ├── BooleanField.test.ts │ │ ├── BooleanFieldVerify.ts │ │ ├── BooleanPreprocessor.test.ts │ │ ├── CancelledDateField.test.ts │ │ ├── CreatedDateField.test.ts │ │ ├── DateField.test.ts │ │ ├── DependsOnField.test.ts │ │ ├── DescriptionField.test.ts │ │ ├── DoneDateField.test.ts │ │ ├── DueDateField.test.due_date_approval_tests.approved.md │ │ ├── DueDateField.test.ts │ │ ├── ExcludeSubItemsField.test.ts │ │ ├── Field.test.ts │ │ ├── FilenameField.test.ts │ │ ├── Filter.test.ts │ │ ├── FilterInstruction.test.ts │ │ ├── FolderField.test.ts │ │ ├── FunctionField.test.ts │ │ ├── HappensDateField.test.ts │ │ ├── HeadingField.test.ts │ │ ├── IdField.test.ts │ │ ├── PathField.test.ts │ │ ├── PriorityField.test.ts │ │ ├── RandomField.test.ts │ │ ├── RecurrenceField.test.ts │ │ ├── RecurringField.test.ts │ │ ├── ReferenceDocs │ │ │ └── FilterReference │ │ │ │ ├── DateFieldReference.test.explain_date_reference_filters-date-examples.approved.explanation.text │ │ │ │ ├── DateFieldReference.test.explain_date_reference_last-this-next-week-month-quarter-year.approved.explanation.text │ │ │ │ ├── DateFieldReference.test.explain_date_reference_last-this-next-weekday.approved.explanation.text │ │ │ │ ├── DateFieldReference.test.ts │ │ │ │ ├── filters-date-examples.input.query │ │ │ │ ├── last-this-next-week-month-quarter-year.input.query │ │ │ │ └── last-this-next-weekday.input.query │ │ ├── RootField.test.ts │ │ ├── ScheduledDateField.test.ts │ │ ├── StartDateField.test.ts │ │ ├── StatusField.test.ts │ │ ├── StatusNameField.test.ts │ │ ├── StatusTypeField.test.ts │ │ ├── TagsField.test.ts │ │ ├── TextField.test.explains_regular_expression_searches_bulk_test.approved.txt │ │ ├── TextField.test.ts │ │ └── UrgencyField.test.ts │ ├── FilterParser.test.ts │ ├── Group │ │ ├── Grouper.test.ts │ │ ├── GroupingTreeNode.test.ts │ │ └── TaskGroups.test.ts │ ├── Matchers │ │ ├── RegexMatcher.test.ts │ │ └── SubstringMatcher.test.ts │ ├── Query.test.ts │ ├── QueryComponentOrError.test.ts │ ├── QueryFileDefaults.test.ts │ ├── QueryRendererHelper.test.ts │ ├── QueryResult.test.ts │ ├── Scanner.test.continue_lines_visualise_continue_lines.approved.txt │ ├── Scanner.test.scan_visualise_scanning.approved.txt │ ├── Scanner.test.ts │ ├── SearchInfo.test.ts │ ├── Sort │ │ ├── Sort.test.Sort_save_default_sort_order.approved.text │ │ ├── Sort.test.Sort_visualise_date_impact_on_default_sort_order.approved.txt │ │ ├── Sort.test.Sort_visualise_default_sort_order.approved.txt │ │ ├── Sort.test.ts │ │ └── Sorter.test.ts │ └── Statement.test.ts ├── Renderer │ ├── QueryResultsRenderer.test.QueryResultsRenderer_tests_fully_populated_task.approved.html │ ├── QueryResultsRenderer.test.QueryResultsRenderer_tests_fully_populated_task_-_short_mode.approved.html │ ├── QueryResultsRenderer.test.QueryResultsRenderer_tests_parent-child_items.approved.html │ ├── QueryResultsRenderer.test.QueryResultsRenderer_tests_parent-child_items_hidden.approved.html │ ├── QueryResultsRenderer.test.QueryResultsRenderer_tests_parent-child_items_reverse_sorted.approved.html │ ├── QueryResultsRenderer.test.QueryResultsRenderer_tests_should_render_non_task_check_box_when_global_filter_is_enabled.approved.html │ ├── QueryResultsRenderer.test.QueryResultsRenderer_tests_should_render_tasks_without_their_parents.approved.html │ ├── QueryResultsRenderer.test.ts │ ├── RenderingTestHelpers.ts │ ├── TaskFieldRenderer.test.ts │ ├── TaskLineRenderer.test.Visualise_HTML_Full_task_-_full_mode.approved.html │ ├── TaskLineRenderer.test.Visualise_HTML_Full_task_-_short_mode.approved.html │ ├── TaskLineRenderer.test.Visualise_HTML_Minimal_task_-_full_mode.approved.html │ ├── TaskLineRenderer.test.Visualise_HTML_Minimal_task_-_short_mode.approved.html │ └── TaskLineRenderer.test.ts ├── Scripting │ ├── ExpandPlaceholders.test.ts │ ├── Expression.test.Expression_result.approved.md │ ├── Expression.test.Expression_returns_and_functions.approved.md │ ├── Expression.test.ts │ ├── Includes.test.ts │ ├── QueryContext.test.ts │ ├── QueryProperties.test.query_file_properties.approved.md │ ├── QueryProperties.test.query_search_properties.approved.md │ ├── QueryProperties.test.ts │ ├── ScriptingReference │ │ ├── CustomFiltering │ │ │ ├── CustomFilteringExamples.test.dates_task.cancelled_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.dates_task.cancelled_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.dates_task.created_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.dates_task.created_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.dates_task.done_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.dates_task.done_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.dates_task.due.advanced_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.dates_task.due.advanced_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.dates_task.due_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.dates_task.due_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.dates_task.happens_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.dates_task.happens_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.dates_task.scheduled_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.dates_task.scheduled_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.dates_task.start_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.dates_task.start_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.file_properties_task.file.filename_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.file_properties_task.file.filename_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.file_properties_task.file.folder_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.file_properties_task.file.folder_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.file_properties_task.file.path_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.file_properties_task.file.path_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.file_properties_task.file.root_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.file_properties_task.file.root_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.file_properties_task.heading_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.file_properties_task.heading_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.obsidian_properties_task.file.frontmatter_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.obsidian_properties_task.file.frontmatter_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.other_properties_task.blockLink_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.descriptionWithoutTags_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.description_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.description_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.other_properties_task.isDone_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.isDone_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.other_properties_task.isRecurring_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.isRecurring_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.other_properties_task.lineNumber_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.originalMarkdown_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.priorityName_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.priorityName_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.other_properties_task.priorityNumber_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.priorityNumber_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.other_properties_task.recurrenceRule_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.recurrenceRule_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.other_properties_task.tags.advanced_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.tags.advanced_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.other_properties_task.tags_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.tags_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.other_properties_task.urgency_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.other_properties_task.urgency_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.statuses_task.status.name_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.statuses_task.status.name_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.statuses_task.status.nextSymbol_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.statuses_task.status.nextSymbol_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.statuses_task.status.symbol_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.statuses_task.status.symbol_results.approved.txt │ │ │ ├── CustomFilteringExamples.test.statuses_task.status.type_docs.approved.md │ │ │ ├── CustomFilteringExamples.test.statuses_task.status.type_results.approved.txt │ │ │ └── CustomFilteringExamples.test.ts │ │ ├── CustomGrouping │ │ │ ├── CustomGroupingExamples.test.dates_task.cancelled_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.dates_task.cancelled_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.dates_task.created_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.dates_task.created_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.dates_task.done_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.dates_task.done_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.dates_task.due.advanced_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.dates_task.due.advanced_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.dates_task.due_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.dates_task.due_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.dates_task.happens_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.dates_task.happens_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.dates_task.scheduled_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.dates_task.scheduled_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.dates_task.start_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.dates_task.start_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.dependencies_task.dependsOn_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.dependencies_task.dependsOn_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.dependencies_task.id_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.dependencies_task.id_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.file_properties_task.file.filename_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.file_properties_task.file.filename_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.file_properties_task.file.folder_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.file_properties_task.file.folder_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.file_properties_task.file.path_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.file_properties_task.file.path_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.file_properties_task.file.root_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.file_properties_task.file.root_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.file_properties_task.heading_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.file_properties_task.heading_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.obsidian_properties_task.file.frontmatter_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.obsidian_properties_task.file.frontmatter_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.blockLink_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.blockLink_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.descriptionWithoutTags_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.descriptionWithoutTags_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.description_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.description_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.isDone_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.isDone_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.isRecurring_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.isRecurring_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.lineNumber_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.lineNumber_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.originalMarkdown_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.originalMarkdown_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.priorityName_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.priorityName_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.priorityNumber_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.priorityNumber_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.priority_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.priority_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.recurrenceRule_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.recurrenceRule_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.tags.advanced_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.tags.advanced_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.tags_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.tags_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.other_properties_task.urgency_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.other_properties_task.urgency_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.special_cases_formatting_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.special_cases_formatting_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.statuses_task.status.name_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.statuses_task.status.name_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.statuses_task.status.nextSymbol_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.statuses_task.status.nextSymbol_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.statuses_task.status.symbol_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.statuses_task.status.symbol_results.approved.txt │ │ │ ├── CustomGroupingExamples.test.statuses_task.status.type_docs.approved.md │ │ │ ├── CustomGroupingExamples.test.statuses_task.status.type_results.approved.txt │ │ │ └── CustomGroupingExamples.test.ts │ │ ├── CustomSorting │ │ │ ├── CustomSortingExamples.test.dates_task.cancelled_docs.approved.md │ │ │ ├── CustomSortingExamples.test.dates_task.cancelled_results.approved.txt │ │ │ ├── CustomSortingExamples.test.dates_task.created_docs.approved.md │ │ │ ├── CustomSortingExamples.test.dates_task.created_results.approved.txt │ │ │ ├── CustomSortingExamples.test.dates_task.done_docs.approved.md │ │ │ ├── CustomSortingExamples.test.dates_task.done_results.approved.txt │ │ │ ├── CustomSortingExamples.test.dates_task.due.advanced_docs.approved.md │ │ │ ├── CustomSortingExamples.test.dates_task.due_docs.approved.md │ │ │ ├── CustomSortingExamples.test.dates_task.due_results.approved.txt │ │ │ ├── CustomSortingExamples.test.dates_task.happens_docs.approved.md │ │ │ ├── CustomSortingExamples.test.dates_task.happens_results.approved.txt │ │ │ ├── CustomSortingExamples.test.dates_task.scheduled_docs.approved.md │ │ │ ├── CustomSortingExamples.test.dates_task.scheduled_results.approved.txt │ │ │ ├── CustomSortingExamples.test.dates_task.start_docs.approved.md │ │ │ ├── CustomSortingExamples.test.dates_task.start_results.approved.txt │ │ │ ├── CustomSortingExamples.test.file_properties_task.file.filename_docs.approved.md │ │ │ ├── CustomSortingExamples.test.file_properties_task.file.filename_results.approved.txt │ │ │ ├── CustomSortingExamples.test.file_properties_task.file.folder_docs.approved.md │ │ │ ├── CustomSortingExamples.test.file_properties_task.file.folder_results.approved.txt │ │ │ ├── CustomSortingExamples.test.file_properties_task.file.path_docs.approved.md │ │ │ ├── CustomSortingExamples.test.file_properties_task.file.path_results.approved.txt │ │ │ ├── CustomSortingExamples.test.file_properties_task.file.root_docs.approved.md │ │ │ ├── CustomSortingExamples.test.file_properties_task.file.root_results.approved.txt │ │ │ ├── CustomSortingExamples.test.file_properties_task.heading_docs.approved.md │ │ │ ├── CustomSortingExamples.test.file_properties_task.heading_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.blockLink_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.blockLink_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.descriptionWithoutTags_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.descriptionWithoutTags_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.description_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.description_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.isDone_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.isDone_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.isRecurring_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.isRecurring_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.lineNumber_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.lineNumber_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.originalMarkdown_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.originalMarkdown_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.priorityName_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.priorityName_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.priorityNumber_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.priorityNumber_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.recurrenceRule_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.recurrenceRule_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.tags.advanced_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.tags.advanced_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.tags_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.tags_results.approved.txt │ │ │ ├── CustomSortingExamples.test.other_properties_task.urgency_docs.approved.md │ │ │ ├── CustomSortingExamples.test.other_properties_task.urgency_results.approved.txt │ │ │ ├── CustomSortingExamples.test.statuses_task.status.name_docs.approved.md │ │ │ ├── CustomSortingExamples.test.statuses_task.status.name_results.approved.txt │ │ │ ├── CustomSortingExamples.test.statuses_task.status.nextSymbol_docs.approved.md │ │ │ ├── CustomSortingExamples.test.statuses_task.status.nextSymbol_results.approved.txt │ │ │ ├── CustomSortingExamples.test.statuses_task.status.symbol_docs.approved.md │ │ │ ├── CustomSortingExamples.test.statuses_task.status.symbol_results.approved.txt │ │ │ ├── CustomSortingExamples.test.statuses_task.status.type_docs.approved.md │ │ │ ├── CustomSortingExamples.test.statuses_task.status.type_results.approved.txt │ │ │ └── CustomSortingExamples.test.ts │ │ └── VerifyFunctionFieldSamples.ts │ ├── ScriptingTestHelpers.ts │ ├── TaskExpression.test.ts │ ├── TaskProperties.test.task_date_fields.approved.md │ ├── TaskProperties.test.task_dates.approved.md │ ├── TaskProperties.test.task_dependency_fields.approved.md │ ├── TaskProperties.test.task_file_properties.approved.md │ ├── TaskProperties.test.task_frontmatter_properties.approved.md │ ├── TaskProperties.test.task_other_fields.approved.md │ ├── TaskProperties.test.task_status.approved.md │ ├── TaskProperties.test.ts │ ├── TasksFile.test.TasksFile_-_reading_frontmatter_should_read_yaml_all_property_types_empty.approved.json │ ├── TasksFile.test.TasksFile_-_reading_frontmatter_should_read_yaml_all_property_types_populated.approved.json │ ├── TasksFile.test.TasksFile_-_reading_frontmatter_should_read_yaml_complex_example.approved.json │ ├── TasksFile.test.TasksFile_-_reading_frontmatter_should_read_yaml_complex_example_standardised.approved.json │ └── TasksFile.test.ts ├── Statuses │ ├── Status.test.ts │ ├── StatusRegistry.test.ts │ ├── StatusRegistryReport.test.StatusRegistryReport_should_create_a_report.approved.md │ ├── StatusRegistryReport.test.ts │ ├── StatusSettingsReport.test.StatusSettingsReport_should_create_set_of_sample_task_lines,_excluding_duplicate_and_empty_symbols.approved.md │ ├── StatusSettingsReport.test.StatusSettingsReport_should_create_set_of_sample_task_lines_include_global_filter.approved.md │ ├── StatusSettingsReport.test.StatusSettingsReport_should_include_problems_in_table.approved.md │ ├── StatusSettingsReport.test.StatusSettingsReport_should_tabulate_StatusSettings.approved.md │ ├── StatusSettingsReport.test.ts │ └── StatusValidator.test.ts ├── Suggestor │ ├── Suggestor.test.auto-complete_with__dataview__symbols_offers_basic_completion_options_for_an_empty_task.approved.json │ ├── Suggestor.test.auto-complete_with__dataview__symbols_offers_correct_options_for_partial_due_date_lines.approved.txt │ ├── Suggestor.test.auto-complete_with__dataview__symbols_offers_correct_options_for_partial_recurrence_lines.approved.txt │ ├── Suggestor.test.auto-complete_with__dataview__symbols_show_all_suggested_text.approved.md │ ├── Suggestor.test.auto-complete_with__emoji__symbols_offers_basic_completion_options_for_an_empty_task.approved.json │ ├── Suggestor.test.auto-complete_with__emoji__symbols_offers_correct_options_for_partial_due_date_lines.approved.txt │ ├── Suggestor.test.auto-complete_with__emoji__symbols_offers_correct_options_for_partial_recurrence_lines.approved.txt │ ├── Suggestor.test.auto-complete_with__emoji__symbols_show_all_suggested_text.approved.md │ └── Suggestor.test.ts ├── Task │ ├── ListItem.test.ts │ ├── ListItemHelpers.ts │ ├── OnCompletion.test.ts │ ├── OnCompletion.test.visualise_completion-behaviour_visualise.approved.txt │ ├── Recurrence.test.ts │ ├── Task.test.task_dependencies_blocking_and_blocked.approved.txt │ ├── Task.test.ts │ ├── TaskDependency.test.ts │ ├── TaskLocation.test.ts │ ├── TaskRegularExpressions.test.ts │ └── Urgency.test.ts ├── TaskSerializer │ ├── DataviewTaskSerializer.test.ts │ ├── DefaultTaskSerializer.test.ts │ ├── DocsSamplesForTaskFormats.test.Serializer_Dates_dataview-include.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Dates_dataview-snippet.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Dates_tasksPluginEmoji-include.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Dates_tasksPluginEmoji-snippet.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-include.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-snippet.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Dependencies_tasksPluginEmoji-include.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Dependencies_tasksPluginEmoji-snippet.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Emojis_tabulate-emojis.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_OnCompletion_dataview-include.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_OnCompletion_dataview-snippet.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_OnCompletion_tasksPluginEmoji-include.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_OnCompletion_tasksPluginEmoji-snippet.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-include.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-snippet.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-include.approved.md │ ├── DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-snippet.approved.md │ ├── DocsSamplesForTaskFormats.test.ts │ └── TaskSerializer.test.ts ├── TestingTools │ ├── ApprovalTestHelpers.ts │ ├── ApprovalTestsDemo.test.ApprovalTests_JsonVerify.approved.json │ ├── ApprovalTestsDemo.test.ApprovalTests_SimpleVerify.approved.txt │ ├── ApprovalTestsDemo.test.ts │ ├── AutoApprovingReporter.ts │ ├── CombinationApprovalsAsync.test.CombinationApprovalsAsync_verify2.approved.txt │ ├── CombinationApprovalsAsync.test.CombinationApprovalsAsync_verify3.approved.txt │ ├── CombinationApprovalsAsync.test.CombinationApprovalsAsync_verify4.approved.txt │ ├── CombinationApprovalsAsync.test.CombinationApprovalsAsync_verify5.approved.txt │ ├── CombinationApprovalsAsync.test.CombinationApprovalsAsync_verify6.approved.txt │ ├── CombinationApprovalsAsync.test.CombinationApprovalsAsync_verify7.approved.txt │ ├── CombinationApprovalsAsync.test.CombinationApprovalsAsync_verify8.approved.txt │ ├── CombinationApprovalsAsync.test.CombinationApprovalsAsync_verify9.approved.txt │ ├── CombinationApprovalsAsync.test.demonstrate_async_combination_approvals_documentation_example.approved.txt │ ├── CombinationApprovalsAsync.test.ts │ ├── CombinationApprovalsAsync.ts │ ├── DateTestHelpers.ts │ ├── FilterTestHelpers.ts │ ├── HTMLHelpers.ts │ ├── MockDataHelpers.ts │ ├── RecurrenceBuilder.test.ts │ ├── RecurrenceBuilder.ts │ ├── RunCombinations.ts │ ├── SampleTasks.ts │ ├── SortingTestHelpers.ts │ ├── StatusExamples.ts │ ├── StatusesTestHelpers.ts │ ├── TaskBuilder.test.ts │ ├── TaskBuilder.ts │ ├── TestHelpers.ts │ ├── VerifyMarkdown.ts │ └── VerifyStatuses.ts ├── __mocks__ │ └── obsidian.ts ├── __test_data__ │ └── MockDataForTogglingTasks │ │ ├── 1680_task_line_number_past_end_of_file.json │ │ ├── 688_toggle_block_referenced_line_overwrites_wrong_line.json │ │ └── single_task_valid_data.json ├── global-setup.js ├── lib │ ├── ExceptionTools.test.ts │ ├── HTMLCharacterEntities.test.ts │ ├── Lazy.test.ts │ ├── PriorityTools.test.ts │ ├── PropertyCategory.test.ts │ ├── RecordHelpers.test.ts │ ├── RegExpTools.test.ts │ ├── StringHelpers.test.ts │ ├── TemplatingPluginTools.test.TemplatingPluginTools_date_templating_error_sample_for_docs.approved.text │ ├── TemplatingPluginTools.test.ts │ └── TypeDetection.test.ts └── ui │ ├── DateEditor.test.ts │ ├── DateEditorWrapper.svelte │ ├── DependencyHelpers.test.ts │ ├── EditInstructions │ ├── DateInstructions.test.ts │ ├── MenuDividerInstruction.test.ts │ ├── PriorityInstructions.test.ts │ ├── SetTaskDependenciesInstruction.test.ts │ └── StatusInstructions.test.ts │ ├── EditTask.test.Edit_Modal_HTML_snapshot_tests_should_match_snapshot.approved.html │ ├── EditTask.test.Edit_Modal_HTML_snapshot_tests_should_match_snapshot_-_without_access_keys.approved.html │ ├── EditTask.test.Exhaustive_editing_Edit_and_save_All_inputs.approved.txt │ ├── EditTask.test.ts │ ├── EditTaskHelpers.test.ts │ ├── EditableTask.test.ts │ ├── Menus │ ├── DateMenu.test.ts │ ├── MenuTestingHelpers.ts │ ├── PostponeMenu.test.ts │ ├── PriorityMenu.test.ts │ └── StatusMenu.test.ts │ └── RenderingTestHelpers.ts ├── tsconfig.json ├── versions.json └── yarn.lock /.eslintignore: -------------------------------------------------------------------------------- 1 | main.js 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.css text eol=lf 2 | *.git* text eol=lf 3 | *.html text eol=lf 4 | *.js text eol=lf 5 | *.json text eol=lf 6 | *.jsonc text eol=lf 7 | *.lock text eol=lf 8 | *.md text eol=lf 9 | *.mjs text eol=lf 10 | *.ps1 text eol=lf 11 | *.py text eol=lf 12 | *.sh text eol=lf 13 | *.svelte text eol=lf 14 | *.text text eol=lf 15 | *.ts text eol=lf 16 | *.txt text eol=lf 17 | *.yml text eol=lf 18 | LICENSE text eol=lf 19 | 20 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: ["claremacrae"] 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Ask a question 4 | url: https://github.com/obsidian-tasks-group/obsidian-tasks/discussions/new?category=q-a 5 | about: Ask for help with using the Tasks plugin. In case your question has been asked before, for quicker results you can search existing Discussion Q&As. 6 | -------------------------------------------------------------------------------- /.markdownlint-cli2.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "globs": [ 3 | "!contributing/_meta", 4 | "!docs/_meta", 5 | "!docs/snippets-embedded-in-multiple-pages", 6 | "!docs-snippets", 7 | "!node_modules", 8 | "!tests", 9 | "!resources/sample_vaults/Tasks-Demo/_meta/templates", 10 | "!resources/sample_vaults/Tasks-Demo/Test Data", 11 | "!resources/sample_vaults/Tasks-Demo/Manual Testing/Smoke test Kanban Integration.md" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | trailingComma: 'all', 3 | printWidth: 120, 4 | tabWidth: 4, 5 | useTabs: false, 6 | singleQuote: true, 7 | bracketSpacing: true 8 | }; 9 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "DavidAnson.vscode-markdownlint", 4 | "gamunu.vscode-yarn", 5 | "mrmlnc.vscode-scss", 6 | "Orta.vscode-jest", 7 | "svelte.svelte-vscode" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "npm.packageManager": "yarn", 3 | "svelte.enable-ts-plugin" : true 4 | } 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines Obsidian Tasks 2 | 3 | ## Thank you 4 | 5 | Thank you for wanting to contribute to Obsidian Tasks! 6 | Every contribution is much appreciated! 7 | 8 | ## Extensive documentation for contributors 9 | 10 | Please visit [**tasks-contributing**](https://publish.obsidian.md/tasks-contributing/) for lots of useful information about contributing to Tasks. 11 | 12 | Many thanks! 13 | -------------------------------------------------------------------------------- /contributing/.obsidian/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "showInlineTitle": false, 3 | "showLineNumber": true, 4 | "strictLineBreaks": true, 5 | "promptDelete": false, 6 | "alwaysUpdateLinks": true, 7 | "readableLineLength": false, 8 | "spellcheck": true, 9 | "livePreview": false, 10 | "newFileLocation": "current", 11 | "useTab": false, 12 | "tabSize": 2 13 | } -------------------------------------------------------------------------------- /contributing/.obsidian/appearance.json: -------------------------------------------------------------------------------- 1 | { 2 | "accentColor": "", 3 | "theme": "system", 4 | "enabledCssSnippets": [ 5 | "publish-simulation" 6 | ] 7 | } -------------------------------------------------------------------------------- /contributing/.obsidian/command-palette.json: -------------------------------------------------------------------------------- 1 | { 2 | "pinned": [ 3 | "templater-obsidian:insert-templater" 4 | ] 5 | } -------------------------------------------------------------------------------- /contributing/.obsidian/community-plugins.json: -------------------------------------------------------------------------------- 1 | [ 2 | "note-refactor-obsidian", 3 | "reveal-active-file-button", 4 | "table-editor-obsidian", 5 | "copy-publish-url", 6 | "cmdr", 7 | "vault-name-status-bar", 8 | "templater-obsidian", 9 | "tag-wrangler", 10 | "broken-links", 11 | "obsidian-plugin-update-tracker", 12 | "vault-nickname" 13 | ] -------------------------------------------------------------------------------- /contributing/.obsidian/hotkeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor:toggle-comments": [], 3 | "markdown:toggle-preview": [ 4 | { 5 | "modifiers": [ 6 | "Mod" 7 | ], 8 | "key": "E" 9 | }, 10 | { 11 | "modifiers": [ 12 | "Mod" 13 | ], 14 | "key": "/" 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/broken-links/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.2.2", 3 | "previousVersion": "1.2.1", 4 | "groupBy": 0, 5 | "expandedFolderItems": [], 6 | "expandedFileItems": [], 7 | "expandedLinkItems": [], 8 | "folderSort": 0, 9 | "fileSort": 3, 10 | "linkSort": 3, 11 | "linkFilter": { 12 | "filterString": "", 13 | "matchCase": false 14 | }, 15 | "ignoredFolders": [ 16 | "_meta" 17 | ], 18 | "consolidateLinks": false 19 | } -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/broken-links/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "broken-links", 3 | "name": "Broken Links", 4 | "version": "1.2.2", 5 | "minAppVersion": "1.0.0", 6 | "description": "Find broken links in your vault that don't connect to notes.", 7 | "author": "ipshing", 8 | "authorUrl": "https://github.com/ipshing", 9 | "isDesktopOnly": false, 10 | "fundingUrl": "https://ko-fi.com/ipshing" 11 | } 12 | -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/cmdr/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"cmdr","name":"Commander","version":"0.5.2","minAppVersion":"1.4.0","description":"Customize your workspace by adding commands everywhere, create Macros and supercharge your mobile toolbar.","author":"jsmorabito & phibr0","authorUrl":"https://github.com/phibr0","fundingUrl":"https://ko-fi.com/phibr0","isDesktopOnly":false} -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/copy-publish-url/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "homeNote": "Welcome", 3 | "publishPath": "https://publish.obsidian.md/tasks-contributing/", 4 | "enableContext": true, 5 | "enableOpenUrl": true, 6 | "enableGithub": false, 7 | "remoteUrl": "", 8 | "branch": "main" 9 | } -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/copy-publish-url/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "copy-publish-url", 3 | "name": "Publish and GitHub URL", 4 | "version": "0.4.5", 5 | "minAppVersion": "0.12.15", 6 | "description": "Copy or open the URL of the corresponding note on your Publish site. You can also open its Git commit history on GitHub.", 7 | "author": "kometenstaub", 8 | "authorUrl": "https://github.com/kometenstaub", 9 | "isDesktopOnly": false 10 | } 11 | -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/note-refactor-obsidian/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "includeFirstLineAsNoteHeading": false, 3 | "excludeFirstLineInNote": false, 4 | "headingFormat": "#", 5 | "newFileLocation": 1, 6 | "customFolder": "", 7 | "fileNamePrefix": "", 8 | "transcludeByDefault": false, 9 | "noteLinkTemplate": "", 10 | "refactoredNoteTemplate": "" 11 | } -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/note-refactor-obsidian/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "note-refactor-obsidian", 3 | "name": "Note Refactor", 4 | "version": "1.8.2", 5 | "description": "Extract note content into new notes and split notes", 6 | "isDesktopOnly": false, 7 | "js": "main.js", 8 | "css": "style.css" 9 | } 10 | -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/note-refactor-obsidian/styles.css: -------------------------------------------------------------------------------- 1 | .note-refactor-filename .setting-item-info { 2 | margin-right: 0; 3 | } 4 | 5 | .note-refactor-filename .setting-item-name { 6 | padding-top: 10px; 7 | } -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/obsidian-plugin-update-tracker/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "daysToSuppressNewUpdates": 0, 3 | "dismissedVersionsByPluginId": {}, 4 | "showIconOnMobile": true, 5 | "excludeBetaVersions": true, 6 | "excludeDisabledPlugins": true, 7 | "minUpdateCountToShowIcon": 1, 8 | "hoursBetweenCheckingForUpdates": 0.5 9 | } -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/obsidian-plugin-update-tracker/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"obsidian-plugin-update-tracker","name":"Plugin Update Tracker","version":"1.6.2","minAppVersion":"0.15.0","description":"Know when installed plugins have updates and evaluate the risk of upgrading","author":"Obsidian","authorUrl":"https://github.com/swar8080/obsidian-plugin-update-tracker","isDesktopOnly":false} -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/obsidian-plugin-update-tracker/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/contributing/.obsidian/plugins/obsidian-plugin-update-tracker/styles.css -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/reveal-active-file-button/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "reveal-active-file-button", 3 | "name": "Reveal Active File Button", 4 | "version": "2.0.3", 5 | "minAppVersion": "0.12.11", 6 | "description": "Add a button to the top of the File Explorer, to reveal the active file.", 7 | "author": "Clare Macrae", 8 | "authorUrl": "https://claremacrae.co.uk", 9 | "isDesktopOnly": false 10 | } 11 | -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/table-editor-obsidian/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "formatType": "normal", 3 | "showRibbonIcon": true, 4 | "bindEnter": true, 5 | "bindTab": true 6 | } -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/tag-wrangler/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "tag-wrangler", 3 | "name": "Tag Wrangler", 4 | "author": "PJ Eby", 5 | "authorUrl": "https://github.com/pjeby", 6 | "version": "0.6.4", 7 | "minAppVersion": "1.5.8", 8 | "description": "Rename, merge, toggle, and search tags from the tags view", 9 | "fundingUrl": "https://dirtsimple.org/tips/tag-wrangler", 10 | "isDesktopOnly": false 11 | } 12 | -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/tag-wrangler/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/contributing/.obsidian/plugins/tag-wrangler/styles.css -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/templater-obsidian/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "templater-obsidian", 3 | "name": "Templater", 4 | "version": "2.11.1", 5 | "description": "Create and use templates", 6 | "minAppVersion": "1.5.0", 7 | "author": "SilentVoid", 8 | "authorUrl": "https://github.com/SilentVoid13", 9 | "helpUrl": "https://silentvoid13.github.io/Templater/", 10 | "isDesktopOnly": false 11 | } 12 | -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/vault-name-status-bar/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "vault-name-status-bar", 3 | "name": "Vault name in status bar", 4 | "version": "1.1.1", 5 | "minAppVersion": "1.1.0", 6 | "description": "Vault name in status bar. can be reduced to ::", 7 | "author": "1C0D", 8 | "authorUrl": "https://github.com/1C0D", 9 | "isDesktopOnly": true 10 | } -------------------------------------------------------------------------------- /contributing/.obsidian/plugins/vault-name-status-bar/styles.css: -------------------------------------------------------------------------------- 1 | .status-bar-vault-name { 2 | font-size: 110%; 3 | font-weight: bold; 4 | color: #424cd8; 5 | } -------------------------------------------------------------------------------- /contributing/.obsidian/publish.json: -------------------------------------------------------------------------------- 1 | { 2 | "siteId": "b7ecf6976bea3f73619cb44bfc567c62", 3 | "host": "publish-01.obsidian.md", 4 | "included": [ 5 | "Building", 6 | "Code", 7 | "Contributing", 8 | "Debugging", 9 | "Dependencies", 10 | "Documentation", 11 | "Releases", 12 | "Testing" 13 | ], 14 | "excluded": [ 15 | "_meta" 16 | ] 17 | } -------------------------------------------------------------------------------- /contributing/Architecture Decisions/About Architecture Decisions.md: -------------------------------------------------------------------------------- 1 | --- 2 | publish: true 3 | --- 4 | 5 | # About Architecture Decisions 6 | 7 | ## Introduction 8 | 9 | This a collection of [Architecture decision records (ADRs)](https://github.com/joelparkerhenderson/architecture-decision-record) for the Tasks plugin. 10 | 11 | If a design decision was non-obvious, we will record the thought process here. 12 | 13 | - [[ADR-001 - Nomenclature for Reusable Instruction Blocks Feature]] 14 | -------------------------------------------------------------------------------- /contributing/Building/About Building.md: -------------------------------------------------------------------------------- 1 | # Local setup and workflow for changes to code and tests 2 | 3 | ## Yarn Package Manager 4 | 5 | This project uses the Yarn package manager for Javascript, and several formatting and linting tools. 6 | Below are specific setup instructions for changing code and tests, as well as tips for local development workflow. 7 | 8 | - [[Setting up build environment]] 9 | - [[Local development]] 10 | 11 | ## IDE-specific advice 12 | 13 | - [[Developing with WebStorm]] 14 | -------------------------------------------------------------------------------- /contributing/Code/class-hierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/contributing/Code/class-hierarchy.png -------------------------------------------------------------------------------- /contributing/Code/code-docs-index-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/contributing/Code/code-docs-index-page.png -------------------------------------------------------------------------------- /contributing/Code/webstorm-open-code-docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/contributing/Code/webstorm-open-code-docs.png -------------------------------------------------------------------------------- /contributing/Debugging/Sample flame chart with Timing labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/contributing/Debugging/Sample flame chart with Timing labels.png -------------------------------------------------------------------------------- /contributing/Documentation/How the documentation is generated.md: -------------------------------------------------------------------------------- 1 | # How the documentation is generated 2 | 3 | We use [Obsidian Publish](https://obsidian.md/publish) for our documentation. 4 | You can read more about it at the [Obsidian Help](https://help.obsidian.md/Obsidian+Publish/Introduction+to+Obsidian+Publish). 5 | 6 | The `docs/` folder contains a properly configured Obsidian vault. 7 | 8 | - To view and edit the Tasks help pages, **open `docs/` as a folder in Obsidian** on your machine. 9 | -------------------------------------------------------------------------------- /contributing/Documentation/publish-icon-in-ribbon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/contributing/Documentation/publish-icon-in-ribbon.png -------------------------------------------------------------------------------- /contributing/Releases/About Releases.md: -------------------------------------------------------------------------------- 1 | # Releasing the Tasks Plugin 2 | 3 | - [[How do I make a release]] 4 | -------------------------------------------------------------------------------- /contributing/Testing/How do I smoke-test the Tasks plugin.md: -------------------------------------------------------------------------------- 1 | # How do I smoke-test the Tasks plugin? 2 | 3 | #testing/manual-testing 4 | 5 | Follow the steps in [resources/sample_vaults/Tasks-Demo/Manual Testing/Smoke Testing the Tasks Plugin.md](https://github.com/obsidian-tasks-group/obsidian-tasks/blob/main/resources/sample_vaults/Tasks-Demo/Manual%20Testing/Smoke%20Testing%20the%20Tasks%20Plugin.md). 6 | -------------------------------------------------------------------------------- /contributing/Testing/Jest Test Framework.md: -------------------------------------------------------------------------------- 1 | --- 2 | publish: true 3 | --- 4 | 5 | # Jest Test Framework 6 | 7 | #testing/automated-testing 8 | 9 | The tests use the [ts-jest](https://www.npmjs.com/package/ts-jest) wrapper around the 10 | [jest](https://jestjs.io) test framework. 11 | 12 | The [Expect](https://jestjs.io/docs/expect) page is a good reference for the many jest testing features. 13 | -------------------------------------------------------------------------------- /contributing/Translation/Set up Visual Studio Code for translation work.md: -------------------------------------------------------------------------------- 1 | --- 2 | publish: true 3 | --- 4 | 5 | # Set up Visual Studio Code for translation work 6 | 7 | #i18n 8 | 9 | TODO... 10 | 11 | Contributions welcomed, to populate this page. 12 | -------------------------------------------------------------------------------- /contributing/Translation/Translate a new string.md: -------------------------------------------------------------------------------- 1 | --- 2 | publish: true 3 | --- 4 | 5 | # Translate a new string 6 | 7 | #i18n 8 | 9 | TODO... 10 | -------------------------------------------------------------------------------- /contributing/Translation/WebStorm Easy I18n plugin settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/contributing/Translation/WebStorm Easy I18n plugin settings.png -------------------------------------------------------------------------------- /contributing/User Support/About User Support.md: -------------------------------------------------------------------------------- 1 | --- 2 | publish: true 3 | --- 4 | 5 | # About User Support 6 | 7 | A slowly-growing list of techniques found useful doing user support. 8 | 9 | - [[Getting test vault to Mobile Device]] 10 | -------------------------------------------------------------------------------- /contributing/_meta/templates/file path for redirecting alias.md: -------------------------------------------------------------------------------- 1 | <% tp.file.path(true).replace(/\.md$/, "") %> 2 | -------------------------------------------------------------------------------- /contributing/_meta/templates/image embed.md: -------------------------------------------------------------------------------- 1 | <%-* 2 | const caption = await tp.system.prompt("Caption for image"); 3 | -%> 4 | ![<%* tR += caption %>](../images/insert-filename-here.png) 5 | <%* tR += caption %> 6 | -------------------------------------------------------------------------------- /contributing/_meta/templates/insert 'Released' callout for part of feature.md: -------------------------------------------------------------------------------- 1 | > [!released] 2 | > X (Y and Z) was introduced in Tasks X.Y.Z. 3 | -------------------------------------------------------------------------------- /contributing/_meta/templates/insert 'Released' callout for whole feature.md: -------------------------------------------------------------------------------- 1 | > [!released] 2 | > Introduced in Tasks X.Y.Z. 3 | -------------------------------------------------------------------------------- /contributing/_meta/templates/new documentation file.md: -------------------------------------------------------------------------------- 1 | <% tp.file.include("[[standard frontmatter]]") %> 2 | # <% tp.file.title %> 3 | 4 | <% tp.file.include("[[tags for related pages]]") %> 5 | ## 6 | -------------------------------------------------------------------------------- /contributing/_meta/templates/standard frontmatter.md: -------------------------------------------------------------------------------- 1 | --- 2 | publish: true 3 | --- 4 | -------------------------------------------------------------------------------- /contributing/_meta/templates/tags for related pages.md: -------------------------------------------------------------------------------- 1 | #placeholder-edit-me/insert-one-or-more-tags-here-separated-by-spaces 2 | -------------------------------------------------------------------------------- /contributing/_meta/templates/we are tracking this in issue.md: -------------------------------------------------------------------------------- 1 | <%-* 2 | const issue_number = await tp.system.prompt("GitHub Issue Number"); 3 | -%> 4 | We are tracking this in [issue #<%* tR += issue_number %>](<%* tR += issue_number %>). 5 | -------------------------------------------------------------------------------- /docs-snippets/snippet-callout-titles-bug.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | > [!Warning] Warning: Obsidian bug in versions 1.6.0 to 1.6.3 has caused some tasks not to be found 4 | > See [[Missing tasks in callouts with some Obsidian 1.6.x versions]] for how to ==make Obsidian 1.6.5 fix its metadata cache==, in case it was broken by earlier 1.6.x versions. 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | .sass-cache 3 | .jekyll-cache 4 | .jekyll-metadata 5 | vendor 6 | -------------------------------------------------------------------------------- /docs/.obsidian/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "livePreview": false, 3 | "readableLineLength": false, 4 | "strictLineBreaks": true, 5 | "showLineNumber": true, 6 | "spellcheck": true, 7 | "newFileLocation": "current", 8 | "attachmentFolderPath": "images", 9 | "useTab": false, 10 | "promptDelete": false, 11 | "showInlineTitle": false, 12 | "alwaysUpdateLinks": true, 13 | "useMarkdownLinks": false, 14 | "tabSize": 2 15 | } -------------------------------------------------------------------------------- /docs/.obsidian/appearance.json: -------------------------------------------------------------------------------- 1 | { 2 | "accentColor": "", 3 | "theme": "system", 4 | "enabledCssSnippets": [ 5 | "publish-simulation" 6 | ] 7 | } -------------------------------------------------------------------------------- /docs/.obsidian/command-palette.json: -------------------------------------------------------------------------------- 1 | { 2 | "pinned": [ 3 | "templater-obsidian:insert-templater" 4 | ] 5 | } -------------------------------------------------------------------------------- /docs/.obsidian/community-plugins.json: -------------------------------------------------------------------------------- 1 | [ 2 | "table-editor-obsidian", 3 | "copy-publish-url", 4 | "cmdr", 5 | "reveal-active-file-button", 6 | "templater-obsidian", 7 | "tag-wrangler", 8 | "vault-name-status-bar", 9 | "broken-links", 10 | "obsidian-auto-link-title", 11 | "obsidian-plugin-update-tracker", 12 | "vault-nickname" 13 | ] -------------------------------------------------------------------------------- /docs/.obsidian/hotkeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor:toggle-comments": [], 3 | "markdown:toggle-preview": [ 4 | { 5 | "modifiers": [ 6 | "Mod" 7 | ], 8 | "key": "E" 9 | }, 10 | { 11 | "modifiers": [ 12 | "Mod" 13 | ], 14 | "key": "/" 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /docs/.obsidian/plugins/broken-links/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "broken-links", 3 | "name": "Broken Links", 4 | "version": "1.2.2", 5 | "minAppVersion": "1.0.0", 6 | "description": "Find broken links in your vault that don't connect to notes.", 7 | "author": "ipshing", 8 | "authorUrl": "https://github.com/ipshing", 9 | "isDesktopOnly": false, 10 | "fundingUrl": "https://ko-fi.com/ipshing" 11 | } 12 | -------------------------------------------------------------------------------- /docs/.obsidian/plugins/cmdr/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"cmdr","name":"Commander","version":"0.5.2","minAppVersion":"1.4.0","description":"Customize your workspace by adding commands everywhere, create Macros and supercharge your mobile toolbar.","author":"jsmorabito & phibr0","authorUrl":"https://github.com/phibr0","fundingUrl":"https://ko-fi.com/phibr0","isDesktopOnly":false} -------------------------------------------------------------------------------- /docs/.obsidian/plugins/copy-publish-url/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "homeNote": "Introduction", 3 | "publishPath": "https://publish.obsidian.md/tasks/", 4 | "enableContext": true, 5 | "enableOpenUrl": true, 6 | "enableGithub": false, 7 | "remoteUrl": "/", 8 | "branch": "" 9 | } -------------------------------------------------------------------------------- /docs/.obsidian/plugins/copy-publish-url/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "copy-publish-url", 3 | "name": "Publish and GitHub URL", 4 | "version": "0.4.5", 5 | "minAppVersion": "0.12.15", 6 | "description": "Copy or open the URL of the corresponding note on your Publish site. You can also open its Git commit history on GitHub.", 7 | "author": "kometenstaub", 8 | "authorUrl": "https://github.com/kometenstaub", 9 | "isDesktopOnly": false 10 | } 11 | -------------------------------------------------------------------------------- /docs/.obsidian/plugins/obsidian-auto-link-title/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "regex": {}, 3 | "lineRegex": {}, 4 | "linkRegex": {}, 5 | "linkLineRegex": {}, 6 | "imageRegex": {}, 7 | "shouldReplaceSelection": true, 8 | "enhanceDefaultPaste": true, 9 | "enhanceDropEvents": true, 10 | "websiteBlacklist": "", 11 | "maximumTitleLength": 0, 12 | "useNewScraper": false 13 | } -------------------------------------------------------------------------------- /docs/.obsidian/plugins/obsidian-auto-link-title/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"obsidian-auto-link-title","name":"Auto Link Title","version":"1.5.5","minAppVersion":"0.12.17","description":"This plugin automatically fetches the titles of links from the web","author":"Matt Furden","authorUrl":"https://github.com/zolrath","isDesktopOnly":false} -------------------------------------------------------------------------------- /docs/.obsidian/plugins/obsidian-auto-link-title/styles.css: -------------------------------------------------------------------------------- 1 | /* no styles */ -------------------------------------------------------------------------------- /docs/.obsidian/plugins/obsidian-plugin-update-tracker/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "daysToSuppressNewUpdates": 0, 3 | "dismissedVersionsByPluginId": {}, 4 | "showIconOnMobile": true, 5 | "excludeBetaVersions": true, 6 | "excludeDisabledPlugins": true, 7 | "minUpdateCountToShowIcon": 1, 8 | "hoursBetweenCheckingForUpdates": 0.5 9 | } -------------------------------------------------------------------------------- /docs/.obsidian/plugins/obsidian-plugin-update-tracker/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"obsidian-plugin-update-tracker","name":"Plugin Update Tracker","version":"1.6.2","minAppVersion":"0.15.0","description":"Know when installed plugins have updates and evaluate the risk of upgrading","author":"Obsidian","authorUrl":"https://github.com/swar8080/obsidian-plugin-update-tracker","isDesktopOnly":false} -------------------------------------------------------------------------------- /docs/.obsidian/plugins/obsidian-plugin-update-tracker/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/.obsidian/plugins/obsidian-plugin-update-tracker/styles.css -------------------------------------------------------------------------------- /docs/.obsidian/plugins/reveal-active-file-button/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "reveal-active-file-button", 3 | "name": "Reveal Active File Button", 4 | "version": "2.0.3", 5 | "minAppVersion": "0.12.11", 6 | "description": "Add a button to the top of the File Explorer, to reveal the active file.", 7 | "author": "Clare Macrae", 8 | "authorUrl": "https://claremacrae.co.uk", 9 | "isDesktopOnly": false 10 | } 11 | -------------------------------------------------------------------------------- /docs/.obsidian/plugins/table-editor-obsidian/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "formatType": "normal", 3 | "showRibbonIcon": true, 4 | "bindEnter": true, 5 | "bindTab": true 6 | } -------------------------------------------------------------------------------- /docs/.obsidian/plugins/table-editor-obsidian/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"table-editor-obsidian","name":"Advanced Tables","author":"Tony Grosinger","authorUrl":"https://grosinger.net","description":"Improved table navigation, formatting, manipulation, and formulas","isDesktopOnly":false,"minAppVersion":"1.0.0","version":"0.22.1","js":"main.js","fundingUrl":{"Github Sponsor":"https://github.com/sponsors/tgrosinger","Buy me a Coffee":"https://buymeacoffee.com/tgrosinger","Paypal":"https://paypal.me/tgrosinger"},"donation":"https://buymeacoffee.com/tgrosinger"} -------------------------------------------------------------------------------- /docs/.obsidian/plugins/tag-wrangler/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "tag-wrangler", 3 | "name": "Tag Wrangler", 4 | "author": "PJ Eby", 5 | "authorUrl": "https://github.com/pjeby", 6 | "version": "0.6.4", 7 | "minAppVersion": "1.5.8", 8 | "description": "Rename, merge, toggle, and search tags from the tags view", 9 | "fundingUrl": "https://dirtsimple.org/tips/tag-wrangler", 10 | "isDesktopOnly": false 11 | } 12 | -------------------------------------------------------------------------------- /docs/.obsidian/plugins/tag-wrangler/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/.obsidian/plugins/tag-wrangler/styles.css -------------------------------------------------------------------------------- /docs/.obsidian/plugins/templater-obsidian/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "templater-obsidian", 3 | "name": "Templater", 4 | "version": "2.11.1", 5 | "description": "Create and use templates", 6 | "minAppVersion": "1.5.0", 7 | "author": "SilentVoid", 8 | "authorUrl": "https://github.com/SilentVoid13", 9 | "helpUrl": "https://silentvoid13.github.io/Templater/", 10 | "isDesktopOnly": false 11 | } 12 | -------------------------------------------------------------------------------- /docs/.obsidian/plugins/vault-name-status-bar/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "vault-name-status-bar", 3 | "name": "Vault name in status bar", 4 | "version": "1.1.1", 5 | "minAppVersion": "1.1.0", 6 | "description": "Vault name in status bar. can be reduced to ::", 7 | "author": "1C0D", 8 | "authorUrl": "https://github.com/1C0D", 9 | "isDesktopOnly": true 10 | } -------------------------------------------------------------------------------- /docs/.obsidian/plugins/vault-name-status-bar/styles.css: -------------------------------------------------------------------------------- 1 | .status-bar-vault-name { 2 | font-size: 110%; 3 | font-weight: bold; 4 | color: #424cd8; 5 | } -------------------------------------------------------------------------------- /docs/.obsidian/publish.json: -------------------------------------------------------------------------------- 1 | { 2 | "siteId": "40e62a316a834ff6f495ebf1d122cae6", 3 | "host": "publish-01.obsidian.md", 4 | "included": [ 5 | "Advanced", 6 | "Getting Started", 7 | "How To", 8 | "Installation", 9 | "Other Plugins", 10 | "Queries", 11 | "Quick Reference", 12 | "Reference", 13 | "Getting Started/Statuses", 14 | "Reference/Status Collections", 15 | "images", 16 | "Support and Help" 17 | ], 18 | "excluded": [ 19 | "_meta" 20 | ] 21 | } -------------------------------------------------------------------------------- /docs/Other Plugins/Meta Bind Plugin.md: -------------------------------------------------------------------------------- 1 | --- 2 | publish: true 3 | --- 4 | 5 | # Meta Bind Plugin 6 | 7 | #plugin/meta-bind 8 | 9 | ## Introduction 10 | 11 | The [Meta Bind](https://github.com/mProjectsCode/obsidian-meta-bind-plugin) allows Obsidian users to make their notes interactive with inline input fields, metadata displays, and buttons. 12 | 13 | It can even be used to create [[Make a query user interface|simple user interface to customise Tasks queries]]. 14 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | publish: false 3 | --- 4 | 5 | # Documentation for Obsidian Tasks 6 | 7 | ## Extensive guides for documentors 8 | 9 | Please visit our new [**About the Documentation**](https://publish.obsidian.md/tasks-contributing/Documentation/About+Documentation) site for lots of useful information about contributing to Tasks. 10 | 11 | Many thanks! 12 | -------------------------------------------------------------------------------- /docs/Reference/About Reference.md: -------------------------------------------------------------------------------- 1 | --- 2 | publish: true 3 | aliases: 4 | - Reference/Reference 5 | --- 6 | 7 | # About Reference 8 | 9 | #index-pages 10 | 11 | This section provides reference material - content which is typically too detailed for other parts of the documentation. 12 | 13 | ## Reference section contents 14 | 15 | - [[About Task Formats|Task Formats]] 16 | - [[About Status Collections]] 17 | -------------------------------------------------------------------------------- /docs/Scripting/Presets.md: -------------------------------------------------------------------------------- 1 | --- 2 | publish: true 3 | --- 4 | 5 | # Presets 6 | 7 | #feature/scripting 8 | 9 | ```text 10 | preset my_snippet_from_settings 11 | ``` 12 | 13 | You can only include full lines (valid instructions). 14 | -------------------------------------------------------------------------------- /docs/_meta/templates/file path for redirecting alias.md: -------------------------------------------------------------------------------- 1 | <% tp.file.path(true).replace(/\.md$/, "") %> 2 | -------------------------------------------------------------------------------- /docs/_meta/templates/image embed.md: -------------------------------------------------------------------------------- 1 | <%-* 2 | const caption = await tp.system.prompt("Caption for image"); 3 | -%> 4 | ![<%* tR += caption %>](../images/insert-filename-here.png) 5 | <%* tR += caption %> 6 | -------------------------------------------------------------------------------- /docs/_meta/templates/insert 'Released' callout for part of feature.md: -------------------------------------------------------------------------------- 1 | > [!released] 2 | > X (Y and Z) was introduced in Tasks X.Y.Z. 3 | -------------------------------------------------------------------------------- /docs/_meta/templates/insert 'Released' callout for whole feature.md: -------------------------------------------------------------------------------- 1 | > [!released] 2 | > Introduced in Tasks X.Y.Z. 3 | -------------------------------------------------------------------------------- /docs/_meta/templates/insert line in to What's New.md: -------------------------------------------------------------------------------- 1 | - X.Y.Z: 2 | - 3 | -------------------------------------------------------------------------------- /docs/_meta/templates/new documentation file.md: -------------------------------------------------------------------------------- 1 | <% tp.file.include("[[standard frontmatter]]") %> 2 | # <% tp.file.title %> 3 | 4 | <% tp.file.include("[[tags for related pages]]") %> 5 | ## ... 6 | -------------------------------------------------------------------------------- /docs/_meta/templates/sample mermaid diagram.md: -------------------------------------------------------------------------------- 1 | ```mermaid 2 | flowchart LR 3 | 1[Input Data] 4 | 2[Updated Code] 5 | 3{Output the same?} 6 | 1 --> 2 7 | 2 --> 3 8 | 9 | 4[Pass] 10 | 3---|Yes|4 11 | linkStyle 2 stroke:green 12 | 13 | 5[Fail] 14 | 6[Open diff tool to show changes] 15 | 3---|No|5 16 | 5 --> 6 17 | 18 | linkStyle 3 stroke:red 19 | ``` 20 | -------------------------------------------------------------------------------- /docs/_meta/templates/standard frontmatter.md: -------------------------------------------------------------------------------- 1 | --- 2 | publish: true 3 | --- 4 | -------------------------------------------------------------------------------- /docs/_meta/templates/tags for related pages.md: -------------------------------------------------------------------------------- 1 | #placeholder-edit-me/insert-one-or-more-tags-here-separated-by-spaces 2 | -------------------------------------------------------------------------------- /docs/_meta/templates/we are tracking this in discussion.md: -------------------------------------------------------------------------------- 1 | <%-* 2 | const discussion_number = await tp.system.prompt("GitHub Discussion Number"); 3 | -%> 4 | We are tracking this in [discussion #<%* tR += discussion_number %>](https://github.com/obsidian-tasks-group/obsidian-tasks/discussions/<%* tR += discussion_number %>). 5 | -------------------------------------------------------------------------------- /docs/_meta/templates/we are tracking this in issue.md: -------------------------------------------------------------------------------- 1 | <%-* 2 | const issue_number = await tp.system.prompt("GitHub Issue Number"); 3 | -%> 4 | We are tracking this in [issue #<%* tR += issue_number %>](https://github.com/obsidian-tasks-group/obsidian-tasks/issues/<%* tR += issue_number %>). 5 | -------------------------------------------------------------------------------- /docs/images/acme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/acme.png -------------------------------------------------------------------------------- /docs/images/api-create-taskline-modal-quickadd-capture-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/api-create-taskline-modal-quickadd-capture-example.png -------------------------------------------------------------------------------- /docs/images/auto-suggest-edit-incorrect-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/auto-suggest-edit-incorrect-task.png -------------------------------------------------------------------------------- /docs/images/auto-suggest-menu-after-due-date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/auto-suggest-menu-after-due-date.png -------------------------------------------------------------------------------- /docs/images/auto-suggest-menu-after-due-emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/auto-suggest-menu-after-due-emoji.png -------------------------------------------------------------------------------- /docs/images/auto-suggest-menu-after-priority.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/auto-suggest-menu-after-priority.png -------------------------------------------------------------------------------- /docs/images/auto-suggest-menu-after-repeat-emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/auto-suggest-menu-after-repeat-emoji.png -------------------------------------------------------------------------------- /docs/images/auto-suggest-menu-after-repeat-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/auto-suggest-menu-after-repeat-text.png -------------------------------------------------------------------------------- /docs/images/auto-suggest-menu-initial-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/auto-suggest-menu-initial-menu.png -------------------------------------------------------------------------------- /docs/images/auto-suggest-preview-incorrect-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/auto-suggest-preview-incorrect-task.png -------------------------------------------------------------------------------- /docs/images/backlinks-default-style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/backlinks-default-style.png -------------------------------------------------------------------------------- /docs/images/backlinks-snippet-tasks-plugin-backlinks-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/backlinks-snippet-tasks-plugin-backlinks-icon.png -------------------------------------------------------------------------------- /docs/images/backlinks-snippet-tasks-plugin-backlinks-small-grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/backlinks-snippet-tasks-plugin-backlinks-small-grey.png -------------------------------------------------------------------------------- /docs/images/change-status-context-menu-with-custom-statuses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/change-status-context-menu-with-custom-statuses.png -------------------------------------------------------------------------------- /docs/images/dataview-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/dataview-settings.png -------------------------------------------------------------------------------- /docs/images/date-context-menu-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/date-context-menu-1.png -------------------------------------------------------------------------------- /docs/images/date-context-menu-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/date-context-menu-2.png -------------------------------------------------------------------------------- /docs/images/date-picker-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/date-picker-1.png -------------------------------------------------------------------------------- /docs/images/date-picker-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/date-picker-2.png -------------------------------------------------------------------------------- /docs/images/important_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/important_project.png -------------------------------------------------------------------------------- /docs/images/modal-date-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/modal-date-picker.png -------------------------------------------------------------------------------- /docs/images/modal-showing-date-needed-on-recurring-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/modal-showing-date-needed-on-recurring-task.png -------------------------------------------------------------------------------- /docs/images/modal-showing-new-statuses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/modal-showing-new-statuses.png -------------------------------------------------------------------------------- /docs/images/modal-showing-unparsed-emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/modal-showing-unparsed-emoji.png -------------------------------------------------------------------------------- /docs/images/modal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/modal.png -------------------------------------------------------------------------------- /docs/images/on-completion-after.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/on-completion-after.png -------------------------------------------------------------------------------- /docs/images/on-completion-before.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/on-completion-before.png -------------------------------------------------------------------------------- /docs/images/postpone-future-task-context-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/postpone-future-task-context-menu.png -------------------------------------------------------------------------------- /docs/images/postpone-future-task-default-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/postpone-future-task-default-action.png -------------------------------------------------------------------------------- /docs/images/postpone-overdue-task-context-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/postpone-overdue-task-context-menu.png -------------------------------------------------------------------------------- /docs/images/postpone-overdue-task-default-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/postpone-overdue-task-default-action.png -------------------------------------------------------------------------------- /docs/images/query-file-defaults-file-properties-controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/query-file-defaults-file-properties-controls.png -------------------------------------------------------------------------------- /docs/images/query-file-defaults-meta-bind-controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/query-file-defaults-meta-bind-controls.png -------------------------------------------------------------------------------- /docs/images/quickadd-settings-configure-capture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/quickadd-settings-configure-capture.png -------------------------------------------------------------------------------- /docs/images/quickadd-settings-create-capture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/quickadd-settings-create-capture.png -------------------------------------------------------------------------------- /docs/images/rebuild-vault-metadata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/rebuild-vault-metadata.png -------------------------------------------------------------------------------- /docs/images/reminder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/reminder.png -------------------------------------------------------------------------------- /docs/images/search-headings-for-date-and-tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/search-headings-for-date-and-tag.png -------------------------------------------------------------------------------- /docs/images/settings-auto-suggest-task-content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-auto-suggest-task-content.png -------------------------------------------------------------------------------- /docs/images/settings-core-statuses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-core-statuses.png -------------------------------------------------------------------------------- /docs/images/settings-custom-statuses-add-unknown-statuses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-custom-statuses-add-unknown-statuses.png -------------------------------------------------------------------------------- /docs/images/settings-custom-statuses-added-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-custom-statuses-added-1.png -------------------------------------------------------------------------------- /docs/images/settings-custom-statuses-added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-custom-statuses-added.png -------------------------------------------------------------------------------- /docs/images/settings-custom-statuses-dialog-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-custom-statuses-dialog-1.png -------------------------------------------------------------------------------- /docs/images/settings-custom-statuses-dialog-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-custom-statuses-dialog-2.png -------------------------------------------------------------------------------- /docs/images/settings-custom-statuses-important-loop-added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-custom-statuses-important-loop-added.png -------------------------------------------------------------------------------- /docs/images/settings-custom-statuses-initial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-custom-statuses-initial.png -------------------------------------------------------------------------------- /docs/images/settings-custom-statuses-its-theme-first-few.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-custom-statuses-its-theme-first-few.png -------------------------------------------------------------------------------- /docs/images/settings-custom-statuses-minimal-theme-first-few.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-custom-statuses-minimal-theme-first-few.png -------------------------------------------------------------------------------- /docs/images/settings-custom-statuses-new-empty-status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-custom-statuses-new-empty-status.png -------------------------------------------------------------------------------- /docs/images/settings-global-filter-with-filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-global-filter-with-filter.png -------------------------------------------------------------------------------- /docs/images/settings-global-filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-global-filter.png -------------------------------------------------------------------------------- /docs/images/settings-global-query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-global-query.png -------------------------------------------------------------------------------- /docs/images/settings-optional-date-fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-optional-date-fields.png -------------------------------------------------------------------------------- /docs/images/settings-provide-access-keys-in-dialogs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-provide-access-keys-in-dialogs.png -------------------------------------------------------------------------------- /docs/images/settings-recurrence-location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-recurrence-location.png -------------------------------------------------------------------------------- /docs/images/settings-recurrence-remove-scheduled-date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-recurrence-remove-scheduled-date.png -------------------------------------------------------------------------------- /docs/images/settings-restart-after-change.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-restart-after-change.png -------------------------------------------------------------------------------- /docs/images/settings-statuses-initial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-statuses-initial.png -------------------------------------------------------------------------------- /docs/images/settings-statuses-report-samples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-statuses-report-samples.png -------------------------------------------------------------------------------- /docs/images/settings-statuses-report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-statuses-report.png -------------------------------------------------------------------------------- /docs/images/settings-task-format.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-task-format.png -------------------------------------------------------------------------------- /docs/images/settings-use-filename-for-date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/settings-use-filename-for-date.png -------------------------------------------------------------------------------- /docs/images/show-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/show-tree.png -------------------------------------------------------------------------------- /docs/images/snippet-slrvb-alternate-checkboxes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/snippet-slrvb-alternate-checkboxes.png -------------------------------------------------------------------------------- /docs/images/styling-sample-tasks-default-appearance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/styling-sample-tasks-default-appearance.png -------------------------------------------------------------------------------- /docs/images/styling-sample-tasks-slrvb-custom-checkboxes-modified.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/styling-sample-tasks-slrvb-custom-checkboxes-modified.png -------------------------------------------------------------------------------- /docs/images/styling-sample-tasks-slrvb-custom-checkboxes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/styling-sample-tasks-slrvb-custom-checkboxes.png -------------------------------------------------------------------------------- /docs/images/styling-sample-tasks-style-settings-options-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/styling-sample-tasks-style-settings-options-1.png -------------------------------------------------------------------------------- /docs/images/styling-sample-tasks-style-settings-options-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/styling-sample-tasks-style-settings-options-2.png -------------------------------------------------------------------------------- /docs/images/task-dependencies-blocked-by-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/task-dependencies-blocked-by-example.png -------------------------------------------------------------------------------- /docs/images/task-dependencies-party.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/task-dependencies-party.png -------------------------------------------------------------------------------- /docs/images/task-dependencies-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/task-dependencies-search.png -------------------------------------------------------------------------------- /docs/images/tasks-buttons-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-buttons-alt.png -------------------------------------------------------------------------------- /docs/images/tasks-buttons-default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-buttons-default.png -------------------------------------------------------------------------------- /docs/images/tasks-buttons-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-buttons-gray.png -------------------------------------------------------------------------------- /docs/images/tasks-buttons-stylish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-buttons-stylish.png -------------------------------------------------------------------------------- /docs/images/tasks-buttons-svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-buttons-svg.png -------------------------------------------------------------------------------- /docs/images/tasks-buttons-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-buttons-text.png -------------------------------------------------------------------------------- /docs/images/tasks-plugin-circular-checkboxes-snippet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-plugin-circular-checkboxes-snippet.png -------------------------------------------------------------------------------- /docs/images/tasks-plugin-color-due-today-and-overdue-snippet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-plugin-color-due-today-and-overdue-snippet.png -------------------------------------------------------------------------------- /docs/images/tasks-plugin-complete-example-snippet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-plugin-complete-example-snippet.png -------------------------------------------------------------------------------- /docs/images/tasks-plugin-grid-layout-snippet-query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-plugin-grid-layout-snippet-query.png -------------------------------------------------------------------------------- /docs/images/tasks-plugin-grid-layout-snippet-reading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-plugin-grid-layout-snippet-reading.png -------------------------------------------------------------------------------- /docs/images/tasks-plugin-highlight-specific-tag-green-glow-snippet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-plugin-highlight-specific-tag-green-glow-snippet.png -------------------------------------------------------------------------------- /docs/images/tasks-plugin-highlight-specific-tag-round-red-description-snippet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-plugin-highlight-specific-tag-round-red-description-snippet.png -------------------------------------------------------------------------------- /docs/images/tasks-plugin-priority-as-checkbox-color-snippet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-plugin-priority-as-checkbox-color-snippet.png -------------------------------------------------------------------------------- /docs/images/tasks-plugin-style-status-symbols-snippet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-plugin-style-status-symbols-snippet.png -------------------------------------------------------------------------------- /docs/images/tasks-plugin-style-status-types-snippet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-plugin-style-status-types-snippet.png -------------------------------------------------------------------------------- /docs/images/tasks-plugin-tags-links-recurrence-gray-snippet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks-plugin-tags-links-recurrence-gray-snippet.png -------------------------------------------------------------------------------- /docs/images/tasks_custom_groups_categorise_dates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks_custom_groups_categorise_dates.png -------------------------------------------------------------------------------- /docs/images/tasks_custom_groups_with_formatting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks_custom_groups_with_formatting.png -------------------------------------------------------------------------------- /docs/images/tasks_grouped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks_grouped.png -------------------------------------------------------------------------------- /docs/images/tasks_queries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks_queries.png -------------------------------------------------------------------------------- /docs/images/tasks_ungrouped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/tasks_ungrouped.png -------------------------------------------------------------------------------- /docs/images/theme-anuppuccin-reading-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/theme-anuppuccin-reading-view.png -------------------------------------------------------------------------------- /docs/images/theme-aura-reading-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/theme-aura-reading-view.png -------------------------------------------------------------------------------- /docs/images/theme-border-reading-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/theme-border-reading-view.png -------------------------------------------------------------------------------- /docs/images/theme-ebullientworks-reading-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/theme-ebullientworks-reading-view.png -------------------------------------------------------------------------------- /docs/images/theme-its-reading-view-sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/theme-its-reading-view-sample.png -------------------------------------------------------------------------------- /docs/images/theme-its-reading-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/theme-its-reading-view.png -------------------------------------------------------------------------------- /docs/images/theme-lyt-mode-reading-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/theme-lyt-mode-reading-view.png -------------------------------------------------------------------------------- /docs/images/theme-minimal-reading-view-sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/theme-minimal-reading-view-sample.png -------------------------------------------------------------------------------- /docs/images/theme-minimal-reading-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/theme-minimal-reading-view.png -------------------------------------------------------------------------------- /docs/images/theme-things-reading-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/docs/images/theme-things-reading-view.png -------------------------------------------------------------------------------- /mdsnippets.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/SimonCropp/MarkdownSnippets/master/schema.json", 3 | "ExcludeDirectories": [ "node_modules", "contributing/_meta", "docs/_meta", "coverage", "venv" ], 4 | "Convention": "InPlaceOverwrite", 5 | "TocLevel": 5, 6 | "OmitSnippetLinks": true, 7 | "UrlPrefix": "https://github.com/obsidian-tasks-group/obsidian-tasks/blob/main" 8 | } 9 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.gitignore: -------------------------------------------------------------------------------- 1 | Tasks Plugin - Review and check your Statuses* 2 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "legacyEditor": false, 3 | "livePreview": false, 4 | "useTab": false, 5 | "readableLineLength": false, 6 | "newFileLocation": "current", 7 | "attachmentFolderPath": "./", 8 | "spellcheck": true, 9 | "showInlineTitle": false, 10 | "showLineNumber": true, 11 | "alwaysUpdateLinks": true, 12 | "showUnsupportedFiles": true, 13 | "promptDelete": false 14 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/appearance.json: -------------------------------------------------------------------------------- 1 | { 2 | "theme": "system", 3 | "enabledCssSnippets": [ 4 | "tasks-code-block-blue-border", 5 | "js-engine-code-block-border", 6 | "dataview-block", 7 | "dataview-clare", 8 | "dataview-blocks", 9 | "widen-property-labels" 10 | ], 11 | "accentColor": "" 12 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/command-palette.json: -------------------------------------------------------------------------------- 1 | { 2 | "pinned": [ 3 | "obsidian-tasks-plugin:edit-task", 4 | "obsidian-tasks-plugin:toggle-done", 5 | "quickadd:choice:bc717930-2b21-4755-b373-77df97ec953d" 6 | ] 7 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/broken-links/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "broken-links", 3 | "name": "Broken Links", 4 | "version": "1.2.2", 5 | "minAppVersion": "1.0.0", 6 | "description": "Find broken links in your vault that don't connect to notes.", 7 | "author": "ipshing", 8 | "authorUrl": "https://github.com/ipshing", 9 | "isDesktopOnly": false, 10 | "fundingUrl": "https://ko-fi.com/ipshing" 11 | } 12 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/cmdr/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"cmdr","name":"Commander","version":"0.5.2","minAppVersion":"1.4.0","description":"Customize your workspace by adding commands everywhere, create Macros and supercharge your mobile toolbar.","author":"jsmorabito & phibr0","authorUrl":"https://github.com/phibr0","fundingUrl":"https://ko-fi.com/phibr0","isDesktopOnly":false} -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/dataview/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "dataview", 3 | "name": "Dataview", 4 | "version": "0.5.68", 5 | "minAppVersion": "0.13.11", 6 | "description": "Complex data views for the data-obsessed.", 7 | "author": "Michael Brenan ", 8 | "authorUrl": "https://github.com/blacksmithgu", 9 | "helpUrl": "https://blacksmithgu.github.io/obsidian-dataview/", 10 | "isDesktopOnly": false 11 | } 12 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/helpmate/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "acknowledgedWebUse": true, 3 | "includeObsidianHelp": true, 4 | "obsidianHelpUrl": "https://help.obsidian.md", 5 | "includeObsidianDevHelp": true, 6 | "obsidianDevHelpUrl": "https://docs.obsidian.md/Home", 7 | "includeHelpMateHelp": true, 8 | "userResources": "", 9 | "forceIframe": false 10 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/helpmate/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"helpmate","name":"HelpMate","version":"1.0.11","minAppVersion":"1.7.2","description":"Integrating help systems into the Obsidian UI.","author":"TfTHacker","authorUrl":"https://github.com/TfTHacker/","helpUrl":"https://tfthacker.com/HelpMate","isDesktopOnly":false,"fundingUrl":{"Support my work":"https://tfthacker.com/sponsor"}} -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/hot-reload/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"hot-reload","name":"Hot Reload","author":"PJ Eby","authorUrl":"https://github.com/pjeby","version":"0.1.11","minAppVersion":"0.15.9","description":"Automatically reload in-development plugins when their files are changed","isDesktopOnly":true} -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/js-engine/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "js-engine", 3 | "name": "JS Engine", 4 | "version": "0.3.2", 5 | "minAppVersion": "1.4.0", 6 | "description": "Run JavaScript from within your notes.", 7 | "author": "Moritz Jung", 8 | "authorUrl": "https://www.moritzjung.dev/", 9 | "fundingUrl": "https://github.com/sponsors/mProjectsCode", 10 | "helpUrl": "https://www.moritzjung.dev/obsidian-js-engine-plugin-docs/", 11 | "isDesktopOnly": false 12 | } 13 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/number-headings-obsidian/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "skipTopLevel": true, 3 | "firstLevel": 2, 4 | "maxLevel": 6, 5 | "styleLevel1": "1", 6 | "styleLevelOther": "1", 7 | "auto": false, 8 | "separator": "", 9 | "contents": "", 10 | "skipHeadings": "", 11 | "startAt": "", 12 | "off": false 13 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/number-headings-obsidian/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "number-headings-obsidian", 3 | "name": "Number Headings", 4 | "version": "1.16.0", 5 | "minAppVersion": "1.4.0", 6 | "description": "Automatically number or re-number headings in an Obsidian document", 7 | "author": "Kevin Albrecht (onlyafly@gmail.com)", 8 | "authorUrl": "https://www.kevinalbrecht.com", 9 | "isDesktopOnly": false 10 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/number-headings-obsidian/styles.css: -------------------------------------------------------------------------------- 1 | div.number-headings-button-container > button { 2 | font-weight: normal; 3 | } 4 | 5 | div.number-headings-question { 6 | font-weight: bold; 7 | margin-bottom: 10px; 8 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian-kanban/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "show-checkboxes": false 3 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian-kanban/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "obsidian-kanban", 3 | "name": "Kanban", 4 | "version": "2.0.51", 5 | "minAppVersion": "1.0.0", 6 | "description": "Create markdown-backed Kanban boards in Obsidian.", 7 | "author": "mgmeyers", 8 | "authorUrl": "https://github.com/mgmeyers/obsidian-kanban", 9 | "helpUrl": "https://publish.obsidian.md/kanban/Obsidian+Kanban+Plugin", 10 | "isDesktopOnly": false 11 | } 12 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian-plugin-update-tracker/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "daysToSuppressNewUpdates": 0, 3 | "dismissedVersionsByPluginId": {}, 4 | "showIconOnMobile": true, 5 | "excludeBetaVersions": true, 6 | "excludeDisabledPlugins": true, 7 | "minUpdateCountToShowIcon": 1, 8 | "hoursBetweenCheckingForUpdates": 1.5 9 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian-plugin-update-tracker/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"obsidian-plugin-update-tracker","name":"Plugin Update Tracker","version":"1.6.2","minAppVersion":"0.15.0","description":"Know when installed plugins have updates and evaluate the risk of upgrading","author":"Obsidian","authorUrl":"https://github.com/swar8080/obsidian-plugin-update-tracker","isDesktopOnly":false} -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian-plugin-update-tracker/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian-plugin-update-tracker/styles.css -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian-style-settings/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "checkbox@@check-color": true, 3 | "checkbox@@check-bg": true, 4 | "checkbox@@chst-reg": true, 5 | "checkbox@@chst-chk": true, 6 | "anuppuccin-theme-settings@@anp-custom-checkboxes": true, 7 | "anuppuccin-theme-settings@@anp-speech-bubble": true 8 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian-style-settings/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"obsidian-style-settings","name":"Style Settings","version":"1.0.9","minAppVersion":"0.11.5","description":"Offers controls for adjusting theme, plugin, and snippet CSS variables.","author":"mgmeyers","authorUrl":"https://github.com/mgmeyers/obsidian-style-settings","isDesktopOnly":false} -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian-tasks-plugin/.hotreload: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian-tasks-plugin/.hotreload -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian42-brat/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginList": [ 3 | "pjeby/hot-reload" 4 | ], 5 | "pluginSubListFrozenVersion": [], 6 | "themesList": [], 7 | "updateAtStartup": false, 8 | "updateThemesAtStartup": false, 9 | "enableAfterInstall": true, 10 | "loggingEnabled": false, 11 | "loggingPath": "BRAT-log", 12 | "loggingVerboseEnabled": false, 13 | "debuggingMode": false, 14 | "notificationsEnabled": true 15 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian42-brat/manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"obsidian42-brat","name":"BRAT","version":"1.0.6","minAppVersion":"1.7.2","description":"Easily install a beta version of a plugin for testing.","author":"TfTHacker","authorUrl":"https://github.com/TfTHacker/obsidian42-brat","helpUrl":"https://tfthacker.com/BRAT","isDesktopOnly":false,"fundingUrl":{"Visit my site":"https://tfthacker.com"}} -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/obsidian42-brat/styles.css: -------------------------------------------------------------------------------- 1 | .brat-modal .modal-button-container { 2 | margin-top: 5px !important; 3 | } 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/open-plugin-settings/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginCmdr": [ 3 | { 4 | "id": "obsidian-tasks-plugin", 5 | "name": "Tasks", 6 | "commandName": "Open Tasks plugin settings" 7 | } 8 | ] 9 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/open-plugin-settings/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "open-plugin-settings", 3 | "name": "Open Plugin Settings", 4 | "version": "1.3.2", 5 | "minAppVersion": "0.15.0", 6 | "description": "Create a command to open a specified plugin settings.", 7 | "author": "Mara-Li", 8 | "authorUrl": "https://www.github.com/lisandra-dev", 9 | "fundingUrl": "https://ko-fi.com/lisandra_dev", 10 | "isDesktopOnly": false 11 | } 12 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/quickadd/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "quickadd", 3 | "name": "QuickAdd", 4 | "version": "1.13.2", 5 | "minAppVersion": "1.6.0", 6 | "description": "Quickly add new pages or content to your vault.", 7 | "author": "Christian B. B. Houmann", 8 | "authorUrl": "https://bagerbach.com", 9 | "fundingUrl": "https://www.buymeacoffee.com/chhoumann", 10 | "helpUrl": "https://quickadd.obsidian.guide/docs/", 11 | "isDesktopOnly": false 12 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/reveal-active-file-button/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "reveal-active-file-button", 3 | "name": "Reveal Active File Button", 4 | "version": "2.0.3", 5 | "minAppVersion": "0.12.11", 6 | "description": "Add a button to the top of the File Explorer, to reveal the active file.", 7 | "author": "Clare Macrae", 8 | "authorUrl": "https://claremacrae.co.uk", 9 | "isDesktopOnly": false 10 | } 11 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/table-editor-obsidian/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "formatType": "normal", 3 | "showRibbonIcon": true, 4 | "bindEnter": true, 5 | "bindTab": true 6 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/templater-obsidian/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "templater-obsidian", 3 | "name": "Templater", 4 | "version": "2.11.1", 5 | "description": "Create and use templates", 6 | "minAppVersion": "1.5.0", 7 | "author": "SilentVoid", 8 | "authorUrl": "https://github.com/SilentVoid13", 9 | "helpUrl": "https://silentvoid13.github.io/Templater/", 10 | "isDesktopOnly": false 11 | } 12 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/vault-name-status-bar/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "vault-name-status-bar", 3 | "name": "Vault name in status bar", 4 | "version": "1.1.1", 5 | "minAppVersion": "1.1.0", 6 | "description": "Vault name in status bar. can be reduced to ::", 7 | "author": "1C0D", 8 | "authorUrl": "https://github.com/1C0D", 9 | "isDesktopOnly": true 10 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/plugins/vault-name-status-bar/styles.css: -------------------------------------------------------------------------------- 1 | .status-bar-vault-name { 2 | font-size: 110%; 3 | font-weight: bold; 4 | color: #424cd8; 5 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/dataview-blocks.css: -------------------------------------------------------------------------------- 1 | :not(.callout-content) > .block-language-dataview { 2 | background-color: #fcfcfc; 3 | padding: 5px 5px; 4 | border: 2px solid #ba55ff; 5 | border-radius: 5px; 6 | margin: 1em 0; 7 | } 8 | 9 | :not(.callout-content) > .block-language-dataviewjs { 10 | background-color: #fcfcfc; 11 | padding: 5px 5px; 12 | border: 2px solid #ff55f1; 13 | border-radius: 5px; 14 | margin: 1em 0; 15 | } 16 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/js-engine-code-block-border.css: -------------------------------------------------------------------------------- 1 | /* Make JS Engine code blocks stand out visually */ 2 | :not(.callout-content) > .block-language-js-engine { 3 | padding: 5px 15px; 4 | border: 2px solid var(--color-red); 5 | border-radius: 5px; 6 | margin: 1em 0; 7 | } 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-buttons-alt.css: -------------------------------------------------------------------------------- 1 | .tasks-edit::after { 2 | content: '\1f589'; 3 | } 4 | 5 | .tasks-postpone::after { 6 | content: '\2bee'; 7 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-buttons-gray.css: -------------------------------------------------------------------------------- 1 | .tasks-edit, .tasks-postpone { 2 | filter: grayscale(100%); 3 | } 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-buttons-stylish.css: -------------------------------------------------------------------------------- 1 | .tasks-edit::after { 2 | content: '\1f58b'; 3 | } 4 | 5 | .tasks-postpone::after { 6 | content: '\1f4a4'; 7 | } 8 | 9 | .tasks-edit, .tasks-postpone { 10 | background: linear-gradient(to bottom, #ffda89, #ffa07a); 11 | padding: 2px 5px; 12 | border-radius: var(--radius-s); 13 | box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3); 14 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-buttons-text.css: -------------------------------------------------------------------------------- 1 | .tasks-edit, .tasks-postpone { 2 | font-size: var(--font-ui-smaller); 3 | font-variant: small-caps; 4 | font-weight: bold; 5 | margin-left: 1em; 6 | } 7 | 8 | .tasks-edit::after { 9 | content: '[edit]'; 10 | } 11 | 12 | .tasks-postpone::after { 13 | content: '[move]'; 14 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-code-block-blue-border.css: -------------------------------------------------------------------------------- 1 | /* Make Tasks code blocks stand out visually, to distinguish them from Task lists in Reading mode */ 2 | :not(.callout-content) > .block-language-tasks { 3 | padding: 5px 15px; 4 | border: 2px solid var(--color-blue); 5 | border-radius: 5px; 6 | margin: 1em 0; 7 | } 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-backlinks-small-grey.css: -------------------------------------------------------------------------------- 1 | /* By David Phillips (autonia) https://github.com/autonia 2 | From https://github.com/obsidian-tasks-group/obsidian-tasks/discussions/622#discussioncomment-2649299 3 | */ 4 | .tasks-backlink { 5 | font-size: 0.7em; 6 | opacity: 0.6; 7 | filter: grayscale(60%); 8 | } 9 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-circular-checkboxes.css: -------------------------------------------------------------------------------- 1 | ul > li.plugin-tasks-list-item .task-list-item-checkbox { 2 | margin-inline-start: 0; 3 | margin: 5px 2px; 4 | border-radius: 50%; 5 | } 6 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-explain-text-blue.css: -------------------------------------------------------------------------------- 1 | /* Make the Tasks plugin's 'explain' output stand out in blue */ 2 | .plugin-tasks-query-explanation { 3 | color: var(--color-blue); 4 | } 5 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-highlight-specific-tag-green-glow.css: -------------------------------------------------------------------------------- 1 | a.tag[data-tag-name="#task/atHome"] { 2 | box-shadow: 0 0 5px green; 3 | } 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-highlight-specific-tag-round-red-description.css: -------------------------------------------------------------------------------- 1 | .task-description span:has(.tag[data-tag-name="#task/strategic"]) { 2 | background: #ffbfcc; 3 | border-radius: 10px; 4 | padding: 2px 8px; 5 | } 6 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-style-status-symbols.css: -------------------------------------------------------------------------------- 1 | li.task-list-item[data-task="/"] .task-list-item-checkbox { 2 | box-shadow: 0 0 10px green !important; 3 | } 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-style-status-types.css: -------------------------------------------------------------------------------- 1 | li.task-list-item[data-task-status-type="TODO"] .task-list-item-checkbox, 2 | li.task-list-item[data-task-status-type="IN_PROGRESS"] .task-list-item-checkbox { 3 | box-shadow: 0 0 10px green !important; 4 | } 5 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-tags-links-recurrence-gray.css: -------------------------------------------------------------------------------- 1 | .tasks-list-text a.tag { 2 | color: var(--list-marker-color); 3 | } 4 | 5 | .tasks-backlink a.internal-link { 6 | color: var(--list-marker-color); 7 | } 8 | 9 | .task-recurring { 10 | color: var(--list-marker-color); 11 | } 12 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/snippets/widen-property-labels.css: -------------------------------------------------------------------------------- 1 | /* Make property labels wider, to fit the names of Tasks-specific properties */ 2 | .metadata-content { 3 | --metadata-label-width: 14em; 4 | } 5 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/themes/AnuPpuccin/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AnuPpuccin", 3 | "version": "1.5.0", 4 | "minAppVersion": "1.6.0", 5 | "author": "Anubis", 6 | "authorUrl": "https://github.com/AnubisNekhet" 7 | } 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/themes/Aura/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Aura", 3 | "minAppVersion": "1.6.0", 4 | "author": "Ashwin Jadhav", 5 | "authorUrl": "https://github.com/ashwinjadhav818/", 6 | "version": "2.3.3" 7 | } 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/themes/Border/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Border", 3 | "version": "1.12.11", 4 | "minAppVersion": "0.16.0", 5 | "author": "Akifyss", 6 | "authorUrl": "https://github.com/Akifyss" 7 | } 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/themes/Ebullientworks/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ebullientworks", 3 | "version": "1.0.2", 4 | "minAppVersion": "0.16.0", 5 | "author": "Ebullientworks", 6 | "authorUrl": "https://github.com/ebullient", 7 | "fundingUrl": "https://www.buymeacoffee.com/ebullient" 8 | } 9 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/themes/ITS Theme/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ITS Theme", 3 | "version": "1.3.38", 4 | "minAppVersion": "0.16.0", 5 | "author": "SlRvb", 6 | "authorUrl": "https://github.com/SlRvb" 7 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/themes/LYT Mode/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LYT Mode", 3 | "version": "1.9.1", 4 | "minAppVersion": "1.0", 5 | "author": "Nick Milo" 6 | } 7 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/themes/Minimal/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Minimal", 3 | "version": "8.0.0", 4 | "minAppVersion": "1.9.0", 5 | "author": "@kepano", 6 | "authorUrl": "https://twitter.com/kepano", 7 | "fundingUrl": "https://www.buymeacoffee.com/kepano" 8 | } 9 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/themes/Prism/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Prism", 3 | "version": "3.6.0", 4 | "minAppVersion": "1.6.0", 5 | "author": "Damian Korcz", 6 | "authorUrl": "https://github.com/damiankorcz", 7 | "fundingUrl": "https://www.buymeacoffee.com/DamianKorcz" 8 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/.obsidian/themes/Things/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Things", 3 | "version": "2.1.20", 4 | "minAppVersion": "1.0.0", 5 | "author": "@colineckert", 6 | "authorUrl": "https://twitter.com/colineckert" 7 | } 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Formats/All Formats Parsing.md: -------------------------------------------------------------------------------- 1 | # All Formats Parsing 2 | 3 | ## Tasks Format 4 | 5 | - [/] #task This was Tasks format ⏫ 🔁 every day 🛫 2023-04-05 ⏳ 2023-04-06 📅 2023-04-07 6 | 7 | ## Dataview format 8 | 9 | - [/] #task This was dataview [priority:: high] [repeat:: every day] [start:: 2023-04-05] [scheduled:: 2023-04-06] [due:: 2023-04-07] 10 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Functions/Fields for Functions - Demo.md: -------------------------------------------------------------------------------- 1 | # Fields for Functions - Demo 2 | 3 | ## Status 4 | 5 | ```tasks 6 | group by function task.status.name 7 | group by function task.status.symbol 8 | group by function task.status.nextSymbol 9 | group by function task.status.type 10 | 11 | limit 10 12 | ``` 13 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/How To/Find tasks in notes with particular tag.md: -------------------------------------------------------------------------------- 1 | # Find tasks in notes with particular tag 2 | 3 | Suppose we wanted to find all tasks in notes that had a particular tag `#examples` in the frontmatter. 4 | 5 | Since Tasks X.Y.Z, this is now possible in Tasks queries: 6 | 7 | ```tasks 8 | filter by function task.file.property('tags').includes('#examples') 9 | ``` 10 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Important Project.md: -------------------------------------------------------------------------------- 1 | # Important Project 2 | 3 | - [ ] #task Something about interwebs 📅 2021-11-22 4 | - [x] #task Something about s.th. ⏳ 2021-11-21 ✅ 2021-11-21 5 | 6 | ## Trash is important 7 | 8 | - [ ] #task Also: take out the trash! 9 | - [ ] #task Throw the trash away 10 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Edit Task Modal samples.md: -------------------------------------------------------------------------------- 1 | # Edit Task Modal samples 2 | 3 | ## Task to edit 4 | 5 | - [/] #task Task with every field set 🆔 y3yryw ⛔ c5mw2c,2ypqea 🔺 🔁 every April and December on the 1st and 24th ➕ 2024-04-27 🛫 2024-04-28 ⏳ 2024-04-29 📅 2024-04-30 6 | 7 | ## Tasks for testing dependencies 8 | 9 | - [ ] #task Sample 1 🆔 c5mw2c 10 | - [ ] #task Sample 2 🆔 2ypqea 11 | - [ ] #task Sample 3 ⛔ y3yryw 12 | - [ ] #task Sample 4 ⛔ y3yryw 13 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Frontmatter/Project 1.md: -------------------------------------------------------------------------------- 1 | --- 2 | project: proj1 3 | --- 4 | 5 | # Project 1 6 | 7 | - [ ] #task Task in 'Project 1' 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Frontmatter/Project 2.md: -------------------------------------------------------------------------------- 1 | --- 2 | project: proj2 3 | --- 4 | 5 | # Project 2 6 | 7 | - [ ] #task Task in 'Project 2' [[#Project 2]] 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Internal Heading Links/Internal Heading Links.md: -------------------------------------------------------------------------------- 1 | # Internal Heading Links 2 | 3 | ```tasks 4 | filename includes internal_heading_links 5 | 6 | sort by function task.lineNumber 7 | 8 | group by heading 9 | 10 | hide backlinks 11 | ``` 12 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Internal Heading Links/Other File.md: -------------------------------------------------------------------------------- 1 | # Other File 2 | 3 | ## Some Header 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/README - Manual Testing.md: -------------------------------------------------------------------------------- 1 | # README - Manual Testing 2 | 3 | ## Purpose 4 | 5 | This folder contains files that are useful for: 6 | 7 | - verifying the existence of reported bugs 8 | - manual testing of proposed fixes for the bugs 9 | 10 | ## File naming 11 | 12 | Where files are for testing individual issues, PRs or discussions, please name the file like this: 13 | 14 | `[issue number] - [brief summary]` 15 | 16 | Thank you. 17 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Scheduled Date Implied/Nov 05, 2022.md: -------------------------------------------------------------------------------- 1 | # Nov 05, 2022 2 | 3 | - [ ] #task Scheduled date read from filename which **exactly matches** the custom format in settings - `MMM DD, YYYY` 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Scheduled Date Implied/Scheduled Implied - 2022-11-05.md: -------------------------------------------------------------------------------- 1 | # Scheduled Implied - 2022-11-05 2 | 3 | - [ ] #task Scheduled date read from filename which **contains** the built-in format `YYYY-MM-DD` 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Scheduled Date Implied/Scheduled Implied - 20221105.md: -------------------------------------------------------------------------------- 1 | # Scheduled Implied - 20221105 2 | 3 | - [ ] #task Scheduled date read from filename which **contains** the built-in format `YYYY-MM-DD` 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Scheduled Date Implied/Scheduled Implied - Nov 05, 2022.md: -------------------------------------------------------------------------------- 1 | # Scheduled Implied - Nov 05, 2022 2 | 3 | - [ ] #task No date scheduled - should **not** use date in filename as scheduled date, as the date in the filename is **only a substring** of the custom format in settings - `MMM DD, YYYY` 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Scheduled Date Implied/Search for Scheduled Dates.md: -------------------------------------------------------------------------------- 1 | # Search for Scheduled Dates 2 | 3 | Look at the backlinks on the tasks, to see their filenames, to understand the behaviour. 4 | 5 | None of these tasks has any ⏳ scheduled date value. 6 | 7 | ```tasks 8 | folder includes {{query.file.folder}} 9 | group by function task.scheduled.moment ? '✅ Has scheduled date from filename' : '❌ No scheduled date from filename' 10 | group by scheduled 11 | ``` 12 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Seeing the Query as HTML/HTML from Query - block-language-tasks selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/resources/sample_vaults/Tasks-Demo/Manual Testing/Seeing the Query as HTML/HTML from Query - block-language-tasks selected.png -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Seeing the Query as HTML/HTML from Query - hover over block-language-tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/resources/sample_vaults/Tasks-Demo/Manual Testing/Seeing the Query as HTML/HTML from Query - hover over block-language-tasks.png -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Seeing the Query as HTML/HTML from Query - select an element.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obsidian-tasks-group/obsidian-tasks/a29e7f900193571cee1b0982be21978784512fc5/resources/sample_vaults/Tasks-Demo/Manual Testing/Seeing the Query as HTML/HTML from Query - select an element.png -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Seeing the Query as HTML/HTML from Query - short mode - empty list.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
    4 |
    0 of 1 task
    5 |
    6 |
    7 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Smoke test Kanban Integration.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | kanban-plugin: board 4 | 5 | --- 6 | 7 | ## To Do 8 | 9 | - [ ] #task Should show Tasks context menu 10 | - [ ] Should not show Tasks context menu 11 | 12 | 13 | 14 | 15 | %% kanban:settings 16 | ``` 17 | {"kanban-plugin":"board","list-collapse":[false]} 18 | ``` 19 | %% 20 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Manual Testing/Task Toggling Scenarios/Embed File in to Note - File to Embed.md: -------------------------------------------------------------------------------- 1 | # Embed File in to Note - File to Embed 2 | 3 | ## Category 3 4 | 5 | - [ ] #task task3a 6 | - [ ] #task task3b 7 | - [ ] #task task3c 8 | 9 | ## Category 4 10 | 11 | - [ ] #task task4a 12 | - [ ] #task task4b - has section and task number 0 when shown embedded in another file ^fromseparatefile 13 | - [ ] #task task4c 14 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Settings Files/data 1.22.0.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalFilter": "#task", 3 | "removeGlobalFilter": true, 4 | "setDoneDate": true, 5 | "autoSuggestInEditor": true, 6 | "autoSuggestMinMatch": 0, 7 | "autoSuggestMaxItems": 6, 8 | "provideAccessKeys": true, 9 | "useFilenameAsScheduledDate": true, 10 | "filenameAsDateFolders": [], 11 | "features": { 12 | "INTERNAL_TESTING_ENABLED_BY_DEFAULT": true 13 | } 14 | } -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/.gitignore: -------------------------------------------------------------------------------- 1 | tasks-stress-test* 2 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 1.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 1 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 100.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 100 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 1000.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 1000 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 150.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 150 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 200.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 200 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 2000.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 2000 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 25.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 25 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 250.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 250 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 3000.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 3000 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 4000.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 4000 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 50.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 50 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 500.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 500 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 5000.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 5000 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Stress Test/limit 750.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2024-03-23 15:14 3 | tags: 4 | aliases: 5 | - 6 | --- 7 | 8 | # limit 750 9 | 10 | ```tasks 11 | folder includes {{query.file.folder}} 12 | sort by path 13 | 14 | # Use the filename as an instruction: 15 | {{query.file.filenameWithoutExtension}} 16 | 17 | #explain 18 | ``` 19 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Styling/Styling the Backlinks.md: -------------------------------------------------------------------------------- 1 | # Styling the Backlinks 2 | 3 | Here is an example task block that does not hide any components of the output. 4 | 5 | It shows that the the backlink (the file and heading names) can quite dominate the results. 6 | 7 | ```tasks 8 | not done 9 | description includes trash 10 | ``` 11 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Tasks.md: -------------------------------------------------------------------------------- 1 | # Tasks 2 | 3 | ## All 4 | 5 | ```tasks 6 | ``` 7 | 8 | ## Open tasks from Important Project 9 | 10 | ```tasks 11 | not done 12 | path includes Important Project 13 | ``` 14 | 15 | ## Due before 6th of December 16 | 17 | ```tasks 18 | not done 19 | due before 2021-12-06 20 | ``` 21 | 22 | ## Short Mode 23 | 24 | ```tasks 25 | not done 26 | due before 2021-12-06 27 | short mode 28 | ``` 29 | 30 | ## No match 31 | 32 | ```tasks 33 | not done 34 | done after 2021-11-21 35 | ``` 36 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/blockquote.md: -------------------------------------------------------------------------------- 1 | # blockquote 2 | 3 | > - [ ] #task Task in 'blockquote' 4 | > - [ ] #task Task indented in 'blockquote' 5 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/callout.md: -------------------------------------------------------------------------------- 1 | # callout 2 | 3 | > [!todo] 4 | > - [ ] #task Task in 'callout' 5 | > - [ ] #task Task indented in 'callout' 6 | 7 | ```tasks 8 | not done 9 | path includes {{query.file.path}} 10 | ``` 11 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/callout_custom.md: -------------------------------------------------------------------------------- 1 | # callout_custom 2 | 3 | > [!callout_custom] 4 | > - [ ] #task Task in 'callout_custom' 5 | > - [ ] #task Task indented in 'callout_custom' 6 | 7 | ```tasks 8 | not done 9 | path includes {{query.file.path}} 10 | ``` 11 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/callout_labelled.md: -------------------------------------------------------------------------------- 1 | # callout_labelled 2 | 3 | > [!todo] callout_labelled 4 | > - [ ] #task Task in 'callout_labelled' 5 | > - [ ] #task Task indented in 'callout_labelled' 6 | 7 | ```tasks 8 | not done 9 | path includes {{query.file.path}} 10 | ``` 11 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/callouts_nested_issue_2890_labelled.md: -------------------------------------------------------------------------------- 1 | > [!Calendar]+ MONTH 2 | >> [!Check]+ GROUP 3 | >>> [!Attention]+ Correction TITLE 4 | >>> Some stuff goes here 5 | >>> - [ ] #task Correction1 6 | >>> - [ ] #task Correction2 7 | >>> - [ ] #task Correction3 8 | >>> - [ ] #task Correction4 9 | 10 | ```tasks 11 | not done 12 | path includes {{query.file.path}} 13 | ``` 14 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/callouts_nested_issue_2890_unlabelled.md: -------------------------------------------------------------------------------- 1 | > [!Calendar]+ 2 | >> [!Check]+ 3 | >>> [!Attention]+ 4 | >>> Some stuff goes here 5 | >>> - [ ] #task Correction1 6 | >>> - [ ] #task Correction2 7 | >>> - [ ] #task Correction3 8 | >>> - [ ] #task Correction4 9 | 10 | ```tasks 11 | not done 12 | path includes {{query.file.path}} 13 | ``` 14 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/docs_sample_for_explain_query_file_defaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | TQ_extra_instructions: |- 3 | folder includes {{query.file.folder}} 4 | not done 5 | TQ_short_mode: true 6 | TQ_show_tree: true 7 | --- 8 | 9 | ```tasks 10 | explain 11 | ``` 12 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/empty_yaml.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | # empty_yaml 5 | 6 | - [ ] #task Task in 'empty_yaml' 7 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/example_kanban.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | kanban-plugin: basic 4 | 5 | --- 6 | 7 | ## Backlog 8 | 9 | - [ ] #task Task in 'example_kanban' 10 | 11 | 12 | %% kanban:settings 13 | ``` 14 | {"kanban-plugin":"basic"} 15 | ``` 16 | %% 17 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_1parent1child.md: -------------------------------------------------------------------------------- 1 | - [ ] #task parent 2 | - [ ] #task child 3 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_1parent1child1newroot_after_header.md: -------------------------------------------------------------------------------- 1 | # first header 2 | 3 | - [ ] #task parent task 4 | - [ ] #task child task 1 5 | 6 | ## second header 7 | 8 | - [ ] #task root task 9 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_1parent1child1sibling_emptystring.md: -------------------------------------------------------------------------------- 1 | - [ ] #task parent task 2 | - [ ] #task child task 1 3 | 4 | - [ ] #task sibling 5 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_1parent2children.md: -------------------------------------------------------------------------------- 1 | - [ ] #task parent 2 | - [ ] #task child 1 3 | - [ ] #task child 2 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_1parent2children1grandchild.md: -------------------------------------------------------------------------------- 1 | - [ ] #task parent task 2 | - [ ] #task child task 1 3 | - [ ] #task child task 2 4 | - [ ] #task grandchild 1 5 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_1parent2children1sibling.md: -------------------------------------------------------------------------------- 1 | - [ ] #task parent 2 | - [ ] #task child 1 3 | - [ ] #task child 2 4 | - [ ] #task sibling 5 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_1parent2children2grandchildren.md: -------------------------------------------------------------------------------- 1 | - [ ] #task parent task 2 | - [ ] #task child task 1 3 | - [ ] #task grandchild 1 4 | - [ ] #task child task 2 5 | - [ ] #task grandchild 2 6 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_1parent2children2grandchildren1sibling.md: -------------------------------------------------------------------------------- 1 | - [ ] #task parent task 2 | - [ ] #task child task 1 3 | - [ ] #task grandchild 1 4 | - [ ] #task child task 2 5 | - [ ] #task grandchild 2 6 | - [ ] #task sibling 7 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_1parent2children2grandchildren1sibling_start_with_heading.md: -------------------------------------------------------------------------------- 1 | # Test heading 2 | 3 | - [ ] #task parent task 4 | - [ ] #task child task 1 5 | - [ ] #task grandchild 1 6 | - [ ] #task child task 2 7 | - [ ] #task grandchild 2 8 | - [ ] #task sibling 9 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_2roots_listitem_listitem_task.md: -------------------------------------------------------------------------------- 1 | - parent list item 1 2 | - child list item 1 3 | - [ ] grandchild task 1 4 | 5 | - parent list item 2 6 | - child list item 2 7 | - [ ] grandchild task 2 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_2siblings.md: -------------------------------------------------------------------------------- 1 | - [ ] #task sibling 1 2 | - [ ] #task sibling 2 3 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_listitem_listitem_task.md: -------------------------------------------------------------------------------- 1 | - parent list item 2 | - child list item 3 | - [ ] grandchild task 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_listitem_task.md: -------------------------------------------------------------------------------- 1 | - parent list item 2 | - [ ] child task 3 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_listitem_task_siblings.md: -------------------------------------------------------------------------------- 1 | - list item 2 | - [ ] task 3 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_non_task_child.md: -------------------------------------------------------------------------------- 1 | - [ ] #task task parent 2 | - [ ] #task task child 3 | - [ ] non-task child 4 | - [x] non-task child status x 5 | - list item child 6 | 7 | ```tasks 8 | filename includes {{query.file.filename}} 9 | show tree 10 | ``` 11 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_rendering_sample.md: -------------------------------------------------------------------------------- 1 | - grandparent list item 2 | - [ ] parent 1 3 | - [ ] child 1 4 | - [ ] grandchild 1 5 | - list item grand grand child 6 | - [ ] child 2 7 | - non task grandchild 8 | - [ ] grand grand child 9 | - [ ] parent 2 10 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_task_2listitem_3task.md: -------------------------------------------------------------------------------- 1 | - [ ] parent task 2 | - child list item 1 3 | - [ ] grandchild task 1 4 | - [ ] grandchild task 2 5 | - child list item 2 6 | - [ ] grandchild task 3 7 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_task_listitem.md: -------------------------------------------------------------------------------- 1 | - [ ] parent task 2 | - child list item 3 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_task_listitem_mixed_grandchildren.md: -------------------------------------------------------------------------------- 1 | - [ ] parent task 2 | - child list item 3 | - grandchild list item 1 4 | - [ ] grandchild task 5 | - grandchild list item 2 6 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_task_listitem_task.md: -------------------------------------------------------------------------------- 1 | - [ ] parent task 2 | - child list item 3 | - [ ] grandchild task 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/inheritance_task_mixed_children.md: -------------------------------------------------------------------------------- 1 | - [ ] parent task 2 | - [ ] child task 1 3 | - child list item 1 4 | - [ ] child task 2 5 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/jason_properties.md: -------------------------------------------------------------------------------- 1 | --- 2 | { 3 | "tags": "journal", 4 | "publish": false 5 | } 6 | --- 7 | 8 | # jason_properties 9 | 10 | - [ ] #task Task in 'jason_properties' 11 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/link_in_file_body.md: -------------------------------------------------------------------------------- 1 | # link_in_file_body 2 | 3 | I link to [[yaml_tags_is_empty]] 4 | 5 | - [ ] #task Task in 'link_in_file_body' 6 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/link_in_file_body_with_custom_display_text.md: -------------------------------------------------------------------------------- 1 | # link_in_file_body_with_custom_display_text 2 | 3 | I link to [[yaml_tags_is_empty|a file and use custom display text]] 4 | 5 | - [ ] #task Task in 'link_in_file_body_with_custom_display_text' 6 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/link_in_heading.md: -------------------------------------------------------------------------------- 1 | # link_in_heading 2 | 3 | ## I link to [[multiple_headings]] 4 | 5 | - [ ] #task Task in 'link_in_heading' 6 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/link_in_task_html.md: -------------------------------------------------------------------------------- 1 | # link_in_task_html 2 | 3 | - [ ] #task Task in 'link_in_task_html' - see the [Tasks Documentation](https://publish.obsidian.md/tasks/Introduction) 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/link_in_task_markdown_link.md: -------------------------------------------------------------------------------- 1 | # link_in_task_markdown_link 2 | 3 | - [ ] #task Task in 'link_in_task_markdown_link' [jason_properties](jason_properties) [multiple_headings](multiple_headings) 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/link_in_task_wikilink.md: -------------------------------------------------------------------------------- 1 | # link_in_task_wikilink 2 | 3 | - [ ] #task Task in 'link_in_task_wikilink' [[link_in_task_wikilink]] [[multiple_headings]] 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/link_in_yaml.md: -------------------------------------------------------------------------------- 1 | --- 2 | test-link: "[[yaml_tags_is_empty]]" 3 | --- 4 | 5 | # link_in_yaml 6 | 7 | - [ ] #task Task in 'link_in_yaml' 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/link_is_broken.md: -------------------------------------------------------------------------------- 1 | # link_is_broken 2 | 3 | - [ ] #task Task in 'link_is_broken' [[broken link - do not fix me]] 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/links_everywhere.md: -------------------------------------------------------------------------------- 1 | --- 2 | link-in-frontmatter: "[[link_in_yaml]]" 3 | --- 4 | # links_everywhere 5 | 6 | A link in the file body: [[link_in_file_body]] 7 | 8 | ## A link in a [[link_in_heading]] 9 | 10 | - [ ] #task Task in 'links_everywhere' - a link on the task: [[link_in_task_wikilink]] 11 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/list_statuses.md: -------------------------------------------------------------------------------- 1 | `cachedMetadata.listItems` have a `task` field which is the single-character "status symbol". 2 | 3 | - [ ] #task Todo 4 | - [/] #task In Progress 5 | - [x] #task Done ✅ 2024-05-26 6 | - [-] #task Cancelled ❌ 2024-05-26 7 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/list_styles.md: -------------------------------------------------------------------------------- 1 | - [ ] #task task 1 starting with a hyphen 2 | - [ ] #task task 2 starting with a hyphen 3 | 4 | * [ ] #task task 1 starting with an asterisk 5 | * [ ] #task task 2 starting with an asterisk 6 | 7 | + [ ] #task task 1 starting with a plus sign 8 | + [ ] #task task 2 starting with a plus sign 9 | 10 | 1. [ ] #task task 1 in a numbered list 11 | 2. [ ] #task task 2 in a numbered list 12 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/multi_line_task_and_list_item.md: -------------------------------------------------------------------------------- 1 | # multi_line_task_and_list_item 2 | 3 | - [ ] #task Task in 'multi_line_task_and_list_item' 4 | task line 1 5 | task line 2 6 | - muli-line list item in 'multi_line_task_and_list_item' 7 | list item line 1 8 | list item line 2 9 | 10 | See: https://github.com/obsidian-tasks-group/obsidian-tasks/issues/2061: 11 | Multi-line tasks (indented lines below a task items) are not shown in Reading mode and Tasks query results 12 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/no_heading.md: -------------------------------------------------------------------------------- 1 | - [ ] #task Task in 'no_heading' 2 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/no_yaml.md: -------------------------------------------------------------------------------- 1 | # no_yaml 2 | 3 | - [ ] #task Task in 'no_yaml' 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/numbered_list_items_standard.md: -------------------------------------------------------------------------------- 1 | # numbered_list_items_standard 2 | 3 | 1. [ ] #task Task 1 in 'numbered_list_items_standard' 4 | 1. Sub-item 1 5 | 2. [ ] #task Task 2 in 'numbered_list_items_standard' 6 | 1. Sub-item 2 7 | 3. List item in 'numbered_list_items_standard' 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/numbered_list_items_with_paren.md: -------------------------------------------------------------------------------- 1 | # numbered_list_items_with_paren 2 | 3 | 1) [ ] #task Task 1 in 'numbered_list_items_with_paren' 4 | 1) Sub-item 1 5 | 2) [ ] #task Task 2 in 'numbered_list_items_with_paren' 6 | 1) Sub-item 2 7 | 3) List item in 'numbered_list_items_with_paren' 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/one_task.md: -------------------------------------------------------------------------------- 1 | - [ ] #task the only task here 2 | 3 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/query_file_defaults_ignore_global_query.md: -------------------------------------------------------------------------------- 1 | --- 2 | TQ_extra_instructions: |- 3 | description includes I came from the TQ_extra_instructions property 4 | ignore global query 5 | --- 6 | 7 | # query_file_defaults_ignore_global_query 8 | 9 | - [ ] #task Task in 'query_file_defaults_ignore_global_query' 10 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/query_file_defaults_short_mode.md: -------------------------------------------------------------------------------- 1 | --- 2 | TQ_short_mode: true 3 | --- 4 | 5 | # query_file_defaults_short_mode 6 | 7 | - [ ] #task Task in 'query_file_defaults_short_mode' 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_1_alias.md: -------------------------------------------------------------------------------- 1 | --- 2 | aliases: 3 | - YAML Alias 1 4 | --- 5 | 6 | # yaml_1_alias 7 | 8 | - [ ] #task Task in 'yaml_1_alias' 9 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_2_aliases.md: -------------------------------------------------------------------------------- 1 | --- 2 | aliases: 3 | - YAML Alias 1 4 | - YAML Alias 2 5 | --- 6 | 7 | # yaml_2_aliases 8 | 9 | - [ ] #task Task in 'yaml_2_aliases' 10 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_all_property_types_empty.md: -------------------------------------------------------------------------------- 1 | --- 2 | sample_checkbox_property: 3 | sample_date_property: 4 | sample_date_and_time_property: 5 | sample_list_property: 6 | sample_number_property: 7 | sample_text_property: 8 | sample_link_property: 9 | sample_link_list_property: 10 | aliases: 11 | tags: 12 | creation date: 13 | --- 14 | # yaml_all_property_types_empty 15 | 16 | - [ ] #task Task in 'yaml_all_property_types_empty' 17 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_capitalised_property_name.md: -------------------------------------------------------------------------------- 1 | --- 2 | CAPITAL_property: some value 3 | --- 4 | 5 | # yaml_capitalised_property_name 6 | 7 | - [ ] #task Task in 'yaml_capitalised_property_name' 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_custom_number_property.md: -------------------------------------------------------------------------------- 1 | --- 2 | custom_number_prop: 42 3 | --- 4 | 5 | - [ ] #task Task in 'yaml_custom_number_property' 6 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_tags_field_added_by_obsidian_but_not_populated.md: -------------------------------------------------------------------------------- 1 | --- 2 | tags: 3 | --- 4 | 5 | # yaml_tags_field_added_by_obsidian_but_not_populated 6 | 7 | - [ ] #task Task in 'yaml_tags_field_added_by_obsidian_but_not_populated' 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_tags_had_value_then_was_emptied_by_obsidian.md: -------------------------------------------------------------------------------- 1 | --- 2 | tags: [] 3 | --- 4 | 5 | 6 | # yaml_tags_had_value_then_was_emptied_by_obsidian 7 | 8 | - [ ] #task Task in 'yaml_tags_had_value_then_was_emptied_by_obsidian' 9 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_tags_has_multiple_values.md: -------------------------------------------------------------------------------- 1 | --- 2 | tags: 3 | - multiple1 4 | - multiple2 5 | --- 6 | 7 | # yaml_tags_has_multiple_values 8 | 9 | - [ ] #task Task in 'yaml_tags_has_multiple_values' 10 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_tags_is_empty.md: -------------------------------------------------------------------------------- 1 | --- 2 | tags: 3 | --- 4 | 5 | # yaml_tags_is_empty 6 | 7 | - [ ] #task Task in 'yaml_tags_is_empty' 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_tags_is_empty_list.md: -------------------------------------------------------------------------------- 1 | --- 2 | tags: [] 3 | --- 4 | 5 | # yaml_tags_is_empty_list 6 | 7 | - [ ] #task Task in 'yaml_tags_is_empty_list' 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_tags_with_one_value_on_new_line.md: -------------------------------------------------------------------------------- 1 | --- 2 | tags: 3 | - single-value-new-line 4 | --- 5 | 6 | 7 | # yaml_tags_with_one_value_on_new_line 8 | 9 | - [ ] #task Task in 'yaml_tags_with_one_value_on_new_line' 10 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_tags_with_one_value_on_single_line.md: -------------------------------------------------------------------------------- 1 | --- 2 | tags: single-value-single-line 3 | --- 4 | 5 | # yaml_tags_with_one_value_on_single_line 6 | 7 | - [ ] #task Task in 'yaml_tags_with_one_value_on_single_line' 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_tags_with_two_values_on_one_line.md: -------------------------------------------------------------------------------- 1 | --- 2 | tags: value-1-of-2-on-one-line, value-2-of-2-on-one-line 3 | --- 4 | 5 | # yaml_tags_with_two_values_on_one_line 6 | 7 | - [ ] #task Task in 'yaml_tags_with_two_values_on_one_line' 8 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/yaml_tags_with_two_values_on_two_lines.md: -------------------------------------------------------------------------------- 1 | --- 2 | tags: 3 | - value-1-of-2-on-two-lines 4 | - value-2-of-2-on-two-lines 5 | --- 6 | 7 | # yaml_tags_with_two_values_on_two_lines 8 | 9 | - [ ] #task Task in 'yaml_tags_with_two_values_on_two_lines' 10 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/Test Data/zero_width.md: -------------------------------------------------------------------------------- 1 | # zero_width 2 | 3 | - Root 1 4 | - [ ] #task Task line 1 in 'zero_width' - indented by tab character 5 | - Root 2 6 | ​ - [ ] #task Task line 2 in 'zero_width' - indented by ZWSP + tab character 7 | 8 | ```tasks 9 | path includes {{query.file.path}} 10 | ``` 11 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/_meta/templates/Test Data file.md: -------------------------------------------------------------------------------- 1 | # <% tp.file.title %> 2 | 3 | - [ ] #task Task in '<% tp.file.title %>' 4 | -------------------------------------------------------------------------------- /resources/sample_vaults/Tasks-Demo/_meta/templates/convert_test_data_markdown_to_js.md: -------------------------------------------------------------------------------- 1 | <%- tp.user.convert_test_data_markdown_to_js(tp) -%> 2 | -------------------------------------------------------------------------------- /resources/screenshots/README-resources-screenshots.md: -------------------------------------------------------------------------------- 1 | # resources/screenshots 2 | 3 | New images should be put in `docs/images/` please. 4 | 5 | For details, see . 6 | -------------------------------------------------------------------------------- /src/Config/Themes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './AnuPpuccinThemeCollection'; 2 | export * from './AuraThemeCollection'; 3 | export * from './BorderThemeCollection'; 4 | export * from './EbullientworksThemeCollection'; 5 | export * from './ITSThemeCollection'; 6 | export * from './LYTModeThemeCollection'; 7 | export * from './MinimalThemeCollection'; 8 | export * from './ThingsThemeCollection'; 9 | -------------------------------------------------------------------------------- /src/Config/featureConfiguration.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "index": 9999, 4 | "internalName": "INTERNAL_TESTING_ENABLED_BY_DEFAULT", 5 | "displayName": "Test Item. Used to validate the Feature Framework.", 6 | "description": "Description", 7 | "enabledByDefault": true, 8 | "stable": false 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /src/Layout/LayoutHelpers.ts: -------------------------------------------------------------------------------- 1 | export function generateHiddenClassForTaskList(hiddenClasses: string[], hide: boolean, component: string) { 2 | if (hide) { 3 | hiddenClasses.push(hiddenComponentClassName(component)); 4 | } 5 | } 6 | 7 | function hiddenComponentClassName(component: string) { 8 | return `tasks-layout-hide-${component}`; 9 | } 10 | -------------------------------------------------------------------------------- /src/lib/TypeDetection.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Return a string representation of the {@link value}'s type, for showing to users, such as in error messages. 3 | * @param value 4 | */ 5 | export function getValueType(value: any): string { 6 | if (value === null) { 7 | return 'null'; 8 | } 9 | 10 | const type = typeof value; 11 | if (type === 'object') { 12 | return value.constructor.name; 13 | } 14 | 15 | return type; 16 | } 17 | -------------------------------------------------------------------------------- /src/styles.scss: -------------------------------------------------------------------------------- 1 | @import 'flatpickr/dist/flatpickr.css'; 2 | @import './Renderer/Renderer'; 3 | @import './ui/EditTask'; 4 | @import './ui/Dependency'; 5 | @import './Config/SettingsTab'; 6 | @import './Config/PresetsSettingsUI'; 7 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | const sveltePreprocess = require('svelte-preprocess'); 2 | 3 | module.exports = { 4 | preprocess: sveltePreprocess(), 5 | }; 6 | -------------------------------------------------------------------------------- /tests/DocumentationSamples/DefaultsDocs/DocsSamplesForDefaults.test.DocsSamplesForDefaults_demo-short-mode_instructions.approved.txt: -------------------------------------------------------------------------------- 1 | short mode 2 | -------------------------------------------------------------------------------- /tests/DocumentationSamples/DefaultsDocs/DocsSamplesForDefaults.test.DocsSamplesForDefaults_demo-short-mode_yaml.approved.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | TQ_short_mode: true 3 | --- 4 | -------------------------------------------------------------------------------- /tests/DocumentationSamples/DocsSamplesForStatuses.test.DefaultStatuses_important-cycle.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | | Status Symbol | Next Status Symbol | Status Name | Status Type | Needs Custom Styling | 4 | | ----- | ----- | ----- | ----- | ----- | 5 | | `!` | `D` | Important | `TODO` | Yes | 6 | | `D` | `X` | Doing - Important | `IN_PROGRESS` | Yes | 7 | | `X` | `!` | Done - Important | `DONE` | Yes | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/DocumentationSamples/DocsSamplesForStatuses.test.DefaultStatuses_pro-con-cycle.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | | Status Symbol | Next Status Symbol | Status Name | Status Type | Needs Custom Styling | 4 | | ----- | ----- | ----- | ----- | ----- | 5 | | `P` | `C` | Pro | `NON_TASK` | Yes | 6 | | `C` | `P` | Con | `NON_TASK` | Yes | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /tests/DocumentationSamples/DocsSamplesForStatuses.test.DefaultStatuses_todo-in_progress-done.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | | Status Symbol | Next Status Symbol | Status Name | Status Type | Needs Custom Styling | 4 | | ----- | ----- | ----- | ----- | ----- | 5 | | `space` | `/` | Todo | `TODO` | No | 6 | | `/` | `x` | In Progress | `IN_PROGRESS` | Yes | 7 | | `x` | `space` | Done | `DONE` | No | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/DocumentationSamples/DocsSamplesForStatuses.test.Theme_Ebullientworks_Tasks.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [ ] #task `space` Unchecked 4 | - [x] #task `x` Checked 5 | - [-] #task `-` Cancelled 6 | - [/] #task `/` In Progress 7 | - [>] #task `>` Deferred 8 | - [!] #task `!` Important 9 | - [?] #task `?` Question 10 | - [r] #task `r` Review 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/DocumentationSamples/DocsSamplesForStatuses.test.Theme_Ebullientworks_Text.approved.txt: -------------------------------------------------------------------------------- 1 | - [ ] #task `space` Unchecked 2 | - [x] #task `x` Checked 3 | - [-] #task `-` Cancelled 4 | - [/] #task `/` In Progress 5 | - [>] #task `>` Deferred 6 | - [!] #task `!` Important 7 | - [?] #task `?` Question 8 | - [r] #task `r` Review 9 | -------------------------------------------------------------------------------- /tests/DocumentationSamples/ValidateTasks.test.validate-tasks_all-emojis-emojis.approved.text: -------------------------------------------------------------------------------- 1 | 🔺⏫🔼🔽⏬🛫➕⏳📅✅❌🔁🏁⛔🆔 2 | -------------------------------------------------------------------------------- /tests/DocumentationSamples/ValidateTasks.test.validate-tasks_find_problem_dates.approved.text: -------------------------------------------------------------------------------- 1 | 2 | ````text 3 | ```tasks 4 | # These instructions need to be all on one line: 5 | (cancelled date is invalid) OR (created date is invalid) OR (done date is invalid) OR (due date is invalid) OR (scheduled date is invalid) OR (start date is invalid) 6 | 7 | # Optionally, uncomment this line and exclude your templates location 8 | # path does not include _templates 9 | 10 | group by path 11 | ``` 12 | ```` 13 | -------------------------------------------------------------------------------- /tests/Obsidian/File.test.replaceTaskWithTasks_issue_1680_-_Cannot_read_properties_of_undefined.approved.txt: -------------------------------------------------------------------------------- 1 | Success. Line found OK. No error reported. 2 | -------------------------------------------------------------------------------- /tests/Obsidian/File.test.replaceTaskWithTasks_issue_688_-_block_referenced_task.approved.txt: -------------------------------------------------------------------------------- 1 | Success. Line found OK. No error reported. 2 | -------------------------------------------------------------------------------- /tests/Obsidian/File.test.replaceTaskWithTasks_valid_2-task_test.approved.txt: -------------------------------------------------------------------------------- 1 | Success. Line found OK. No error reported. 2 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_boolean_combinations.approved.explanation.text: -------------------------------------------------------------------------------- 1 | Explanation of this Tasks code block query: 2 | 3 | not done 4 | 5 | (due before tomorrow) AND (is recurring) => 6 | AND (All of): 7 | due before tomorrow => 8 | due date is before 2022-10-22 (Saturday 22nd October 2022) 9 | is recurring 10 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_boolean_combinations.approved.query.text: -------------------------------------------------------------------------------- 1 | 2 | explain 3 | not done 4 | (due before tomorrow) AND (is recurring) 5 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_example_global_query.approved.query.text: -------------------------------------------------------------------------------- 1 | limit 50 2 | heading includes tasks 3 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_expands_dates.approved.explanation.text: -------------------------------------------------------------------------------- 1 | Explanation of this Tasks code block query: 2 | 3 | starts after 2 years ago => 4 | start date is after 2020-10-21 (Wednesday 21st October 2020) OR no start date 5 | 6 | scheduled after 1 week ago => 7 | scheduled date is after 2022-10-14 (Friday 14th October 2022) 8 | 9 | due before tomorrow => 10 | due date is before 2022-10-22 (Saturday 22nd October 2022) 11 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_expands_dates.approved.query.text: -------------------------------------------------------------------------------- 1 | 2 | starts after 2 years ago 3 | scheduled after 1 week ago 4 | due before tomorrow 5 | explain 6 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_explains_task_block_with_global_query_active.approved.explanation.text: -------------------------------------------------------------------------------- 1 | Explanation of the global query: 2 | 3 | heading includes tasks 4 | 5 | At most 50 tasks. 6 | 7 | Explanation of this Tasks code block query: 8 | 9 | not done 10 | 11 | due next week => 12 | due date is between: 13 | 2022-10-24 (Monday 24th October 2022) and 14 | 2022-10-30 (Sunday 30th October 2022) inclusive 15 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_explains_task_block_with_global_query_active.approved.query.text: -------------------------------------------------------------------------------- 1 | 2 | not done 3 | due next week 4 | explain 5 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_line_continuation_-_double_slash.approved.explanation.text: -------------------------------------------------------------------------------- 1 | Explanation of this Tasks code block query: 2 | 3 | description includes \\ => 4 | description includes \ 5 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_line_continuation_-_double_slash.approved.query.text: -------------------------------------------------------------------------------- 1 | 2 | # Search for a single backslash: 3 | description includes \\ 4 | explain 5 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_line_continuation_-_single_slash.approved.explanation.text: -------------------------------------------------------------------------------- 1 | Explanation of this Tasks code block query: 2 | 3 | (priority is highest) OR \ 4 | (priority is lowest) 5 | => 6 | (priority is highest) OR (priority is lowest) => 7 | OR (At least one of): 8 | priority is highest 9 | priority is lowest 10 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_line_continuation_-_single_slash.approved.query.text: -------------------------------------------------------------------------------- 1 | 2 | (priority is highest) OR \ 3 | (priority is lowest) 4 | explain 5 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_placeholders.approved.query.text: -------------------------------------------------------------------------------- 1 | 2 | explain 3 | path includes {{query.file.path}} 4 | path includes {{query.file.pathWithoutExtension}} 5 | root includes {{query.file.root}} 6 | folder includes {{query.file.folder}} 7 | filename includes {{query.file.filename}} 8 | filename includes {{query.file.filenameWithoutExtension}} 9 | 10 | description includes Some Cryptic String {{! Inline comments are removed before search }} 11 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_placeholders_error.approved.explanation.text: -------------------------------------------------------------------------------- 1 | Explanation of this Tasks code block query: 2 | 3 | Query has an error: 4 | There was an error expanding one or more placeholders. 5 | 6 | The error message was: 7 | Unknown property: query.file.fileName 8 | 9 | The problem is in: 10 | filename includes {{query.file.fileName}} 11 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_placeholders_error.approved.query.text: -------------------------------------------------------------------------------- 1 | 2 | # query.file.fileName is invalid, because of the capital N. 3 | # query.file.filename is the correct property name. 4 | filename includes {{query.file.fileName}} 5 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_query_file_defaults_explanation.approved.explanation.text: -------------------------------------------------------------------------------- 1 | Explanation of the Query File Defaults (from properties/frontmatter in the query's file): 2 | 3 | folder includes {{query.file.folder}} => 4 | folder includes Test Data/ 5 | 6 | not done 7 | 8 | short mode 9 | 10 | show tree 11 | 12 | Explanation of this Tasks code block query: 13 | 14 | No filters supplied. All tasks will match the query. 15 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_query_file_defaults_explanation.approved.query.text: -------------------------------------------------------------------------------- 1 | explain 2 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_query_file_defaults_file_content.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ````text 4 | --- 5 | TQ_extra_instructions: |- 6 | folder includes {{query.file.folder}} 7 | not done 8 | TQ_short_mode: true 9 | TQ_show_tree: true 10 | --- 11 | 12 | ```tasks 13 | explain 14 | ``` 15 | ```` 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_regular_expression.approved.explanation.text: -------------------------------------------------------------------------------- 1 | Explanation of this Tasks code block query: 2 | 3 | path regex matches /^Root/Sub-Folder/Sample File\.md/i => 4 | using regex: '^Root\/Sub-Folder\/Sample File\.md' with flag 'i' 5 | -------------------------------------------------------------------------------- /tests/Query/Explain/DocsSamplesForExplain.test.explain_regular_expression.approved.query.text: -------------------------------------------------------------------------------- 1 | 2 | explain 3 | path regex matches /^Root/Sub-Folder/Sample File\.md/i 4 | -------------------------------------------------------------------------------- /tests/Query/Filter/ReferenceDocs/FilterReference/filters-date-examples.input.query: -------------------------------------------------------------------------------- 1 | description includes ------------------------------ 2 | 3 | due today 4 | 5 | description includes ------------------------------ 6 | 7 | due yesterday 8 | due today 9 | due tomorrow 10 | due next monday 11 | due last friday 12 | due 14 days ago 13 | due in two weeks 14 | due 14 October 15 | due May 16 | -------------------------------------------------------------------------------- /tests/Query/QueryComponentOrError.test.ts: -------------------------------------------------------------------------------- 1 | import { QueryComponentOrError } from '../../src/Query/QueryComponentOrError'; 2 | 3 | describe('QueryComponentOrError', () => { 4 | it('should check validity', () => { 5 | expect(QueryComponentOrError.fromObject('instruction', 42).isValid()).toBe(true); 6 | expect(QueryComponentOrError.fromError('instruction', 'error message').isValid()).toBe(false); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /tests/Query/Sort/Sort.test.Sort_save_default_sort_order.approved.text: -------------------------------------------------------------------------------- 1 | sort by status.type 2 | sort by urgency 3 | sort by due 4 | sort by priority 5 | sort by path 6 | -------------------------------------------------------------------------------- /tests/Scripting/QueryProperties.test.query_search_properties.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | | Field | Type | Example | 4 | | ----- | ----- | ----- | 5 | | `query.allTasks` | `Task[]` | `[... an array with all the Tasks-tracked tasks in the vault ...]` | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.cancelled_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | filter by function task.cancelled.format('dddd') === 'Wednesday' 6 | ``` 7 | 8 | - Find tasks cancelled on Wednesdays, that is, any Wednesday. 9 | - On non-English systems, you may need to supply the day of the week in the local language. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.cancelled_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom filters 2 | 3 | 4 | 5 | filter by function task.cancelled.format('dddd') === 'Wednesday' 6 | Find tasks cancelled on Wednesdays, that is, any Wednesday. 7 | On non-English systems, you may need to supply the day of the week in the local language. 8 | => 9 | - [ ] my description ❌ 2023-05-31 10 | ==================================================================================== 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.created_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | filter by function task.created.format('dddd') === 'Monday' 6 | ``` 7 | 8 | - Find tasks created on Mondays, that is, any Monday. 9 | - On non-English systems, you may need to supply the day of the week in the local language. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.created_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom filters 2 | 3 | 4 | 5 | filter by function task.created.format('dddd') === 'Monday' 6 | Find tasks created on Mondays, that is, any Monday. 7 | On non-English systems, you may need to supply the day of the week in the local language. 8 | => 9 | 10 | ==================================================================================== 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.done_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | filter by function task.done.format('dddd') === 'Thursday' 6 | ``` 7 | 8 | - Find tasks done on Thursdays, that is, any Thursday. 9 | - On non-English systems, you may need to supply the day of the week in the local language. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.done_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom filters 2 | 3 | 4 | 5 | filter by function task.done.format('dddd') === 'Thursday' 6 | Find tasks done on Thursdays, that is, any Thursday. 7 | On non-English systems, you may need to supply the day of the week in the local language. 8 | => 9 | - [ ] my description ✅ 2023-06-01 10 | ==================================================================================== 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.due_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | filter by function task.due.format('dddd') === 'Tuesday' 6 | ``` 7 | 8 | - Find tasks due on Tuesdays, that is, any Tuesday. 9 | - On non-English systems, you may need to supply the day of the week in the local language. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.due_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom filters 2 | 3 | 4 | 5 | filter by function task.due.format('dddd') === 'Tuesday' 6 | Find tasks due on Tuesdays, that is, any Tuesday. 7 | On non-English systems, you may need to supply the day of the week in the local language. 8 | => 9 | - [ ] my description 📅 2023-05-30 10 | ==================================================================================== 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.happens_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | filter by function task.happens.format('dddd') === 'Friday' 6 | ``` 7 | 8 | - Find tasks happens on Fridays, that is, any Friday. 9 | - On non-English systems, you may need to supply the day of the week in the local language. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.happens_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom filters 2 | 3 | 4 | 5 | filter by function task.happens.format('dddd') === 'Friday' 6 | Find tasks happens on Fridays, that is, any Friday. 7 | On non-English systems, you may need to supply the day of the week in the local language. 8 | => 9 | - [ ] my description 📅 2023-06-02 10 | ==================================================================================== 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.scheduled_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | filter by function task.scheduled.format('dddd') === 'Wednesday' 6 | ``` 7 | 8 | - Find tasks scheduled on Wednesdays, that is, any Wednesday. 9 | - On non-English systems, you may need to supply the day of the week in the local language. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.scheduled_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom filters 2 | 3 | 4 | 5 | filter by function task.scheduled.format('dddd') === 'Wednesday' 6 | Find tasks scheduled on Wednesdays, that is, any Wednesday. 7 | On non-English systems, you may need to supply the day of the week in the local language. 8 | => 9 | - [ ] my description ⏳ 2023-05-31 10 | ==================================================================================== 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.start_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | filter by function task.start.format('dddd') === 'Sunday' 6 | ``` 7 | 8 | - Find tasks starting on Sundays, that is, any Sunday. 9 | - On non-English systems, you may need to supply the day of the week in the local language. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.dates_task.start_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom filters 2 | 3 | 4 | 5 | filter by function task.start.format('dddd') === 'Sunday' 6 | Find tasks starting on Sundays, that is, any Sunday. 7 | On non-English systems, you may need to supply the day of the week in the local language. 8 | => 9 | 10 | ==================================================================================== 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.other_properties_task.blockLink_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.other_properties_task.descriptionWithoutTags_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.other_properties_task.description_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | filter by function task.description.length > 100 6 | ``` 7 | 8 | - Find tasks with long descriptions. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.other_properties_task.lineNumber_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.other_properties_task.originalMarkdown_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.other_properties_task.priorityName_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | filter by function task.priorityName !== 'Normal' 6 | ``` 7 | 8 | - The same as `priority is not none`. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.statuses_task.status.name_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | filter by function task.status.name === 'Unknown' 6 | ``` 7 | 8 | - Find all tasks with custom statuses not yet added to the Tasks settings. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.statuses_task.status.name_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom filters 2 | 3 | 4 | 5 | filter by function task.status.name === 'Unknown' 6 | Find all tasks with custom statuses not yet added to the Tasks settings. 7 | => 8 | - [p] Unknown symbol 9 | - [s] Toggles to self 10 | - [P] Pro 11 | - [C] Con 12 | - [Q] Question 13 | - [A] Answer 14 | ==================================================================================== 15 | 16 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.statuses_task.status.nextSymbol_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | filter by function task.status.symbol === task.status.nextSymbol 6 | ``` 7 | 8 | - Find tasks that toggle to themselves, because the next symbol is the same as the current symbol. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomFiltering/CustomFilteringExamples.test.statuses_task.status.nextSymbol_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom filters 2 | 3 | 4 | 5 | filter by function task.status.symbol === task.status.nextSymbol 6 | Find tasks that toggle to themselves, because the next symbol is the same as the current symbol. 7 | => 8 | - [] Status EMPTY 9 | ==================================================================================== 10 | 11 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dates_task.cancelled_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.cancelled.format("YYYY-MM-DD dddd") 6 | ``` 7 | 8 | - Like "group by cancelled", except it uses an empty string instead of "No cancelled date" if there is no cancelled date. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dates_task.created_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.created.format("YYYY-MM-DD dddd") 6 | ``` 7 | 8 | - Like "group by created", except it uses an empty string instead of "No created date" if there is no created date. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dates_task.done_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.done.format("YYYY-MM-DD dddd") 6 | ``` 7 | 8 | - Like "group by done", except it uses an empty string instead of "No done date" if there is no done date. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dates_task.happens_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.happens.format("YYYY-MM-DD dddd") 6 | ``` 7 | 8 | - Like "group by happens", except it uses an empty string instead of "No happens date" if there is no happens date. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dates_task.happens_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom groupers 2 | 3 | 4 | 5 | group by function task.happens.format("YYYY-MM-DD dddd") 6 | Like "group by happens", except it uses an empty string instead of "No happens date" if there is no happens date. 7 | => 8 | 2023-05-30 Tuesday 9 | 2023-05-31 Wednesday 10 | 2023-06-01 Thursday 11 | 2023-06-02 Friday 12 | ==================================================================================== 13 | 14 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dates_task.scheduled_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.scheduled.format("YYYY-MM-DD dddd") 6 | ``` 7 | 8 | - Like "group by scheduled", except it uses an empty string instead of "No scheduled date" if there is no scheduled date. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dates_task.start_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.start.format("YYYY-MM-DD dddd") 6 | ``` 7 | 8 | - Like "group by start", except it uses an empty string instead of "No start date" if there is no start date. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.id_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.id 6 | ``` 7 | 8 | - Group by task Ids, if any. 9 | - Note that currently there is no way to access any tasks that are blocked by these Ids. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.id_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom groupers 2 | 3 | 4 | 5 | group by function task.id 6 | Group by task Ids, if any. 7 | Note that currently there is no way to access any tasks that are blocked by these Ids. 8 | => 9 | dcf64c 10 | ==================================================================================== 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.file_properties_task.file.root_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.file.root 6 | ``` 7 | 8 | - Like 'group by root' except that it does not escape any Markdown formatting characters in the root. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.file_properties_task.file.root_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom groupers 2 | 3 | 4 | 5 | group by function task.file.root 6 | Like 'group by root' except that it does not escape any Markdown formatting characters in the root. 7 | => 8 | / 9 | a/ 10 | e/ 11 | ==================================================================================== 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.blockLink_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.blockLink.replace(' ^', '') 6 | ``` 7 | 8 | - DO NOT RELEASE UNTIL THE LEADING SPACE IS REMOVED FROM BLOCKLINKS. Removing the leading space and carat prevents the rendered heading itself being treated as a blocklink. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.blockLink_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom groupers 2 | 3 | 4 | 5 | group by function task.blockLink.replace(' ^', '') 6 | DO NOT RELEASE UNTIL THE LEADING SPACE IS REMOVED FROM BLOCKLINKS. Removing the leading space and carat prevents the rendered heading itself being treated as a blocklink. 7 | => 8 | ca47c7 9 | fromseparatefile 10 | ==================================================================================== 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.isDone_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.isDone ? "Action Required" : "Nothing To Do" 6 | ``` 7 | 8 | - Use JavaScript's ternary operator to choose what to do for true (after the ?) and false (after the :) values. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.isDone_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom groupers 2 | 3 | 4 | 5 | group by function task.isDone ? "Action Required" : "Nothing To Do" 6 | Use JavaScript's ternary operator to choose what to do for true (after the ?) and false (after the :) values. 7 | => 8 | Action Required 9 | Nothing To Do 10 | ==================================================================================== 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.isRecurring_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.isRecurring ? "Recurring" : "Non-Recurring" 6 | ``` 7 | 8 | - Use JavaScript's ternary operator to choose what to do for true (after the ?) and false (after the :) values. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.isRecurring_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom groupers 2 | 3 | 4 | 5 | group by function task.isRecurring ? "Recurring" : "Non-Recurring" 6 | Use JavaScript's ternary operator to choose what to do for true (after the ?) and false (after the :) values. 7 | => 8 | Non-Recurring 9 | Recurring 10 | ==================================================================================== 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.lineNumber_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.lineNumber_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom groupers 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.priorityNumber_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.priorityNumber 6 | ``` 7 | 8 | - Group by the task's priority number, where Highest is 0 and Lowest is 5. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.priorityNumber_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom groupers 2 | 3 | 4 | 5 | group by function task.priorityNumber 6 | Group by the task's priority number, where Highest is 0 and Lowest is 5. 7 | => 8 | 0 9 | 1 10 | 2 11 | 3 12 | 4 13 | 5 14 | ==================================================================================== 15 | 16 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.priority_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - ``group by function task.priority`` 4 | - Group by the task's priority number, where Highest is 0 and Lowest is 5. 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.priority_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom groupers 2 | 3 | 4 | 5 | group by function task.priority 6 | Group by the task's priority number, where Highest is 0 and Lowest is 5 7 | => 8 | 0 9 | 1 10 | 2 11 | 3 12 | 4 13 | 5 14 | ==================================================================================== 15 | 16 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.other_properties_task.recurrenceRule_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.recurrenceRule.replace('when done', '==when done==') 6 | ``` 7 | 8 | - Group by recurrence rule, highlighting any occurrences of the words "when done". 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.statuses_task.status.name_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function task.status.name 6 | ``` 7 | 8 | - Identical to "group by status.name". 9 | 10 | ```javascript 11 | group by function task.status.name.toUpperCase() 12 | ``` 13 | 14 | - Convert the status names to capitals. 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.statuses_task.status.nextSymbol_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function "Next status symbol: " + task.status.nextSymbol.replace(" ", "space") 6 | ``` 7 | 8 | - Group by the next status symbol, making space characters visible. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.statuses_task.status.symbol_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | group by function "Status symbol: " + task.status.symbol.replace(" ", "space") 6 | ``` 7 | 8 | - Group by the status symbol, making space characters visible. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.dates_task.cancelled_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.cancelled.format("dddd") 6 | ``` 7 | 8 | - Sort by cancelled date's day of the week, alphabetically. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.dates_task.created_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.created.format("dddd") 6 | ``` 7 | 8 | - Sort by created date's day of the week, alphabetically. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.dates_task.done_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.done.format("dddd") 6 | ``` 7 | 8 | - Sort by done date's day of the week, alphabetically. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.dates_task.due.advanced_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.dates_task.due_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.due.format("dddd") 6 | ``` 7 | 8 | - Sort by due date's day of the week, alphabetically. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.dates_task.happens_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.happens.format("dddd") 6 | ``` 7 | 8 | - Sort by happens date's day of the week, alphabetically. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.dates_task.scheduled_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.scheduled.format("dddd") 6 | ``` 7 | 8 | - Sort by scheduled date's day of the week, alphabetically. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.dates_task.start_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.start.format("dddd") 6 | ``` 7 | 8 | - Sort by start date's day of the week, alphabetically. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.file_properties_task.file.filename_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.file.filename 6 | ``` 7 | 8 | - Like 'sort by filename' but includes the file extension. 9 | 10 | ```javascript 11 | sort by function task.file.filenameWithoutExtension 12 | ``` 13 | 14 | - Like 'sort by filename'. 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.file_properties_task.file.path_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.file.path 6 | ``` 7 | 8 | - Like 'Sort by path' but includes the file extension. 9 | 10 | ```javascript 11 | sort by function task.file.pathWithoutExtension 12 | ``` 13 | 14 | - Like 'Sort by path'. 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.file_properties_task.file.root_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.file.root 6 | ``` 7 | 8 | - Enable sorting by the root folder. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.file_properties_task.heading_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.heading 6 | ``` 7 | 8 | - Like 'sort by heading'. 9 | - Any tasks with no preceding heading have `task.heading` values of `null`, and these tasks sort before any tasks with headings. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.other_properties_task.blockLink_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.blockLink 6 | ``` 7 | 8 | - DO NOT RELEASE UNTIL THE LEADING SPACE IS REMOVED FROM BLOCKLINKS. Removing the leading space and carat prevents the rendered heading itself being treated as a blocklink. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.other_properties_task.isRecurring_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.isRecurring 6 | ``` 7 | 8 | - Sort by whether the task is recurring: recurring tasks will be listed before non-recurring ones. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.other_properties_task.lineNumber_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.lineNumber 6 | ``` 7 | 8 | - Sort by the line number of the task's original line in the MarkDown file. 9 | - This is useful if you are unhappy with the [[Sorting#default sort order]]. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.other_properties_task.lineNumber_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom sorters 2 | 3 | 4 | 5 | sort by function task.lineNumber 6 | Sort by the line number of the task's original line in the MarkDown file. 7 | This is useful if you are unhappy with the [[Sorting#default sort order]]. 8 | => 9 | - [ ] line 0 10 | - [ ] line 42 11 | ==================================================================================== 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.other_properties_task.originalMarkdown_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.originalMarkdown 6 | ``` 7 | 8 | - Sort by the raw text of the task's original line in the MarkDown file. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.other_properties_task.priorityNumber_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.priorityNumber 6 | ``` 7 | 8 | - Sort by the task's priority number, where Highest is 0 and Lowest is 5. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.other_properties_task.recurrenceRule_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.recurrenceRule 6 | ``` 7 | 8 | - Sort by recurrence rule. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.other_properties_task.tags.advanced_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.other_properties_task.urgency_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function reverse task.urgency 6 | ``` 7 | 8 | - Sort by task urgency values. 9 | - We use `reverse` to put the most urgent tasks first. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.statuses_task.status.name_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.status.name 6 | ``` 7 | 8 | - Identical to "Sort by status.name". 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.statuses_task.status.name_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom sorters 2 | 3 | 4 | 5 | sort by function task.status.name 6 | Identical to "Sort by status.name". 7 | => 8 | - [-] Status Cancelled 9 | - [x] Status Done 10 | - [] Status EMPTY 11 | - [/] Status In Progress 12 | - [Q] Status Non-Task 13 | - [ ] Status Todo 14 | ==================================================================================== 15 | 16 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.statuses_task.status.nextSymbol_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.status.nextSymbol 6 | ``` 7 | 8 | - Sort by the next status symbol. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.statuses_task.status.nextSymbol_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom sorters 2 | 3 | 4 | 5 | sort by function task.status.nextSymbol 6 | Sort by the next status symbol. 7 | => 8 | - [] Status EMPTY 9 | - [x] Status Done 10 | - [-] Status Cancelled 11 | - [Q] Status Non-Task 12 | - [/] Status In Progress 13 | - [ ] Status Todo 14 | ==================================================================================== 15 | 16 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.statuses_task.status.symbol_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.status.symbol 6 | ``` 7 | 8 | - Sort by the status symbol. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.statuses_task.status.symbol_results.approved.txt: -------------------------------------------------------------------------------- 1 | Results of custom sorters 2 | 3 | 4 | 5 | sort by function task.status.symbol 6 | Sort by the status symbol. 7 | => 8 | - [] Status EMPTY 9 | - [ ] Status Todo 10 | - [-] Status Cancelled 11 | - [/] Status In Progress 12 | - [Q] Status Non-Task 13 | - [x] Status Done 14 | ==================================================================================== 15 | 16 | -------------------------------------------------------------------------------- /tests/Scripting/ScriptingReference/CustomSorting/CustomSortingExamples.test.statuses_task.status.type_docs.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ```javascript 5 | sort by function task.status.type 6 | ``` 7 | 8 | - Unlike "Sort by status.type", this sorts the status types in alphabetical order. 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/Scripting/TasksFile.test.TasksFile_-_reading_frontmatter_should_read_yaml_all_property_types_empty.approved.json: -------------------------------------------------------------------------------- 1 | { 2 | "aliases": null, 3 | "creation date": null, 4 | "sample_checkbox_property": null, 5 | "sample_date_and_time_property": null, 6 | "sample_date_property": null, 7 | "sample_link_list_property": null, 8 | "sample_link_property": null, 9 | "sample_list_property": null, 10 | "sample_number_property": null, 11 | "sample_text_property": null, 12 | "tags": [] 13 | } 14 | -------------------------------------------------------------------------------- /tests/Statuses/StatusSettingsReport.test.StatusSettingsReport_should_create_set_of_sample_task_lines,_excluding_duplicate_and_empty_symbols.approved.md: -------------------------------------------------------------------------------- 1 | - [ ] Sample task 1: status symbol=`space` status name='Todo' 2 | - [x] Sample task 2: status symbol=`x` status name='Done' 3 | - [/] Sample task 3: status symbol=`/` status name='A slash' 4 | - [p] Sample task 4: status symbol=`p` status name='A p' 5 | -------------------------------------------------------------------------------- /tests/Statuses/StatusSettingsReport.test.StatusSettingsReport_should_create_set_of_sample_task_lines_include_global_filter.approved.md: -------------------------------------------------------------------------------- 1 | - [ ] #task Sample task 1: status symbol=`space` status name='Todo' 2 | - [x] #task Sample task 2: status symbol=`x` status name='Done' 3 | - [/] #task Sample task 3: status symbol=`/` status name='A slash' 4 | - [p] #task Sample task 4: status symbol=`p` status name='A p' 5 | -------------------------------------------------------------------------------- /tests/Statuses/StatusSettingsReport.test.StatusSettingsReport_should_tabulate_StatusSettings.approved.md: -------------------------------------------------------------------------------- 1 | | Status Symbol | Next Status Symbol | Status Name | Status Type | Problems (if any) | 2 | | ----- | ----- | ----- | ----- | ----- | 3 | | `space` | `x` | Todo | `TODO` | | 4 | | `x` | `space` | Done | `DONE` | | 5 | | `/` | `x` | In Progress | `IN_PROGRESS` | | 6 | | `-` | `space` | Cancelled | `CANCELLED` | | 7 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dates_dataview-snippet.approved.md: -------------------------------------------------------------------------------- 1 | - [ ] #task Has a created date [created:: 2023-04-13] 2 | - [ ] #task Has a scheduled date [scheduled:: 2023-04-14] 3 | - [ ] #task Has a start date [start:: 2023-04-15] 4 | - [ ] #task Has a due date [due:: 2023-04-16] 5 | - [x] #task Has a done date [completion:: 2023-04-17] 6 | - [-] #task Has a cancelled date [cancelled:: 2023-04-18] 7 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dates_tasksPluginEmoji-include.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [ ] #task Has a created date ➕ 2023-04-13 4 | - [ ] #task Has a scheduled date ⏳ 2023-04-14 5 | - [ ] #task Has a start date 🛫 2023-04-15 6 | - [ ] #task Has a due date 📅 2023-04-16 7 | - [x] #task Has a done date ✅ 2023-04-17 8 | - [-] #task Has a cancelled date ❌ 2023-04-18 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dates_tasksPluginEmoji-snippet.approved.md: -------------------------------------------------------------------------------- 1 | - [ ] #task Has a created date ➕ 2023-04-13 2 | - [ ] #task Has a scheduled date ⏳ 2023-04-14 3 | - [ ] #task Has a start date 🛫 2023-04-15 4 | - [ ] #task Has a due date 📅 2023-04-16 5 | - [x] #task Has a done date ✅ 2023-04-17 6 | - [-] #task Has a cancelled date ❌ 2023-04-18 7 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-include.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [ ] #task do this first [id:: dcf64c] 4 | - [ ] #task do this after first and some other task [dependsOn:: dcf64c,0h17ye] 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-snippet.approved.md: -------------------------------------------------------------------------------- 1 | - [ ] #task do this first [id:: dcf64c] 2 | - [ ] #task do this after first and some other task [dependsOn:: dcf64c,0h17ye] 3 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_tasksPluginEmoji-include.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [ ] #task do this first 🆔 dcf64c 4 | - [ ] #task do this after first and some other task ⛔ dcf64c,0h17ye 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_tasksPluginEmoji-snippet.approved.md: -------------------------------------------------------------------------------- 1 | - [ ] #task do this first 🆔 dcf64c 2 | - [ ] #task do this after first and some other task ⛔ dcf64c,0h17ye 3 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_OnCompletion_dataview-include.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [ ] #task Keep this task when done 4 | - [ ] #task Keep this task when done too [onCompletion:: keep] 5 | - [ ] #task Remove this task when done [onCompletion:: delete] 6 | - [ ] #task Remove completed instance of this recurring task when done [repeat:: every day] [onCompletion:: delete] 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_OnCompletion_dataview-snippet.approved.md: -------------------------------------------------------------------------------- 1 | - [ ] #task Keep this task when done 2 | - [ ] #task Keep this task when done too [onCompletion:: keep] 3 | - [ ] #task Remove this task when done [onCompletion:: delete] 4 | - [ ] #task Remove completed instance of this recurring task when done [repeat:: every day] [onCompletion:: delete] 5 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_OnCompletion_tasksPluginEmoji-include.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [ ] #task Keep this task when done 4 | - [ ] #task Keep this task when done too 🏁 keep 5 | - [ ] #task Remove this task when done 🏁 delete 6 | - [ ] #task Remove completed instance of this recurring task when done 🔁 every day 🏁 delete 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_OnCompletion_tasksPluginEmoji-snippet.approved.md: -------------------------------------------------------------------------------- 1 | - [ ] #task Keep this task when done 2 | - [ ] #task Keep this task when done too 🏁 keep 3 | - [ ] #task Remove this task when done 🏁 delete 4 | - [ ] #task Remove completed instance of this recurring task when done 🔁 every day 🏁 delete 5 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-include.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [ ] #task Lowest priority [priority:: lowest] 4 | - [ ] #task Low priority [priority:: low] 5 | - [ ] #task Normal priority 6 | - [ ] #task Medium priority [priority:: medium] 7 | - [ ] #task High priority [priority:: high] 8 | - [ ] #task Highest priority [priority:: highest] 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-snippet.approved.md: -------------------------------------------------------------------------------- 1 | - [ ] #task Lowest priority [priority:: lowest] 2 | - [ ] #task Low priority [priority:: low] 3 | - [ ] #task Normal priority 4 | - [ ] #task Medium priority [priority:: medium] 5 | - [ ] #task High priority [priority:: high] 6 | - [ ] #task Highest priority [priority:: highest] 7 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-include.approved.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [ ] #task Lowest priority ⏬ 4 | - [ ] #task Low priority 🔽 5 | - [ ] #task Normal priority 6 | - [ ] #task Medium priority 🔼 7 | - [ ] #task High priority ⏫ 8 | - [ ] #task Highest priority 🔺 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-snippet.approved.md: -------------------------------------------------------------------------------- 1 | - [ ] #task Lowest priority ⏬ 2 | - [ ] #task Low priority 🔽 3 | - [ ] #task Normal priority 4 | - [ ] #task Medium priority 🔼 5 | - [ ] #task High priority ⏫ 6 | - [ ] #task Highest priority 🔺 7 | -------------------------------------------------------------------------------- /tests/TestingTools/ApprovalTestsDemo.test.ApprovalTests_JsonVerify.approved.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fred", 3 | "age": 30 4 | } 5 | -------------------------------------------------------------------------------- /tests/TestingTools/ApprovalTestsDemo.test.ApprovalTests_SimpleVerify.approved.txt: -------------------------------------------------------------------------------- 1 | Hello From Approvals 2 | -------------------------------------------------------------------------------- /tests/TestingTools/CombinationApprovalsAsync.test.CombinationApprovalsAsync_verify2.approved.txt: -------------------------------------------------------------------------------- 1 | title 2 | (0 + 2) => 2 3 | (0 + 3) => 3 4 | (1 + 2) => 3 5 | (1 + 3) => 4 6 | -------------------------------------------------------------------------------- /tests/TestingTools/CombinationApprovalsAsync.test.CombinationApprovalsAsync_verify3.approved.txt: -------------------------------------------------------------------------------- 1 | title 2 | (0 + 2 + 4) => 6 3 | (0 + 2 + 5) => 7 4 | (0 + 3 + 4) => 7 5 | (0 + 3 + 5) => 8 6 | (1 + 2 + 4) => 7 7 | (1 + 2 + 5) => 8 8 | (1 + 3 + 4) => 8 9 | (1 + 3 + 5) => 9 10 | -------------------------------------------------------------------------------- /tests/TestingTools/CombinationApprovalsAsync.test.CombinationApprovalsAsync_verify4.approved.txt: -------------------------------------------------------------------------------- 1 | title 2 | (0 + 2 + 4 + 6) => 12 3 | (0 + 2 + 4 + 7) => 13 4 | (0 + 2 + 5 + 6) => 13 5 | (0 + 2 + 5 + 7) => 14 6 | (0 + 3 + 4 + 6) => 13 7 | (0 + 3 + 4 + 7) => 14 8 | (0 + 3 + 5 + 6) => 14 9 | (0 + 3 + 5 + 7) => 15 10 | (1 + 2 + 4 + 6) => 13 11 | (1 + 2 + 4 + 7) => 14 12 | (1 + 2 + 5 + 6) => 14 13 | (1 + 2 + 5 + 7) => 15 14 | (1 + 3 + 4 + 6) => 14 15 | (1 + 3 + 4 + 7) => 15 16 | (1 + 3 + 5 + 6) => 15 17 | (1 + 3 + 5 + 7) => 16 18 | -------------------------------------------------------------------------------- /tests/TestingTools/CombinationApprovalsAsync.test.demonstrate_async_combination_approvals_documentation_example.approved.txt: -------------------------------------------------------------------------------- 1 | sample outputs 2 | (0, hello, true) => 0 'hello' true 3 | (0, hello, false) => 0 'hello' false 4 | (0, world, true) => 0 'world' true 5 | (0, world, false) => 0 'world' false 6 | (1, hello, true) => 1 'hello' true 7 | (1, hello, false) => 1 'hello' false 8 | (1, world, true) => 1 'world' true 9 | (1, world, false) => 1 'world' false 10 | -------------------------------------------------------------------------------- /tests/TestingTools/HTMLHelpers.ts: -------------------------------------------------------------------------------- 1 | import * as prettier from 'prettier'; 2 | 3 | export function prettifyHTML(modalHTML: string) { 4 | return prettier.format(modalHTML, { 5 | parser: 'html', 6 | bracketSameLine: true, 7 | htmlWhitespaceSensitivity: 'ignore', 8 | printWidth: 120, 9 | }); 10 | } 11 | -------------------------------------------------------------------------------- /tests/TestingTools/SortingTestHelpers.ts: -------------------------------------------------------------------------------- 1 | import type { Sorter } from '../../src/Query/Sort/Sorter'; 2 | import type { Task } from '../../src/Task/Task'; 3 | import { Sort } from '../../src/Query/Sort/Sort'; 4 | import { SearchInfo } from '../../src/Query/SearchInfo'; 5 | 6 | export function sortBy(sorters: Sorter[], tasks: Task[]) { 7 | return Sort.by(sorters, tasks, SearchInfo.fromAllTasks(tasks)); 8 | } 9 | -------------------------------------------------------------------------------- /tests/global-setup.js: -------------------------------------------------------------------------------- 1 | module.exports = async () => { 2 | process.env.TZ = 'UTC'; 3 | 4 | /* 5 | * Below is an example alternative time zone, for experimentation. 6 | * See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 7 | * Note: Currently many tests fail if the timezone is changed, due to 8 | * the use of `moment.toISOString()` in the `toEqualMoment()` 9 | * custom matcher in our tests. 10 | */ 11 | // process.env.TZ = 'Pacific/Auckland'; 12 | }; 13 | --------------------------------------------------------------------------------