# RULES

- For every implementation update the readme
- For every implementation update or add tests
- Run tests
- AVoid using emojis


## Reminder service

### notification action

By default, the service spawns a `notify-send` which on most systems will show the notification and a `dismiss` button, however notification systems also allow to add an `activate` button.

Can the default behavior be: If user clicks
`delay` it will then add a delay to the task.
If user clicks `activate` it will then open the user deafult shell with `dolist ID edit`

Python example:

```
import notify2

def on_action(n, action):
    print("Action triggered:", action)

notify2.init("Example")
n = notify2.Notification("Reminder", "Take a break")
n.add_action("snooze", "Snooze", on_action)
n.add_action("dismiss", "Dismiss", on_action)
n.show()

# The handler runs when user clicks a button.

```
## Reports

Metrics I am looking for:

- Total number of tasks created by period (day, week, month, year)
- Tasks per status per period (how much new, in-progress, done, percentage)
- tasks per tag per period

Based on the data from the tasks and history,
I want to be able to run:

### TUI report

I open the tui normally `dolist` then I
can filter tasks, or perform a search.

based on what is visible I press `r` (Report)

(The existing `r` is bound to refresh, change that to F5)

It opens a screen showing the metrics using charts, I want pie charts and bar charts when it makes more sense.

User can change the period and the metrics will imeditelly reflect/replot.

### CLI report

`dolist ls --report`

Will simply output a json with data for each metric

If there are filters applied to `ls` those will be taken in consideration.

