# Change Log

All notable changes to the CAPS client library will be documented in this file.

## 2025.206 3.0.1

### Added

-   Stream ID check. Before sending data, the stream ID is checked to ensure
    that it meets the server requirements. Specical characters like '?' are
    not allowed.

## 2025.163 3.0.0

### Changed

-   Make session table item start and end time optional

## 2024.352 2.7.4

### Changed

-   Optimize package encoding

## 2024.226 2.7.3

### Fixed

-   Parse server output address correctly

## 2024.162 2.7.2

### Fixed

-   Do not crash when the journal file does not follow the format

## 2024.162 2.7.1

### Changed

-   Redirect log messages to SeisComP log by default

## 2024.151 2.7.0

### Added

-   Add plugin instance pointer to log messages

## 2023.184 2.6.0

### Added

-   More convenience push functions

## 2023.184 2.5.0

### Added

-   Direct API access to last acknowledged packet end time

## 2023.107 2.4.0

### Added

-   PluginApplication class logs CAPS connection settings

### Changed

-   Reworked connection handling to perfom better in poor network environments
-   Removed unnecessary debug output

## 2022.284 2.3.1

### Changed

-   Minor changes

## 2022-04-20 2.3.0

### Added

-   CAPS agent support

## 2022-04-20 2.2.0

### Added

-   API function to access internal packet buffer that keeps packets until
    they have been acknowledged by CAPS

## 2021-09-01 2.1.0

### Added

-   Extended plugin class by the possibility to dump **outgoing** RAW and MSEED
    packets to stdout. RAW data ouput is in SLIST format and MSEED packets are
    dumped as binary MSEED. Applications derived from the plugin application class
    can enable this feature with the command line option ``--dump-packets``.

## 2021-06-21 2.0.3

### Fixed

-   CAPS Python encoder factory ownership

## 2021-06-15 2.0.2

### Fixed

-   Broken uncompressed MSEED support

## 2021-05-10 2.0.1

### Fixed

-   Unit tests that work on 64-bit systems only

## 2021-05-10 2.0.0

### Added

-   Log status responses from server in plugin application
-   SSL and authentication support for plugin application.
    With this version the data output URL can be set with the
    config option ``output.address``. The formal definition of
    the field is: [[caps|capss]://][user:pass@]host[:port] e.g.

    ```script
    output.address = capss://caps:caps@localhost:18003
    ```

    The new output.address parameter superseds the output.host and
    output.port parameter of previous versions and takes precedence.
    The old parameters are kept for compatibility reasons but are
    marked as deprecated.

## 2021-04-21 1.0.0

### Changed

-   Set library version to 1.0.0

## 2021-02-16

### Added

-   Allow to set maximum allowed future end time via plugin API. In additon
    add commandline and config support to the plugin application class e.g.

    ```script
    output.maxFutureEndTime = 120
    ```

    By default the option is set to 120 seconds.

## 2020-12-14

### Added

-   Support to set miniSEED record length via API

## 2020-09-22

### Changed

-   Use last sample time as reference time for maximum future time check. Before
    we used the packet end time as reference time but this makes no sense in case
    of low sampled data.
-   So far we used the current time as start time if journal entries exceeded the
    maximum allowed future time. With this release we use the journal time no
    matter what its value but display a warning when the journal time is more than
    one day in the future.

## 2020-06-22

### Added

-   Python3 byte array support to any record push

## 2020-02-21

### Changed

-   Increase default timeout for acknowledgement messages from 5s to 60s

## 2019-09-24

### Fixed

-   Fix high load if packets could not be sent to CAPS. In that case the plugin
    automatically reconnects after some amount of time. If triggered under certain
    circumstances this delay was not in effect and caused unnecessarily high
    amount of connection attempts. Under some circumstances the plugin could have
    crashed due to a stack overflow.
-   The quit method has now the semantics to continue pushing packets as long
    as the connection is established and only abort in case of an error without
    attempting a reconnect.

## 2019-09-20

### Fixed

-   Fix error string if not all data could be sent to the server

## 2019-08-19

### Changed

-   Discard packets whose end time is more than 120 seconds before the system time.

## 2019-08-06

### Added

-   new config option ``output.addr``

### Fixed

-   ambiguous command line option ``-h``. With this version of the library the
    host and port can be set via the command line option ``--addr``.
-   wrong config option parsing

## 2019-08-05

### Fixed

-   seg fault in date time parser

## 2019-08-02

### Fixed

-   Hanging TCP connections. In case of the remote side does not shutdown cleanly
    the plugin did not notice that the connection is no longer available. With this
    version the plugin reconnects to the server when the TCP send buffer is full
    and tries to send all not acknowledged packets again.
-   Do not discard packets if the packet buffer is full. Instead we block until
    the server acknowledges some packets.

### Changed

-   The plugin application class checks whether the configured buffer size is
    below the minimum.

## 2019-07-05

### Changed

-   Ignore journal entries where the timestamp is more than 10 seconds
    before the system time.

## 2018-12-19

### Fixed

-   Read journal from file in plugin application.

## 2018-12-18

### Fixed

-   Do not reconnect if the plugin buffer is full. Instead of we try to read
    acknowledgements from the CAPS server until the plugin buffer is below the
    threshold.

## 2018-12-17

### Added

-   Support to retrieve status information e.g. the number of buffered bytes from
    plugin.

## 2018-09-06

### Changed

-   Enable more verbose logging for MSEED packets

## 2018-07-25

### Fixed

-   unset variable of the raw data record
-   trim function will return false in case of an unknown datatype

## 2018-05-30

### Fixed

-   Fixed unexpected closed SSL connections

## 2018-06-05

### Fixed

-   Fix RawDataRecord::setHeader

## 2018-05-16

### Fixed

-   RAW data end time calculation

## 2018-03-19

### Fixed

-   SSL support

## 2017-11-20

### Added

-   Float and double support for Steim encoders. All values will be converted
    implicitly to int 32 values.

## 2017-11-08

### Added

-   Timing quality parameter to push call. By default the timing quality is set
    to -1.

## 2017-11-07

### Fixed

-   Do not flush encoders after reconnect

## 2017-10-26

### Added

-   SSL support

## 2017-10-24

### Fixed

-   Packet synchronization error after reconnect
