# Changelog

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

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

## [Unreleased]

### Removed

- Removed "repeat" primitive instruction's enum (planning config)

### Added

- New message type "autonomy". Long term plan is to integrate this as an object into the planning configuration schema, where if an operation has autonomy, the metadata, configurations, any instructions / default settings shall be within this message structure section.
- Additional_data field to platform_status to input any other data from a platform to be published
- Goal object in mission_plan message that consists of a GeoJSON feature (representing the part of primitive that is currently the goal of the given mission plan).
- A `partial` flag that indicates if a mission plan is a partial plan or the entire mission plan
- Added "informational" to enum for primitive's instruction enum (planning configuration)
- Options to primitives (under planning_configuration message) which is only a property when a primitive has an instruction of "follow" or "navigate_to"
- Validate message_ID matches uuid format
- Add definition of instruction_set message
- Added optional primitives to squad schema

### Changed

- Added "instruction" as required under the primitive schema (planning configuration)
- Refactor instructeion_set into platform_instruction_set
- Refactor mission_plan schema autonomy_engine_plan_ID oneOf
- Update all example messages with valid UUIDs
- Refactor action schema to accept geojson.Points
- Use geojson Point for platform_status
- Add waypoint to platform_status
- Updated header version to accept semver, branch or commit
- Store remote schemas as committed local files
  This prevents the live runtime loading untested changes
- Refactored planning_configuration message definition
  - Remove region_of_interest and exclusion_zones
  - Add primitives array of classified geojson Features
- Inject remote geojson schema definitions
- Use geojson Polygon instead of region_schema
- Upgraded openapi-spec-validator to latest release (0.7.1)
- Upgraded openapi-schema-validator to latest release (0.6.2)

## [v1.0.0] - 2024-08-28

### Changed

- Use discover to find all unit tests
- Run tests against current format definitions
- Test that formats match saved schema
- Run python and javascript tests in CI
- Refactor schema script to remove invalid definitions object automatically
- Refactor generate_schema_config script to output file on -f flag

### Fixed

- Add `--remove-orphans` to javascript CI test docker compose arguments

## [v0.2.0] - 2024-02-06

### Added

- New alert message definition
- Emergency flag in mission plan schemas
- Added additional battery and fuel fields to platform status for SPINE project

### Changed

- Updated README to run tests against JS dependencies

## [v0.1.0] - 2023-03-24

### Added

JSON schema definitions for the SoAR project
- outer wrapper MESSAGE definition
- header object
- payload object
  - acknowledgement
  - mission_plan (raw and encoded)
  - observation (raw and encoded)
  - platform_status (raw and encoded)
  - planning_configuration

Example messages matching the schema for each partner

[unreleased]: https://git.noc.ac.uk/communications-backbone-system/backbone-message-format/compare/v1.0.0...dev
[v1.0.0]: https://git.noc.ac.uk/communications-backbone-system/backbone-message-format/compare/v0.2.0...v1.0.0
[v0.2.0]: https://git.noc.ac.uk/communications-backbone-system/backbone-message-format/compare/v0.1.0...v0.2.0
[v0.1.0]: https://git.noc.ac.uk/communications-backbone-system/backbone-message-format/compare/9e6ce245...v0.1.0