Skip to contents

SHARK4R 1.1.1

CRAN release: 2026-03-12

CRAN compliance

  • All vignettes that call external APIs now use a hidden availability check followed by try()-protected execution chunks, so transient server errors (502, 503, 500) never cause vignette rebuild failures. The user-facing code shown on pkgdown remains clean and uncluttered.
  • Added skip_if_offline() and skip_if_resource_unavailable() guards to previously unprotected tests for deprecated WoRMS wrappers (match_wormstaxa, update_worms_taxonomy) and the empty/NA input edge case (match_worms_taxa(c("", NA))).
  • Added skip_on_cran() to deprecated WoRMS wrapper tests, since the base-URL availability check can pass while individual API endpoints return server errors.
  • Added skip_if_offline() to the "wrong url fails" test in test-xylookup.R.

SHARK4R 1.1.0

CRAN release: 2026-03-09

New features

Security improvements

  • load_shark4r_fields() now downloads field definitions as a binary .rds file instead of sourcing a remote R script, eliminating a remote code execution risk.
  • get_shark_data() now validates that file_path does not contain .. path components, preventing path traversal when used in downstream applications.
  • get_shark_datasets() now sanitizes dataset names from the API with basename() before writing to disk.

Bug fixes and CRAN compliance

  • Fixed species not getting properly matched in match_algaebase_taxa(). The join between API results and input data used left_join(by = c("genus", "species")), which silently dropped results when AlgaeBase returned a reclassified genus (e.g., querying “Chlorella” but API returns “Auxenochlorella”). (Part of #47)
  • Fixed match_algaebase_genus() returning unrelated genera when exact_matches_only = TRUE. A variable shadowing bug inside tibble() caused the input_match column to always equal 1, making the exact match filter ineffective. For example, querying “Nitzschia” returned 7 genera (Cymbellonitzschia, Pseudo-nitzschia, etc.) instead of just Nitzschia. (Part of #47)
  • Fixed genus column collision in match_algaebase_species(). When higher taxonomy was requested, genus = genus_taxonomy$genus was included in the taxonomy tibble, which could overwrite the species-level genus value. (Part of #47)
  • Removed genus fallback in match_algaebase_taxa() for species-level queries. Previously, when a species was not found in AlgaeBase, the function fell back to a genus-level query. This produced misleading results where a species record linked to an unrelated genus page. Species queries that fail now return NA instead. (Part of #47)
  • Fixed get_dyntaxa_records() silently returning a character string on API error instead of raising a condition with stop().
  • Fixed get_shark_data() silently dropping municipalities, waterCategories, and typOmraden parameters when computing the pre-download row count, which could bypass the chunked download path.
  • Fixed operator precedence bug nrow(genus > 0) to nrow(genus) > 0 in construct_dyntaxa_missing_table().
  • Replaced unsafe 1:length() and 1:nrow() loops with seq_along() and seq_len() in construct_dyntaxa_missing_table() and construct_dyntaxa_table() to prevent errors on zero-length input.
  • Replaced message("ERROR: ...") calls with warning() in check_value_logical(), check_zero_value(), check_zero_positions(), check_codes(), and read_shark_deliv() so conditions can be caught programmatically with tryCatch().
  • Removed duplicate cachefile assignment in cache_call() and dead list.files() call in list_cache().
  • All internal cache paths now use the cache_dir() helper, which redirects to tempdir() during R CMD check. Previously several functions called tools::R_user_dir() directly, which could create ~/.cache/R/SHARK4R during CRAN checks.
  • Fixed evaluation order bug in clean_shark4r_cache() where search_pattern = NULL (the default) could cause an error.
  • Fixed deprecation warning version numbers in algaebase functions (now correctly reference 1.0.0).
  • Fixed spelling of “Microalgae” and other minor typos in get_hab_list() documentation.
  • get_hab_list() updated to wrap inline text with I() in readr::read_delim() for readr ≥ 2.2.0 compatibility and to remove deprecation warnings.
  • Tests that depend on the OBIS xylookup API now skip correctly when the endpoint returns a server error. Previously, the availability check targeted the base URL (https://api.obis.org/) which could return 200 while the /xylookup endpoint itself returned 500.
  • All \donttest{} examples that call external APIs are now wrapped with try() so that transient service outages do not cause R CMD check --run-donttest failures.
  • The quality_control vignette now wraps OBIS-dependent calls (check_onland(), check_depth()) in tryCatch() so the vignette builds even when the API is unavailable.

SHARK4R 1.0.3

CRAN release: 2026-01-14

New features

  • Added a new harmful_non_toxic_only argument to get_hab_list() to download only non-toxigenic harmful microalgal species from the IOC-UNESCO HABs list
  • Added a new species_only argument to get_hab_list() to return only species-level records, which is now also the default option. This filter is ignored when harmful_non_toxic_only = TRUE
  • Added a new verbose argument to positions_are_near_land() and get_hab_list(harmful_non_toxic_only = TRUE) to enable printing of progress messages during data retrieval

Minor improvements and fixes

  • EEA coastline data are now obtained from EEA map services in positions_are_near_land(), replacing direct file server downloads that were unstable
  • All data frame outputs are now consistently returned as tibbles
  • Documentation updated with minor clarifications and corrections

SHARK4R 1.0.2

CRAN release: 2025-12-12

Bug fixes

  • SHARK4R:::.type_lookup now includes the missing datatype Jellyfish (#39)
  • Enhanced documentation and example execution in vignettes - updated examples to run correctly and improved clarity in vignettes and help files
  • HTML widgets and interactive objects are now displayed only in pkgdown articles; they are suppressed in CRAN vignettes to reduce size and improve build safety
  • Added tests for helper functions – covering extract_complete_toxins() and repair_toxins_json()
  • Cache is now cleared after R CMD check

SHARK4R 1.0.1

CRAN release: 2025-12-09

Bug fixes and CRAN compliance

  • Corrected formatting of package and software names throughout the package.
  • Fixed broken URL in README.md
  • Improved examples to run reliably and quickly
  • Ensured functions and examples no longer write to the user’s home directory
  • Added lon and lat arguments to the lookup_xy() function for more flexible lookup options
  • Minor documentation improvements throughout the package
  • get_toxin_list() now handles partial JSON responses

SHARK4R 1.0.0

New features

Enhancements

Deprecated

Defunct / Removed

  • Defunct function get_shark_table()

Documentation

  • Add NEWS.md file
  • Add spell check

SHARK4R 0.1.7

SHARK4R 0.1.6

Patch release

  • Fix issue #16
  • Add unparsed output option for get_shark_option()

SHARK4R 0.1.5

Patch release

SHARK4R 0.1.4

  • Add algaebase API functions
  • Defunct sharkdata functions
  • Fix parsing issue in shark_data when data are reported as “-”, which is now a NA pattern
  • Cleanup of large files
  • UTF-8 encoding

SHARK4R 0.1.3

  • Minor bug-fixes and updated documentation

SHARK4R 0.1.2

  • Patch release

SHARK4R 0.1.1

  • Fix download of large datasets
  • Add more WoRMS functionality, including plankton group assignment

SHARK4R 0.1.0

  • Add SHARK API functionality
  • Improve Dyntaxa API functionality
  • Fix documentation issues

SHARK4R 0.0.1

  • Initial development version.