Release Notes
=============

This document includes a summary of major changes for each revision of Eterm.

Changes made to rxvt 2.21 include
---------------------------------

- Better (read: working) implementation of utmp logging and added security;
  needs to be tested on different platforms;
- Support for Rasterman's Imlib - used for loading and scaling the background
  pixmaps;
- The command line option -pixmap now takes '@' as the delimiter between
  the pixmap name and geometry. The old delimiter, ';', is NOT supported
  any more. It was UGLY. Period. <g> ;
- A new command line option, --scale or -@, was added. It will scale the background
  pixmap "to fit"; to fill the whole background of the Eterm window;
- The binary was renamed to Eterm;
- Several bug/annoyance fixes. For example, fixed a problem with DEBUG_UTMP
  that printed garbage when running with the debugging messages enabled.
  See also #define NDEBUG in feature.h;
- Minor speedups.

More changes for 0.3 (included in some 0.2 versions), as described by Michael:

 - Installs signal handlers that, among other things, make core
   dumps secure by revoking privs and changing its umask to 077.
   It also prompts for whether or not it should dump core, timing
   out after 10 seconds or if it gets a SIGT(STP|TIN|TOU)
 - Changes stuff that said rxvt to Eterm (most places, but I probably
   missed a few).
 - Fixes SVR4/utmpx compile under HP-UX 10.X

Utmp logging support was fixed to work on FreeBSD (tested on 2.1.5 and 2.2.2)
for 0.3a. Thanks to Brian Gottlieb for doing it.

Changes made to 0.3b include a few portability additions and fixes (HP-UX,
OSF/1) and a few changed (commented out) #define's in feature.h.

Eterm DR-0.4x included a number of patches for bold fonts, security,
utmp logging, etc.

Several bugs were fixed for DR 0.5.  Thanks to Michael Kellen for his
Solaris patch.

Thanks go to Steve <steve@rage.org> for his help with security.

Changes in DR-0.6:
------------------

 - Finally got the distribution tree cleaned up to remove most all traces
   of left-over rxvt SPAM(tm).  For now, however, credit for most of the
   docs still remains with the rxvt people.
 - No more .Xdefaults support.  The X Resource Manager (Xrm) code has
   several known security holes which make any program making
   XGetDefault() calls insecure.  Since Eterm generally runs as root,
   this is unacceptable.  So too is reading .Xdefaults directly, which
   it had been doing up until now.  From DR-0.6 on, it will read (in
   proper Enlightened fashion) ~/.Eterm/MAIN, which will be a very
   E-like config file.  See doc/MAIN.dist for a sample.
 - The config files support $ variable expansion, ~ expansion, single/double
   quotes, and (if #defined) backquotes.  PLEASE read the accompanying
   notes in src/feature.h before #defining ALLOW_BACKQUOTE_EXEC.  Also
   supported is the %include macro.

Changes in DR-0.6a:
-------------------

 - Lots of bug fixes:
    - The font options now accept font names starting with '-'
    - Intense colors are no longer off by one.
    - Scrollbar and cursor color configuration options now work properly.
    - Eterm now changes back to the original directory after searching for
      a config file.
    - Command line options now take precedence over config file options
    - -h and --help now work properly, instead of asking for a string value
    - MAIN.dist.in now contains a value for cut_chars that works right when
      ALLOW_BACKQUOTE_EXEC is #defined.
    - The "video reverse" in MAIN.dist.in is now "video normal", because I
      got sick of people saying there was a bug in Eterm that caused their
      foreground and background colors to be swapped. :^)  More of a
      cl00bie-didn't-read-the-comments fix than a bug fix....  ;)

 - New features:
    - A "magic number"-like identifier that will prevent Enlightenment config
      files from being read by Eterm.  See doc/MAIN.dist for details.
    - Secure execution of backquote commands in config files, even if Eterm
      runs setuid/setgid.
    - Invalid contexts are skipped entirely with only one error message.  For
      example, if you don't compile in kanji support, you'll only get one
      warning instead of 5 or 6.
    - -H and --home-on-echo options, which will cause Eterm to jump to the
      bottom of the screen when something is echoed there, if you're viewing
      the scrollback buffer.  There is also a new attribute "home_on_echo" in
      the toggles context of the config file for this option.  Thanks to Casey 
      <casey@netcomi.com> for his help with this.  Just in time, Casey. :)  
    - There is now a script which randomly chooses a pixmap from ~/.Eterm/pix
      that can be executed in your config file.  This script requires the
      dorand program (source provided) and can be found in doc/random_pixmap.sh

