# Change Log
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased]

## [0.13.1] - 2024-08-16
### Fixed
- Fix podman/docker container_ref trailing newline ([#265](https://github.com/ManageIQ/floe/pull/265))

### Changed
- Improve type check for States.Hash ([#261](https://github.com/ManageIQ/floe/pull/261))
- Use Numeric over Integer || Float ([#264](https://github.com/ManageIQ/floe/pull/264))
- In ChoiceRule::Data, parse compare key and variable ([#257](https://github.com/ManageIQ/floe/pull/257))

## [0.13.0] - 2024-08-12
### Added
- Choice rule payload validation path ([#253](https://github.com/ManageIQ/floe/pull/253))
- Intrinsics JsonToString and StringToJson ([#256](https://github.com/ManageIQ/floe/pull/256))
- Add States.Format intrinsic function ([#258](https://github.com/ManageIQ/floe/pull/258))
- Intrinsics States.JsonMerge ([#255](https://github.com/ManageIQ/floe/pull/255))
- Enable support for Hashes in States.Hash ([#260](https://github.com/ManageIQ/floe/pull/260))

## [0.12.0] - 2024-07-31
### Added
- Set Floe.logger.level if DEBUG env var set ([#234](https://github.com/ManageIQ/floe/pull/234))
- Add InstrinsicFunction foundation + States.Array, States.UUID ([#194](https://github.com/ManageIQ/floe/pull/194))
- Evaluate IntrinsicFunctions from PayloadTemplate ([#236](https://github.com/ManageIQ/floe/pull/236))
- Add more intrinsic functions ([#242](https://github.com/ManageIQ/floe/pull/242))
- Add State#cause_path, error_path ([#249](https://github.com/ManageIQ/floe/pull/249))
- Validate Catcher Next ([#250](https://github.com/ManageIQ/floe/pull/250))
- Add spec/supports ([#248](https://github.com/ManageIQ/floe/pull/248))

### Fixed
- Handle non-hash input/output values ([#214](https://github.com/ManageIQ/floe/pull/214))
- Fix Input/Output handling for Pass, Choice, Succeed states ([#225](https://github.com/ManageIQ/floe/pull/225))
- Wrap Parslet::ParseFailed errors as Floe::InvalidWorkflowError ([#235](https://github.com/ManageIQ/floe/pull/235))
- Fix edge cases with States.Array ([#237](https://github.com/ManageIQ/floe/pull/237))
- Fix sporadic test failure with Wait state ([#243](https://github.com/ManageIQ/floe/pull/243))
- Fix invalid container names after normalizing ([#252](https://github.com/ManageIQ/floe/pull/252))

### Changed
- Extract ErrorMatcherMixin from Catch and Retry ([#186](https://github.com/ManageIQ/floe/pull/186))
- Output should be JSON ([#230](https://github.com/ManageIQ/floe/pull/230))
- Normalize functions to all take arguments ([#238](https://github.com/ManageIQ/floe/pull/238))
- Pass full path name to State.new for better errors ([#229](https://github.com/ManageIQ/floe/pull/229))
- Validate that state machine input is valid JSON ([#227](https://github.com/ManageIQ/floe/pull/227))
- Move the Parslet parse into initialize so that invalid function definition will fail on workflow load ([#245](https://github.com/ManageIQ/floe/pull/245))

## [0.11.3] - 2024-06-20
### Fixed
- ResultPath=$ replaces complete output ([#199](https://github.com/ManageIQ/floe/pull/199))
- Fix retrier backoff values ([#200](https://github.com/ManageIQ/floe/pull/200))
- Fix Retry issues ([#202](https://github.com/ManageIQ/floe/pull/202))
- Add Apache-2.0 license ([#217](https://github.com/ManageIQ/floe/pull/217))

### Changed
- Update gemspec summary ([#205](https://github.com/ManageIQ/floe/pull/205))
- Simpler State#long_name ([#204](https://github.com/ManageIQ/floe/pull/204))
- State only modifies Context#state - prep for Map/Parallel ([#206](https://github.com/ManageIQ/floe/pull/206))
- Set StateHistory in Workflow not State ([#211](https://github.com/ManageIQ/floe/pull/211))
- Make Runner#wait optional ([#190](https://github.com/ManageIQ/floe/pull/190))
- Pass credentials around with context ([#203](https://github.com/ManageIQ/floe/pull/203))
- Pass context to State without workflow ([#216](https://github.com/ManageIQ/floe/pull/216))
- Move the guts of the CLI into a class for easy testing ([#220](https://github.com/ManageIQ/floe/pull/220))

### Added
- Set State PreviousStateGuid in StateHistory ([#208](https://github.com/ManageIQ/floe/pull/208))
- Add a codeclimate config file ([#224](https://github.com/ManageIQ/floe/pull/224))
- Add an Execution unique ID to Context ([#226](https://github.com/ManageIQ/floe/pull/226))

## [0.11.2] - 2024-05-24
### Fixed
- Output now based upon raw input not effective input ([#191](https://github.com/ManageIQ/floe/pull/191))
- Fix error raised on invalid resource scheme ([#195](https://github.com/ManageIQ/floe/pull/195))

## [0.11.1] - 2024-05-20
### Fixed
- Fix issue where a failed state can leave a workflow in "running" ([#182](https://github.com/ManageIQ/floe/pull/182))

### Changed
- Drop unused Task#status ([#180](https://github.com/ManageIQ/floe/pull/180))
- Check task failed? in non_terminal_mixin ([#183](https://github.com/ManageIQ/floe/pull/183))

## [0.11.0] - 2024-05-02
### Fixed
- Ensure the local code is loaded in exe/floe ([#173](https://github.com/ManageIQ/floe/pull/173))
- Fix issues with exe/floe and various combinations of workflow and input ([#174](https://github.com/ManageIQ/floe/pull/174))

### Added
- Add support for pluggable schemes ([#169](https://github.com/ManageIQ/floe/pull/169))

### Changed
- Collapse some namespaces ([#171](https://github.com/ManageIQ/floe/pull/171))
- Pass workflow context into runner#run_async! ([#177](https://github.com/ManageIQ/floe/pull/177))

### Removed
- Remove unused run! method ([#176](https://github.com/ManageIQ/floe/pull/176))

## [0.10.0] - 2024-04-05
### Fixed
- Fix rubocops ([#164](https://github.com/ManageIQ/floe/pull/164))
- Output should contain errors ([#165](https://github.com/ManageIQ/floe/pull/165))

### Added
- Add simplecov ([#162](https://github.com/ManageIQ/floe/pull/162))
- Add ability to pass context on the command line ([#161](https://github.com/ManageIQ/floe/pull/161))
- Add specs for `Workflow#wait_until`, `#waiting?` ([#166](https://github.com/ManageIQ/floe/pull/166))

### Changed
- Drop non-standard Error/Cause fields ([#167](https://github.com/ManageIQ/floe/pull/167))

## [0.9.0] - 2024-02-19
### Changed
- Default to wait indefinitely ([#157](https://github.com/ManageIQ/floe/pull/157))
- Create docker runners factory and add scheme ([#152](https://github.com/ManageIQ/floe/pull/152))
- Add a watch method to Workflow::Runner for event driven updates ([#95](https://github.com/ManageIQ/floe/pull/95))

### Fixed
- Fix waiting on extremely short durations ([#160](https://github.com/ManageIQ/floe/pull/160))
- Fix wait state missing finish ([#159](https://github.com/ManageIQ/floe/pull/159))

## [0.8.0] - 2024-01-17
### Added
- Add CLI shorthand options for docker runner ([#147](https://github.com/ManageIQ/floe/pull/147))
- Run multiple workflows in exe/floe ([#149](https://github.com/ManageIQ/floe/pull/149))
- Add secure options for passing credentials via command-line ([#151](https://github.com/ManageIQ/floe/pull/151))
- Add a Docker Runner pull-policy option ([#155](https://github.com/ManageIQ/floe/pull/155))

### Fixed
- Fix podman with empty output ([#150](https://github.com/ManageIQ/floe/pull/150))
- Fix run_container logger saying docker when using podman ([#154](https://github.com/ManageIQ/floe/pull/154))
- Ensure that workflow credentials is not-nil ([#156](https://github.com/ManageIQ/floe/pull/156))

## [0.7.0] - 2023-12-18
### Changed
- Remove the dependency on more_core_extensions in ReferencePath ([#144](https://github.com/ManageIQ/floe/pull/144))

### Added
- Implement `ReferencePath#get` ([#144](https://github.com/ManageIQ/floe/pull/144))
- Allow a State to set a value in Credentials for subsequent states ([#145](https://github.com/ManageIQ/floe/pull/145))

## [0.6.1] - 2023-11-21
### Fixed
- Return an error payload if run_async! fails ([#143](https://github.com/ManageIQ/floe/pull/143))

### Changed
- Extract run_container_params for docker/podman ([#142](https://github.com/ManageIQ/floe/pull/142))

## [0.6.0] - 2023-11-09
### Added
- Prefix pod names with 'floe-' ([#132](https://github.com/ManageIQ/floe/pull/132))
- Validate that the workflow payload is correct ([#136](https://github.com/ManageIQ/floe/pull/136))

### Fixed
- Fix issue where certain docker image names cannot be pod names ([#134](https://github.com/ManageIQ/floe/pull/134))
- Fix uninitialized constant RSpec::Support::Differ in tests ([#137](https://github.com/ManageIQ/floe/pull/137))
- Handle ImagePullErr/ImagePullBackOff as errors ([#135](https://github.com/ManageIQ/floe/pull/135))

### Changed
- Add task spec helper ([#123](https://github.com/ManageIQ/floe/pull/123))
- Rename State#run_wait to just #wait ([#139](https://github.com/ManageIQ/floe/pull/139))
- Refactor the Podman runner to be a Docker subclass ([#140](https://github.com/ManageIQ/floe/pull/140))

## [0.5.0] - 2023-10-12
### Added
- For task errors, use the json on the last line ([#128](https://github.com/ManageIQ/floe/pull/128))
- Add ability to pass task service account to kube runner ([#131](https://github.com/ManageIQ/floe/pull/131))

### Fixed
- Don't put credentials file into input ([#124](https://github.com/ManageIQ/floe/pull/124))
- exe/floe return success status if the workflow was successful ([#129](https://github.com/ManageIQ/floe/pull/129))
- For error output, drop trailing newline ([#126](https://github.com/ManageIQ/floe/pull/126))

## [0.4.1] - 2023-10-06
### Added
- Add Fail#CausePath and Fail#ErrorPath ([#110](https://github.com/ManageIQ/floe/pull/110))
- Add Task#Retrier incremental backoff and Wait#Timestamp ([#100](https://github.com/ManageIQ/floe/pull/100))

### Fixed
- Combine stdout and stderr for docker and podman runners ([#104](https://github.com/ManageIQ/floe/pull/104))
- Don't raise an exception on task failure ([#115](https://github.com/ManageIQ/floe/pull/115))
- Fix task output handling ([#112](https://github.com/ManageIQ/floe/pull/112))
- Fix Context#input not JSON parsed ([#122](https://github.com/ManageIQ/floe/pull/122))

## [0.4.0] - 2023-09-26
### Added
- Add ability to run workflows asynchronously ([#52](https://github.com/ManageIQ/floe/pull/92))
- Add Workflow.wait, Workflow#step_nonblock, Workflow#step_nonblock_wait ([#92](https://github.com/ManageIQ/floe/pull/92))

## [0.3.1] - 2023-08-29
### Added
- Add more global podman runner options ([#90](https://github.com/ManageIQ/floe/pull/90))

## [0.3.0] - 2023-08-07
### Added
- Add --network=host option to Docker/Podman runners ([#81](https://github.com/ManageIQ/floe/pull/81))

### Fixed
- Fix PayloadTemplate value transformation rules ([#78](https://github.com/ManageIQ/floe/pull/78))
- Move end out of the root state node ([#80](https://github.com/ManageIQ/floe/pull/80))

## [0.2.3] - 2023-07-28
### Fixed
- Fix storing next_state in Context ([#76](https://github.com/ManageIQ/floe/pull/76))

## [0.2.2] - 2023-07-24
### Fixed
- Don't pick up real KUBECONFIG for tests ([#73](https://github.com/ManageIQ/floe/pull/73))
- Fix double json.parse and context default value ([#69](https://github.com/ManageIQ/floe/pull/69))

### Added
- Configure Renovate ([#46](https://github.com/ManageIQ/floe/pull/46))

### Changed
- Simplify next state handling ([#66](https://github.com/ManageIQ/floe/pull/66))
- Refactor Input/Output path handling ([#68](https://github.com/ManageIQ/floe/pull/68))

## [0.2.1] - 2023-07-12
### Fixed
- Fix State EnteredTime and FinishedTime ([#59](https://github.com/ManageIQ/floe/pull/59))

### Added
- Add workflow output ([#57](https://github.com/ManageIQ/floe/pull/57))

## [0.2.0] - 2023-07-05
### Added
- Add ability to pass options to `Floe::Workflow::Runner` ([#48](https://github.com/ManageIQ/floe/pull/48))
- Add kubeconfig file support to `Floe::Workflow::Runner::Kubernetes` ([#53](https://github.com/ManageIQ/floe/pull/53))

### Removed
- Remove to_dot/to_svg code ([#54](https://github.com/ManageIQ/floe/pull/54))

### Fixed
- Fixed default rake task to spec ([#55](https://github.com/ManageIQ/floe/pull/55))

## [0.1.1] - 2023-06-05
### Fixed
- Fix States::Wait Path initializer arguments ([#47](https://github.com/ManageIQ/floe/pull/47))

## [0.1.0] - 2023-03-13
### Added
- Initial release

[Unreleased]: https://github.com/ManageIQ/floe/compare/v0.13.1...HEAD
[0.13.1]: https://github.com/ManageIQ/floe/compare/v0.13.0...v0.13.1
[0.13.0]: https://github.com/ManageIQ/floe/compare/v0.12.0...v0.13.0
[0.12.0]: https://github.com/ManageIQ/floe/compare/v0.11.3...v0.12.0
[0.11.3]: https://github.com/ManageIQ/floe/compare/v0.11.2...v0.11.3
[0.11.2]: https://github.com/ManageIQ/floe/compare/v0.11.1...v0.11.2
[0.11.1]: https://github.com/ManageIQ/floe/compare/v0.11.0...v0.11.1
[0.11.0]: https://github.com/ManageIQ/floe/compare/v0.10.0...v0.11.0
[0.10.0]: https://github.com/ManageIQ/floe/compare/v0.9.0...v0.10.0
[0.9.0]: https://github.com/ManageIQ/floe/compare/v0.8.0...v0.9.0
[0.8.0]: https://github.com/ManageIQ/floe/compare/v0.7.0...v0.8.0
[0.7.0]: https://github.com/ManageIQ/floe/compare/v0.6.1...v0.7.0
[0.6.1]: https://github.com/ManageIQ/floe/compare/v0.6.0...v0.6.1
[0.6.0]: https://github.com/ManageIQ/floe/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/ManageIQ/floe/compare/v0.4.1...v0.5.0
[0.4.1]: https://github.com/ManageIQ/floe/compare/v0.4.0...v0.4.1
[0.4.0]: https://github.com/ManageIQ/floe/compare/v0.3.1...v0.4.0
[0.3.1]: https://github.com/ManageIQ/floe/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/ManageIQ/floe/compare/v0.2.3...v0.3.0
[0.2.3]: https://github.com/ManageIQ/floe/compare/v0.2.2...v0.2.3
[0.2.2]: https://github.com/ManageIQ/floe/compare/v0.2.1...v0.2.2
[0.2.1]: https://github.com/ManageIQ/floe/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/ManageIQ/floe/compare/v0.1.1...v0.2.0
[0.1.1]: https://github.com/ManageIQ/floe/compare/v0.1.0...v0.1.1
[0.1.0]: https://github.com/ManageIQ/floe/tree/v0.1.0