Changelog
All notable changes to the Znuny Development Environment will be documented in this file.
[UNRELEASED] - YYYY-MM-DD
Added
- Shared Selenium Chrome (
zd selenium start) onznuny-network(hostnameselenium, port 4444). Opt-inENABLE_SELENIUM=ymakes instance startup writeSeleniumTestsConfigandTestHTTPHostnameso browser unit tests can run. - Selenium Docker health check:
znuny-seleniumis healthy whenhttp://localhost:4444/statusreportsready. - Dashboard services block, visually separate from instances, lists database containers and Selenium with start / stop / restart.
- Document WSL bind-mount ownership:
zd startmaps containerwww-datatoHOST_UID/HOST_GIDso hostgit pullworks without a manualchown.
Changed
- Selenium noVNC no longer asks for the image default password
secret(SE_VNC_NO_PASSWORD=1). Recreate the container withzd selenium startso a runningznuny-seleniumpicks it up. - Leave the clone target before
rm -rf/git cloneso a fresh checkout does not fail withUnable to read current working directorywhen the previous framework directory was the shell cwd.
Fixed
- Create the container user
znunywithuseradd --non-uniqueso it really shares UID/GID withwww-data. Previouslyuseraddaborted withUID 33 is not uniqueand theadduser --systemfallback assigned UID 100, which chowned the bind-mounted framework to an unrelated host account (e.g.syslogon WSL) untilSetPermissions.plswitched it towww-data. Existing containers are realigned on start. - Map instance
www-datato the host developer UID (HOST_UID/HOST_GIDfromzd start) so Linux/WSL bind mounts stay writable for Git. Existing compose files pick this up via the instance env file; new templates pass the variables explicitly.
[1.0.0] - 2026-08-14
Added
- Multi-instance Docker environment: run several Znuny frameworks in parallel via
znuny-dev.sh/zd - Multi-database support per instance: MariaDB, MySQL, or PostgreSQL
- Instance modes: shared DB (default) or dedicated DB + network per instance
- Automatic HTTP port assignment (
BASE_PORT, default 10000+) and per-instance Compose generation - Setup flow:
setup-all,setup-status,setup-env,setup-alias, framework / tools / packages / Compose - Instance lifecycle: create, remove, start, stop, restart, build, status (
--json), logs, shell, console - Global
zdalias with shell tab-completion (bash/zsh) - Host overrides via
configs/(instance/my.env,framework/Config.pminjected on container start) - Module-Tools integration: link/unlink packages and tools, dbinstall/codeinstall, install/uninstall
- Developer tools: Fred, ZnunyCodePolicy (link helpers included)
zd random-data-insertfor seed data on new instances- Local web dashboard (
zd dashboard, defaulthttp://127.0.0.1:9999/) with host opener for folder/IDE actions - Docs:
docs/usage.md,docs/dashboard.md;zd help/zd examples/zd version - Built-in test suite entry (
zd test) and GitHub Actions lint/unittest workflows