@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 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
