
        Main CHANGES between versions of the Browse package
1.8.22
  - Fixed C prototypes for functions with no argument.
    (Following a hint by Michael Orlitzky.)
  - Fixed a problem with version 6.5 of the ncurses library.
    (The function 'waddnstr' returns 'false' in this version
    if the argument 'n' is zero.
    This problem was not present in version 6.4 and is fixed
    in version 6.6.)

1.8.21
  - Fixed another problem when running the tests in 'tst/tests.tst'
    in the background.
    (The problem had been announced by Joachim Zobel.)
  - Support the package extensions feature of GAP 4.13,
    see https://github.com/gap-system/gap/pull/5375.

1.8.20
  - `configure` now additionally supports argument `--with-gaproot=...`.
  - Changed `make clean` to not remove `Makefile` (for compatibility with
    other package setups), old behaviour with `make cleanlast`.
  - Also calling 'SHOW_STAT()' and 'LoadStaticModule' is not needed anymore,
    due to https://github.com/gap-system/gap/issues/5195.
  - Added the new application 'BrowseWizard'.

1.8.19
  - In 'BrowseAtlasInfo()', fixed the appearance of non-core data:
    Use 'UserPreference( "AtlasRep", "AtlasRepMarkNonCoreData" )'
    not the outdated 'AtlasOfGroupRepresentationsInfo.markprivate'.
  - When running the tests in 'tst/tests.tst',
    execute the 'LoadDemoFile' examples only if 'GAPInfo.UseReadline = true'
    holds.
    Up to now, running 'tst/tests.tst' in the background caused error messages
    because there is no readline support in GAP 4.12 if the session runs
    without terminal.
    (The problem had been announced by Joachim Zobel.)
  - Use 'IsKernelExtensionAvailable' and 'LoadKernelExtension' instead of
    'LOAD_DYN', see https://github.com/gap-system/gap/issues/5195.

1.8.18
  - Fixed 'BrowseDirectory' again.
  - Changed an '#include' statement, in order to improve compatibility.

1.8.17
  - Fixed 'BrowseDirectory', circular links to directories had caused
    an error up to now.
    Thanks to Joachim Zobel for reporting this.

1.8.16
  - Fixed a technical problem in the release process,
    concerning invalid external links in the HTML documentation.
    Thanks to Max Horn for reporting this.

1.8.15
  - Fixed a problem with non-ASCII characters in 'BrowseAtlasInfo'.
  - Fixed the display of unknown indicator values in 'Browse' for
    2-modular character tables, analogous to the fix described in
    https://github.com/gap-system/gap/pull/4842.
  - Support columns of orthogonal discriminants (OD) and character field
    degrees (d) in 'Browse' for character tables.
  - Make `configure` and `Makefile.in` more similar to setup in EDIM.

1.8.14
  - Fixed the name of a record component of database attributes
    ('cleanupAfterAttributeComputation').

1.8.13
  - Simplified 'configure' script. Made it compatible with future
    changes of the GAP (and Oscar) build system.
  - Support 'footer' in the options of 'NCurses.BrowseDenseList'.
  - Admit lines in header and footer of a Browse table that are longer
    than the width of the Browse table itself;
    in this case, the header/footer is centered horizontally in the
    window in question.
  - Adjust 'BrowseGapMethods' (see 'BrowseGapData') to the introduction
    of "early methods" (in GAP's pull request 4557).

1.8.12
  - Make Browse more robust when called with bad setting of the
    TERM environment variable, in particular it should now no
    longer crash GAP during initialization.
  - 'gap' and 'gac' are now called from the main GAP root directory
    when the package is built.
  - In 'BrowseTableFromDatabaseIdEnumerator' (which is used for example
    by the function 'BrowseCTblLibInfo' from the CTblLib package),
    fixed a column alignment and forced a cell formatting.
    Before the latter change, it may have happened that too long strings
    got truncated in the table that was shown on the screen,
    without noticing).
  - Fixed a bug in 'BrowseAtlasInfo', concerning non-ASCII characters
    in the footer line, in the situation that a representation has
    been added to the result list.
  - Support MSC2020 codes in 'BrowseMSC' and 'BrowseBibliography',
    and hence also in 'BrowseBibliographyGapPackages'.
    Up to now, only MSC2000 and MSC2010 codes had been supported.
    The codes used in the functions correspond to those listed in the file
    that can be found at
    'https://mathscinet.ams.org/msnhtml/msc2020.pdf'.
    These codes agree with those listed in a not too old version of
    'https://zbmath.org/static/msc2020.pdf'.
    (In April 2021, the file at the latter address still contained several
    wrong codes.  When we checked the file again in November 2021,
    these problems were fixed; for example, the correct version of the file
    contains the codes 37A44 and 37A46 but not 37A45.)