Changes in DR-0.7:
------------------

 - Theme support.  The options were changed to -t and --theme.  Consult the FAQ for
   more info on themes.
 - Alternate config file option.  This has been integrated into theme support, but
   can also work independently thereof.  If you don't like the name MAIN for your
   config file, or want to run a certain Eterm with a different config file, use
   the -X or --config-file option.
 - Borderless Eterm windows.  Use the -x or --borderless option to get a borderless
   Eterm.  Remember, you'll want to specify a geometry, since you won't be able to
   move it, and something to exec.  If your window manager supports it, it is
   recommended that you use that functionality rather than Eterm's built-in option.
 - Built-in functions.  Several functions have been added to facilitate the building
   of more robust config files.  The currently-supported functions are:
     - %appname()         Returns the current application name.  "Eterm-DR-0.7" as of
                          Eterm 0.7.
     - %version()         Returns the numeric version.
     - %random(...)       Randomly chooses one of its parameters and returns that.
 - Other new options (consult the MAIN file and the --help screen for more info):
    - -E and --home-on-refresh
    - --pointer-color
    - --scrollbar-right
    - --scrollbar-floating
    - -M and --menu  (Menubar code is beta, so use it at your own risk)
    - --term-name
 - Config file support for all the above.  Also:
    - exec (context misc)    For use with themes....
 - Some major and minor bug fixes.  Nobody noticed, so I won't go into details. :)
 - Support for Window Maker's "docking", thanks to CmdrTaco (Rob Malda)
   (http://slashdot.org/malda/)

Changes in DR-0.8:
------------------

 - Several experimental features are in, like active tags, fake transparency,
   and threads support.  Use them at your own risk; they are unsupported and
   known not to work right.  We chose not to fix them since we're going to
   rewrite the whole thing anyway (see http://ganja.tky.hut.fi/resurrection/)
 - The FORCE_BACKSPACE feature introduce in 0.7 PL5 has been disabled for now;
   you can't succesfully start Eterm as a background process with it
 - The new fake transparency option, -O/trans, only works OK with a pixmap
   the size of your root window / resolution. Test it with an exact image
   of your root window for a neat effect :) Note that escape sequences for
   changing the background pixmap will be ignored.
 - Two new config file options, "trans" and "save_under", have been added.
   Read themes/Eterm/MAIN for more information. The corresponding new
   command line options are -O and --save-under.
 - Fixed the pixmap handling code so that the menubar stuff works right now.
   Thanks to Cliff Wright <cliff@vixen.itdl.ds.boeing.com> and keebler
   <keebler@ncal.verio.com> for their help with finding and fixing this.
 - The Xterm-style scrollbar feature (defined in src/feature.h) will actually
   compile and run properly.  The restriction on size to 15 pixels has
   been removed as well.  Thanks to Peter Norby <norby@inktomi.com> and
   Hal Black <hal@hablack.bevc.blacksburg.va.us> for supplying patches for
   this.
 - Made several changes to the configure script so that hopefully it will
   work for a larger percentage of the populace.  :-)  Some of the changes
   were suggested by John Reese <jtr@pyro.ugcs.caltech.edu> and Hal Black
   <hal@hablack.bevc.blacksburg.va.us>.
 - Added MIN_ANCHOR_SIZE to src/feature.h which allows you to specify a minimum
   size for the scrollbar anchor.  Good for large scrollback buffers and/or
   small windows.  Still a mite flaky at the bottom of the scrollbar, but it
   works.  Credit for the idea goes to Stephen Farrell <stephen@farrell.org>,
   though the actual code was largely rewritten.
 - Added CHANGE_SCROLLCOLOR_ON_FOCUS to src/feature.h which makes the
   scrollbar "disappear" (i.e., become the background color) when the window
   loses focus.  This feature was suggested by Scott Heavner
   <sdh@falstaff.MAE.cwru.edu>.
 - Added option --menu-text-color and config file attribute menu_text,
   which allow you to change the color of the menubar text.  This feature
   was suggested by Scott Heavner <sdh@falstaff.MAE.cwru.edu>.
 - Fixed a bug for FreeBSD that only allowed Eterm to open 16 tty's at
   once.  Thanks to Christopher Mann <r3cgm@cdrom.com> for finding this
   one.
 - PL1
    - Fixed bug which caused scrollbar not to redraw properly
 - PL2
    - Rewrote the string functions in src/misc.c to be faster.  Also, support
      for "\C" and "C-" to represent the Ctrl-key modifier was added.
    - Added MENU_TEXT_FLOATING to src/feature.h which puts the menubar text
      in the middle of the menubar buttons (which is, IMHO, where it belongs,
      but apparently someone disagrees :-) -- mej).
    - The pre-release stuff in RELNOTES.Eterm has been removed.
    - Added an "emacs" theme for GNU Emacs or XEmacs in a text window.
    - Got rid of that damned annoying preedit type error. :-)
    - Added call counting for the malloc routines in libmej/mem.* thanks to
      Michael Wolf (Elessar) <mawolf@concentric.net>.
 - PL3
    - Changed themes/Makefile.in so that existing themes in
      ${prefix}/lib/Eterm/themes do not get overwritten by the "make install"
      routine.  Sorry, stupid oversight on my part. :(  -- mej
    - New "chooser" theme.  Read the comments at the top of
      themes/chooser/chooser.menu for more details. :)
    - New extended command "echo" in the ESC ] 10 ; set.  See the chooser
      theme for implementation examples.  Basically, it echoes its parameters
      and tacks a carriage return on the end.
    - Fixed the bug introduced in PL2 which caused a border width < the shadow
      width to not properly display the menubar.  This was only noticeable in
      the mutt theme or to users who specifically set border_width to 0 or 1.
    - Eterm now sets the environment variable ETERM_THEME_ROOT to point to the
      root directory of the theme it is currently using.
 - PL4
    - Made several portability improvements in the configure script and its
      associated files.
    - Moved the active.tags file into the themes directory, which is the
      location from which it is installed.
    - The configure script now builds src/feature.h instead of the make process
      so that it will be there before the make is done.  If src/feature.h.in is
      updated, however, src/feature.h will still be generated from it by a make.
    - The installed Eterm binary will be Eterm-<version_number>, and Eterm will
      be created as a soft-link to that file in the $bindir directory.
    - Eterm will now guess the install prefix (${prefix}) based on where gcc is
      located, unless you give a --prefix on the command line.  This keeps me
      from having to use it.  If it makes you have to use it, tough break. =P
    - Added the --with-imlib option to configure.  If you specify
      --with-imlib=/some/path, the compiler will look in /some/path/include
      for Imlib's header files and in /some/path/lib for Imlib itself.  You can
      also specify --without-imlib, which will disable pixmap support entirely.
 - PL5
    - Fixed the problem with the Eterm -> Pixmap -> None menu item.
    - IMPORTANT NOTE:  One of the src/feature.h defines added in version 0.8 was
      the MIN_ANCHOR_SIZE #define.  There are KNOWN PROBLEMS with using this feature
      and trying to scroll up from the bottom using Shift-Prior, the up arrow on the
      scrollbar, etc.  If this bothers you, COMMENT OUT that line in src/feature.h.
      Fixing this problem will require a redesign of how Eterm looks at scrolling
      and positioning the terminal window relative to the scrollbar and vice versa.
      This may or may not happen in the current development cycle.
    - Added the CTRL_CLICK_RAISE #define to src/feature.h which allows a mouse
      click in the terminal window while holding the Ctrl key to raise the window
      and steal keyboard focus.  This is useful if you are stuck without a window
      manager for one reason or another or for using Eterm as an X session manager.
    - Also added an escape sequence, ESC ] 5 ; BEL, to perform the same task, and
      added a menu item called "Steal Focus" to send that escape sequence.
    - Fixed the "bug" that made command-line paths relative to the current theme
      as well as paths in theme config files.  Searching relative to the current
      directory takes place after searching the directories in the "path" line
      (from the config file).  (I have "bug" in quotes because it wasn't really
      a bug -- all paths were interpreted relative to the theme used -- but it
      applied to command-line variables too, which was very confusing to some.)

