# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.0.0b8] - 2026-03-19

### Added

- `headstage_global_amp_settle` parameter to `StimParams` model for headstage-level amplifier settle control.

### Changed

- Refactored `CurateClient` initialization and internal protocol execution logic (added progress bars for curation tasks).
- Improved documentation structure and configuration for the MkDocs site.

## [0.0.0b7] - 2026-03-19

### Added

- MkDocs documentation site with `mkdocstrings` API reference, GitHub Actions workflow for build and deployment.

### Fixed

- Site positions now converted from proto units to microns in the domain model.

## [0.0.0b6] - 2026-03-18

### Added

- `BaseClient` class for shared gRPC service logic; `AllegoClient`, `CurateClient`, and `VidereClient` now inherit from it.
- `CurateClient.slice_time()` and `CurateClient.downsample()` methods.
- `CurateClient.link_data_file()` with support for `Path` objects and protocol execution progress bar.

### Fixed

- `MAX_PB_MSG_SIZE_BYTES` set to unlimited; channel options type corrected.

## [0.0.0b5] - 2026-03-18

### Added

- `AllegoClient.get_signals()` and `VidereClient.get_signals()` for signal data retrieval.
- `FlexTimeRange` and `FlexSignalSpec` type aliases with Pydantic runtime coercion support.

### Changed

- Flat client API: all methods directly on client classes, no sub-clients.
- Auto-discovery of server UUID via `_try_server_uuid`.
- Time range and signal specification refactored to use `FlexTimeRange` / `FlexSignalSpec`.
- PyPI publishing automated via GitHub Actions; pre-push validation hook added.

## [0.0.0b4] - 2026-03-16

### Changed

- Restructured package layout and public exports (`refactor: file structure and exports`).
- Version now managed via `importlib.metadata`; removed `_version.py`.

## [0.0.0b3] - 2026-03-05

### Added

- Recording configuration management: models, converters, and `AllegoClient` service methods.

## [0.0.0b2] - 2026-03-05

### Added

- Channel metadata retrieval (`AllegoClient.get_channel_metadata()`).
- Stimulation parameter models and converters, including `StimParams`, enums, and proto integration.
- Stim keypress trigger control and stimulation step support.
- Stimulation parameter hypercube generator with safety tests.

## [0.0.0b1] - 2026-02-20

### Added

- Initial beta release.
- `AllegoClient` with: `healthcheck`, `get_status`, `set_stream_state`, `set_record_state`, `restart`, `set_stim_params`, `set_trigger_control`.
- Zero-config authentication via `AuthInterceptor`.
- Core domain models: status, stream state, record state, stimulation parameters.
- Strict mypy typing, Pydantic v2 models, gRPC transport layer.
- Proto-driven type safety architecture with `_converters/` / `_services/` layer separation.
