Changelog
=========

Version 0.2.1
-------------

- First release published to PyPI. Identical in content to 0.2.0, which
  was tagged but not published because the release pipeline was not yet
  configured.

Version 0.2.0
-------------

- ``GVCPClient.discover()`` now sweeps every host network interface (via
  psutil), sending global and per-subnet broadcasts, so cameras on secondary
  NICs and USB-to-GigE adapters are found by default.
- Discovery results now include the camera ``mac``.
- Added ``GVCPClient.force_ip()`` to assign an IP to a camera by MAC
  (GVCP FORCEIP), for re-homing wrong-subnet cameras.
- ``psutil`` is now a required dependency.
- Discovery results now include ``interface_ip``, the host interface the
  camera replied on, so vendor drivers can bind the correct local interface
  when connecting.
- Added ``GVSPReceiver.reset_resend_stats()`` to clear per-stream resend
  counters between downloads.
- ``force_ip()`` is now available as a top-level ``pyGigEVision.force_ip``
  and sweeps all network interfaces by default; accepts an optional
  ``interface_ip`` argument to restrict the sweep to one interface.
- ``pyGigEVision.standard`` is now documented as a public submodule.
- GenICam XML download now accepts bare-hex ``FIRST_URL`` fields emitted by
  some cameras (previously raised an error); READMEM reads are 4-byte aligned
  per the GigE Vision spec.
- GVSP frames returned by the receiver are now always writable (previously
  some assembled frames were read-only).
- Frame metadata now includes a ``complete`` flag indicating whether all
  expected packets arrived for that frame.
- Added a ``py.typed`` marker (PEP 561) so downstream type checkers consume
  the inline type annotations directly.
- CI now gates the PyPI publish workflow on tests passing and adds a
  Sphinx ``-W`` docs-build check.

Version 0.1.1
-------------

- Adopt sdypy package template conventions: flat layout, hatchling
  build, sphinx_book_theme docs on ReadTheDocs, manual changelog,
  version-sync release script.
- Add full Sphinx documentation with API reference at
  https://pygigevision.readthedocs.io.
- Add three vendor-neutral examples in ``examples/``: discover,
  bootstrap and XML download, grab one frame.
- Add ``CONTRIBUTING.rst`` and this changelog.
- Switch CI lint from flake8 to ruff (strict superset, includes
  formatter).
- Add Windows to the CI test matrix alongside Ubuntu (the protocol
  library's primary user platform).
- Polish: NumPy-style docstrings and complete type hints across the
  public surface.
- No public API changes; consumers of ``pyGigEVision 0.1.0`` continue
  to work unchanged.

Version 0.1.0
-------------

- Initial release. Pure-Python implementation of the GigE Vision
  protocol layer: GVCP control client, GVSP streaming receiver,
  GigE Vision standard register constants, GenICam XML download
  helper, optional ``bootstrap()`` convenience.
- 52 unit tests passing across Python 3.10–3.13 on Ubuntu and Windows.
- Tag-only private release; not published to PyPI.
