3.58 2026-05-06
- stamped dashboard-managed helper bodies with an explicit
`developer-dashboard-managed-helper-version` marker so installed hosts
can prove which helper build they actually have when staged helper
behavior drifts from the active tarball
- fixed Debian-family bash bootstrap installs and repairs so
dashboard-managed shell lines are kept above the standard
non-interactive `return` guards in `~/.bashrc`, including the Ubuntu
single-line `[ -z "$PS1" ] && return` form, which keeps
`dashboard ticket` tmux status commands working on installed hosts such
as `hp.local`
- taught `dashboard doctor` to audit and repair that misplaced
`~/.bashrc` bootstrap shape with `dashboard doctor --fix`
- fixed Windows `.cmd` and `.bat` command dispatch on Linux, WSL, and
packaged-install hosts so an extensionless local `cmd` helper found in
`PATH` is normalized back to `cmd.exe` instead of being treated as a
custom command processor
- taught `dashboard doctor` to audit staged helper drift under
`~/.developer-dashboard/cli/dd/`, report stale or missing
dashboard-managed helpers such as `_dashboard-core`, and restage them
with `dashboard doctor --fix` when the currently shipped helper assets
can repair the runtime
- added direct regression coverage for extensionless `cmd` shims, stale
helper staging, and shell bootstrap drift through both source-tree and
packaged-install paths
- fixed packaged helper asset discovery so tarball, PAUSE, and `cpanm`
install-test trees keep resolving `share/private-cli` from a stable
absolute module source path even after later `chdir` calls in
long-running test processes
- hardened the post-build smart-router two-stage Docker guard so one
transient upstream `cpanm` fetch or unpack failure is retried once
before the repository packaging gate is treated as broken
- fixed the installer docs so they match the real checkout/master
bootstrap behavior and the current shell-bootstrap repair workflow
3.45 2026-05-05
- fixed Unix-like `install.sh` so blank streamed installs no longer fall
back to the stale `Developer::Dashboard` CPAN target; when no explicit
`DD_INSTALL_CPAN_TARGET` override is set they now install the current
checkout directly or clone GitHub `master` into a temporary checkout
for `curl ... | sh` style bootstraps
- added `tmux` to the shipped `aptfile`, `apkfile`, `dnfile`, and
`brewfile` bootstrap package sets because `dashboard ticket` is a
first-party tmux workflow
- fixed blank Ubuntu bootstrap coverage so Debian-family installer docs
and tests now prove the extra XS build header requirement for the live
`cpanm` dependency chain instead of silently assuming the base image
already ships it
3.43 2026-05-05
- fixed managed helper staging so upgraded home runtimes remove
dashboard-owned older flat helpers from `~/.developer-dashboard/cli/`
and keep the active built-in helper surface converged on
`~/.developer-dashboard/cli/dd/`
- added direct staged-helper regression coverage so the managed
`dashboard shell bash` helper itself must emit the ticket tmux status
bootstrap after staging, not just the repo checkout command path
- fixed the blank-environment integration image so host-built tarball
installs now include the native CPAN build packages required by
XML::Parser, Net::SSLeay, and related transitive prerequisites
- switched the blank-environment integration image to a real Debian
Chromium runtime so browser smoke checks no longer die on the Ubuntu
snap-wrapper launcher stub
- fixed the host-side blank-environment launcher so it rebuilds the
integration image from the current Dockerfile before running the
installed-runtime smoke, preventing stale cached images from hiding
browser-runtime fixes
3.42 2026-05-05
- fixed blank-mac `curl ... | sh` bootstrap so `install.sh` now
bootstraps Homebrew automatically before reading the repo `brewfile`
and continuing the normal macOS package flow
- fixed Linux runtime lifecycle isolation so `dashboard restart` and
`dashboard stop` no longer adopt or kill Developer Dashboard web and
collector pids that belong to a different pid namespace such as a
sibling Docker container
- added Docker-style rolling detail lines to `dashboard skills install`
so long-running dependency manifests keep the epic task board visible
while streaming the newest manifest output under the active step
- fixed tmux ticket-session prompt/status behavior so existing and new
`dashboard ticket` tmux sessions suppress inline prompt indicators,
move the full indicator strip into the first row of a two-line bottom
tmux status block, keep tmux's normal indexed session/window row
beneath it, preserve TT-backed percentage indicators and live
collector values, refresh automatically through tmux status updates,
and leave ordinary tmux sessions on the normal inline prompt path
3.40 2026-05-05
- moved prompt indicators out of inline shell prompts and into tmux
`status-right` whenever the generated shell bootstrap runs inside tmux,
while keeping the existing prompt indicators outside tmux
- added a dedicated `dashboard ps1 --mode tmux-status` formatter and a
`--no-indicators` prompt path so bash, zsh, POSIX sh, and PowerShell
all share the same tmux-aware indicator behavior
3.37 2026-05-02
- added an explicit InternalCLI coverage guard for installed layouts where
File::ShareDir already returns the private-cli root, keeping the numeric
Devel::Cover gate at 100 percent after the Windows bootstrap fixes
- added a Windows smoke guard that re-enters a fresh profile-loaded
PowerShell session after install.ps1 so the streamed bootstrap must
resolve `dashboard`, print `dashboard version`, and run
`dashboard logs`
3.36 2026-05-02
- fixed the generated PowerShell profile bootstrap so fresh Windows
sessions no longer try to pass the multi-line `dashboard shell ps`
output array straight into `Invoke-Expression`
- fixed the streamed Windows installer so `irm .../install.ps1 | iex`
now writes a self-contained profile block that can load `dashboard`,
`local::lib`, and the PowerShell prompt bootstrap in future sessions
3.35 2026-05-02
- fixed the installed private helper asset lookup on Windows so
`dashboard init` no longer stops at an empty
`MSWin32-x64-multi-thread/auto/Developer/Dashboard/private-cli`
directory when the real shipped helper assets live under
`auto/share/dist/Developer-Dashboard/private-cli`
- fixed the streamed Windows checkout bootstrap so a blank host can now
finish `dashboard init` after `irm .../install.ps1 | iex`, stage the
home helper runtime, and continue into the generated PowerShell shell
bootstrap cleanly
3.34 2026-05-02
- fixed the installed private helper asset lookup so Windows local::lib
installs no longer look for `_dashboard-core` under the wrong arch-auto
path when the shared dist asset root actually lives under
`auto/share/dist/Developer-Dashboard/private-cli`
- fixed the streamed PowerShell bootstrap so `install.ps1` now runs
`dashboard init` before activating `dashboard shell ps` in the current
shell, ensuring the staged home helper runtime exists before the
bootstrap asks for PowerShell shell wiring
- fixed the generated PowerShell profile guard so future sessions only ask
`dashboard shell ps` for bootstrap output after the staged home helper
runtime exists under `~/.developer-dashboard/cli/dd/_dashboard-core`
3.33 2026-05-01
- fixed the packaged install metadata so blank Windows hosts no longer
pull test-only dependencies such as `Plack::Test` and `Test::Pod`
during `cpanm --notest Developer::Dashboard`, which previously dragged
the `Test::SharedFork` chain into the streamed PowerShell bootstrap and
broke fresh installs
- fixed the streamed Windows checkout bootstrap so it now installs from
the current GitHub checkout shape cleanly on Windows, including the
Windows-safe `Makefile.PL` version path and the self-healing private
helper staging path used by lightweight commands such as `dashboard
encode`
- fixed the PowerShell bootstrap so `install.ps1` now sets the CurrentUser
execution policy to `RemoteSigned` before writing the generated profile,
allowing new PowerShell sessions to load the `dashboard shell ps`
bootstrap instead of failing with `running scripts is disabled`
- fixed the generated PowerShell profile block so `PERL_MB_OPT` is now
written with format-string quoting instead of nested literal quotes that
broke new sessions with `Unexpected token '$ddInstallRoot""'`
- replaced the repository PSGI test dependency on `Plack::Test` with a
local harness under `t/lib` so the release metadata can stay focused on
real runtime requirements while the web route coverage still stays
intact
- corrected the install bootstrap docs so the Windows examples use the
`install.ps1` entrypoint and describe the lighter packaged install path
3.30 2026-05-01
- fixed the streamed Windows bootstrap so native `winget` command output
is written to the host terminal instead of leaking into typed helper
return values, which previously broke the Strawberry Perl path hand-off
during `irm .../install.ps1 | iex`
- fixed the Windows Perl bootstrap so `install.ps1` no longer tries to
self-install `App::cpanminus` while the downloaded `cpanm` bootstrap
script is still running, avoiding the Windows file-replacement failure
that broke the `local::lib` setup step on blank hosts
- documented the exact streamed PowerShell bootstrap command as
`irm https://raw.githubusercontent.com/manif3station/developer-dashboard/refs/heads/master/install.ps1 | iex`
and updated the Windows install docs to describe the standalone
`cpanmin.us` plus `local::lib` bootstrap flow accurately
3.28 2026-05-01
- renamed the Windows checkout bootstrap entrypoint from `install.ps` to
`install.ps1` so the shipped filename matches normal PowerShell script
expectations while keeping the streamed `irm ... | iex` flow explicit
- hardened the Windows bootstrap winget path so package installs are
pinned to the community `winget` source and the installer performs one
`winget source reset --force` plus source refresh retry before failing
with a clear HRESULT-style exit code
3.27 2026-05-01
- added a repo-root `install.ps1` bootstrap entrypoint for Windows
PowerShell hosts so blank-machine installs can bootstrap Git,
Strawberry Perl, Node.js, user-space Perl tooling, and the dashboard
runtime from a checkout or a streamed `irm ... | iex` flow
- updated the install bootstrap docs, release metadata guards, and
shipped tarball asset checks so the Windows bootstrap path is tracked
alongside the existing Unix-like `install.sh` flow
3.26 2026-04-30
- changed the blank-container tarball installation gate to use
`cpanm --notest` after the normal source-tree test and coverage gates
have already passed, so packaged dependency resolution and installed
runtime behavior stay verified without rerunning the full tarball test
suite
- updated the blank-environment integration runner, release docs, and
integration guardrails so the post-build `t/44-smart-router-two-stage.t`
check and the broader tarball integration flow both follow the same
`cpanm --notest` policy
3.25 2026-04-29
- fixed the installed Dancer web stack so the public `/app`, `/ajax`,
`/js`, `/css`, and `/others` routes now reuse the backend smart route
dispatcher instead of bypassing skill-local namespace resolution
- added PSGI coverage that proves top-level and nested skill-local app,
ajax, js, css, and others routes all work through the real installed
web route layer
- added the post-build `t/44-smart-router-two-stage.t` guard and wired the
blank-environment host integration launcher to run it immediately after
`dzil build` so extracted-dashboard routing regressions are caught at the
tarball stage instead of only in source-tree tests
- fixed helper-login blank-editor rendering so a helper user who lands on
the root editor path still sees helper chrome, including the logout link
and helper username, during installed integration runs
3.24 2026-04-29
- added skill-local web namespaces for `dashboards/ajax/*` and
`dashboards/public/{js,css,others}/*` so installed skills can serve
saved Ajax handlers and public assets without copying them into the
shared dashboard roots
- added longest-prefix route resolution so `/app`, `/ajax`, `/js`,
`/css`, and `/others` can distinguish skill prefixes from normal nested
global paths and can also resolve nested child skills under
`skills/<repo>/...`
- kept nested global saved-bookmark assets and saved Ajax files working
even when their leading path segments match an installed skill name
3.23 2026-04-29
- fixed the README source-of-truth process so the checked-in README.md is
regenerated from the canonical Developer::Dashboard POD instead of being
hand-edited independently
- added a checkout sync helper and release-metadata guard so README.md
must exactly match the generated Markdown output from the canonical POD
- fixed the JS fast-check wrapper so npm update-notifier chatter does not
break the stderr-clean fuzz gate on newer npm releases
3.22 2026-04-29
- regenerated README.md as real Markdown instead of accidental POD content
- added a release-metadata guard so README.md cannot silently regress back
into POD format
3.21 2026-04-29
- removed the final stale API Dashboard POD example from the public
dashboard entrypoint so the extracted API and SQL dashboards are now
fully pruned from core code, docs, POD, tests, and shipped assets
3.20 2026-04-29
- fixed bare dashboard skills install so a first successful install from
the home root ddfile is reported as installed even when the skill ships
no .env VERSION metadata, instead of showing unknown with blank version
markers
- fixed named collector stop summaries so dashboard stop collector NAME
still reports the stopped collector row when the managed loop is alive
but its process title has not become observable yet
3.19 2026-04-29
- extracted optional browser workspaces out of the core distribution,
leaving the core runtime seeded-page set and manuals focused on the
features that still ship in Developer Dashboard itself
- removed core seeded-page handling, runtime bootstrap wiring, release
metadata assertions, and shipped browser tests for the extracted
optional browser workspaces
- moved the extracted page assets, dedicated tests, and supporting
notes out of the core repository tree so the default core tarball no
longer carries that optional feature set
3.19 2026-04-29
- fixed dashboard stop and restart so they follow the saved managed
listener port back to the real serving pid when the live web process
renames itself into the underlying starman master listener shape
- fixed minimal Docker lifecycle control so container stop/restart runs no
longer lose ownership of the active listener after startup