#
# This is the ChangeLog file from the Xinvest distribution
#
# $Header: /pack/anoncvs/xinvest/build/xinvest/ChangeLog,v 1.9 2004/05/01 18:57:06 danny Exp $
#

Novelties for version 2.6.9 - May 1, 2004
-----------------------------------------

The major changes to Xinvest are :
- Ability to print reports using Xprt
- Upgraded currency support : it is now possible to define currency
  conversions with historical data. They look like ordinary accounts,
  but a real account can refer to it via its CTicker.
  The samples directory contains an example that shows how to deal
  with USD to Euro conversion.
- Ability to save quote data received via 'live update' from Xquote
  into the Xinvest *.inv files - this means you can set up your
  tools so they automatically collect historical data.
- Integration with a new utility QuoteFilter which serves a similar
  purpose as the above 'save live update' feature. QuoteFilter takes
  E-mail messages and can store quote information from the E-mail
  into your Xinvest data files. The changes to Xinvest for this
  are that the Xinvest file format has been extended so QuoteFilter
  can use the same files.
- Better integration of the source code with Xquote and QuoteFilter
- Source code cleanup.
- Interpret data feed from Xquote so not only American style data gets
  interpreted correctly. Unfortunately there's no clean way to handle
  this as the formats that we receive are not related to the user's
  settings so the automatic environment dependent standards based
  decoding doesn't work.
- Get the help window to behave more normally (resize is possible, single
  click makes text appear). Also use less widgets and more standard
  constructions (TemplateDialog) for this to make the whole thing simpler.
- Xinvest is now distributed under the BSD license, so it is now
  completely free software.

What's New 2.6 - Feb 5, 2000

New Features
------------
1. Major upgrade to report generation.  The report format is now more
   compact and provides more data and options: 
   -With details off, provides current value, price, number of shares, 
    plus total return, internal rate of return, and yield over the selected 
    time frame.
   -'Details' provides additional transaction details, delta value, delta
    price, delta shares, delta cost, delta withdrawal (sells + distributions
    not reinvested), delta fees over the time frame.
   -'Return Details' provides the total of capital gains and distributions
    (reinvested or distributed) over the time frame.
   -Added more time frames: 2, 3, 5, and 10 years.
   -Report window is now sized to display the report for one time frame at
    the chosen detail level.  If you turn on 'live' window, where reports
    are written to a single window on each update, resizing is disabled and
    remains how it was originally created or changed by you.
   -Report headings are now X resources, so you can change them, for example
    'Xinvest.report.value.labelString: not Value' instead of the default
    'Value'. With this 'not Value' will be displayed in report windows.

2. There is now a preference dialog allowing you to specify:
   -whether auto backups of saved files are generated and what the file
    extension to use is.
   -the preferred date format for output (reports, asset allocation, etc),
    which can be localized (use whatever the system provides), MM/DD/YYYY,
    or DD/MM/YYYY.
   -the preferred currency format for output, which can be localized,
    'Currency character'xxx,xxx.xx, or 'Currency character'xxx.xxx,xx.
   -whether exchange rates are used or not.
   -the preferred arithmetic precision of output numbers which are not
    in currency units.
   -your preferences can be preserved in Xinvest session save/restore
    operations.

3. Currency exchange rates are now supported. New transaction types 
   'date currency value' and 'cticker symbol' can be added to your transaction 
   history.  All tools use exchange rate values if enabled in the preference 
   dialog.  stock.inv in the samples directory shows conversion from USD
   to FF.

   Currency transactions provide a conversion factor from the account currency
   into your local currency.  Each has an associated date, so historical
   averages can be calculated. If no exchange rate is within a given
   time frame, then the next possible one is used.  Any floating point number 
   may be specified (e.g. 1/20/2000 Currency 1.25 or 2/29/2000 Currency 0.125).

   Cticker allows one to receive and use exchange rates from Xquote.  Just
   specify the symbol for Xquote to fetch and exchange rates will be updated
   on the fly.

4. Tickers (and Ctickers) now allow modifiers to get the received
   quotes into a form to match your transaction history.  For any 
   ticker you can specify '/X' (inverse), '*number' (multiply), or '/number'
   (divide).  Number can be any floating point number.  There's no real
   limit to the length of modifier. For example:
 
       CTicker ^XFF /X       - invert FF quote to get FF per dollar
       Ticker foobar  /100   - foobar quotes are in pennies, but want dollars.
       Ticker T  /X*10.0/4.2 - Can't think of why you would want to do this.

   Note that modifiers are separated from the ticker symbols by white space and
   CAN NOT have any white space within them. Modifiers are applied left to
   right without any other precedence.
 
