# Change Log
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/) with
regard to the json-rpc api.  As we're currently pre-1.0 release, we
can and probably will change functionality and break backwards compatability
at anytime.

## [Unreleased]
### Security
  *
  *

### Fixed
  * handling error from dht clients with old `ping` method
  * blobs not being re-announced if no peers successfully stored, now failed announcements are re-queued
  * issue where an `AuthAPIClient` (used by `lbrynet-cli`) would fail to update its session secret and keep making new auth sessions, with every other request failing
  * `use_auth_http` in a config file being overridden by the default command line argument to `lbrynet-daemon`, now the command line value will only override the config file value if it is provided
  * `lbrynet-cli` not automatically switching to the authenticated client if the server is detected to be using authentication. This resulted in `lbrynet-cli` failing to run when `lbrynet-daemon` was run with the `--http-auth` flag
  * fixed error when using `claim_show` with `txid` and `nout` arguments

### Deprecated
  *
  * 
  
### Changed
  * refactor `add_completed_blobs` on storage.py, simplifying into less queries
  * check headers file integrity on startup, removing/truncating the file to force re-download when necessary
  * support partial headers file download from S3
  * changed txrequests for treq
  * changed cryptography version to 2.2.2
  * removed pycrypto dependency, replacing all calls to cryptography
  * full verification of streams only during migration instead of every startup
  * database batching functions for starting up the file manager
  * several internal dht functions to use inlineCallbacks
  * `DHTHashAnnouncer` and `Node` manage functions to use `LoopingCall`s instead of scheduling with `callLater`.
  * `store` kademlia rpc method to block on the call finishing and to return storing peer information
  * refactored `DHTHashAnnouncer` to longer use locks, use a `DeferredSemaphore` to limit concurrent announcers
  * decoupled `DiskBlobManager` from `DHTHashAnnouncer`
  * blob hashes to announce to be controlled by`SQLiteStorage`
  * kademlia protocol to not delay writes to the UDP socket
  * `reactor` and `callLater`, `listenUDP`, and `resolve` functions to be configurable (to allow easier testing)
  * calls to get the current time to use `reactor.seconds` (to control callLater and LoopingCall timing in tests)
  * `blob_announce` to queue the blob announcement but not block on it
  * blob completion to not `callLater` an immediate announce, let `SQLiteStorage` and the `DHTHashAnnouncer` handle it
  * raise the default number of concurrent blob announcers to 100
  * dht logging to be more verbose with errors and warnings
  * added `single_announce` and `last_announced_time` columns to the `blob` table in sqlite
  * pass the sd hash to reflector ClientFactory instead of looking it up
  * if the `use_authentication` setting is configured, use authentication for all api methods instead of only those with the `auth_required` decorator
  * regenerate api keys on startup if the using authentication
  * support both positional and keyword args for api calls
  * `peer_list` to return a list of dictionaries instead of a list of lists, added peer node ids to the results
  * download blockchain headers from s3 before starting the wallet when the local height is more than `s3_headers_depth` (a config setting) blocks behind
  * track successful reflector uploads in sqlite to minimize how many streams are attempted by auto re-reflect
  * increase the default `auto_re_reflect_interval` to a day
  * predictable result sorting for `claim_list` and `claim_list_mine`

### Added
  * virtual kademlia network and mock udp transport for dht integration tests
  * integration tests for bootstrapping the dht
  * configurable `concurrent_announcers` and `s3_headers_depth` settings
  * `peer_ping` command
  * `--sort` option in `file_list`
  * linux distro and desktop name added to analytics
  * certifi module for Twisted SSL verification on Windows

### Removed
  * `announce_all` argument from `blob_announce`
  * old `blob_announce_all` command
  * `AuthJSONRPCServer.auth_required` decorator
  * unused `--wallet` argument to `lbrynet-daemon`, which used to be to support `PTCWallet`.
  
