#################################################################################
# 03/08/01, ChatZilla 0.8, <rginda@netscape.com>

=================================================================================
= Bugs fixed

The superbug for ChatZilla 0.8 is 71468, which fixes the following bugs:
22890, 40959, 41798, 42905, 43850, 44077, 54143, 56312, 59036, 59374, 65633, 65634, 65861, 66040, 71310, and 71378.

Also, a workaround for bug 70335 is included, and bug 45576 *may* be fixed, we'll have to wait and see

Link to superbug: http://bugzilla.mozilla.org/show_bug.cgi?id=71468
Link to list of bugs fixed: http://bugzilla.mozilla.org/buglist.cgi?bug_id=22890%2C+40959%2C+41798%2C+42905%2C+43850%2C+44077%2C+54143%2C+56312%2C+59036%2C+59374%2C+65633%2C+65634%2C+65861%2C+66040%2C+71310%2C+71378

=================================================================================
= Changes by file name...

These changes are listed as they appear, when reading a diff between what's in cvs now, and what's in my local tree.  Before checking in, I'll tag the current chatzilla code as chatzilla0.7, and after, chatzilla0.8.  Just diff those two tags to get something to look at alongside this ChangeLog.  Or see the superbug for ChatZilla 0.8, 71468, which has a copy of the diff attached to it.

---------------------------------------------------------------------------------
- NEW FILES:

outputwindow.html:
- used as the base html for the output window, allowed bug 41798, bug 54143, and bug 59374 to be fixed.

ChangeLog:
- this file, tracks changes between ChatZilla versions.  I added the comments from the previous large checkin (retro-branded as ChatZilla 0.7) as well.

TODO:
- List of things to do in the future.

---------------------------------------------------------------------------------
- MODIFIED FILES:

README:
- Started user guide, only the TOC at the moment.

connection-xpcom.js:
- Don't call close on output streams, it throws a NS_ERROR_NOT_IMPLEMENTED.  dougt says just let the refcount go to 0 and it'll be fine.
- Tell the IRCServer object it has lost it's connection when the stream gets an onStopRequest (bug 22890 and 42905)