5. Graphs are now solely date based. What this means is that all transactions
   occurring on the same date get their data combined.  You no longer get
   a separate graph element for each transaction.  This makes more sense than
   the old way.  This also fixes the bug when XY plotting of having
   multiple points on a single date (one for each transaction on that date).

   Cumulative values now reflect the price at the given date, the current
   price is no longer applied to the share level on that date.  This means
   that cumulative cost and cumulative value are very similar now.  In
   the past, cost reflected the share price on the transaction date, value
   reflected what the shares were worth at the current price.

   Moving averages are now only specified in weeks, they can no longer be
   averaged over a number of transactions. Again, this method makes more
   sense for those concerned with 50 day (10 week) and 200 day (40 week)
   moving averates.

   These changes really fell out of conversion to using the report generator
   engine; and take the graphs in the direction that was intended.

   Live price quotes are only applied to the last price, value, and cumulative
   value plots.
   
6. Changes that would require a reload of the portfolio accounts are now
   detected, and the user prompted for action.  For example, if you change
   whether reports reflect any currency exchange rates, you will be warned
   that this effects portfolio values.  Selecting ok will allow Xinvest to
   reprocess any affected accounts for you.

7. Colors that used to be hardcoded like Red, Green, etc are now defined
   as application resources (Xinvest.colorRed, etc) so the user can define
   green as purple or whatever you like.

Bug Fixes
---------
1. Graphs now show an increase in shares on a split transaction when plotting
   by transaction (cumulative shares were correct).  Likewise prices now
   reflect any splits SINCE the date of the price (not earlier ones).


What's New 2.5.1 9/22/97
Bug Fixes
---------
1. Fixed split bug in value calculations introduced in 2.5.
2. Fixed total return calculation bug introduced in 2.5.
3. Report windows were not being destroyed when dismissed.
4. Report custom calendar display always showed start date (when returned
   to from first screen) even if option menu displayed 'End'.
5. Report price precision increased to 4 digits.
6. Fee calculations had an error that excluded all transactions.
7. Changed report cost display from cost - debit to cost to harmonize details 
   with total return calculation.
8. Xinvest when run at 640x480 geometry did make the tool manager fully visible.

New Features
------------
1. The report tool supports a new 'live' window option. When enabled, the last 
   report posted will display changes immediately without posting a new report. 
   The type of changes supported include: price quotes from Xquote, changing the
   currently displayed account, and clicking on the "check" button in the
   report tool. When live is off, each click of the "check" button will
   generate a new report.


What's New 2.5 - 8/20/97

Bug Fixes
---------
1. Graph vertical scale not reduced to whole dollars if range was less than
   $100, min value now checked in addition to range.
2. Malloc bug in save file routine (allocated less memory than required).
3. Transaction parser would confuse a command and parameter when the parameter
   contained a substring of the command.

New Features
------------
1. The total return tool is replaced with a report generator.  Now you can
   select from a number of predefined report periods or select your own. 
   Select a report for one account, all accounts, or a combined portfolio
   report. Options include a 'detail' setting which reports change in value,
   cost, fees, and debits over the time period (in addition to the standard
   yield (NEW!), total return, and internal rate of return (IRR)) and an
   annualize option which will also annualize the raw yield and total return
   values.
2. A previous account button joins the existing next account button in the 
   filemanager. The account menu sports these two items as well replacing the
   'cycle' account button. The keyboard accelerators are Alt-Tab to go forward
   one account and Shift-Alt-Tab to go backwards.
3. Improved 'tool tips': they now have a delay before posting, popdown after
   being on a button for a while or when the button is pushed.
4. Added CDE action type definition (Xinvest.dt) for Xinvest.
5. CDE detection is now done at runtime.  You no longer need to compile Xinvest
   specifically for CDE.
6. The file selection dialog now filters on '*.inv', ignoring other file types.


Xinvest Mailing List - 6/24/97
------------------------------


What's New 2.4 - 5/31/97
------------------------

Bug Fixes
---------
1. XtRealloc bug in rate.c.
2. Change to strptime replacement, IRIX 5.x needs it, IRIX 6.x doesn't.  Changed
   __sgi define to NEED_STRPTIME.  IRIX 5.x users need to add -DNEED_STRPTIME
   to the Imakefile or Makefile.

