@c -*- texinfo -*-

@c To compile: makeinfo --no-validate  --no-headers doc/news.info > NEWS

@chapter News

This lists user-visible changes, and which releases they occurred
between. For more detailed information see the git log.

Each release lists incompatible changes at its top.

@heading 11.0.1 (20260613) ``Welkin Moon``
@itemize @bullet
@item Fixes
@itemize @minus

@item #286: Remove no longer required loading of @code{undobuffer} python module,
as it is no longer shipped with BashStyle-NG

@item #287: Fix the wrong signal being connected to CustomIconSpinbutton, causing
a changed value not to be written to configuration

@end itemize
@end itemize
@heading 11.0 (20260611) ``Welkin Moon``
@itemize @bullet
@item General Changes
@itemize @minus

@item Migrate UI from GTK+3 to GTK+4

@item Toggling any master switch will enable or disable all widgets controlled
by that specific master setting

@item When a duplicate keybinding is set, both are marked red and the second
instance will return to it's previous, non-duplicate value after two seconds
@end itemize

@item Fixes
@itemize @minus

@item #281: colored help messages created by @code{bashstyle-help} work again

@item #282: remove root check from @code{make}, as it broke creating a Debian package

@item #283: when several bash sessions would be created simultaneously and closed
before BashStyle-NG hasn't completed setup, it may have happend that incomplete
temporary configuration files were left, which would prevent new files from being
created (BashStyle-NG checks on startup whether such file exists and skips
creating a new configuration file for vim, nano or readline, as it assumes an
other BashStyle-NG instanace is doing so) Now BashStyle-NG hooks into the EXIT
trap of Bash and attempts to remove those temporary files

@item #284: @code{lscd} and @code{treecd} would not return an error code, when
the directory cd'ed into doesn't exist (if creating directory is disabled), or
if directory cd'ed into couldn't be created (if creating directory is enabled),
in both cases they now return 1

@item #285: @code{remember_command} the function that would record the previous
command and it's return status in the @code{DEBUG} and @code{ERR} traps wasn't
properly working, as soon as a command failed the following was shown as failed
aswell, caused by an early abort in the function, this has been fixed - as of now
this is by default only used in the @code{Equinox} prompt style
@end itemize

@item New Features
@itemize @minus

@item Add support for @code{GLOBSORT} added in Bash version 5.3

@item Add support for @code{search-ignore-case} added in Readline 8.2

@item Add support for @code{rl-clear-display} added in Readline 8.3

@item When the @code{git} signing key is set to @code{yubikey}, then @code{gitkit push}
will not automatically @code{ssh-add} any key, instead it will try the push and
if a Yubikey is plugged in, you can enter it's PIN, if no yubikey is plugged in,
you'll be asked for password

@item The @code{gitkit} functions @code{listuser}, @code{listorg}, @code{cloneuser},
@code{cloneorg} now support both Github and Gitlab, and are now prefixed by gh
or gl, eg.: @code{ghlistuser} or @code{gllistuser}. Also short commands have been
added, eg.: @code{ghlu} for @code{ghlistuser} or @code{gllu} for @code{gllistuser},
at last the clone commands will ask you whether to user https or ssh (default)

@item The @code{gitkit} function @code{export} will export to @code{../<dirname>_export}
by default, if no export path was provided

@item The @code{gitkit} function @code{push} now also recognizes a @code{.gitkit_mirror}
file, when not in the root of the git repository
@end itemize

@item Misc. Changes
@itemize @minus

@item Always print a small startup message

@item Use modern @code{f-strings} instead of @code{%s} in python Code

@item In Configuration UI create custom vimrc or inputrc if it doesn't exist,
instead of throwing an error

@item Several UI tweaks, also remove separated subgroups for several settings,
like Readline 7.x is anything but recent anymore.

@item The custom undobuffer module is no longer required, thus removed

@item The UI uses some CSS to achieve the following:
@itemize +

@item Hover-effects for the icons in the main menu

@item A striped look for GtkGridView (keybindings settings)

@item Make all GtkEntry and GtkTextView have the some hover effect as most other
Gtk Widgets have

@item 90 degrees rotated labels for subgroup names
@end itemize

@item GTK+4 does no longer support a GtkSpinButton to have a primary-icon and
secondary-icon like GtkEntry. This release ships a CustomIconSpinButton which
is a composite widget, basically a GtkBox with two GtkImages and a GtkSpinButton,
creating the desired result, fully functional
Note: CustomIconSpinButton() was created AI assisted

@item The WidgetHandler now has a function to replace widgets from the UI XML
by widgets created from code (in order to retain layout without having to bother)
Note: ReplaceWidget() was created AI assisted
@end itemize
@end itemize

@heading 10.9 (20240811) ``New Eridu``
@itemize @bullet
@item New Features
@itemize @minus

@item Add ability to add manual options for @code{grep}.

@item Remove utilization of @code{GREP_COLOR} and use more versatible @code{GREP_COLORS} envvar, with eight separate color settings.

@item Add ability to choose sort order for files for @code{batchrename}.

@end itemize
@item Misc. Changes
@itemize @minus

@item Update user interface to remove deprecated Gtk+3 definitions.

@item Fixed most @code{PEP8} issues as reported by @code{pycodestyle}, except E501 (line too long).

@item Fix many warnings as reported by @code{shellcheck}.

@item Update user interface to reflect new icon names.

@end itemize
@item configure 4.5.1
@itemize @minus

@item simplfy python module check.
@item check for explicit @code{gi.repository.Gtk} version @code{3.0}.
@item make it possible to check for alternative name of an application (eg. @code{bat} is called @code{batcat} on Debian).
@end itemize
@end itemize

@heading 10.8 (20220812) ``Aionos``
@itemize @bullet
@item Bug Fixes
@itemize @minus

@item #277 @code{colors}: the color @code{brown} could not be used properly.

@item #278 @code{manpage colors}: fix definition of manpage colors for terminals with support for more than 8 colors.

@item #279 @code{manpage colors}: swap @code{black} and @code{white} on dark terminals, before defining @code{stand out} color.

@item #280 @code{bashstyle_history_sync}: syncing from within embedded terminals (like in @code{Geany}) works now.

