# Changelog

All notable changes and version updates will be documented in this file.

## [2.0.19] - 2026-03-13

- Remove ws dependency. WebSocket connections can use a compatible
  constructor passed to WebSocketConnection.connect() when needed.

- ClientConnection: Do not log unsubscribe errors when the connection
  has been closed (CloseError).

- TypeScript: Add name property to error class declarations.

## [2.0.18] - 2026-03-11

- ClientConnection: Add command duration for UDP. Set expected duration
  on the last command when the device needs time to process.

- Connection: Make set_keepalive_interval idempotent when called
  multiple times with the same interval.

- printDevice: Add --progress.

- fetchDeviceContent: Handle BigInt and OcaStatus.BadMethod.

- AbstractUdpConnection: Fix retry logic.

## [2.0.17] - 2025-12-02

- Connection: Do not send keepalive after close.

- fetchDeviceContent: Handle BigInt data in JSON output.

- Refactor UDP command retry handling; batch commands and avoid spurious
  timeouts with large write buffers.

## [2.0.15] - 2025-11-26

- Property: Fix and test alias lookup for renamed properties (e.g. 2023).

- Refactor UDP support: connection attempt can be aborted with AbortSignal;
  DNS lookup configurable for IPv4 or IPv6.

- Events: Do not throw from removeEventHandler (fixes cleanup with
  removeAllEventHandlers).

- OCP1/OcaInterval: Fix template class decoder.

## [2.0.9] - 2025-11-25

- AbstractUdpConnection: Close socket on failure when device does not
  respond with keepalive in time.

## [2.0.8] - 2025-11-24

- RemoteDevice: Fix EV2 detection when implementations return status
  codes other than NotImplemented for new EV2 methods.

- wait_for_keepalive: Handle error in unsubscribe.

## [2.0.7] - 2025-11-18

- OcaInterval: Fix OCP.1 encoder definition.

## [2.0.6] - 2025-11-12

- OcaInterval: Fix duplicate import.

## [2.0.5] - 2025-11-12

- TypeScript: Use explicit import paths for moduleResolution=nodenext.

- Remove deprecated types from AES70-2018.

## [2.0.4] - 2025-10-24

- ClientConnection: Add wait_for_keepalive to wait for a single keepalive
  from the device.

- Connection: Warn when keepalive interval is large (common ms vs seconds
  mistake).

## [2.0.3] - 2025-10-09

- Fix missing inout parameters in generated OCC model.

## [2.0.2] - 2025-10-07

- NotificationError: Fix payload parsing.

- BaseEvent: Fix error handling.

- PropertySync: Implement aliases so properties are available by alias.

## [2.0.1] - 2025-10-07

- PropertySync: Use observeProperty.

- Introduce CloseError and TimeoutError classes; emit them on close and
  timeout. Suppress unhandled close error warning.

## [2.0.0] - 2025-10-07

- Updates to AES70-2024
  This includes many new datatypes and control classes. It also includes
  changes APIs, especially around event handling. The main change is that
  event subscriptions now expect a second callback which can be used to
  receive error/cancellation events. They were introduced in aes70-2024
  to signal e.g. object deletion.

## [1.6.1] - 2025-05-06

- TCPConnection.connect: Add connectSignal to abort
  connection attempts.

- Encode arguments earlier. This means that when calling
  a remove oca method with invalid arguments, and error
  is thrown right away. This helps with debugging user
  errors.

- Add typescript declarations for ObjectBase.

## [1.6.0] - 2025-01-30

- Add stack debug feature to RemoteDevice

- Add support for OcaPolynomialFilter property
  getters and setters.

- Add PropertyObserver feature

- Make Arguments type iterable. This allows to
  use destructuring syntax.

- printDevice: Support udp

## [1.5.4] - 2025-01-16

- Add --json argument to printDevice tool

## [1.5.3] - 2024-06-29

- Fixed an error in keepalive handling and timeout detection.

## [1.5.2] - 2023-10-17

- Fixed an error in how duplicate role names were handled in get_role_map()
  which could lead to an infinite loop.

## [1.5.1] - 2022-03-07

- Fixed a small error in the typescript exports.

## [1.5.0] - 2022-03-07

- Changed the export structure and removed explicit export definitions
  from package.json.

- Added correct typescript declarations for the browser export. This export
  can be imported using `aes70/src/index.browser`.

- Improved some error handling and recovery when connections are being
  closed.

## [1.4.1] - 2022-03-05

- Add typescript declarations for WebSocketConnection

