$Id: CHANGES,v 1.20 1999/08/03 01:18:44 kalt Exp $

Changes since 0.20a:

- ircii style rendering is now parsed (ESC-h).
- added K_CHIDE to allow tagging characters in a line to be hidden (ESC-H).
- signal handlers weren't correctly initialized.
- configure now looks for libmapmalloc, and uses it if it exists.
- removed periodic log cleaning, you really have to use /clear now.
- removed abort() from sic_getch().
- LOG_HIGHLIGHT was sloppy.
- updated configure to look for tgetent() in curses and ncurses (RedHat 6).
- SIGINT (^C) is now handled.

Changes since 0.19a:

- server options read from file could be set for the wrong server if the 
  connection was delayed until DNS lookup completion.
- SIGCONT and SIGWINCH are now handled.
- curses replaced by termios (yay!).
- updates to configure (among others, -lsocket was missing on solaris?!).
- "/seen" is now a little smarter about where things are seen.
- simplified configure.in by using new autoconf 1.13 macros.
- update to understand 2.10 channel creation (!!).
- fixed broken reply to CTCP TIMEs.
- added "last" and "previous" options to "/window".
- added "/run" command and -r switch.
- "/option ?.c=." now assumes current window's default channel (if any).
- silenced many warnings.

Changes since 0.18a:

- fixed bad interaction between enhanced tabkey and DCCs.
- added new option to log URLs seen by the client (in $SICDIR/URLs).
- incoming DCCs code was hideous (and buggy).
- [nick] would crash the client when using extended syntax (tabkey).
- ported to NetBSD.

Changes since 0.17a:

- "/clear" now also scrolls to the bottom of the log.
- added a few OPER commands (connect, die, restart).
- found a better middle between one and many PING.
- updated "/join" not to crash on comma separated list of channels.
- fixed several simple bugs occuring when a window isn't bound to any server.
- added 'u' flag on status bar (ESC-u).
- output wasn't flushed after a ^T.
- cleaned up sic_swin() to fix window group merges.
- tabkey for dcc chats bugfix.
- data was read from servers & DCC chats line by line, eventually waiting.
- many PINGs were sent to servers when one was enough.
- PINGs sent to servers weren't logged.

Changes since 0.16a:

- added some man pages.
- a buffer was too small in display_status().
- if a rejoin to a channel is pending, an invite will trigger a join.
- when kicked, C_JOINED wasn't cleared, messing up the client internal state.
- USER environment variable is now used for the username.
- various little memory leaks here and there.
- total counters were not updated.
- missing "else" in sic_format() where a "break;" was previously missing.
  [Michael 'Eumel' Neumayer <eumel@42.org>] (Note to self: stop sleep-coding)

Changes since 0.15a:

- missing "break;" in sic_format().
- code to use the protocol level wasn't done. (what was I thinking?)

Changes since 0.14a:

- added protocol detection (until we can have protocol negociation)
  it can be used to customize (see MANUAL).
- missing ^A prefix added in ctcp TIME reply.
- used lame trick to know when JOIN is done instead of asking channel modes.
- fixed /leave (was forgetting channels). [this code is too complex.. bugs!]
- added support for ircd 2.10's !channels.
- removed tgetent() call in term_init(): the tty now seem to be reset properly
  when exiting, and the call was apparently not needed.
- fill the reverse status bar completely (from Eumel).
- fixed long standing dispredency between active and current in get_*().
- Z_UNDEL is now unset (window level: ESC-u) when the log is clear'ed.
- fixed hiding of incoming CTCPs (was hiding every private message;).

Changes since 0.13a:

