Skip to content

Commit 5f44825

Browse files
authored
Merge pull request #3650 from mdbraber/feat-on-hold
feat: Add new ON_HOLD status type
2 parents 684317a + 9309c3c commit 5f44825

File tree

58 files changed

+279
-182
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+279
-182
lines changed

docs/Advanced/Styling.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,8 @@ li.task-list-item[data-task-status-type="IN_PROGRESS"] .task-list-item-checkbox
329329
```
330330
<!-- endSnippet -->
331331

332+
We take the view that the status type [[Status Types#ON_HOLD|ON_HOLD]] is not (yet) actionable, and so have not included that value in the snippet.
333+
332334
For example, in Reading mode:
333335

334336
![Example of tasks-plugin-style-status-types.css snippet](../../images/tasks-plugin-style-status-types-snippet.png)

docs/Getting Started/About Getting Started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ publish: true
3232
- [[Statuses]]
3333
- Also known as Custom Checkboxes.
3434
- In vanilla Obsidian tasks are either 'TODO' or 'DONE'.
35-
- Statuses allow you to track `IN_PROGRESS`, `CANCELLED` and `NON_TASK` actions too.
35+
- Statuses allow you to track `IN_PROGRESS`, `ON_HOLD`, `CANCELLED` and `NON_TASK` actions too.
3636
- [[Use Filename as Default Date]]
3737
- Automatically set a scheduled date for tasks based on the name of their files.
3838
- [[Tags]]

docs/Getting Started/Statuses.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Here is some more detail.
6161
- **Next Status Symbol**
6262
- the status symbol to use when the task is toggled.
6363
- **Status Type**
64-
- one of `TODO`, `IN_PROGRESS`, `DONE`, `CANCELLED`, `NON_TASK`.
64+
- one of `TODO`, `IN_PROGRESS`, `ON_HOLD`, `DONE`, `CANCELLED`, `NON_TASK`.
6565
- Tasks needs to know the type of each status, so that it knows how to treat them when searching, and what to do when tasks with the status are toggled.
6666
- types are searchable with `status.type`, for example `status.type is IN_PROGRESS`.
6767
- Also available:

docs/Getting Started/Statuses/Example Statuses.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ classDef DONE stroke:#0c0,stroke-width:3px;
2727
classDef IN_PROGRESS stroke:#fa0,stroke-width:3px;
2828
classDef CANCELLED stroke:#ddd,stroke-width:3px;
2929
classDef NON_TASK stroke:#99e,stroke-width:3px;
30+
classDef ON_HOLD stroke:#00f,stroke-width:3px;
3031
3132
1["Todo"]:::TODO
3233
2["In Progress"]:::IN_PROGRESS
@@ -64,6 +65,7 @@ classDef DONE stroke:#0c0,stroke-width:3px;
6465
classDef IN_PROGRESS stroke:#fa0,stroke-width:3px;
6566
classDef CANCELLED stroke:#ddd,stroke-width:3px;
6667
classDef NON_TASK stroke:#99e,stroke-width:3px;
68+
classDef ON_HOLD stroke:#00f,stroke-width:3px;
6769
6870
1["Important"]:::TODO
6971
2["Doing - Important"]:::IN_PROGRESS
@@ -103,6 +105,7 @@ classDef DONE stroke:#0c0,stroke-width:3px;
103105
classDef IN_PROGRESS stroke:#fa0,stroke-width:3px;
104106
classDef CANCELLED stroke:#ddd,stroke-width:3px;
105107
classDef NON_TASK stroke:#99e,stroke-width:3px;
108+
classDef ON_HOLD stroke:#00f,stroke-width:3px;
106109
107110
1["Pro"]:::NON_TASK
108111
2["Con"]:::NON_TASK
@@ -139,6 +142,7 @@ classDef DONE stroke:#0c0,stroke-width:3px;
139142
classDef IN_PROGRESS stroke:#fa0,stroke-width:3px;
140143
classDef CANCELLED stroke:#ddd,stroke-width:3px;
141144
classDef NON_TASK stroke:#99e,stroke-width:3px;
145+
classDef ON_HOLD stroke:#00f,stroke-width:3px;
142146
143147
1["Bookmark"]:::NON_TASK
144148
2["Example"]:::NON_TASK

docs/Getting Started/Statuses/Recurring Tasks and Custom Statuses.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ classDef DONE stroke:#0c0,stroke-width:3px;
3939
classDef IN_PROGRESS stroke:#fa0,stroke-width:3px;
4040
classDef CANCELLED stroke:#ddd,stroke-width:3px;
4141
classDef NON_TASK stroke:#99e,stroke-width:3px;
42+
classDef ON_HOLD stroke:#00f,stroke-width:3px;
4243
4344
1["'Todo'<br>[ ] -> [/]<br>(TODO)"]:::TODO
4445
2["'In Progress'<br>[/] -> [x]<br>(IN_PROGRESS)"]:::IN_PROGRESS
@@ -125,6 +126,7 @@ classDef DONE stroke:#0c0,stroke-width:3px;
125126
classDef IN_PROGRESS stroke:#fa0,stroke-width:3px;
126127
classDef CANCELLED stroke:#ddd,stroke-width:3px;
127128
classDef NON_TASK stroke:#99e,stroke-width:3px;
129+
classDef ON_HOLD stroke:#00f,stroke-width:3px;
128130
129131
1["'Todo'<br>[ ] -> [/]<br>(TODO)"]:::TODO
130132
2["'Done'<br>[x] -> [-]<br>(DONE)"]:::DONE
@@ -183,6 +185,7 @@ classDef DONE stroke:#0c0,stroke-width:3px;
183185
classDef IN_PROGRESS stroke:#fa0,stroke-width:3px;
184186
classDef CANCELLED stroke:#ddd,stroke-width:3px;
185187
classDef NON_TASK stroke:#99e,stroke-width:3px;
188+
classDef ON_HOLD stroke:#00f,stroke-width:3px;
186189
187190
1["'Pro'<br>[P] -> [C]<br>(NON_TASK)"]:::NON_TASK
188191
2["'Con'<br>[C] -> [P]<br>(NON_TASK)"]:::NON_TASK

docs/Getting Started/Statuses/Status Types.md

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ With the new ability to create a variety of [[Custom Statuses]], Tasks needs to
1515
- how to treat tasks when searching,
1616
- and what to do when tasks with the status are toggled, both for adding or removing Done dates, and for creating new task recurrences.
1717

18-
This was solved by the introduction of 'Status Types', which are simply a set of 5 possible types of status:
18+
This was solved by the introduction of 'Status Types', which are simply a set of 6 possible types of status:
1919

2020
- `TODO`
2121
- `IN_PROGRESS`
22+
- `ON_HOLD`
2223
- `DONE`
2324
- `CANCELLED`
2425
- `NON_TASK`
@@ -33,6 +34,13 @@ Self explanatory, we hope: this can be thought of as 'things not yet started'.
3334

3435
Use of this is totally optional. You may find it useful to be able to prioritise completing tasks which have already been started.
3536

37+
### ON_HOLD
38+
39+
> [!released]
40+
> The `ON_HOLD` Status Type was introduced in Tasks X.Y.Z.
41+
42+
Use this for tasks you've decided are currently unworkable—for example, when awaiting external input or any circumstances you cannot control, such as feedback, decisions, or third-party actions. Unlike [[Priority|priorities]], which help you choose what to work on, or [[Task Dependencies|dependencies]], which enforce sequencing, `ON_HOLD` signals that a task is simply not actionable right now.
43+
3644
### DONE
3745

3846
The `DONE` type is used to determine:
@@ -71,14 +79,16 @@ The `status.type` filter uses a new pattern in the Tasks code which some refer t
7179

7280
If Tasks does not understand a `status.type` instruction, it reports this kind of message:
7381

82+
<!-- snippet: StatusTypeField.test.status.name_status.name_with_invalid_line_is_helpful.approved.text -->
7483
```text
7584
Tasks query: Invalid status.type instruction: 'status.type in progress'.
7685
Allowed options: 'is' and 'is not' (without quotes).
77-
Allowed values: TODO DONE IN_PROGRESS CANCELLED NON_TASK
86+
Allowed values: TODO DONE IN_PROGRESS ON_HOLD CANCELLED NON_TASK
7887
Note: values are case-insensitive,
7988
so 'in_progress' works too, for example.
8089
Example: status.type is not NON_TASK
8190
```
91+
<!-- endSnippet -->
8292

8393
### Status Types in Tasks filters
8494

@@ -89,26 +99,28 @@ For example, how are they used by the old `done` and `not done` filters?
8999
If you are interested in detail, this table demonstrates the behaviour of each of the status types in Tasks.
90100
Each column shows a representative example task with the given status type.
91101

92-
The tasks shown are purely examples for context. The `~` column is just an arbitrary example to show `NON_TASK`'s behaviour'. You can assign each of these types to any of your custom statuses.
102+
The tasks shown are purely examples for context. For example, the `~` column is just an arbitrary example to show `NON_TASK`'s behaviour'. You can assign each of these types to any of your custom statuses.
93103

94104
<!-- placeholder to force blank line before included text --><!-- include: DocsSamplesForStatuses.test.Status_Transitions_status-types.approved.md -->
95105

96-
| Operation and status.type | TODO | IN_PROGRESS | DONE | CANCELLED | NON_TASK |
97-
| ----- | ----- | ----- | ----- | ----- | ----- |
98-
| Example Task | `- [ ] demo` | `- [/] demo` | `- [x] demo` | `- [-] demo` | `- [~] demo` |
99-
| Matches `not done` | YES | YES | no | no | no |
100-
| Matches `done` | no | no | YES | YES | YES |
101-
| Matches `status.type is TODO` | YES | no | no | no | no |
102-
| Matches `status.type is IN_PROGRESS` | no | YES | no | no | no |
103-
| Matches `status.type is DONE` | no | no | YES | no | no |
104-
| Matches `status.type is CANCELLED` | no | no | no | YES | no |
105-
| Matches `status.type is NON_TASK` | no | no | no | no | YES |
106-
| Matches `status.name includes todo` | YES | no | no | no | no |
107-
| Matches `status.name includes in progress` | no | YES | no | no | no |
108-
| Matches `status.name includes done` | no | no | YES | no | no |
109-
| Matches `status.name includes cancelled` | no | no | no | YES | no |
110-
| Name for `group by status` | Todo | Todo | Done | Done | Done |
111-
| Name for `group by status.type` | %%2%%TODO | %%1%%IN_PROGRESS | %%3%%DONE | %%4%%CANCELLED | %%5%%NON_TASK |
112-
| Name for `group by status.name` | Todo | In Progress | Done | Cancelled | My custom status |
106+
| Operation and status.type | TODO | IN_PROGRESS | ON_HOLD | DONE | CANCELLED | NON_TASK |
107+
| ----- | ----- | ----- | ----- | ----- | ----- | ----- |
108+
| Example Task | `- [ ] demo` | `- [/] demo` | `- [h] demo` | `- [x] demo` | `- [-] demo` | `- [~] demo` |
109+
| Matches `not done` | YES | YES | YES | no | no | no |
110+
| Matches `done` | no | no | no | YES | YES | YES |
111+
| Matches `status.type is TODO` | YES | no | no | no | no | no |
112+
| Matches `status.type is IN_PROGRESS` | no | YES | no | no | no | no |
113+
| Matches `status.type is ON_HOLD` | no | no | YES | no | no | no |
114+
| Matches `status.type is DONE` | no | no | no | YES | no | no |
115+
| Matches `status.type is CANCELLED` | no | no | no | no | YES | no |
116+
| Matches `status.type is NON_TASK` | no | no | no | no | no | YES |
117+
| Matches `status.name includes todo` | YES | no | no | no | no | no |
118+
| Matches `status.name includes in progress` | no | YES | no | no | no | no |
119+
| Matches `status.name includes on hold` | no | no | YES | no | no | no |
120+
| Matches `status.name includes done` | no | no | no | YES | no | no |
121+
| Matches `status.name includes cancelled` | no | no | no | no | YES | no |
122+
| Name for `group by status` | Todo | Todo | Todo | Done | Done | Done |
123+
| Name for `group by status.type` | %%2%%TODO | %%1%%IN_PROGRESS | %%3%%ON_HOLD | %%4%%DONE | %%5%%CANCELLED | %%6%%NON_TASK |
124+
| Name for `group by status.name` | Todo | In Progress | On Hold | Done | Cancelled | My custom status |
113125

114126
<!-- placeholder to force blank line after included text --><!-- endInclude -->

docs/Getting Started/Task Dependencies.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,8 @@ When using those dependencies in searches, we define two more relationships: `bl
209209
210210
A task is `blocking` if:
211211

