# Changelog

All notable changes to this project are documented in this file.

## 1.0.5 - 2026-09-29

### Fixed

- `stream(..., stop_on_error=True)` now rejects GRBL errors received while
  draining the final acknowledgements, including single-command jobs. It
  returns `False` without waiting for Idle or reporting successful completion,
  just as it does for errors received while waiting for buffer space.
- Error callbacks and the default `stop_on_error=False` behavior are unchanged.

## 1.0.4 - 2026-09-29

### Changed

- Documentation only: the README's Documentation list links each page on the
  documentation site, so readers on GitHub and PyPI land there. The code is the same as 1.0.3.

## 1.0.3 - 2026-09-29

### Changed

- Documentation only: the README becomes a short entrance to the documentation
  site at https://offerrall.github.io/pygrbl-streamer/, and `docs/overview.md`
  holds the introduction: supported controllers, tested machines, safety and the
  compatibility policy.
- New `docs/limitations.md` gathers the unsupported controllers, the AtomStack
  Atelier and Swift caveats, the final-drain error gap and job resumption.
- `RELEASING.md` moves to `docs/releasing.md`, with generic release steps.
- Every example uses `laser` and imports what it needs; the pages describe the
  current behavior without references to earlier versions, and the default
  connection and lazy streaming are each described once.
- `pyproject.toml`: a Documentation URL, Homepage pointing to the documentation
  site, a Changelog URL, Python 3.10 to 3.14 classifiers and a description that
  matches the README.
- The code is the same as 1.0.2.

## 1.0.2 - 2026-09-29

### Changed

- Metadata only: the distribution name is spelled `pygrbl-streamer`, PyPI's
  canonical form, in `pyproject.toml` and the documentation.
  `pip install pygrbl-streamer` and `import pygrbl_streamer` are unchanged; the
  code is the same as 1.0.1.

## 1.0.1 - 2026-09-29

### Changed

- Documentation only: shorter page titles in the README, the README title without
  the version, and the release notes for maintainers moved from `docs/` to
  `RELEASING.md`.

## 1.0.0 - 2026-09-17

### Added

- Stable public API with the existing 0.2.0 defaults and positional arguments.
- Optional keyword-only DTR/RTS levels and acknowledged initialization commands.
- Bounded connection retries, per-command initialization timeout and status
  timeout; handshake connections preserve alarm states without auto-unlock.
- Optional fresh-Idle confirmation for homing, sharing its timeout with the
  acknowledgement wait; homing and jobs are never automatically retried.
- Optional reset policy for `reconnect()`.

### Fixed

- Discard stale banners/status before opening a new connection.
- Always attempt to close the serial port even when setup or buffer cleanup
  fails; failed connection attempts and interrupts release the session.

## 0.2.0 - 2026-09-09

### Added

- `GrblStreamer(..., rx_buffer_size=128)` makes the controller receive-buffer
  capacity configurable per instance. Existing callers retain the conservative
  128-byte GRBL default, while controllers advertising larger buffers can keep
  more commands in flight without changing streaming semantics.
