<!-- markdownlint-disable-file MD024 -->
# Changelog
This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
> Major version zero (0.y.z) is for initial development. Anything MAY change at
any time. The public API SHOULD NOT be considered stable.
## [v0.6.1] - 2024-04-02
### Changed
* Allow `:telemetry_metrics` v1.0.0 and later now that it's been released
* Fix `Logger.warn` deprecations
* Fix binary format validation issue due to map sort order change in Erlang 26.
## [v0.6.0] - 2022-09-09
The breaking change in Mobius is the removal of remote reporting and the
functionality built around that such as configuring a remote reporter to send
a metric report at some interval.
If this functionality is something you still want, you can provide a GenServer
that executes your reporting code at some interval. This will allow the maximum
flexibility to how you want your software to report metrics.
### Changed
* Remove `Mobius.RemoteReporter`
* Remove `:remote_reporter` configuration from `Mobius.arg()`
* Remove `:remote_reporter_interval` configuration from `Mobius.arg()`
* Remove `Mobius.RemoteReporters.LoggerReporter`
### Added
* `Mobius.Event`
* `Mobius.EventLog`
* `Mobius.Clock`
* `Mobius.get_latest_metrics/1`
* `Mobius.get_latest_events/1`
* `:events` option to `Mobius.arg()`
* `:event_log_size` option to `Mobius.arg()`
* `:clock` option to `Mobius.arg()`
* `:session` option to `Mobius.arg()`
* `Mobius.session()`
## [v0.5.1] - 2022-06-01
### Added
- Added the ability for a remote reporter to response with
`{:error, reason, new_state}`.
## [v0.5.0] - 2022-05-31
Breaking changes for three functions in the `Mobius.Exports` module:
1. `Mobius.Exports.series/4`
1. `Mobius.Exports.metrics/4`
1. `Mobius.Exports.plot/4`
If you are not directly calling these functions in your code you're safe to upgrade.
The first two used to return either `{:ok, results}` or `{:error, reason}` but
now they will only return their result. For `Mobius.Exports.series/4` the return
value is now `[integer()]` and for `Mobius.Exports.metrics/4` the return type is
now `[Mobius.metric()]`. `Mobius.Exports.plot/4` still returns `:ok` on success,
but can now return `{:error, UnsupportedMetricError.t()}`.
### Changed
* `Mobius.Exports.series/4` return type was
`{:ok, [integer()]} | {:error, UnsupportedMetricError.t()}` and now is
`[integer()]`.
* `Mobius.Exports.metrics/4` return type was
`{:ok, [Mobius.metric()]} | {:error, UnsupportedMetricError.t()}` and now is
`[Mobius.metric()]`
* `Mobius.Exports.plot/4` was just `:ok` but now is
`:ok | {:error, UnsupportedMetricError.t()}`
### Added
* `Mobius.RemoteReporter` behaviour to allow for reporting metrics to a remote
server.
* Add `:remote_reporter` and `:remote_report_interval` options to the
`Mobius.arg()` type.
* Support for specifying which summary metric you want to export. (@ewildgoose)
* Support for summary metrics types in some exports. (@ewildgoose)
* Add standard deviation calculation to the summary metric type. (@ewildgoose)
* New `Mobius.Exports.export_metric_type()` that allows for specifying the
summary metric type.
### Misc
* Update `ex_doc` to `v.0.28.4`
* Update `telemetry` to `v1.1.0`
* Fix up typos (@kianmeng)
## [v0.4.0] - 2022-03-25
### Changed
* `Mobius.plot/3` is now `Mobius.Exports.plot/4`
* `Mobius.to_csv/3` is now `Mobius.Exports.csv/4`
* `Mobius.filter_metrics/3` is now `Mobius.Exports.metrics/4`
* `Mobius.name()` is now `Mobius.instance()`
* Mobius functions that need to know the name of the mobius instance now
expect `:mobius_instance` and not `:name`
* `Mobius.metric_name()` is no longer a list of `atoms()` but is now the metric
name as a string
* `Mobius.RRD` internal metric format
* `Mobius.RRD.insert/3` typespec now expects `[Mobius.metric()]` as the last
parameter
### Removed
* `Mobius.filter_opt()` type
* `Mobius.csv_opt()` type
* `Mobius.plot_opt()` type
* `Mobius.query_opts/1` function
* `Mobius.to_csv/3` function
* `Mobius.plot/3` function
* `Mobius.filter_metrics/3` function
* `Mobius.make_bundle/2` function (use `Mobius.mbf/1` instead)
* `Mobius.Bundle` module
* `Mobius.record()` type
### Added
* `Mobius.Exports` module for APIs concerning retrieving historical data in
various formats
* `Mobius.Exports.csv/4` generates a CSV either as a string, to the console, or
to a file
* `Mobius.Exports.series/4` generates a series for historical data
* `Mobius.Exports.metrics/4` retrieves the raw historical metric data
* `Mobius.Exports.plot/4` generates a line plot to the console
* `Mobius.Exports.mbf/1` generates a binary that contains all current metrics
* `Mobius.Exports.parse_mbf/1` parses a binary that is in the Mobius Binary Format
* `Mobius.Exports.UnsupportedMetricError`
* `Mobius.Exports.MBFParseError`
* `Mobius.FileError`
* `:name` field to `Mobius.metric()` type
## [v0.3.7] - 2022-03-16
This release brings in a bunch of new features and bug fixes. Along with
basic maintenance like dependency updates and documentation improvements
(@ewildgoose).
### Added
* Create, save, and extract tar files that contain metric data, see
`Mobius.Bundles` and `Mobius.make_bundle/2` for more information.
* `Mobius.filter_metrics/3` to filter for desired metrics to enable the
metrics to be consumed externally (@ewildgoose)
* `Mobius.save/1` to manually save the state of the metric data for Mobius
(@ewildgoose)
* `:autosave_interval` option to Mobius to enable a saving data at the given
interval (@ewildgoose)
### Fixes
* Unit conversion not working correctly (@ewildgoose)
* Error handling for when the `:persistence_path` is missing (@ewildgoose)
* Error handling when there is no data to plot (@ewildgoose)
* Crash when plotting an array of identical values (@ewildgoose)
* Correct off by one error when plotting (@ewildgoose)
## [v0.3.6] - 2022-01-25
### Added
* Support for `Telemetry.Metrics.Summary` metric type
## [v0.3.5] - 2021-12-2
### Fixes
* Fix crash when initializing metrics table when the ETS file cannot be read (@jfcloutier)
## [v0.3.4] - 2021-11-15
### Fixes
* Fix crash when a history file is unreadable during initialization (@mdwaud)
## [v0.3.3] - 2021-10-20
### Fixes
* Not able to pass a path for persistence that contains non-existing sub
directories. Thank you [LostKobrakai](https://github.com/LostKobrakai).
## [v0.3.2] - 2021-09-22
### Added
* Support for `Telemetry.Metrics.Sum` type
* Support for filtering CSV records by type with `:type` option
## [v0.3.1] - 2021-09-08
### Added
* Plot over the last `x` seconds via the `:last` plot option
* Plot from an absolute time via the `:from` plot option
* Plot to an absolute time via the `:to` plot option
* Print or save metric time series via `Mobius.to_csv/3`
* Remove tracking a metric by dropping it from the metric list passed to Mobius
### Changed
* `Mobius.plot/3` will only show the last 3 minutes of data by default
## [v0.3.0] - 2021-8-19
### Changed
* Deleted `Mobius.Charts` module. The functions in this module are now located
in the `Mobius` module.
### Removed
* Support for specifying resolutions.
## [v0.2.0] - 2021-8-03
### Added
* `Mobius.Charts` module
* Persistence of historical information on graceful shutdown
* Ability to specify time resolutions for plots
### Changed
* Move `Moblus.plot/0` and `Mobius.info/0` to `Mobius.Charts` module
## v0.1.0 - 2021-7-16
Initial release!
[v0.6.1]: https://github.com/mattludwigs/mobius/compare/v0.6.0...v0.6.1
[v0.6.0]: https://github.com/mattludwigs/mobius/compare/v0.5.1...v0.6.0
[v0.5.1]: https://github.com/mattludwigs/mobius/compare/v0.5.0...v0.5.1
[v0.5.0]: https://github.com/mattludwigs/mobius/compare/v0.4.0...v0.5.0
[v0.4.0]: https://github.com/mattludwigs/mobius/compare/v0.3.7...v0.4.0
[v0.3.7]: https://github.com/mattludwigs/mobius/compare/v0.3.6...v0.3.7
[v0.3.6]: https://github.com/mattludwigs/mobius/compare/v0.3.5...v0.3.6
[v0.3.5]: https://github.com/mattludwigs/mobius/compare/v0.3.4...v0.3.5
[v0.3.4]: https://github.com/mattludwigs/mobius/compare/v0.3.3...v0.3.4
[v0.3.3]: https://github.com/mattludwigs/mobius/compare/v0.3.2...v0.3.3
[v0.3.2]: https://github.com/mattludwigs/mobius/compare/v0.3.1...v0.3.2
[v0.3.1]: https://github.com/mattludwigs/mobius/compare/v0.3.0...v0.3.1
[v0.3.0]: https://github.com/mattludwigs/mobius/compare/v0.2.0...v0.3.0
[v0.2.0]: https://github.com/mattludwigs/mobius/compare/v0.1.0...v0.2.0