WeeChat - Wee Enhanced Environment for Chat
===========================================

TODO - 2003-09-27

Legend:
  #  done
  +  currently in development
  -  pending
  ?  is this really necessary?


v0.0.1:

 * IRC protocol:
    # "/quote" command: send a raw string to the server without parsing it
    # "/me" command (for user actions description)
    # "/away" command (to toggle the away status)
    # "/op", "/deop", "/voice", "/devoice" commands
    # "/invite" command
    # "/kick", "/ban", "/unban" commands
    # "/kill" command
    # "/list" command: list of channels
    # "/names" command: view who is on a given channel without being
      on it (for example /names #weechat gives all the nicks present on
      #weechat, except those who have the +i flag (server side))
    # "/oper" command: become operator on the irc network
    # "/topic" command: change the topic of a channel
    # "/version" command: give the irc client version (CTCP VERSION)
      of a given nick/channel (without parameter: gives WeeChat version)
    # "/whois" command

 * WeeChat commands:
    # "/clear": to clear window content
 
 * Interface:
    # "demi-highlight" when joins/quits etc
    # log messages/warning/errors to ~/.weechat/log file
    # improve editing zone (left arrow <> backspace)
    # sort nick list
    # choose nick list position (top, left, right (default), bottom)
    # auto-resize nicklist (when nick too long)
    # do pretty cutting of long lines (align on the nick or after hour for server)
    # keep history of commands and call them again with up/down arrow
    # text GUI
    # ncurses GUI:
       # one window for each channel
       # color display
       # private windows
       # redraw window when term size is modified
       # chat history (pgup/pgdn for displaying history)
       # switch to other channel window

 * TCP/IP communication:
    # IPv4 protocol implementation

 * Configuration:
    # write default config file


Future versions:

 * IRC protocol:
    - implement RFC 2812
    + "/mode" command: change the user/channels modes
    - "/dcc" command (for chat and sending/receiving files)
    - manage "halfop" status
    - complete "/list" command: add regexp search, display only channels that
      match regexp
    - "/connect" and "/disconnect" commands (for multiservers use)
    - "/ignore" and "/unignore" commands: hide all that is write by a given
      nick/host
    - when we're away, WeeChat should log all the lines begenning by our nick.
      When we come back from our away it should print it to the current window
    - "/rehash" command: tell the server to reload its config file
    - "/restart" command: tell the server to restart itself
    - "/notify" and "/unnotify" command to be warn by WeeChat when a given
      nick/host connect to the given irc network
    - "/wallops" command: write the same string to all the
      persons with the flag +w enable

 * WeeChat commands:
    - "/completion" command: do shortcuts (for example when we type "u"
      in the text bar it send it to the server as "you")
    - "/exec" command: execute a command as if we was in shell
      and show us the output on the current window. An option to exec
      like -o could send the output to the server, on the current
      channel/private
    - "/reload" command: reload the WeeChat's config file
    - "/set" command: allow the user to set the WeeChat variables
      under WeeChat without editing the config file (colours, time
      format, etc)
    - "/highlight" command: highlight a given word when it appears on
      channels/privates

 * Interface:
    - display current channel modes (example : #weechat(+nt))
    - interpret ^B in messages (this means bold text)
    - internationalization (traduce WeeChat in many languages)
    - many channel windows in one window/term (window split)
    - add lag indicator
    - log chats to file
    - forget some old lines that were displayed long time ago (now all is saved,
      if WeeChat is running for long time, a lot of memory is used!)
    - improve completion (for example complete command parameters when possible)
    - understand incomplete commands if unambigous (for example: /he for /help is ok)
    - add clock (in status bar?)
    - Gtk GUI
    ? Qt GUI

 * TCP/IP communication:
    - IPv6 protocol implementation
 
 * Configuration:
    - add key bindings to config file
    - add missing options for config file
    - write config file
    - add an option for each server in order to run commands on join
      (example: /msg nickserv identify password)
    - channel list for auto-join (for each server)
    - do not stop program if problem with options in config file
    - load config file after GUI (so init values by default (colors, ...) before
      loading config)

 * Plugins:
    - add Perl plugin
    - add Python plugin
    - add Ruby plugin
    - "/load" and "/unload" commands to (un)load extension scripts
      (perl, python, ruby, ...)
