# vim: set ts=8 sw=4 tw=0 fdm=marker
# legend: "-" task, "c" critical, "v" finished, "." pending, "n" cancelled, "--" finished notes
# vimfolding quickstart: zc - close fold, zo - open; use zMzr on this doc
# highlight critical tasks: /^c.*

---- minimal release ---------------------------------------------------- {{{
v accsniffer
v alt
v versiontable
v versionlog
v client
v log
v activity
v server
v db
v crime
v notify
v mbuzzer
v ip
. haship
. ping
. maplog
. watch
                                                                          }}}
---- tmww: bugs --------------------------------------------------------- {{{
- review limited access policy since now it's possible to execute arbitrary code from config
finished .............................. {{{
v fix accsniffer empty party bug
v bash/zsh compatibility rewrite (some constructions from dash don't work in them)
v escape quotes in client versions for valid yaml in versionlog/versiontable
v strict field matching with jq
v check all shell test numerical comparisons to include 2>&- or rewrite with number check -- probably done
v fix cmdline escaping last backslash issue -- fixed cmdline_prefix part to single quotes
v fix accsniffer quotes to single quote
n "detected czemu ... tt" - fix questions in names >> cannot reproduce
                                        }}}
                                                                          }}}
---- tmww: maintain ----------------------------------------------------- {{{
- debian packaging
- split shtest
- split md2man
- change md2man definition list from multiple spaces to colon; replace it in all docs
finished .............................. {{{
v attach gnulib build-aux/gitlog-to-changelog as ChangeLog generator
n single user deploy concerning distributed package/example files -- cancelled, added multiuser upgrade
n separate public repo and private - restricted plugins; separated packaging too -- cancelled
                                        }}}
                                                                          }}}
---- tmww: features ----------------------------------------------------- {{{
- add main option to disable "external", "script" and any other external executable action
- check if possible to get rid of "cat" solution vs rsync/cp with ACL on or somehow else -- suid not suitable
- add action to export online list snapshots to log format
finished .............................. {{{
v add "preload" section to override some plugins and libraries (e.g. altsdb for server version)
v add "-h" option for plugins called using command line with config CMDPREFIX
v add main option to prevent exporting shell variables
v fix config parser to reuse predefined on cmdline TMWW_ variables
v rethink parser - check if some backquote escaping may be dropped
v fix < and > signs in html parser
v rewrite awk config parser. look at allowed characters
v move ring to end, add flag variable to check if ring required at the end
v option to turn off color
v plugin to work with alts db
v ensure all plugins are working with lists
v portable bugtracker for bug/feature/todolist >> just pretty vimfolding
v choose database >> plaintext/jsonlines
v working lists compilation from databases
v rename plugins for .plugin suffix, fix tmww code
v check shared tmp and private tmp folders concept
v add trap in each local lock handler for all plugins
v add handler to check included plugins are not included multiple times
v check printf in all plugins
v change fetch, altsdb, lists paths for common/priv tmp
v replace awk with printf $n when needed - less external calls
v make temporary wrapper for singleuser mv and multiuser workaround with cat
v bash/zsh completion -- zsh only
v add tmw config modline to lessen errors with config name collision with workdir -- just added ".conf" extension
v replace sed for extended regexp option flag compatibility (-r/-E)
v refactor plugins into plugins+libs (not sure) -- refactored
v uberqool feature to read variables from cmdline and pass to commands in actions -- possible now within "execute script"
v add "execute section" action to add arbitrary code within config
n translate chars.txt database into jsonl >> canceled, no much need for timestamps
                                        }}}
                                                                          }}}
---- tmww: plugin: activity --------------------------------------------- {{{
- fix daily/monthly subcommand - accept multiple targets for daily output
- add raw output - lines of numbers; suitable for postprocessing
- add firstseen
- fix some subcommands - add avg playing time per day (not sure needed) with some indication of deviation
- fix daily and monthly for inexistent dates
finished .............................. {{{
v add "exclude char" command to activity printer (daily/monthly/average)
v remove -n option where -d/-m available
                                        }}}
                                                                          }}}
---- tmww: plugin: client ----------------------------------------------- {{{
- possible automatic analyser for full month to check inconsistent client stats
- possible automatic analyser for moment of client version change reporting matched chars not on same account and not already in db
finished .............................. {{{
                                        }}}
                                                                          }}}
---- tmww: plugin: alts ------------------------------------------------- {{{
c crash tests
- add "player" special word to lists to use player alts db
- make minimal testing script (e.g. to ensure escaping done well on most common tasks)
- add "player list custom" for custom jq
- add "player list with NULL as FIELD" with NULL as special word to determine empty fields
finished .............................. {{{
v sort dbplayer entries with jq for easier rcsdiff -- require jq 1.4 or some ugly hack (skipped by default)
v add "player show parties by char/id/player"
v fix internal aux_ procedures to reduce dummy arguments (inherited without proper shift)
v finish automatic char/account resolve
v set up alts db
v fix add char collision
v some output to access every records (maybe with order number)
v add NOT to query "player list" command
v fix 2>&- for all jq expressions
v add fields types quick reference
v add operation "append" to add to db dumped record -- not safe operation, added note to try sanitize when done
v fix accsniffer pcap expression to sniff only particular server -- isn't it done?
n some output to access arrays (meaningful only for bot to wrap manaplus urls) >> left for bot task
                                        }}}
                                                                          }}}
---- tmww: plugin: server ----------------------------------------------- {{{
- add "char list with xx as yy", expr: [not] as|lt|gt|le|ge
- add "char get id by login" and "char get login by id"
finished .............................. {{{
v crash tests
v db/server completion
v process config sections for fields/aliases
v char get inventory/storage by item/itemid
v fix - init fields_printer with empty lines
v party
v player
v summary
                                        }}}
                                                                          }}}
---- tmww: plugin: maplog ----------------------------------------------- {{{
finished .............................. {{{
                                        }}}
                                                                          }}}
---- tmww: plugin: watch ------------------------------------------------ {{{
- list compilation
- list updates
- update file removal
- colorize background - e.g. for lists. probably another section
- fixed columns number
- output every list to new column option
finished .............................. {{{
                                        }}}
---- tmww: plugin: util ------------------------------------------------- {{{
finished .............................. {{{
v function spot: see if player is under known alts online
                                        }}}
                                                                          }}}
---- tmww: documentation ------------------------------------------------ {{{
- simple guide
- add note on new alsa device to tmww-conf
finished .............................. {{{
v md2man fix singleline paragraph/blankline issue
v add note to clean variables in script action after runaction
v glossary section: alt, account, player, etc.
v place author, year, license in sources
v generate 1 manpage for tmww. plugins only in info manual
v separated pages for plugins
v generate single html from separated pages
v alts howto for limited access
v alts example configs
v alts document playerdb fields
v pretty print example
v alts howto
v alts faq section
v fix alts local multiuser setup (full access) tmp folder
n move to pandoc for fast doc regen and texinfo(?) without creepy toolchain
n move to pandoc just for man/html, no texinfo
n source documentation >> manual is already extensive
                                        }}}
                                                                          }}}
