# 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 ]: filter by category (can have multiple) fj : marks task as done fj new : opens new item config in editor. fj undo []: undo last mark (default to last item) fj log [--active] [--category ] []: shows heatmap and history information (includes archived tasks unless marked as active only) fj log modify [--archived] [--category ] []: opens history in editor to modify (add and remove/edit). defaults to all active tasks. paged to 100 latest. fj modify : opens item config file in editor fj archive : archive item (delete but keep history), can be reactivated in future fj unarchive : unarchive item fj delete : marks as deleted, need to go to server to properly delete fj done : 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