Developer-Dashboard
view release on metacpan or search on metacpan
docs/pax-coverage-measurement.md documenting the mechanism.
4.55 2026-09-18
- DD-958: Platform.pm's resolve_runnable_file (lines 183-184) and
command_argv_for_path (line 226/227's Windows fallback) each had an
untested direction, on both the forced-Windows side and its natural
Linux counterpart - Devel::Cover's true/false columns track the
literal written condition, not its display-rewritten "unless" text.
Added 4 targeted test assertions to t/84-platform-coverage.t (2
forced via the project's established local $OS_NAME override, 2
natural-Linux counterparts); Platform.pm now 100.0 on all 4
Devel::Cover metrics. New SYSTEM-scoped page
docs/forced-windows-unit-tests.md documents the override convention.
4.54 2026-09-18
- DD-928: Zipper.pm's load_saved_ajax_code open()-failure branch now
carries a correct `# uncoverable branch true` annotation (it had
none), restoring 100.0 branch coverage - the failure path is only
reachable as a non-root user, and gate containers run as root.
Extends docs/uncoverable-annotations.md with the underlying
mechanism: Devel::Cover rewrites `EXPR or STATEMENT` as
`unless(EXPR){STATEMENT}`, inverting true/false from the naive
reading.
4.53 2026-09-18
- DD-953: measured PAX self-compiled vs interpreter speed for the 7
data-query CLI commands (jq/yq/tomq/propq/iniq/csvq/xmlq) against an
equivalent ~50,000-record fixture, in a developer-dashboard:latest
container - documented in docs/pax-alpine-and-runtime-speed-measured.md.
Finding: the compiled binary was slower on every command (1.2x-6.4x),
the opposite of the earlier dashboard-version benchmark - a real
parsing workload's own cost dominates the standalone binary's
unpacking overhead. No code changes; a measurement/documentation
ticket only.
4.52 2026-09-18
- DD-951: skills using Go now get per-layer module/build cache
isolation - `_exec_go_source` sets GOMODCACHE/GOCACHE to a skill
layer's own `local/go-cache/` directory whenever a sibling go.mod is
found, so two skills declaring different Go module versions never
share one global cache. Mirrors DD-823 (Java/Maven) and DD-824
(Python/venv). A skill with no go.mod is unaffected.
4.51 2026-09-18
- DD-946: `dashboard ask`'s direct-API backend (--claude, with a key
set) now runs a real Anthropic tool_use round-trip loop instead of a
single non-streaming POST, offering two read-only tools (read_file,
grep_repo) scoped to the current project root - closing the gap
where only the CLI-fallback path could answer genuinely
repo-specific questions. A plain question needing no repo search is
unchanged (one request, same shape as before).
4.50 2026-09-18
- DD-952: added Amazon Nova as a dashboard ask backend (--nova), against
Nova's own standalone REST endpoint (api.nova.amazon.com/v1/chat/
completions, bearer-token auth via NOVA_API_KEY) - the same direct-API
shape --claude already uses, not AWS Bedrock/SigV4.
4.49 2026-09-18
- DD-954: a skill's own cli/__init__.<ext> self-script now runs when
it is invoked with no subcommand at all - d2 <skill-name> (bare) and
d2 <skill>.<nested-skill> (dotted, when no explicit subcommand file
exists) both fall back to it, any extension. An explicit top-level or
subcommand always wins over the fallback.
4.48 2026-09-18
- DD-948: dashboard ask's CLI-fallback backend path (codex/copilot/gemini,
or claude with no API key set) now tees its child process's output
live to the caller's terminal instead of fully buffering it until the
process exits. Switched _run_cli from Capture::Tiny's capture{} to
tee{}. The direct-API path is unchanged (real streaming there needs
Anthropic SSE wiring, a separate, larger change).
4.47 2026-09-18
- DD-950: excluded a stray NYTProf profiling artifact (nytprof.out) from
the release tarball. dzil's GatherDir gathers from disk, not git, so an
untracked, ungitignored leftover file ships exactly like a real source
file - the same mechanism that let FIX.md leak into the 4.22 tarball
(DD-401). Found auditing DD-947's 4.46 build. Added dist.ini exclusion,
.gitignore entries for nytprof.out/nytprof/, and RED-then-GREEN test
coverage in t/15-release-metadata.t.
4.46 2026-09-18
- DD-947: extracted CollectorRunner.pm's command-execution cluster
(run_command, await_windows_command, spawn_windows_command,
record_command_pid, command_launcher_argv, command_pid_from_file,
await_command_pid, forward_command_signal, terminate_command_process,
exit_code_from_status) into a new sibling module,
Developer::Dashboard::CommandRunner - first cut toward DD-641's
1963-line oversized-module finding. Confirmed zero instance-state
($self->{...}) dependency in the 241-line cluster before moving it;
every original call site kept as a one-line forwarder so no existing
caller changed. CommandRunner.pm reaches 100.0 on all four
Devel::Cover metrics. CollectorRunner.pm drops from 1963 to 1754
lines.
4.45 2026-09-18
- DD-942: closed Ask.pm's pre-existing branch/condition coverage gap
(confirmed present before DD-938 touched the file: 99.2/89.4/77.7/100.0
stmt/branch/cond/sub). Added 52 new regression subtests to t/48-ask.t,
calling private helpers directly via $M->can() where run_ask's public
interface cannot reach a specific internal branch. Result:
100.0/98.5/96.8/100.0. Two residual lines are genuine Devel::Cover
tooling limitations, filed separately as DD-944. Also caught and fixed
a genuine regression mid-gate (t/168-permission-assertion-guards.t)
from an incorrect uid-based SKIP guard, rewritten to match this
project's established probe-then-restore permission-test pattern.
4.44 2026-09-18
( run in 0.582 second using v1.01-cache-2.11-cpan-16aabcbfbcb )