Changes in 0.8.6:
-----------------

 - For starters, we changed the naming convention.  No more "DR" and "PL" stuff.
   We got asked too many stupid questions.  ("What's the P 15 mean?")  Starting
   with this release, we'll be using numbers only.  The third number will still
   indicate the patch level, however.
 - Added support for imlib-config script supplied with Imlib 1.8 and up.  This
   speeds and simplifies the calculation of CFLAGS and LDFLAGS for proper
   linking with Imlib.
 - Fixed problems with compilation on NetBSD thanks to Clifford Wright
   <cliff@snipe444.org>.
 - Redid the themes to support the new pixmap mechanism I'm working on.  Once
   the new pixmap archive comes out, you'll want to remove your themes
   directory ($prefix/lib/Eterm/themes by default) and install the themes
   contained in this distribution.  Get the new Eterm Backgrounds Collection
   at http://www.tcserv.com/archive/E/ or a mirror near you.
 - Reworked the transparency mechanism thanks to Gerald Britton
   <gbritton@mit.edu> and Nat Friedman <ndf@mit.edu>.  It now takes a copy
   of the root window's pixmap and uses that.  It responds to all moves and
   resizes by updating the pixmap.  No requests for changing pixmap are
   honored by a transparent Eterm (the -O or --trans options).  Furthermore,
   this will probably only work in Enlightenment.  And for the full effect,
   you'll want to run it without scrollbar/menubar and borderless (the
   latter being done either through Enlightenment or with the -x option).
 - Added the Esetroot program, which sets the root pixmap atom for those
   who don't use Enlightenment as their window manager.  There has been
   mixed feedback on whether or not this program works.  YMMV.
 - Added a theme to demo some of the pseudo-transparency features.  Use
   "Eterm -t trans" to invoke it.
 - Some pseudo-transparency toys are in too.  The option --shade will darken
   the portion of the desktop "showing through" the Eterm window.  Results
   in a "smoked glass" effect.  This option can also be used with the
   --tint option to provide a colored glass effect.  See the man page for
   more information.  Also be sure to check out the effect of the
   --scrollbar-floating option with transparency. :)
 - Fixed compilation without pixmap and/or menubar support.  The options
   --disable-menus and --without-imlib can, when passed to the configure
   script, be used to automatically disable menubar and pixmap support,
   respectively.
 - NEW MAN PAGE!!  At long last, the man page has been updated with the new
   options.  Many thanks to Shaleh <shaleh@debian.org> for doing this.
 - The values "yes" and "no" can now be used as boolean values in options
   and config file entries, along with 0/1, true/false, and on/off.
 - Eterm now changes the color of the scrollbar when losing focus.  If no
   unfocused scrollbar color is specified in the config file or on the
   command line, you will not notice it.  See the man page and the default
   config files for more info.