- now runs on AIX (ported on a 4.1.5 system).
- cleaned up some bad C practices.
- added Z_VCTCP (verbose CTCPs).
- `return' can now be used to scroll down. (convenient with Z_HOLD)
- configure now checks for regular expression matching procedures and uses
  them if they exist.  The GNU Rx library is for OSes that don't have these.
- fixed various problems caused by the big changes between 0.11a and 0.12a.

Changes since 0.12a:

- added K_HIDE and K_IGNORE.
- keywords (not matched against origin) can now be regexp (needs K_REGEXP set).
- added counters for repeating messages (requires GNU Rx library).
- added rewriting rules (based on GNU Rx library).
- "/clear" now only hides entries, they'll be really deleted up to 1h later.
- added Z_RSTATUS, Z_ETABKEY, Z_UNDEL, Z_HOLD (see struct.h).
- cleaned up tabkey for use with services.
- finally fixed tabkey.
- C_JOINED wasn't cleared upon disconnect, breaking auto-rejoins.

Changes since 0.11a:

- extended server configuration file to allow individual uname/rname settings.
- major cleanup of the channel joining/parting code to get rid of the annoying
  bugs preventing the client to forget about a channel.  The downside is that
  the client is much stricter about join/part which could lead to more annoying
  bugs.  Hopefully, it's bugfree ;-)
- fixed tabkey for =nicks.
- 2.9 style JOINs weren't displayed properly.
- runtime switch options now implemented (and used for auto rejoin/reconnect)
- CTCP time/ping replies are now CTCP/2 compliant.
- ignoring was restricted to public messages on channels.

Changes since 0.10a:

- added ESC-s to toggle search on/off.
- bugfix for window_wchannel().
- "/squery" messages now displayed in the default window.
- aliases can now be used to send text to the current channnel.
- the prefix was omitted from log files.
- added sic_wptoggle(), bound ESC-t to it.
- /lastlog was broken.
- auto-rejoin upon reconnect was triggered by /motd.
- tabkey fixes.
- KILL wasn't parsed: added F_KILL (19 which shifts all above numbers).
- DCC would attempt to reconnect!
- reconnects would still be tried if all server windows had been reassigned.
- parse_alias() bugfix.

Changes since 0.9a:

- keep trying to rejoin a channel after a kick.
- keep trying to reconnect to servers when losing a connection.
- mask 10 is now used as activity level.
- tab/space key features have a separate list per server.
- "hmmpf" cleanup to remove aborts on pilot errors.
- added "/option reformat".
- "/topic" still had the problem mentionned below.
- activity no longer reset while scrolling.
- cmd_kick() was broken.. (and I noticed!!).
- transfer rates were shown in b/s but labbeled as Kb/s.
- "/server #" count was messed up.

Changes since 0.8a:

- implemented "/lastlog".
- cursor keys. [Michael 'Eumel' Neumayer <eumel@42.org>]
- flush logfiles after everyline. [Michael 'Eumel' Neumayer <eumel@42.org>]
- "/option get.*.keyword [word]" implemented.
- no need to bind() if socket() failed.
- finished DCC support.
- server pings didn't work.
- "/part" will now really work when not connected to the server.
- "/topic" would always try to set the topic, impossible to just see it.
- cheap fix so that the umode displayed on the status bar are correct.
- fixed buffer overflow in cmd_msgnotice().

Changes since 0.7a:

- "/join" now moves the channel to the current window if it isn't there.
- implemented "/window dcc" (also bound to ^x^d and ^x-d).
- various cleanups.
- added basic virtual interface support (env variable SICIP).
- implemented "/seen".
- implemented "/ping".
- ping the server if nothing was received for more than 60 seconds.
- new key bindings.
- "/option get" cleanup.
- implemented logfiles.
- cleaned up dcc get termination code.

Changes since 0.6a:

- configure now checks if -ltermcap is needed (FreeBSD).
- implemented "/dcc get" (painful).
- fixed analysis of DCC requests.
- no longer checking for data from DNS slave when not waiting for some.
- client no longer crashes on /quit when no server is defined.
- term.c cast changed for portability (FreeBSD).[Stefan `Sec` Zehl<sec@42.org>]
- guesses were too assertive.

Changes since 0.5a:

- "/cmode", "/kick", "/list", "/names", "/topic", "/who" guess the channel.
- implemented "/kick", "/cmode", "/umode".
- "/query" didn't work with DCC chats.
- incoming DCCs didn't trigger the window activity flag.
- channels are now rejoined after receiving numeric 001.
- /part now works when not connected.
- nick changes were displayed and recorded on all servers.
- line matching a search now have their prefix in bold.
- ignored lines now have their prefix underlined when displayed.
- now using strerror().
- removed more abort() from the code.
- failed connect() doesn't call abort() anymore.
- a second "/quit" will close the connection immediately.
- smarter "/query".
- zombies are now repelled.
- if "sdns" dies, it will be restarted (if possible).
- fixed resolving bug.
- fixed cmd_join() to know about channel keys.
- fixed problem in parse_alias().

Changes since 0.4a:

- implemented "/alias".
- implemented "/query".
- it's now possible to change the default channel within the same window.
- implemented input history.
- added bindings for ESC-- and ESC-+.
- smarter tabkey and spacekey behaviours.
- a "QUIT :#channel" message could crash the client.
- fixed allocation problem for numeric formats.
- %p can now be split into words.
- added right/left alignement to formatting routines.
- linux hack from Eumel broke sic_dcc().
- "/ctcp nick foo" doesn't add nick to the tabkey list anymore.
- fixed displaying of 8bit characters.

Changes since 0.3a:

- infinite loop resulting from a "/part".
- failed server connections didn't mark the server as not connected.
- tested on IRIX 5.3.
- autoconf'ed. (hmm)
- ported to linux. (eww)
- read/write pipes are specific to SVR4.

Changes since 0.2a:

- general cleanup.
- added (customizable) format strings for numerics.
- going to the next/previous window didn't work if the window order changed.
- server customization files are now read upon first connect.
- cleaned up DNS. (didn't handle server lookup failures well)
- fixed non blocking IO code.
- PONG replies are now RFC compliant.
- cleaned up early parsing (in particular, removed the erroneous
  assertion on messages having to start with :).
- implemented the ^-space feature.
- "/join asd" would create a channel that you could never get rid of.

Changes since 0.1a:

- implemented "/clear"
- cleaned up window/server re/mappings
- implemented "/window kill" (^x k), "/window number"
- rmatch() was implemented for use in get_ignore()
- cleaned up DCC code, added "/dcc delete"
- IOs are now non blocking (except reads)