212-
- It is `TODO` or `IN_PROGRESS`.
213-
- And any of the tasks that **directly depend on it** are also `TODO` or `IN_PROGRESS`.
212+
- It is `TODO`, `IN_PROGRESS` or `ON_HOLD`.
213+
- And any of the tasks that **directly depend on it** are also `TODO`, `IN_PROGRESS` or `ON_HOLD`.
214214

215215
Note that:
216216

@@ -237,8 +237,8 @@ is blocking
237237
238238
A task is `blocked` if:
239239

240-
- It is `TODO` or `IN_PROGRESS`.
241-
- And any of the tasks **it directly depends on** are also `TODO` or `IN_PROGRESS`.
240+
- It is `TODO`, `IN_PROGRESS` or `ON_HOLD`.
241+
- And any of the tasks **it directly depends on** are also `TODO`, `IN_PROGRESS` or `ON_HOLD`.
242242

243243
Note that:
244244

@@ -267,7 +267,7 @@ is not blocked
267267
### Demonstration of blocking and blocked
268268

269269
> [!Example] Blocking occurs
270-
> If *both* ends of a `dependsOn` link are `TODO` or `IN_PROGRESS`, blocking occurs:
270+
> If *both* ends of a `dependsOn` link are `TODO`, `IN_PROGRESS` or `ON_HOLD`, blocking occurs:
271271
>
272272
> ```mermaid
273273
> flowchart BT

docs/Queries/Sorting.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ sort by function !task.isDone
8686
```
8787