Changes in 0.8.7:
-----------------

 - The old libmej is now built as a shared library as well as a static one.
   Also, everything but the main() function has been moved into a library,
   libEterm.  Since most people use lots of Eterms at once, creating a shared
   library will reduce the text segment of each Eterm significantly, saving
   quite a bit of memory per Eterm.
 - Removed MIN_ANCHOR_SIZE and added -a (--min-anchor-size) option.  It is 0 by
   default so ppl won't complain about the scroll-up "bug".
 - Lots of fixes to Esetroot
 - CygWin32 support.  May take a little bit of effort, but it works.
 - Escape sequences to toggle transparency and shading, as well as set tint,
   are in.  Toggling transparency works.  The others don't yet.
 - Newer Linux versions required a hack to open the display.
 - Cleaned up privileges toggling.
 - Changed the --watch-bg option to --watch-pixmap, which will hopefully make it
   less tempting for people to think it has something to do with transparency.
 - Added the --watch-desktop option which causes a pseudo-transparent Eterm to
   monitor the desktop pixmap for changes and update accordingly.
 - Several various parser cleanups.
 - Transparency can now be done via Imlib rather than Xlib.  It is markedly slower
   but offers more configureability, like shading by percentage (--shade-pct) and
   tinting masks (--tint <24-bit mask>).
 - Shading now works for 8bpp pseudo-color displays.  This formerly generated an
   error message about the X server not setting the visual info properly.  It is
   not fast by any means, but that's what you get for having an 8bpp video card.
 - Fixed the menubar code so that the menus aren't clipped by the window or screen
   edge.
 - Changed the shell_expand() function in options.c so that \' within single quotes
   would insert a single quote.  This differs from the shell behavior, but I prefer
   it. :)
 - More *BSD utmp fixes.
 - Added debugging features configureable at configure-time.  Also added stack
   tracing on crash.
 - Fixed the bug with dragging a transparent Eterm across E's desktop dragbar.  It
   reparents to the root window for a bit, but once you drop the window, it changes
   backdrops right on cue.  Also works when moving Eterm windows between desktops.
   Note that this requires the use of the -W (--watch-desktop) option.
 - \e[9n prints the pixmap filename in the title bar.  In transparency mode, prints
   transparency info to the title bar.
 - New --home-on-input option which split off part of --home-on-echo

Changes in 0.8.8:
-----------------

 - Better, more detailed man page.  Now if only people would read it....
 - Shading is now done by percentage, and tinting by hex mask.  See the man page for
   more info.
 - Lots of new options:  --menubar-move, --anim, --pause, --viewport-mode,
   --xterm-select, and --select-line.  See man page for details.
 - FORCE_BACKSPACE and FORCE_DELETE have been fixed.
 - KS_DELETE (the strings associated with pressing the Delete key) is now set to ^?
   by default.  If you don't like that, you can set it back, or use the keysym
   attribute in the config file, or whatever.
 - --with-cc=prog argument to ./configure to specify an alternative compiler.  The
   default looks for egcs, then pgcc, then gcc, etc.
 - Eterm-specific escape sequences:
       Syntax:  ESC ] 6 ; <op> ; <arg> BEL

       where <op> is:  0    toggle transparency
	               1    set shade percentage
		       2    set tint mask
		       3    forced update of pseudo-transparent background
		      30    Do not use
		      40    Do not use
       and <arg> is an optional argument, depending
       on the particular sequence being used.  It
       (along with its preceeding semicolon) may or
       may not be needed.
 - X errors are handled more gracefully and with more helpful information.
 - The --disable-stack-trace option to ./configure, whose use is obvious.
 - Added an icon and associated option/attribute.
 - As always, lots of bug fixes.  See the ChangeLog for details.
 - The -center option for Esetroot.  Centers the pixmap.
 - Eterm is now FHS compliant, meaning that the theme and image directories are
   now under ${prefix}/share/Eterm instead of ${prefix}/lib/Eterm.  See the
   move-themes script included in the distribution.

