Repository: obsidian-tasks-group/obsidian-tasks
Pull request #2639 (2024-02-04 13:39:03)

fix!!: Rename field to Task.dependsOn to fix "blocked by" ambiguity
<!--- Provide a general summary of your changes in the Title above -->

# Description

<!--- Describe your changes in detail -->

I've been aware for a while that `Task.blockedBy` is confusing, when the filters now only treat tasks as `blocked` or `blocking` if both the tasks has status type `TODO` or `IN_PROGRESS`.

This change renames `Task.blockedBy` (back) to `Task.dependsOn`, to remove that ambiguity.

(This is actually reverting a change made during the development of the dependencies feature - it's been a long-standing topic!)

_Note: I'm labelling it a breaking change, but it modifies facilities not yet released, so won't get a bump in the major version number._

Changes made:

- Rename uses of `blockedBy` in  the code to `dependsOn`
- Renamed the CSS class used for this field to `"task-dependsOn"`
- Update the documentation
- Also add samples of dependencies fields to the file-format pages in the demo vault
- Update the tests

## Motivation and Context

This will make the documentation a bit easier to write. We can now separate out the concepts **depends on** and **blocked by**.
<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->

## How has this been tested?

<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, tests ran to see how -->
<!--- your change affects other areas of the code, etc. -->

- Automated tests
- Exploratory testing

## Screenshots (if appropriate)

## Types of changes

<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->

Changes visible to users:

- [x] **Breaking change** (prefix: `feat!!` or `fix!!` - fix or feature that would cause existing functionality to not work as expected)
    - Fix to unreleased feature
- [x] **Documentation** (prefix: `docs` - improvements to any documentation content **for users**)
- [x] **Sample vault** (prefix: `vault` - improvements to the [Tasks-Demo sample vault](https://github.com/obsidian-tasks-group/obsidian-tasks/tree/main/resources/sample_vaults/Tasks-Demo))

Internal changes:

- [x] **Tests** (prefix: `test` - additions and improvements to unit tests and the smoke tests)

## Checklist

<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->

- [x] My code follows the code style of this project and passes `yarn run lint`.
- [x] My change requires a change to the documentation.
- [x] I have [updated the documentation](https://publish.obsidian.md/tasks-contributing/Documentation/About+Documentation) accordingly.
- [x] My change has adequate [Unit Test coverage](https://publish.obsidian.md/tasks-contributing/Testing/About+Testing).

## Terms

<!--
By submitting this pull request, you must agree to follow our
[contributing guide](https://publish.obsidian.md/tasks-contributing) and
[Code of Conduct](https://github.com/obsidian-tasks-group/obsidian-tasks/blob/main/CODE_OF_CONDUCT.md).
Put an x in the boxes to confirm you agree.
-->

- [x] My contribution follow this project's [contributing guide](https://publish.obsidian.md/tasks-contributing)
- [x] I agree to follow this project's [Code of Conduct](https://github.com/obsidian-tasks-group/obsidian-tasks/blob/main/CODE_OF_CONDUCT.md)



Patch:
diff --git a/docs/Advanced/Styling.md b/docs/Advanced/Styling.md
index b39b4be5..e0ac08e7 100644
--- a/docs/Advanced/Styling.md
+++ b/docs/Advanced/Styling.md
@@ -83,7 +83,7 @@ The generic classes are:
 - `task-done`
 - `task-recurring`
 - `task-id`
-- `task-blockedBy`
+- `task-dependsOn`
 
 In addition to the generic classes, there are [**data attributes**](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes) that represent the content of the various task components.
 
diff --git a/docs/Getting Started/Task Dependencies.md b/docs/Getting Started/Task Dependencies.md
index d709a6d4..be6b80ee 100644
--- a/docs/Getting Started/Task Dependencies.md
+++ b/docs/Getting Started/Task Dependencies.md
@@ -61,7 +61,7 @@ Until this task is marked as complete, at which time Obsidian Tasks sees that 'T
 
 Fields:
 
-- `blockedBy`
+- `dependsOn`
 - `id`
 
 UI:
diff --git a/docs/Queries/Filters.md b/docs/Queries/Filters.md
index 0a98f898..cd7adb16 100644
--- a/docs/Queries/Filters.md
+++ b/docs/Queries/Filters.md
@@ -466,7 +466,7 @@ At a high level, task dependencies define the order in which you want to work on
 A task is treated as `blocking` if:
 
 - it has an `id` value,
-- at least one other task in the vault has that `id` value in its `blockedBy` list,
+- at least one other task in the vault has that `id` value in its `dependsOn` list,
 - both tasks have status type `TODO` or `IN_PROGRESS`.
 
 For example:
@@ -497,8 +497,8 @@ For more information, see [[Task Dependencies]].
 
 A task is treated as `blocked` if:
 
-- it has one or more `blockedBy` values,
-- its `blockedBy` list includes the id any tasks in the vault,
+- it has one or more `dependsOn` values,
+- its `dependsOn` list includes the id any tasks in the vault,
 - both tasks have status type `TODO` or `IN_PROGRESS`.
 
 For example:
@@ -521,7 +521,7 @@ For more information, see [[Task Dependencies]].
 
 ### Id
 
-The `id` field adds an identifier to a task, so that other tasks may be marked as `blockedBy` that task.
+The `id` field adds an identifier to a task, so that other tasks may be marked as `dependsOn` that task.
 
 - `has id`
 - `no id`
@@ -539,9 +539,9 @@ For more information, see [[Task Dependencies]].
 
 Since Tasks X.Y.Z, **[[Custom Filters|custom filtering]] by Id** is now possible, using `task.id`.
 
-### Blocked By
+### Depends On
 
-The `blockedBy` field allows a task to be marked as depending on the `id` of one or more other tasks. Multiple `id` values are separated by commas (`,`) with no spaces.
+The `dependsOn` field allows a task to be marked as depending on the `id` of one or more other tasks. Multiple `id` values are separated by commas (`,`) with no spaces.
 
 - `has blocked by`
 - `no blocked by`
@@ -550,9 +550,9 @@ For more information, see [[Task Dependencies]].
 
 > [!released]
 >
-> - Task Blocked By was introduced in Tasks X.Y.Z.
+> - Task Depends On was introduced in Tasks X.Y.Z.
 
-Since Tasks X.Y.Z, **[[Custom Filters|custom filtering]] by Blocked By** is now possible, using `task.blockedBy`.
+Since Tasks X.Y.Z, **[[Custom Filters|custom filtering]] by Depends On** is now possible, using `task.dependsOn`.
 
 ## Filters for Dates in Tasks
 
diff --git a/docs/Queries/Grouping.md b/docs/Queries/Grouping.md
index be4de83c..f40c66e9 100644
--- a/docs/Queries/Grouping.md
+++ b/docs/Queries/Grouping.md
@@ -188,22 +188,22 @@ group by function task.id
 
 <!-- placeholder to force blank line after included text --><!-- endInclude -->
 
-### Blocked By
+### Depends On
 
-There is no built-in instruction to group by 'Blocked By'.
+There is no built-in instruction to group by 'Depends On'.
 
 For more information, see [[Task Dependencies]].
 
 > [!released]
 >
-> - Task Blocked By was introduced in Tasks X.Y.Z.
+> - Task Depends On was introduced in Tasks X.Y.Z.
 
-Since Tasks X.Y.Z, **[[Custom Grouping|custom grouping]]  by Blocked By** is now possible, using `task.blockedBy`.
+Since Tasks X.Y.Z, **[[Custom Grouping|custom grouping]] by Depends On** is now possible, using `task.dependsOn`.
 
-<!-- placeholder to force blank line before included text --><!-- include: CustomGroupingExamples.test.dependencies_task.blockedBy_docs.approved.md -->
+<!-- placeholder to force blank line before included text --><!-- include: CustomGroupingExamples.test.dependencies_task.dependsOn_docs.approved.md -->
 
 ```javascript
-group by function task.blockedBy
+group by function task.dependsOn
 ```
 
 - Group by the Ids of the tasks that each task depends on, if any.
diff --git a/docs/Queries/Layout.md b/docs/Queries/Layout.md
index fcba0a20..3b48b27c 100644
--- a/docs/Queries/Layout.md
+++ b/docs/Queries/Layout.md
@@ -17,6 +17,8 @@ The following elements exist:
 - `postpone button`
 - `backlink`
 - `urgency`
+- `id`
+- `blocked by`
 - `priority`
 - `cancelled date`
 - `created date`
@@ -42,6 +44,7 @@ The following elements exist:
 > - `created date` was introduced in Tasks 2.0.0.
 > - `tags` was introduced in Tasks 4.1.0.
 > - `cancelled date` was introduced in Tasks 5.5.0.
+> - `id` and `blocked by` were introduced in Tasks X.Y.Z.
 
 All of these elements except `urgency` are shown by default, so you will use the command `hide`
 if you do not want to show any of them, or the command `show` to show the urgency score.
diff --git a/docs/Queries/Sorting.md b/docs/Queries/Sorting.md
index 4564d3cd..1f03a2f2 100644
--- a/docs/Queries/Sorting.md
+++ b/docs/Queries/Sorting.md
@@ -172,17 +172,17 @@ For more information, see [[Task Dependencies]].
 
 Since Tasks X.Y.Z, **[[Custom Sorting|custom sorting]] by Id** is now possible, using `task.id`.
 
-### Blocked By
+### Depends On
 
-There is no built-in instruction to sort by 'Blocked By'.
+There is no built-in instruction to sort by 'Depends On'.
 
 For more information, see [[Task Dependencies]].
 
 > [!released]
 >
-> - Task Blocked By was introduced in Tasks X.Y.Z.
+> - Task Depends On was introduced in Tasks X.Y.Z.
 
-Since Tasks X.Y.Z, **[[Custom Sorting|custom sorting]]  by Blocked By** is now possible, using `task.blockedBy`.
+Since Tasks X.Y.Z, **[[Custom Sorting|custom sorting]]  by Depends On** is now possible, using `task.dependsOn`.
 
 ## Sort by Dates in Tasks
 
diff --git a/docs/Quick Reference.md b/docs/Quick Reference.md
index 2d1adade..455bac29 100644
--- a/docs/Quick Reference.md
+++ b/docs/Quick Reference.md
@@ -20,7 +20,7 @@ This table summarizes the filters and other options available inside a `tasks` b
 |                                                                                                                                                                                                                                                                                                                                                      |                                             |                        |                        | `task.status.nextSymbol`                                                                                                       |
 | **[[Task Dependencies]]**                                                                                                                                                                                                                                                                                                                            |                                             |                        |                        |                                                                                                                                |
 | `id (includes, does not include) <string>`<br>`id (regex matches, regex does not match) /regex/i`<br>`has id`<br>`no id`                                                                                                                                                                                                                             | `sort by id`                                | `group by id`          | `hide id`              | `task.id`                                                                                                                      |
-| `has blocked by`<br>`no blocked by`                                                                                                                                                                                                                                                                                                                  |                                             |                        | `hide depends on`      | `task.blockedBy`                                                                                                               |
+| `has blocked by`<br>`no blocked by`                                                                                                                                                                                                                                                                                                                  |                                             |                        | `hide depends on`      | `task.dependsOn`                                                                                                               |
 | `is blocked`<br>`is not blocked`                                                                                                                                                                                                                                                                                                                     |                                             |                        |                        | `task.isBlocked(query.allTasks)`                                                                                               |
 | `is blocking`<br>`is not blocking`                                                                                                                                                                                                                                                                                                                   |                                             |                        |                        | `task.isBlocking(query.allTasks)`                                                                                              |
 | **[[Filters#Filters for Dates in Tasks\|Dates]]**                                                                                                                                                                                                                                                                                                    |                                             |                        |                        |                                                                                                                                |
diff --git a/docs/Reference/Task Formats/Dataview Format.md b/docs/Reference/Task Formats/Dataview Format.md
index 6eab7192..d8220ece 100644
--- a/docs/Reference/Task Formats/Dataview Format.md
+++ b/docs/Reference/Task Formats/Dataview Format.md
@@ -136,7 +136,7 @@ For more information, see [[Recurring Tasks]].
 <!-- snippet: DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-snippet.approved.md -->
 ```md
 - [ ] do this first  [id:: dcf64c]
-- [ ] do this after first and some other task  [blockedBy:: dcf64c,0h17ye]
+- [ ] do this after first and some other task  [dependsOn:: dcf64c,0h17ye]
 ```
 <!-- endSnippet -->
 
diff --git a/docs/Scripting/Task Properties.md b/docs/Scripting/Task Properties.md
index 92934174..9cde6d10 100644
--- a/docs/Scripting/Task Properties.md
+++ b/docs/Scripting/Task Properties.md
@@ -120,7 +120,7 @@ For more information, including adding your own customised statuses, see [[Statu
 | Field | Type 1 | Example 1 | Type 2 | Example 2 |
 | ----- | ----- | ----- | ----- | ----- |
 | `task.id` | `string` | `'abcdef'` | `string` | `''` |
-| `task.blockedBy` | `string[]` | `['123456', 'abc123']` | `any[]` | `[]` |
+| `task.dependsOn` | `string[]` | `['123456', 'abc123']` | `any[]` | `[]` |
 | `task.isBlocked(query.allTasks)` | `boolean` | `false` | `boolean` | `false` |
 | `task.isBlocking(query.allTasks)` | `boolean` | `false` | `boolean` | `false` |
 
diff --git a/resources/sample_vaults/Tasks-Demo/Formats/Dataview Format.md b/resources/sample_vaults/Tasks-Demo/Formats/Dataview Format.md
index 0baa9d26..3fb213e2 100644
--- a/resources/sample_vaults/Tasks-Demo/Formats/Dataview Format.md
+++ b/resources/sample_vaults/Tasks-Demo/Formats/Dataview Format.md
@@ -2,7 +2,7 @@
 
 The fields shown below can be surrounded by either `[]` or `()`.
 
-## Dataview Format Dates
+## Dataview Format for Dates
 
 <!-- placeholder to force blank line before included text --><!-- include: DocsSamplesForTaskFormats.test.Serializer_Dates_dataview-include.approved.md -->
 
@@ -32,6 +32,15 @@ The fields shown below can be surrounded by either `[]` or `()`.
 
 - [ ] #task Is a recurring task  [repeat:: every day when done]
 
+## Dataview Format for Dependencies
+
+<!-- placeholder to force blank line before included text --><!-- include: DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-include.approved.md -->
+
+- [ ] do this first  [id:: dcf64c]
+- [ ] do this after first and some other task  [dependsOn:: dcf64c,0h17ye]
+
+<!-- placeholder to force blank line after included text --><!-- endInclude -->
+
 ## All Dataview Fields
 
 - [ ] #task Has one of every field except done  [priority:: high]  [repeat:: every day]  [start:: 2023-04-24]  [scheduled:: 2023-04-26]  [due:: 2023-04-27]
diff --git a/resources/sample_vaults/Tasks-Demo/Formats/Tasks Format.md b/resources/sample_vaults/Tasks-Demo/Formats/Tasks Format.md
index 7ca3e934..5503d315 100644
--- a/resources/sample_vaults/Tasks-Demo/Formats/Tasks Format.md
+++ b/resources/sample_vaults/Tasks-Demo/Formats/Tasks Format.md
@@ -32,6 +32,15 @@
 
 ---
 
+## Tasks Format for Dependencies
+
+<!-- placeholder to force blank line before included text --><!-- include: DocsSamplesForTaskFormats.test.Serializer_Dependencies_tasksPluginEmoji-include.approved.md -->
+
+- [ ] do this first 🆔 dcf64c
+- [ ] do this after first and some other task ⛔️ dcf64c,0h17ye
+
+<!-- placeholder to force blank line after included text --><!-- endInclude -->
+
 ## Confirming that the fields are read correctly
 
 ```tasks
diff --git a/src/Commands/CreateOrEditTaskParser.ts b/src/Commands/CreateOrEditTaskParser.ts
index 7f746ae2..c6759b50 100644
--- a/src/Commands/CreateOrEditTaskParser.ts
+++ b/src/Commands/CreateOrEditTaskParser.ts
@@ -91,7 +91,7 @@ export const taskFromLine = ({ line, path }: { line: string; path: string }): Ta
             doneDate: null,
             cancelledDate: null,
             recurrence: null,
-            blockedBy: [],
+            dependsOn: [],
             id: '',
             blockLink: '',
             tags: [],
@@ -136,6 +136,6 @@ export const taskFromLine = ({ line, path }: { line: string; path: string }): Ta
         // Not needed since the inferred status is always re-computed after submitting.
         scheduledDateIsInferred: false,
         id: '',
-        blockedBy: [],
+        dependsOn: [],
     });
 };
diff --git a/src/Layout/TaskLayoutOptions.ts b/src/Layout/TaskLayoutOptions.ts
index ec8a62af..fb491eb9 100644
--- a/src/Layout/TaskLayoutOptions.ts
+++ b/src/Layout/TaskLayoutOptions.ts
@@ -8,7 +8,7 @@ export enum TaskLayoutComponent {
     // NEW_TASK_FIELD_EDIT_REQUIRED
     Description = 'description',
     Id = 'id',
-    BlockedBy = 'blockedBy',
+    DependsOn = 'dependsOn',
     Priority = 'priority',
     RecurrenceRule = 'recurrenceRule',
     CreatedDate = 'createdDate',
diff --git a/src/Query/Filter/BlockedByField.ts b/src/Query/Filter/BlockedByField.ts
index c12fd76e..0d81bbcc 100644
--- a/src/Query/Filter/BlockedByField.ts
+++ b/src/Query/Filter/BlockedByField.ts
@@ -8,8 +8,8 @@ export class BlockedByField extends Field {
 
     constructor() {
         super();
-        this.filterInstructions.add('has blocked by', (task: Task) => task.blockedBy.length > 0);
-        this.filterInstructions.add('no blocked by', (task: Task) => task.blockedBy.length === 0);
+        this.filterInstructions.add('has blocked by', (task: Task) => task.dependsOn.length > 0);
+        this.filterInstructions.add('no blocked by', (task: Task) => task.dependsOn.length === 0);
     }
 
     // -----------------------------------------------------------------------------------------------------------------
diff --git a/src/Query/Query.ts b/src/Query/Query.ts
index e7ea8587..be77e48a 100644
--- a/src/Query/Query.ts
+++ b/src/Query/Query.ts
@@ -319,7 +319,7 @@ Problem line: "${line}"`;
                     this._taskLayoutOptions.setVisibility(TaskLayoutComponent.Id, !hide);
                     break;
                 case 'depends on':
-                    this._taskLayoutOptions.setVisibility(TaskLayoutComponent.BlockedBy, !hide);
+                    this._taskLayoutOptions.setVisibility(TaskLayoutComponent.DependsOn, !hide);
                     break;
                 default:
                     this.setError('do not understand hide/show option', line);
diff --git a/src/Renderer/TaskFieldRenderer.ts b/src/Renderer/TaskFieldRenderer.ts
index 425759ad..9fd2f1b1 100644
--- a/src/Renderer/TaskFieldRenderer.ts
+++ b/src/Renderer/TaskFieldRenderer.ts
@@ -167,7 +167,7 @@ const taskFieldHTMLData: { [c in TaskLayoutComponent]: TaskFieldHTMLData } = {
 
     description: createFieldWithoutDataAttributes('task-description'),
     recurrenceRule: createFieldWithoutDataAttributes('task-recurring'),
-    blockedBy: createFieldWithoutDataAttributes('task-blockedBy'),
+    dependsOn: createFieldWithoutDataAttributes('task-dependsOn'),
     id: createFieldWithoutDataAttributes('task-id'),
     blockLink: createFieldWithoutDataAttributes('task-block-link'),
 };
diff --git a/src/Task/Task.ts b/src/Task/Task.ts
index 1889b7cb..058c04f6 100644
--- a/src/Task/Task.ts
+++ b/src/Task/Task.ts
@@ -59,7 +59,7 @@ export class Task {
 
     public readonly recurrence: Recurrence | null;
 
-    public readonly blockedBy: string[];
+    public readonly dependsOn: string[];
     public readonly id: string;
 
     /** The blockLink is a "^" annotation after the dates/recurrence rules.
@@ -91,7 +91,7 @@ export class Task {
         doneDate,
         cancelledDate,
         recurrence,
-        blockedBy,
+        dependsOn,
         id,
         blockLink,
         tags,
@@ -112,7 +112,7 @@ export class Task {
         doneDate: moment.Moment | null;
         cancelledDate: moment.Moment | null;
         recurrence: Recurrence | null;
-        blockedBy: string[] | [];
+        dependsOn: string[] | [];
         id: string;
         blockLink: string;
         tags: string[] | [];
@@ -139,7 +139,7 @@ export class Task {
 
         this.recurrence = recurrence;
 
-        this.blockedBy = blockedBy;
+        this.dependsOn = dependsOn;
         this.id = id;
 
         this.blockLink = blockLink;
@@ -458,7 +458,7 @@ export class Task {
      * @param allTasks - all the tasks in the vault. In custom queries, this is available via query.allTasks.
      */
     public isBlocked(allTasks: Readonly<Task[]>) {
-        if (this.blockedBy.length === 0) {
+        if (this.dependsOn.length === 0) {
             return false;
         }
 
@@ -466,7 +466,7 @@ export class Task {
             return false;
         }
 
-        for (const depId of this.blockedBy) {
+        for (const depId of this.dependsOn) {
             const depTask = allTasks.find((task) => task.id === depId && !task.isDone);
             if (!depTask) {
                 // There is no not-done task with this id.
@@ -481,7 +481,7 @@ export class Task {
     }
 
     /**
-     * A Task is blocking if there is any other not-done task blockedBy value with its id.
+     * A Task is blocking if there is any other not-done task dependsOn value with its id.
      *
      * 'Done' tasks (with status DONE, CANCELLED or NON_TASK) are never blocking.
      * Only direct dependencies are considered.
@@ -501,7 +501,7 @@ export class Task {
                 return false;
             }
 
-            return task.blockedBy.includes(this.id);
+            return task.dependsOn.includes(this.id);
         });
     }
 
@@ -784,7 +784,7 @@ export class Task {
             'blockLink',
             'scheduledDateIsInferred',
             'id',
-            'blockedBy',
+            'dependsOn',
         ];
         for (const el of args) {
             if (this[el]?.toString() !== other[el]?.toString()) return false;
@@ -861,7 +861,7 @@ export class Task {
  * @param allTasks
  */
 export function isBlocked(thisTask: Task, allTasks: Task[]) {
-    if (thisTask.blockedBy.length === 0) {
+    if (thisTask.dependsOn.length === 0) {
         return false;
     }
 
@@ -869,7 +869,7 @@ export function isBlocked(thisTask: Task, allTasks: Task[]) {
         return false;
     }
 
-    for (const depId of thisTask.blockedBy) {
+    for (const depId of thisTask.dependsOn) {
         const depTask = allTasks.find((task) => task.id === depId && !task.isDone);
         if (!depTask) {
             // There is no not-done task with this id.
diff --git a/src/Task/TaskDependency.ts b/src/Task/TaskDependency.ts
index d7321e8f..79aed6ba 100644
--- a/src/Task/TaskDependency.ts
+++ b/src/Task/TaskDependency.ts
@@ -24,12 +24,12 @@ export function ensureTaskHasId(child: Task, existingIds: string[]) {
 }
 
 export function setDependenciesOnTasksWithIds(parent: Task, childrenWithIds: Task[]): Task {
-    const newBlockedBy = childrenWithIds.map((task) => {
+    const newDependsOn = childrenWithIds.map((task) => {
         return task.id;
     });
     let newParent = parent;
-    if (parent.blockedBy.toString() !== newBlockedBy.toString()) {
-        newParent = new Task({ ...parent, blockedBy: newBlockedBy });
+    if (parent.dependsOn.toString() !== newDependsOn.toString()) {
+        newParent = new Task({ ...parent, dependsOn: newDependsOn });
     }
 
     return newParent;
@@ -37,9 +37,9 @@ export function setDependenciesOnTasksWithIds(parent: Task, childrenWithIds: Tas
 
 export function addDependencyToParent(parent: Task, child: Task) {
     let newParent = parent;
-    if (!parent.blockedBy.includes(child.id)) {
-        const newBlockedBy = [...parent.blockedBy, child.id];
-        newParent = new Task({ ...parent, blockedBy: newBlockedBy });
+    if (!parent.dependsOn.includes(child.id)) {
+        const newDependsOn = [...parent.dependsOn, child.id];
+        newParent = new Task({ ...parent, dependsOn: newDependsOn });
     }
     return newParent;
 }
@@ -52,9 +52,9 @@ export function addDependency(parent: Task, child: Task, existingIds: string[])
 
 export function removeDependency(parent: Task, child: Task) {
     let newParent = parent;
-    if (parent.blockedBy.includes(child.id)) {
-        const newBlockedBy = parent.blockedBy.filter((blockedBy) => blockedBy !== child.id);
-        newParent = new Task({ ...parent, blockedBy: newBlockedBy });
+    if (parent.dependsOn.includes(child.id)) {
+        const newDependsOn = parent.dependsOn.filter((dependsOn) => dependsOn !== child.id);
+        newParent = new Task({ ...parent, dependsOn: newDependsOn });
     }
 
     return newParent;
diff --git a/src/TaskSerializer/DataviewTaskSerializer.ts b/src/TaskSerializer/DataviewTaskSerializer.ts
index a91c3dc7..3fc59f07 100644
--- a/src/TaskSerializer/DataviewTaskSerializer.ts
+++ b/src/TaskSerializer/DataviewTaskSerializer.ts
@@ -76,7 +76,7 @@ export const DATAVIEW_SYMBOLS = {
     cancelledDateSymbol: 'cancelled::',
     recurrenceSymbol: 'repeat::',
     idSymbol: 'id::',
-    blockedBySymbol: 'blockedBy::',
+    dependsOnSymbol: 'dependsOn::',
     TaskFormatRegularExpressions: {
         priorityRegex: toInlineFieldRegex(/priority:: *(highest|high|medium|low|lowest)/),
         startDateRegex: toInlineFieldRegex(/start:: *(\d{4}-\d{2}-\d{2})/),
@@ -86,7 +86,7 @@ export const DATAVIEW_SYMBOLS = {
         doneDateRegex: toInlineFieldRegex(/completion:: *(\d{4}-\d{2}-\d{2})/),
         cancelledDateRegex: toInlineFieldRegex(/cancelled:: *(\d{4}-\d{2}-\d{2})/),
         recurrenceRegex: toInlineFieldRegex(/repeat:: *([a-zA-Z0-9, !]+)/),
-        blockedByRegex: toInlineFieldRegex(/blockedBy:: *([a-z0-9]+( *, *[a-z0-9]+ *)*)$/),
+        dependsOnRegex: toInlineFieldRegex(/dependsOn:: *([a-z0-9]+( *, *[a-z0-9]+ *)*)$/),
         idRegex: toInlineFieldRegex(/id:: *([a-z0-9]+)/),
     },
 } as const;
diff --git a/src/TaskSerializer/DefaultTaskSerializer.ts b/src/TaskSerializer/DefaultTaskSerializer.ts
index 117751d4..e37b494a 100644
--- a/src/TaskSerializer/DefaultTaskSerializer.ts
+++ b/src/TaskSerializer/DefaultTaskSerializer.ts
@@ -30,7 +30,7 @@ export interface DefaultTaskSerializerSymbols {
     readonly cancelledDateSymbol: string;
     readonly recurrenceSymbol: string;
     readonly idSymbol: string;
-    readonly blockedBySymbol: string;
+    readonly dependsOnSymbol: string;
     readonly TaskFormatRegularExpressions: {
         priorityRegex: RegExp;
         startDateRegex: RegExp;
@@ -41,7 +41,7 @@ export interface DefaultTaskSerializerSymbols {
         cancelledDateRegex: RegExp;
         recurrenceRegex: RegExp;
         idRegex: RegExp;
-        blockedByRegex: RegExp;
+        dependsOnRegex: RegExp;
     };
 }
 
@@ -66,7 +66,7 @@ export const DEFAULT_SYMBOLS: DefaultTaskSerializerSymbols = {
     doneDateSymbol: '✅',
     cancelledDateSymbol: '❌',
     recurrenceSymbol: '🔁',
-    blockedBySymbol: '⛔️',
+    dependsOnSymbol: '⛔️',
     idSymbol: '🆔',
     TaskFormatRegularExpressions: {
         // The following regex's end with `$` because they will be matched and
@@ -79,7 +79,7 @@ export const DEFAULT_SYMBOLS: DefaultTaskSerializerSymbols = {
         doneDateRegex: /✅ *(\d{4}-\d{2}-\d{2})$/u,
         cancelledDateRegex: /❌ *(\d{4}-\d{2}-\d{2})$/u,
         recurrenceRegex: /🔁 ?([a-zA-Z0-9, !]+)$/iu,
-        blockedByRegex: /⛔️ *([a-z0-9]+( *, *[a-z0-9]+ *)*)$/iu,
+        dependsOnRegex: /⛔️ *([a-z0-9]+( *, *[a-z0-9]+ *)*)$/iu,
         idRegex: /🆔 *([a-z0-9]+)$/iu,
     },
 } as const;
@@ -130,7 +130,7 @@ export class DefaultTaskSerializer implements TaskSerializer {
             cancelledDateSymbol,
             recurrenceSymbol,
             dueDateSymbol,
-            blockedBySymbol,
+            dependsOnSymbol,
             idSymbol,
         } = this.symbols;
 
@@ -170,9 +170,9 @@ export class DefaultTaskSerializer implements TaskSerializer {
             case TaskLayoutComponent.RecurrenceRule:
                 if (!task.recurrence) return '';
                 return symbolAndStringValue(shortMode, recurrenceSymbol, task.recurrence.toText());
-            case TaskLayoutComponent.BlockedBy: {
-                if (task.blockedBy.length === 0) return '';
-                return symbolAndStringValue(shortMode, blockedBySymbol, task.blockedBy.join(','));
+            case TaskLayoutComponent.DependsOn: {
+                if (task.dependsOn.length === 0) return '';
+                return symbolAndStringValue(shortMode, dependsOnSymbol, task.dependsOn.join(','));
             }
             case TaskLayoutComponent.Id:
                 return symbolAndStringValue(shortMode, idSymbol, task.id);
@@ -233,7 +233,7 @@ export class DefaultTaskSerializer implements TaskSerializer {
         let recurrenceRule: string = '';
         let recurrence: Recurrence | null = null;
         let id: string = '';
-        let blockedBy: string[] | [] = [];
+        let dependsOn: string[] | [] = [];
         // Tags that are removed from the end while parsing, but we want to add them back for being part of the description.
         // In the original task description they are possibly mixed with other components
         // (e.g. #tag1 <due date> #tag2), they do not have to all trail all task components,
@@ -323,11 +323,11 @@ export class DefaultTaskSerializer implements TaskSerializer {
                 matched = true;
             }
 
-            const blockedByMatch = line.match(TaskFormatRegularExpressions.blockedByRegex);
+            const dependsOnMatch = line.match(TaskFormatRegularExpressions.dependsOnRegex);
 
-            if (blockedByMatch != null) {
-                line = line.replace(TaskFormatRegularExpressions.blockedByRegex, '').trim();
-                blockedBy = blockedByMatch[1]
+            if (dependsOnMatch != null) {
+                line = line.replace(TaskFormatRegularExpressions.dependsOnRegex, '').trim();
+                dependsOn = dependsOnMatch[1]
                     .replace(' ', '')
                     .split(',')
                     .filter((item) => item !== '');
@@ -364,7 +364,7 @@ export class DefaultTaskSerializer implements TaskSerializer {
             cancelledDate,
             recurrence,
             id,
-            blockedBy,
+            dependsOn,
             tags: Task.extractHashtags(line),
         };
     }
diff --git a/src/TaskSerializer/index.ts b/src/TaskSerializer/index.ts
index 78c30a01..b7cb622f 100644
--- a/src/TaskSerializer/index.ts
+++ b/src/TaskSerializer/index.ts
@@ -21,7 +21,7 @@ export type TaskDetails = Writeable<
         | 'doneDate'
         | 'cancelledDate'
         | 'recurrence'
-        | 'blockedBy'
+        | 'dependsOn'
         | 'id'
         | 'tags'
     >
diff --git a/src/ui/EditTask.svelte b/src/ui/EditTask.svelte
index 7b4a08b9..1800bbfa 100644
--- a/src/ui/EditTask.svelte
+++ b/src/ui/EditTask.svelte
@@ -301,7 +301,7 @@
 
         const blockedBy: Task[] = [];
 
-        for (const taskId of task.blockedBy) {
+        for (const taskId of task.dependsOn) {
             const depTask = allTasks.find(cacheTask => cacheTask.id === taskId);
 
             if (!depTask) continue;
@@ -309,7 +309,7 @@
             blockedBy.push(depTask);
         }
 
-        originalBlocking = allTasks.filter(cacheTask => cacheTask.blockedBy.includes(task.id));
+        originalBlocking = allTasks.filter(cacheTask => cacheTask.dependsOn.includes(task.id));
 
         editableTask = {
             // NEW_TASK_FIELD_EDIT_REQUIRED
@@ -443,7 +443,7 @@
             doneDate,
             createdDate,
             cancelledDate,
-            blockedBy: blockedByWithIds.map(task => task.id),
+            dependsOn: blockedByWithIds.map(task => task.id),
             id
         });
 


Test patch:
diff --git a/resources/sample_vaults/Tasks-Demo/Manual Testing/Dependencies Samples.md b/resources/sample_vaults/Tasks-Demo/Manual Testing/Dependencies Samples.md
index 223cca42..b412346b 100644
--- a/resources/sample_vaults/Tasks-Demo/Manual Testing/Dependencies Samples.md
+++ b/resources/sample_vaults/Tasks-Demo/Manual Testing/Dependencies Samples.md
@@ -124,7 +124,7 @@ path includes {{query.file.path}}
 #explain
 ```
 
-### `hide depends on` ==TODO Rename to blocked by==
+### `hide depends on`
 
 ```tasks
 hide depends on
diff --git a/tests/CustomMatchers/CustomMatchersForTaskSerializer.ts b/tests/CustomMatchers/CustomMatchersForTaskSerializer.ts
index ec322e5b..1f58be93 100644
--- a/tests/CustomMatchers/CustomMatchersForTaskSerializer.ts
+++ b/tests/CustomMatchers/CustomMatchersForTaskSerializer.ts
@@ -110,7 +110,7 @@ function tryBuildTaskDetails(t: object): TaskDetails | null {
         doneDate: null,
         cancelledDate: null,
         recurrence: null,
-        blockedBy: [],
+        dependsOn: [],
         id: '',
         tags: [],
         ...t,
diff --git a/tests/Layout/TaskLayout.test.ts b/tests/Layout/TaskLayout.test.ts
index 198820ad..2981f6a1 100644
--- a/tests/Layout/TaskLayout.test.ts
+++ b/tests/Layout/TaskLayout.test.ts
@@ -33,7 +33,7 @@ describe('TaskLayout tests', () => {
         const hiddenClasses = [...taskLayout.generateHiddenClasses(), ...queryLayout.getHiddenClasses()];
         expect(hiddenClasses.join('\n')).toMatchInlineSnapshot(`
             "tasks-layout-hide-id
-            tasks-layout-hide-blockedBy
+            tasks-layout-hide-dependsOn
             tasks-layout-hide-priority
             tasks-layout-hide-recurrenceRule
             tasks-layout-hide-createdDate
diff --git a/tests/Layout/TaskLayoutOptions.test.ts b/tests/Layout/TaskLayoutOptions.test.ts
index 84364e44..985e870c 100644
--- a/tests/Layout/TaskLayoutOptions.test.ts
+++ b/tests/Layout/TaskLayoutOptions.test.ts
@@ -8,7 +8,7 @@ describe('TaskLayoutOptions', () => {
         expect(options.shownComponents.join('\n')).toMatchInlineSnapshot(`
             "description
             id
-            blockedBy
+            dependsOn
             priority
             recurrenceRule
             createdDate
@@ -63,7 +63,7 @@ describe('TaskLayoutOptions', () => {
         expect(options.shownComponents.join('\n')).toMatchInlineSnapshot(`
             "description
             id
-            blockedBy
+            dependsOn
             priority
             recurrenceRule
             createdDate
@@ -81,7 +81,7 @@ describe('TaskLayoutOptions', () => {
         expect(options.shownComponents.join('\n')).toMatchInlineSnapshot(`
             "description
             id
-            blockedBy
+            dependsOn
             priority
             recurrenceRule
             createdDate
@@ -135,7 +135,7 @@ describe('TaskLayoutOptions', () => {
 
         expect(options.toggleableComponents.join('\n')).toMatchInlineSnapshot(`
             "id
-            blockedBy
+            dependsOn
             priority
             recurrenceRule
             createdDate
diff --git a/tests/Query/Filter/BlockedByField.test.ts b/tests/Query/Filter/BlockedByField.test.ts
index c9be722a..56c2e85c 100644
--- a/tests/Query/Filter/BlockedByField.test.ts
+++ b/tests/Query/Filter/BlockedByField.test.ts
@@ -14,8 +14,8 @@ describe('id', () => {
         const filter = new BlockedByField().createFilterOrErrorMessage('has blocked by');
 
         // Act, Assert
-        testFilter(filter, new TaskBuilder().blockedBy([]), false);
-        testFilter(filter, new TaskBuilder().blockedBy(['abcdef']), true);
+        testFilter(filter, new TaskBuilder().dependsOn([]), false);
+        testFilter(filter, new TaskBuilder().dependsOn(['abcdef']), true);
     });
 
     it('by blocked by absence', () => {
@@ -25,7 +25,7 @@ describe('id', () => {
         expect(blockedByField.canCreateFilterForLine(line)).toEqual(true);
 
         // Act, Assert
-        testFilter(filter, new TaskBuilder().blockedBy([]), true);
-        testFilter(filter, new TaskBuilder().blockedBy(['abcdef']), false);
+        testFilter(filter, new TaskBuilder().dependsOn([]), true);
+        testFilter(filter, new TaskBuilder().dependsOn(['abcdef']), false);
     });
 });
diff --git a/tests/Query/Filter/BlockingField.test.ts b/tests/Query/Filter/BlockingField.test.ts
index 3ed1a1ae..7a757ee3 100644
--- a/tests/Query/Filter/BlockingField.test.ts
+++ b/tests/Query/Filter/BlockingField.test.ts
@@ -9,7 +9,7 @@ describe('blocking', () => {
     const child = new TaskBuilder().id('12345').build();
     const childWithoutParent = new TaskBuilder().id('23456').build();
     const childThatIsDone = new TaskBuilder().id('34567').status(Status.makeDone()).build();
-    const parent = new TaskBuilder().blockedBy(['12345', '34567']).build();
+    const parent = new TaskBuilder().dependsOn(['12345', '34567']).build();
     const allTasks = [notBlocking, child, childWithoutParent, childThatIsDone, parent];
 
     const isBlocking = new BlockingField().createFilterOrErrorMessage('is blocking');
@@ -39,9 +39,9 @@ describe('blocking', () => {
         const id1 = '1';
         const id2 = '2';
         const id3 = '3';
-        const task1 = new TaskBuilder().id(id1).blockedBy([id2]).build();
-        const task2 = new TaskBuilder().id(id2).blockedBy([id3]).build();
-        const task3 = new TaskBuilder().id(id3).blockedBy([id1]).build();
+        const task1 = new TaskBuilder().id(id1).dependsOn([id2]).build();
+        const task2 = new TaskBuilder().id(id2).dependsOn([id3]).build();
+        const task3 = new TaskBuilder().id(id3).dependsOn([id1]).build();
         const allTasks = [task1, task2, task3];
 
         expect(isBlocking).toMatchTaskInTaskList(task1, allTasks);
@@ -52,7 +52,7 @@ describe('blocking', () => {
     it('should work with Boolean filters', function () {
         const id = 'abc';
         const task1 = new TaskBuilder().id(id).build();
-        const task2 = new TaskBuilder().blockedBy([id]).build();
+        const task2 = new TaskBuilder().dependsOn([id]).build();
         const allTasks = [task1, task2];
 
         const booleanFilter = new BooleanField().createFilterOrErrorMessage('NOT ( NOT ( is blocking ) )');
@@ -70,7 +70,7 @@ describe('blocked', () => {
     const blocking = new TaskBuilder().id(blockingId).build();
 
     it('should hide blocked tasks', () => {
-        const blocked = new TaskBuilder().blockedBy([blockingId]).build();
+        const blocked = new TaskBuilder().dependsOn([blockingId]).build();
         const allTasks = [blocking, blocked];
 
         expect(isNotBlocked).toBeValid();
@@ -86,9 +86,9 @@ describe('blocked', () => {
         const blockingCompletedId = 'def';
         const blockingCompleted = new TaskBuilder().id(blockingCompletedId).status(Status.DONE).build();
 
-        const blockedByIncomplete = new TaskBuilder().blockedBy([blockingId]).build();
-        const blockedByComplete = new TaskBuilder().blockedBy([blockingCompletedId]).build();
-        const blockedByAll = new TaskBuilder().blockedBy([blockingId, blockingCompletedId]).build();
+        const blockedByIncomplete = new TaskBuilder().dependsOn([blockingId]).build();
+        const blockedByComplete = new TaskBuilder().dependsOn([blockingCompletedId]).build();
+        const blockedByAll = new TaskBuilder().dependsOn([blockingId, blockingCompletedId]).build();
 
         const allTasks = [blocking, blockedByIncomplete, blockedByComplete, blockedByAll, blockingCompleted];
 
diff --git a/tests/Query/Query.test.ts b/tests/Query/Query.test.ts
index fbdfedf1..a3627e97 100644
--- a/tests/Query/Query.test.ts
+++ b/tests/Query/Query.test.ts
@@ -682,7 +682,7 @@ describe('Query', () => {
                     doneDate: null,
                     cancelledDate: null,
                     recurrence: null,
-                    blockedBy: [],
+                    dependsOn: [],
                     id: '',
                     blockLink: '',
                     tags: [],
@@ -703,7 +703,7 @@ describe('Query', () => {
                     doneDate: null,
                     cancelledDate: null,
                     recurrence: null,
-                    blockedBy: [],
+                    dependsOn: [],
                     id: '',
                     blockLink: '',
                     tags: [],
diff --git a/tests/Renderer/TaskLineRenderer.test.Visualise_HTML_Full_task_-_full_mode.approved.html b/tests/Renderer/TaskLineRenderer.test.Visualise_HTML_Full_task_-_full_mode.approved.html
index 23c71589..c7bee18d 100644
--- a/tests/Renderer/TaskLineRenderer.test.Visualise_HTML_Full_task_-_full_mode.approved.html
+++ b/tests/Renderer/TaskLineRenderer.test.Visualise_HTML_Full_task_-_full_mode.approved.html
@@ -20,7 +20,7 @@
         <span>Do exercises #todo #health</span></span>
         <span class="task-id">
         <span> 🆔 abcdef</span></span>
-        <span class="task-blockedBy">
+        <span class="task-dependsOn">
         <span> ⛔️ 123456,abc123</span></span>
         <span class="task-priority"
     data-task-priority="medium">
diff --git a/tests/Renderer/TaskLineRenderer.test.Visualise_HTML_Full_task_-_short_mode.approved.html b/tests/Renderer/TaskLineRenderer.test.Visualise_HTML_Full_task_-_short_mode.approved.html
index 59279aea..c865a2bd 100644
--- a/tests/Renderer/TaskLineRenderer.test.Visualise_HTML_Full_task_-_short_mode.approved.html
+++ b/tests/Renderer/TaskLineRenderer.test.Visualise_HTML_Full_task_-_short_mode.approved.html
@@ -20,7 +20,7 @@
         <span>Do exercises #todo #health</span></span>
         <span class="task-id">
         <span> 🆔</span></span>
-        <span class="task-blockedBy">
+        <span class="task-dependsOn">
         <span> ⛔️</span></span>
         <span class="task-priority"
     data-task-priority="medium">
diff --git a/tests/Renderer/TaskLineRenderer.test.ts b/tests/Renderer/TaskLineRenderer.test.ts
index f8c28c27..82377b17 100644
--- a/tests/Renderer/TaskLineRenderer.test.ts
+++ b/tests/Renderer/TaskLineRenderer.test.ts
@@ -279,7 +279,7 @@ describe('task line rendering - layout options', () => {
     });
 
     it('renders with depends on', async () => {
-        await testLayoutOptions(['Do exercises #todo #health', ' ⛔️ 123456,abc123'], [TaskLayoutComponent.BlockedBy]);
+        await testLayoutOptions(['Do exercises #todo #health', ' ⛔️ 123456,abc123'], [TaskLayoutComponent.DependsOn]);
     });
 });
 
@@ -357,7 +357,7 @@ describe('task line rendering - classes and data attributes', () => {
 
     it('renders dependency fields with their correct classes', async () => {
         await testComponentClasses('- [ ] Minimal task 🆔 g7317o', 'task-id', '');
-        await testComponentClasses('- [ ] Minimal task ⛔️ ya44g5,hry475', 'task-blockedBy', '');
+        await testComponentClasses('- [ ] Minimal task ⛔️ ya44g5,hry475', 'task-dependsOn', '');
     });
 
     it('should render recurrence component with its class and data attribute', async () => {
diff --git a/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.blockedBy_docs.approved.md b/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.dependsOn_docs.approved.md
similarity index 91%
rename from tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.blockedBy_docs.approved.md
rename to tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.dependsOn_docs.approved.md
index 07deb9b6..69e8c7cb 100644
--- a/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.blockedBy_docs.approved.md
+++ b/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.dependsOn_docs.approved.md
@@ -2,7 +2,7 @@
 
 
 ```javascript
-group by function task.blockedBy
+group by function task.dependsOn
 ```
 
 - Group by the Ids of the tasks that each task depends on, if any.
diff --git a/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.blockedBy_results.approved.txt b/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.dependsOn_results.approved.txt
similarity index 91%
rename from tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.blockedBy_results.approved.txt
rename to tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.dependsOn_results.approved.txt
index 53da5f84..25e461a0 100644
--- a/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.blockedBy_results.approved.txt
+++ b/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.dependencies_task.dependsOn_results.approved.txt
@@ -2,7 +2,7 @@ Results of custom groupers
 
 
 
-group by function task.blockedBy
+group by function task.dependsOn
 Group by the Ids of the tasks that each task depends on, if any.
 If a task depends on more than one other task, it will be listed multiple times.
 Note that currently there is no way to access the tasks being depended on.
diff --git a/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.ts b/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.ts
index e9ede3cc..4f250d24 100644
--- a/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.ts
+++ b/tests/Scripting/ScriptingReference/CustomGrouping/CustomGroupingExamples.test.ts
@@ -45,10 +45,10 @@ describe('dependencies', () => {
         ],
 
         [
-            'task.blockedBy',
+            'task.dependsOn',
             [
                 [
-                    'group by function task.blockedBy',
+                    'group by function task.dependsOn',
                     'Group by the Ids of the tasks that each task depends on, if any',
                     'If a task depends on more than one other task, it will be listed multiple times.',
                     'Note that currently there is no way to access the tasks being depended on',
diff --git a/tests/Scripting/TaskProperties.test.task_dependency_fields.approved.md b/tests/Scripting/TaskProperties.test.task_dependency_fields.approved.md
index 4fff6e89..789f9046 100644
--- a/tests/Scripting/TaskProperties.test.task_dependency_fields.approved.md
+++ b/tests/Scripting/TaskProperties.test.task_dependency_fields.approved.md
@@ -3,7 +3,7 @@
 | Field | Type 1 | Example 1 | Type 2 | Example 2 |
 | ----- | ----- | ----- | ----- | ----- |
 | `task.id` | `string` | `'abcdef'` | `string` | `''` |
-| `task.blockedBy` | `string[]` | `['123456', 'abc123']` | `any[]` | `[]` |
+| `task.dependsOn` | `string[]` | `['123456', 'abc123']` | `any[]` | `[]` |
 | `task.isBlocked(query.allTasks)` | `boolean` | `false` | `boolean` | `false` |
 | `task.isBlocking(query.allTasks)` | `boolean` | `false` | `boolean` | `false` |
 
diff --git a/tests/Scripting/TaskProperties.test.ts b/tests/Scripting/TaskProperties.test.ts
index 2b7ff062..8dc7c1d8 100644
--- a/tests/Scripting/TaskProperties.test.ts
+++ b/tests/Scripting/TaskProperties.test.ts
@@ -97,7 +97,7 @@ describe('task', () => {
         verifyFieldDataForReferenceDocs([
             // force line break
             'task.id',
-            'task.blockedBy',
+            'task.dependsOn',
             'task.isBlocked(query.allTasks)',
             'task.isBlocking(query.allTasks)',
         ]);
diff --git a/tests/Task/Task.test.ts b/tests/Task/Task.test.ts
index 95db21d1..6fc559e3 100644
--- a/tests/Task/Task.test.ts
+++ b/tests/Task/Task.test.ts
@@ -1578,10 +1578,10 @@ describe('identicalTo', () => {
         expect(lhs).not.toBeIdenticalTo(new TaskBuilder().id('12345'));
     });
 
-    it('should check blockedBy', () => {
-        const lhs = new TaskBuilder().blockedBy([]);
-        expect(lhs).toBeIdenticalTo(new TaskBuilder().blockedBy([]));
-        expect(lhs).not.toBeIdenticalTo(new TaskBuilder().blockedBy(['12345']));
+    it('should check dependsOn', () => {
+        const lhs = new TaskBuilder().dependsOn([]);
+        expect(lhs).toBeIdenticalTo(new TaskBuilder().dependsOn([]));
+        expect(lhs).not.toBeIdenticalTo(new TaskBuilder().dependsOn(['12345']));
     });
 
     it('should correctly compare a task with status read from user settings', () => {
diff --git a/tests/Task/TaskDependency.test.ts b/tests/Task/TaskDependency.test.ts
index cf02e388..3997d3b8 100644
--- a/tests/Task/TaskDependency.test.ts
+++ b/tests/Task/TaskDependency.test.ts
@@ -29,8 +29,8 @@ describe('TaskDependency', () => {
 
         const [newParent, newChild] = addDependency(parentTask, childTask, ['123456']);
 
-        expect(parentTask.blockedBy).toEqual([]);
-        expect(newParent.blockedBy).toEqual(['123456']);
+        expect(parentTask.dependsOn).toEqual([]);
+        expect(newParent.dependsOn).toEqual(['123456']);
         expect(childTask.id).toEqual('123456');
         expect(newChild.id).toEqual('123456');
         expect(newChild === childTask).toEqual(true);
@@ -38,12 +38,12 @@ describe('TaskDependency', () => {
 
     it('Should not create a duplicate dependency - using addDependency', () => {
         const childTask = new TaskBuilder().id('123456').build();
-        const parentTask = new TaskBuilder().blockedBy(['123456']).description('parent task').build();
+        const parentTask = new TaskBuilder().dependsOn(['123456']).description('parent task').build();
 
         const [newParent, newChild] = addDependency(parentTask, childTask, ['123456']);
 
-        expect(parentTask.blockedBy).toEqual(['123456']);
-        expect(newParent.blockedBy).toEqual(['123456']);
+        expect(parentTask.dependsOn).toEqual(['123456']);
+        expect(newParent.dependsOn).toEqual(['123456']);
         expect(childTask.id).toEqual('123456');
         expect(newChild.id).toEqual('123456');
         expect(newChild === childTask).toEqual(true);
@@ -57,17 +57,17 @@ describe('TaskDependency', () => {
         const [newParent, newChild] = addDependency(parentTask, childTask, []);
 
         expect(newChild.id).not.toEqual('');
-        expect(newParent.blockedBy).toEqual([newChild.id]);
+        expect(newParent.dependsOn).toEqual([newChild.id]);
     });
 
     it('Should remove a dependency', () => {
         const childTask = new TaskBuilder().id('123456').build();
-        const parentTask = new TaskBuilder().blockedBy(['123456']).description('parent task').build();
+        const parentTask = new TaskBuilder().dependsOn(['123456']).description('parent task').build();
 
         const newParent = removeDependency(parentTask, childTask);
 
-        expect(parentTask.blockedBy).toEqual(['123456']);
-        expect(newParent.blockedBy).toEqual([]);
+        expect(parentTask.dependsOn).toEqual(['123456']);
+        expect(newParent.dependsOn).toEqual([]);
         expect(childTask.id).toEqual('123456');
     });
 
@@ -75,22 +75,22 @@ describe('TaskDependency', () => {
         const childTask1 = new TaskBuilder().id('123456').build();
         const childTask2 = new TaskBuilder().id('234567').build();
         const childTask3 = new TaskBuilder().id('345678').build();
-        const parentTask = new TaskBuilder().description('parent task').blockedBy(['012345']).build();
+        const parentTask = new TaskBuilder().description('parent task').dependsOn(['012345']).build();
 
         const newParent = setDependenciesOnTasksWithIds(parentTask, [childTask1, childTask2, childTask3]);
 
-        expect(parentTask.blockedBy).toEqual(['012345']);
-        expect(newParent.blockedBy).toEqual(['123456', '234567', '345678']);
+        expect(parentTask.dependsOn).toEqual(['012345']);
+        expect(newParent.dependsOn).toEqual(['123456', '234567', '345678']);
     });
 
     it('Should not create a duplicate dependency - using setDependenciesOnTasksWithIds', () => {
         const childTask = new TaskBuilder().id('123456').build();
-        const parentTask = new TaskBuilder().blockedBy(['123456']).description('parent task').build();
+        const parentTask = new TaskBuilder().dependsOn(['123456']).description('parent task').build();
 
         const newParent = setDependenciesOnTasksWithIds(parentTask, [childTask]);
 
-        expect(parentTask.blockedBy).toEqual(['123456']);
-        expect(newParent.blockedBy).toEqual(['123456']);
+        expect(parentTask.dependsOn).toEqual(['123456']);
+        expect(newParent.dependsOn).toEqual(['123456']);
         expect(childTask.id).toEqual('123456');
         expect(newParent === parentTask).toEqual(true);
     });
diff --git a/tests/TaskSerializer/DataviewTaskSerializer.test.ts b/tests/TaskSerializer/DataviewTaskSerializer.test.ts
index 71155185..f7549568 100644
--- a/tests/TaskSerializer/DataviewTaskSerializer.test.ts
+++ b/tests/TaskSerializer/DataviewTaskSerializer.test.ts
@@ -269,7 +269,7 @@ describe('DataviewTaskSerializer', () => {
             const task = TaskBuilder.createFullyPopulatedTask();
             const serialized = serialize(task);
             expect(serialized).toMatchInlineSnapshot(
-                '"Do exercises #todo #health  [id:: abcdef]  [blockedBy:: 123456,abc123]  [priority:: medium]  [repeat:: every day when done]  [created:: 2023-07-01]  [start:: 2023-07-02]  [scheduled:: 2023-07-03]  [due:: 2023-07-04]  [cancelled:: 2023-07-06]  [completion:: 2023-07-05] ^dcf64c"',
+                '"Do exercises #todo #health  [id:: abcdef]  [dependsOn:: 123456,abc123]  [priority:: medium]  [repeat:: every day when done]  [created:: 2023-07-01]  [start:: 2023-07-02]  [scheduled:: 2023-07-03]  [due:: 2023-07-04]  [cancelled:: 2023-07-06]  [completion:: 2023-07-05] ^dcf64c"',
             );
         });
     });
diff --git a/tests/TaskSerializer/DefaultTaskSerializer.test.ts b/tests/TaskSerializer/DefaultTaskSerializer.test.ts
index 02704acd..437edfd2 100644
--- a/tests/TaskSerializer/DefaultTaskSerializer.test.ts
+++ b/tests/TaskSerializer/DefaultTaskSerializer.test.ts
@@ -33,7 +33,7 @@ describe.each(symbolMap)("DefaultTaskSerializer with '$taskFormat' symbols", ({
         dueDateSymbol,
         doneDateSymbol,
         idSymbol,
-        blockedBySymbol,
+        dependsOnSymbol,
     } = symbols;
 
     describe('deserialize', () => {
@@ -73,15 +73,15 @@ describe.each(symbolMap)("DefaultTaskSerializer with '$taskFormat' symbols", ({
         });
 
         it('should parse depends on one task', () => {
-            const id = `${blockedBySymbol} 123456`;
+            const id = `${dependsOnSymbol} 123456`;
             const taskDetails = deserialize(id);
-            expect(taskDetails).toMatchTaskDetails({ blockedBy: ['123456'] });
+            expect(taskDetails).toMatchTaskDetails({ dependsOn: ['123456'] });
         });
 
         it('should parse depends on two tasks', () => {
-            const id = `${blockedBySymbol} 123456,abc123`;
+            const id = `${dependsOnSymbol} 123456,abc123`;
             const taskDetails = deserialize(id);
-            expect(taskDetails).toMatchTaskDetails({ blockedBy: ['123456', 'abc123'] });
+            expect(taskDetails).toMatchTaskDetails({ dependsOn: ['123456', 'abc123'] });
         });
 
         it('should parse id', () => {
@@ -139,9 +139,9 @@ describe.each(symbolMap)("DefaultTaskSerializer with '$taskFormat' symbols", ({
         });
 
         it('should serialize depends on', () => {
-            const task = new TaskBuilder().description('').blockedBy(['123456', 'abc123']).build();
+            const task = new TaskBuilder().description('').dependsOn(['123456', 'abc123']).build();
             const serialized = serialize(task);
-            expect(serialized).toEqual(` ${blockedBySymbol} 123456,abc123`);
+            expect(serialized).toEqual(` ${dependsOnSymbol} 123456,abc123`);
         });
 
         it('should serialize id', () => {
diff --git a/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-include.approved.md b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-include.approved.md
index 4477fb03..d6347a2a 100644
--- a/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-include.approved.md
+++ b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-include.approved.md
@@ -1,6 +1,6 @@
 <!-- placeholder to force blank line before included text -->
 
 - [ ] do this first  [id:: dcf64c]
-- [ ] do this after first and some other task  [blockedBy:: dcf64c,0h17ye]
+- [ ] do this after first and some other task  [dependsOn:: dcf64c,0h17ye]
 
 <!-- placeholder to force blank line after included text -->
diff --git a/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-snippet.approved.md b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-snippet.approved.md
index ddc56cae..1a90818e 100644
--- a/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-snippet.approved.md
+++ b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Dependencies_dataview-snippet.approved.md
@@ -1,2 +1,2 @@
 - [ ] do this first  [id:: dcf64c]
-- [ ] do this after first and some other task  [blockedBy:: dcf64c,0h17ye]
+- [ ] do this after first and some other task  [dependsOn:: dcf64c,0h17ye]
diff --git a/tests/TaskSerializer/TaskSerializer.test.ts b/tests/TaskSerializer/TaskSerializer.test.ts
index 083a2c60..ec0f1d70 100644
--- a/tests/TaskSerializer/TaskSerializer.test.ts
+++ b/tests/TaskSerializer/TaskSerializer.test.ts
@@ -72,7 +72,7 @@ describe('TaskSerializer Example', () => {
                 doneDate: null,
                 cancelledDate: null,
                 recurrence: null,
-                blockedBy: [],
+                dependsOn: [],
                 id: '',
             };
         }
diff --git a/tests/TestingTools/SampleTasks.ts b/tests/TestingTools/SampleTasks.ts
index d15a8396..8b1939de 100644
--- a/tests/TestingTools/SampleTasks.ts
+++ b/tests/TestingTools/SampleTasks.ts
@@ -217,7 +217,7 @@ export class SampleTasks {
         const id2 = '0h17ye';
         return [
             new TaskBuilder().description('do this first').id(id1).build(),
-            new TaskBuilder().description('do this after first and some other task').blockedBy([id1, id2]).build(),
+            new TaskBuilder().description('do this after first and some other task').dependsOn([id1, id2]).build(),
         ];
     }
 
diff --git a/tests/TestingTools/TaskBuilder.ts b/tests/TestingTools/TaskBuilder.ts
index 4c1ab91e..98c81ff9 100644
--- a/tests/TestingTools/TaskBuilder.ts
+++ b/tests/TestingTools/TaskBuilder.ts
@@ -48,7 +48,7 @@ export class TaskBuilder {
 
     private _scheduledDateIsInferred: boolean = false;
     private _id: string = '';
-    private _blockedBy: string[] = [];
+    private _dependsOn: string[] = [];
 
     /**
      * Build a Task
@@ -88,7 +88,7 @@ export class TaskBuilder {
             doneDate: this._doneDate,
             cancelledDate: this._cancelledDate,
             recurrence: this._recurrence,
-            blockedBy: this._blockedBy,
+            dependsOn: this._dependsOn,
             id: this._id,
             blockLink: this._blockLink,
             tags: this._tags,
@@ -118,7 +118,7 @@ export class TaskBuilder {
             .dueDate('2023-07-04')
             .doneDate('2023-07-05')
             .cancelledDate('2023-07-06')
-            .blockedBy(['123456', 'abc123'])
+            .dependsOn(['123456', 'abc123'])
             .id('abcdef')
             .blockLink(' ^dcf64c')
             // Values in TaskLocation:
@@ -276,8 +276,8 @@ export class TaskBuilder {
         return this;
     }
 
-    public blockedBy(blockedBy: string[]) {
-        this._blockedBy = blockedBy;
+    public dependsOn(dependsOn: string[]) {
+        this._dependsOn = dependsOn;
         return this;
     }