8888
- `sort by function` sorts `true` before `false`
89-
- Hence, we use `!` to negate `task.isDone`, so tasks with [[Status Types|Status Type]] `TODO` and `IN_PROGRESS` tasks are sorted **before** `DONE`, `CANCELLED` and `NON_TASK`.
89+
- Hence, we use `!` to negate `task.isDone`, so tasks with [[Status Types|Status Type]] `TODO`, `IN_PROGRESS` and `ON_HOLD` tasks are sorted **before** `DONE`, `CANCELLED` and `NON_TASK`.
9090

9191
<!-- placeholder to force blank line after included text --><!-- endInclude -->
9292

docs/Quick Reference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ This table summarizes the filters and other options available inside a `tasks` b
1515
| **[[Filters#Filters for Dates in Tasks\|Status]]** | | | | |
1616
| `done`<br>`not done` | `sort by status` | `group by status` | | `task.isDone` |
1717
| `status.name (includes, does not include) <string>`<br>`status.name (regex matches, regex does not match) /regex/i` | `sort by status.name` | `group by status.name` | | `task.status.name` |
18-
| `status.type (is, is not) (TODO, DONE, IN_PROGRESS, CANCELLED, NON_TASK)` | `sort by status.type` | `group by status.type` | | `task.status.type`<br>`task.status.typeGroupText` |
18+
| `status.type (is, is not) (TODO, DONE, IN_PROGRESS, ON_HOLD, CANCELLED, NON_TASK)` | `sort by status.type` | `group by status.type` | | `task.status.type`<br>`task.status.typeGroupText` |
1919
| | | | | `task.status.symbol` |
2020
| | | | | `task.status.nextSymbol` |
2121
| **[[Task Dependencies]]** | | | | |

docs/What is New/Changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ _In recent [Tasks releases](https://github.com/obsidian-tasks-group/obsidian-tas
1313
## 7.x releases
1414

1515
- X.Y.Z:
16+
- Add [[Status Types#ON_HOLD|ON_HOLD]] status type.
1617
- Add 'Copy results' button: an initial implementation, which is not yet documented.
1718
- 7.22.0:
1819
- Fix [[Recurring Tasks#Priority of Dates|priority of dates in recurring tasks]] when using [[Recurring Tasks#Remove scheduled date on recurrence|Remove scheduled date on recurrence]].

0 commit comments

Comments
 (0)