Changes in 0.8.9:
-----------------

 - Support for scrolling with mouse wheels.
 - New --version switch to display compile-time configuration.
 - Tinting and shading have been sped up by about 30% thanks to Michael Pearson
   <alcaron@ozemail.com.au>.
 - Scrollbar type and width is now customizeable at compile-time *and* run-time.
   Support for NeXT-style scrollbars has also been added.
 - Three *major* bugs have been fixed.  Tiled desktop images no longer cause
   crashes when tinting or shading.  The resize crash bug has also been squished.
   The secure system() call replacement which was accidentally removed has been
   added back.
 - Ctrl-Button1 now grabs input focus.  Ctrl-Button2 toggles the scrollbar on and
   off.  Ctrl-Button3 toggles the menubar on and off.  NOTE:  If you used to
   disable the menubar by commenting out the loading of the menubar file, or
   loading a fake one (e.g., '-Mx' or '-M /dev/null'), don't.  Simply add "off" to
   the end of the menu line (e.g., 'menu Eterm.menu off'), or use the new boolean
   command-line option --menubar (e.g., '--menubar off').  Then you can toggle the
   menubar using Ctrl-Button3 like you would expect.
 - Popup scrollbar support has been added.
 - New -D (--desktop) option for choosing a desktop to start on.  Your window
   manager must be GNOME-compliant for this to work.  See the documentation at
   http://www.gnome.org/devel/gnomewm/ for info on the _WIN_WORKSPACE property.
 - The Eterm Technical Reference has been completely rewritten.  It is now an HTML
   document located in the doc/ directory.
 - Lots and lots and lots of new escape sequences.  See the Technical Reference for
   details on them.
 - Oodles of small bug fixes, as always. :-)
 - Debugging output is now runtime configurable.  Use the --debug option and supply
   a number.  0 (the default) gives no debugging output.  1-5 give increasingly
   more output, up to 5 (which I don't recommend using) which synchronizes X events
   (and slows things down bigtime).
 - You can now save your current Eterm settings from the menu.
 - New --app-keypad and --app-cursor options to set the startup mode for
   application/normal mode for the keypad and cursor keys.
 - Three new utilities in addition to Esetroot, all of which are located in the
   utils/ directory.  Etbg is a tool for manipulating Eterm's background image on
   the fly.  Etcolors.sh demonstrates all the different combinations of your
   current color settings.  Etmenu.sh lets you send menu commands to Eterm's
   menubar subsystem without having to type the escape codes yourself.
 - Borderless Eterms now attempt to use the Window Manager to become borderless
   instead of bypassing it altogether.

Changes in 0.8.10:
------------------

This release is simply a bugfix release of 0.8.9.  The 0.8.x series has become the
"stable" branch of Eterm and will only involve bugfixes, no new features.  All the
feature development is occuring in the 0.9 series.