1.8.11 (contents left unchanged, just removed an unwanted 'Print')

1.8.10
  - Drop the support for the '.zoo' archive format.
  - Make the installation safer in situations when GAP gets installed
    via the Julia package 'GAP.jl'.
  - Support JSON format for files that belong to database attributes,
    document 'DatabaseAttributeString' and related functions.

1.8.9
  - The GAP Demo utility does no longer overwrite readline's C-g,
    which has a documented meaning; now C-\ is used instead.
  - In 'NCurses.BrowseDenseList', use the grid drawn by
    'BrowseData.SpecialGridLineDrawPlus' only if there are column labels;
    if there are no such labels, use 'BrowseData.SpecialGridLineDraw'.
  - Some undocumented GAP library functions, such as 'STRING_LIST_DIR' and
    'USER_HOME_EXPAND', are no longer used in Browse.
    This simplifies the code but requires features introduced in GAP 4.11.
    And since we require at least GAP 4.11, some compatibility code has
    been removed.
  - The 'Browse' method for character tables now supports the components
    'charnames' and 'classnames' in the record given as the second argument.
    (The same has recently been done in the corresponding 'Display' method
    in the GAP library.)
  - 'BrowseGapDataAdd' does no longer need the information whether the
    Browse application will have a return value.
    (Now it calls the GAP function 'CallFuncListWrap'.)
  - Browse does no longer assume that 'GAPInfo.SystemEnvironment.TERM' is
    available, in particular Browse does not try to set this component.

1.8.8
  - Blocks in demo files can now be separated by lines starting with #%
    which makes testing demo files easier.
  - Fixed a bug in the 'Browse' method for character tables:
    The shown centralizer orders and power map information were not correct
    when a set of characters or class positions was prescribed.
    (This problem did not occur when the full matrix of irreducibles was
    shown.)
  - Fixed a bug in 'BrowseConwayPolynomials':
    In the displayed polynomials, the exponents of those monomials whose
    coefficient is different from 1 were erroneously increased by 1.
    Thanks to a user for reporting this bug.
  - 'BrowseGapMethod' uses now the filename and startline of the
    method's *installation* and not the corresponding information of the
    method itself, provided that this information is available.
    This information is more appropriate in the context of 'BrowseGapMethods'.
    Thanks to Max Horn for adding the underlying GAP feature.

1.8.7
  - Removed the example application 'BrowseTransitiveGroupsInfo',
    because of changes in the underlying library of transitive groups.
  - Added the new application 'BrowseBibliographyGapPackages'.
    (This is experimental, strange *.bib files in package distributions
    may cause error messages.)
  - Added a new application that facilitates demos of GAP code, see
    '?Browse: Utility for GAP Demos' for details.
  - The input code 127 is assumed to denote the backspace key also if
    'NCurses.keys.BACKSPACE' has a different value, which apparently happens
    for some Mac operating systems; up to now, entering backspace had no
    effect with such systems.
    [This bug had been reported and analyzed by Max Horn.]
  - 'NCurses.Select' now supports the replay and log features of
    'NCurses.BrowseGeneric'.
    Note that meanwhile several applications call 'NCurses.Select',
    now we can provide examples for them that are processed automatically,
    and debugging is easier.

