<!-- Unreleased: append new entries here -->
0.3.2
=====
* [!1323](https://gitlab.com/morley-framework/morley/-/merge_requests/1323)
Trace called contracts on error
+ Display sequence of contracts calls and other operations on error
* [!1310](https://gitlab.com/morley-framework/morley/-/merge_requests/1310)
Various parser fixes
+ Add Hedgehog generator for Michelson macros `genMacro`
* [!1341](https://gitlab.com/morley-framework/morley/-/merge_requests/1341)
Refactor scope constraints
+ Avoid redundant `check*Presence` uses
* [!1333](https://gitlab.com/morley-framework/morley/-/merge_requests/1333)
Improve typechecker error rendering
0.3.1
=====
* [!1339](https://gitlab.com/morley-framework/morley/-/merge_requests/1339)
Export AddressWithAlias &c from Cleveland
* [!1331](https://gitlab.com/morley-framework/morley/-/merge_requests/1331)
Support implicit account tickets
+ New Cleveland action, `transferTicket`, and its unchecked counterpart
`unsafeTransferTicket`.
* [!1330](https://gitlab.com/morley-framework/morley/-/merge_requests/1330)
Support ticket balance queries
* [!1328](https://gitlab.com/morley-framework/morley/-/merge_requests/1328)
Kill support for TORUs, minimal sr1 address support, tz4 address support
+ BLS crypto generators added in `Hedgehog.Gen.Tezos.Crypto.BLS`;
+ New crypto hedgehog generators which allow choosing key type added to
`Hedgehog.Gen.Tezos.Crypto`;
+ `importSecretKey` Cleveland action added to allow for getting addresses with
specific key type.
* [!1313](https://gitlab.com/morley-framework/morley/-/merge_requests/1313)
Add `getOnlyRpcEnv` utility function
* [!1315](https://gitlab.com/morley-framework/morley/-/merge_requests/1315)
Avoid redundant calls to octez-client address store
+ Use `ImplicitAddressWithAlias` for sender, moneybag and new implicit address
generators
+ Introduce `ToImplicitAddress` class to use `ImplicitAddressWithAlias` where
`ImplicitAddress` is required
* [!1297](https://gitlab.com/morley-framework/morley/-/merge_requests/1297)
Add a failure predicate to expect custom error with a specific tag, but
arbitrary argument (including none), `expectCustomErrorAnyArg`
* [!1304](https://gitlab.com/morley-framework/morley/-/merge_requests/1304)
Avoid unnecessary contract conversions
* [!1306](https://gitlab.com/morley-framework/morley/-/merge_requests/1306)
Add `refillables` which marks multiple addresses as refillable
* [!1290](https://gitlab.com/morley-framework/morley/-/merge_requests/1290)
Implement negation for `TransferFailurePredicate`
+ Also refactor `TransferFailurePredicate` to use `Maybe Builder` instead of
`Validation Builder ()`.
* [!1280](https://gitlab.com/morley-framework/morley/-/merge_requests/1280)
Apply internal modules pattern consistently
+ Export everything from internal modules
+ Move some internal modules around to avoid mixing definitions and reexports.
0.3.0
=====
* [!1281](https://gitlab.com/morley-framework/morley/-/merge_requests/1281)
Use the new binaries names, `octez-client` and `octez-node`
* [!1270](https://gitlab.com/morley-framework/morley/-/merge_requests/1270)
Add lima protocol TICKET instruction, rename old one to TICKET_DEPRECATED
+ The `TICKET` instruction was renamed to `TICKET_DEPRECATED`
+ A new `TICKET` instuction was added which no longer allows zero amount tickets.
It now returns `Some Ticket` and `None` in case of zero ammount supplied.
* [!1252](https://gitlab.com/morley-framework/morley/-/merge_requests/1252)
Better errors on stuck GetEntrypointArgCustom
+ Particularly in `transfer` with polymorphic/ambiguous contract parameter.
* [!1258](https://gitlab.com/morley-framework/morley/-/merge_requests/1258)
Support implicit contract delegates and setting delegates during origination
+ New function `setDelegate` for setting the delegate on implicit addresses.
+ `originate` now allows specifying optional delegate by passing a `KeyHash` value as argument.
+ `getDelegate` now accepts either implicit or contract addresses.
* [!1226](https://gitlab.com/morley-framework/morley/-/merge_requests/1226)
Implement delegation operation via RPC
* [!1257](https://gitlab.com/morley-framework/morley/-/merge_requests/1257)
Add ability to call on-chain views directly from test scenarios
* [!1244](https://gitlab.com/morley-framework/morley/-/merge_requests/1244)
Carry verbosity setting to only-rpc env in `mkMorleyOnlyRpcEnvNetwork`
* [!1243](https://gitlab.com/morley-framework/morley/-/merge_requests/1243)
Use Morley's `run_code` emulation
* [!1242](https://gitlab.com/morley-framework/morley/-/merge_requests/1242)
Use `Constrained` utility existential
* [!1246](https://gitlab.com/morley-framework/morley/-/merge_requests/1246)
Fix `MonadOriginate` blowing up with `Reduction stack overflow`
+ `MonadOriginate` constraint caused GHC to go loopy; now it doesn't, and a
test was added to prevent this in the future.
* [!1247](https://gitlab.com/morley-framework/morley/-/merge_requests/1247)
Refactor MorleyClientEnv
+ Removed `MorleyClientEnv'`, constructor now lives in `MorleyClientEnv`
+ Removed `Morley.Client.Env` module
+ `MorleyClientEnv`, `mkMorleyClientEnv` and `MorleyClientEnv` lenses moved to `Morley.Client.Full`
* [!1220](https://gitlab.com/morley-framework/morley/-/merge_requests/1220)
Better `transfer` errors on bad address type
* [!1219](https://gitlab.com/morley-framework/morley/-/merge_requests/1219)
Add resolving contract aliases in network tests
* [!1237](https://gitlab.com/morley-framework/morley/-/merge_requests/1237)
Support delegate registration on the emulator
* [!1178](https://gitlab.com/morley-framework/morley/-/merge_requests/1178)
Fix `contract t` typed value generator
+ `contract t` value generator where `t /= unit` could produce implicit
addresses. This is invalid. Now it only produces smart contract addresses.
+ `contract unit` generator can still produce both implicit and smart contract
addresses.
* [!1228](https://gitlab.com/morley-framework/morley/-/merge_requests/1228)
Handle implicit default entrypoint in `testContractCoversEntrypoints` &c
+ Implicit default entrypoint is considered in entrypoint coverage tests iff
the default entrypoint is defined in the spec. Otherwise, implicit default
is ignored. Explicit default entrypoint is always considered.
* [!1211](https://gitlab.com/morley-framework/morley/-/merge_requests/1211)
Unify handling of annotated exceptions
0.2.1
=====
* [!1199](https://gitlab.com/morley-framework/morley/-/merge_requests/1199)
Replace removed HasTezosClient actions with TezosClient.Impl version.
* [!1212](https://gitlab.com/morley-framework/morley/-/merge_requests/1212)
Support contract events
+ Untie cleveland operation results from morley-client.
+ Introduce `ContractEvent` type for contract events.
+ Introduce new `WithContractEvents` flag for `transfer`, which tells it to
return `[ContractEvent]`.
* [!1191](https://gitlab.com/morley-framework/morley/-/merge_requests/1191)
General cleanup
+ Display contract's aliases in error messages when a transfer fails (emulator-mode only).
* [!1177](https://gitlab.com/morley-framework/morley/-/merge_requests/1177)
Distinguish implicit/contract aliases and addresses on the type level
* [!1187](https://gitlab.com/morley-framework/morley/-/merge_requests/1187)
Access MorleyClientEnv in network tests
+ Add `NetworkCaps` carrying `NetworkEnv`.
+ Replace `ScenarioCleveland` with `ScenarioNetwork`.
+ Reimplement `scenario` as a function in `MonadScenario` typeclass.
+ Rename `Scenario` to `Scenario'`, add `Scenario` synonym that bakes in
`MonadScenario` constraint.
+ Allow `ifEmulation` to access `NetworkCaps` in the on-network branch.
* [!1168](https://gitlab.com/morley-framework/morley/-/merge_requests/1168)
Support a mix of RPC and non-RPC representations in `runCode`
* [!1137](https://gitlab.com/morley-framework/morley/-/merge_requests/1137)
Refactor Cleveland's originate\* and `transfer`/`transferMoney`/`call`
functions
+ All 9 `originate*` functions are replaced with single `originate`,
optionally accepting initial balance (as `Mutez`) and whether it's a large
origination (using `Large` argument).
+ `transfer`, `transferMoney` and `call` functions replaced by `transfer` and
two helpers, `calling` and `unsafeCalling`.
0.2.0
=====
* [!1172](https://gitlab.com/morley-framework/morley/-/merge_requests/1172)
Add `withChainId` and `withMinBlockTime` functions to set emulator constants.
* [!1123](https://gitlab.com/morley-framework/morley/-/merge_requests/1123)
Remove deprecated exports
* [!1161](https://gitlab.com/morley-framework/morley/-/merge_requests/1161)
Remove support for `AliasHint`
* [!1169](https://gitlab.com/morley-framework/morley/-/merge_requests/1169)
Support MIN_BLOCK_TIME instruction
+ Add `getMinBlockTime` utility to get minimal block delay in seconds as
`Natural`
* [!1164](https://gitlab.com/morley-framework/morley/-/merge_requests/1164)
Add `now` and `level` params to the `/run_code`
* [!1162](https://gitlab.com/morley-framework/morley/-/merge_requests/1162)
Implement instruction to batch-create accounts
* [!1114](https://gitlab.com/morley-framework/morley/-/merge_requests/1114)
Update to ghc-9.0.2
* [!1108](https://gitlab.com/morley-framework/morley/-/merge_requests/1108)
Remove support for the deprecated morley extensions
* [!1127](https://gitlab.com/morley-framework/morley/-/merge_requests/1127)
Create tempdir in Cleveland if datadir is unspecified
+ Instead of mangling user's default tezos-client data directory, when
a Cleveland test-suite invocation doesn't specify a datadir, use a
new temporary directory by default.
0.1.2
=====
* [!1050](https://gitlab.com/morley-framework/morley/-/merge_requests/1050)
Modify resolveAddress to accept AliasHints
* [!1039](https://gitlab.com/morley-framework/morley/-/merge_requests/1039)
Parameterize generators with a Range
+ `minTimestamp`, `maxTimestamp` and `midTimestamp` are moved to `Hedgehog.Range.Tezos.Core.Timestamp`.
* [!1017](https://gitlab.com/morley-framework/morley/-/merge_requests/1017)
Resolve some TODOs and link TODOs without issue id to the corresponding gitlab tickets.
* [!1082](https://gitlab.com/morley-framework/morley/-/merge_requests/1082)
Fix/drop/comment noncanonical Show instances
0.1.1
=====
* [!1113](https://gitlab.com/morley-framework/morley/-/merge_requests/1113)
Remove uses of `Parser LetEnv` due to redundant constraint.
* [!1094](https://gitlab.com/morley-framework/morley/-/merge_requests/1094)
Deprecate morley language extensions
+ Functions for importing and testing Morley contracts are added: `Test.Cleveland.Michelson.Import.testTreesWithUntypedContractExt`, `Test.Cleveland.Michelson.Import.testTreesWithTypedContractExt`, `Test.Cleveland.Lorentz.Import.importContractExt`. All these functions are considered deprecated.
* [!965](https://gitlab.com/morley-framework/morley/-/merge_requests/965)
Use Morley's fixed-size lists
+ Add Hedgehog generators for sized lists.
+ Introduce `enumAliasHints` for generating a sized list of similarly named alias hints.
* [!1072](https://gitlab.com/morley-framework/morley/-/merge_requests/1072)
Add `runCode` to Cleveland
* [!1070](https://gitlab.com/morley-framework/morley/-/merge_requests/1070)
Simplify cleveland's internals & public api
+ Relaced the `NiceUnpackedValue (AsRPC st)` constraint in `getStorage`
+ Removed the `NicePackedValue k` constraint from `getAllBigMapValuesMaybe`,
`getAllBigMapValues`, `getBigMapSizeMaybe`, and `getBigMapSize`.
* [!1025](https://gitlab.com/morley-framework/morley/-/merge_requests/1025)
Reduce the number of unsafe functions at the call site
+ Remove `unsafeFromHex` converter that is used as counter-part of safe `fromHex` and replaced with `unsafe . fromHex`.
+ Refactor `fromHex` to return `Either` instead of `Maybe`.
+ Add `parseAddressFromHex` helper to get rid of duplicated usages of `parseAddressRaw . unsafe . fromHex`.
* [!978](https://gitlab.com/morley-framework/morley/-/merge_requests/978)
Make it difficult to misuse 'Show'
+ Use `Buildable` and `pretty` preferrentially.
+ Add `Buildable` instances for `FaluireReason`, `Either a b`.
+ Add `PrettyShow` instances for `TypeSpec` (in lorentz-test) and `Time _` (in cleveland itself)./
+ Avoid using `(+||)` and `(||+)`.
+ Use `Debug.show` when defining `Show` instances.
* [!1058](https://gitlab.com/morley-framework/morley/-/merge_requests/1058)
Add `Buildable` instances for Unit, tuples up to 8 elements & bytestrings
* [!1057](https://gitlab.com/morley-framework/morley/-/merge_requests/1057)
Test `Show` and `RenderDoc` instances of `Annotation t`, `AnnotationSet`, `Notes t`, `InstrAbstract op`
* [!997](https://gitlab.com/morley-framework/morley/-/merge_requests/997)
Check necessity in initial `cast` automatically in Lorentz contracts
* [!1044](https://gitlab.com/morley-framework/morley/-/merge_requests/1044)
Fix `getRunMode` and `whenEmulated`
+ `getRunMode` is replaced by `ifEmulation` helper.
+ A new helper `whenNetwork` is added.
+ One caveat is that functions passed to `ifEmulation` are universally quantified over the outer monad, so if additional constraints are required beyond `MonadCleveland` or `MonadEmulated`, those constraints have to go on the base monad, e.g. `(MonadCleveland caps m, MonadFail (ClevelandBaseMonad caps)) => m ()`.
ifEmulation.
* [!1043](https://gitlab.com/morley-framework/morley/-/merge_requests/1043)
Extract actual + expected pattern into a datatype and show diff in type mismatch
* [!1037](https://gitlab.com/morley-framework/morley/-/merge_requests/1037)
Add synonyms for `SomeConstrainedValue`
+ Reimplement `SomeConstant`, `SomeValue`, `SomeStorage` via `SomeConstrainedValue`.
0.1.0
=====
Initial release extracted from the [morley](https://hackage.haskell.org/package/morley)
and [lorentz](https://hackage.haskell.org/package/lorentz) packages.
Tezos testing framework for contract developed with Michelson, Morley or Lorentz.