# 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://semver.org/spec/v2.0.0.html).

## [0.9.0.0-beta]

### Added

- RPC
	- `importvk`
- TUI
	- Import viewing keys
	- Import seed phrase
- GUI
	- Import viewing keys
	- Import seed phrase

### Changed

- Database schema for wallets and accounts
- RPC:
	- New field in wallet schema
	- New field in account schema

## [0.8.0.0-beta]

### Added

- TUI:
	- Generate payment URI
	- Read a payment URI
	- Generate a Full Viewing Key
	- Generate an Incoming Viewing Key

- GUI:
	- Generate payment URI and QR code
	- Read a payment URI and QR code
	- Generate a Full Viewing Key
	- Generate an Incoming Viewing Key

- RPC methods:
	- `shieldnotes`
	- `deshieldfunds`
	- `getfullvk`
	- `getincomingvk`

## [0.7.2.0-beta]

### Fixed

- Creation of change addresses during account creation in GUI ([#111](https://code.vergara.tech/Vergara_Tech/zenith/issues/111))

## [0.7.1.0-beta]

### Changed

- Removed workaround to obtain block time

## [0.7.0.0-beta]

### Added

- RPC module
	- OpenRPC specification
	- `listwallets` RPC method
	- `listaccounts` RPC method
	- `listaddresses` RPC method
	- `listreceived` RPC method
	- `getbalance` RPC method
	- `getnewwallet` RPC method
	- `getnewaccount` RPC method
	- `getnewaddress` RPC method
	- `getoperationstatus` RPC method
	- `sendmany` RPC method
- Function `prepareTxV2` implementing `PrivacyPolicy`
- Support for TEX addresses
- Functionality to shield transparent balance
- Functionality to de-shield shielded notes
- Native commitment trees
	- Batch append to trees in O(log n)

### Changed

- Detection of changes in database schema for automatic re-scan
- Block tracking for chain re-org detection
- Refactored `ZcashPool`
- Preventing write operations to occur during wallet sync


## [0.6.0.0-beta]

### Added

- GUI module
- Address list
- Transaction list
- Balance display
- Account selector
- Menu for new addresses, accounts, wallets
- Dialog to display and copy seed phrase
- Dialog to add new address
- Dialog to add new account
- Dialog to add new wallet
- Dialog to display transaction details and copy TX ID
- Dialog to send a new transaction
- Dialog to display Tx ID after successful broadcast
- Unconfirmed balance display on TUI and GUI
- Tracking of unconfirmed notes

### Changed

- Upgraded to GHC 9.6.5
- Implemented config and data folder
- Improved the `configure` script for installation

### Fixed

- Validation of input of amount for sending in TUI

### Removed

- Legacy interface to `zcashd`

## [0.5.3.1-beta]

### Added

- Docker image

## [0.5.3.0-beta]

### Added

- Address Book functionality. Allows users to store frequently used zcash addresses and
  generate transactions using them.

### Changed

- Improved formatting of sync progress

### Fixed

- Wallet sync when no new block has been detected on-chain.

## [0.5.2.0-beta]

### Changed

- Update to `zcash-haskell-0.6.2.0` to increase performance of transaction creation

### Fixed

- Truncation of transaction ID when displaying a successfully sent transaction
- Missing command in menu for Send

## [0.5.1.1-beta.1]

### Changed

- Installation instructions in README

## [0.5.1.1-beta]

### Added

- Implement CLI changes to send transactions

## [0.5.0.0]

### Added

- Core functions for sending transactions

## [0.4.6.0]

### Added

- Display of account balance
- Functions to identify spends
- Functions to display transactions per address

### Changed

- Update `zcash-haskell`

## [0.4.5.0]

### Added

- Functions to scan relevant transparent notes
- Functions to scan relevant Sapling notes
- Functions to scan relevant Orchard notes
- Function to query `zebrad` for commitment trees

### Changed

- Update `zcash-haskell`

## [0.4.4.3]

### Added

- `Core` module
- `CLI` module
- `DB` module
- Command line arguments to switch to legacy version
- New configuration parameter for Zebra port
- New functions to call `getinfo` and `getblockchaininfo` RPC methods
- `Scanner` module

## [0.4.1]

### Fixed

- Handling of transactions to transparent receivers

## [0.4.0]

### Added

- `zcash-haskell` library

### Changed

- Sending of transactions to support ZIP-317.
- Functions to check if Unified Address is valid.

### Removed

- Dependency on patched `haskoin-core` library

## [0.3.4]

### Added

- Display of node version on splash screen
- Display of Zenith version on splash screen

### Fixed

- Bug [#2](https://git.vergara.tech/Vergara_Tech/zenith/issues/2) when memos were left empty
- Extra `"` in transaction ID display

### Changed

- Display of transaction amounts now uses zats, microZEC (μZEC), miliZEC(mZEC) and ZEC as units for readability.

## [0.3.3]

### Changed

- Upgrade to Haskell LTS 20.8 and GHC 9.2.5

## [0.3.2]

### Changed

- Updated README with dependencies and instructions for submodule.

### Fixed

- Sending transactions to transparent addresses, removing the memo and using the `AllowRevealedRecipients` privacy policy.

## [0.3.1]

### Added

- Added option to include Reply-To address when using URIs to generate transaction

### Changed

- Improved `encodeHexText` to handle Unicode characters correctly.

## [0.3.0]

### Changed

- Changed decoding of memos to support Unicode (emojis!)

### Fixed

- Displaying transactions for view-only addresses

## [0.2.0]

### Added

- Adds `uri` CLI command to send funds using a [ZIP-321](https://zips.z.cash/zip-0321) URI
- Adds `sendWithUri` function to support [ZIP-321 URIs](https://zips.z.cash/zip-0321)
- Adds option to include reply-to address in `send` command

### Changed

- Changes the use of `checkOpResult` to be recursive until the transaction either fails or succeeds.

## [0.1.0]

### Added

- CHANGELOG.md
- README.md
- List node addresses
- Query an address balance
- List transactions for an address, displaying decoded memos
- Copy address to clipboard
- Create new Unified Addresses
- Sending transactions

