Files
profile/doc/CHANGELOG.md
T
2026-10-13 13:42:56 +02:00

16 KiB
Executable File

Changelog

All notable changes to this project will be documented in this file.

The format follows Keep a Changelog. Versions follow MAJOR.MINOR.PATCH-REVISION_STAGE_N (e.g. 3.99.1-4_rc_1).


[Unreleased]

Added

  • utaz -i / --ignore-case and -s / --case-sensitive switches to match archive extensions case-insensitively or not; the default is set by the new UTAZ_DEFAULT_IGNORE_CASE key of the [compress] section (default 0).
  • SETTRACE_DEFAULT_ENABLED key in the new [debug] configuration options (default 0): activates settrace --on at startup of interactive shells.
  • utaz supports bare .zst files and .tzst archives; taz -q is now effective.

Fixed

  • taz: a plain file with the tar format could be deleted instead of being archived; existing <item>.tar files are no longer overwritten; trailing slashes, ./.. and names starting with - are handled; the gzip fallback (no pigz) works again.
  • utaz: single top-level directory flattening, --no-dir target location, foo.tar.gz host directory name and .tar.lz extraction.
  • conf_save: no longer replaces a symlinked configuration file by a regular one, keeps the file permissions, rejects multi-line values, and inserts a new key before the trailing comments/banner of its section instead of under the next section's banner; leading blanks before a [section] are recognised.
  • conf_dump -a: a commented default is no longer listed when the key is set later in the same section; NO_COLOR is honoured; names with newlines or backslashes in arguments are handled.
  • term_set: COLORTERM=truecolor no longer short-circuits every other probe (it selected xterm-direct even inside tmux/screen or VTE terminals); multiplexers (tmux, screen) are now checked before emulator hints, since they inherit the emulator's variables.
  • debug.sh: the trace is now written to stderr (it used to pollute captured $(...) output) and includes the exit status; backtrace and error are exported like settrace; settrace tells its own trap from a foreign one (--status, and --off no longer removes a foreign trap without --force); --on when already active is only a warning; getopt errors name the command.
  • All modules: counters updated with ((x++))-style commands (which return a non-zero status when the value was 0) now use plain assignments, so they no longer trigger the ERR trace or break set -e.
  • disp: a message hidden by QUIET/DEBUG no longer returns a non-zero status; no reset escape sequence under NO_COLOR; debug messages go to stderr; works under set -u; faster wrapping.
  • mdcat: tables inside fenced code blocks are shown as code; code spans and \_-style escapes are protected from emphasis/link parsing; NO_COLOR is honoured in tables and headings; fewer subprocesses when rendering tables; newlines in arguments no longer break option parsing.
  • filefct.sh: findzero with fd listed (and --delete removed) one-byte files; findzero --delete could remove symlinks to empty files; rmspc overwrote existing files, passed a wrong replacement character to subdirectories with -r -c X, followed symlinked directories and mishandled & as replacement; expandlist split names containing spaces, ignored \n in its separator and reset the caller's nullglob; file_stats histogram was unordered, --min was exclusive and invalid sizes silently gave no result; findbig accepted an invalid configured limit; names starting with - are handled; finddead and findzero no longer return 1 when the last entry was skipped.
  • fun.sh: the configured delays and language of busy, fake_compile and hack are now validated (a non-numeric value was evaluated as an arithmetic expression, and an invalid language looped without sleeping); Ctrl-C no longer leaves the background job running, nor does a shell without job control; a missing terminal is reported; the positional pattern of busy documented in its usage now works; grep/read no longer mangle patterns starting with - or lines with leading blanks; awk is no longer forked for each pause.
  • git.sh: gprune --deep never deleted anything (<branch>@{upstream} fails once the remote branch is gone; it now reads the configured upstream ref); gprune returned 1 on success and could not be told which branches are protected (GIT_MAIN_BRANCH is now honoured); greset stashed the local changes before checking that the target exists, ignored untracked files outside the current directory and cleaned only below it; gsync could fetch a different remote than the one it rebased on; gacp/gsync handle remote and branch names containing slashes, and refuse a detached HEAD; ggraph rejects a limit of 0; internal helpers are exported with the commands.
  • help: help <command> no longer runs arbitrary external programs with --help (profile functions only); NO_COLOR is honoured; kt, pinfo and help itself are listed, and the list is in alphabetical order again.
  • pinfo: GPUs were listed once per display connector (nine "GPUs" on a single-GPU laptop); the /proc/bus/pci fallback could never match; free memory is estimated on kernels without MemAvailable; /usr/lib/os-release is used as a fallback; NO_COLOR is honoured; internal variables and the helper no longer leak into the shell. showinfo no longer needs the hostname binary.
  • showinfo: fastfetch is now preferred over the unmaintained neofetch.
  • lang.sh: setlocale (and the SET_LOCALE shortcuts) had no effect after setc, because LC_ALL stayed set; setc and the shortcuts changed the locale when called with --help (and thus through help <command>); setlocale fr_FR could pick a non-UTF-8 charset; shortcut functions are built without evaluating the raw configuration value, and an alias cannot replace setlocale or setc.
  • compress.sh: option flags and loop variables no longer leak into the interactive shell.

