# Changes in catlfish 0.9.0-dev

## Features

- Configuration for selecting database backend added.
- Tool for parsing benchmarking output and generating HTML added.

## Improvements

- Merge-backup is now sending in chunks, improving performance.

# Changes in version 0.8.0 - 2015-09-21

## Incompatible changes

- The file format for persistent storage of log entries has
  changed. catlfish-0.8.0 is unable to read a database created by all
  previous versions. Previous versions are unable to read a database
  created by 0.8.0.

## Features

- Library call for verification of entries added, used by plop.
- New config parameter 'mmd' (maximum merge delay in seconds)
  added. Used to determine if an STH is fresh. Default, if not
  configured, is 86400, equals 24 hours (closes CATLFISH-51).
- New config group 'ratelimits' added (closes CATLFISH-52).
- Verification of leaf data when read from disk (closes CATLFISH-50).
- A new program, tools/storagegc.py, updates the lastverifiednewentry
  file for storage nodes to use in fetchnewentries (closes
  CATLFISH-54).
- Test suite is now verifying correct precert handling too.

## Bug fixes

- A bug with merging root certs, i.e. lacking ExtraData has been fixed
  (closes CATLFISH-45).
- Merge now fsyncs the logorder file (closes CATLFISH-46).
- A chain returned from the log (get-entries) now always contains a
  known root cert (closes CATLFISH-55).
- Extra data for precerts returned from the log is now conformant with
  RFC6962 (closes CATLFISH-56).

## Code cleanup

- Dialyzer clean.

# Changes in version 0.7.0 - 2015-04-25

## Features

- Support for secondary merge nodes added.
- HSM support verified to work with SoftHSMv2 and one real HSM.

# Changes in version 0.6.0 - 2015-04-13

## Features

- Pre-cert handling and get-entry-and-proof implemented. Now fully
  RFC6962 protocol compliant.
- Submitted X.509 certificates and their chains are now validated.
- Application split into frontend, storage, signing and merge nodes.
  Docker packaging added for running them.
- Tools for merging, submitting certs and verifying SCT's added. This
  is a separate code base from catlfish and plop.
- A config compiler was added making it possible to generate Erlang
  syntax configuration for a complex system from simpler yaml files.
- SCT caching added, not enabled by default.

## Internal bigger changes

- Add Erlang release management and a more controlled start process.
- Use mochiweb for serving httpd (replacing inets) and json encoding
  and decoding (replacing jiffy).
- Add system and unit tests.
- catlfish/plop interface clean up.
- Use lager for logging and hackney for http client.

# Changes in version 0.1.1 - 2014-09-20

catlfish version 0.1.1 fixes a major bug in add-chain decoding and
implements get-entry-and-proof.

# catlfish version 0.1.0 "PoC" - 2014-09-15

catlfish version 0.1.0 is the proof of concept release.

## Known bugs and shortcomings

- Knows nothing about x509. Accepts any data. v1/get-roots always
  returns the empty list.
- v1/add-pre-chain is not implemented.
- v1/get-entry-and-proof is not implemented.
- HTTP status codes are 200 for errors. They should be 400.