New features:
- [Ax](https://ax.dev/) can now be used as a backend. This is opt-in for now, but will become the default in a future version. Documentation [here](https://aepsych.org/docs/ax_backend).
- Added `aepsych_database` as a command-line executable for performing database operations.
- Added [MultitaskGPRModel](https://github.com/facebookresearch/aepsych/blob/main/aepsych/models/multitask_regression.py#L12) and [IndependentMultitaskGPRModel](https://github.com/facebookresearch/aepsych/blob/main/aepsych/models/multitask_regression.py#L88) for offline analysis of multi-subject data.
- Added the [semi-parametric models](https://github.com/facebookresearch/aepsych/blob/main/aepsych/models/semi_p.py) from [Keeley et al., 2023](https://arxiv.org/abs/2302.01187). Tutorial [here](https://aepsych.org/tutorials/Semi_P_tutorial).
- Added ability to pre-generate trials asynchronously on the server by specifying `pregen_asks = True` in the config file.
- `default_mean_covar_factory` can now take `dim` directly as an argument instead of having to read it from a `Config`.
- Expanded the [tutorial](https://aepsych.org/docs/gp_intro) on Gaussian process active learning.
- Implemented an [info message](https://github.com/facebookresearch/aepsych/blob/main/aepsych/server/message_handlers/handle_info.py) that allows clients to query the server for info about its state.
- Added additional type hints and docstrings throughout the codebase.
- Updates to dependencies.
Bug fixes:
- Fixed bug that caused `BinaryClassificationGP` to calculate variance incorrectly in probability space.
- Removed redundant "model fitting" logs.
- Fixed a type error in `MonotonicThompsonSamplerGenerator`
- Fixed a shape error in `EpsilonGreedyGenerator`.
- Fixed a broken test in `test_model_query.py`.
Other changes:
- Removed versioned server messages since we now have versioned releases and refactored server messages to be helper functions instead of `AEPsychServer` methods.
- Updated example configs to suggest `EAVC` as the threshold-finding acquisition function instead of `MCLSE`.