Files
profile/doc/todo.md
2026-04-21 15:24:04 +02:00

5.2 KiB
Executable File

profile — to-do list

Items marked [easy], [medium], or [hard] give a rough effort hint. Items marked [breaking] would change existing behaviour and require a version-bump.


Shell / compatibility

  • ZSH compatibility layer — most functions work already; the remaining blockers are local -A (no associative arrays in ZSH without typeset -A) and local -n namerefs. A thin compatibility shim would open the project to ZSH users. [hard]
  • Bash completion — add a profile.d/completion/ directory and write _profile_upgrade, _taz, _utaz, _meteo, etc. completions so that <Tab> works on all public functions. [medium]

Prompt & theming

  • Git branch in prompt — show the current branch name (and dirty indicator) in the PS1 bar when inside a Git repository. Should be gated behind a [prompt] config key so it can be disabled. [medium]
  • Virtual-env / conda indicator — detect $VIRTUAL_ENV / $CONDA_DEFAULT_ENV and display the name in the prompt bar. [easy]
  • True-colour terminal auto-detection — query $COLORTERM and $TERM at load time; automatically fall back from a 24-bit theme to its 16-colour equivalent when the terminal does not support true colour. [medium]
  • True-colour variants of other themes — create monokai-tc.theme, abyss-tc.theme, etc. using the same \e[38;2;R;G;Bm approach as the Solarized themes. [easy] (per theme)
  • Theme preview command — add a theme_preview (or profile_theme) function that renders a colour swatch and a sample prompt line for the currently loaded theme, so users can evaluate themes without reloading the session. [medium]
  • load_theme — DEFAULTCOL rebuild — after overriding DEFAULTFG and DEFAULTBG, automatically recompute DEFAULTCOL from the new values instead of requiring the theme file to set it explicitly. [easy]

Module improvements

compress

  • taz progress bar — show a pv / dd-based progress indicator when compressing large trees, gated behind a -p flag. [medium]
  • utaz integrity check — run tar -tOf / unzip -t / 7z t before extracting and abort if the archive is corrupt. [easy]

filefct

  • findbig / findzero / finddeadfd integration — optionally use fd instead of find when available for faster traversal. [easy]
  • file_stats — human-readable totals — add --human flag to emit sizes in K/M/G instead of bytes. [easy]

info

  • showinfo fallback — when neither neofetch nor fastfetch is installed, print a minimal sysinfo block (hostname, OS, kernel, uptime, CPU, RAM) using pure Bash + /proc. [medium]

net

  • dwl resume support — pass -C - to curl / --continue-at - to wget for interrupted downloads; gate behind a -r flag. [easy]
  • myextip multiple providers — fall back to a secondary URL (configurable via MYEXTIP_FALLBACK_URL) when the primary times out. [easy]

processes

  • ku dry-run flag — add -n / --dry-run to print what would be killed without acting. [easy]

pwd

  • genpwd passphrase mode — add -w / --words N to generate word-based passphrases (diceware-style) from /usr/share/dict/words. [medium]

ssh

  • SSH agent management — add ssh_agent_start / ssh_agent_stop helpers that start a persistent ssh-agent, add configured keys, and survive re-login via a socket stored in ~/.ssh/agent.env. [medium]
  • rmhost glob support — allow rmhost '*.example.com' to remove all matching entries in one call. [easy]

updates

  • Automatic update check age — store a timestamp in ~/.cache/profile_last_check; skip the network request in check_updates -q if the last check was less than UPDT_CHECK_INTERVAL hours ago (configurable, default 24). [medium]
  • Changelog display — after a successful profile_upgrade, fetch and display CHANGELOG.md entries newer than the previously installed version. [medium]

Infrastructure

  • Test suite — add a test/ directory with bats (Bash Automated Testing System) unit tests for pure functions (expandlist, genpwd, pwdscore, isipv4, isipv6, parse_conf, load_theme, …). Target for CI. [hard]
  • CI pipeline — Gitea Actions (or similar) job that runs shellcheck and the bats suite on every push. [medium]
  • profile_status function — print a diagnostic summary: installed version, active theme, loaded modules, detected Bash version, interactive / login shell flags, and profile.conf path. [easy]
  • profile_uninstall function — remove the source line from ~/.bashrc / ~/.profile and optionally delete the install directory, with a dry-run mode. [medium]
  • disp syslog integration — add a DISP_SYSLOG=1 config key that additionally pipes E/W messages to logger. [easy]
  • XDG base-dir support — honour $XDG_CONFIG_HOME as an alternative location for profile.conf so users can keep ~ tidy. [medium] [breaking]