Release Notes 3.1415
====================

-1) In case you've skipped a few releases -- ProTop ChUI now requires a
minimum screen size of 160 columns by 48 rows -- 4x an old 80x24 green
screen. 160x96 is 8x better than 24x80 but feel free to add as many rows as
you can manage. I usually use 90 or so and I have tested up to 267 - it's
amazing what you can fit on a portrait-mode 4k monitor :)

0) Don't get used to this. Really. It is just a coincidence that these
release notes are getting created. You have been warned.

1) After 31 years util/dictrpt.p needed to have minor formatting tweaks.

2) Fixed a problem with the creation of friendlyName.range.pf using the old
name for the -basetable and -baseindex parameters.

3) Improved the labelling of various fields on the dashboard and
configuration screens.

4) Added self-monitoring.  Uncomment the logmon.sh scheduled task in
etc/schedule.cfg to enable self-monitoring of tmp/*.debug files. 

5) Fixed a really stupid bug pulling startup parameter info. Let's just say
that when you code FIND NO-ERROR and the ilk that you really ought to check
to see if an error occured...

6) Fixed a glitch with producing the RM chain report for a multi-tenant
enabled database.

7) Added quite a few color highlights to draw attention to interesting
metrics.  Yellow = warning, Red = alert.

8) Replaced a lot of default internal usage of "curl" with direct socket
calls. Curl is "available" for all platforms but AIX/HPUX/Solaris rarely
actually have it installed and the relevant sysadmins tend to be less
than cooperative.  The localenv PTDLCMD environment variable can be used
to revert to curl (or wget) if wanted.

9) Moved license info to control-l.

10) Added some info to the license info title bar (the ^l command).

11) Added a "dbIdle" column to "Active Transactions" (the "x" command).
This field shows how long it has been since the session has accessed
the database.  This should help to identify long running transactions
that are "just sitting there" (probably on a screen waiting for user
input).  The dbIdle can only be measured from the point where the "x"
screen was invoked - so it is possible that a session that already
had an active transaction could really be idle longer than is shown.
(This is similar to the blocked session duration on the "b" screen.)

12) Improved the prompting for table and index names in the "users of"
screens to prompt if the corresponding data has not been previously
supplied when they are invoked.

13) Added a file viewer to enable viewing of reports from within
ProTop (control-v).

14) Added a hotkey an "H" to spawn a healthcheck in the background.
(This is only useful to customers with paid portal access.)

15) I might have tweaked a few things in The Game of Life.

16) Fixed an issue on the "Buffer Pools" (control-b) screen always
showing (and sometimes incorrectly) an LRU Stat of "NotSet" for the
primary buffer pool.

17) Fixed a problem with "short" browse panels (if one had exactly
one row a fatal error could occur).

18) Padded out the width of "netstat" and "tenant" so that they don't
look goofy compared to other browse panels when displayed.

19) Finally figured out how to avoid the "selected" row on the browse
widgets -- which means that there are now no more unhighlighted cells!

20) Squeezed the "Resource" and "TXE Type" columns in dc/resrc.p and
dc/txe.p in order to expand the numeric columns in dc/txe.p.  Some
abbreviating of the text has occured.

21) Fixed an issue with fileio ("f") not properly showing F or V for
Fixed or Variable when the db is a relative path db.

22) Stopped excluding Control Area, BI and AI areas from Storage Area
focused screens.

23) Added a localenv variable to let users control colors.  Check it
out!  Take a look at "0" to fiddle with colors inside the UI in order
to decide what you like. (The "0" key may change somewhere down the
road, but I couldn't think of a better key to attach it to right now.)

24) Prevent pt3agent from attempting to start if there is no .lk file for
the target database. If the agent does not see a .lk file, and therefore
does not attempt to start, dbmonitor.log will contain messages similar to
this:

  2020/04/03 17:17:17.769+00:00 s2k is not currently running. pt3agent not started.

Since it is only paying attention to the .lk file it will be fooled by
single user sessions!  (This is no different than previous behavior.)

25) Added db startup parameter report based on _dbParams - so you need
11.5+.  Currently on the "1" key but it may find a better home.

26) Added "dark mode" for people who prefer dark backgrounds.  ProTop
cannot change the background color at runtime but if your terminal
window defaults to a dark background this may be a helpful option.
Look in bin/localenv.x for details on setting dark mode as your default
theme.

27) Removed the code that processes etc/protop.cfg at startup. The function
of etc/protop.cfg has been superceded by bin/localenv.

28) Cleaned up quite a lot of confusing logic in lib/dynscreen.p while I
was adding debugging and sanity checks and stuff. Added helpful comments
too. Or at least they seemed helpful when I added them ;) This is all
related to tryin to resolve issues with error 49.  It turns out to be:

https://knowledgebase.progress.com/articles/Article/Character-mode-ABL-program-crashes-with-Memory-violation-49-with-hide-and-redisplay-of-browse-widgets

Which is a rather nasty bug.  Currently 12.2 and 12.2 are almost
unusable as a result.  11.7 and 12.0 and earlier do sometimes experience
the bug but much less frequently than 12.1+

The bad part of the bug analysis (from development):

    When the browse is hidden the child fill-ins are destroyed but we aren't
    removing the associated nodes from the linked list of children. This leads
    to the linked list growing each time the browse was displayed (the old
    nodes are still there and new nodes are added). The old nodes point to
    memory which has been freed. When we display the browse we refresh all of
    its children, including the old nodes representing the fill-ins which have
    been destroyed. We get away with this as long as the memory the nodes point
    to hasn't been reused. Once that memory is reallocated for something else
    the AVM crashes.

29) Added bin\pt3win.bat. This script will run prowin.exe rather than
_progres.exe.  It is less ugly than I expected.  Do not expect any fancy
GUI stuff to happen. There is no mouse support and if you get all clicky
bad things are likely to happen.  Do NOT use this as an excuse to make
client-server connections.  (prowin.exe does not suffer from the bug above)

30) Made the "dashboard", "configuration", and "osinfo" panels the same
height. This makes it so that browse panels do not get resized when
switching between "top of screen" panels. This, in turn, makes the impact
of error 49 (above) slightly less severe when using the default startup
panels. Changed the command key for osInfo to lower-case "o" in order to
make it consistent with "d"ashboard and "c"onfiguration.

31) Re-arranged the configuration panel to better group items. Added fields
for -hashlatchfactor, -lkhash -cpterm. Removed 2PC and Failover Clusters.
Changed from "excess" table and index to "unmonitored".

32) Messed around with osInfo.  Since it got taller (see item #30) there is
a lot of empty space so I added some fields.  Thinking about adding more.

33) Fixed a problem with etc/protop.ini and SysCheckmark=X. "32" is a bad
idea. Well, the idea was that it is ugly and that I would like to get rid
of it by making it a space. Which worked. However it is apparently used
somehow internally (only in winchar mode) and that resulted in the AVM
being unable to figure out which item is actually selected. Which messed up
the file picker pretty badly. So now it is 62 which is ">" which is less
ugly than the check mark IMHO.

34) Added 24 bit RGB colors to etc/protermcap.protop. Colors 56 thru 63 are
24-bit RGB, 14 thru 55 are xterm-256. I think the 24 bit stuff is supported
everywhere now so the xterm-256 colors can likely be replaced. If anyone
would like to suggest some "themes" we could probably dedicate a column of
8 colors (look on the "0" screen) to a given theme. It looks like at least
columns 4 thru 8 would be available for suggestions like that and I could
add a few more, 64 isn't a hard limit. (FWIW I think there is a limit of
about 90 named colors in protermcap.)

35) Cleaned up the "j" (pasoe) screen behave better and to give a hint if
the probe is not configured to gather pasoe health data.

36) Delayed painting new panels that do not yet have data associated with
them. This prevents certain potential errors and is perhaps a bit less
confusing in some ways. It does, however, leave a hole on the screen until
the next sample iteration.

37) Added TERMHOTLINK variable to bin/localenv.x. Certain terminals, such
as the "hterm" available as a Chrome extension, support escape sequences
that create clickable links. If you enable this then the help screen will
have a clickable link to the online ProTop documentation. Enabling it is
not universally good. PuTTY, for instance, does NOT currently support this
capability and will output some ugly garbage if this is turned on. So, for
now at least, this is an optional, but fun, feature. (Some terminals also
recognize hyperlinks and let you right-click them without any special
support.)

38) Modified the event loop in protop.p to better buffer commands in
process. This _should_ result in fewer dropped keystrokes if you often type
ahead while changing panels.

39) Added a new set of alerts for "slow after-image extent switching". If
your IO subsystem is slow and klunky (i.e. SAN storage) and it sometimes
takes a long time for the AIMGT daemon to copy FULL extents before marking
them EMPTY then this alert is for you.

40) Removed "Tenant" column from screens that show usr# (activetrx, blocked
sessions, userio, sqlio, and who).

41) Winnowing away as much conditional compilation code as possible. The
number of &IF pre-processor statements in the code has been greatly
reduced. This doesn't directly impact functionality but indirectly it means
that the code is more resilient when things like "proutil updatevsts" have
not been run since the usual alternative for things like &IF PROVERSION...
is to switch to dynamic queries for the bits that are being handled
conditionally.

42) Expanded the amount of osinfo information that is available for AIX.

43) Added a "CSC Age" column on screens that show client-statement-cache
information. This column tells you how old the CSC data is. (If the same
statement is executed in a loop the CSC timestamp does not update - this
is NOT a ProTop error.)

44) Expanded the width of aiinfo "size" field to 1TB and added a "last
op" field to show when extents have been switched, marked empty etc.

45) Cleaned up the exception handling in the installer.

46) Added "or number" to the select a table / select an index screens (the
6 and 7 commands) related to monitoring users of a table or index (the 8
and 9 commands).

47) Renamed some fields:

        dc/chkpt.p:     cpLenSec => zcpLenSec
        dc/blocked.p:   ztime    => zBlkDura
        dc/activetrx.p: xtime    => zTrxStart

if you have localized alert configurations using these fields they will
need to be updated.  (ztime/zBlkDura is the most likely candidate.)

48) The default etc/schedule.cfg will now automatically purge and cleanup
TMPDIR and LOGDIR weekly at 2 minutes past midnight Sunday.

49) Updated pasoe health scanner support to accomodate12.2 (the "j"
command).

50) Tracked down all of the places where the hostname is found and unified
the code into a single utility function.

51) Brought the HP-UX osinfo screen up to speed.