PIRCH 0.80 (Initial Release)


VERSION 0.80A
o   Fixed /ban problem

o   Fixed positioning/sizing of some additional windows

o   Fixed the 'Bubble' text color attribute conflict with the hilite attribute

o   Fixed problem with Long File Name variables in aliases that would append an
    underscore character tro the end of a filename if the LFN and Fill Spaces
    options were enabled in the DCC section

o   Added some advanced channel filtering options.

o   Fixed problem with default download directory and extension mapping

o   Fixed a word wrap but that could cause problems if the window width was too
    small to fit a single character causing a infinite loop

o   Added file server feature.
    The file server window can be opened via the tools menu. Only one file
    server windows can be created, hoever the server supports multiple
    connections and is arranged so that you can easily see who is connectioned
    and what activity is occuring.

    The file server only allows a particular to connect one time, this is
    validated via the user's IP address.

    The /FACCESS command
    /FACCESS <nickname> [homedir] [maxgets]

    This command is used to grant users access to the file server.
    At a minimum you must supply the <nick> parameter. The homedir
    is the name of the root directory the particular user may access.
    If the Homedir param is omitted the user will be granted acess to the default
    Homedir set up in the File Server Options.

o   Added adanced filtering option to allow filtering of keywords which
    you do not want displayed. Channels containing these keywords on the topic
    or in the channel name are discarded.

o   New Commands/variable functions
    /WRITEINI <filename> <section> <key> <value>
    $READINI <filename> <section> <key> <default>     (for use in aliases & events)

    The structure of an ini file is broken down into sections as diplayed below
          [section]
          key=value

    Each inifile may have multiple sections and under each section multiple
    key=value statements

    NOTE: All parameters are required and the function will fail if any are missing.
    The $readini inline function currently must be the last part of an alias or event
    handler statement since the last parameter <default> may contain multiple words.
    The structure of inline functions (ie $read, $readini) will probably change in
    the near future to allow greater flexibility in parameters and a more consistent
    structuring of alias/event code.

    ON JOIN:#:/writeini c:\pirch32\tracking.ini # $nick $nick last joined # on $day $date at $time (CST)
    ON TEXT:!seen*:#:/msg # $readini c:\pirch32\tracking.ini # $2 $2 has not been seen on #

o   Fixed some problems with 2 phase alias parsing

o   Added print capability for channels/msg windows/dcc chats
    To print only a selected oportion of text, click & drag to highlight the text
    and hold the CTRL key down simutaneously... release the mouse button while
    the ctrl key is still down and the text will remain highlighted... not
    select IRC | Print and the 'selected only' option will be enabled in the print window.

o   Added ability to print BIO's

o   Fixed problem with /list if no list was returned an RPL_LISTSTART server reply is
    sent to the client.

o   Added $mode to ON MODE

o   Stopped system from coming to the top when another application is active and
    a new msg window is opened up.

o   Added timeouts to dcc sends for unconnected transactions.


0.82

o   Fixed /define evaluation order in the multi-phase parser

o   Fixed /filedel and implemented a -q option to prevent display of the
    confirmation dialog box.

o   Added automated CTCP flood control. Option is in the Options | prefs |
    flood group

o   Fixed popup menu in notify when on multiple networks...
    Whois request went to the 'active' net, not necessarily the correct net

o   Found and fixed a potential memory leak

o   PIL - PIRCH INTERPRETED LANGUAGE
    PIRCH now includes an integrated scripting language which allows
    a number of new capababilities, including the use of if/then/else,
    while/do, for/to/do statements, full mathematical expressions using
    quantitive operators (+,-,*,/,mod,^), logical operations
    (and, not, or, xor), bitwise operators (bitand, bitor, bitnor,
    bitxor, shl, shr). The PIL procedure/function libray includes common
    routines for string manipulation, type conversion, input/output, and
    and a variety of other data oriented procedure/functions.

    PIL is documented in PIL.DOC (Miscrosoft Word 6.0 format document-can be
    read by Wordpad included with Windows 95 & Windows NT).

    Two new commands have been added to support PIL.

    /RUNSCRIPT <scriptname> <parameters>

    /CALLBACK <server reply code> <script name>

    Both of these commands are documented in help and the PIL reference

       ************** IMPORTANT NOTE ABOUT PIL SUPPORT *****************

    The #pirch channel on the Undernet (this is the primary support channel)
    will NOT answer questions regarding PIL. PIL is an advanced feature
    and as such obviously isn't intended for everyone. Support for PIL can
    be obtained through Northwest Computer Services via email for registered
    users only.

