# Changelog All notable changes to this project will be documented in this file. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). Versions follow `MAJOR.MINOR.PATCH-REVISION_STAGE_N` (e.g. `3.99.1-4_rc_1`). --- ## [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 "` instead of `"Usage: kt "`. ### 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 * James Robertson * Dagmar d'Surreal