-- 1.05 Beta 2 changes --------

 1. Implemented the fetching of avatars from the net and the
    decoding of jpeg files.
 2. The Stats dialog is now a proper child of the player list
    dialog; this prevents potential problems that could happen
    if you switched to the rest of zlauncher while the stats
    window was still open.
 3. Static linking of mfc and msvcrt libraries.
 4. Got rid of the hawknl and pthreadvce libraries. At this
    point, no DLLs at all are needed.
 5. Got rid of nstamp.txt; the timestamp is saved in the internet
    cache.
 6. Fixed the tab order in the login dialog. After the password
    it should go to the "remember password" check box and then
    to the login button.
 7. Got rid of all user-specific avatars; they are fetched from
    the net when needed.


-- 1.05 Beta 3 changes --------

 8. Enabled the addition of multiple custom servers and their
    display together with the other servers.
 9. Changed a bit the short-long filename conversions to avoid
    modifying the plain filename of the wad files; otherwise,
    we would be incompatible with the wad verification process.
10. Improved the display of multiple pwads
11. Added a net address column
12. Enabled the rearrangement of columns by dragging their headers.
13. Got rid of the level column in the player list (on the lower part
    of the main screen); it can be (and is) so trivially circumvented,
    that it often reports misleading data.
14. Enabled the display of player statistics by a double-click on the
    player list on the lower part of the screen.
15. Moved the command to display the player list (which was bound to
    the left-click) to the selection change event (eg., you can do it
    by moving the selection bar with the cursor keys).
16. Moved the server refresh command (which was bound to the right-
    click) to the left-click.
17. Enabled the right-click to display a context menu for the given
    server.
18. Reorganized a bit the menus.
19. Implemented various sorting schemes on the server list.
20. Improved the network code to produce more reliable ping values
    and reduce packet dropping when querying all servers.
21. Added the F5 and Ctrl+F5 accelerators for the "Refresh All"
    and "Requery Master" commands.
22. Improved the server information dialog to show the meaning of
    dmflags and dmflags2 and enable visits to the website or
    sending of mail by clicking on the relevant info.
23. Reads the additional teamplay and other server variables and
    displays more useful information. Among other things, it also
    displays an extra column indicating if a server is password
    protected.
24. Reads optional wads from the server and acts accordingly upon
    launching a new game (ie., it will not stop if an optional
    wad is missing).
25. Integrated getwad with zlauncher; if you try to launch a game
    and a required wad is missing, you will be prompted to search
    for the file. If you answer "Yes", zlauncher will run getwad
    in order to locate the file. If everything goes well, then the
    launch will continue without further prompts. Getwad has been
    converted to a static library, so we still don't need any DLL.
26. When the program was set to compile using the static libraries,
    we would get linker errors about the functions new() and delete()
    being duplicated in nafxcw.lib (MFC static libraries) and
    libcmt.lib (C/C++ multi-threaded runtime libraries). This looks
    like a design limitation of VC++; Microsoft recommends to use the
    DLL version of MFC and to ignore libcmt.lib completely. This however
    results in the program requiring mfc42.dll, msvcrt.dll and msvcp60.dll
    which I find unacceptable. Therefore, I did a rather dirty trick; I
    made a copy of libcmt.lib (called hslibcmt.lib) and I removed the
    functions new() and delete() from that copy. Then I instructed VC++ to
    (a) use static MFC libraries, (b) ignore libcmt.lib and (c) use
    hslibcmt.lib. This works fine, but it's still a pretty weird trick.
    One of its bad side effects is that it's very much dependent on VC++ 6,
    but so is the original problem too. If Microsoft fixes the problem in
    later versions of the compiler, then we will not need this trick any
    more; I'm documenting it so that other developers understand what's
    going on with that library (for example, don't try to use that library
    on another compiler or another version of VC++).


-- 1.05 Beta 4 changes --------

27. Uses a std. ini file instead of a binary cfg file. This will
    facilitate the deployment of a setup program in the future.
28. Saves window position, layout, column order.
29. When refreshing a server, it clears the ping value so that
    we always know if a server has been refreshed or not.
30. Shows the server info in blue when there are players on it.
31. Improved the wad directory dialog to interrupt the automatic
    search properly and to specify the download directory for
    files fetched from the Net.
32. Fixed a small problem where the "There are important news..."
    message would pop up behind the main window.
33. Improved the speed of the server information display and
    reduced dropped server responses.
34. Enabled the XP look (on Windows XP of course).
35. Added a new command in the Help menu to go to the news page
36. Added a "key" icon that appears on password-protected servers
37. Added server-specific passwords
38. Added an indicator of the total number of servers on the
    status line.