[4.1.0] — 2026-05-07

Added

  • profile.sh --install command to automatically configure profile loading in shell startup files.
  • --install --bashrc and --install --profile target selectors for single-file installation.
  • git.sh — entirely new module providing git workflow helpers: gst, ggraph, gsync, gacp, greset, gwip, gprune, groot.
  • Dedicated git helper completions under profile.d/bash-completion/, loaded automatically in interactive sessions from profile.d/bash-completion/*.sh.

Changed

  • disp now wraps long messages on terminal width, avoids mid-word splits, and aligns continuation lines with the message body after the prefix.
  • help now supports help <command> and delegates to <command> --help.
  • taz now supports -p auto / --parallel=auto to automatically use the runtime CPU count. This mode is now the default via TAZ_DEFAULT_THREADS=auto. Backward compatibility with 0 being interpreted as auto is maintained.

Fixed

  • Startup responsiveness improved: check_updates -q now uses a short network timeout so unavailable/slow networks no longer delay prompt readiness.
  • dwl gained timeout support (-t / --timeout) and is now used by quiet startup update checks to enforce fast failure.
  • profile.sh now detects direct execution and warns that it is designed to be sourced.

[4.0.0] — 2026-04-23

Added

  • New profile.conf reference template at doc/profile.conf.example.
  • Dynamic locale shortcuts generated from SET_LOCALE and startup default language selection through DEFAULT_LANG.
  • Prompt theming system with bundled themes (default, dark, light, solarized, solarized-light, monokai, monochrome, abyss, plasma, adwaita) and per-key prompt color overrides.
  • Module defaults exposed as configuration keys in profile.conf.

Changed

  • utaz now supports a wider range of archive formats.
  • Prompt and theme rendering improved, including better 24-bit color support.
  • Overall code quality and maintainability improved across modules.

Documentation

  • README updated with full function reference and configuration tables.
  • New and expanded docs in doc/ (CONTRIBUTING.md, FAQ.md, todo.md).
  • Historical releases imported from history.txt into this changelog.

[3.99.2-4_rc_2] — 2026-04-21

Fixed

  • prompt.sh — \$Last_Command in PS1 was escaped, preventing the exit code from ever appearing in the prompt (the local variable no longer exists when PS1 is rendered by bash). Removed the backslash so the value is embedded at set_prompt build time.
  • filefct.sh — file_stats() — a stray unconditional shift after esac doubled-shifted arguments already shifted by each case branch; successive options such as -H -d were silently skipped.
  • packages.sh — pkgs() — replaced the unreliable binary-presence test (command -v dpkg / rpm) with the new get_pkgmgr function. Also corrected a typo in the "no package manager" error message (avialable → available).
  • processes.sh — kt() — copy-paste error: usage error message read "Usage: ppg <string>" instead of "Usage: kt <pid>".

Added

  • packages.sh — get_pkgmgr() — new exported helper that detects the active package manager of the running distribution. Detection first reads /etc/os-release (ID then ID_LIKE), then falls back to a fixed-priority binary scan. Supported families: apt, dnf, yum, zypper, pacman, apk, portage, xbps, nix. Returns 1 when nothing is identified. Available to all future commands in packages.sh.

[3.99.1-4_rc_1] — 2026

Added

  • Theming system — load_theme in profile.d/prompt.sh loads .theme files from profile.d/themes/ (or a custom directory set via PROMPT_THEME_DIR). Theme files are parsed, not executed — no shell code ever runs from a theme.
  • Built-in themes — default, dark, light, solarized (24-bit true-colour), solarized-light (24-bit), monokai, monochrome, abyss, plasma, adwaita.
  • [prompt] section — PROMPT_THEME and PROMPT_THEME_DIR keys to select a theme; eleven PROMPT_COLOR_* keys for per-key overrides in profile.conf.
  • Standard colour variables as theme keys — theme files may also override the disp.sh colour variables (Black, Blue, On_IBlack, …) to remap the terminal palette used by ls, grep, and colour-aware tools.
  • Module configuration defaults — all modules now expose their hardcoded defaults as profile.conf keys: TAZ_*, UTAZ_*, EXPANDLIST_*, CLEAN_*, RMSPC_*, FINDBIG_*, RAIN_*, MATRIX_*, SSH_DEFAULT_OPT, GENPWD_*, PWDSCORE_*, BUSY_*, METEO_DEFAULT_CITY, DWL_*, MYEXTIP_*, PKGS_*, PPU_*, KU_*, UPDT_DEFAULT_BRANCH.
  • UPDT_DEFAULT_BRANCH — configures the git branch used by check_updates and profile_upgrade. Changing the key causes profile_upgrade to automatically switch the local checkout to the new branch and display a warning.
  • doc/ directory — CONTRIBUTING.md, FAQ.md, profile.conf.example (annotated template), todo.md.
  • .gitignore — profile.conf is now git-ignored so personal settings are never accidentally staged.

Changed

  • README §2 now explains how to create profile.conf from doc/profile.conf.example (new section 2.1 "Initial configuration").
  • README §4 updated with full module-defaults tables, theming reference, and a note about profile.conf being git-ignored.
  • Theme values no longer carry the export keyword (they are not shell variables, only data).

Security

  • load_theme uses a strict allowlist (no eval, no sourcing). Only PROMPT_COLOR_* keys and known disp.sh colour variable names are accepted. Values must match \$[A-Za-z_][A-Za-z0-9_]* or \\e\[[0-9;]*m; any other value is discarded with a warning.

[3.95.3-4_beta_3] — 2024

Added

  • Initial public release candidate series.
  • Core modules: compress, disp, filefct, fun, help, info, lang, net, packages, processes, prompt, pwd, rain, ssh, updates.
  • Bar-style prompt with time, command duration, and exit code.
  • taz / utaz archive helpers.
  • genpwd / pwdscore password tools.
  • matrix / rain screensavers.
  • profile_upgrade with git and archive download support.

Note: The section below was imported from history.txt to preserve pre-3.95.x-4_beta release notes.

Legacy releases (imported from history.txt)

[3.6.1] — 2026-03-05

  • Fix typo in compress.sh.

[3.6.0] — 2026-03-05

  • Improved utaz with broader multi-format support.
  • Introduced ppu and ppn.
  • Improved update system.

[3.5.0] — 2026-03-04

  • rain now has configurable speed and color.
  • showinfo adapted to fastfetch (in addition to neofetch).

[3.3.1] — 2022-02-24

  • Fixed version detection.
  • Added busy.
  • Fixed use of library functions before loading.

[3.3.0] — 2022-11-28

  • Initial version update support.
  • Changed versioning code.
  • Added installation path detection.

[3.2.3] — 2022-11-28

  • Improved README.

[3.2.2] — 2022-11-21

  • Fixed taz compression level parsing.
  • Fixed typo in dpkgs.

[3.2.1] — 2022-11-20

  • Fixed several messages.
  • Made dpkgs RPM-aware (initial support).
  • Removed version history from main script and reverted declaration order.
  • Added required license information in all files.
  • Completed LICENSE file.

[3.2.0] — 2022-11-18

  • Created disp command and integrated it across the codebase.

[3.1.1] — 2022-11-10

  • genpwd: added feasibility check for requested password constraints.

[3.1.0] — 2022-11-08

  • Added password generator.

[3.0.1] — 2022-11-07

  • Added concatenation option to rmspc.
  • Added ku.
  • Improved error handling in meteo.

[3.0.0] — 2022-08-27

  • Split code into several files/modules.
  • Added rain screensaver.

[2.8.2] — 2022-07-29

  • Added warning for non-bash users.

[2.8.1] — 2022-07-19

  • Cleanup, fixes and optimizations.

[2.8.0] — 2022-06-24

  • Added backtrace, error and settrace.
  • Bugfixes in showinfo.

[2.7.1] — 2022-06-22

  • Minor corrections.
  • Added help command.

[2.7.0] — 2022-06-21

  • Added isipv4 and isipv6, integrated into rmhost.
  • Removed broken Konsole save/restore support.

[2.6.3] — 2021-10-18

  • Changed PS1 to status-bar style.
  • Minor improvements.

[2.6.2] — 2021-02-26

  • Bugfix in taz for directories with trailing slash.

[2.6.1] — 2020-12-25

  • Added checks in rmhost.
  • Improved rmspc.
  • Created expandlist.

[2.6.0] — 2020-10-24

  • Added Konsole session save/restore.

[2.5.3] — 2020-09-11

  • Added aliases, improved code consistency and fixed typos.
  • Improved utaz, removed showdiskmap, removed remaining French text.
  • Added license information for future publication.

[2.5.2] — 2020-03-06

  • Sorted and improved aliases.

[2.5.1] — 2020-03-05

  • Language consistency fixes.
  • Added pigz support in taz.

[2.5.0] — 2020-03-03

  • Added taz and rmspc.
  • Renamed auzip to utaz and improved it.

[2.4.0] — 2020-03-02

  • Added auzip.

[2.3.2] — 2020-01-31

  • figlet: changed default font to ansi_shadow.

[2.3.1] — 2020-01-16

  • Bugfix: non-interactive shells were blocked by some functions.

[2.3.0] — 2020-01-08

  • Added figlet and neofetch as MOTD replacement.

[2.2.0] — 2019-12-16

  • Added showinfo.
  • First implementation of showdiskmap.

[2.1.2] — 2019-09-24

  • Bugfix in profile version display.

[2.1.1] — 2019-09-23

  • Bugfix in dpkgs.

[2.1.0] — 2018-09-16

  • Added rmhost, setc, setfr.
  • Improved locale management.

[2.0.1] — 2017-02-04

  • clean improvements (--shell).

[2.0.0] — 2015-10-24

  • Added advanced functions (clean, ssr, etc.).

[1.0.0] — 2013-02-16

  • Initial version.

[Initial fork]

Forked default Bash profile from Beyond Linux From Scratch by: