# Safe Vault - Change Log
## [0.20.1]
- Set execution permission on safe_vault binary before packaging for release
## [0.20.0]
- Return `AccessDenied` when apps request to insert, delete or list auth keys instead of ignoring the request.
- Use project's data directory as the root directory.
- Upgrade safe-nd dependency to 0.4.0. This includes granular permissions for applications.
- Change usage of idata term "kind" to "data".
- Introduce IDataRequest to eliminate unwraps.
- Handle refunds when errors are returned from the data handlers.
- Deprecate Rpc::Refund to use Rpc::Response instead.
- Send response to the client that sent the request instead of all connected clients.
- Use GitHub actions for build and release.
## [0.19.2]
- This is a technical release without any changes from `0.19.1`.
## [0.19.1]
- Add `verbose` command line flag.
- Fix the UX problem related to the self-update process (requiring to have a network connectivity even if a user just wanted to display the `--help` menu).
- Improve the release process, adding `.zip` and `.tar.gz` packages to distribution.
## [0.19.0]
- Rewrite the Vault code.
- Support new data types (AppendOnlyData, unpublished sequenced/unsequenced MutableData, and unpublished ImmutableData).
- Support coin operations.
- Use quic-p2p for communication with clients.
- Temporarily remove the Routing dependency.
- Refactor the personas system into a new Vault architecture.
- Use Rust stable / 2018 edition.
## [0.18.0]
- Improve Docker configuration scripts (thanks to @mattmccarty)
- Use rust 1.22.1 stable / 2017-11-23 nightly
- rustfmt 0.9.0 and clippy-0.0.174
## [0.17.2]
- Update dependencies.
## [0.17.1]
- Change test to use value of MAX_MUTABLE_DATA_ENTRIES rather than magic numbers.
## [0.17.0]
- Remove proxy rate exceed event.
## [0.16.1-2]
- Update to use Routing 0.32.2.
## [0.16.0]
- Use Routing definitions for group size and quorum.
- Add dev config options to allow running a local testnet.
- Update to use Routing 0.32.0.
- Update to use Rust Stable 1.19.0 / Nightly 2017-07-20, Clippy 0.0.144, and rustfmt 0.9.0.
- Improve DataManager tests.
## [0.15.0]
- Deprecate and remove support for Structured, PrivAppendable and PubAppendable Data.
- Add support for MutableData instead.
- MaidManagers only charge on put success now.
- MaidManagers charge by directly storing the MsgIds and counting the number of them to determine the account balance.
- MaidManagers support insertion and deletion of auth-keys to support auth-app paradigm in which all mutations on behalf of the owner of the account has to go via the MaidManagers.
## [0.14.0]
- Upgrade to routing 0.28.5.
- Migrate from rustc-serialize to serde.
- Migrate from docopt to clap.
- Implement invitation-based account creation.
## [0.13.2]
- Upgrade to routing 0.28.4.
## [0.13.1]
- Upgrade to routing 0.28.2.
## [0.13.0]
- Migrate to routing 0.28.0.
- Use a single event loop for routing and safe_vault.
- Fix issues with account creation and data requests.
## [0.12.1]
- Enforce data size caps.
- Enable new delete mechanism.
## [0.12.0]
- Handle appendable data types in data manager.
- Fix a synchronisation problem in Put/Post handling.
## [0.11.0]
- Use rust_sodium instead of sodiumoxide.
- Upgrade to routing 0.23.4, with merged safe_network_common.
## [0.10.6]
- Revert to routing 0.23.3.
## [0.10.5]
- Update the crate documentation.
- Upgrade to routing 0.25.0.
## [0.10.4]
- Remove spammy trace statement.
## [0.10.3]
- Set default Put limit to 500 and default chunk store limit to 2 GB.
## [0.10.2]
- Prevent vaults from removing existing chunk_store when terminating.
## [0.10.1]
- Fix chunk store directory handling.
- Remove remaining uses of the thread-local random number generator to make
tests deterministic.
- Make data manager statistics less verbose to reduce spam in the logs.
## [0.10.0]
- Merge chunk_store into safe_vault and make its root directory configurable.
- Implement caching for immutable data.
## [0.9.0]
- Migrate to the mio-based Crust and the new Routing Request/Response API.
- Handle `GetAccountInfo` requests to provide information about a client's used
and remaining chunk count.
## [0.8.1]
- Allow passing `--first` via command line to start the first Vault of a new network.
- Updated dependencies.
## [0.8.0]
- Several tweaks to churn handling in data_manager.
- Implement process to automatically build release binaries.
- Re-organise the tests to use mock Crust instead of mock Routing.
- Improve logging.
- Fix several bugs.
## [0.7.0]
- Restart routing if it failed to join the network.
- Reimplement the refresh algorithm for structured and immutable data to make it
less wasteful and more reliable.
## [0.6.0]
- Major change of persona strategy regarding `ImmutableData` (removal of three personas)
- Major refactoring of integration tests (uses mock Crust feature)
- Default test runner to unit tests (previously run using the mock Routing feature)
## [0.5.0]
- Replaced use of local Client errors for those in safe_network_common
- Swapped dependency on mpid_messaging crate for safe_network_common dependency
- Removed Mpid tests from CI suite
- Updated some message flows
- Completed churn-handling for ImmutableDataManager
- Added many unit tests
- Fixed Clippy warnings
- Several bugfixes
## [0.4.0]
- Accommodated updates to dependencies' APIs
- Ensured that the network can correctly handle Clients doing a Get for ImmutableData immediately after doing a Put
- Reduced `REPLICANTS` and `MIN_REPLICANTS` to 4
## [0.3.0]
- Major refactor to accommodate changed Routing
## [0.1.6]
- Default to use real Routing rather than the mock
- Updated config file to match Crust changes
- Refactored flow for put_response
- Added churn tests
- Refactored returns from most persona functions to not use Result
## [0.1.5]
- Major refactor of production code and tests to match Routing's new API, allowing testing on a real network rather than a mock
- Updated installers to match Crust's config/bootstrap file changes
- Added tarball to packages being generated
- Dropped usage of feature-gated items
## [0.1.4]
- [MAID-1283](https://maidsafe.atlassian.net/browse/MAID-1283) Rename repositories from "maidsafe_" to "safe_"
## [0.1.3]
- [MAID-1186](https://maidsafe.atlassian.net/browse/MAID-1186) Handling of unified Structrued Data
- [MAID-1187](https://maidsafe.atlassian.net/browse/MAID-1187) Updating Version Handler
- [MAID-1188](https://maidsafe.atlassian.net/browse/MAID-1188) Updating other personas if required
## [0.1.2] - code clean up
- [MAID 1185](https://maidsafe.atlassian.net/browse/MAID-1185) using unwrap unsafely
## [0.1.1]
- Updated dependencies' versions
- Fixed lint warnings caused by latest Rust nightly
- [Issue 117](https://github.com/maidsafe/safe_vault/issues/117) meaningful type_tag
- [PR 124](https://github.com/maidsafe/safe_vault/pull/124) integration test with client
- client log in / log out
- complete put flow
- complete get flow
## [0.1.0] - integrate with routing and safecoin farming initial work [rust-2 Sprint]
- [MAID-1107](https://maidsafe.atlassian.net/browse/MAID-1107) Rename actions (changes in routing v0.1.60)
- [MAID-1008](https://maidsafe.atlassian.net/browse/MAID-1008) Documentation
- [MAID-1009](https://maidsafe.atlassian.net/browse/MAID-1009) Personas
- ClientManager : MaidManager
- NodeManager : PmidManager
- Node : PmidNode
- NAE : DataManager, VersionHandler
- [MAID-1011](https://maidsafe.atlassian.net/browse/MAID-1011) Accounting
- MaidAccount : create, update and monitor
- PmidAccount : create, update and monitor
- [MAID-1010](https://maidsafe.atlassian.net/browse/MAID-1010) Flows
- PutData / PutResponse
- GetData / GetResponse
- PostData
- [MAID-1013](https://maidsafe.atlassian.net/browse/MAID-1013) Complete unfinished code (if it will be covered by the later-on tasks in this sprint, explicitly mention it as in-code TODO comment), especially in vault.rs
- [MAID-1109](https://maidsafe.atlassian.net/browse/MAID-1109) handle_get_key
- [MAID-1112](https://maidsafe.atlassian.net/browse/MAID-1112) handle_put_response
- [MAID-1113](https://maidsafe.atlassian.net/browse/MAID-1113) handle_cache_get
- [MAID-1113](https://maidsafe.atlassian.net/browse/MAID-1113) handle_cache_put
- [MAID-1014](https://maidsafe.atlassian.net/browse/MAID-1014) Integration test with new routing and crust (vaults bootstrap and network setup)
- [MAID-1028](https://maidsafe.atlassian.net/browse/MAID-1028) local joining test (process counting)
- [MAID-1016](https://maidsafe.atlassian.net/browse/MAID-1016) network example (nodes populating)
- [MAID-1012](https://maidsafe.atlassian.net/browse/MAID-1012) SafeCoin farming (new persona may need to be introduced, the task needs to be ‘expandable’ ) documentation
- farming
- account
- [MAID-1021](https://maidsafe.atlassian.net/browse/MAID-1021) Implement handling for Safecoin farming rate
- Farming rate determined by the Sacrificial copies.
- Farming rate drops when more copies are available and rises when less copies are available.
## [0.0.0 - 0.0.3]
- VaultFacade initial implementation
- Chunkstore implementation and test
- Initial Persona implementation :
- Implement MaidManager and test
- Implement DataManager and test
- Implement PmidManager and test
- Implement PmidNode and test
- Implement VersionHandler
- Flow related work :
- Complete simple Put flow and test
- Complete simple Get flow and test
- Complete Create Maid Account Flow
- Installers (linux deb/rpm 32/64 bit, Windows 32 / 64. OSX)
- Coverage analysis