New Features
------------
1. New transaction record type: ticker.  This is to support new feature 2.
2. Xinvest now supports price communication from Xquote. Quotes downloaded from
   the WWW can now be fed into Xinvest automatically so that it can update it's 
   return calculations. You need Xquote 1.0.2 or later.
3. Selecting a date on the total return calendar that has a valid transaction
   in the history file will cause the NAV of that transaction to be displayed
   in the calculator, and an update of the total return calculations.

What's New 2.3.1 - 2/15/97
--------------------------

Bug Fixes
---------
1. Share prices greater than 9 digits caused a string overflow.
2. Fixed strptime replacement for FreeBSD and IRIX 5.


What's New 2.3 - 1/14/97
------------------------

Bug Fixes
---------
1. Distribution moving averages in the plot tool were displayed incorrectly.
2. Loading a zero byte file caused a seg fault.
3. A couple of extra semicolons in the source caused a problem calculating 
   graph variable values. This only affected transactions with a load (fee) 
   specified.
4. Fixed a bug in IRR calculations. This only affected SELL transactions with a
   load (fee) specified.

New Features
------------
1. Session management. Xinvest will now save its state on supported
   configurations.  Information saved includes the current working directory,
   all open accounts, the last NAV entered for an account, each account in the
   asset allocation tool, and the currently displayed account.  The next time
   Xinvest is started all of these attributes are restored (assuming your
   window manager has session support).

   To use session management your session manager must support either the X11
   R5 or R6 session management protocol.  Examples of session managers supported
   are CDE 1.x and xsm (which is distributed with R6, see man xsm). The only
   added requirement is that you define SM_SAVE_DIR.  If you don't, Xinvest
   state files will clutter up your home directory.  Under CDE 1.x, define
   SM_SAVE_DIR as ~/.dt/sessions/current.  Under X11R6, create a directory
   somewhere for session files, and set SM_SAVE_DIR to this directory.

2. Added a ".." category to the asset manager category list box.  Now you can
   travel up a level as easily as going down.  Modified display to show the
   current level in the plot window.

3. Changed the reinvest gain from an option to a transaction command.  Now
   you can add "reinvest [all,none]" to your transaction files to enable and
   disable gain reinvestment.  You can use this command more than once in a
   transaction history, the value remains in effect until the next command that
   changes it. The default with no reinvest command is "reinvest all".

4. Added a stock split transaction type. Hard to believe no one ever asked
   for this; makes me wonder if anyone's out there :) The format is
   "date split price major:minor", where date is the usual transaction format
   date, price is the new closing price, and major and minor are integers in 
   the range 1 to 255.  The major number is the multiplicand, the minor the 
   divisor.  A 2 for 1 split is "2:1", a 3 to 2 reverse split is "2:3".

5. Transaction files must be specified using a -f option on the command line
   now. This makes session management easier. You can have as many filenames
   following a -f as you like. You can even use multiple -f's. As a result of
   this, unknown option detection is now fixed.


Xinvest Home Page - 12/17/96
----------------------------


What's New 2.2 - 11/11/96
-------------------------

Bug Fixes
---------
1. Transaction parser would give "date out of order error" if transaction year 
   specified as 4 digits (eg. 1996).
2. Graph by date would give incorrect looking dates for grid lines. Now when
   "show points" is on, the plot point is sized to show the entire pixel range
   for a given date.
3. Moving average by date was incorrectly calculating which transactions were
   in the moving average window.  This has been wrong for a while, guess
   nobody uses this?

New Features
------------

1.  Total return and internal rate of return of the _entire portfolio_, yeah!
    Portfolio here is defined as all open accounts.  You get the same 
    information as you would for an individual account, except shares and 
    price have no meaning so are not displayed.  There is a toggle
    button in the total return tool for selecting portfolio or account return
    calculations.  The values used to calculate portfolio total returns are
    the last values entered in the total return calendar and calculator for
    each open account.  The latest date of any open account is the end date
    for portfolio calculations.

2. A reinvest gains option has been added.  When on (default) dividends and 
   capital gains are assumed reinvested.  When off they are assumed distributed 
   from the account on the date of the transaction. The result is that costs, 
   value, shares, and withdrawals from the account reflect whether you took or 
   reinvested gains.  The total return and plot tools support this notion. The 
   portfolio tool still assumes all gains are reinvested. This option can be 
   used to see the effect of compounding on reinvested gains. 

   *Xinvest _used_ to always assume that dividends and capital gains were 
   *reinvested. To distribute them you had to sell them. If you do that with
   *reinvest gains off now, you'll end up subtracting them twice. If you take 
   *some distributions, but not others leave reinvest dividends on or you'll 
   *get the wrong results. Hopefully this will end up making transaction 
   *files simpler for those that either reinvest all, or none, of their gains. 
   *This may become an account command in the future so some accounts can have
   *reinvest on, while others don't.

