# 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.0.0/),
and this project adheres to
[Semantic Versioning](https://github.com/AldaronLau/semver#a-guide-to-semver).

## [0.9.0] - 2021-01-05
### Added
 - **client** feature (WIP)
 - **server** feature (WIP)
 - **gui** feature (WIP)
 - **haptic** feature (WIP)
 - **random** feature and API
 - **timer** feature (WIP)
 - **usb** feature (WIP)
 - **audio** feature and API
 - **video** feature and API
 - `glue!()` macro.

### Changed
 - The **exec** feature is no longer enabled by default, so there are no
   default features.
 - **speaker** feature -> **speakers**
 - `Recorder` -> `Microphone`
 - `Player` -> `Speakers`
 - **draw** feature -> **graphics**
 - **file** feature -> **database**
 - **user** feature -> **info**
 - Completely re-did **input** module.
 - **journal** feature -> **log**
 - **gpio** feature -> **port**
 - **exec** feature -> **task** (Completely re-did API)
 - **time** feature -> **when**

### Removed
 - `S16LEx2` type from **microphone** and **speakers**
 - **accel** module.
 - **net** feature in favor of **client** and **server**
 - All re-exports to the root module.

## [0.8.0] - 2020-07-13
### Added
- Better documentation, examples compile
- Async support
- WASM speaker and microphone support
- "input" feature
- "net" feature
- Empty modules for unimplemented features

### Changed
- Redesigned the controller API to be event based using a message queue.
- Merged "controller" module & feature into "input"
- `info!`, `warn!` and `note!` are replaced with `dev!` and `out!`
- `graphics` module replaced with `draw` and `pixels`

### Fixed
- Not compiling with the newest version of rust (broken due to changes with
  `mem::size_of`)

## [0.7.0] - 2019-11-04
### Added
- Logging macros `info!()`, `warn!()` and `note!()`
- Web Assembly support for `user` feature, and logging.

### Changed
- Updated `whoami`

## [0.6.0] - 2019-10-25
### Added
- `aspect()` for getting aspect ratio

### Fixed
- All of warnings, including clippy warnings

### Changed
- Replaced instances with groups.

## [0.5.0] - 2019-08-02
### Added
- Toolbar
- `draw_graphic()` - for textures.
- `texture_coords()` - for texture atlas.
- `set_camera()` - for camera.
- `key()` - for getting keyboard input.

### Fixed
- `clock` feature not compiling.
- Examples not compiling

## [0.4.0] - 2019-07-07
### Added
- `graphics` feature and support for graphical user interfaces.
- `clock` feature and support for getting date and time.

## [0.3.0] - 2019-05-23
### Added
- `controllers()` which returns a `ControllerIter`.
- `Loop` and `loop_init!()`.  Together they handle the program's control flow.  It also makes it easier in the future to port to Android and other platforms that don't use `main()`.  Besides that, it's a nice abstraction that works similarly to Android activities.
- Multi-threaded support.  You should now be able to do IO calls from multiple threads.

### Removed
- `App` type.

### Changed
- Instead of `App` type everything is in a module, and must be enabled with a feature.  This makes it so you don't have to compile the parts of the project you don't need.

## [0.2.1] - 2019-05-13
### Fixed
- L & R triggers on controllers always returning 0.

## [0.2.0] - 2019-05-12
### Added
- Joystick / controller support with API for emulation (not complete yet).

## [0.1.0] - 2019-05-01
### Added
- Getting user information (Linux, Windows, MacOS).
- Playing / recording audio (Linux).
- Filesystem loading / saving ZIP files (Linux, Windows).