39. Improved the reliability of the net code; it (hopefully)
    avoids crashes or other bugs due to simultaneous modification
    of variables by different threads. You should be able to click
    on the "refresh-all" or "query-master" buttons as many times
    and as often as you like without any ill effects.
40. Disabled the refreshing of a single server with a single left-
    click on its name; it was too annoying.


-- 1.05 Beta 5 changes --------

41. Added a progress bar about the refresh process on the status line.
42. Got rid of all Easter eggs, cheats, etc. The executable's size was
    reduced by about 450K.
43. Added a button in the player stats dialog to send the player to the
    avatar mgt. web page. This button is available only for our own
    profile and only when we have reached the last standard avatar (ie.,
    God).
44. Disabled the close button during info update in the playerstats dialog.
45. Added extra checks on shutdown to ensure that all threads are closed.
    If the user tries to exit the program while a refresh is active, the
    program will refuse to exit (so the user can retry in 5 seconds).
46. Added a command in the Stats submenu to view our own stats quickly.
47. Fixed a problem with spaces in iwad paths.
48. Added some avatar caching; the avatars are cached for the duration of
    the zlauncher session; they are automatically deleted upon exit. This
    caching occurs on top of normal windows caching, so the user is still
    responsible for reasonable cache settings under Windows.
49. Added a new command in the help submenu to bring you to the ZDaemon
    fora.
50. Simplified a bit the help submenu; there is no real point in having
    an "On the web" sub-submenu when the program only operates online.


-- 1.05 Beta 6 changes --------

51. Fixed a stupid bug of me that resulted in a crash when you fetched a
    wad manually.


-- 1.05 Beta 7 changes --------

52. Changed the threshold for enabling custom avatars from 11500 to 3100
    points. The new threshold corresponds to the one between the second
    and third standard (experience-based) avatars.


-- 1.05 Beta 8 changes --------

53. Switched the master port from 15200 to 15300.


-- 1.05.03 changes ------

54. Updated Zlauncher to show detailed version and OS info in the server
    info dialog.
55. Enabled the copying of the server IP address/port by clicking on it
    in the server info dialog.


-- 1.05.04 changes ------

56. Overhauled the credits dialog; the text quality and scrolling speed
    are a bit better and there is no problem if you switch to another
    window and then back to the credits dialog.
57. Fixed a small bug in the experience progress bar in the player info
    dialog; the bug would happen only with large experience values
    (65300 and above).
58. Removed the "Master Refresh" command; this operation is now done
    with the "Refresh All" command.
59. Enabled the use of more custom avatars.
60. Fixed a signed/unsigned bug when a server listens to a port higher
    than 32767.
61. Updated getwad to fetch the search list from the web; also made
    several other minor search improvements to getwad.
62. Enabled the search of IWADs through getwad.
63. Added the %DATE%, %TIME% and %WAD% special sequences in the extra parameter
    string passed to zdaemon. These sequences expand to the current date (YYYYMMDD),
    time (HHMMSS) and wad (WAD1_WAD2_WAD3...) respectively. The %WAD% expansion
    consists of all non-optional PWADs: no IWAD or optional PWADs are included.
64. Added a "Hide Unreachable Servers" option to remove non-responding servers
    from server list.
65. Modified the launcher so that it uses the ini file and zdaemon.exe from
    its own directory instead of the current directory.
66. Added a "Record Demo" to the "Server" menu and the context submenu. It
    prompts you for a demo filename and then launches a game with the "-netrecord"
    option.
67. Fixed a toolbar problem; it sometimes switched to "text label mode" on
    video mode changes and some other events.

-- 1.05.05 changes ------

68. Fixed a small toolbar problem: it would display a small part near the
    left border as transparent.
69. Added autorefresh and auto-relogin options. If activated, they occur
    every 10 minutes.
70. Enforced the current sorting order after you refresh all servers (or they
    autorefresh).
71. Fixed a small repainting problem in the credits dialog
72. Marked the sorting column with a slightly different background color.
73. Added persistence to the sorting method.
74. Added a demo directory setting; the recorded demo files will be stored
    there by default.
75. Added a "play demo" command. It prompts for the demo filename and wad
    names and runs ZDaemon.
76. Fixed a race condition in the closing of the login dialog.
77. Added support for the upcoming CTF mode. For team games (Team DM and CTF) it
    also displays the team score next to the team name on the bottom list.
78. Added a display for the total number of players and bots on the status line.
79. Improved the color selection scheme for the populated servers.
80. Added old-school server settings detection; such servers are indicated
    by a different (golden) icon.
80. Added the display of each server's country and flag.
81. Added support for a new value of the trusted flag (2) returned by the master
    which indicates that the particular server reports detailed stats apart
    from experience.
82. Added more fields in the Server Details dialog to account for new information
    such as gravity and air control values.