@end itemize
@item New Features

@itemize @minus
@item Add new @code{spell-correct-word} keybinding from Bash 5.2 to keybindings setter.

@item Add new keybinding @code{fetch-history} from Readline 8.2  to keybindings setter.

@item Add new shopt @code{globskipdots} from Bash 5.2 to settings.

@item Add @code{r}, @code{reverse} option to @code{batchrename} for creating reverse filenames.

@item Add @code{functions} from @code{commandlinefu.com}, a function showing functions and where they have been defined, by user @code{goelztec}.

@item Add option to change default settings for @code{less} pager (may conflict with less as @code{git} pager when also using @code{colored manpages}).
@end itemize

@item Misc. Changes
@itemize @minus

@item Minor improvements to @code{bashstyle_history_sync}.

@item Various (minor) UI improvments and remove deprecated properties from Glade UI definition.

@item Properly log changing user agent strings for @code{cURL} and @code{wget} in @code{HOME/.bashstyle-ng.log}.

@item Properly unset several more variables only used during initiliazation.

@item Update german translation.
@end itemize
@end itemize

@heading 10.7.4 (20220505) ``Stargazer``
@itemize @bullet
@item 15th Anniversary

@itemize @minus

@item The very first release of @code{BashStyle} was released on 1st May 2007, so
version 10.7.4 marks the 15th Anniversary version. I never thought the project would
live on a long time like that.
@end itemize

@item Bug Fixes
@itemize @minus

@item #274 @code{sufffix}: fix wrongly named files, when mime-type leads to non-exact match.

@item #275 @code{systemkit}: adopt @code{freeram}, @code{usedram}, @code{totalram},
@code{usedram%}, @code{freeram%}, to @code{top} changes.

@item #276 @code{reload_bash}: fix resetting @code{ERR} trap.

@end itemize
@item Misc. Changes
@itemize @minus

@item @code{configure}: add @code{/usr/share/gir-1.0} to gir paths to look for.

@item @code{systemkit}: ensure output from cpuload is always 3 digits, ram usage always 5 digits
(filled with leading zeros; for inclusion in prompts).

@item @code{equinox}: adopt to @code{systemkit} changes.

@item @code{HISTFILE_TMP} envvar used by customized @code{bashstyle-ng} history functions renamed
to @code{BSNG_TMP_HISTFILE} to match other @code{bashstyle-ng} envvars. Also guard for @code{reload_bash}.

@item Remove year from copyright notices in all files, except documentation, also E-Mail.

@item Let configure substitute @code{BSNG_YEAR} envvar from @code{.settings}.
@end itemize
@end itemize

@heading 10.7.3 (20210319) ``New Horizons``
@itemize @bullet
@item Bug Fixes
@itemize @minus

@item #271 @code{bashstyle-rc}: prevent error messages on first start

@item #272 @code{configure}: make python version check more robust

@item #273 @code{gettext}: due a bug in @code{eval_gettext} strings starting with dashes lead to issues in @code{camelcase}, @code{random} and @code{randomfile} functions, so use old school @code{$'...'} syntax as quick fix.
@end itemize
@end itemize

@heading 10.7.2 (20200830) ``Klick Klack``
@itemize @bullet
@item Bug Fixes
@itemize @minus

@item #268 @code{gitkit}: fix @code{cloneuser} command not working.

@item #269 @code{history sync}: fix terrible bug that could cause complete loss of history when many Bash instance are started at once and trying to access the history file.

@item #270 @code{bashstyle_history}: custom 'history -D' param now also deletes single commands in history (eg: @code{history -D geany} previously only deleted @code{geany some_file}, but not @code{geany}, now both will be deleted).
@end itemize

@item New Features
@itemize @minus

@item @code{colors}: add possibility to set colors for GCC messages.

@item @code{gitkit}: add @code{listuser} and @code{listorg} commands for listing repos from a GitHub user or GitHub organization.

@item @code{advanced}: add possibility to set useragent string for @code{cURL}.

@item @code{advanced}: add possibility to set useragent string for @code{wget}.

@item @code{bashstyle_history}: custom @code{history -D} param now accepts multi-word commands for deletion.

@item @code{bashstyle_history}: new custom @code{history -g} param to grep history for simple pattern.

@item @code{bashstyle}: add @code{-l}/@code{--log} action to view BashStyle-NG log file.
@end itemize

@item Misc. Changes
@itemize @minus

@item Update german translation.
@end itemize
@end itemize
@heading 10.7.1 (20191220) ``Dragonyule``
@itemize @bullet
@item Bug Fixes
@itemize @minus

@item #266 @code{lscd}, @code{treecd}: fix error messages when cd-ing into empty directory caused by gettext string evalutation.

@item #267 @code{bat}: on some distributions @code{bat} is called @code{batcat}, support both.

@end itemize
@item New Features
@itemize @minus

@item Allow to open the BashStyle-NG logfile (@code{HOME/.bashstyle-ng.log}) from UI (About > BashStyle-NG Logfile).

@end itemize
@item Misc. Changes
@itemize @minus
@item Add package @code{fd-find} to suggested packages in Debian GNU/Linux packaging scripts.

@end itemize
@end itemize

@heading 10.7 (20190910) ``Kaffee Filtrino''
@itemize @bullet
@item Important Information
@itemize @minus

@item Starting with this release Python 3.0.0 or newer is required to run BashStyle-NG.
@end itemize

@item Bug Fixes
@itemize @minus

@item #257 @code{GNU Nano} settings: fix setting UI colors.

@item #258 @code{GNU Nano} settings: update possible settings for new @code{GNU Nano} versions.

@itemize x

@item @code{const} was renamed to @code{constantshow}.

@item @code{poslog} was renamed to @code{positionlog}.

@item @code{morespace} was replaced with @code{emptyline}.

@item @code{rebindkeypad} was removed.
@end itemize

@item #259 @code{ini handling}: fix checking user settings being up-to-date on Bash startup.

@item #260 @code{make}: fix BashStyle-NG .desktop file, manpage and @code{bashstyle-config-helper} not being uninstalled.

@item #261 @code{systemkit}: fix @code{systemkit dirsize} not working.

