Release History
This page tracks released versions of WorkBench along with the notable changes
in each release. Dates follow the YYYY-MM-DD format.
0.1.1 (2026-04-18)
Bug fixes
Fixes Issue-15: The default auto-generated
workbench_OnNewwas creating the bench file at a path relative to the current working directory instead of insideWORKBENCH_HOME._wb_compose_codewas passingresourceNameas both arguments to_wb_compose_initcode; the second argument must be the absoluteresourceFilepath, which is what the generatedworkbench_OnNewuses to buildmkdir -pandtouch.wb n <benchName>now correctly creates$WORKBENCH_HOME/<benchName>.benchwhen no overridingworkbench_OnNewis defined in a shelf or rcfile.Fixes Issue-11: When
WORKBENCH_HOMEsits underneath the current directory, the root shelf is no longer sourced twice during the hierarchical sourcing of shelves.
Enhancements
Resolves Issue-13: The logic for creating a new bench has been moved into the default
workbench_OnNewfunction. This allows the behaviour ofwb nto be overridden from a shelf or rcfile, so users can attach their own bench-creation workflow (e.g., templated starter files) without having to bypasswb.
Tests
Added a regression test for Issue-15 that asserts
wb nwith the defaultworkbench_OnNewcreates the bench file underWORKBENCH_HOMEand does not leak a relative path into the current working directory.
0.1.0 (2019-02-28)
Initial public release of WorkBench. Highlights:
Hierarchical environment manager for *nix shells. A workbench is composed by layering shell code from shelves found at each directory level within
WORKBENCH_HOME, followed by a bench file that overrides all shelves.Three execution modes exposed through the CLI:
wb a— activate a workbench in a new interactive subshell viaWORKBENCH_ACTIVATE_FUNC(default:workbench_OnActivate).wb r— run a command from a workbench in the current shell viaWORKBENCH_RUN_FUNC(default:workbench_OnRun).wb n— create a new bench viaWORKBENCH_NEW_FUNC(default:workbench_OnNew).
Shelf and bench file operations through
wb sandwb b(list, show path, run a command on the underlying file, with-n/--newand-y/--yesswitches).WORKBENCH_RCsupport, with$HOME/.workbenchrcauto-sourced when present.workbench_pre_execute_hookfor user-defined checks run before every workbench execution (resolves Issue-7).Security: paths are validated with
realpathto prevent directory traversal outside ofWORKBENCH_HOME(resolves Issue-3).WORKBENCH_ALLOW_INSECURE_PATHdisables this check for environments without GNU Coreutils.WORKBENCH_CHAINis exported to each workbench and lists the chain of sourced files (shelves followed by the bench).WORKBENCH_EXEC_MODEis exported and carries the invoking command (a|r|n).WORKBENCH_SHELF_FILEandWORKBENCH_BENCH_EXTNare injected into each workbench.Removed deactivation as a built-in feature (resolves Issue-5). Exit hooks can be installed by overriding
exitinside the bench if required.Bash completion script included under
completion/.Demo scripts under
demo/(Go workspaces example) and an asciinema intro.