1.8.6
  - 'NCurses.EditFields' now deals with long input strings by scrolling
    horizontally.
  - 'BrowseAtlasInfo' now uses the improved setup of AtlasRep 2.0:
    With AtlasRep 1.5 or older, one had to guess the defining parameters
    of a straight line program from the displayed information;
    AtlasRep 2.0 provides both more variants and a sufficient "identifier"
    concept.
    If AtlasRep 1.5 or older is going to be loaded in the current GAP
    session then the file 'app/atlasbrowse_old.g' is read, which yields the
    old behaviour.
    If AtlasRep 2.0 or newer is going to be loaded then the file
    'app/atlasbrowse.g' is read.
  - Symbolic values are now supported in selections that are offered by
    'BrowseUserPreferences', for example 'PACKAGE_ERROR' in the case of
    'InfoPackageLoadingLevel'.
    (The user preferences in question must provide this information,
    in order to benefit from this change.)
  - Use the precomputed data for 'IsPerfectGroup' etc. also when
    'TransitiveGroupsData.OneTransitiveGroup' is called;
    note that before this change, reading the data file was triggered only
    indirectly in this case, so it was not sure that no recomputation
    happened.

1.8.5
  - "Further improvement" of the Ctrl-M issue from 1.8.4.
  - Fixed two problems with non-breakable spaces in gap-publishednicer.bib.

1.8.4
  - Fixed the handling of the 'version' component of database attributes;
    before the fix, it was possible that an attribute was regarded as
    up-to-date, without checking the version number in the data file.
  - Avoid literal Ctrl-M characters to work around a bug in Windows 8.

1.8.3
  - The new user preference 'EnableMouseEvents' sets the default behaviour
    for the GAP session.
    Enabling/disabling mouse events is now regarded as one global status
    in the current GAP session,
    and browse applications should not set this status when they are entered.
    Note that more and more browse tables are opened from within other
    browse tables, and it is not clear to the user where this happens.
    Thus it does not make sense to assign a ``mouse events status value''
    to individual browse tables.
    As a consequence, the component 'dynamic.useMouse' in the records
    processed by 'NCurses.BrowseGeneric' is now obsolete;
    we keep this component because some code may rely on its presence,
    but its use is not recommended.
  - Avoid some compiler warnings with 'gcc -Wall' for gcc >= 4.6 (by
    wrapping the macro wattr_get in a function).
  - Changed encoding of Makefile.in to UTF-8 and setting LANG and LC_ALL to
    "C" ./configure script (this is workaround to some problems with 'sed'
    on newer OS X systems).
  - Fixed 'BrowseGapMethods', 'BrowsePackageVariables', and 'BrowseProfile':
    Up to now, the attempt to show the code of a function in a pager
    ran into an error if the file in question is not available, or if the
    'FilenameFunc' value of the function involves the string "GAPROOT"
    (which happens for compiled functions in lib)
    [This bug had been reported by Vinay Wagh.]
  - Fixed 'BrowseAtlasInfo':
    Up to now, unnecessary lines at the end of the details table were
    possible.
  - We now handle the case when TERM is not set at all in environment
    (e.g., when workspaces are created from cron jobs).
  - Extended 'NCurses.Select', as follows:
    - support mouse events (and to enable/disable mouse events)
    - admit "fit" as the value of the 'size' component,
      meaning the smallest possible window size
    - admit an optional 'align' component,
      meaning the alignment of the window in the terminal
    - admit an attribute number instead of 'true'
      for the optional 'border' component
  - New applications 'BrowseUserPreferences', 'BrowseTomLibInfo'.
  - Extended 'BrowseGapData' and its documentation.

