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
