# Todo Notes

## Goals

Create a special note type for tasks.

## Context

Task management is a popular use case with Dendron. Many users currently use scratch note for tasks.

While it can work, tasks have a lot of additional considerations like priority, ownership and due date that are hard to track in a consistent way using simple scratch notes.

A common pattern for task is using the [ ] syntax to track completion

- [ ] todo1


This works less well once the task becomes a scratch note that is present in multiple places


<!-- weekly.journal.2021.01 --->
- [ ] [[todo1|scratch.journal.2021.01.01.todo1]]
...

<!-- daily.journal.2021.01.01 --->
- [ ] [[todo1|scratch.journal.2021.01.01.todo1]]
...


As a user, I know have to remember to check this task off in multiple places.

## Proposal

To address previously mentioned issues, we introduce the concept of a Task Note. This is a new special note that is meant to make it easier to manage tasks in Dendron.

This RFC aims to implement the following functionality:

• specify how to create and customize task notes
• specify how to change the status of task notes
• specify how to display task notes
• specify how to create different views for task notes

## Details

### Creating a task note

Task notes will be added to Dendron as a lookup modifier with the following default shortcuts:

• CMD+SHIFT+T (mac)
• CTRL+SHIFT+T (windows and linux)
• NOTE: this conflicts with the built in shortcut to reopen a closed window

By default, task notes will be created as a child of the current note. For example, if the current note was proj.build-a-cabin, creating a task note would result in proj.buid-a-cabin.task.{desc} being created where {desc} is the human readable description of said note.

### Customizing a task note

Task notes have the same configuration as Dendron's other special notes.

#### notes.owner.hierarchy

• default: people

The hierarchy for task owners.

### Properties

A task note has the following optional properties that can be set in the frontmatter

completed: boolean
due: date
owner: string
priority: L|M|H
tags: [tag1, tag2]


#### completed

Indicates whether the project is complete

#### due

Date indicating when the task is due

#### owner

The individual responsible for the task

#### priority

The priority of the given task

#### tags

Tags for the given task

### Log

Every time the status changes, it is updated in the log

### Display

When a task is completed, Dendron will create the following rendering

<!-- raw markdown -->
- [[proj.build-a-cabin]]

<!-- rendered markdown in editor and preview-->
- [x] [[proj.build-a-cabin]]


Note that in the editor, the [x] will be rendered as a Text Decorator which means it won't be part of the document but only appear as a visual indicator.

Using the same technique, Dendron can show the rest of the task properties using the text decorator trick.

completed: false
due: friday
owner: kevin
priority: H
tags: [backend]

- [ ] [[proj.build-a-cabin]] due:friday @kevin prio:H #backend


How a text note link is rendered can be configured using notes.task.render property.

## Configuration

• default: `- [{note.completed}][{note.fname}] {% if due %} {% endif %}

{% if posts.length %} {% else %} No project posts yet! {% endif %}