# Inline Todo Plugin

**URL:** <https://discourse.joplinapp.org/t/inline-todo-plugin/25490>\
**Category:** Plugins\
**Created:** [3 May 2022 15:21 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490 "2022-05-03T15:21:16Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![CalebJohn](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/calebjohn/32/356_2.png) [@CalebJohn](https://discourse.joplinapp.org/u/CalebJohn)\
**Post date:** [3 May 2022 15:21 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/1 "2022-05-03T15:21:16Z")

</div>

This plugin introduces an "inline todo" syntax that will be collected into a single note for easy viewing.

The plugin supports multiple "styles" of inline todo, which can be switched in the options. I've also written the plugin in a way that should make it easy to add new styles if needed. Here is an example of the default style (which is based on [confluence](https://discourse.joplinapp.org/t/create-a-task-report-plugin-for-a-joplin-note-taking-app/21177)).

```markdown
I take a lot of notes about various things. It can be helpful to
keep my TODOs together with the content they pertain to.

- [] @TODO Think about how to make a plugin to solve this +joplin

This way the TODO benefits from context.

- [] @TODO +joplin //2022-04-04 Release the TODO plugin!

I'd still like a way to view all these! See below.

```

The text behind @ is an assignee/category and there can only be one of these. The text behind + is a tag, there can be multiple tags.

These inline TODOs are collected and aggregated into a single note. Currently there are 2 styles heading and table. Table is likely the most practical, because it can be combined with [Hieuthi's table sorting plugin](https://discourse.joplinapp.org/t/plugin-markdown-table-sortable/21846). The default is heading style because I like it the best :). Here's an example of the heading style

```markdown
# DUE
- [Note a](:/e710b7af31fc47c89ca5fc4d3c0ecb3a): 2022-01-13 Have some me time

- [Note b](:/beef7ed6d91649149751cea8d14af02d): 2022-03-12 Meat delivery +burgers

# Bob
## Folder 2
- [Note c](:/ef3aac56ffa246baa6a96cc94dd8f25e): Call Teddy +repairs

# Linda
## Folder 1
- [Note b](:/beef7ed6d91649149751cea8d14af02d): I'll get to this eventually

```

The [README](https://github.com/CalebJohn/joplin-inline-todo#readme) goes into a lot more detail!

This plugin is based on a tool that I wrote using the Joplin api before the plugin system existed. Which means that I'm quite happy with where it's at feature-wise. If you have a feature request, feel free to [make an issue on github](https://github.com/CalebJohn/joplin-inline-todo/issues), but know that it won't likely be added unless you submit a PR yourself.

You can install it now by searching for "Inline TODO" in the Joplin plugin search!

---

<div class="post-metadata">

**Author:** ![tnwn](https://avatars.discourse-cdn.com/v4/letter/t/e79b87/32.png) [@tnwn](https://discourse.joplinapp.org/u/tnwn)\
**Post date:** [3 May 2022 18:41 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/2 "2022-05-03T18:41:25Z")

</div>

Thank you very much! You have made me a present! I have installed your plugin and I am rewriting all my todos now to use it.  
Thank you! It's amazing! Fast, clean, without errors on big abount of checkboxes!

So far (even I have read about "PR yourself" 😁)...  
It is not convenient to have mixed todos from Family and from Work. It would be nice if there would be an option to create a Summary TODO note only for the current notebook.

---

<div class="post-metadata">

**Author:** ![CalebJohn](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/calebjohn/32/356_2.png) [@CalebJohn](https://discourse.joplinapp.org/u/CalebJohn)\
**Post date:** [10 May 2022 00:53 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/3 "2022-05-10T00:53:44Z")

</div>

## v1.3.1

- Add styling to the Confluence style TODOS (in the renderer). Thanks @SeptemberHX !

---

<div class="post-metadata">

**Author:** ![CalebJohn](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/calebjohn/32/356_2.png) [@CalebJohn](https://discourse.joplinapp.org/u/CalebJohn)\
**Post date:** [5 August 2022 03:36 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/4 "2022-08-05T03:36:13Z")

</div>

## v1.4.0

- Add a mark TODO as done command from the context menu. Thanks @[alondmnt](https://github.com/alondmnt)!

---

<div class="post-metadata">

**Author:** ![kinu](https://avatars.discourse-cdn.com/v4/letter/k/3ec8ea/32.png) [@kinu](https://discourse.joplinapp.org/u/kinu)\
**Post date:** [27 August 2022 12:07 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/5 "2022-08-27T12:07:01Z")

</div>

Hello. Excuse me if this is too trivial. I'm novice in Joplin.

I'm not sure of how to make this plugin work.

I'm using Joplin 2.8.8 in Linux Mint (flatpak package). Installed the plugin, re-launch Joplin and set a note like this:  
title:my-todos-test  
text:

```auto
testing....

- [] @TODO hard task to do
- [] @TODO +happy easy task to do +fun

and one more

- [] @TODO this is all for now

```

And then make another note in same notebook  
title: todo summary  
text:

```auto
<!-- inline-todo-plugin -->
# important work

[my-todos-test](:/eb16fef1b1794d6c9ec1ad6828483d0a) : what is is supposed to do this

```

What it is supposed to happen? Shouldn't I see my todos in the summary note?  
 ![imagen](https://canada1.discourse-cdn.com/flex028/uploads/cozic/original/2X/f/feb92451a886cb2f6e082dcd026992f8dea47aa0.png)

---

<div class="post-metadata">

**Author:** ![CalebJohn](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/calebjohn/32/356_2.png) [@CalebJohn](https://discourse.joplinapp.org/u/CalebJohn)\
**Post date:** [27 August 2022 12:16 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/6 "2022-08-27T12:16:13Z")

</div>

The plugin is triggered by opening the note that contains the special comment. Have you tried switching to a different note and then back?

If that doesn't work, maybe a setting was accidentally changed so it doesn't recognize the Todos? For example, you might have set the type to "simple".

---

<div class="post-metadata">

**Author:** ![kinu](https://avatars.discourse-cdn.com/v4/letter/k/3ec8ea/32.png) [@kinu](https://discourse.joplinapp.org/u/kinu)\
**Post date:** [27 August 2022 12:34 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/7 "2022-08-27T12:34:26Z")

</div>

> [@CalebJohn](#):
>
> The plugin is triggered by opening the note that contains the special comment. Have you tried switching to a different note and then back?

Yes, and closing and reopening joplin too. These are my options

![imagen](https://canada1.discourse-cdn.com/flex028/uploads/cozic/original/2X/1/17aee39c0a4d308a64b196643f130cebdedb7f51.png)

---

<div class="post-metadata">

**Author:** ![CalebJohn](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/calebjohn/32/356_2.png) [@CalebJohn](https://discourse.joplinapp.org/u/CalebJohn)\
**Post date:** [27 August 2022 23:41 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/8 "2022-08-27T23:41:06Z")

</div>

You're [not the only one with this issue](https://github.com/CalebJohn/joplin-inline-todo/issues/9). Maybe I can get you to help me track the bug down. Can you toggle the development tools and let me know if there is any error there?

---

<div class="post-metadata">

**Author:** ![kinu](https://avatars.discourse-cdn.com/v4/letter/k/3ec8ea/32.png) [@kinu](https://discourse.joplinapp.org/u/kinu)\
**Post date:** [28 August 2022 12:40 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/9 "2022-08-28T12:40:08Z")

</div>

Of course, I can try to do it.

I've followed the instructions in [Getting started with plugin development | Joplin](https://joplinapp.org/api/get_started/plugins/).  
Then, when I try `yo joplin` this is the result:

```auto
/usr/local/lib/node_modules/yo/node_modules/npm-registry-fetch/node_modules/@npmcli/fs/lib/fs.js:6
const fsSync = Object.fromEntries(Object.entries(fs).filter(([k, v]) =>
                      ^

TypeError: Object.fromEntries is not a function
    at Object.<anonymous> (/usr/local/lib/node_modules/yo/node_modules/npm-registry-fetch/node_modules/@npmcli/fs/lib/fs.js:6:23)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/usr/local/lib/node_modules/yo/node_modules/npm-registry-fetch/node_modules/@npmcli/fs/lib/index.js:2:6)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)

```

I'm running this in Linux Mint 20.

The result of `npm --version && node --version`

6.14.4  
v10.19.0

It seems that node version is too low, and I got lot of warnings while installing yeoman....

---

<div class="post-metadata">

**Author:** ![CalebJohn](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/calebjohn/32/356_2.png) [@CalebJohn](https://discourse.joplinapp.org/u/CalebJohn)\
**Post date:** [28 August 2022 14:21 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/10 "2022-08-28T14:21:56Z")

</div>

Or sorry about that. There's no need to build the plugin yourself. Development tools can be toggled in the Help menu of your Joplin install. (Help -\> toggle development tools)

---

<div class="post-metadata">

**Author:** ![kinu](https://avatars.discourse-cdn.com/v4/letter/k/3ec8ea/32.png) [@kinu](https://discourse.joplinapp.org/u/kinu)\
**Post date:** [28 August 2022 16:51 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/11 "2022-08-28T16:51:42Z")

</div>

Ok. I think I got it using  
` /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=joplin-desktop --file-forwarding net.cozic.joplin_desktop @@u %u @@ --env dev`  
Now I see this besides joplin 'usual' panels

 ![imagen](https://canada1.discourse-cdn.com/flex028/uploads/cozic/original/2X/0/05db3e5d538f74478bb7e7c9b366a9c1da570b15.png)  
What to do now?

---

<div class="post-metadata">

**Author:** ![Daeraxa](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/daeraxa/32/6172_2.png) [@Daeraxa](https://discourse.joplinapp.org/u/Daeraxa)\
**Post date:** [28 August 2022 17:10 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/12 "2022-08-28T17:10:59Z")

</div>

Thats the dev environment and I suspect you don't have the plugin loaded in that, it has its own profile. The instructions were above your post (Help \> Toggle development tools) - Just use your Joplin application.

---

<div class="post-metadata">

**Author:** ![kinu](https://avatars.discourse-cdn.com/v4/letter/k/3ec8ea/32.png) [@kinu](https://discourse.joplinapp.org/u/kinu)\
**Post date:** [28 August 2022 17:54 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/13 "2022-08-28T17:54:17Z")

</div>

Maybe this:

 ![imagen](https://canada1.discourse-cdn.com/flex028/uploads/cozic/original/2X/3/3afca644f50e5f44b1e2e98813591e6961d261b1.png)  
could tell you something

---

<div class="post-metadata">

**Author:** ![kinu](https://avatars.discourse-cdn.com/v4/letter/k/3ec8ea/32.png) [@kinu](https://discourse.joplinapp.org/u/kinu)\
**Post date:** [31 August 2022 17:28 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/14 "2022-08-31T17:28:23Z")

</div>

Hello! It is working now. Thank you

---

<div class="post-metadata">

**Author:** ![CalebJohn](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/calebjohn/32/356_2.png) [@CalebJohn](https://discourse.joplinapp.org/u/CalebJohn)\
**Post date:** [31 August 2022 22:05 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/15 "2022-08-31T22:05:26Z")

</div>

An idea what could have triggered it to start working?

One thing I forgot to ask was, how many notes do you have?

---

<div class="post-metadata">

**Author:** ![kinu](https://avatars.discourse-cdn.com/v4/letter/k/3ec8ea/32.png) [@kinu](https://discourse.joplinapp.org/u/kinu)\
**Post date:** [1 September 2022 07:35 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/16 "2022-09-01T07:35:18Z")

</div>

> [@CalebJohn](#):
>
> An idea what could have triggered it to start working?

Ok, yes. It works in my work (at the office, Arch linux, Joplin 2.8.8), but it doesn't work at home, Linux Mint 20.1, Joplin same version, but flatpak. So must be the flatpak package....

> [@CalebJohn](#):
>
> One thing I forgot to ask was, how many notes do you have?

Not too much, I'm beggining to use Joplin, maybe 150... and only 2 notes have the '@THING' to test the plugin

---

<div class="post-metadata">

**Author:** ![CalebJohn](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/calebjohn/32/356_2.png) [@CalebJohn](https://discourse.joplinapp.org/u/CalebJohn)\
**Post date:** [13 October 2022 08:57 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/17 "2022-10-13T08:57:10Z")

</div>

### v1.5.0

- Feature: Show completed TODOs
  - Turn on under the Inline Todo Settings -\> Advanced

- Feature: New "List" Formatter. This is similar to the Heading/List  
formatter but more skewed for personal use. Thanks to  
[psfinal9](https://github.com/psfinal9) for implementing this!

---

<div class="post-metadata">

**Author:** ![franzperdido](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/franzperdido/32/2980_2.png) [@franzperdido](https://discourse.joplinapp.org/u/franzperdido)\
**Post date:** [4 November 2022 07:36 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/18 "2022-11-04T07:36:52Z")

</div>

Hey, thanks for the great plugin. I really like it, especially as part of the [Plugin Bundle](https://discourse.joplinapp.org/t/plugin-sidebar-plugin-bundles-v0-5-2-2022-10-28). I was wondering if there was any plan to add a [todo.txt](https://github.com/todotxt/todo.txt) style to the plugin.

---

<div class="post-metadata">

**Author:** ![monny](https://avatars.discourse-cdn.com/v4/letter/m/9fc348/32.png) [@monny](https://discourse.joplinapp.org/u/monny)\
**Post date:** [4 November 2022 10:42 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/19 "2022-11-04T10:42:10Z")

</div>

Hi,

thanks for the great plugin!

But, since I keep all notes in one notebook (I only work with linked notes with --Note Link System + NoteOverview) I can't filter my TodoSummerys unfortunately.  
So it would be cool, if you could filter by tags in addition to notebooks.

---

<div class="post-metadata">

**Author:** ![CalebJohn](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/calebjohn/32/356_2.png) [@CalebJohn](https://discourse.joplinapp.org/u/CalebJohn)\
**Post date:** [4 November 2022 15:59 UTC](https://discourse.joplinapp.org/t/inline-todo-plugin/25490/20 "2022-11-04T15:59:59Z")

</div>

> [@franzperdido](#):
>
> I was wondering if there was any plan to add a [todo.txt](https://github.com/todotxt/todo.txt) style to the plugin.

I would like to support todo.txt format eventually.

> [@monny](#):
>
> So it would be cool, if you could filter by tags in addition to notebooks.

That makes sense, do you have a suggestion for how this could work from a ui/ux perspective?

[Next page](https://discourse.joplinapp.org/t/inline-todo-plugin/25490.md?page=2)