- Raise an 'error' event on AES70 parsing errors in non-udp connections.

- Hand the error object from 'errors' events in WebSocketConnections to the
  application

- Fixed the type of Values in OcaPositionDescriptors. It was previously
  implemented as a Float32, while it should be Float32[6].

## [1.4] - 2022-12-07

- Change the signature of events: Events are now emitted as specified in the
  aes70 standard with a single argument which is the corresponding event data
  struct.

- Fix the encoding of OcaMediaConnectorElement. It was - incorrectly - encoded
  as a single byte.

- Fix typescript declarations of OcaManagerDefaultObjectNumbers

- Introduce explicit types for bitsets for the typescript declarations.

## [1.3.8] - 2022-09-28

- Split UDP Connection into an abstract implementation and a concrete one
  to be used with NodeJS.

## [1.3.7] - 2022-06-26

- Fixed a bug in the testsuite which could lead tests to spuriously fail if they
  run too long.
- Introduce an optional callback based variant for all remote methods in control
  classes.
- UDPConnection: Improve the estimation of the time a command has been sent.
  This can prevent commands from failing spuriously in situations in which the
  send queue is very long.
- Corrected some control class method attributes which were incorrect in the
  standards documents.

## [1.3.6] - 2022-03-13

- Add conditional 'exports' entry for NodeJS and
  'default' for browser environments
- Add wildcard 'exports' entry for files in './src'
- Add 'exports' entry for AES70.es5.js
- Fix handling of incoming notifications without
  parameter data. This bug was triggered by the
  OcaIdentificationSensor.Identify event.

## [1.3.5] - 2022-01-17

- Fix OcaLibrary.GetVolume() signature

## [1.3.4] - 2021-10-04

- Add OCP1 parser to exports as './OCP1'

## [1.3.3] - 2021-08-30

- Fix WebSocket connection under nodejs
- Add index.js to 'exports' as '.'

## [1.3.2] - 2021-08-12

- Fixed some keepalive and close handling errors in
  UDPConnection
- Added new message generator implementation which
  merges PDUs into larger messages
- Improve UDP command retry logic to handle situations
  where many commands are queued in a burst. Previously,
  command could time out while they were still buffered
- Add explicit 'exports' to package.json

## [1.3.0] - 2021-08-02

- Added TypeScript declaration files
- Generate documentation using sphinx-js

## [1.2.0] - 2021-06-06

- Added new OCP.1 implementation
- Fixed encoding of OcaDBr type
- Added eslint subproject
- Deprecate non module version of npm module

## [1.1.15] - 2020-07-29

- Added missing shebang to bin/printDevice.js

## [1.1.14] - 2020-07-29

- Fixed utf8 encoder in NodeJS

## [1.1.13] - 2020-07-13

- Fixed encoding bug in STRING typ
- Fixed encoding of OcaDBr

## [1.1.12] - 2020-03-07

- Added missing OcaUint64Sensor

## [1.1.11] - 2020-02-12

- Included es6 module src in the npm package

## [1.1.10] - 2020-02-07

- Removed some debugging

## [1.1.9] - 2020-02-07

- Allow configuring the maximum number of bytes per writes
  for all connections. This can be useful for devices which
  have limited network buffer space

## [1.1.8] - 2020-02-06

- Handle decoding errors incoming data in UDP connections gracefully

## [1.1.5] - 2019-11-29

- Handle decoding errors for response payloads gracefully

## [1.1.4] - 2019-10-26

- Fixed two bugs in unicode handling of OcaString encoders
- Better error handling when decoding paremeter data

## [1.1.3] - 2019-07-13

- Renamed some getters/setters to match the corresponding property types

## [1.1.2] - 2019-05-14

### Fixed
- Fixed a bug in define_custom_class when using complex
  property types.

### Fixed
- Fixed a bug in define_custom_class

## [1.1.1] - 2019-05-14

### Fixed
- Fixed a bug in define_custom_class

## [1.1.0] - 2019-05-14

### Added

- Added an API for defining custom classes. This can be used to implement
  proprietary classes which are not part of the AES70 standard.

## [1.0.1] - 2019-04-27

### Added
- More documentation
- A new intake from the updated specification
- Added more options to make UDP connections
  reliable in situations of packet loss

### Fixed
- updated npm dependencies
- better handling of promise rejections
- (more) complete cleanup code when calling
  Dispose on e.g. events

## [1.0.0] - 2019-01-03

### Added
- Initial release based on AES70-2018