@item #262 @code{systemkit}: fix @code{systemkit battery} not working with recent @code{acpi} versions.

@item #263 @code{systemkit}: fix @code{systemkit internalip} not working with recent @code{ifconfig} versions.

@item #264 @code{ls color} settings: compat with some embedded terminals (like terminal in Geany IDE).

@item #265 @code{manpage color} settings: compat with some embedded terminals (like terminal in Geany IDE).
@end itemize

@item New Features
@itemize @minus

@item @code{GNU Nano} settings: support for the following new settings has been added:

@itemize x
@item @code{linenumbers}: whether to show line numbers at start of line.

@item @code{guidestripe}: whether to draw a stripe at given position (0 = disabled) so help avoiding overlong lines.

@item @code{errorcolor}: set color for error messages.

@item @code{selectedcolor}: set color for selected text.

@item @code{stripecolor}: set color for the guidestripe.

@item @code{numbercolor}: set color for numbers.
@end itemize

@item @code{GNU Nano} settings: allow bright variants for foreground colors.

@item @code{GNU Nano} settings: change default value for @code{nohelp} to @code{False}, so commands are shown unless user wants to hide them.

@item @code{list} applet: call @code{ls -A} instead of @code{ls -a} if hidden files should be included.

@item New Settings allowing to use @code{bat} instead of @code{cat}, also allow setting default theme for @code{bat} and tab width.

@item @code{check} new flag @code{P}: check if a program exists, and print a message if not, example @code{check P [program-to-check] [program-that-requests]}.

@end itemize
@item Misc. Changes
@itemize @minus

@item Allow enabling/disabling BashStyle-NG from terminal via @code{bashstyle --enable} or @code{bashstyle --disable}.

@item Rename user configuration from @code{HOME/.bs-ng.ini} to @code{HOME/.bashstyle-ng.ini} (auto-migrate from old to new name).

@item Rename vendor configuration from @code{/etc/bs-ng_vendor.ini} to @code{/etc/bashstyle-ng_vendor.ini}.

@item Rename all icons from @code{bs-ng-[ICONNAME].png} to @code{bashstyle-ng-[ICONNAME].png}.

@item Rename .desktop file from @code{bs-ng.desktop} to @code{bashstyle-ng.desktop}.

@item Simplify @code{gitkit cloneuser} / @code{gitkit cloneorg}, use @code{wget} + @code{awk} + @code{xe} instead of @code{curl} + @code{ruby}.

@item Improved @code{gitkit} function for remembering SSH password.

@item Various internal improvements; Restructure resource files; Check for optional dependencies explicitely in all functions.

@item Improve Debian packaging scripts.

@item Configure 4.5.0: various internal changes and improvements; complete list of checks.

@item Make 2.0.0: various internal changes and improvements.

@item Made most included functions translatable.

@item Use @code{eval_gettext} for translating Bash Scripts intead of outdated @code{$""} syntax.

@item Update german translation.
@end itemize
@end itemize

@heading 10.6.1 ``Aventine II''
@itemize @bullet
@item Bug Fixes
@itemize @minus

@item #256 @code{gitkit} applet: handle the case where @code{TMPDIR} is unset.
@end itemize

@item Misc. Changes
@itemize @minus

@item @code{check} function: check if @code{dig} is installed before executing @code{check m}.
@end itemize
@end itemize

@heading 10.6 ``Aventine''
@itemize @bullet
@item Bug Fixes
@itemize @minus

@item #253 color settings: compat with some embedded terminals (like terminal in Geany IDE).

@item #254 @code{basefile} function: fix @code{noext} option.

@item #255 @code{round} function: fix output not being visible in all cases.
@end itemize

@item New Features
@itemize @minus

@item New applet @code{check}: perform various non-standard checks, used like @code{test}.

@itemize x
@item @code{n}: check if arg is a valid number (int, float, hex, octal), example: @code{check n 4.4}.

@item @code{i}: check if arg is a valid integer, example: @code{check i 4}.

@item @code{f}: check if arg is a valid float, example: @code{check f 4,4} or @code{check f 4.4}.

@item @code{h}: check if arg is a valid hex, example: @code{check h 301DE8}.

@item @code{o}: check if arg is a valid octal, example @code{check o 24}.