o   Added /ADDPIL <scriptname> to add a script to the alias window form a
    disk file making sharing/installing of PIL scripts easier. The
    same functionality can also be achieved by right clicking over the
    alias list in the alias window and selecting Install PIL script from the
    popup menu.

    Possible useful event: ON DCCDONE:*.pil:/addpil $filename

    Will automatically install a PIL script when dcc'd to you

o   Added ON CTCPREPLY event
    ON CTCPREPLY
    Format:	[=]ON CTCPREPLY:<text>:<alias>[:+]
    Example:	ON CTCPREPLY:*:#: /display > -CTCPs- \-1 *1

    Available info:	$nick - nickname of the user that caused the event
          		$address - nickname of the user that caused the event
	          	*1 - contains the full ctcp reply sent

    This event is triggered when a reply to a CTCP command like /ping is received.

o   Added ON OPNOTICE event
    ON OPNOTICE
    Format:	[@][=]ON OPNOTICE:<text>:<alias>[:+]

    Available info:	$nick - nickname of the user that caused the event
          		$address - nickname of the user that caused the event
	          	*1 - the message

    This event is triggered when a PIRCH opnotice is received and works exactly
    like ON TEXT/ON NOTICE. This will not work with other client style opnotices,
    because other clients simply send them as private notices to each operator,
    with no special tagging (these will trigger an ON NOTICE event.


o   Fixed /filecopy and /filemove

0.85

o   Enabled SOCKS proxy support for connections to IRC servers via lans
    This has only been tested with WINGATE to date and seems to be functional.
    You CAN NOT DCC via SOCKS. HTTP proxy for /fetch will be enabled soon

o   /WHO now shows channel person is on

o   Enabled server logging

o   Enabled long filename usage for all logs

o   DCC Chats are now loged to nickname.dcc to prevent conflict with long
    filenames of private messages from the same person

o   Added unlimited timer iterations for /timer by setting the iteration count to
    -1. Timers created with this method need to be destroyed with /timer <timername> die
    as it will not expire of its own accord.

o   Numerous enhancements to PIL.
    PIL compile speeds have been optimized and are now approximately 6000% faster.
    Avg script compile ratio is now approximately 1700 lines per second

    Compiled PIL scripts are now cached. This means that once a PIL script is
    compiled in a session, PIRCH will retain the script's binary image in memory
    eliminating the necessity of recompiling it during each execution it unless the script is
    changed, avoiding the overhead of compilation each time a script is executed.

o   Fixed /savebuffer bug when a filename was supplied

o   Optimized saving & loading of Aliases

o   New PIL functions
    Sorry for the poor documentation here... will try to get the help file with
    some decent descriptions in place soon

o   New list based procedures/functions

    function createwindow(windowname:string; left,top,width,height:value) : value;
        Creates a new window, caption is set to windowname

    creategadget(parentwindow,controltype,left,top,width,height:value) : value;
        Creates a control in a parent window;

        Control type may be one of the following values
          Label        =  1;
          Edit         =  2;
          Memo         =  3;
          Button       =  4;
          ChkBox       =  5;
          Radio        =  6;
          ListBox      =  7;
          Combo        =  8;
          Group        =  9;
          Panel        = 10;
          Card         = 11;
          Grid         = 12;
          TextScroller = 13;

    procedure SetEvent(windowid : value; eventid : value; command : string);
        Installs a script or alias based event handler for controls.
        Currently only two primary events are handled, button clicks and
        parent window closing. Both of these events have an event id of 1.

        Applies to: Parent Windows and buttons


    procedure SetWindowAttr(controlid,attribute,attrvalue : value);
    function GetWindowAttr(controlid,attribute : value) : value;
        Applies to: All to varying degrees

        Attribute may be one of the following index values
             Color      =  1;
             TextColor  =  2;
             Align      =  3;
             Alignment  =  4;
             Border     =  5;
             Enabled    =  6;
             Visible    =  7;

             Card       = 20;  { card control specific }
             CardState  = 21;  {   "               "   }

    procedure setwindowtext(controlid : integer; text : string);
    function  getwindowtext(controlid) : string;
        Applies to: All except listbox, textscroller

             Sets/retrieves the caption text for a control or window


o New list based procedures/functions

    function ListAppend(controlid : value; item : string) : value;
        adds a string to the end of the list and returns its position
        Applies to: combobox, listbox, memo, textscroller

    function ListInsert(controlid,index : value; item : string) : value;
        inserts a string into the list at position index.
        Applies to: combobox, listbox, memo

    procedure ListClear(controlid : value);
        clears all items from a list
        Applies to: combobox, listbox, memo, textscroller

    procedure ListDelete(controlid,index : value);
        deletes item at position index from a list
        Applies to: combobox, listbox, memo

    function ListGet(controlid,index : value) : string;
        returns the string at position index in the list
        Applies to: combobox, listbox, memo

    function ListSelection(controlid:value) : value;
        returns the index which is currently highlighted
        Applies to: combobox, listbox

    function ListSearch(controlid : value; searchstr : string) : value;
        searches for searchstr in the list and retiurns the index the
        item is found at. If searchstr is not found, it returns 0
        Applies to: combobox, listbox

o   /DCC SEND with no parameters now will display the dcc send window

o   You may now have an alias called ESC to represent the ESC key
    Examples:    ESC:/min     (to minimize active window on esc keypress)
                 ESC:/close   (to close active window on esc keypress)

o   Started adding hypertext support to the channel/message text scroller
    Currently supports http:// url format for for world wide web links
    Links have thier own color attribute which may be set in Options | Colors.
    As you move the mouse of a URL sent to as channel or in a message window you
    will see the mouse cursor change to a pointing finger. You can simply click
    on urls to have your web browser load the desired URL

o   Alias editing window may now be kept open and yo may switch in & out of alias
    and chat windows as desired.

o   Fixed bug that did not allow helper apps to properly load after a DCC download.
    (actually the code was never enabled... ooops)

o   DCC Resume option will now be availale even if auto accept is enabled.
    Also fixed a file rename problem in the dcc accept window.

o   DCC confirmation dialog now displays information (path/name size & date)
    about the existing file if a like named file sent to you exists on your system.

o   Added TDCC protocol. TDCC is a faster DCC file transfer protocol. Not compatable
    with standard DCC sending so reciever must also use PIRCH or other TDCC capable
    clients if there are any.

o   Again removed more debug code and reduced resource & memory usage to some degree.
    This process will continue

o   Added TGET command to File server to allow TDCC protocol to be used to retrieve an offered
    file. The client conntecting to your file server must of course of TDCC capability
    to make use of the command, or they will have to use the regular GET command.

o   Added /DCCMSG command. Allows you to send a text line to a user via a previously established
    DCC CHAT connect (useful for events).

    Example: ON CHAT:*ping*:/dccmsg $nick pong!

o   Fixed the problem with Default Max Gets Setting in fileserver not being saved properly

o   Added sending of a idle timeout warning mesage to the user approx 30 seconds before
    an idle disconnect connect will occur.

o   Removed the extra line after WALLOPS and SERVER NOTICES displayed in the server window.

o   Added Timestamping options. Options | prefs | misc | timestamping to have it enabled by default
    for all windows. Use /set timestamping ON | OFF to enable/disable timestamping for individual windows.

o   Added $activewin variable to represent the currently active window.

o   Rewrote the /ban command. Nickname no longer need be present in the channel to get banned,
    however should be online so that PIRCH can get proper address mask for the ban.

o   Added /unban command
    Usage: /unban #channel nickname maskmode

o   Added ON ANY event. Trigger on any irc event or CTCP... useful as a dummy event in doodoo lists

o   Including a copy of PILGAMES.DLL which will support a number of PIL game controls but
    the documentation is not done for this version... please do not ask how to use the
    game controls yet.