1.8.2
 - `BrowseAtlasInfo' now admits a user input 'Y' (show an overview of the
   entries chosen for the result) and prints a message in the footer whenever
   a new entry is added to the result.
 - `BrowsePackageVariables' now admits also the same argument syntax as the
   GAP library function `ShowPackageVariables', which is simpler than the one
   which has to be used for packages that are loaded before `Browse'.
   `BrowsePackageVariables' shows now also the comments of method
   installations, corresponding to the extension of the GAP library function
   `ShowPackageVariables'.
 - `NCurses.Select' now admits entering digits, in order to jump to the next
   row whose label matches the given number.

1.8.1
 - improved README before release of GAP 4.5
 - made the compiler call in Makefile more flexible: can now give additional
   options to C compiler and change the linker options
 - introduced a non-documented (and not recommended) hook to load Browse
   without ncurses and so no visual capabilities

1.8
 - improved support for the case that the environment variable TERM
   has the value "dumb":
   - exit from `NCurses.BrowseGeneric', do not try to switch to visual mode
   - do not switch to visual mode in NCurses.{Select,Pager,Alert}
   - change user preferences to 'false'
   - `NCurses.attrs.ColorPairs' is available in this case;
     a manual/test example was adjusted to this situation
 - 'BrowsePackageVariables' is now documented, because it will be
   cross-referenced from the GAP Reference Manual
 - minor improvements of database attributes:
   - set a default 'version' component for attributes
   - automatically recompute needed attributes that are not up-to-date
   - improved some 'Info' statements

1.7
 - in the case that the output is redirected to a file,
   avoid printing control sequences to this file,
   by setting the TERM variable to 'dumb'
 - improved `NCurses.Select':
   searching and filtering is now possible,
   and an optional `onSubmitFunction' is supported;
   these features are used in GAP's online help
 - fixed a bug with the choice of parameters in the search dialog box
 - support replay with history when calling `BrowseAtlasInfo'
 - overwrite the library function `GetPackageNameForPrefix'
   (open a pager instead of just showing a list of matching entries)
 - use GAP's user preferences for controlling the online help
   and `GetPackageNameForPrefix';
   by default, the variants with Browse support are chosen
 - changed the default for case sensitivity from case sensitive to case
   insensitive in the dialog boxes for searching, sorting, and filtering
 - removed the function `BibEntry',
   which is available in the GAP 4.5 library

1.6
 - support replay with history when calling the `Browse' method for
   character tables and `BrowseDecompositionMatrix'
 - improved `NCurses.ConcatenationAttributeLines' (adjacent strings are
   concatenated)

1.5
 - new example application `NCurses.BrowseDenseList' and `Browse' methods
   for lists of lists, and several kinds of matrices over finite rings
 - extended `BrowseBibliography' by a MSC info column,
   added the new function `BrowseMSC' that shows an overview of all current
   MSC codes
 - new example application `BrowseDecompositionMatrix' for character tables

1.4
 - provide NCurses.IsStdoutATty and NCurses.IsStdinATty, such that something
   sensible can be done in scripts or testing environments.
 - The functions used by `NCurses.BrowseGeneric' now work also when the
   output is redirected to a file.
   In particular, the file `tst/test.tst' can now be read in the background.
 - `BrowseAtlasInfo' was adjusted to the extended functionality of
   `DisplayAtlasInfo' (for GAP 4.5), and it shows now also the available
   straight line programs and related information.
 - The new example application `BrowsePackageVariables' was added.
   Currently it is undocumented, as is the analogous GAP library function
   `ShowPackageVariables'.

1.3
 - bugfixes:
   * In some situations, it had been impossible to scroll back to the first
     column once one had scrolled to the right.
   * Sorting a browse table with hidden rows by a column could yield a wrong
     result.
   * Showing text containing unprintable characters could result in error
     messages; now `BrowseData.SimplifiedString' is called in the relevant
     example applications (for example in the online help).
   * The global variable `d' (if bound) does not get a (new) value when
     the package gets loaded.
   * `BrowseDirectory' does no longer run into an error if some files in
     question are not readable.
 - new example application `BrowseProfile' (for GAP 4.5); it uses the
   currently undocumented new utility `NCurses.EditFields'
 - changed example application `BrowseGapMethods':
   * A list of operations can be entered as an optional argument.
   * The browse table is more flexible using successive categorization.
     Up to now, it was pre-categorized by operations and number of arguments.
   * Two new columns showing package names and filenames were added.
   * If the source file of the ``clicked'' method is known (this works from
     GAP 4.5 on) then this file is opened instead of showing the code of the
     function obtained with `Print'.
 - `BrowseAtlasInfo' can now be called also with a group name as its first
   argument, and it amits also the conditions (such as `IsPermGroup') that
   are admissible for `DisplayAtlasInfo'.
   The return value of the function was changed,
   now the records in the list do no longer contain the generators themselves;
   one can get the generators from these records (which are returned also by
   `OneAtlasGeneratingSetsInfo') by calling `AtlasGenerators'.
 - in `BrowseGapManuals', use `NCurses.Pager' only if the user defined pager
   is "builtin"; otherwise, use the user defined pager
 - in `BrowseGapPackages', use the global function `BibEntry' (which is
   available in the GAP 4.5 library) not `BrowseData.BibEntry'
 - generalized undocumented functions:
   * `BrowseData.SetActions' has now an optional argument that allows one
     to replace existing actions.
   * `BrowseData.PositionInBrowseTable' computes also the positions in
     header or footer.
   * `BrowseData.ReallyFormatParagraph' admits left alignment
   * `BrowseData.CompareAsNumbersAndNonnumbers' is now more efficient
 - new search/filter parameter "mode" ("substring" or "whole entry"),
   which allows one to search for whole entries and not only for substrings;
   in this case, one can search also w.r.t. "<", "<=" etc.,
   not only w.r.t. "=" or "<>"
 - successive categorization by table columns is now supported (up to now,
   existing category lines were erased upon categorizing by a column)
 - new optional third argument <what> for `DatabaseAttributeCompute'
 - changed the encoding of the files to UTF-8

