# 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).


## [v0.5.0] - unreleased

This release doesn't add much new functionality, but represents a major restructuring 
of the code base. Specifically, it removes the Agents.jl dependency and changes the 
way the species definition macros work and are used.

### Added

- `SimulationModel` type, extended by `AgricultureModel` struct

- `@create` macro defines a special phase function that is called when an individual
  animal is created (at birth or on model initialisation)
  
- functions (and associated macros) to replace Agents.jl functionality:
  - `move!()` and `walk!()` 
  - `nearby_ids()`, `nearby_animals()`, `countanimals()`, `neighbours()`
  - `directionto()`, `distanceto()`, `randomdirection()`
  - `nagents()`, `killallanimals!()`

- `@here`

- large logo and model structure diagram

- Changelog

### Changed

- `SimulationModel` replaces `AgentBasedModel`

- Species definition macros revamped:
  - `@species` now only defines parameters and variables and creates a mutable struct
  - `@phase` must now be defined in the top-level code and creates a global function
  - `@initialise` renamed to `@populate`, must also be called in the top-level code
  - `initindividual()` renamed to `create!()`
  
- Skylark, Wolpertinger, and Wyvern updated to match the new macros

- requires Julia 1.10

### Deprecated

### Removed

- Agents.jl dependency (including `AgentBasedModel` and functions for adding/moving/removing agents)

- `countanimals()` and `@countanimals()`

### Fixed


## [v0.4.1] - 2023-11-14

*Wrote tests for skylark migration -> made graphics output format configurable*

### Added

- initial version of the Skylark species

- small Jena map

- animal individuals keep track of their parents' IDs

- several new functions and macros for animals

- installation instructions for Windows

### Changed

- graphics output is more configurable


## [v0.4.0] - 2023-10-28

*Refactored makieplots.jl -> Wrote tests for skylark migration*


### Added

- initialisation functions for individuals (not just species)

- migration function / migrant pool for animals that disappear from the landscape during winter

- skylark migration

### Changed

- online documentation was expanded and restructured

- nature macros moved to a separate file


*Started changelog at this point, earlier versions are not included.*

<!-- Template

## [Unreleased] - <date>

<comments>

### Added

### Changed

### Deprecated

### Removed

### Fixed

-->