Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: systemfsoftware/systemfsoftware
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: systemfsoftware/systemfsoftware
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: stryker-cli
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 12 commits
  • 63 files changed
  • 1 contributor

Commits on Aug 5, 2026

  1. build(stryker-js-core): add effect cli + printer peers

    adds @effect/cli ^0.77.0 to the default catalog and bumps effect to ^3.22.1
    with @effect/platform ^0.97.1. Per KTD9, runtime peers go to peerDependencies
    so consumers supply a single effect runtime. adds the attw script and the
    workspace attw-cli devDependency so the public-surface gate runs for this
    package
    ryanleecode committed Aug 5, 2026
    Configuration menu
    Copy the full SHA
    70bf981 View commit details
    Browse the repository at this point in the history
  2. build(stryker-js-core): restore tsconfig dev dependency

    U1 accidentally replaced the tsconfig devDependency with arethetypeswrong-cli,
    breaking the package typecheck gate. Restore it
    ryanleecode committed Aug 5, 2026
    Configuration menu
    Copy the full SHA
    86cc542 View commit details
    Browse the repository at this point in the history
  3. feat(stryker-js-core): port the cli surface from commander to effect cli

    Rewrites stryker-cli.ts as an @effect/cli command tree, keeping the commander
    parse characterizations: camelCase flag spellings, -m/-t/-b/-c aliases, comma
    split lists, space split node args, tri-state --cleanTempDir, numeric-or-string
    --concurrency, and omitted-option-absent merge semantics (KTD4). Removed flags
    (--files, --allowConsoleColors, --dashboard.*) and commands (init, serve,
    runServer) surface as unknown arguments (exit 2), flags match case-sensitively
    (KTD5), and bare/--help/--version exit 0. --survivors and --llms parse for U8
    and U11. bin/stryker.js boots via runStrykerCli (Runtime.makeRunMain, the seam
    U5 extends); the StrykerCli class export becomes runStrykerCli. Adds
    test/unit/cli-options.spec.ts pinning the whole surface
    ryanleecode committed Aug 5, 2026
    Configuration menu
    Copy the full SHA
    ef88142 View commit details
    Browse the repository at this point in the history
  4. feat(stryker-js-core): resolve output mode and gate the progress bar

    Adds resolveMode(): R4 precedence (explicit --format/--json flag, then
    STRYKER_MODE, then !stdout.isTTY, then AGENT non-empty, then the narrow
    CLAUDECODE/CODEX_SANDBOX tool-variable list, then human), returning the
    resolved mode plus the deciding signal for U4's envelope. No stdin
    condition (R4 reverted it). Mutually exclusive --format text + --json is
    a ValidationError. BroadcastReporter's non-TTY downgrade of 'progress' to
    'progress-append-only' is replaced by a progressEnabled gate resolved
    once at construction from the run's detection data; the broadcast call
    site suppresses the bar in human mode on a non-TTY stdout (AE1)
    ryanleecode committed Aug 5, 2026
    Configuration menu
    Copy the full SHA
    6b1bab1 View commit details
    Browse the repository at this point in the history
  5. feat(stryker-js-core): stream machine-mode progress as ndjson on stderr

    U7: a fifth surviving reporter ('progress-stream') writes one
    newline-delimited JSON object per event to stderr during machine-mode
    runs, so a caller watching a long run sees it advance instead of going
    silent. Rides the existing per-mutant event seam (onMutantTested /
    onMutationTestingPlanReady); inert in human mode. Writes go straight to
    process.stderr.write, never Console.error, so the U6 Console override
    cannot capture the stream. runId is a constructor arg the cli layer
    passes through, shared with the U4 verdict envelope; the plugin-registry
    path generates a fallback. U9 must not prune this reporter.
    ryanleecode committed Aug 5, 2026
    Configuration menu
    Copy the full SHA
    58a6903 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    b6ce771 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    f30a1a8 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    0769ea9 View commit details
    Browse the repository at this point in the history
  9. feat(stryker-js-core): remove legacy reporters and dead deps

    U9 of the agent-friendly CLI rebuild (R13, KTD10). Deletes the dots,
    event-recorder, progress-append-only, and dashboard reporters plus the
    ci-provider detection tree that only fed the dashboard reporter, the
    stryker init wizard (src/initializer/), and stryker-server.ts, whose only
    consumers were the removed init and runServer/serve commands. Prunes the
    reporter registry to the five survivors (clear-text, progress, html, json,
    progress-stream) and drops the five orphaned runtime dependencies
    (commander, @inquirer/prompts, json-rpc-2.0, mutation-server-protocol,
    typed-rest-client) from dependencies and the lockfile
    ryanleecode committed Aug 5, 2026
    Configuration menu
    Copy the full SHA
    ee71071 View commit details
    Browse the repository at this point in the history
  10. feat(stryker-js-core): re-test only mutants surviving a prior run

    Adds --survivors: reads the prior mutation report, admits the run only
    when resolved options, framework version and per-file source hashes all
    match, then restricts the mutant set to the recorded survivor spans
    
    Every rejection carries a remediation naming the full run to do first
    Zero survivors exits 0 without starting the pipeline or touching the
    report; machine mode emits the verdict envelope with a null score
    
    Negates the root reports/ ignore for test fixtures, which ship a prior
    mutation report as tracked input data
    ryanleecode committed Aug 5, 2026
    Configuration menu
    Copy the full SHA
    a8b9103 View commit details
    Browse the repository at this point in the history
  11. build(stryker-js-core): ignore attw rules that esm-only cannot pass

    U1 enrolled this package in the attw gate without the config every other
    ESM-only package here carries, so the gate failed on node10 resolution
    and CJS-resolves-to-ESM - two checks that cannot apply to a type:module
    package emitting .mjs
    ryanleecode committed Aug 5, 2026
    Configuration menu
    Copy the full SHA
    bb08e64 View commit details
    Browse the repository at this point in the history
  12. ci(repo): unset inherited git env so pre-push works in a worktree

    git exports GIT_DIR when it invokes a hook. In a linked worktree that
    names .git/worktrees/<name>, and turbo's SCM layer opens it as a file,
    dying with "I/O error: Is a directory (os error 21)" before any task
    runs. Every gate passed when the same command was run by hand, so the
    hook was unrunnable in all 18 worktrees while looking like a real
    failure
    ryanleecode committed Aug 5, 2026
    Configuration menu
    Copy the full SHA
    d823566 View commit details
    Browse the repository at this point in the history
Loading