v1.59, Sun Dec  4 01:03:30 PST 1994

 ****** PLEASE NOTE ******
  Version 1.59 of wb requires changes to your .sd.tcl file.  
  The file NOTES contains a new wb script that should replace
  the one in your .sd.tcl.
 *************************

 - make `receiveOnly' default to true to minimize damage from
   scribblers who don't update their sd.tcl.  (suggested by
   Steve Casner)

 - were treating postscript strings with embedded '%' as comments
   and discarding rest of line when printing ps files.  (this
   particularly affected mac ps files & converted them to invalid
   postscript).  (bug reported by Paul Suhler suhler@xanthus.usc.edu
   & Greg Earle earle@isolar.Tujunga.CA.US).

 - loosen up the definition of a 'point' for click-and-type to make
   it easier for caffeine junkies to type in strings.  (suggested by
   Steve Deering & Deborah Estrin)

 - make printing work on an Alpha running osf/1

 - rewrote interviews pager to get rid of some of the weird page
   flipping behavior (double stepping, bouncing pages just after
   flip in large conf, etc.).

 - just complain, don't abort, if user tries to import a ps file
   with bad structure.

 - don't coredump if we change page orientation after a postscript
   error has caused ps interpreter to exit.

 - do a lot more sanity checking on incoming packets to try to avoid
   coredumps from bad drawops.

 - font scaling stuff from 1.58 was pretty broken:  need to flush
   font cache when page is resized and need to scale x font widths
   by current page scale factor or text gets all scrunched up.

 - implement Sally Floyd's suggestion on a deadtime after a repair
   response to flush duplicate repair requests.

v1.58, Fri Jul 29 21:13:32 PDT 1994

 - Added soft `receive only' mode.  If wb is set receiveOnly, the user
   can't make any marks on a page, import files or force remote
   page flips.  'ReceiveOnly' mode is controlled by the X resource
   "wb.receiveOnly" (which defaults to 'false'), the command line
   flags -r (sets receiveOnly to true) & +r (sets receiveOnly to
   false) and the "Receive Only" check box in the sitebox window.
   (this mode suggested by Angela Sasse & Mark Handley of UCL.)

 - Keep names in sitebox sorted.  (Collating order is case-independent
   on letters with all ip addresses after all names).

 - Added "wb.IconMark" X resource that will add mark to iconified
   wb's title when it is drawn on (similar to IconMark resource
   in vat).  (suggested by Mark Handley of UCL)

 - Changed Interviews font machinery so that fonts are scaled by
   picking closest size X font rather than scaling bitmaps.

 - Changed brush machinery so that drawing line thickness is
   scaled appropriately when window is resized.

 - Added 'wb.CompactLayout' X resource to force a more compact
   screen layout (color palatte turned into menu).  Also removed
   `clone page' button since `history' machinery to support its
   intended use hasn't been implemented yet & it is frequently
   abused.  Result of this, font & brush change it that it's possible
   to shrink a wb down to ~1/4 screen size & still use it.
   (changes suggested by Atanu Ghosh & Mark Handley of UCL)

 - Correct mapping of font numbers to X LFD names (was turning
   'oblique' into italic so helvetica oblique wouldn't work;
   also had most of the weights wrong & was missing 6 of the
   Adobe 'standard 15' faces).

 - Printing of ellipses was broken (used wrong coordinate system
   for brush size).

 - Added b-spline fit to smooth freehand lines (when drawing button
   released the straight line segments are replaced by a smoother
   b-spline approximation).  The X resource "wb.LineSmoothness"
   can be used to control the "smoothness" of the final line.  Larger
   numbers make the line "smoother" but a poorer approximation to the
   user's line segments.  Smaller values make the spline a better
   approximation to the user's line segments but 'rougher'.  The
   default LineSmoothness is 16.  The lower limit is probably 2
   (the fit may blow up if smoothness gets too small) and the
   upper limit is probably 200 (more than this & the fit will bear
   no resemblance to the user's line).  Setting wb.SmoothLines to
   "true" will turn on the b-spline fit (default is false).  Can
   also toggle line smoothing on/off via "Smooth Lines" check
   box on sitebox window.

 - Added 'wb.dpsUseColor' to control whether Display Postscript
   displays in color or just with grayscale.  If wb.dpsUseColor
   is false, DPS will use a 32 level gray ramp (the same one
   used by nv) and map colors to gray.  (This is to free color
   map cells for video use since it seems to be impossible to
   force DPS to use a color map that doesn't conflict with
   nv on SGIs.)

 - Added PointerMotionHintMask back to drawing window so motion
   events get compressed & wb doesn't get so far behind when doing
   arrows, moves or copies on busy pages.  This allowed passive
   grabs on buttons to be removed which seems to make 'point
   to type' mode work much more reliably.

 - Did some work to try to reduce X traffic during drawing (the
   Interviews redraw model is just fundamentally broken).  Hacked
   library so clip mask never messed with in drawing window so we
   don't have to reset it every drawop.  Made sitebox highlighting
   and activity updates be done directly rather than going through
   IV (which cut X traffic by a factor of 70).  (problems reported
   by Chris Kantarjiev of PARC.)

 - Still had packet source stuff wrong -- was using ip src addr
   instead of src id field in packet header.

 - Fixed abort on invalid font id (were passing 0 to strlen).

 - Try to do a better job infering when click-and-type is allowed.

 - Port to DEC OSF/1 v2.0 (i.e., undo all the workarounds we had
   for bugs with the v1.3 C++ environment).

 - Deal with BSDI's gratuitous change to the multicast sockopt
   numbers:  If running on x86, try both the correct & BSDI's
   numbers for the sockopts & use whichever works (so program
   will run on both versions on BSD/386, NetBSD, etc.).

v1.5[5-7], Mon Dec 20 03:26:01 PST 1993

 - Added "Print" button that saves current page contents as a
   postscript file that can either be saved to disk or piped to lpr.

 - Made more changes in postscript handling to try to accomodate
   broken postscript files (particularly the weird, non-conforming
   junk that FrameMaker produces):

    - set $brkpage to try to circumvent Framemaker's confused ideas
      on 'error recovery'.

    - added sigchld & sigpipe handlers so we can detect when bad ps
      causes gs to abort.

    - wasn't setting up DPS clippath after changing page layout so
      programs that queried clippath to get device imageable area got
      bogus numbers.

 - removed bogus packet source check that screwed up multi-homed
   hosts and kept Anders Klemets' wb playback tool from working.
   (bugs reported by Anders Klemets and Brad Parker).

 - fixed really stupid bug where characters were being drawn twice if
   page wasn't in portrait orientation.

 - ignore ENOPROTOOPT errors on network sends (bug reported by
   Carl Malamud).

 - lots of changes needed to port to Alpha OSF/1 and HPUX.

v1.54, Mon Oct 11 00:13:46 PDT 1993

 - Added -S (suppress/mute new sites) flag and checkbox control on
   bottom of sitebox.  If this flag is on, new sites will come up
   muted (e.g., their scribbling won't show up on your display).
   For example, if you are watching a lecture you might want to
   start wb with the -S flag then unmute the lecturer's site.
   This will save your view of the lecture from being interrupted
   by random scribbling or page changes.

 - Finished implementing 'point to type' mode and added checkbox
   control to turn it on.  (In point to type mode the text you
   type is placed at the current cursor position.  You don't have
   to click before typing.)  (change requested by Deborah Estrin).

 - Fixed several problems with gs locking up when importing badly
   formed postscript files (files missing a showpage, files
   containing infinite loops, non-conforming files containing
   multiple pages, etc.).  Pretty much re-wrote the way wb talks
   to gs so data to be imaged is written to a temp file & gs is
   fed something that looks a lot like a ps printer's server loop
   so we can detect `stopped' programs, eof, etc.  (Bugs reported
   by Jon Crowcroft et. al. of the MICE project.)

 - Made default page 'name' use IP address rather than hostname.
   The hostname lookup on SunOS/Solaris is so pathetic that huge
   delays were being introduced from wb doing a 'gethostbyaddr'
   to construct the page name.  (Problem reported by Mark Handley
   at UCL.)

 - Added a MaxPostScriptSize X resource and "-P size_in_bytes"
   command line flag.  People have been importing multi-megabyte
   screendumps into wb which take forever to send and do horrible
   things to the network.  Wb now refuses to send a PS page that's
   bigger than MaxPostScriptSize.  MaxPostScriptSize defaults to
   32KB but can be changed (up to a max of 1MB) be setting the
   X resource or supplying -P on the command line.
   NOTE: If you get the error:
	-wb: can't send PS pages larger than NNN bytes (is SSS)
   take a look at the file NOTES for suggestions on how to reduce
   the size of PostScript files (and investigate 'lzps' and 'distill').

 - Fixed a bug that could result in binding to the wrong local address
   for unicast conferences on a multi-homed host.

 - Fixed a bunch of bugs in site muting (were several ways that
   a 'muted' site could put marks on screen or change page --
   there shouldn't be any now).

 - Fixed DefaultBrushColor X resource (was intended to select
   which brush color is initially selected but thing that build
   menu was using wrong name for resource).
 
 - Timers were still too aggressive.  Need to average at least 300ms
   between replyers & want >100ms before first reply to accumulate
   multiple requests (otherwise if request arrives while we're in
   middle of reply we'll do duplicate reply).

 - Fixed DPS bug: was always using screen 0 for DPS context even if
   wb window on some other screen. (problem reported by Tom Kessler
   at Sun.)

 - Fixed several bugs in repair of pages that had been `cloned' from
   some other page (old code simply didn't work).


v1.53, Tue Aug 10 02:56:09 PDT 1993

 - Added 'quit' and 'undo' buttons.  (Actually 'undo' is 'undelete',
   e.g., the same as shift-right mouse but 'undelete' was too long
   a label.)

 - Changed sense of 'landscape' (-l) & 'seascape' (+l) orientations
   since 90 deg rotation seems to be what most postscript programs
   consider 'landscape'.  This change means default page orientation is
   rotated 180 deg. from what it used to be.

 - Re-did tool bar to fit new buttons, reduce width for small screens
   (e.g., 640x480 Powerbook or PARC pad) and improve (I hope) appearance
   on color displays.  On small screens the 'color' palette now turns
   into a menu since there wasn't enough room for the palette in
   landscape orientation.

 - Added code to derive page names from participant name rather than
   host name.  (Uses up to 8 characters of name, breaking, if possible,
   at the last non-alpha character in the first 8.)

 - Made title default to "destAddr/port" (like vat) rather than 'wb'.

 - Added orientation to response to wbimport "?" query so wbimport can
   supply correct orientation to X window dump & scan procedures.

 - Added kluge to allow multiple wb's for the same conference on one
   cpu.  Starting wb with a -M flag or setting "wb.AllowMultWB: true"
   in .Xdefaults will set SO_REUSEADDR on the receive socket so
   multiple wb's can be started & will enable local loopback on the
   send socket so those wb's can hear each other.  The effect of this
   is that you can start two wb's, one displaying on your workstation
   and one displaying on your pad & they will appear to the outside
   world as one participant - anything you do on either screen will
   be "owned" by both.

   *NOTE THAT THIS IS A KLUGE* intended to get around a particular
   problem at PARC using wb with Pads.  Don't use it unless you have to.
   If you have to use it, note that *all* wb's have to have the -M
   flag or very strange things will happen (this has to do with the
   way the multicast kernel uses SO_REUSEADDR).  So if you regularly
   use a PARC Pad, it's probably best to set "wb.AllowMultWB: true"
   in your X resources rather than trying to remember to always
   supply -M.

 - Fixed yet another bug in 'repair' processing of blank pages --
   it original owner had vanished, wb would always say page was
   incomplete ('*' in front of page name).


v1.51/1.52, Wed Aug  4 04:03:37 PDT 1993

 - Made displayed page number be abbreviated form of 'global name' rather
   than local slot number.  (suggested by Mark Handley & George Michaelson)

 - Added support for page names (site that creates a page can
   give it a 1 - 32 char name).  Added support to wbimport for
   naming pages & extracting current page names from wb.
   (suggested by Mark Handley)

 - Added '*' marker on page name if current page was incomplete.
   (suggested by Mark Handley).

 - Fixed problem with importing non-conforming, multi-page postscript
   files:  since wb can't know where boundary of first page is, it's
   trying to push data after first page down to gs while gs is trying
   to send back a 'page' event & things lock up.  Now do non-blocking
   writes to gs & kill gs if all the postscript data isn't consumed
   (since stuff in pipe after first page will confuse future ps rendering.)
   This doesn't handle case where all of 2nd page fits in pipe but is
   better than what we had (there isn't a good general solution other
   than asking people to use standard conforming files).

 - Added wb.RasterCacheSize resource to control amount of X server
   space used to cache pixmaps of rendered postscript images.  Size
   defaults to 16.  (suggested by Jon Crowcroft)

 - Repair reply timers were much too aggressive.  Backed them off
   an order of magnitude to cut down on duplicate replies.


v1.50, Sun Jul 11 06:15:48 PDT 1993

 - Fixed lots of brokeness in repair processing.  It now seems to
   work fairly reliably & not get too far behind.

 - weren't killing gs on exit or when scaling or orientation changed
   so machine tended to fill up with gs processes if wb run for
   a while.


v1.46, Wed Jun 30 18:52:38 PDT 1993

 - there's no longer a default address or port for wb -- you always
   have to supply an address & port.  The 'persistent information'
   model turned out to be too persistent to support a 'default
   conference' -- there was no way to make it go away as long as
   someone in the world had a wb running.

 - suppression of duplicate repair responses was completely broken.
   Were looking who sent data instead of original source of data
   so everyone would reply to every repair request.  We now look
   at data identity, not sender's identity to suppress duplicates.

 - re-did interface to gs to speed up gs rendering.  We now fire off
   a gs & keep using it until screen orientation or scaling changes.
   Seems to speed up ps rendering by a factor of two or more.

 - added a lot more checking for invalid drawop so `killer wb's
   with bogus data should find it harder to make wb core dump.
   (harder, but not impossible -- much more work needs to be done
   in this area).

 - keep track of 'user mode' drawops that we receive sequentially
   so we can request repair of missing ops in real time.

 - implemented new protocol for wbimport: can now request normal or
   'deferred' import or to go to particular page.  optional reply
   can be returned giving page # of imported file if import successful.

 - handle '^C' & '^Q' in sitebox window as well as in main window.

 - Use new IV selection stuff so paste now uses ICCCM standard
   selection mechanism rather than cut buffer.  Also can now cut
   and paste in typein boxes (like encryption key or ps filename).

 - changed Ghostscript color model so you could tell it to only
   use colors from DEFAULT_RGB_MAP color cube (& made this the
   default) so color allocation won't change from image to image
   and earlier color images won't look strange if you flip back
   to them.  (This change requires new gs which is available on
   ftp.ee.lbl.gov).


v1.40,41,42 Mon Jun  7 22:24:06 PDT 1993

 - fixed bug in 'repair' processing that prevented some postscript
   files from every being shipped if data lost didn't include at
   least one 'visible' drawop.  (problem reported & diagnostic
   help from Jim Martin @ rutgers).

 - When I added net info to sitebox, I seem to have broken width
   resizing (could only change height).  Fixed.


v1.39, Mon Jun  7 19:15:31 PDT 1993

 - put in rescaling support.  resizing the wb window now rescales
   all the drawing for the new window size.  also added X window
   manager calls to set window aspect ratio & max size so zoom &
   resize will work correctly.  (requested by Robert Elz & Steve
   Deering.)

 - added indicator to sitename to show when site repairing current
   page.  (suggested by Robert Elz & George Michaelson.)

 - wb now always attempts to use Display PostScript then, if the
   X server doesn't support it, falls back to ghostscript.  Added
   an X resource
	wb.UseDPS: false
   and a command line flag (-d) to disable use of DPS so wb will
   always choose ghostscript.  (suggested by George Michaelson.)

 - make '\f' start a new page when importing text. (suggested by
   Steve Deering)

 - switching between the two landscape orientations now correctly
   redraws the screen (used to have to go through portrait to get
   screen drawn in new orientation).

 - if site supplied postscript background, suppressing site now
   hides background in addition to site's drawing operations.

 - wb now sets DISPLAY environment variable for ghostscript to be
   display wb is running on (so "wb -display x:0" now works with
   gs rendering).  (problem reported by Ron Frederick.)

 - changed 'paste' & text file insertion to 'defer' character ops
   so things don't get sent one character per packet.

 - made psdata drawops a bit smaller to allow room for leading nop
   & trailing pscomp (prevent sending bunch of big packets sandwiched
   between two small ones which seemed to cause packet losses).

 - changed postscript file parser to not get confused by pages that
   embed other pages with their own pagination pseudo-comments.

 - redid the postscript rendering logic so it's less likely to
   wedge completely on errors.

 - fixed a lot of bugs in 'repair' processing:  'visible only'
   repairs were always resending all the data, ignoring stuff that
   the receiver claimed it had.

 - fixed 'expose' event handling to erase damaged portion of view
   window (bug report from George Michaelson).