@item @code{hc}: check if arg is a valid hex color, example @code{check hc FFF} or @code{check hc 000000}, @code{#} may optionally lead.

@item @code{s}: check if arg is a valid string, example @code{check s "How do you do?"}.

@item @code{p}: check if arg is a special character, example @code{check p ?}.

@item @code{c}: check if arg1 contains arg2, example @code{check c "Thanks, I'm fine." "I'm"} or @code{check c 1423532 235}.

@item @code{sw}: check if arg1 starts with arg2, example @code{check sw Hello H} or @code{check sw 12412 124}.

@item @code{ew}: check if arg1 ends with arg2, example @code{check ew Goodbye e} or @code{check ew 1422412 2412}.

@item @code{b}: check if arg is a valid boolean, example @code{check b $myvar}. @code{check} recognizes the following as boolean value:
@itemize +
@item @code{true}, @code{True}, @code{TRUE}, @code{0}

@item @code{false}, @code{False}, @code{FALSE}, @code{1}
@end itemize

@item @code{bt}: check if arg is valid boolean true, example @code{check bt $myvar}.

@item @code{bf}: check if arg is valid boolean false, example @code{check bf $myvar}.

@item @code{m}: check if arg is a valid mail address, example @code{check m "test@@dom.tld"}. @code{check} matches against a regex and uses @code{dig} to see if the domain is available, will verbosely inform what's wrong (in case).
@end itemize

@item New switch @code{-z} for @code{randomfile} append filename to command without separating space, for example @code{randomfile geeqie -r File: -- $HOME/Pictures/*}.

@item New features for @code{gitkit} applet:

@itemize x
@item feature @code{push}: first push to upstream, then push tags and at last push to all mirrors found in @code{.git_mirror} file.

@item feature @code{taga}: add tag and push to remote, example: @code{gitkit taga TAG [-m MESSAGE COMMITID]}.

@item feature @code{tagd}: remove tag locally and remote, example: @code{gitkit tagd TAG}.

@item feature @code{tagr}: rename a tag (technically removes tag and readds it with new name) locally and remote, example: @code{gitkit tagr OLDNAME NEWNAME}, preserves first line of tag annotation and commit pointed to.

@item feature @code{tagc}: make a tag point to a different commit (technically removes tag and readss it pointing to new commit) locally and remote, example: @code{gitkit tagc TAG COMMITID}, preserves first line of tag annotation.

@item remember ssh password feature: you can now let @code{gitkit} start an @code{ssh-agent} in combination with @code{ssh-add} so that the afore mentioned new features (and ordinary @code{git} remote commands) don't require you to type in your password everytime. You can customize whether to use that feature, how long @code{ssh-agent} should remember the passwords and what keyfile to use (fallback @code{$HOME/.ssh/id_rsa}). The timer is separate in each Bash session. See options @code{Remember SSH Key}, @code{Time to remember} and @code{SSH RSA Keyfile} in the @code{Git} section of BashStyle-NG.
@end itemize

@item improved @code{empty}: you can now specify whether to look for empty files (example: @code{empty f [PATH]}), or directories (example: @code{empty d [PATH]}) only. Like before if no arg is passed (or arg is a path) it will search for both empty files and directories in given path or in @code{PWD}.

@item improved @code{nseq} function: allow passing the lowest number, aswell as the field separator (example: @code{nseq 0 5 _}).

@item improved @code{ngroups} function: if run as root, allow passing a different user than current (example: @code{ngroups USER}).

@item improved @code{bashstyle} launcher: new switches @code{--ini-get} and @code{--ini-set} allow getting or setting configuration values from command line.

@end itemize
@item Removed Features
@itemize @minus
@item removed @code{topdir} function.

@item removed @code{assign} function.
@end itemize

@item Misc. Changes
@itemize @minus

@item Configure 4.4.4: several minor internal changes, fixup a Bash warning message.

@item move all functions from @code{DATADIR/bashstyle-ng/rc/functions} to @code{DATADIR/bashstyle-ng/functions}.

@item fix help message for @code{ruler} function.

@item updated german translation.

@item several minor internal changes and improvements.
@end itemize
@end itemize

@heading 10.5 ``Kerala''
@itemize @bullet
@item Bug Fixes
@itemize @minus
@item #250 (histignore): fix default value for HISTIGNORE.

@item #251 (history sync): fix @code{history} not properly working when @code{history sync} is active.

@item #252 (make): fix creating pot files.
@end itemize

@item New Features
@itemize @minus
@item New command @code{history -D COMMAND} which deletes all entries of a given command from the history, example:

@code{history -D rm}

will delete all occurences of @code{rm} from the history. @code{history -D} does exact matches, so for example @code{rmdir} is not removed from history, if @code{rm} is passed as @code{COMMAND}.

@item History Isolation. This will
@itemize x

@item prevent storing the history to file when Bash exits

@item disable history syncronization

@item disable in-session history

@item disable the builtin history command
@end itemize

@item New shopt @code{localvar_inherit}, requires Bash version 5.0.

@item New keybindings @code{next-screen-line} and @code{previous-screen-line}, requires Readline version 8.0.
@end itemize

@item Misc. Changes
@itemize @minus
@item Minor user interface improvements.

@itemize x
@item Widget adjustments and sizes improved.

@item User can now choose between standard @code{cd} or BashStyle-NG @code{lscd} or @code{treecd}.

@item User can now choose between standard @code{history} or BashStyle-NG @code{History Sync} or @code{History Isolation}.
@end itemize

@item @code{bashstyle -v} and About Page now show the release codename, too.

@item New internally used variable @code{BSNG_SESSION_TIME} contains the BashStyle-NG startup time in @code{+%I-%M-%S-%N} format.

@item Updated german translation.
@end itemize
@end itemize

@heading 10.4 ``Alrest''
@itemize @bullet
@item Bug Fixes
@itemize @minus
@item #249 (lscolors): fix applying ls color for jpg files
@end itemize

@item Misc. Changes
@itemize @minus
@item LS Colors: apply colors for alternative suffixes, too:
@itemize x
@item apply color for @code{jpg} to @code{jpeg}
@item apply color for @code{tar.gz} to @code{tgz}
@item apply color for @code{tar.bz2} to @code{tbz}
@end itemize

@item Make 1.1.0: simplify code, minor fixes

@item Configure 4.4.1: add @code{-h} in addition to @code{--help}, minor changes

@item @code{batchrename}: proper verbose output

@end itemize
@end itemize
@heading 10.3 ``Odyssey''
@itemize @bullet

@item Bug Fixes
@itemize @minus
@item #247 (randomfile): fix executing @code{randomfile} if neither @code{-r} or
@code{-p} are used.

@item #248 (randomfile): fix handling file or directory names with spaces.
@end itemize

@item Misc. Changes
@itemize @minus
@item Configure 4.4.0: simplify code

@item Update @code{README}, @code{TODO}, Debian GNU/Linux package description.

@item Update german translation.
@end itemize
@end itemize
@heading 10.2 ``Circus of Insanity''
@itemize @bullet

@item Bug Fixes
@itemize @minus

@item #242 (systemkit): @code{systemkit} did not accept the given @code{directory}
for function for counting files, directories or overall items, instead it always
used @code{PWD}. Now it respects a given @code{directory} and uses @code{PWD} if
none was given.

@item #243 (systemkit): @code{systemkit} result of function for countine files,
directories or overall items were off by 1 in some cases.

@item #244 (randomfile): fix that @code{randomfile} could not handle parameters
passed to the application, e.g.: @code{randomfile geeqie -r -- /home/test/Pictures/*}
does now work as intended.

@item #245 (randomfile): check whether @code{HOME/.randomhistory} exists before doing
anything when @code{-f}, @code{-l}, @code{-L} or @code{-i} are given.

@item #246 (dd): fix that custom @code{dd} options don't work.
@end itemize

@item New Features
@itemize @minus

@item Add possiblity to count hidden items to @code{systemkit}:
@itemize x
@item counthiddenfiles / chf
@item counthiddendirs  / chd
@item counthiddenitems / chi
@end itemize

@item Add possibility to only print the result for @code{randomfile},
using @code{-p}, @code{--print} parameter.

@item Add possibility to not specify any files, in that case it will
use all files from @code{PWD}, use like @code{randomfile geeqie --}.
@end itemize

@item Removed Features
@itemize @minus
@item @code{2048} game
@item @code{bashtips} function
@item @code{batch} function
@item @code{hilow} game
@item @code{quickscript} function
@item @code{remount} function
@item @code{wininfo} function
@item @code{xmltagdelete} function
@item vim color schemes
@end itemize

@item Misc. Changes
@itemize @minus
@item Add short switches for over-long switches to @code{systemkit}:
@itemize x
@item countvisiblefiles -> cvf
@item countvisibledirs  -> cvd
@item countvisibleitems -> cvi
@item countoverallfiles -> cof
@item countoveralldirs  -> cod
@item countoverallitems -> coi
@end itemize

@item Add short switches to @code{apkdump}:
@itemize x
@item name        -> n
@item version     -> v
@item versioncode -> c
@item perms       -> p
@end itemize

@item Make @code{sufffix} quiet by default, add @code{-v}, @code{--verbose} switch,
to get verbose output, if desired.

@item Add @code{-v}, @code{--verbose} switch to @code{batchrename}, to get verbose
output, if desired.
@end itemize
@end itemize

@heading 10.1 ``Victory Forever''
@itemize @bullet

@item Bug Fixes
@itemize @minus
@item #238 (systemkit): make @code{countvisibleitems} work, when @code{PWD} is a
symlinked directory.

@item #239 (functions): scripts that check for required applications no longer
print the path to the found binary.

@item #240 (gitkit): make @code{openhub} parameter support more than just github.com
origins (for example gitlab projects are now properly opened in browser, aswell), also
rename @code{openhub} parameter into @code{openweb}.

@item #241 (ui): fixed that the UI definition had a property introduced in GTK+ 3.10,
so potentially not working on previous GTK+ versions.
@end itemize

@item New Features
@itemize @minus
@item @code{topdir} function, returns the deepest existing toplevel directory for a
given path, returns @code{1} if none found at all.

@item @code{camelcase} function, transforms a string (@code{test_string-a b}) in
either camelcase (@code{TestStringAB}) or word-by-word uppercase (@code{Test String A B}).
@end itemize

@item Misc. Changes
@itemize @minus
@item @code{Equinox} and @code{Power User} prompt styles now also use the
@code{showuser} function instead of bash built-in @code{$} prompt variable.

@item @code{lscd} and @code{treecd} changes:
@itemize x
@item in the user interface you could previously enable both @code{lscd} and @code{treecd},
which is of course not supported, so if both were enabled, @code{lscd} was used, always. This
is fixed now, as the user interface now only lets enable one or the other, not both.

@item make @code{lscd} and @code{treecd} strings localizable.

@item nicer banner shown after cd-ing.

@item truncate output if more than 35 items would be displayed, also show how many
items have been ommited.

@item when user choses that custom cd creates non-existent directories,
they now check whether user has write permission for top-level directory.

@item display a message if cd-ing failed because directory does not exist.
@end itemize

@item Update documentation
@itemize x
@item Style: add @code{Equinox} and @code{4.4+} Sections

@item Advanced: add all new features introduced in @code{10.0}
@end itemize

@item When @code{systemkit bios} is called as non-root user a message is printed
accordingly (instead of just exiting without further notice).

@item Update german translation.
@end itemize
@end itemize

@heading 10.0 ``10th Anniversary Version''
@itemize @bullet

@item Bug Fixes
@itemize @minus
@item #226 (gitkit): fix @code{openhub} feature, when there is more than
one remote.

@item #227 (bashstyle-rc): Make Bash history syncronization over different
sessions more robust.

@item #228 (ui): Fix translation domain for user interface.

@item #229 (launcher): Fix @code{-p} and @code{-P} command line args were mixed up.

@item #230 (treecd): Check whether @code{tree} is installed, if not, override the
user's choice to use @code{treecd} instead of @code{cd}.

@item #231 (equinox): Fix missing prompt part in @code{equinox} style when terminal
has not enough lines of height to draw all user-requested prompt part.

@item #232 (equinox): Dynamically calculate minimum required number of lines in
height required to draw all user-requested prompt parts.

@item #233 (clock): Use prompt color definitions instead of hacky @code{sed}
substitutions (left-over from very (very) early @code{BashStyle-NG} versions)
in the @code{clock} prompt style.

@item #234 (poweruser): Use @code{grep -c} instead of @code{grep xx | wc -l}.

@item #235 (ayoli): Fixes and improvements for @code{ayoli} prompt style.

@item #236 (custom-prompt-builder): Version of @code{equinox} prompt style in
the @code{custom-prompt-builder} was bugged since the introduction of
@code{lastcommand} prompt part.

@item #237 (systemkit): @code{systemkit --dirsize} was broken.
@end itemize

@item New Features
@itemize @minus
@item Add @code{apkdump}: grab information about android packages (apk) using
aapt.

@item Add @code{sufffix}: fixes the suffix for given files.

@item Add @code{batchrename}: batch renames all files in a directory using the
@code{NNN-NAME.SUFFIX} naming scheme, where @code{NNN} is the number of the file
inside the directory (filled up with leading zeros if required, eg. @code{01} or
@code{001}) and @code{NAME} is given by the user.
@end itemize

@item Misc. Changes
@itemize @minus
@item Minor improvements to the bashstyle launcher script.
@itemize x
@item minor code changes.

@item Add @code{-d}, @code{--doc} command line arg to bashstyle, which opens
the HTML documentation using @code{xdg-open}.

@item Improve description of the @code{-P}, @code{--python} command line arg
of the bashstyle launcher script.
@end itemize

@item More versatile @code{config-update-helper}.
@itemize x
@item Install @code{bashstyle-config-helper} launcher script.

@item Add backup, restore and reset actions to @code{config-update-helper}.

@item Add @code{-b}, @code{--backup} command line arg to bashstyle, which will
backup the user configuration.

@item Add @code{-r}, @code{--restore} command line arg to bashstyle, which will
restore a previously backed up user configuration.

@item Add @code{-R}, @code{--reset} command line arg to bashstyle, which will
reset the user configuration to vendor values (if vendor configuration exists
and is up to date) or factory values.

@item @code{-u}, @code{--update} command line arg of bashstyle was not mentioned
in @code{-h}, @code{--help} message.
@end itemize

@item Update german translation.

@item Update @code{bashstyle.1} manpage.

@item Rename @code{bsng-help} to @code{bashstyle-help}.

@item Remove @code{check_opt}, instead do a check in each script on it's own.

@item Improve coding style for various functions, scripts and prompt styles.

@item Update prompt styles in the @code{custom-prompt-builder}.
@end itemize

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@end itemize

@heading 9.3 ``Trick or Treat''
@itemize @bullet

@item Notes
@itemize @minus
@item This release renamed the @code{nx-rc} to @code{bashstyle-rc}, that means,
you'll have to re-enable @code{BashStyle-NG} in your @code{$HOME/.bashrc}. Upon
first start @code{BashStyle-NG} will offer you to do so, on it's own.

Additional notes for Git repo users:
@itemize x
@item This also applies to users that have used version 9.3 prior to commit 4e621c.

@item Any references to @code{nx-rc} will be auto-removed when re-enabling from UI,
as of commit 2ff6c0, if you transisted before that commit, be sure to remove
@code{nx-rc} references from your @code{$HOME/.bashrc} manually.
@end itemize
@end itemize

@item Bug Fixes
@itemize @minus
@item #204 (debian vendor config): fixed error in Debian vendor configuration,
preventing BashStyle-NG UI from startup.

@item #205 (ui): fixed buttons for saving, restoring, deleting and reverting
user configuration in UI not working.

@item #206 (manpage colors): enforce environment variable @code{PAGER} to be
@code{less}, else colorizing manpages might fail, if an  other pager is used.

@item #207 (trap): fix recording exit code of last command if it's not 0.

@item #208 (startup): fix enabling @code{BashStyle-NG} in @code{$HOME/.bashrc}
from user interface in certain cases.

@item #209 (startup): add file check when enabling @code{BashStyle-NG} in
@code{$HOME/.bashrc}, so that @code{Bash} does not run into errors on startup
when @code{BashStyle-NG} was uninstalled, but the startup entry still exists.

Aswell as when it was installed to a different prefix, without having adjusted
the startup entry in @code{$HOME/.bashrc}.

@item #210 (configuration): when @code{ini_version} of @code{$HOME/.bs-ng.ini} is
bigger than @code{app_ini_version}, the configuration is reset to either vendor or
factory default configuration. When doing so the configuration was not reloaded
by the user interface (which could potentially lead to a crash).

@item #211 (colorshell): new option @code{Dark Terminal Background} allows user
to set whether the terminal background is dark or bright. This option is used for
colorshell to prevent the font color being black on dark terminals, respectively
white on bright terminals in order to avoid barely readable text output.

This option also applies to all other terminal dependant color settings in
@code{BashStyle-NG}, where @code{white} will be @code{black} on bright terminals,
respectively @code{black} will be @code{white} on dark terminals.

@item #212 (readline): fixed setting @code{bell-style} readline variable.

@item #213 (readline): fixed setting @code{completion-ignore-case} readline variable.

@item #214 (ls colors): fixed readline not inheriting @code{LS_COLORS} set by
@code{BashStyle-NG}. This resulted in readline functions using distribution default
@code{LS_COLORS}, but bash functions using the user set variable.

@item #215 (lastcommand): fixed last command recording to generate ugly results for
bash prompts (@code{lastcommandprintable}) by removing all newlines from the string.

@item #216 (treecd): fixed user set @code{treecd} options not being honoured.

@item #217 (lscd, treecd, grep): force switch to monochrome output when user has
disabled colorful prompts.

@item #218 (equinox, truncpwd): fixed prompt length calculation for @code{equinox}
prompt, if @code{pwdcut} ini value is not set. Fixed output string length calculation
for @code{truncpwd} function aswell.

@item #219 (debug log): the debug log now properly stores all messages, run commands
and their (error) output in @code{$HOME/.bashstyle.log} after startup. Before this fix
only the messages from @code{BashStyle-NG} itself were stored, making the debug log
rather useless.

@item #220 (ini_set): fixed setting ini values from shell.

@item #221 (equinox): when on linux console let display @code{+}, @code{-} and
@code{/} for @code{lastcommand} exit code visualization instead of @code{✔},
@code{✘} and @code{⊘}, as they won't display correctly.

@item #222 (custom prompt builder): fixed a few bugs in the pre-definied prompt
definitions for the custom prompt builder.

@item #223 (keybindings): fixed that keybindings were always changed, even if
user disabled that feature from UI.

@item #224 (factory ini, debian vendor ini): enable @code{extglob} shopt by
default. Some bash completion definitions don't work without (eg: vim's).

@item #225 (dd): fixed no longer working @code{dd} when loading @code{bashstyle-rc}
more than one time during a single bash session.
@end itemize

@item New Features
@itemize @minus
@item Previously updating the user configuration to a new version was only
possible by invoking the @code{BashStyle-NG} user interface. Now the user
configuration is auto-updated from @code{bashstyle-rc} upon shell start up
aswell (if needed, vendor configuration is considered if up-to-date, else
factory configuration will be used (same behaviour as from user interface)).

Manual update is possible via @code{bashstyle --update}, or @code{bashstyle -u}.
If your configuration is up-to-date, nothing will be changed.

@item New Termcap/Manpage coloring function. @code{BashStyle-NG} now allows you
to choose the different colors for manpages from the User Interface, rather than
only giving you a handful of pre-defined color schemes.

@item Added option to include the current directory to the @code{PATH} variable.

@item Added coloring options for @code{lscd} and @code{treecd} for different
@code{banner}, @code{mkdir} and @code{empty} labels.

@item Added options for letting user choose what to use for @code{lastcommand}
exit code visualization. @code{return_good}, which is @code{✔}/@code{+} by default
@code{return-bad}, which is @code{✘}/@code{-} by default and @code{return_other},
which is @code{⊘}/@code{/} by default. This is currently only used in @code{equinox}
prompt.

@item Ability to choose what to display in @code{equinox} prompt. You can now
enable or disable the following informations:
@itemize x
@item system load
@item cpu load
@item ram usage (pro tip: enabling this will dramatically increase the time
required to draw the prompt)
@item last command (and exit code)
@item process count
@item uptime
@end itemize

@item Added @code{showuser} function. Prompt function to either show @code{$}
for normal users, a custom-set symbol. Always displays @code{#} for root. If
colors are enabled color for normal-users will be @code{color_user} and red for
root.

@item Added @code{user_char} option. Set this to let @code{showuser} display
something else than @code{$} for ordinary users.

@item New Bash 4.4 features support:
@itemize +
@item @code{EXECIGNORE} a colon-separated list of commands to ignore from completion.
Only matched if the *complete* filename matches. For example if you want to exclude

    @code{/usr/bin/autoreconf}

from command completion, you need to add something like

    @code{/usr/bin/autreconf}
or
    @code{*/autoreconf}

to @code{EXECIGNORE}.

@item @code{PS0} prompt and color setting. A new prompt which is displayed after
completion was done and before the completed command is executed.
@end itemize

@item New Readline 7.0 features support:
@itemize +
@item added Readline 7.0 master switch (enable to make use of the following).

@item @code{Colored Completion Prefix} makes the matching prefix of the issued
completion appear in a special color for all matches.

@item @code{Enable Bracketed Paste} makes Bash handle multi-line pasted code
like single-line, preventing erroneous completion or execution.

@item @code{Vi Command Mode String} is an indicator printed before the last line
of @code{PS1} when Bash is in vi command mode.

@item @code{Vi Insert Mode String} is an indicator printed before the last line
of @code{PS1} when Bash is in vi insert mode.

@item @code{Emacs Mode String} is an indicator printed before the last line of
@code{PS1} when Bash is in emacs mode.
@end itemize
@end itemize

@item Updated / Improved Features
@itemize @minus
@item @code{history syncronization} improved history syncronization erasedups,
ignoredups, ignorespace and ignoreboth implementation. Made it more robust in
case multiple Bash sessions start up simultaneously (should throw a lot less to
no more errors).

@item @code{random} function's @code{--numericalrange}, @code{-r} param previously
only allowed setting the @code{highest} value of random range, starting from zero.
Now it's possible to set the @code{lowest} value optionally, aswell. Both syntaxes
are supported:

@code{random -r 10} will give you a random number between 0 and 10
@code{random -r 5 10} will give you a random number between 5 and 10

@item @code{colors} added support for both @code{grey} and @code{white} in all
color settings. Note: depending on your terminal's color settings you might not
see a difference here, that's not a bug.

@item @code{colorshell} does no longer pollute @code{PS1...4} variables. It does
now store @code{PS1...4} once per session to @code{OLDPS1...4} and appends it's
randomly choosen text color to the it.

@item @code{equinox} prompt now shows @code{⊘} in yellow when exiting @code{git log}
using @code{q} key, instead of @code{✘} in red. Exiting @code{git log} results in
return code 141, but it's not an actual error, thus the new state was added.
@end itemize

@item UI changes
@itemize @minus
@item Use @code{GtkSwitch}es instead of @code{GtkRadionButton}s for main
switches in the UI.

@item Make the radio buttons @code{use lscd instead of cd} and
@code{use treecd instead of cd} exclude each other.
@end itemize

@item Configure
@itemize @minus

@item 4.3.8
@itemize +
@item code review.
@item make build dependencies a separate dependency group.
@end itemize
@end itemize

@item Misc. Changes
@itemize @minus

@item Translation Domain changes:
@itemize x
@item old: @code{bs-ng}, new: @code{bashstyle}

@item old: @code{nx-rc}, new: @code{bashstyle-rc}
@end itemize

@item Improvements to @code{bashstyle} launcher script.

@item Minor improvements to the Custom Prompt Builder UI.

@item Added option to launch Terminal Emulator from UI (uses @code{x-terminal-emulator}).

@item Since a few versions the code for setting colors has been changed, so we no
longer need a monochrome version of each prompt style, avoiding lots of (mostly)
duplicated code.

@item Standardize shebangs in python scripts (and remove corresponding lintian
override).

@item Updated german translation.

@item Don't mark setting's name and a few others as translatable strings.

@item Changed string @code{GIT} to @code{Git} in the UI and other pacles.

@item Move last command recording to the end of @code{BashStyle-NG} initialization,
no need to record @code{BashStyle-NG}s startup.

@item @code{WidgetHandler} now supports @code{GtkSwitch}es, @code{GtkButton}s and
@code{GtkLabel}s, Custom Prompt Builders special @code{GtkButton}s and
@code{GtkComboBox}es.

@item Less environment pollution by @code{unset}ing a lot of variables which are
of no use after @code{BashStyle-NG} initialization.

@item Simplified color setup mechanism for non/echoable prompt part colors.

@item Minor fix for @code{dbg_msg} function, now some of the output strings in
@code{$HOME/.bashstyle.log} are more readable.

@item Minor coding style changes / improvements.
@end itemize

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@end itemize

@heading 9.2 ``Galvanize''
@itemize @bullet

@item Bug Fixes
@itemize @minus
@item #191 (make): gtk-update-icon-cache was not properly invoked after make
install

@item #192 (custom prompt builder): inserting prompt parts from GtkComboBoxes
did not work

@item #193 (nano): setting Nano UI Colors an Tabs to Spaces did not work

@item #194 (colors): color definitions have not been properly exported to
external scripts, which thus always displayed monochrome output

@item #195 (nx-rc): fixed filtering out @code{trap} from @code{lastcommand}
storing [Mingye Wang]

@item #196 (nx-rc): fixup @code{lastexit} value storing [Mingye Wang]

@item #197 (nano) (vim) (readline) (keybindings): fixup file existence checks
which are intended to prevent file conflicts when multiple Bash sessions are
started at the same time [Mingye Wang]

@item #198 (nx-rc): fixup detection of vendor ini version on first load of nx-rc
if no user ini exists

@item #199 (reload): fixup reload to properly restore the complete environment,
including BashStyle-NG and Bash Programmable Completion.

@item #200 (dd_opts): ensure setting DD_OPTS is properly done.

@item #201 (ls_colors): setting Tar/XZ color from UI didn't work.

@item #202 (configure): fixed last arguement passed to configure not being honoured.
@end itemize

@item Configuration File Changes
@itemize @minus
@item Additionally to factory and vendor (/etc/bs-ng_vendor.ini) configuration
BashStyle-NG now also checks for user backup ($HOME/.bs-ng.ini.save)
configuration when resetting configuration

@item Before using user backup or vendor configuration in any way do a dry-load
to ensure the files are in proper shape, if they contain errors skip them

@item When the configuration file can't be loaded due errors, let BashStyle-NG
auto-reset the configuration using user backup (if it exists) > vendor
configuration (if it exists) > factory configuration (in that order). This
prevents BashStyle-NG from crashing if there's something wrong with the
user configuration file

@item Added new Category "Configuration" which allows to:
@itemize +

@item Backup
@item Restore (from user backup configuration)
@item delete Backup configuration
@item Reset (reset from vendor or factory configuration) the configuration
@item Edit various configuration files (uses xdg-open to open files), namely:
@itemize x

@item .bashrc
@item .bashstyle.custom (bashrc-extension always loaded after BashStyle-NG,
thus can use BashStyle-NG variables and functions reliably)
@item .vimrc.custom (vimrc extension that is not managed by BashStyle-NG)
@item .inputrc.custom (inputrc extension that is not managed by BashStyle-NG)
@end itemize
@end itemize

also shows version of user, user backup, vendor and factory configuration files
(None for vendor and user backup if they don't exist)

@item icon name for this category in UI: bs-ng-config

@item after configuration is restored or reset the application is restarted
@end itemize

@item StartUp Mechanism Changes
@itemize @minus
@item Before BashStyle-NG embedded into /etc/bash.bashrc or /etc/bashrc to add
a startup entry to $HOME/.bashrc. Now if $HOME/.bashrc does not contain a
startup entry for BashStyle-NG the user is presented a tab page upon UI start
asking whether to add the entry. Also works when the startup entry for
BashStyle-NG is commented out, or if the entry is from a previous installation
of BashStyle-NG that had a different installation prefix.
@end itemize

@item Prompt Part Changes
@itemize @minus

@item PS2 / PS3 / PS4 changes: Before there's been an option for PS234. Setting
this to ">" resulted in

@itemize +
@item PS2=">"
@item PS3=">>"
@item PS4=">>>"
@end itemize

Now there's an separate option for each (including a color option each)

@item additionally PS2 / PS3 / PS4 export does now honor enable_colors setting
@end itemize

@item History Syncro Changes
@itemize @minus

@item BashStyle-NG 9.1 introduced a custom history sync functionality (for
syncing history over simultaneously running sessions), which turned out to break
Bash $HISTCONTROL, as it modified the history from outside. This is now worked
around by custom functions replacing the $HISTCONROL of Bash since it fails
due to the custom history handling functions. Please note that this might slow
down Bash a bit if you have a huge history.
@end itemize

@item New Functions
@itemize @minus

@item xmltagdelete: delete tags from xml files, see @code{xmltagdelete --help}

@item 2048.bash: 2048 game in Bash, see @code{2048.bash --help}
@end itemize

@item New Settings
@itemize @minus

@item Added option to display progressbar for @code{dd}, requires version 8.24 or newer.
@end itemize

@item Documentation
@itemize @minus

@item Add texinfo documentation describing all features of BashStyle-NG (work
in progress).
@item currently documented:
@itemize +
@item Introduction
@item News (ChangeLog)
@item Configuration file handling
@item Advanced options (UI section)
@item Style options (UI section)
@item Shell options (UI section)
@item UI icon names
@end itemize
@item Add manpage for @code{bashstyle} executable.
@item Add @code{Documentation} icon (@code{bs-ng-doc}) icon in UI, opening the
documenation using @code{xdg-open}.
@end itemize

@item Misc. Changes
@itemize @minus

@item undobuffer: enforce Gtk version 3 to be loaded (makes a startup warning
shut up
@end itemize

@item Configure
@itemize @minus

@item 4.3.7
@itemize +
@item code review
@item fixed bug #202
@end itemize

@item 4.3.6
@itemize +
@item add @code{--docdir} switch back
@item add @code{--mandir} switch
@end itemize

@item 4.3.5
@itemize +
@item remove system bashrc detection
@item remove --profiledir switch
@item remove --bashrc switch
@item minor string changes
@end itemize

@item 4.3.4
@itemize +
@item remove --quiet switch
@item globally define PYMAXVER and PYMINVER (python minimum and maximum versions)
@item globally define PYAMXVER_P and PYMINVER_P (printable python minimum and
maximum python versions for configure messages)
@item remove unused variable
@end itemize
@end itemize

@item Make
@itemize @minus

@item 1.0.9
@itemize +
@item code review
@end itemize

@item 1.0.8
@itemize +
@item compress manpages upon @code{./make build}
@item install info and html documentation upon @code{./make install}
@item install manpages upon @code{./make install}
@item add a few more strings
@item build README from doc/userdoc_introduction (@code{./make readme})
@end itemize

@item 1.0.7
@itemize +
@item build NEWS from doc/news.info (@code{./make news})
@item build doc/bashstyle.info from doc/userdoc.texi (@code{./make info})
@item build doc/html from doc/userdoc.texi (@code{./make html})
@end itemize

@item 1.0.6
@itemize +
@item fixed bug #191
@end itemize

@item 1.0.5
@itemize +
@item update for no longer installed profiledir and profile script
@item minor string changes
@end itemize
@end itemize

@item Translations
@itemize @minus

@item Updated german translation
@end itemize

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@end itemize

@c <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

@c @heading x.y.z ``Code name''
@c @itemize @bullet

@c @item Updated or New dependencies
@c @itemize @minus
@c @end itemize

@c @item Notes
@c @itemize @minus
@c @end itemize

@c @item Build and Installation
@c @itemize @minus
@c @end itemize

@c @item Bug Fixes
@c @itemize @minus
@c @end itemize

@c @item New Features
@c @itemize @minus
@c @end itemize

@c @item Miscellaneous Changes
@c @itemize @minus
@c @end itemize
@c @end itemize
