TODO LIST
-------------
Major tasks [grouped in hopefully 1-2d workable items]

	* Chat Logging
		- Finish and improve 'LOG' command
			- full status output [logging, detached-only? compressed? etc]
			- 'log send' could be shortcut to send a channel's log
			- 'log view' could be shortcut to view channel log
			- what to do about private log?

	* update documentation
		- remaining TODO bits
		- proofread
		- config file updates
		- config file syntax check (consistent use of quotes and such) 
		- update changelog [in progress]

	* vfs:
		- implement move
		- implement copy
		- implement chown/chgrp
		- Legal filenames: currently only slashes are prohibited, although for potential Windoze
		  ports this needs to be further defined.
		- UTF-8 filenames?  Escape non-printable characters?
		- "Sticky bit" support
		- better handling of "exists on disk but not in vfs" -- see receive_dcc_offer()
	
	* new user preferences file format
		- TODO: decide on node removal requirements
		- TODO: need to implement node removal functionality
		- what to do about encrypted strings (passwords, etc)?

	* Flood protection
		- Test and tweak.		
		

Other stuff:
	 
	* IRC protocol:	
		- support STATUSMSG in 005
		- support STATUSMSG-prefixed messages and log them correctly

	* general:
		- A 'die' command is needed for the config file parsing
		- Ping IRC server and possibly the client
		- Move cprintf() calls out of the dcc helper functions

	* UI:
		- Clean up error messages

	* Add compatibility layer for old config file format
		- mostly finished
		- implement 'version' command and backward compatibility.
	
Known bugs
	* Cannot operate without vfs at the moment	[getting better]
	* Quotas are broken, fate unknown
	* Traffic stats are broken
	* socket::flush(socket *) --> flush all or only amount addable to target?

Beyond 2.0:
	* More automated features
	* Some kind of web interface
	* Dynamic server lists 
	* Notes system
	* Multiple clients attached to one IRC connection.
	* Better anti-idling
	* Handle 'kb' 'mb' etc. in numerical config options
	* Reloading the config file doesn't even touch the listening ports.
	* A Party-line type of thing.
	* Better handling of incorrect commands or commands at the wrong time (e.g. /CONN while connected)
	* Add options to configure what compression format to use

Technical:
	* Write tests
	* Valgrind runs
	* Require Boost libraries and migrate:
		- smart/scoped pointers
		- tokenizer
		- array
	* STL unordered_map (available in tr1, boost (?))
	* Could move timers into io event code
	* Data structure to represent number ranges (needed for port ranges)

Unlikely:
	* Proxy linking (actually possible, if I get really bored)
	* Refrigerator
