==========================
| TipTop 1.5: What's New |
==========================

New License Manager
===================

Allows flexible licensing.  Two license types are now available:

  - Single license: This kind of license ties TipTop to a particular
    machine (i.e., nodelock).  Multiple-nodelock licenses are also
    available, ala TipTop 1.0.

  - Network (floating) license: each license represents a running
    TipTop process on any computer in the local network.


Bundles
=======

On startup, TipTop will load all the bundles found in the .app
folder.  This allows end-users to design their own toolbars, dialog
panels, etc. and fully integrate them into TipTop.

[All the session panels are designed as bundles.  However, they are
statically linked into TipTop because of the performance and VM
penalty associated with the runtime loading.]


Remote Serial Ports
===================

The TipTop Serial Port Server (TTSPServer) allows access of serial
ports on any NEXTSTEP computer reachable through network from TipTop.
You can open a remote modem session just like you would if the modem
was attached directly to your computer!  Contact TipTop Software
for more info on the Serial Port Server.


Mail Transfer Scripts
=====================

Mail transfer scripts allow email transport from and to Mail.app
through TipTop.  When the Deliver button is clicked in Mail.app,
the outgoing message gets queued.  When the SendMail script is run,
all the messages that are queued locally get transferred to the
remote machine and sent to the appropriate recipient(s).  When
the GetMail script is run, all the messages stored in the remote
mailbox get transferred to the local machine so that they can be
read in Mail.app.  This is very useful if one has a Unix account
with email access, and no email access for the local NS machine.

[Currently, scripts have to be explicitly executed.  I.e., there
is no mechanism to automatically run Dial/Login/SendMail/GetMail
scripts when the dial button in Mail.app is clicked.]

Setup Mail.app so that it uses TTSendmailFilter instead of
/usr/lib/sendmail.  (TTSendmailFilter will queue outgoing email
messages.)

  - Install TTSendmailFilter in, say, /usr/local/lib.
  - Then in the Mail.app's Info->Preferences panel switch to the
    "Expert" options, and type "/usr/local/lib/TTSendmailFilter" in
    the "Mailer:" field and click the Set button.

From now on, whenever you click the "Deliver" button in Mail.app,
the message will be queued.  Then, run the SendMail procedure in
TipTop when connected to a remote machine (click the "Send local
mail" button in the "Scripts" toolbar).  The queued email is sent
to the appropriate recipients.

Run GetMail to receive remote mail (click the "Get remote mail"
button in the "Scripts" toolbar).

See TipTop.app/lib/mail.tcl for all the gory detail.

NOTE: The mail transfer scripts are provided as an example.  They
are NOT supported by TipTop Software.


Nicer term Interface
====================

Term panel (an aux session object) is included.


Toolbars
========

Toolbars can be easily changed now: click on the dimple in the
top-left corner of a toolbar.

"Scripts" toolbar is included.  "VTKeys" toolbar is removed since
it is made obsolete by the introduction of the Keys panels.

Toolbar API is provided. It makes it easy to create a bundle which
contains toolbar(s).  See the text below and TTToolbarView.rtf for
more info.


ISO Encoding
============

When character encoding is set to NeXT, no character translation
is done.

When character encoding is set to ISO Latin 1, then character
translation occurs as follows:

  - When a key is hit, the keystroke character code is translated from
    the NeXT encoding into ISO Latin 1.

  - All the text received by the emulator is translated from ISO
    Latin 1 into the NeXT encoding and is then stored into the
    Terminal scrollback buffer and displayed.

  - When text is copied out (i.e., Edit->Copy) from the scrollback
    buffer, it is translated form the NeXT encoding back into ISO
    Latin 1.

Users can add their own encodings.  See the TTCharacterEncoding class.


API
===

Aux Session Object API
----------------------

Auxiliary session objects are the objects associated with a session.
I.e., a session creates an auxiliary object when it needs it.  The
object created goes away when the session is closed.  For example,
DialPanel is an auxiliary objects.  It is created and messaged from
a TickleTop script.  It stays around until the session is closed
(although it is visible only while the dial script is running).

This is unlike the application objects (e.g., Find and Font panels)
which stay around forever (until the app quits).

An aux session object needs to implement only one method:
+newForSession:fromZone:.  The API is defined by the TTAuxSessionObject
category.

The TTSessionPanel class makes it easy to create aux session objects
which are panels.


General API changes (Important!)
--------------------------------

The methods that are intended to be messaged from *outside* TipTop
executable, e.g., from an ObjTcl/TickleTop script or from a transfer
program (sz/rz), are renamed as follow:

If a method takes one or more string arguments (const char *), then
it is prefixed with "do_" (for Distributed Object).  For example:

  - setStringValue:(const char *)s;

would be called:

  - do_setStringValue:(const char *)s;

The non-do_-prefixed methods are still available and should be used
if an object is messaged from *inside* TipTop (i.e., not using the
DO system).

The reason for this is a well-known bug in the DO system: (const
char *) arguments are left allocated after a method exists.  This
means that the memory is leaked.  The do_-prefixed methods will
take care to free the string arguments so that no memory is leaked.
Of course, you can still invoke the non-do_-prefixed method from
*outside* TipTop, but it will leak memory.

[On the other side, when a method which returns (const char *) is
invoked thru the DO system, the returned string is also allocated.
TickleTop takes care of this and frees the returned string when it
is not needed.  However, if you message DO's in your executable,
you have to free the returned strings.]

This problem will be fixed in OpenStep when (const char *) is
replaced by NSString and the reference-counting pseudo-garbage-collection
is used.


Script Changes
==============

Procedure "multidial" is removed.  Procedure "dial", which now uses the Dial panel, will handle multiple telephone numbers.

Procedure "ttt" is replaced with procedure "overlay_port" which takes any number of arguments.

Procedure "StartTerm" now uses the Term panel.


Other
=====

Many small improvements and minor bug fixes.


Source Code
===========

The following classes are available in source format (by request):

  - TermPanel
  - KeypadPanel (VTKeypadPanel, VT220KeypadPanel, FunctionKeysPanel)
  - StandardToolbarView
  - MyCursor (sample bundle which changes terminal mouse cursor)


Known Problems
==============

- The "Next" button in the Dial panel may not get enabled when
  appropriate.  This appears to be a DO bug!

- If you are using NXFax, as before, when you close a TipTop session,
  give NXFax a chance to reinitialize the modem.  I.e., do not
  reopen the modem session immadiately, wait for ~10sec.


Other notes
===========

- If a TickleTop script gets stuck, hit Cmd-. to kill it.

=======================================================================
