All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.1.0] - 2026-07-10
Added
- Initial release of AshDyan.
dyanDSL extension for declaring analyzable fields on Ash resources.- Domain-level
dyanregistry viaAshDyan.Domain. - Runtime analysis engine (
AshDyan.run/1,2) supporting:- frequency / group-by counts
- numeric aggregates (sum, avg, min, max, count, count_distinct, stddev, variance, median)
- time bucketing
- percentiles
- histograms
- In-memory aggregation bounded by
max_limit,max_group_by, andquery_timeout. - Capability check API (
AshDyan.supports?/2) for data-layer limits. - Structured errors via
AshDyan.Errorwith stablereasonatoms. - Chart adapter (
AshDyan.Charts.to_chartjs/1). - Documentation guides (
guides/usage.md,guides/design.md).
Changed
- Removed the shipped Phoenix/Channel/gen_api adapter modules
(
AshDyan.Adapters.*). AshDyan is now fully standalone — noplugdependency at compile time. Delivery layers are documented as copy-paste snippets (see README "Building an adapter") rather than versioned APIs. :sumnow rejectsnilvalues before reducing (matching every other aggregate), so a column with anilno longer raisesArithmeticError.AshDyan.Engine.apply_filters/2documents that filters are parsed internally viaAsh.Filter.parse/2(notfilter_input) so thedyanwhitelist stays the security boundary.AshDyan.Info.analyzable_field/3typespec now includes:histogram.