1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# feijao
tasks/streaks tracker
```
fj: lists due tasks/streaks in order of due-time priority
fj [--all]: includes all currently active tasks
fj [--archived]: includes archived tasks
fj [--category <category_id>]: filter by category (can have multiple)
fj <item_id>: marks task as done
fj new <item_id> <cron>: opens new item config in editor.
fj undo [<task_id>]: undo last mark (default to last item)
fj log [--active] [--category <category_id>] [<task_id>]: shows heatmap and history information (includes archived tasks unless marked as active only)
fj log modify [--archived] [--category <category_id>] [<task_id>]: opens history in editor to modify (add and remove/edit). defaults to all active tasks. paged to 100 latest.
fj modify <task_id>: opens item config file in editor
fj archive <task_id>: archive item (delete but keep history), can be reactivated in future
fj unarchive <task_id>: unarchive item
fj delete <task_id>: marks as deleted, need to go to server to properly delete
fj done <task_id>: mark task done
fj list: lists due tasks
```
[ ] add tombstones
- uses cron syntax to mark tasks and when they reset.
- tasks reset at the end of the day (set by config) before when they are next due. if there are multiple times in a day for the task, that task can be marked multiple times.
- can set reminders per task if needed.
- item_id must be unique, but can be modified. not primary key.
- uses naive datetime
- if goals are changed, keep old goal for old streaks
offline support (later):
- server state synced to device whenever command used, so offline
- if not connected to internet, modifications are cached on device
## database
tasks: id, name, cron, archived, categories
name should be unique
log: id, task_id (foreign), datetime
reminders: id, task_id, time_delta
alternative:
tasks + reminders in config file
log is kv store with key = task id, value = list of timestamps
|