Repository: obsidian-tasks-group/obsidian-tasks
Pull request #1943 (2023-05-09 20:56:49)

feat: Add new priorities: highest and lowest
# Description

Two new priorities are added for tasks: "highest" and "lowest"

## Motivation and Context

There are too few priorities to choose from, this PR introduces two new ones, which probably should be enough. The names for new priorities were inspired by the names used in jira, but some new names could be introduced for easier suggesting when creating the task. But I'm not sure about what those could be, "asap" seems nice for the "highest", but I don't have a good alternative for the "lowest".
I'm not sure what numbers should really be used for urgency calculation, they might need to be changed a bit. 
Also, I'm not really sure about the emoji used for "highest" priority, other propositions for that: ❕or 🔥 

## How has this been tested?

The change is small, so mostly older unit tests are adapted. But also, a few new tests are added. The change was tested on my local Obsidian too, by creating a few tasks with new priorities and checking that everything works and e.g. the tasks are sorted correctly.

## Screenshots (if appropriate)

<img width="846" alt="image" src="https://github.com/obsidian-tasks-group/obsidian-tasks/assets/6050673/0ddc3031-2d03-48f2-ae6b-3235bfcb64e2">

## Types of changes

Changes visible to users:

- [ ] **Bug fix** (prefix: `fix` - non-breaking change which fixes an issue)
- [x] **New feature** (prefix: `feat` - non-breaking change which adds functionality)
- [ ] **Breaking change** (prefix: `feat!!` or `fix!!` - fix or feature that would cause existing functionality to not work as expected)
- [x] **Documentation** (prefix: `docs` - improvements to any documentation content **for users**)
- [ ] **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))
- [ ] **Contributing Guidelines** (prefix: `contrib` - any improvements to documentation content **for contributors** - see [Contributing to Tasks](https://publish.obsidian.md/tasks-contributing/))

Internal changes:

- [ ] **Refactor** (prefix: `refactor` - non-breaking change which only improves the design or structure of existing code, and making no changes to its external behaviour)
- [ ] **Tests** (prefix: `test` - additions and improvements to unit tests and the smoke tests)
- [ ] **Infrastructure** (prefix: `chore` - examples include GitHub Actions, issue templates)

## Checklist

- [x] My code follows the code style of this project and passes `yarn run lint`.
- [x] My change requires a change to the documentation.
- [ ] 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

- [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)


claremacrae: Hi, thank you for the suggestion.

It would have have been helpful to us both to have had a chance to discuss the ideas in this before you did so much work. 

> There are too few priorities to choose from

Could you please explain your reasoning behind the above statement?

I do not recall any previous requests for more priority levels.
 
claremacrae: Some of the tests have failed, but I recommend not investigating them whilst the principles of the change are still being considered. 
chrabia: oh, yeah, seems that the tests for Suggestor needs to be fixed too. I can do that, but as you said, let's discuss everything first.

> Could you please explain your reasoning behind the above statement?
> I do not recall any previous requests for more priority levels.
Well then, maybe I'm first? As I'm developer myself, I thought that instead of issuing a request for a feature, I can help 🙂 and implement it myself.
But, now that I'm looking through discussions and and issues, that's not true.
E.g. this particular user created a workaround for priorities, and a higher number of them too in particular:
https://github.com/obsidian-tasks-group/obsidian-tasks/discussions/1366#discussioncomment-4578039
Also, when reading the initial issue for introducing priorities
https://github.com/obsidian-tasks-group/obsidian-tasks/issues/6
I see that everywhere one there (even the developer who implemented the priorities feature) were suggesting to have more priorities, in particular the "highest" and "lowest" are mentioned a few times.

So it seems it's not only me, but other users would like this feature too.

Another thing worth considering is that this change has a rather small impact and it's not introducing a lot of complexity to the plugin, so it shouldn't be a problem to add this.


claremacrae: > Well then, maybe I'm first? As I'm developer myself, I thought that instead of issuing a request for a feature, I can help 🙂 and implement it myself. 

I appreciate that.

As the following in the Tasks Contributing Guide says, it's not mandatory to discuss in advance, but it does help...

https://publish.obsidian.md/tasks-contributing/Contributing/Updating+code

Thank you for the links.

Neither of the examples is a request for more priorities, though - and it's interesting to me that in #6, this plugin's author, even though having mentioned highest and lowest, went ahead and implemented without them.

I read [#1366 (comment)](https://github.com/obsidian-tasks-group/obsidian-tasks/discussions/1366#discussioncomment-4578039) as mainly about the visual display of priorities, not the number of them.

I'm still keen to understand, though, what are your specific reasons for needing more priorities?

In the meantime, I'll go ahead and make some initial comments on the changes in the code.



claremacrae: > The names for new priorities were inspired by the names used in jira, 

OK I'll take the fact that these new names already exist in Jira as good enough motivation!!!



chrabia: > I'm still keen to understand, though, what are your specific reasons for needing more priorities?

Well, I started lately moving from other task management apps to Obsidian, I really like it and this plugin in particular too. But, I have a lot of tasks, and priority feature helps me to, well, prioritize what should I be doing in which order. These tasks are usually not really time-related things, so assigning due date doesn't really make sense. But, when you have only 4 levels of priority there is not really enough granularity. Especially, considering that I'm a bit reluctant of setting many tasks to "high" at the moment, as the highest possible priority is something that makes you consider a task to be done ASAP. And there can't be many things which you can really do ASAP. So that leaves me with 3 priorities really for ~100 tasks.
claremacrae: > ...These tasks are usually not really time-related things, so assigning due date doesn't really make sense. But, when you have only 4 levels of priority there is not really enough granularity. ...

Perfect. I had not thought of priorities like this, and this explanation really helps! Many thanks.
claremacrae: Whilst waiting until I can review the changes, it would be really helpful if you could have a first go at finding all the references to Priority in the documentation and updating them where appropriate, please.

Edit the docs/ directory as a vault within Obsidian.
chrabia: > Whilst waiting until I can review the changes, it would be really helpful if you could have a first go at finding all the references to Priority in the documentation and updating them where appropriate, please.
> 
> Edit the docs/ directory as a vault within Obsidian.

Found some time for that - done :).
I wasn't sure what to do with the Styling section, so I left images as they were and added purple color for highest and green for lowest, should be fine I guess.
claremacrae: Hi, thanks very much for the extra commits... ❤️ 

I'll try them out as soon as I can, and resolve  conversations as I go...
claremacrae: Reminder to self, for after merge:

- [ ] Set the final new Urgency values - and update docs
- [ ] Add new priorities to https://github.com/obsidian-tasks-group/obsidian-tasks/blob/main/resources/sample_vaults/Tasks-Demo/Styling/Sample%20Tasks%20for%20Styling%20Documentation.md?plain=1
- [ ] Update the screenshots in Styling docs

Patch:
diff --git a/docs/Advanced/Quickadd.md b/docs/Advanced/Quickadd.md
index dafa0c55..fa01bb5f 100644
--- a/docs/Advanced/Quickadd.md
+++ b/docs/Advanced/Quickadd.md
@@ -31,7 +31,7 @@ Task with due date only:
 
 Task with priority and reminder date and due date:
 
-`#task {{VALUE:task name}} ⏰ {{VDATE:reminder date and time,YYYY-MM-DD HH:mm}} {{VALUE:⏫,🔼,🔽, }} 📅 {{VDATE:due date,YYYY-MM-DD}}`
+`#task {{VALUE:task name}} ⏰ {{VDATE:reminder date and time,YYYY-MM-DD HH:mm}} {{VALUE:🔺,⏫,🔼,🔽,⏬️, }} 📅 {{VDATE:due date,YYYY-MM-DD}}`
 
 <video controls width="100%">
     <source src="https://user-images.githubusercontent.com/38974541/143468599-ae598f7d-cc84-4fc9-8293-eae72cf81f8a.mov" />
diff --git a/docs/Advanced/Styling.md b/docs/Advanced/Styling.md
index fd145e13..113679ec 100644
--- a/docs/Advanced/Styling.md
+++ b/docs/Advanced/Styling.md
@@ -80,7 +80,7 @@ The generic classes are:
 
 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.
 
-A **priority data attributes** named `data-task-priority` represents the specific priority of a class. It can be `high`, `medium`, `low` or `normal`.
+A **priority data attributes** named `data-task-priority` represents the specific priority of a class. It can be `highest`, `high`, `medium`, `low`, `lowest` or `normal`.
 The `normal` value is special: it is added as a default to a task's upper `task-list-item` even if there is no priority field set for that task.
 
 A **date attribute** represents a due, created, start, scheduled or done date in a format relative to the current date.
@@ -200,6 +200,11 @@ The following rules remove the Tasks priority emoticon and render the tasks' che
 
 <!-- snippet: resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-priority-as-checkbox-color.css -->
 ```css
+.task-list-item[data-task-priority="highest"] input[type=checkbox] {
+    box-shadow: 0px 0px 2px 2px var(--color-purple);
+    border-color: var(--color-purple);
+}
+
 .task-list-item[data-task-priority="high"] input[type=checkbox] {
     box-shadow: 0px 0px 2px 2px var(--color-red);
     border-color: var(--color-red);
@@ -220,6 +225,11 @@ The following rules remove the Tasks priority emoticon and render the tasks' che
     border-color: var(--color-cyan);
 }
 
+.task-list-item[data-task-priority="lowest"] input[type=checkbox] {
+    box-shadow: 0px 0px 2px 2px var(--color-green);
+    border-color: var(--color-green);
+}
+
 /* This part removes the regular priority emoticon */
 span.task-priority {
     display: none;
@@ -457,6 +467,11 @@ span.tasks-list-text {
 }
 
 /* Represent tasks' priority with colorful round checkboxes instead of the priority emoticons */
+.task-list-item[data-task-priority="highest"] input[type=checkbox] {
+    box-shadow: 0px 0px 2px 2px var(--color-purple);
+    border-color: var(--color-purple);
+}
+
 .task-list-item[data-task-priority="high"] input[type=checkbox] {
     box-shadow: 0px 0px 2px 2px var(--color-red);
     border-color: var(--color-red);
@@ -477,6 +492,11 @@ span.tasks-list-text {
     border-color: var(--color-cyan);
 }
 
+.task-list-item[data-task-priority="lowest"] input[type=checkbox] {
+    box-shadow: 0px 0px 2px 2px var(--color-green);
+    border-color: var(--color-green);
+}
+
 /* This part removes the regular priority emoticon */
 span.task-priority {
     display: none;
diff --git a/docs/Advanced/Urgency.md b/docs/Advanced/Urgency.md
index 218f6ec8..2d8b766d 100644
--- a/docs/Advanced/Urgency.md
+++ b/docs/Advanced/Urgency.md
@@ -58,7 +58,11 @@ The scores are as follows:
     <td><code>0.0</code></td>
   </tr>
   <tr>
-    <td rowspan="4">Priority</td>
+    <td rowspan="6">Priority</td>
+    <td>Highest</td>
+    <td><code>9.0</code></td>
+  </tr>
+    <tr>
     <td>High</td>
     <td><code>6.0</code></td>
   </tr>
@@ -73,6 +77,10 @@ The scores are as follows:
   <tr>
     <td>Low</td>
     <td><code>0.0</code></td>
+  </tr>
+    <tr>
+    <td>Lowest</td>
+    <td><code>-0.6</code></td>
   </tr>
   <tr>
     <td rowspan="3">Scheduled</td>
diff --git a/docs/Getting Started/Auto-Suggest.md b/docs/Getting Started/Auto-Suggest.md
index 079e39e4..1c15cc41 100644
--- a/docs/Getting Started/Auto-Suggest.md
+++ b/docs/Getting Started/Auto-Suggest.md
@@ -174,9 +174,11 @@ Similarly, you can type some fraction of the word `start` (of whatever length is
 | Searchable Text               | Text that is added         |
 | ----------------------------- | -------------------------- |
 | ⏎                             | \<new line>                |
+| 🔺 highest priority           | 🔺                         |
 | ⏫ high priority              | ⏫                         |
 | 🔼 medium priority            | 🔼                         |
 | 🔽 low priority               | 🔽                         |
+| ⏬️ lowest priority            | ⏬️                         |
 | 🔁 recurring (repeat)         | 🔁                         |
 | every                         | 🔁 every                   |
 | every day                     | 🔁 every day               |
diff --git a/docs/Getting Started/Priority.md b/docs/Getting Started/Priority.md
index 9fcff0ae..71070b84 100644
--- a/docs/Getting Started/Priority.md
+++ b/docs/Getting Started/Priority.md
@@ -9,10 +9,12 @@ publish: true
 Tasks can have a priority.
 In order to specify the priority of a task, you can append one of the "priority signifiers", shown here in decreasing order of priority:
 
-1. ⏫ for high priority
-2. 🔼 for medium priority
-3. use no signifier to indicate no priority
-4. 🔽 for low priority
+1. 🔺 for highest priority
+2. ⏫ for high priority
+3. 🔼 for medium priority
+4. use no signifier to indicate no priority
+5. 🔽 for low priority
+6. ⏬️ for lowest priority
 
 If a task has no priority at all, it is considered between low and medium priority.
 This means that the priority of 🔽 low tasks is considered lower than the priority of tasks without any specific priority.
@@ -35,7 +37,7 @@ Instead of adding the emoji manually, you can:
 
 The following instructions use the priority signifiers in tasks.
 
-- `priority is (above, below)? (low, none, medium, high)`
+- `priority is (above, below)? (lowest, low, none, medium, high, highest)`
   - [[Filters#Priority|Documentation]]
 - `sort by priority`
   - [[Sorting#Basics|Documentation]]
diff --git a/docs/Queries/Filters.md b/docs/Queries/Filters.md
index e006ded4..1cc3027e 100644
--- a/docs/Queries/Filters.md
+++ b/docs/Queries/Filters.md
@@ -454,14 +454,16 @@ For example:
 
 ### Priority
 
-- `priority is (above|below|not)? (low|none|medium|high)`
+- `priority is (above|below|not)? (lowest|low|none|medium|high|highest)`
 
 The available priorities are (from high to low):
 
-1. ⏫ for high priority
-2. 🔼 for medium priority
-3. use no signifier to indicate no priority (searched for with 'none')
-4. 🔽 for low priority
+1. 🔺 for highest priority
+2. ⏫ for high priority
+3. 🔼 for medium priority
+4. use no signifier to indicate no priority (searched for with 'none')
+5. 🔽 for low priority
+6. ⏬️ for lowest priority
 
 For more information, see [[Priority|Priorities]].
 
diff --git a/docs/Queries/Grouping.md b/docs/Queries/Grouping.md
index 432db8b5..49c99adb 100644
--- a/docs/Queries/Grouping.md
+++ b/docs/Queries/Grouping.md
@@ -77,10 +77,12 @@ For more information, including adding your own customised statuses, see [[Statu
 
 1. `priority`
     - The priority of the task, namely one of:
+        - `Priority 0: Highest`
         - `Priority 1: High`
         - `Priority 2: Medium`
         - `Priority 3: None`
         - `Priority 4: Low`
+        - `Priority 5: Lowest`
 1. `urgency` ([[Urgency|urgency]])
     - Currently, the groups run from the lowest urgency to highest.
     - You can reverse this with `group by urgency reverse`.
diff --git a/docs/Quick Reference.md b/docs/Quick Reference.md
index 8001fbc7..71301cde 100644
--- a/docs/Quick Reference.md
+++ b/docs/Quick Reference.md
@@ -25,7 +25,7 @@ This table summarizes the filters and other options available inside a `tasks` b
 | `is recurring`<br>`is not recurring`                                                                                                                                                                                                                                                            | `sort by recurring`                         | `group by recurring`   |                        |
 | `recurrence (includes, does not include) <string>`<br>`recurrence (regex matches, regex does not match) /regex/i`                                                                                                                                                                               |                                             | `group by recurrence`  | `hide recurrence rule` |
 | **[[Filters#Priority\|Priority]]** and **[[Urgency\|urgency]]**                                                                                                                                                                                                                                 |                                             |                        |                        |
-| `priority is (above, below, not)? (low, none, medium, high)`                                                                                                                                                                                                                                    | `sort by priority`                          | `group by priority`    | `hide priority`        |
+| `priority is (above, below, not)? (lowest, low, none, medium, high, highest)`                                                                                                                                                                                                                   | `sort by priority`                          | `group by priority`    | `hide priority`        |
 |                                                                                                                                                                                                                                                                                                 | `sort by urgency`                           | `group by urgency`     | `show urgency`         |
 | **[[Filters#Filters for File Properties\|File properties]]**                                                                                                                                                                                                                                    |                                             |                        |                        |
 | `path (includes, does not include) <path>`<br>`path (regex matches, regex does not match) /regex/i`                                                                                                                                                                                             | `sort by path`                              | `group by path`        |                        |
diff --git a/docs/Reference/Task Formats/Dataview Format.md b/docs/Reference/Task Formats/Dataview Format.md
index ab60a290..7e394a26 100644
--- a/docs/Reference/Task Formats/Dataview Format.md
+++ b/docs/Reference/Task Formats/Dataview Format.md
@@ -105,10 +105,12 @@ For more information, see [[Dates]].
 > These names were chosen for use in Tasks, and are not known to dataview. They can of course be searched in dataview.
 
 ```markdown
+- [ ] #task Lowest priority [priority:: lowest]
 - [ ] #task Low priority [priority:: low]
 - [ ] #task Normal priority
 - [ ] #task Medium priority [priority:: medium]
 - [ ] #task High priority [priority:: high]
+- [ ] #task Highest priority [priority:: highest]
 ```
 
 For more information, see [[Priority]].
diff --git a/docs/Reference/Task Formats/Tasks Emoji Format.md b/docs/Reference/Task Formats/Tasks Emoji Format.md
index eee76ca5..741c3557 100644
--- a/docs/Reference/Task Formats/Tasks Emoji Format.md
+++ b/docs/Reference/Task Formats/Tasks Emoji Format.md
@@ -23,10 +23,12 @@ For more information, see [[Dates]].
 ## Tasks Emoji Format for Priorities
 
 ```markdown
+- [ ] #task Lowest priority ⏬️
 - [ ] #task Low priority 🔽
 - [ ] #task Normal priority
 - [ ] #task Medium priority 🔼
 - [ ] #task High priority ⏫
+- [ ] #task Highest priority 🔺
 ```
 
 For more information, see [[Priority]].
diff --git a/resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-priority-as-checkbox-color.css b/resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-priority-as-checkbox-color.css
index fa248597..cdd829d8 100644
--- a/resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-priority-as-checkbox-color.css
+++ b/resources/sample_vaults/Tasks-Demo/.obsidian/snippets/tasks-plugin-priority-as-checkbox-color.css
@@ -1,3 +1,8 @@
+.task-list-item[data-task-priority="highest"] input[type=checkbox] {
+    box-shadow: 0px 0px 2px 2px var(--color-purple);
+    border-color: var(--color-purple);
+}
+
 .task-list-item[data-task-priority="high"] input[type=checkbox] {
     box-shadow: 0px 0px 2px 2px var(--color-red);
     border-color: var(--color-red);
@@ -18,8 +23,12 @@
     border-color: var(--color-cyan);
 }
 
+.task-list-item[data-task-priority="lowest"] input[type=checkbox] {
+    box-shadow: 0px 0px 2px 2px var(--color-green);
+    border-color: var(--color-green);
+}
+
 /* This part removes the regular priority emoticon */
 span.task-priority {
     display: none;
 }
-
diff --git a/src/Query/Filter/PriorityField.ts b/src/Query/Filter/PriorityField.ts
index bf14ea59..991797c7 100644
--- a/src/Query/Filter/PriorityField.ts
+++ b/src/Query/Filter/PriorityField.ts
@@ -10,7 +10,8 @@ export class PriorityField extends Field {
     // is to capture them in Nested Capture Groups, like this:
     //  (leading-white-space-in-outer-capture-group(values-to-use-are-in-inner-capture-group))
     // The capture groups are numbered in the order of their opening brackets, from left to right.
-    private static readonly priorityRegexp = /^priority(\s+is)?(\s+(above|below|not))?(\s+(low|none|medium|high))$/;
+    private static readonly priorityRegexp =
+        /^priority(\s+is)?(\s+(above|below|not))?(\s+(lowest|low|none|medium|high|highest))$/;
 
     createFilterOrErrorMessage(line: string): FilterOrErrorMessage {
         const result = new FilterOrErrorMessage(line);
@@ -20,6 +21,9 @@ export class PriorityField extends Field {
             let filterPriority: Priority | null = null;
 
             switch (filterPriorityString) {
+                case 'lowest':
+                    filterPriority = Priority.Lowest;
+                    break;
                 case 'low':
                     filterPriority = Priority.Low;
                     break;
@@ -32,6 +36,9 @@ export class PriorityField extends Field {
                 case 'high':
                     filterPriority = Priority.High;
                     break;
+                case 'highest':
+                    filterPriority = Priority.Highest;
+                    break;
             }
 
             if (filterPriority === null) {
@@ -92,6 +99,9 @@ export class PriorityField extends Field {
                 case Priority.High:
                     priorityName = 'High';
                     break;
+                case Priority.Highest:
+                    priorityName = 'Highest';
+                    break;
                 case Priority.Medium:
                     priorityName = 'Medium';
                     break;
@@ -101,6 +111,9 @@ export class PriorityField extends Field {
                 case Priority.Low:
                     priorityName = 'Low';
                     break;
+                case Priority.Lowest:
+                    priorityName = 'Lowest';
+                    break;
             }
             return [`Priority ${task.priority}: ${priorityName}`];
         };
diff --git a/src/Suggestor/Suggestor.ts b/src/Suggestor/Suggestor.ts
index b30d2e1d..72c45ced 100644
--- a/src/Suggestor/Suggestor.ts
+++ b/src/Suggestor/Suggestor.ts
@@ -83,6 +83,10 @@ function addTaskPropertySuggestions(
             appendText: `${symbols.scheduledDateSymbol} `,
         });
     if (!hasPriority(line)) {
+        genericSuggestions.push({
+            displayText: `${symbols.prioritySymbols.Highest} highest priority`,
+            appendText: `${symbols.prioritySymbols.Highest} `,
+        });
         genericSuggestions.push({
             displayText: `${symbols.prioritySymbols.High} high priority`,
             appendText: `${symbols.prioritySymbols.High} `,
@@ -95,6 +99,10 @@ function addTaskPropertySuggestions(
             displayText: `${symbols.prioritySymbols.Low} low priority`,
             appendText: `${symbols.prioritySymbols.Low} `,
         });
+        genericSuggestions.push({
+            displayText: `${symbols.prioritySymbols.Lowest} lowest priority`,
+            appendText: `${symbols.prioritySymbols.Lowest} `,
+        });
     }
     if (!line.includes(symbols.recurrenceSymbol))
         genericSuggestions.push({
diff --git a/src/Task.ts b/src/Task.ts
index 741fb5d5..c7074303 100644
--- a/src/Task.ts
+++ b/src/Task.ts
@@ -19,10 +19,12 @@ import { compareByDate } from './lib/DateTools';
  * @enum {number}
  */
 export enum Priority {
+    Highest = '0',
     High = '1',
     Medium = '2',
     None = '3',
     Low = '4',
+    Lowest = '5',
 }
 
 export class TaskRegularExpressions {
diff --git a/src/TaskLineRenderer.ts b/src/TaskLineRenderer.ts
index bcf0f31d..55b20865 100644
--- a/src/TaskLineRenderer.ts
+++ b/src/TaskLineRenderer.ts
@@ -260,9 +260,11 @@ function getComponentClassesAndData(component: TaskLayoutComponent, task: Task):
             break;
         case 'priority': {
             let priorityValue = null;
-            if (task.priority === taskModule.Priority.High) priorityValue = 'high';
+            if (task.priority === taskModule.Priority.Highest) priorityValue = 'highest';
+            else if (task.priority === taskModule.Priority.High) priorityValue = 'high';
             else if (task.priority === taskModule.Priority.Medium) priorityValue = 'medium';
             else if (task.priority === taskModule.Priority.Low) priorityValue = 'low';
+            else if (task.priority === taskModule.Priority.Lowest) priorityValue = 'lowest';
             else priorityValue = 'normal';
             dataAttributes['taskPriority'] = priorityValue;
             genericClasses.push(LayoutClasses.priority);
diff --git a/src/TaskSerializer/DataviewTaskSerializer.ts b/src/TaskSerializer/DataviewTaskSerializer.ts
index b7f2519d..47058f1d 100644
--- a/src/TaskSerializer/DataviewTaskSerializer.ts
+++ b/src/TaskSerializer/DataviewTaskSerializer.ts
@@ -60,9 +60,11 @@ function toInlineFieldRegex(innerFieldRegex: RegExp): RegExp {
  */
 export const DATAVIEW_SYMBOLS = {
     prioritySymbols: {
+        Highest: 'priority:: highest',
         High: 'priority:: high',
         Medium: 'priority:: medium',
         Low: 'priority:: low',
+        Lowest: 'priority:: lowest',
         None: '',
     },
     startDateSymbol: 'start::',
@@ -72,7 +74,7 @@ export const DATAVIEW_SYMBOLS = {
     doneDateSymbol: 'completion::',
     recurrenceSymbol: 'repeat::',
     TaskFormatRegularExpressions: {
-        priorityRegex: toInlineFieldRegex(/priority:: *(high|medium|low)/),
+        priorityRegex: toInlineFieldRegex(/priority:: *(highest|high|medium|low|lowest)/),
         startDateRegex: toInlineFieldRegex(/start:: *(\d{4}-\d{2}-\d{2})/),
         createdDateRegex: toInlineFieldRegex(/created:: *(\d{4}-\d{2}-\d{2})/),
         scheduledDateRegex: toInlineFieldRegex(/scheduled:: *(\d{4}-\d{2}-\d{2})/),
@@ -93,12 +95,16 @@ export class DataviewTaskSerializer extends DefaultTaskSerializer {
 
     protected parsePriority(p: string): Priority {
         switch (p) {
+            case 'highest':
+                return Priority.Highest;
             case 'high':
                 return Priority.High;
             case 'medium':
                 return Priority.Medium;
             case 'low':
                 return Priority.Low;
+            case 'lowest':
+                return Priority.Lowest;
             default:
                 return Priority.None;
         }
diff --git a/src/TaskSerializer/DefaultTaskSerializer.ts b/src/TaskSerializer/DefaultTaskSerializer.ts
index 73ce50fc..b0c57d24 100644
--- a/src/TaskSerializer/DefaultTaskSerializer.ts
+++ b/src/TaskSerializer/DefaultTaskSerializer.ts
@@ -13,9 +13,11 @@ import type { TaskDetails, TaskSerializer } from '.';
  */
 export interface DefaultTaskSerializerSymbols {
     readonly prioritySymbols: {
+        Highest: string;
         High: string;
         Medium: string;
         Low: string;
+        Lowest: string;
         None: string;
     };
     readonly startDateSymbol: string;
@@ -41,9 +43,11 @@ export interface DefaultTaskSerializerSymbols {
  */
 export const DEFAULT_SYMBOLS: DefaultTaskSerializerSymbols = {
     prioritySymbols: {
+        Highest: '🔺',
         High: '⏫',
         Medium: '🔼',
         Low: '🔽',
+        Lowest: '⏬',
         None: '',
     },
     startDateSymbol: '🛫',
@@ -55,7 +59,7 @@ export const DEFAULT_SYMBOLS: DefaultTaskSerializerSymbols = {
     TaskFormatRegularExpressions: {
         // The following regex's end with `$` because they will be matched and
         // removed from the end until none are left.
-        priorityRegex: /([⏫🔼🔽])$/u,
+        priorityRegex: /([🔺⏫🔼🔽⏬])$/u,
         startDateRegex: /🛫 *(\d{4}-\d{2}-\d{2})$/u,
         createdDateRegex: /➕ *(\d{4}-\d{2}-\d{2})$/u,
         scheduledDateRegex: /[⏳⌛] *(\d{4}-\d{2}-\d{2})$/u,
@@ -103,12 +107,16 @@ export class DefaultTaskSerializer implements TaskSerializer {
             case 'priority': {
                 let priority: string = '';
 
-                if (task.priority === Priority.High) {
+                if (task.priority === Priority.Highest) {
+                    priority = ' ' + prioritySymbols.Highest;
+                } else if (task.priority === Priority.High) {
                     priority = ' ' + prioritySymbols.High;
                 } else if (task.priority === Priority.Medium) {
                     priority = ' ' + prioritySymbols.Medium;
                 } else if (task.priority === Priority.Low) {
                     priority = ' ' + prioritySymbols.Low;
+                } else if (task.priority === Priority.Lowest) {
+                    priority = ' ' + prioritySymbols.Lowest;
                 }
                 return priority;
             }
@@ -160,12 +168,16 @@ export class DefaultTaskSerializer implements TaskSerializer {
     protected parsePriority(p: string): Priority {
         const { prioritySymbols } = this.symbols;
         switch (p) {
+            case prioritySymbols.Lowest:
+                return Priority.Lowest;
             case prioritySymbols.Low:
                 return Priority.Low;
             case prioritySymbols.Medium:
                 return Priority.Medium;
             case prioritySymbols.High:
                 return Priority.High;
+            case prioritySymbols.Highest:
+                return Priority.Highest;
             default:
                 return Priority.None;
         }
diff --git a/src/Urgency.ts b/src/Urgency.ts
index 9185d8ce..b0a14ba0 100644
--- a/src/Urgency.ts
+++ b/src/Urgency.ts
@@ -41,6 +41,10 @@ export class Urgency {
         }
 
         switch (task.priority) {
+            // Highest
+            case '0':
+                urgency += 1.5 * Urgency.priorityCoefficient;
+                break;
             // High
             case '1':
                 urgency += 1.0 * Urgency.priorityCoefficient;
@@ -53,6 +57,11 @@ export class Urgency {
             case '3':
                 urgency += 0.325 * Urgency.priorityCoefficient;
                 break;
+            // no modification for "Low" priority
+            // Lowest
+            case '5':
+                urgency -= 0.1 * Urgency.priorityCoefficient;
+                break;
         }
 
         return urgency;
diff --git a/src/ui/EditTask.svelte b/src/ui/EditTask.svelte
index ea48fbc4..aa43fcb8 100644
--- a/src/ui/EditTask.svelte
+++ b/src/ui/EditTask.svelte
@@ -25,7 +25,7 @@
     let editableTask: {
         description: string;
         status: Status;
-        priority: 'none' | 'low' | 'medium' | 'high';
+        priority: 'none' | 'lowest' | 'low' | 'medium' | 'high' | 'highest';
         recurrenceRule: string;
         createdDate: string;
         startDate: string;
@@ -68,23 +68,45 @@
     const priorityOptions: {
             value: typeof editableTask.priority,
             label: string,
-            symbol: string }[] =
+            symbol: string,
+            accessKey: string,
+            accessKeyIndex: number}[] =
         [{
+            value: 'lowest',
+            label: 'Lowest',
+            symbol: prioritySymbols.Lowest,
+            accessKey: 'o',
+            accessKeyIndex: 1
+        }, {
             value: 'low',
             label: 'Low',
-            symbol: prioritySymbols.Low
+            symbol: prioritySymbols.Low,
+            accessKey: 'l',
+            accessKeyIndex: 0
         }, {
             value: 'none',
             label: 'Normal',
-            symbol: prioritySymbols.None
+            symbol: prioritySymbols.None,
+            accessKey: 'n',
+            accessKeyIndex: 0
         }, {
             value: 'medium',
             label: 'Medium',
-            symbol: prioritySymbols.Medium
+            symbol: prioritySymbols.Medium,
+            accessKey: 'm',
+            accessKeyIndex: 0
         }, {
             value: 'high',
             label: 'High',
-            symbol: prioritySymbols.High
+            symbol: prioritySymbols.High,
+            accessKey: 'h',
+            accessKeyIndex: 0
+        }, {
+            value: 'highest',
+            label: 'Highest',
+            symbol: prioritySymbols.Highest,
+            accessKey: 'i',
+            accessKeyIndex: 1
         }]
 
     /*
@@ -216,12 +238,16 @@
             addGlobalFilterOnSave = true;
         }
         let priority: typeof editableTask.priority = 'none';
-        if (task.priority === Priority.Low) {
+        if (task.priority === Priority.Lowest) {
+            priority = 'lowest';
+        } else if (task.priority === Priority.Low) {
             priority = 'low';
         } else if (task.priority === Priority.Medium) {
             priority = 'medium';
         } else if (task.priority === Priority.High) {
             priority = 'high';
+        } else if (task.priority === Priority.Highest) {
+            priority = 'highest';
         }
 
         editableTask = {
@@ -299,6 +325,9 @@
 
         let parsedPriority: Priority;
         switch (editableTask.priority) {
+            case 'lowest':
+                parsedPriority = Priority.Lowest;
+                break;
             case 'low':
                 parsedPriority = Priority.Low;
                 break;
@@ -308,6 +337,9 @@
             case 'high':
                 parsedPriority = Priority.High;
                 break;
+            case 'highest':
+                parsedPriority = Priority.Highest;
+                break;
             default:
                 parsedPriority = Priority.None;
         }
@@ -359,7 +391,7 @@
         <!-- --------------------------------------------------------------------------- -->
         <div class="tasks-modal-section tasks-modal-priorities" on:keyup={_onPriorityKeyup}>
             <label for="priority-{editableTask.priority}">Priority</label>
-            {#each priorityOptions as {value, label, symbol}}
+            {#each priorityOptions as {value, label, symbol, accessKey, accessKeyIndex}}
                 <span>
                     <!-- svelte-ignore a11y-accesskey -->
                     <input
@@ -367,10 +399,10 @@
                         id="priority-{value}"
                         {value}
                         bind:group={editableTask.priority}
-                        accesskey={accesskey(label.charAt(0).toLowerCase())}
+                        accesskey={accesskey(accessKey)}
                     />
                     <label for="priority-{value}">
-                        <span class="accesskey-first">{label}</span>
+                        <span>{label.substring(0,accessKeyIndex)}</span><span class="accesskey">{label.substring(accessKeyIndex,accessKeyIndex+1)}</span><span>{label.substring(accessKeyIndex+1)}</span>
                         {#if symbol && symbol.charCodeAt(0) >= 0x100}
                             <span>{symbol}</span>
                         {/if}
diff --git a/styles.css b/styles.css
index bbd07c66..aaf7c5bd 100644
--- a/styles.css
+++ b/styles.css
@@ -134,7 +134,7 @@
 
 .tasks-modal-priorities {
     display: grid;
-    grid-template-columns: 4em 5em 5em 7em 5em;
+    grid-template-columns: 4em 8em 8em 8em;
     grid-column-gap: 1.33em;
 }
 
@@ -146,6 +146,9 @@
 .tasks-modal-priorities label {
     border-radius: var(--input-radius);
     padding: 2px 3px;
+    grid-column: 1;
+    grid-row-start: 1;
+    grid-row-end: 7;
 }
 
 .tasks-modal-priorities input:focus + label {
@@ -153,11 +156,11 @@
     border-color: var(--background-modifier-border-focus);
 }
 
-.tasks-modal-priorities input:checked + label > span:first-child {
+.tasks-modal-priorities input:checked + label > span {
     font-weight: bold;
 }
 
-.tasks-modal-priorities input:not(:checked) + label > span:nth-child(2) {
+.tasks-modal-priorities input:not(:checked) + label > span:nth-child(4) {
     filter: grayscale(100%) opacity(60%);
 }
 
@@ -207,7 +210,7 @@
         margin-bottom: -10px;
     }
     .tasks-modal-priorities > label {
-        grid-row: 1 / span 2;
+        grid-row: 1 / span 7;
     }
     .tasks-modal-dates {
         grid-template-columns: 1fr;
@@ -231,7 +234,7 @@
         grid-template-columns: 4em auto;
     }
     .tasks-modal-priorities > label {
-        grid-row: 1 / span 4;
+        grid-row: 1 / span 7;
     }
 }
 


Test patch:
diff --git a/tests/Query/Filter/PriorityField.test.ts b/tests/Query/Filter/PriorityField.test.ts
index d909fb39..09947807 100644
--- a/tests/Query/Filter/PriorityField.test.ts
+++ b/tests/Query/Filter/PriorityField.test.ts
@@ -17,52 +17,83 @@ function testTaskFilterForTaskWithPriority(filter: string, priority: Priority, e
 }
 
 describe('priority is', () => {
+    it('priority is highest', () => {
+        const filter = 'priority is highest';
+        testTaskFilterForTaskWithPriority(filter, Priority.Highest, true);
+        testTaskFilterForTaskWithPriority(filter, Priority.High, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.Medium, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.None, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.Low, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.Lowest, false);
+    });
+
     it('priority is high', () => {
         const filter = 'priority is high';
+        testTaskFilterForTaskWithPriority(filter, Priority.Highest, false);
         testTaskFilterForTaskWithPriority(filter, Priority.High, true);
         testTaskFilterForTaskWithPriority(filter, Priority.Medium, false);
         testTaskFilterForTaskWithPriority(filter, Priority.None, false);
         testTaskFilterForTaskWithPriority(filter, Priority.Low, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.Lowest, false);
     });
 
     it('priority is medium', () => {
         const filter = 'priority is medium';
+        testTaskFilterForTaskWithPriority(filter, Priority.Highest, false);
         testTaskFilterForTaskWithPriority(filter, Priority.High, false);
         testTaskFilterForTaskWithPriority(filter, Priority.Medium, true);
         testTaskFilterForTaskWithPriority(filter, Priority.None, false);
         testTaskFilterForTaskWithPriority(filter, Priority.Low, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.Lowest, false);
     });
 
     it('priority is none', () => {
         const filter = 'priority is none';
+        testTaskFilterForTaskWithPriority(filter, Priority.Highest, false);
         testTaskFilterForTaskWithPriority(filter, Priority.High, false);
         testTaskFilterForTaskWithPriority(filter, Priority.Medium, false);
         testTaskFilterForTaskWithPriority(filter, Priority.None, true);
         testTaskFilterForTaskWithPriority(filter, Priority.Low, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.Lowest, false);
     });
 
     it('priority is low', () => {
         const filter = 'priority is low';
+        testTaskFilterForTaskWithPriority(filter, Priority.Highest, false);
         testTaskFilterForTaskWithPriority(filter, Priority.High, false);
         testTaskFilterForTaskWithPriority(filter, Priority.Medium, false);
         testTaskFilterForTaskWithPriority(filter, Priority.None, false);
         testTaskFilterForTaskWithPriority(filter, Priority.Low, true);
+        testTaskFilterForTaskWithPriority(filter, Priority.Lowest, false);
+    });
+
+    it('priority is lowest', () => {
+        const filter = 'priority is lowest';
+        testTaskFilterForTaskWithPriority(filter, Priority.Highest, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.High, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.Medium, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.None, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.Low, false);
+        testTaskFilterForTaskWithPriority(filter, Priority.Lowest, true);
     });
 });
 
 describe('priority above', () => {
     it('priority above none', () => {
         const filter = 'priority above none';
+        testTaskFilterForTaskWithPriority(filter, Priority.Lowest, false);
         testTaskFilterForTaskWithPriority(filter, Priority.Low, false);
         testTaskFilterForTaskWithPriority(filter, Priority.None, false);
         testTaskFilterForTaskWithPriority(filter, Priority.Medium, true);
         testTaskFilterForTaskWithPriority(filter, Priority.High, true);
+        testTaskFilterForTaskWithPriority(filter, Priority.Highest, true);
     });
 });
 
 describe('priority below', () => {
     it('priority below none', () => {
         const filter = 'priority below none';
+        testTaskFilterForTaskWithPriority(filter, Priority.Lowest, true);
         testTaskFilterForTaskWithPriority(filter, Priority.Low, true);
         testTaskFilterForTaskWithPriority(filter, Priority.None, false);
     });
@@ -70,6 +101,8 @@ describe('priority below', () => {
 
 describe('priority is not', () => {
     it.each([
+        ['lowest', Priority.Lowest, false],
+        ['lowest', Priority.Low, true],
         ['low', Priority.Low, false],
         ['low', Priority.None, true],
         ['none', Priority.None, false],
@@ -78,6 +111,8 @@ describe('priority is not', () => {
         ['medium', Priority.Medium, false],
         ['high', Priority.Medium, true],
         ['high', Priority.High, false],
+        ['highest', Priority.Highest, false],
+        ['highest', Priority.High, true],
     ])('priority is not %s (with %s)', (filter: string, input: Priority, expected: boolean) => {
         // TODO Use name of input priority instead of
         testTaskFilterForTaskWithPriority(`priority is not ${filter}`, input, expected);
@@ -142,9 +177,11 @@ describe('sorting by priority', () => {
         // Assert
         // This tests each adjacent pair of priority values, in descending order,
         // to prove that sorting of all combinations will be correct.
+        expectTaskComparesBefore(sorter, with_priority(Priority.Highest), with_priority(Priority.High));
         expectTaskComparesBefore(sorter, with_priority(Priority.High), with_priority(Priority.Medium));
         expectTaskComparesBefore(sorter, with_priority(Priority.Medium), with_priority(Priority.None));
         expectTaskComparesBefore(sorter, with_priority(Priority.None), with_priority(Priority.Low));
+        expectTaskComparesBefore(sorter, with_priority(Priority.Low), with_priority(Priority.Lowest));
 
         expectTaskComparesEqual(sorter, with_priority(Priority.None), with_priority(Priority.None));
     });
@@ -163,10 +200,12 @@ describe('grouping by priority', () => {
     });
 
     it.each([
+        ['- [ ] a 🔺', ['Priority 0: Highest']],
         ['- [ ] a ⏫', ['Priority 1: High']],
         ['- [ ] a 🔼', ['Priority 2: Medium']],
         ['- [ ] a', ['Priority 3: None']],
         ['- [ ] a 🔽', ['Priority 4: Low']],
+        ['- [ ] a ⏬', ['Priority 5: Lowest']],
     ])('task "%s" should have groups: %s', (taskLine: string, groups: string[]) => {
         // Arrange
         const grouper = new PriorityField().createNormalGrouper().grouper;
diff --git a/tests/Query/Urgency.test.ts b/tests/Query/Urgency.test.ts
index fa969239..6cbd9256 100644
--- a/tests/Query/Urgency.test.ts
+++ b/tests/Query/Urgency.test.ts
@@ -46,10 +46,13 @@ function lowPriorityBuilder() {
 describe('urgency - priority component', () => {
     it('should score correctly for priority', () => {
         const builder = new TaskBuilder();
+        // I don't really know what values should I put here
+        testUrgency(builder.priority(Priority.Highest), 9.0);
         testUrgency(builder.priority(Priority.High), 6.0);
         testUrgency(builder.priority(Priority.Medium), 3.9);
         testUrgency(builder.priority(Priority.None), 1.95);
         testUrgency(builder.priority(Priority.Low), 0.0);
+        testUrgency(builder.priority(Priority.Lowest), -0.6);
     });
 });
 
diff --git a/tests/Suggestor/Suggestor.test.auto-complete_with__dataview__symbols_show_all_suggested_text.approved.md b/tests/Suggestor/Suggestor.test.auto-complete_with__dataview__symbols_show_all_suggested_text.approved.md
index 0eb6427e..aa50e932 100644
--- a/tests/Suggestor/Suggestor.test.auto-complete_with__dataview__symbols_show_all_suggested_text.approved.md
+++ b/tests/Suggestor/Suggestor.test.auto-complete_with__dataview__symbols_show_all_suggested_text.approved.md
@@ -4,9 +4,11 @@
 | due:: due date | due::  |
 | start:: start date | start::  |
 | scheduled:: scheduled date | scheduled::  |
+| priority:: highest highest priority | priority:: highest  |
 | priority:: high high priority | priority:: high  |
 | priority:: medium medium priority | priority:: medium  |
 | priority:: low low priority | priority:: low  |
+| priority:: lowest lowest priority | priority:: lowest  |
 | repeat:: recurring (repeat) | repeat::  |
 | created:: created today (2022-07-11) | created:: 2022-07-11  |
 | every | repeat:: every  |
diff --git a/tests/Suggestor/Suggestor.test.auto-complete_with__emoji__symbols_show_all_suggested_text.approved.md b/tests/Suggestor/Suggestor.test.auto-complete_with__emoji__symbols_show_all_suggested_text.approved.md
index aab2245f..da7a934f 100644
--- a/tests/Suggestor/Suggestor.test.auto-complete_with__emoji__symbols_show_all_suggested_text.approved.md
+++ b/tests/Suggestor/Suggestor.test.auto-complete_with__emoji__symbols_show_all_suggested_text.approved.md
@@ -4,9 +4,11 @@
 | 📅 due date | 📅  |
 | 🛫 start date | 🛫  |
 | ⏳ scheduled date | ⏳  |
+| 🔺 highest priority | 🔺  |
 | ⏫ high priority | ⏫  |
 | 🔼 medium priority | 🔼  |
 | 🔽 low priority | 🔽  |
+| ⏬ lowest priority | ⏬  |
 | 🔁 recurring (repeat) | 🔁  |
 | ➕ created today (2022-07-11) | ➕ 2022-07-11  |
 | every | 🔁 every  |
diff --git a/tests/Suggestor/Suggestor.test.ts b/tests/Suggestor/Suggestor.test.ts
index a23dd714..1ab5df86 100644
--- a/tests/Suggestor/Suggestor.test.ts
+++ b/tests/Suggestor/Suggestor.test.ts
@@ -48,8 +48,8 @@ describe.each([
             { displayText: `${dueDateSymbol} due date`, appendText: `${dueDateSymbol} ` },
             { displayText: `${startDateSymbol} start date`, appendText: `${startDateSymbol} ` },
             { displayText: `${scheduledDateSymbol} scheduled date`, appendText: `${scheduledDateSymbol} ` },
+            { displayText: `${prioritySymbols.Highest} highest priority`, appendText: `${prioritySymbols.Highest} ` },
             { displayText: `${prioritySymbols.High} high priority`, appendText: `${prioritySymbols.High} ` },
-            { displayText: `${prioritySymbols.Medium} medium priority`, appendText: `${prioritySymbols.Medium} ` },
         ]);
     });
 
diff --git a/tests/TaskSerializer/DataviewTaskSerializer.test.ts b/tests/TaskSerializer/DataviewTaskSerializer.test.ts
index e51e7535..16ecb526 100644
--- a/tests/TaskSerializer/DataviewTaskSerializer.test.ts
+++ b/tests/TaskSerializer/DataviewTaskSerializer.test.ts
@@ -32,7 +32,7 @@ describe('DataviewTaskSerializer', () => {
         });
 
         it('should parse a priority', () => {
-            const priorities = ['High', 'Medium', 'Low'] as const;
+            const priorities = ['Highest', 'High', 'Medium', 'Low', 'Lowest'] as const;
             for (const p of priorities) {
                 const prioritySymbol = DATAVIEW_SYMBOLS.prioritySymbols[p];
                 const priority = Priority[p];
@@ -233,8 +233,8 @@ describe('DataviewTaskSerializer', () => {
             expect(serialized).toEqual(`  [${symbol} 2021-06-20]`);
         });
 
-        it('should serialize a High, Medium and Low priority', () => {
-            const priorities = ['High', 'Medium', 'Low'] as const;
+        it('should serialize a Highest, High, Medium, Low and Lowest priority', () => {
+            const priorities = ['Highest', 'High', 'Medium', 'Low', 'Lowest'] as const;
             for (const p of priorities) {
                 const task = new TaskBuilder().priority(Priority[p]).description('').build();
                 const serialized = serialize(task);
diff --git a/tests/TaskSerializer/DefaultTaskSerializer.test.ts b/tests/TaskSerializer/DefaultTaskSerializer.test.ts
index e9c1774b..ecc20209 100644
--- a/tests/TaskSerializer/DefaultTaskSerializer.test.ts
+++ b/tests/TaskSerializer/DefaultTaskSerializer.test.ts
@@ -44,7 +44,7 @@ describe.each(symbolMap)("DefaultTaskSerializer with '$taskFormat' symbols", ({
         });
 
         it('should parse a priority', () => {
-            const priorities = ['High', 'None', 'Medium', 'Low'] as const;
+            const priorities = ['Highest', 'High', 'None', 'Medium', 'Low', 'Lowest'] as const;
             for (const p of priorities) {
                 const prioritySymbol = symbols.prioritySymbols[p];
                 const priority = Priority[p];
@@ -86,8 +86,8 @@ describe.each(symbolMap)("DefaultTaskSerializer with '$taskFormat' symbols", ({
             expect(serialized).toEqual(` ${symbol} 2021-06-20`);
         });
 
-        it('should serialize a High, Medium and Low priority', () => {
-            const priorities = ['High', 'Medium', 'Low'] as const;
+        it('should serialize a Highest, High, Medium, Low and Lowest priority', () => {
+            const priorities = ['Highest', 'High', 'Medium', 'Low', 'Lowest'] as const;
             for (const p of priorities) {
                 const task = new TaskBuilder().priority(Priority[p]).description('').build();
                 const serialized = serialize(task);
diff --git a/tests/TaskSerializer/TaskSerializer.test.ts b/tests/TaskSerializer/TaskSerializer.test.ts
index 3798049d..1febd320 100644
--- a/tests/TaskSerializer/TaskSerializer.test.ts
+++ b/tests/TaskSerializer/TaskSerializer.test.ts
@@ -15,9 +15,9 @@ window.moment = moment;
  This file contains a tested, end-to-end example for implementing and using a
  {@link TaskSerializer}.
  <br>
- This file should also contain any {@link TaskSerializer} tests that should be tested 
+ This file should also contain any {@link TaskSerializer} tests that should be tested
  against all the {@link TaskSerializer}s defined in this repo. Tests that only
- apply to one should be housed in that serializer's specific test file 
+ apply to one should be housed in that serializer's specific test file
 */
 
 describe('TaskSerializer Example', () => {