3. Fees (load) specified on transaction lines now effect the reported return
   and plot variables. See the effect on your value, shares, cost, return, etc
   in both the total return and plot tools.  This can _not_ be toggled on and
   off like reinvest gain; you either paid a fee or didn't.  Feel free to
   ask for this feature though. 

4. The total return display now reports the total debits and fees from 
   an account.  This includes fees, sales or dividends distributed (if 
   reinvest gains is off).  Return display now sports nifty arrows for positive
   or negative returns.

5. Drawing in the graph area has been "sharpened" up.  Text and most other
   elements now have a more 3d appearance.  Monochrome users don't get this
   as it would look awful.  This may also look a little off if your graph 
   foreground is black (it isn't by default).

6. Total return tool "last NAV" button.  Resets the NAV calendar and calculator
   to the last transaction in the history file for the currently displayed 
   account.

7. There is now a README.CDE for CDE users.

8. Arbitrary selection of '.inv' as xinvest input file extension.  This is for
   CDE users mainly.  The sample files now all sport this extension.  Xinvest
   will still read any filename you like.

9. The icon is now transparent (well part of it).  Define -DSHAPE in the
   Makefile or Imakefile.

10. There is now a busy cursor for large transaction files on slow machines.

What's New 2.1 - 9/20/96
------------------------
1. Graph colors are now application resources.  You may specify 
   Xinvest.color[1-8] resources and these are the colors that the graph and 
   portfolio pie charts will use.

2. Plot running internal and total return.  Now you can plot these
   values at each transaction point in the transaction history.

3. A new plot mode: multi-account.  The functionality of previous versions
   is preserved and now called single account mode.

   Single account mode:  select any number of plot variables.  As the displayed
                         account is changed the plot variables selected remain
                         the same, but reflect values in the new account.

   Multi account mode:   select which variables are of interest in each account.
                         Changing the displayed account shows which plot 
                         variables are currently active in that account.  The
                         displayed plot includes ALL selected plot variables
                         from ALL open accounts.  This allows the price 
                         (or any other plot variable) for all (or some) open 
                         accounts to be displayed simultaneously.

4. New display of plot legend.  Because of change 3 above a new control 
   for plotting was developed.  Next to each toggle button that selects a
   plot variable is a pixmap showing how that variable is displayed on the
   graph.  In multi-account mode the legend only specifies the key for that
   account.  To view the key for other accounts requires displaying that 
   account.  In single account mode, the key is the same for all accounts
   (since only one account is plotted at a time).

5. Tweak to the function calculator display: now the equation used is displayed
   along with the previous "word problem".

6. Some host specific tweaking:
   Unixware:        define NEED_STRCASECMP or link against libucb.
   DEC UNIX/Alpha:  removed whitespace preceding preprocessor directives

What's New 2.0.1 - 7/10/96
--------------------------
1. Bug Fixes
   a. Workaround realloc behavior on SunOS 4.x machines.
   b. Multiple warning dialogs of same error displayed from rate of return.
   c. Open account via file selection box causes "already open" error message.
   d. Saving to a read-only file prevented.
   e. Transaction dates with full year (ie 1995) now show up correctly when 
      plotting by date.  Added date format error check.
   f. Transaction parser did not allow white space other than ' ' between the 
      title directive and title text.
   g. Cycling accounts with last transactions in the same month and year, but
      different day did not update the highlighted day on the calendar.

2. Supported Hosts
   Xinvest should now build fine on FreeBSD 2.x and SunOS 4.x.

3. New Features
   a. Had to add at least something, so now there is an optional grid that can
      be overlaid over the graph area. <Ctrl>G toggles between grid on and off.
   b. The barest of session management supported.  No saved info yet, but 
      Xinvest will cheerfully talk to the session manager now :).  
      See "man xsm", if you have X11R6.

What's New 2.0 - 6/7/96
-----------------------
1. Multiple open accounts.  Open as many accounts at once as you like.  Cycle
   through them via menu, button, or keyboard translation <Alt><Tab>.
   Each account remembers the last NAV you entered and any changes in progress. 
   Accounts can be specified on the command line: "Xinvest *.txt" will open all 
   of your accounts at once.  Note that this will slow down Xinvest startup 
   (depending on how many files of course).

