habit:
`-type: bit/count
`-stats:
  `-year:
    `-month:
      `-bit:
      | `-dates - array
      |
      `-count:
        `-dates - k,v pairs

habit:
`-type: bit/count
`-stats: k,v (dates, bit/count)

Cycle habit type:
 - n states
 - cycles through states on prev next events
 - represent by symbol/char
 - ser to usize?

Modes:
 - day mode - shows all days of 1 month
    * sift months on prev/next
 - week mode?
    * aggregate stats for 1 week
    * show 4 weeks per view
    * bar graph for count and bit

Command mode:
 - add command
    * add <name> <type> <goal>
    * add <name> --type <type> [--goal <goal>]
    * interactive add command via questionnaire?
 - edit command?
    * edit <name> <new-type> <new-goal>
    * edit <name> --goal <new-goal>
    * edit <name> --type <new-type>
    * interactive edit command via questionnaire?
 - delete command
    * delete <name>
    * delete _ (deletes focused?)
 - chronological nav:
    * month-prev mprev
    * month-next mnext

Interface:
 - move view port if focused view goes outside bounds
 - tab completion for command mode? requires lex table
 - move command window to bottom, styling
 - prefix command window with `:`

Undo-tree:
 - store app states in memory
 - should store diffs? or entire state?
 - ideal undo depth limit?

Auto-trackable habits
 - allow editing these habits via cli
 - can track commits, crons
 - disallow editing these habits via curses
 - storage
    * will be mutex with non-auto habits
    * serialize and save separately each other? [imp]
 
