More flexible task management / tag management commands

Currently the #Todo power up has only two states: Unfinished and Finished.

I often find myself that I write a bunch of tasks that I could do and at the end of the day some are unfinsihed but completing them would be not quite correct. An extra Canceled state would be nice.

You can add those extra states manually and style them using Custom CSS, but their tags can not be managed with a simple shortcut like Ctrl + Enter.

Custom CSS
:root{
  --todo-finished-style: unset;  /* unset | line-through */
  --todo-finished-color: #047857;
  --todo-finished-icon: "✔";
  --todo-canceled-style: line-through; /* unset | line-through */
  --todo-canceled-color: #B91C1C;
  --todo-canceled-icon: "✘";
  --todo-in-progress-icon: "⏳"; /* ⟳ */
  --todo-in-progress-color: #3B82F6;
  --todo-next-icon: "⏩";
  --todo-next-color: #B45309;
  --todo-next-style: underline;
}

.rem-todo--finished {
  color: var(--todo-finished-color);
  text-decoration: var(--todo-finished-style);
}

.rem-todo--finished .rem-checkbox {
  visibility: hidden;
}

.rem-todo--finished .rem-checkbox:before {
  visibility: visible;
  content: var(--todo-finished-icon);
  position: absolute;
  top: 2px;
  font-size: 18px;
  
  color: var(--todo-finished-color);
}

[data-rem-tags~="canceled"] .rem-todo--finished {
  color: var(--todo-canceled-color);
  text-decoration: var(--todo-canceled-style);
}

[data-rem-tags~="canceled"] .rem-todo--finished .rem-checkbox:before {
  content: var(--todo-canceled-icon);
  color: var(--todo-canceled-color);
}

[data-rem-tags~="next"] .rem-text:not(.rem-todo--finished) {
  color: var(--todo-next-color);
  text-decoration: var(--todo-next-style);
}

[data-rem-tags~="next"] .rem-text:not(.rem-todo--finished) .rem-checkbox:before {
  content: var(--todo-next-icon);
  color: var(--todo-next-color);
  position: absolute;
  top: 5px;
  left: 12px;
}

[data-rem-tags~="in-progress"] .rem-text:not(.rem-todo--finished) {
  color: var(--todo-in-progress-color);
  text-decoration: var(--todo-in-progress-style);
}

[data-rem-tags~="in-progress"] .rem-text:not(.rem-todo--finished) .rem-checkbox:before {
  content: var(--todo-in-progress-icon);
  color: var(--todo-in-progress-color);
  position: absolute;
  top: 7px;
  left: 16px;
  font-size: 10px;
}

As a long term vision the task management of AmpleNote seems pretty great.
It allows to add additional metadata, computes a Task Score from it and sorts the tasks:

Here is a video demonstrating the system:


I don’t expect RemNote to replicate this completely. It is not the focus of this app and once the API gets more powerful it there could be a plugin implementing a more powerful task management system.

One thing that already could go a long way is having better tag management via shortcuts. E.g. commands for

  • toggling a tag
  • cycling through a set of tags
  • setting a tag from a set of tags while removing the others.

Implementing this via plugins is somewhat possible but not robust at all since you can not specify tags to add or remove by themselves but have to recreate the content of the rem with the tags as #[[text of tag]]. Explicitly adding and removing tags via API without having to worry about the other content would enable this.

2 Likes

You can add slots to “daddy” powerups (Daily Document and Todo) and have them suggested for any instance (or additionally tag the powerup with Automatically Add Template and have them added automatically). See example.
image


What you propose could then be implemented via querying the children of todos and outputting some result. Checking either having the slots added or having specific contents of the slots should allow to replicate the stuff AmpleNote does through a combination of conditionals. If it will be posible to query the rem metadata (or the Calendar/Daily Note stuff), you could also add the logic for checking dates when the todos were set and/or querying the slot that has the date due.

At least that’s what seems like the most plausible route using existing and confirmed upcoming features.

1 Like

I’m currently using custom string [ ], [x], [~], [!], [>], [+] to denote the status of task. such as putoff, cancel, due.
I didn’t use the todo PowerUp since it is too restricted.

For information, Obsidian has recently added the custom status to Markdown todo syntax.

Obsidian Release v0.12.0 (Insider build) - Announcements - Obsidian Forum

  • Task lists [x] can now contain any character to indicate a completed task, instead of just x. This value can be used by custom CSS to change the appearance of the check mark, and is also available for plugins to use.
2 Likes

Hi, How to implement multiple check boxes in single rem with same CSS style as u described.

Done task achieved by just ticking.
but i am stuck at how to use cancelled task. (Tags?)
show gif is possible.

Can this work in the newest version?

image
The format has been broke, how to fix that


This has totally broken on this version

1 Like

How to let the emoji before the text without being assigned Unfinished statues?

To make it work with the latest version (1.7.6), this is what I did:

  • fix selectors by replacing rem-todo--finished with rem-container--todo-finished , and .rem-text:not(xxx) with span:not(xxxx) .rem-text
  • hide the original checkbox by adding [data-rem-tags~="next"] .rem-checkbox { visibility: hidden; } , and add visibility: visible; before content: var(--todo-next-icon); repeat for “in-progress”;
  • adjust emoji location based on your flavor, in my case, changed top from 5px to 4px, left from 12px to 24px
1 Like