events.js:
- dump exception on error (to get the filename and linenumber info, if it's there)

irc-debug.js:
- show data for new "info" type of event.

irc.js:
- add a servers collection to the IRCNetwork.  I'm not exactly sure why I didn't do this from the beginning.  It allows us to recover and reuse server objects in the event of a disconnect/reconnect. (bug 22890 and 66040)
- set default number of reconnect attempts to something more tolerable. (bug 22890 and 66040)
- move connection attempt/ next host to attempt information from the event object onto the actual network object.  The new reconnect logic needs it in places where the event is not available. (bug 22890 and 66040)
- spew out info event when max connect attempts are exhausted. (bug 22890 and 66040)
- spew out info event when a connection attempt starts. (bug 22890 and 66040)
- add try/catch around server creation, to be safe.
- spew info event when moving on to the next connection attempt. (bug 22890 and 66040)
- modify CIRCServer connection to check for a dupe server in it's parent.servers collection, re-init/return that object if it exists, otherwise make a new one.
- try to reconnect if the connection was broken before we got a 001 message from the server, regardless of wether ot not the parent IRCNetwork has it's "stayingPower" flag set.
- forward the disconnect event from the server to the network, to keep the network properly informed.
- if an unknown message arrives at the server, send it to the server's onUnknown handler if it exists.  If the server has no onUnknown handler, send it to the parent network's handler for that type of message, if it has one.  If the parent network has no handler for this message, send it to the network's onUnknown handler as a last ditch.  (the event code will fail silently if the network has no onUnknown handler.)
- when we get an 001, reset connection attempt cound, and record the successful connection.
- if the channel's users collection is considered "stable" when a new names list begins to arrive, mark it as unstable before wiping it out.  the list will be marked stable again when the end of names (code 366) message arrives.
- refer to this.foo instead of e.server.foo.  they are the same object, but this.foo is one less lookup.  this change should happen to the rest of this file eventually.
- Tell the network when the user changes their nick.  This is so nick changes that occur when you're not on any channel don't go unnoticed.
- round off excess decimals in the server lag.
- add opCount and voiceCount vars to the IRCChannel during a channel.getUsersCount() call.

utils.js:
- make keys() return an array instead of a string.  this function was not called by anything before this change.
- add formatDateOffset() function to the result of a Date subtraction into english.
- add arraySpeak() function to join an array into an english list.
- add arrayContains() function to search an array for an element.
- add arrayIndexOf() function to get the index of an element within the array.
- modify hyphenateWord() function to search for a goo place to break the word with a -/+ 5 character fuzz factor.
- add splitLongWord() function, similar to hyphenateWord, except returns an array.
- fix stoopid paren bug in roundTo() function.

chatzilla.xul:
- add broadcasters for the file menu items.
- add keys for the file menu items.
- add file menu. (bug 43850)
- move options menu under file menu.
- remove old view toolbar.
- add crop="right" attribute to the userlist table to prevent horizontal scrollbars. (bug 56312)
- whitespace fixes.
- add input splitter for multiline-input mode.
- add multiline-input control for multiline-input mode.
- add crop="right" to statusbar elements (bug 59036 maybe 45576)

commands.js:
- alphabetize commands.
- add client, cancel, disconnect, infobar, list, networks, notify, query, and status commands. (bug 44077)

handlers.js:
- don't call setOutputStyle() onLoad (it's been deleted.)
- we can now call setClientOutput() and initStatic() onLoad, because the output window is a seperate .html file.  This means the the xul onLoad will not be called until the .html file is loaded, and so we can be sure that the content model for the output window will be stable.
- global change from 'quotes like this' to ``quotes like this''.
- set client.debugMode variable when debug messages are on.  This flag is used to determine how we display irc message codes.
- remove onToggleToolbarIcons() because we don't have a toolbar anymore.
- don't allow the last view to be deleted.
- move to new sort-service, but leave the old one in for now.  This keeps us from breaking 0.8 users.
- add keyUp handler for the multiline-input control.
- clear the input control's value in the singleline input control's keyUp handler, instead of onInputCompleteLine(), because we don't want to clear the multiline control.
- switch to multiline mode if the singleline control hears a ctl+up.
- don't spew an error message if autocomplete can't locate a match on [tab]
- remove old (and broken) multiline code.
- add onNotifyTimeout() handler to take care of sending ISON messages.  ISON is used to ask the server if certain users are on, used for the /notify command.
- add onInputCancel() handler (for the /cancel command) to cancel and pending /attach command.
- send unknown / commands directly to the server, (after warning the user that the command was unknown.)
- add onInputSimpleCommand().  Any / commands that can be sent directly to the server can use this function, instead of creating a new one for every "simple" command.
- add onInputStatus() (for the /status command.)  Prints connection status, including connection duration, lag, and channels joined.
- revamp onInputTestdisplay().  It now tests all types of messages, and all munger rules, from multiple sources, to multiple targets.  Much more useful than it used to be.
- add onInputNetworks() (for /networks.)  Lists all networks as a set of irc:// links.
- show an error message if you attempt to /attach to a network you are already attached to.
- fail a /delete if the user provided a parameter.  /delete deletes the *current* view, failing if a param is given prevents accidental deletion.
- Change onInputNames() from a function that toggles the infobar (userlist) visibility to a function that sends a NAMES command to the server.
- add onInputInfobar() to do what onInputName() used to do.
- add extra help message to onInputCommands().
- add status messages to onInputAttach().
- fix onInputMe() so it works on /query views as well as channels.
- add onInputQuery() function (for /query.)
- fix onInputMsg() so it does not force a new query window to open.
- change parameter of temporary doEval() function form s to __s, so as not to interfere with eval'd expressions.
- split EVAL message types into EVAL-IN and EVAL-OUT, so you can see was was eval()d, in the event of an error.
- change onInputTopic() from a function that would consult the irc library for topic information to a function send asks the server to update the topic information in the irc library.  the code that handles TOPIC replies now tales care of printing this information out.
- add onInputNotify() function (for /notify.)
- add onInfo handler to networks.
- add onUnknown handler to networks.
- add 005 to the list of initial server messages that are *always* displayed on the network view.
- force handlers attached to the my_showtonet() function to display on the network view (ignoring the client.SLOPPY_NETWORKS setting.)
- allow NOTICE messages to be affected by client.SPLOPPY_NETWORKS.
- add an on303 (ISON reply) handler to networks.
- add an on322 (LIST reply) handler to networks.
- use the new arraySpeak() and formatDateOffset() functions when printing WHOIS information.
- print error message when a network gets disconnected. (bug 42905)
- show nick change information on the network if it is the current view.
- display "end of NAMES" message if the channel's pendingNamesReply flag is set, then clear pendingNamesReply.  channel.pendingNamesReply is set by the /names command (and cleared in on366) to control wether or not NAMES information (353 and 366 messages) should actually be displayed.  (the irc library will request this information when a new channels is joined, and we don't want to display it in that case.) (bug 40959)
- print topic information on a 332.
- print topic setter information on a 333.
- print NAMES information on 353 if the channel's pendingNamesReply flag is set. (bug 40959)
- global fixes to .display callsites.  new syntax is obj.display (<msg>, <type>, <source>, <dest>);
- beep when a message from a user is received.