2. If you have Motif 2.0 or use the statically linked Linux binary you get
   the benefit of horizontal panes.  This means the graph area or transaction
   text can be made as large as the entire window (minus the menu and button 
   bars).  Graphs are much more useful this way.

3. Price points.  A new transaction type, "price".  Just enter a date and
   price.  This could always be done in the past by buying 0 shares, this is
   just a convenience.  The transaction format has also been changed.  Fields
   that were not really used have been discarded.  A transaction now has just
   3 or 4 fields.  XINVEST 1.X FILES WILL NEED TO BE MODIFIED.  Sorry, but
   I think you'll agree the new format is better.  You need only delete the
   "amount" and "cost" fields (fields 3 and 6 of the old format).

4. Keyboard translations for the total return calculator.  Now you can enter
   the NAV value from the keyboard.  Which keys do what are defined in the
   resource file. [0-9.=C], these should be obvious.

5. More buttons in the file manager.  Reduced the save button size and added
   "new", "open", and "cycle" account buttons.  The file manager now sorts
   filenames, and displays directories first.

6. Cleaned up TAB key traversal for those that don't like using the mouse.

7. Changed the labels in the function calculator from all saying EMPTY when they
   are undefined to say what they actually represent and moved them to the
   graph area.

8. Removed fixed maximum number of transactions.

9. Other small tweaks, the calendar doesn't flash so badly now when selecting
   a different day in the same month.  The file menu overall functioning has
   been improved (eg when double clicking on a directory name with a modified
   file already open Xinvest doesn't ask whether its ok to change).

10. The app-defaults file has been subsumed into the fallback resources.  It
   is not required anymore.  It remains for those interested in changing
   the default resource values.

11. Fixed bug in calendar that selected wrong day of week for March 1st in a 
   leap year.

12. NeXTStep support (thanks to Cube-X).

13. Plot options; zoom (always on in previous versions) and "show points",
    which displays the location of transactions when plotting by date.

14. Workaround for XPM 3.4h and earlier bug.

15. Moved status from main window to a dialog box.  Added more error checks.

16. Now apply changes to transaction files without saving and reloading.  Just
    hit the "Apply Changes" button.

17. All menu labels are now in the resource file.

18. Internationalized dates in the graph area (plot and return tools).  All
    dates displayed in this area respond to the LC_TIME environment variable.
    Also added internationalized monetary support.  This is rather rare on
    some architectures so you have to define STRFMON before compiling Xinvest
    to get this feature.  Then define LC_MONETARY to get nationalized currency
    displays.  Set LC_NUMERIC and the transaction text will be interpreted
    to local tastes (Note that transaction dates _must_ still be in M/D/Y
    format.  The NAV calculator does not switch from '.' to ','; I'll change 
    this in the future.

19. Cut and paste menu items for transaction editing.  Boy is this useful!

20. Well you get the idea.  Look for more financial type functions in the
    future 2.x series.  Send me your ideas for indispensible features!

What's New 1.1 - 1/30/96
------------------------

1. Bubble help.  I've removed the labels from the buttons in the buttonbar.
   Now when the mouse enters the area of the button you get a small description
   of what that button does.  This text is stored in the resource file so
   it can be easily changed (my first small attempt at making Xinvest a little 
   more internationalization friendly).

2. The plot and total return displays inform you if they are based on a NAV
   you entered in the total return action area.  Otherwise they are based on
   the last NAV in the transaction history.

3. A little more information was added to the total return display: total
   shares and value.

4. Xinvest will now attempt to recover from a depleted color map.  If Xinvest 
   runs out of colors while allocating named colors or the pixmaps it will
   install its own colormap and proceed.  This scheme will fail if the named
   colors and pixmaps use up all the colors, leaving none left for those
   defined in the resource files for widgets.  
   There is now also a "-install" switch to force a private colormap.   

   In version 1.0, this condition led to a seg fault :(
   
5. New way over-engineered insensitive icons for the button bar.  If you
   have a mono or grayscale monitor you get the old snowed-over effect.  Color
   displays get a Windows style of insensitive pixmap, its hard to describe.
   The button background color is now based on the main window background, so if
   you change it from its default gray the button backgrounds will change also.
   
6. An almost major code reorganization to make my life easier in the future.

What's New 1.0 - 10/29/95
-------------------------