1.2
 - several bug fixes, concerning
   * `BrowseTableFromDatabaseIdEnumerator' and its data format,
   * the line grid (for cells that are higher or wider than the screen), and
   * the sorting of tables in certain situations,
 - several small improvements, such as
   * a ``status bar'' in visual mode, indicating that GAP is still computing
     (that is, the screen is not yet updated),
   * a new search/filter parameter "negate", which allows one to restrict a
     table to all rows *not* matching a certain string,
   * speedup for example of sorting/categorizing, and
   * better `minyx' functions in `Browse' for character tables, which makes
     it possible to show tables with large headers on small screens,
 - new example application `BrowseTransitiveGroupsInfo'
 - rearranged example application `BrowseBibliography':
   * now it is based on database id enumerators,
   * it is more flexible via the possibility to use a record as its argument,
   * duplicate entries in the input files are supported,
   * character replacements in the input are now left to GAPDoc (using, e.g.,
     `SimplifiedUnicodeString'), and
   * new actions for showing the three formats of a selected entry were added
 - extended example application `BrowseGapPackages':
   * be aware of an empty `Persons' component in a `PackageInfo.g' file
     (up to know, this had caused an error),
   * distinguish direct and indirect dependencies,
   * improved category values in tables categorized by needed/suggested
     packages,
   * changed output format (equal to that of `BrowseBibliography')

1.1
 - after loading a workspace re-initialize kernel part of NCurses (which
   depends on type of current terminal)
 - fixed the bug that the brk-prompt sometimes was moved to the wrong
   line of the screen
 - added low level support for mouse events in visual mode and used it in
   some applications
 - made sure that TERM is set when kernel module is loaded to avoid
   exit when ncurses is initialized
 - again bugfixes in functions used by `NCurses.BrowseGeneric'
 - new feature ``database attributes'' (described in a manual appendix)
 - new (trivial but extendible) application `BrowseGapData',
   with some subapplications such as `BrowseConwayPolynomials'

1.0  generic special grid from line drawing characters,
     new actions: scroll home/end
     added components `isRejectedLabelsCol', `isRejectedLabelsRow'
     (use them in a new action for character tables)

0.99 a few bug fixes in applications,
     adjustments to the forthcoming version of GAPDoc,
     new `NCurses.BrowseGeneric' application `BrowseDirectory'
     new `NCurses.BrowseGeneric' feature ``filtering''
     extended `BrowseBibliography' to XML format source files
     (and changed the output format)


0.9  first public release with requests for comments.

