Developer-Dashboard

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

    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 )