readprefs.js:
- remove toolbar.icons pref, we don't have a toolbar anymore.
- set client.debugMode based on debug messages pref.

static.js:
- removed some unused client.PREFERENCE type variables.
- added client.SLOPPY_NETWORKS switch (see comment.)
- added client.HIDE_CODES switch (see comment.)
- added a message code -> display glyph map for use when client.HIDE_CODES is true.
- remove the isPermanent flag from the client view, allows users to delete the client view.
- set client.IGNORE_MOTD to false.
- bump MAX_MESSAGES up a few notches for various view types.
- set onresize handler for the window. (bug 41798)
- create an nsISound in the client object, so we can beep for /msgs.
- hook up multiline-input control keyUp handler.
- remove icons-in-toolbar related code.
- remove network list from the hello message, but...
- call onInputNetworks() during init.
- start the notify interval.
- global change from 'quotes like this' to ``quotes like this''.
- remove dead servers from the efnet server list.
- add opennet network. (bug 65633)
- removed the "you-talking-to-me" munger rule, this is now done in display().
- made bold, underline, teletype, italic regexps more better.
- remove matchMyNick function, this is now done in display().
- add a "chatzilla-link" class to all links.
- style rheet matches as chatzilla-rheet and chatzilla-link.
- keep smileys that start with the number 8 from matching.  (bug 65861)
- fix insertHyphenatedWord() to use splitLongWord() and empty <img> tags, instead of using hyphenateWord() to insert spaces in long words.  the empty <img> lets the layout engine break long words, without adding spaces.
- added skin switching voodoo to mainStep, it's a dumb ass hack, read the comment. (bug 59374)
- removed setOutputStyle() function, we can't do this now that we load the basic output document as a .html file.
- simplified setClientOutput() function.  all the extra work is not needed now that we load the basic output document as a .html file.
- global fixes to .display callsites.  new syntax is obj.display (<msg>, <type>, <source>, <dest>);
- added multilineLineInputMode() function, to set the input mode state.
- added stringToMsg() function.  takes a string and converts it into munged DOM nodes ready to be added to the message window.
- set the "selected" attribute on the current view tab button.
- add scrollDown() function, it's now used from addHistory and onresize.
- put a <tbody> in the <table> before adding content.  (bug 70335)
- create <xul:tab>s instead of <xul:menubutton>s for the views.
- add client.load() function to load js subscripts (won't work until bug 48974 is fixed.)
- combined client, network, channel, and user.display() implementations into a single function.

munger.js:
- rename third parameter to .munge() method.
- break long words found inside text that matched other munger rules.

chatzilla.css:
- remove unused ids and classes.
- made the status data color darker. (bug 65634)

output-default.css:
- removed unused classes.
- added huge comment (read it.)
- changed color scheme.

face-*.gif:
- made the smiley faces smaller so they fit better with the small font.

#################################################################################
# 10/23/00, ChatZilla 0.7, <rginda@netscape.com>

=================================================================================
= Bugs fixed

The superbug for ChatZilla 0.7 is 57633, which fixes the following bugs:
40636, 41343, 51352, 54145, 56708, 57104, and 57138

Link to superbug: http://bugzilla.mozilla.org/show_bug.cgi?id=57633
List of bugs dependent on the superbug: http://bugzilla.mozilla.org/buglist.cgi?field0-0-0=dependson&type0-0-0=equals&value0-0-0=57633&cmdtype=doit

=================================================================================
= Changes ...

= fixed 41343, tab complete still works after part.
= fixed 56708, link to rheet.wav when someone says rheet.
= fixed 40636, delete text when simleys are matched
= fixed 57138, toolbars not collapsing correctly.
= fixed 57104, link regex was kinda lame.
= fixed 54145, link completion char should be a pref.
= fixed 51352, chatzilla should remember your nick.
= cleaned up strict mode warnings.
= adjusted menu layout to make it easier to grok (i hope.)
= added "save settings now" and "save settings on exit" menu items.
= fixed invalid xul tags (<label/>) to avoid nasty warnings.
= implemented save settings functions.
= added prefs for default network, startup urls, nickname autocomplete suffix,
= delete view after part, save settings on exit, stalk list, smiley text deletion.
= removed pref fot startup network/channel (replaced by startup urls.)
= added graphic for scc's ear emoticon (*
= made ui state (toolbar, userlist, statusbar visiblity) persist.

