data structure: each ticket has a file, describing the main properties, state of the ticket each commit contains a update msg userinterface: commandline or webserver each list has a empty line which you can just start typing, with method to make the desc larger and '+' to open multiple tickets simultaneously forms are saved automatically, no 'submit' button anywhere. .......... most html is generated by js code the .pl interface just produces convenient data to be used by the js code in the .js code there are functions for accessing the server, mirroring similar functions on the server side. js: 'ui' draws the userinterface js: 'server' contains functions directly accessing the server js: 'model' contains objects representing the model state ............ {} = ticket reference: {/regexp/, #ticketnr, @} /regexp/ ... shows tickets macthing regexp, press 'ENTER' to select @ ... refers to most recently used ticket id ... a randomly generated guid there is a problem with using sequential ticket nrs. problems will arise when tickets from another db are merged in this db. commandline interface: tick new -m "title" -c "component" [-t ] [ -a ] note: ticgit used -t 'title' tick note {} -m "one line note" or open editor tick status - prints summary of recent activity tick show {} tick list - list open tickets tick list closed - list closed tickets, most recently closed first note: ticgit has the concept of a 'checked out ticket' 'tick' searches up to the root, for a '.tick' subdir, which contains the ticket info. tick init - will create a new repository in the current directory tick clone - will clone the repository at 'path' ------------ ticgit layout: /TICKET_ID : /ASSIGNED_ : /TAG_ : /STATE_ : one of: hold, invalid, open, resolved /COMMENT__: ======================= cil : no noninteractive mode cil : does not find root cil : list is not very concise ditz: finds root, but need to be aware of symlinked roots ditz: no noninteractive mode sd : commandline interface too complex