Skip to content

v0.1.3

Choose a tag to compare

@knipknap knipknap released this 25 Sep 00:04
· 1 commit to main since this release

Fixed

  • Job error attribution race: after a GRBL error halted a job, the
    emergency cancel's safety shutdown could race into the alarm state and
    overwrite the recorded error with a secondary error:9 ("Commands
    Locked"). The first error recorded now wins, so consumers reliably see
    the root-cause failure instead of a teardown side effect.
  • Secondary errors during teardown no longer break recovery: they still
    resolve pending interactive command futures and still trigger the job
    halt — only the redundant state mutation is skipped.
  • test_error_halts_stream was flaky on slow runners: an emergency soft
    reset racing in-flight motion legitimately leaves the machine
    alarm-locked (real Grbl behaves the same). The test now recovers with
    $X and waits for the status poller to report Idle before starting
    the next job.

Added

  • init_logging(filter, path) binding: Rust-side session diagnostics
    (stall detection, liveness, unexpected device lines) now reach stderr
    or a dedicated log file instead of being silently dropped when no
    logger is installed. The raydriver run CLI gains --log-file.
  • Terminal job errors are published through the device state
    (state.error): run() resolves normally even on failure, so the
    state is the only way consumers can detect a failed job. Protocol
    errors keep their proper GRBL error codes; a stale error is cleared
    on the next job start.
  • Newline-terminated, rate-limited progress output when stdout is not a
    TTY, so redirected log output never interleaves with the progress
    line.

Tooling

  • Type checking is now enforced: pyright runs over python/ and
    tests/ in CI, and a .pre-commit-config.yaml (ruff + pyright) was
    added. Generated stubs were fixed along the way — parser functions
    previously landed in the root stub, where they do not exist at
    runtime, leaving raydriver.grbl.parser untyped.
  • CI simplified to a plain four-platform test matrix
    (ubuntu, windows, macos-15-intel, macos-15).

Full changelog: v0.1.2...v0.1.3