===============
# NSR 0.1.1
===============

## NEW FEATURES
* NSR_from_coordinates(), added during this release cycle to check native status from
  species names and coordinates, is deprecated and not exported: the separate
  coordinates service it calls is offline.  For native status by coordinates use
  NSR_local(use_coordinates = TRUE).  The function is kept, as
  NSR:::NSR_from_coordinates(), for when the service returns; it now reports an
  unreachable service in a message and returns NULL instead of stopping with an error,
  and its address can be set with options(NSR.coordinates_url = "https://...").
* Added an offline implementation: NSR_local() answers without an internet connection from a
  local cache built by NSR_local_build(), with NSR_local_status(), NSR_local_remove() and
  NSR_local_by_region() alongside it.  The checklist sources are acquired on the user's
  machine; nothing derived ships with the package.  The offline path needs data.table,
  nanoparquet, terra, sf and TNRS, all of which are Suggests.
* NSR_local() gains exclude_extinct (default TRUE).  WCVP flags a distribution extinct
  without a date, so the cache keeps those records and the query decides: the default
  answers about the present day, FALSE models a past distribution.  Either way a region
  a taxon has been lost from stays part of its native range, so such a record is
  reported absent rather than introduced.
* NSR_local() answers from political division names by default.  Coordinates are
  echoed but not used unless use_coordinates = TRUE: placing every record by point
  costs a raster lookup per call, and turning coordinates into political divisions is
  what GVS already does.
* Where a record gives both coordinates and division names and the two resolve to
  different places, NSR_local() no longer pools them.  Neither is treated as
  authoritative: place_conflict flags the record, native_status is UNK, and the two
  bases are answered separately in native_status_coordinates and native_status_names.

## Bug fixes
* NSR_metadata() stopped with an error ("'names' attribute [3] must be the same length
  as the vector [0]") when the NSR API could not be reached, which broke the package's
  examples and vignette on CRAN's Windows check machines and led to its archival.  It
  now gives a message and returns NULL, like the package's other API functions.  Tests
  now put every exported API function through an unreachable API, an HTTP error and an
  empty reply, with the request mocked.
* NSR_metadata() had its sources and version elements named the wrong way round:
  metadata$version held the sources and metadata$sources the version.
* NSR() sent any input in a single request, although the API accepts at most 5,000
  records per call.  Larger inputs are now sent in batches of up to 5,000 and the
  results recombined in input order; if any batch fails, NSR() returns NULL with a
  message, as it does for a single failed request.

===============
# NSR 0.1.0
===============

## NEW FEATURES
* CRAN release

## Bug fixes