83. Added 2 new menu commands to display the experience and stats web pages.
84. Added a new IWAD column to the server display page.
85. Added a (rather hidden) traceroute command: it is invoked by clicking
    the right mouse button in conjunction with the Control key on a server.
    The command invocation is deliberately cryptic as it is not of much
    use to the general audience of the program. The traceroute operation
    is performed by a simple batch file that runs the windows "tracert"
    command. You can also use any other similar program you like, provided
    that:
      a. You add an entry like:
               traceroute=c:\progra~1\some_prog\traceroute.exe
         in the "Misc" section of zlauncher.ini. Note that the specified
         path may NOT contain spaces; if it does, then use the short
         version of the pathname (e.g., use "C:\progra~1\..." instead of
         "C:\Program Files\..." ).
      b. The program you specify must accept an ip address on its command
         line.
86. Added the new TOS document.
87. Implemented the automatic update of the ip/country database through the web.
88. Added commands to specify the color of the populated servers as well as
    the sorting column background.
89. Added a help page describing the various icons on the far left side of
    the server list. It is accessible from the Help submenu.
90. Modified a bit the player list at the bottom half of the screen to
    always sort the players by team, frags and name (in that order).
    It also updates the column label for kills/frags/points depending
    on the nature of the game (Coop --> kills, CTF --> points, DM and
    Team DM --> frags).
91. Added a buddy list with a visual notification of servers containing
    buddies, as well as as optional audio notification when the online
    status of a buddy changes. There are actually 3 different audio clips
    for various conditions: the first one is when one or more buddies
    connect, the second one is when one or more buddies disconnect, and
    the third one is when there are both connections and disconnections.
    Given that the connection status of the buddies gets updated when
    you refresh the servers, I set the auto-refresh timer to 5 minutes
    (instead of 10); this should work better with the buddy list.
    I also added a context menu to the player list on the lower half
    of the screen. The menu has commands to add/remove the given player
    from your buddy list.
92. Added Add/Remove Buddy buttons to the player list dialog.
93. Added a second tab with the buddy list contents separated into online
    and offline groups. There is also a context menu with applicable
    commands for each buddy.

-- 1.05.06 changes ------

94. Replaced the ip/country database files by a DLL; it's faster and
    smaller.
95. Fixed a deadlock occuring at the closing of the Custom Server
    dialog.

-- 1.05.07 changes ------

96. Minor ip/country-related improvements.
97. Added a toolbar button to manage the buddy list.

-- 1.06.04 changes ------

 98. Added different player icons depending on whether it's a bot,
     a spectator or a normal player. The icon for normal players
     uses the team color, or green for DM.
 99. Added support for the display of each player's country.
100. Added support for the new dmgflags2 regarding the preferred
     weapon order and the target name display.

-- 1.06.07 changes ------

101. Added new icons for bot servers
102. Removed the admin submenu for non-admins
103. Blocked the automatic refresh of the servers when the
     launcher window is active or when getwad is downloading
     a wad.   
104. New login screen image courtesy of UrHaSh(OS)

-- 1.06.08 changes ------

105. Implemented an IRC client connecting to a dedicated zdaemon channel.
106. Added new tabs for the ZDaemon home page and forum
107. Added user-definable tabs with Web content
108. Added automatic detection of LAN servers
109. A click of the middle button (or the left+right buttons) on
     a server triggers a refresh of that server.
110. Added a Single Player mode launcher
111. Added an offline mode so people can play SP or join LAN servers
     without logging in to the master.
112. Added a server query speed setting so you can fine tune it to
     your connection's speed.
113. Implemented IRC buddies and integrated them with the in-game ones.
114. Added a command to start ZSLLite

-- 1.06.09 changes ------

115. Added an exit confirmation option
116. Added automatic setting of the away status in IRC while playing a
     game.
117. Fixed a buffer overflow problem when player profiles contained
     more than 255 characters.

-- 1.08.03 changes ------
118. Added an option about the look of the country flags
119. Reorganized the settings/preferences submenus
120. Enabled multiple languages (utf-8) in server banners and player profiles.
121. Major changes to ZRC (check its change log: the changes are far too many to list here).
122. Implemented a tab with favorite servers
123. Added an option about the font used by the launcher.
124. Added more enabling/disabling checks to the gui to visually indicate when some
     operations are not available (eg., while refreshing the server list or offline).
125. New %USER% macro available for demo filenames.
126. Implemented user-defined filtering based on various criteria. Each filtered
     view appears in its own tab and when you hit the "refresh all" button (or F5) 
     it refreshes only the servers in the current tab.
127. The toolbar icons are now user-selectable.

To do
-----
1. Add tooltips for the bullets on the left and the country flags
2. Remember the position of the horizontal splitter bar

