---------------------------
Major Changes
^^^^^^^^^^^^^
- fix: avoid deprecated 'fork', switch to queues & 'spawn'
- build: remove no longer needed 'setup.py' file
- build: add missing wheel dependency to dev installs
- build: add missing setuptools dependency to dev installs
- build: send build data over sockets to a local signing service
- test: add full coverage for '_paths.py'
- test: use new, custom, more efficient hypothesis strategies
- perf: store PackageSigner files as hexdigests to ease transmission
- refactor: update '_paths.py' style, names & logic structure
Minor Changes
^^^^^^^^^^^^^
- feat: add trial ciphertext<-->phrase steganographic tool
- feat: add a size argument to ByteIO (a)read methods
- build: bump dependencies versions & apply new ruff rules
- build: automate 'MANIFEST.in' & follow setuptools guide
- build: add ipython to dev installs to standardize & simplify environment setup
- docs: specify bool or None as ``__(a)exit__`` return type
- docs: fix inaccurate changelog message under v0.23.15
- docs(readme): include ``Slick256`` in online cipher description
- docs(readme): clean intro instructions & make test/dev section
- docs: fix incomplete docstring in 'cipher_interface.py'
- docs: fix docstring typos
- docs: improve docstring clarity
- docs: correct return type hint on test methods
- docs: add function name in not implemented warning message
- docs: reword salt misuse resistance docstrings & add citation
- docs: add return type hint on test fixtures
- docs: bump AGPLv3 license date range
- docs: correct 'test_paths.py' error messages
- docs: correct outdated '_paths.py' docstrings
- test: cover placeholder method in 'aos.py' module
- test: remove leftover usage of 'fork' processes
- refactor: fix concurrency type hints & unnecessary coupling
- refactor: bundle like-context exceptions into named constants
- refactor: extract names defined in function to file's config section
- refactor: use constants for static filenames instead of literals
- refactor: extract server socket init into a context manager
- refactor: call new functions for default inputs to cipher configs
- refactor: move test vectors into their own modules
- style: replace simple ternary ops with short-circuits