## [0.19.3] - 2018-05-04
### Changed
 * download blockchain headers from s3 before starting the wallet when the local height is more than s3_headers_depth (a config setting) blocks behind (https://github.com/lbryio/lbry/pull/1177)
 * un-deprecated report_bug command (https://github.com/lbryio/lbry/commit/f8e418fb4448a3ed1531657f8b3c608fb568af85)

## [0.19.2] - 2018-03-28
### Fixed
 * incorrectly raised download cancelled error for already verified blob files
 * infinite loop where reflector client keeps trying to send failing blobs, which may be failing because they are invalid and thus will never be successfully received
 * docstring bugs for `stream_availability`, `channel_import`, and `blob_announce`

### Added
 * `blob_reflect` command to send specific blobs to a reflector server
 * unit test for docopt

### Removed
 * `flags` decorator from server.py as short flags are no longer used when using api/cli methods

### Changed
 * Bumped `lbryum` requirement to 3.2.1 [see changelog](https://github.com/lbryio/lbryum/blob/master/CHANGELOG.md#321---2018-03-28)

## [0.19.1] - 2018-03-20
### Fixed
 * Fixed the inconsistencies in API and CLI docstrings
 * `blob_announce` error when announcing a single blob
 * `blob_list` error when looking up blobs by stream or sd hash ([1126](https://github.com/lbryio/lbry/pull/1126))
 * Claiming a channel with the exact amount present in wallet would return a confusing error ([1107](https://github.com/lbryio/lbry/issues/1107))
 * Channel creation to use same bid logic as for claims ([1148](https://github.com/lbryio/lbry/pull/1148))

### Deprecated
 * `report_bug` jsonrpc command

### Changed
 * Bumped `lbryschema` requirement to 0.0.15 [see changelog](https://github.com/lbryio/lbryschema/blob/master/CHANGELOG.md#0015---2018-03-20)
 * Bumped `lbryum` requirement to 3.2.0 [see changelog](https://github.com/lbryio/lbryum/blob/master/CHANGELOG.md#320---2018-03-20)
 * Reflector server to periodically check and set `should_announce` for sd and head blobs instead of during each request
 * Reflector server to use `SQLiteStorage` to find needed blob hashes for a stream

### Added
 * Scripts to auto-generate documentation ([1128](https://github.com/lbryio/lbry/pull/1128))
 * Now updating new channel also takes into consideration the original bid amount, so now channel could be updated for wallet balance + the original bid amount ([1137](https://github.com/lbryio/lbry/pull/1137))
 * Forward-compatibility for upcoming DHT bencoding changes

### Removed
 * Short(single dashed) arguments for `lbrynet-cli`


## [0.19.0] - 2018-03-02
### Fixed
 * improper parsing of arguments to CLI settings_set (https://github.com/lbryio/lbry/issues/930)
 * unnecessarily verbose exchange rate error (https://github.com/lbryio/lbry/issues/984)
 * value error due to a race condition when saving to the claim cache (https://github.com/lbryio/lbry/issues/1013)
 * being unable to re-download updated content (https://github.com/lbryio/lbry/issues/951)
 * sending error messages for failed api requests
 * file manager startup being slow when handling thousands of files
 * handling decryption error for blobs encrypted with an invalid key
 * handling stream with no data blob (https://github.com/lbryio/lbry/issues/905)
 * fetching the external ip
 * `blob_list` returning an error with --uri parameter and incorrectly returning `[]` for streams where blobs are known (https://github.com/lbryio/lbry/issues/895)
 * `get` failing with a non-useful error message when given a uri for a channel claim
 * exception checking in several wallet unit tests
 * daemon not erring properly for non-numeric values being passed to the `bid` parameter for the `publish` method
 * `publish` command to allow updating claims with a `bid` amount higher than the wallet balance, so long as the amount is less than the wallet balance plus the bid amount of the claim being updated (https://github.com/lbryio/lbry/issues/748)
 * incorrect `blob_num` for the stream terminator blob, which would result in creating invalid streams. Such invalid streams are detected on startup and are automatically removed (https://github.com/lbryio/lbry/issues/1124)

### Deprecated
 * `channel_list_mine`, replaced with `channel_list`
 * `get_availability`, replaced with `stream_availability`

### Changed
 * dht tests to only be in one folder
 * config file format of `known_dht_nodes`, `lbryum_servers`, and `reflector_servers` to lists of `hostname:port` strings
 * startup of `lbrynet-daemon` to block on the wallet being unlocked if it is encrypted
 * `publish` to verify the claim schema before trying to make the claim and to return better error messages
 * `channel_list_mine` to be instead named `channel_list`
 * `channel_list` to include channels where the certificate info has been imported but the claim is not in the wallet
 * file objects returned by `file_list` and `get` to contain `claim_name` field instead of `name`
 * `name` filter parameter for `file_list`, `file_set_status`, `file_reflect`,  and `file_delete` to be named `claim_name`
 * `metadata` field in file objects returned by `file_list` and `get` to be a [Metadata object](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/metadata.proto#L5)
 * assumption for time it takes to announce single hash from 1 second to 5 seconds
 * HTTP error codes for failed api requests, conform to http://www.jsonrpc.org/specification#error_object (previously http errors were set for jsonrpc errors)
 * api requests resulting in errors to return less verbose tracebacks
 * logging about streams to not include file names (only include sd hashes)
 * wallet info exchange to re-use addresses, this was a significant source of address bloat in the wallet
 * lbrynet to not manually save the wallet file and to let lbryum handle it
 * internals to use reworked lbryum `payto` command
 * dht `Node` class to re-attempt joining the network every 60 secs if no peers are known
 * lbrynet database and file manager to separate the creation of lbry files (from downloading or publishing) from the handling of a stream. All files have a stream, but not all streams may have a file. (https://github.com/lbryio/lbry/issues/1020)
 * manager classes to use new `SQLiteStorage` for database interaction. This class uses a single `lbrynet.sqlite` database file.

### Added
 * `lbrynet-console`, a tool to run or connect to lbrynet-daemon and launch an interactive python console with the api functions built in.
 * `--conf` CLI flag to specify an alternate config file
 * `peer_port`, `disable_max_key_fee`, `auto_renew_claim_height_delta`, `blockchain_name`, and `lbryum_servers` to configurable settings
 * `wallet_unlock` command (available during startup to unlock an encrypted wallet)
 * support for wallet encryption via new commands `wallet_decrypt` and `wallet_encrypt`
 * `channel_import`, `channel_export`, and `claim_renew` commands
 * `blob_availability` and `stream_availability` commands for debugging download issues
 * a new startup stage to indicate if the daemon is waiting for the `wallet_unlock` command.
 * `abandon_info` dictionary (containing `claim_name`, `claim_id`, `address`, `amount`, `balance_delta` and `nout`) for claims, supports, and updates returned by `transaction_list`
 * `permanent_url` string to `channel_list_mine`, `claim_list`, `claim_show`, `resolve` and `resolve_name` (see lbryio/lbryum#203)
 * `is_mine` boolean to `channel_list` results
 * `txid`, `nout`, `channel_claim_id`, `channel_claim_name`, `status`, `blobs_completed`, and `blobs_in_stream` fields to file objects returned by `file_list` and `get`
 * `txid`, `nout`, `channel_claim_id`, and `channel_claim_name` filters for `file` commands (`file_list`, `file_set_status`, `file_reflect`,  and `file_delete`)
 * unit tests for `SQLiteStorage` and updated old tests for relevant changes (https://github.com/lbryio/lbry/issues/1088)

### Removed
 * `seccure` and `gmpy` dependencies
 * support for positional arguments in cli `settings_set`. Now only accepts settings changes in the form `--setting_key=value`
 * `auto_re_reflect` setting from the conf file, use the `reflect_uploads` setting instead
 * `name` argument for `claim_show` command
 * `message` response field in file objects returned by `file_list` and `get`
 * `include_tip_info` argument from `transaction_list`, which will now always include tip information.
 * old and unused UI related code
 * unnecessary `TempBlobManager` class
 * old storage classes used by the file manager, wallet, and blob manager
 * old `.db` database files from the data directory

## [0.18.0] - 2017-11-08
### Fixed
 * Fixed amount of close nodes to add to list in case of extension to neighbouring k-buckets
 * Fixed external IP detection via jsonip.com (avoid detecting IPv6)
 * Fixed failing ConnectionManager unit test for parallel connections
 * Fixed race condition between `publish` and `channel_new`
 * Fixed incorrect response on attempting to delete blob twice
 * Fixed local node ID reporting in peer list

### Changed
 * Bumped `lbryschema` requirement to 0.0.14 [see changelog](https://github.com/lbryio/lbryschema/blob/master/CHANGELOG.md#0014---2017-11-08)
 * Bumped `lbryum` requirement to 3.1.11 [see changelog](https://github.com/lbryio/lbryum/blob/master/CHANGELOG.md#3111---2017-11-08)
 * Moved BLOB_SIZE from conf.py to MAX_BLOB_SIZE in blob/blob_file.py

### Added
 * Added `utxo_list` command to list unspent transaction outputs
 * Added redundant API server for currency conversion

### Removed
 * Removed some alternate methods of reading from blob files
 * Removed `@AuthJSONRPCServer.queued` decorator

## [0.17.1] - 2017-10-25
### Fixed
 * Fixed slow startup for nodes with many lbry files
 * Fixed setting the external ip on startup
 * Fixed session startup not blocking on joining the dht
 * Fixed several parsing bugs that prevented replacing dead dht contacts
 * Fixed lbryid length validation
 * Fixed an old print statement that polluted logs
 * Fixed rpc id length for dht requests

### Changed
 * Bumped `lbryschema` requirement to 0.0.13 [see changelog](https://github.com/lbryio/lbryschema/blob/master/CHANGELOG.md#0013---2017-10-25)
 * Bumped `lbryum` requirement to 3.1.10 [see changelog](https://github.com/lbryio/lbryum/blob/master/CHANGELOG.md#3110---2017-10-25)
 * Use the first port available for the peer and dht ports, starting with the provided values (defaults of 3333 and 4444). This allows multiple lbrynet instances in a LAN with UPnP.
 * Detect a UPnP redirect that didn't get cleaned up on a previous run and use it
 * Bumped jsonschema requirement to 2.6.0
 * Refactor some assert statements to accommodate the PYTHONOPTIMIZE flag set for Android.

### Added
 * Added `wallet_prefill_addresses` command, which distributes credits to multiple addresses


## [0.17.0] - 2017-10-12
### Fixed
 * Fixed handling cancelled blob and availability requests
 * Fixed redundant blob requests to a peer
 * Fixed https://github.com/lbryio/lbry/issues/923
 * Fixed concurrent reflects opening too many files
 * Fixed cases when reflecting would fail on error conditions
 * Fixed deadlocks from occuring during blob writes
 * Fixed and updated`lbrynet.tests.dht`
 * Fixed redundant dht id
 * Fixed dht `ping` method
 * Fixed raising remote exceptions in dht
 * Fixed hanging delayedCall in dht node class
 * Fixed logging error in dht when calling or receiving methods with no arguments
 * Fixed IndexError in routingTable.findCloseNodes which would cause an empty list to be returned
 * Fixed bug where last blob in a stream was not saved to blob manager

### Deprecated
 * Deprecated `blob_announce_all` JSONRPC command. Use `blob_announce` instead.

### Changed
 * Bumped `lbryschema` requirement to 0.0.12 [see changelog](https://github.com/lbryio/lbryschema/blob/master/CHANGELOG.md#0012---2017-10-12)
 * Bumped `lbryum` requirement to 3.1.9 [see changelog](https://github.com/lbryio/lbryum/blob/master/CHANGELOG.md#319---2017-10-12)
 * Announcing by head blob is turned on by default
 * Updated reflector server dns
 * Moved tests into the lbrynet package.

### Added
 * Added WAL pragma to sqlite3
 * Added unit tests for `BlobFile`
 * Use `hashlib` for sha384 instead of `pycrypto`
 * Use `cryptography` instead of `pycrypto` for blob encryption and decryption
 * Use `cryptography` for PKCS7 instead of doing it manually
 * Use `BytesIO` buffers instead of temp files when processing blobs
 * Refactored and pruned blob related classes into `lbrynet.blobs`
 * Changed several `assert`s to raise more useful errors
 * Added ability for reflector to store stream information for head blob announce
 * Added blob announcement information to API call status with session flag

### Removed
 * Removed `TempBlobFile`
 * Removed unused `EncryptedFileOpener`


## [0.16.3] - 2017-09-28
### Fixed
 * Fixed blob download history

### Changed
 * Improved download analytics
 * Improved download errors by distinguishing a data timeout from a sd timeout


## [0.16.2] - 2017-09-26
### Fixed
 * Fixed https://github.com/lbryio/lbry/issues/771 (handle when a certificate is missing for a signed claim in `claim_list_mine`)


## [0.16.1] - 2017-09-20
### Fixed
 * Fixed `transaction_list` doc string
 * Fixed ([in lbryum](https://github.com/lbryio/lbryum/pull/156)) batched queries responsible for making transaction and tip histories slow
 * Fixed daemon refusing to start if DNS cannot resolve lbry.io domain.

### Changed
 * Bumped `lbryum` requirement to 3.1.8 [see changelog](https://github.com/lbryio/lbryum/blob/master/CHANGELOG.md#318---2017-09-20)


## [0.16.0] - 2017-09-18
### Fixed
 * Fixed uncaught error when shutting down after a failed daemon startup
 * Fixed spelling error in documentation.

### Changed
 * Bumped `lbryschema` requirement to 0.0.11 [see changelog](https://github.com/lbryio/lbryschema/blob/master/CHANGELOG.md#0011---2017-09-18)
 * Bumped `lbryum` requirement to 3.1.7 [see changelog](https://github.com/lbryio/lbryum/blob/master/CHANGELOG.md#317---2017-09-18)
 * Updated exchange rate tests for the lbry.io api

### Added
 * Added option to announce head blob only if seeding
 * Added option to download by seeking head blob first
 * By default, option to download seeking head blob first is turned on
 * Added `include_tip_info` param to `transaction_list` API call


## [0.15.2] - 2017-09-07
### Changed
 * Use lbry.io exchange rate API instead of google finance


## [0.15.1] - 2017-08-22
### Changed
 * Bumped `lbryschema` requirement to 0.0.10 [see changelog](https://github.com/lbryio/lbryschema/blob/master/CHANGELOG.md#0010---2017-08-22)
 * Bumped `lbryum` requirement to 3.1.6 [see changelog](https://github.com/lbryio/lbryum/blob/master/CHANGELOG.md#316---2017-08-22)
 * Persist DHT node id

### Added
 * Android platform detection in lbrynet/conf.py
 * androidhelpers module for determining base file paths


## [0.15.0] - 2017-08-15
### Fixed
 * Fixed reflector server blocking the `received_blob` reply on the server announcing the blob to the dht
 * Fixed handling of SIGINT, SIGTERM.
 * Fixed shutdown sequence
 * Fix error when resolving an integer

### Deprecated
 * The API will no longer be served at the /lbryapi path. It will now be at the root.
 * Deprecated `send_amount_to_address` in favor of `wallet_send`

### Changed
 * Renamed `reflect` command to `file_reflect`
 * Allow IP addresses to be configured as reflector servers, not just host names.
 * Return list of blobs that were reflected from `file_reflect`

### Added
 * Added `wallet_send`, a command to send credits and tips
 * Added `reflector` keyword parameter to `file_reflect` command
 * Added configuration options for auto re-reflect
 * Added option to abandon by txid/nout


## [0.14.3] - 2017-08-04
### Fixed
 * Fixed incorrect formatting of "amount" fields

### Added
 * Added validation of currencies.
 * Added blob_announce API command

### Removed
 * Removed TempBlobManager
  * Removed old /view and /upload API paths
  *


## [0.14.2] - 2017-07-24
### Fixed
 * Fix for https://github.com/lbryio/lbry/issues/750
 * Fixed inconsistencies in claim_show output
 * Fixed daemon process hanging when started without an internet connection
 * Fixed https://github.com/lbryio/lbry/issues/774
 * Fix XDG compliance on Linux
 * Fixed https://github.com/lbryio/lbry/issues/760
 * Fixed default directories bug

### Changed
 * claim_show API command no longer takes name as argument
 * Linux default downloads folder changed from `~/Downloads` to `XDG_DOWNLOAD_DIR`
 * Linux folders moved from the home directory to `~/.local/share/lbry`
 * Windows folders moved from `%AppData%/Roaming` to `%AppData%/Local/lbry`
 * Changed `claim_list_by_channel` to return the `claims_in_channel` count instead of the `claims_in_channel_pages` count

### Added
 * Add link to instructions on how to change the default peer port
 * Add `peer_port` to settings configurable using `settings_set`
 * Added an option to disable max key fee check.


## [0.14.1] - 2017-07-07

### Fixed
 * Fixed timeout behaviour when calling API command get
 * Fixed https://github.com/lbryio/lbry/issues/765

### Removed
  * Removed stream_info_cache.json from daemon.py

## [0.14.0] - 2017-07-05

### Added
 * Missing docstring for `blob_list`
 * Added convenient import for setting up a daemon client, `from lbrynet.daemon import get_client`
 * Added unit tests for CryptBlob.py


### Changed
 * Change `max_key_fee` setting to be a dictionary with values for `currency` and `amount`
 * Renamed `lbrynet.lbryfile` to `lbrynet.lbry_file`
 * Renamed `lbrynet.lbryfilemanager` to `lbrynet.file_manager`
 * Renamed `lbrynet.lbrynet_daemon` to `lbrynet.daemon`
 * Initialize lbrynet settings when configuring an api client if they are not set yet
 * Updated lbryum imports
 * Improve error message when resolving a claim fails using the "get" command


### Removed
 * Removed unused settings from conf.py and `settings_set`
 * Removed download_directory argument from API command get


### Fixed
 * Fixed some log messages throwing exceptions
 * Fix shutdown of the blob tracker by Session
 * Fixed claim_new_support docstrings
 * Fixed BlobManager causing functional tests to fail, removed its unneeded manage() loop
 * Increased max_key_fee
 * Fixed unit tests on appveyor Windows build
 * Fixed [#692](https://github.com/lbryio/lbry/issues/692)



## [0.13.1] - 2017-06-15

### Added
 * Add `claim_send_to_address`
 * Add `change_address` argument to `publish`
 * Add `unique_contacts` count to `status` response


### Changed
 * Support resolution of multiple uris with `resolve`, all results are keyed by uri
 * Add `error` responses for failed resolves
 * Add `claim_list_by_channel`, supports multiple channel resolution
 * Rename delete_target_file argument of delete API command to delete_from_download_dir
 * Rename delete_all CLI flag -a to --delete_all


### Removed
 * Remove `claims_in_channel` from `resolve` response


### Fixed
 * Race condition from improper initialization and shutdown of the blob manager database
 * Various fixes for GetStream class used in API command get
 * Fixed flag options in file_delete API command



## [0.11.0] - 2017-06-09

### Added
 * Added claim_address option to publish API command
 * Added message for InsufficientFundsError exception
 * Add CLI docs


### Changed
 * Do not catch base exception in API command resolve
 * Remove deprecated `lbrynet.metadata` and update what used it to instead use `lbryschema`
 * Get version information locally instead of via api for cli


### Deprecated
 * Old fee metadata format in publish API command is deprecated, throw relevant exception
 * Removed deprecated `get_best_blockhash`
 * Removed deprecated `is_running`
 * Removed deprecated `daemon_status`
 * Removed deprecated `is_first_run`
 * Removed deprecated `get_lbry_session_info`
 * Removed deprecated `get_time_behind_blockchain`
 * Removed deprecated `get_settings`
 * Removed deprecated `set_settings`
 * Removed deprecated `get_balance`
 * Removed deprecated `stop`
 * Removed deprecated `get_claim_info`
 * Removed deprecated `stop_lbry_file`
 * Removed deprecated `start_lbry_file`
 * Removed deprecated `get_est_cost`
 * Removed deprecated `abandon_claim`
 * Removed deprecated `support_claim`
 * Removed deprecated `get_my_claim`
 * Removed deprecated `get_name_claims`
 * Removed deprecated `get_claims_for_tx`
 * Removed deprecated `get_transaction_history`
 * Removed deprecated `get_transaction`
 * Removed deprecated `address_is_mine`
 * Removed deprecated `get_public_key_from_wallet`
 * Removed deprecated `get_new_address`
 * Removed deprecated `get_block`
 * Removed deprecated `descriptor_get`
 * Removed deprecated `download_descriptor`
 * Removed deprecated `get_peers_for_hash`
 * Removed deprecated `announce_all_blobs_to_dht`
 * Removed deprecated `get_blob_hashes`
 * Removed deprecated `reflect_all_blobs`
 * Removed deprecated `get_start_notice`


### Fixed
 * Download analytics error



## [0.10.3] - 2017-05-23

### Added
 * Add decorator to support queueing api calls
 * Added force option to API command resolve


### Changed
 * Cache claims in wallet storage for use looking claims up by id or outpoint
 * Try to use cached claim info for `file_list`
 * Convert wallet storage to inlinecallbacks
 * Improve internal name_metadata sqlite table


### Fixed
 * Fix race condition in publish that resulted in claims being rejected when making many publishes concurrently



## [0.10.1] - 2017-05-03

### Fixed
 * Fix multiple reactor.stop() calls
 * Properly shut down lbryum wallet from lbrynet
 * Set LBRYumWallet.config upon initialization, fixes attribute error



## [0.10.0] - 2017-04-25

### Added
 * Add `lbryschema_version` to response from `version`
 * Added call to `get_address_balance` when `address` conditional returns true
 * Added `address` conditional to `jsonrpc_wallet_balance`
 * Added `get_address_balance` method to the `Wallet` class
### Changed
 * Added optional `address` and `include_unconfirmed` params to `jsonrpc_wallet_balance` method
 * Wait for subscriptions before announcing wallet has finished starting
### Fixed
 * fix stream_cost_estimate throwing exception on non decodeable claims
 * fixed signing of Windows binaries
 * fixed a few pylint warnings


## [0.10.0rc2] - 2017-04-17
### Changed
 * Return full `lbry_id` and `installation_id` from `status`


## [0.10.0rc1] - 2017-04-13
### Fixed
 * Fix uncaught exception in `stream_cost_estimate`


## [0.9.2rc22] - 2017-04-12
### Added
 * Add `claim_id` parameter to `claim_show`
 * Add `hex` field to claim responses for the raw claim value
 * Add an `error` field to to file responses if an error occurs
### Changed
 * Use `uri` instead of `name` in `get_availability`
 * Add `channel_name` to claim and file responses where applicable
 * Return None (instead of errors) if a uri cannot be resolved
 * Use `uri` instead of `name` for `stream_cost_estimate`, update cost estimate for lbryschema
### Fixed
 * `file_list` for files with bad signatures
 * return None from resolve commands when nothing is found
 * return lbry files with claims that are abandoned
 * unhelpful error messages in `publish` and `channel_new`

## [0.9.2rc9] - 2017-04-08
### Added
 * Use `claim_id` instead of outpoint for `claim_abandon`
 * Add `channel_name` parameter to `publish`
 * Add `delete_all` parameter to `file_delete` to allow deleting multiple files
 * Add `channel_list_mine`
 * Add `channel_new`
 * Add `resolve` to resolve lbry uris
### Changed
 * Use `uri` instead of `name` for `get`, remove explicit `claim_id` parameter
 * Increase default download timeout
 * Use lbry.io api for exchange rate data

## [0.9.2rc4] - 2017-04-06
### Changed
 * Use lbryschema library for metadata
### Fixed
 * Removed update_metadata function that could cause update problems
 * Fix DHT contact bug

## [0.9.2rc3] - 2017-03-29
### Added
 * Create wallet_unused_address API command
 * Add `claim_id` parameter to `get`, used to specify non-default claim for `name`
### Changed
 * wallet_new_address API command always returns new address
 * Improved ConnectionManager speed
 * Remove unused `stream_info` parameter in `get`

## [0.9.2rc2] - 2017-03-25
### Added
 * Add `wallet_list` command
 * Add checks for missing/extraneous params when calling jsonrpc commands
 * Added colors to cli error messages
### Changed
 * Removed check_pending logic from Daemon
 * Switched to txrequests so requests can use twisted event loop
 * Renamed API command file_seed to file_set_status
 * Dont add expected payment to wallet when payment rate is 0
### Fixed
 * Fix restart procedure in DaemonControl
 * Create download directory if it doesn't exist
 * Fixed descriptor_get
 * Fixed API command descriptor_get
 * Fixed API command transaction_show
 * Fixed error handling for jsonrpc commands
 * Handle failure to decode claim cache file



## [0.9.1] - 2017-03-17
### Added
 * publish API command can take metadata fields as arguments
 * Added `reflect_uploads` config to disable reflecting on upload
 * Added `--version` flag
### Fixed
 * Fix wallet_public_key API command
 * Fixed jsonrpc_reflect()
 * Fixed api help return
### Changed
 * Removed `simplejson` dependency in favor of bulitin `json`



## [0.9.0rc17] - 2017-03-10
### Fixed
 * Added string comparison to ClaimOutpoint (needed to look things up by outpoint)
 * Remove unused API commands from daemon
 * Fix file filter `outpoint`
 * Made dictionary key names in API commmand outputs to be more consistent
### Added
 * Add file filters: `claim_id`, `outpoint`, and `rowid`
 * Make loggly logs less verbose
### Changed
 * Change file filter `uri` to `name` and return field `lbry_uri` to `name`
 * Refactor file_list, add `full_status` argument to populate resource intensive fields
 * Remove deprecated file commands: `get_lbry_files`, `get_lbry_file`, and `file_get`
 * Remove deprecated `delete_lbry_file` command
 * Return standard file json from `get`


## [0.9.0rc12] - 2017-03-06
### Fixed
 * Fixed ExchangeRateManager freezing the app
 * Fixed download not timing out properly when downloading sd blob
  * Fixed ExchangeRateManager freezing the app
  * Fixed download not timing out properly when downloading sd blob
  * Fixed get not reassembling an already downloaded file that was deleted from download directory

## [0.9.0rc11] - 2017-02-27
### Fixed
 * Added timeout to ClientProtocol
 * Add check for when local height of wallet is less than zero

## [0.9.0rc9] - 2017-02-22
### Changed
 * Add blockchain status to jsonrpc_status

## [0.8.7] - 2017-02-21

## [0.8.6] - 2017-02-19
### Changed
 * Add `file_get` by stream hash
 * Add utils.call_later to replace reactor.callLater

### Fixed
 * Fix unhandled error in `get`
 * Fix sd blob timeout handling in `get_availability`, return 0.0

## [0.8.5] - 2017-02-18
### Fixed
 * Fix result expected by ui from file_get for missing files

## [0.8.4] - 2017-02-17
### Changed
 * Remove unused upload_allowed option
 * Remove code related to packaging as that step is now done in the electron client
 * Remove lbryum version check; use lbry-electron as version source
 * Include download url in version check

### Fixed
 * add misssing traceback to logging

## [0.8.3] - 2017-02-15
### Fixed
 * Get lbry files with pending claims
 * Add better logging to help track down [#478](https://github.com/lbryio/lbry/issues/478)
 * Catch UnknownNameErrors when resolving a name. [#479](https://github.com/lbryio/lbry/issues/479)
 * Change EWOULDBLOCK error in DHT to warning. #481
 * mark peers as down if it fails download protocol
 * Made hash reannounce time to be adjustable to fix [#432](https://github.com/lbryio/lbry/issues/432)
 * Fix recursion depth error upon failed blob
 * Call stopProducing in reflector client file_sender when uploading is done
 * Ensure streams in stream_info_manager are saved in lbry_file_manager
 * Fixed file_delete not deleting data from stream_info_manager [#470](https://github.com/lbryio/lbry/issues/470)
 * Fixed upload of bug reports to Slack ([#472](https://github.com/lbryio/lbry/issues/472))
 * Fixed claim updates [#473](https://github.com/lbryio/lbry/issues/473)
 * Handle ConnectionLost error in reflector client
 * Fix updating a claim where the stream doesn't change
 * Fix claim_abandon

### Changed
 * Add blob_get, descriptor_get, and blob_delete
 * Add filter keyword args to blob_list
 * Refactor get_availability
 * Add optional peer search timeout, add peer_search_timeout setting
 * make connection manager unit testeable
 * Convert EncryptedFileDownloader to inlineCallbacks
 * Convert EncryptedFileManager to use inlineCallbacks
 * Convert Daemon._delete_lbry_file to inlineCallbacks
 * Add uri to stream reflector to de-obfuscate reflector logs
 * Simplify lbrynet.lbrynet_daemon.Publisher
 * Reflect streams in file manager looping call rather than in each file
 * Convert GetStream to inclineCallbacks
 * Change callback condition in GetStream to the first data blob completing
 * Add local and remote heights to blockchain status



## [0.8.1] - 2017-02-01
### Changed
 * reflect all the blobs in a stream
 * change command line flags so that the more common usage is the default
 * change daemon function signatures to include names arguments

### Fixed
 * disable verbose twisted logs
 * improved wallet balance calculations
 * fix block too deep error

## [0.8.0] - 2017-01-24
### Changed
 * renamed api endpoints
 * improved command line user experience
 * integrate twisted logging with python logging
 * Updated READMEs

### Fixed
 * Fixed bug where ConnectionManager wasn't being stopped
 * Fixed: #343
 * Stop hanging if github is down
 * paths for debian package have been updated to be correct
 * improved output of the publish command