                        Changes in version 3.0.0                        

This is a major release that modernises the package, upgrades the API
endpoint, and adds all features from PyBMRB 3.0.

Breaking changes

  - The BMRB API endpoint has moved from the deprecated
    webapi.bmrb.wisc.edu/v2 to the current api.bmrb.io/v2. All network
    calls now target the new endpoint automatically.
  - HTTP requests migrated from httr (archived) to httr2 (>= 1.0.0).
  - JSON parsing migrated from rjson to jsonlite for better null
    handling and consistent behaviour across platforms.
  - Entry data is now fetched with ?format=zlib compression, matching
    PyBMRB/pynmrstar behaviour, and decompressed with memDecompress().
  - The old get_data() function is replaced by get_cs_data().
  - The old hist_cs() function is replaced by cs_hist().
  - Plotting now uses plotly for fully interactive spectra instead of
    static ggplot2 images.

New features

ChemicalShift module

  - cs_from_bmrb() — fetch per-entry chemical shifts from BMRB as a
    nested list (dataset → chain → seq_id → atom → ppm value).
  - cs_from_file() — parse local NMR-STAR .str files using a pure-R
    NMR-STAR 3 parser (no external C library required).
  - cs_table() — flat data.frame form of per-entry chemical shifts.
  - cs_to_df(), cs_peek(), cs_summary() — data inspection helpers.

ChemicalShiftStatistics module

  - get_cs_data() — database-wide chemical shift query with filtering by
    pH, temperature, ambiguity code, and outlier removal.
  - get_2d_cs_data() — paired 2D chemical shift data for two atoms in
    the same residue.
  - get_cs_from_bmrb_db() — raw BMRB search results (no filtering).

Spectra module

  - n15hsqc() — simulate an interactive 1H-15N HSQC spectrum.
  - c13hsqc() — simulate an interactive 1H-13C HSQC spectrum.
  - tocsy() — simulate an interactive 1H-1H TOCSY spectrum.
  - generic_2d() — any two-atom 2D correlation with optional
    sequence-walk tracing.
  - create_n15hsqc_peaklist(), create_c13hsqc_peaklist(),
    create_tocsy_peaklist(), create_2d_peaklist() — build peak lists
    without plotting.
  - export_peak_list() — export peak lists to CSV or Sparky format.
  - All spectrum functions support multi-dataset overlay, draw-trace
    between matched residues, and external peak-list overlay.

Histogram module

  - cs_hist() — interactive 1D chemical shift distribution as histogram,
    box plot, or violin plot.
  - cs_hist2d() — 2D correlation heat-map or contour plot.
  - conditional_cs_hist() — distribution conditioned on known chemical
    shifts of other atoms in the same residue.

Utility functions

  - bmrb_test() — three-step connectivity self-test.
  - bmrb_debug_entry() — diagnostic for entry fetch failures.
  - bmrb_search() — BMRB instant search.
  - bmrb_pdb_ids() / bmrb_from_pdb() — cross-reference PDB IDs.
  - bmrb_citation() — retrieve entry citations in BibTeX/text/JSON-LD.
  - bmrb_upload_entry() — upload a local NMR-STAR file for temporary
    BMRB-hosted access (7-day token).
  - filter_cs_outliers(), cs_stats() — chemical shift statistics.
  - standard_amino_acids(), standard_nucleic_acids() — residue code
    reference vectors.

Bug fixes

  - Fixed silent data loss when API returns JSON null values in loop
    rows — unlist() was dropping nulls; replaced with vapply().
  - Fixed chemical shift search endpoint parser to use "columns" key
    (not "tags") matching the current BMRB API response format.
  - Fixed plain JSON entry response unwrapping for {"entry_id": VALUE}
    wrapper structure returned by the non-zlib endpoint.

                        Changes in version 2.0.0                        

  - Intermediate release (not on CRAN).
  - Migrated API endpoint from webapi.bmrb.wisc.edu to api.bmrb.io/v2.

                        Changes in version 1.1.0                        

  - Added n15hsqc() and c13hsqc() functions.
  - Added get_data() for chemical shift statistics.

                        Changes in version 1.0.0                        

  - Initial CRAN release.
  - Basic HSQC and TOCSY simulation.
  - Chemical shift histogram with hist_cs().
