* --- 2026-06-03 :: qcluster v2.0.1 ---
  - Strengthened tests to avoid dependencies on BLAS implementation
  - added defensive C-level validation and `size_t` allocation sizes in the
  ECM routine

* --- 2026-04-12 :: qcluster v2.0.0 ---

  major update of the package internals, documentation and test suite

  user-visible changes

  - improved numerical stability in Gaussian-mixture fitting and scoring:
    log-scale normalization is now used in the most fragile steps of ECM
    initialization and scoring; several low-level numerical issues and one
    undefined-behaviour warning in the C code were fixed
  - strengthened input validation throughout the public API:
    `gmix()`, `qscore()`, `clust2params()`, `bqs()` and related methods now
    reject malformed data and parameters earlier and with clearer messages
  - `gmix()` now validates all supported initialization modes more strictly,
    including custom functions, matrices/data frames of weights, vectors of
    labels, and unsupported character initializers
  - `predict.mbcfit()` now fails early when mixture parameters are not
    Gaussian-ready; plotting methods distinguish more clearly between plots
    that only need clustering assignments and plots that require valid
    Gaussian parameters
  - `qscore()` now returns `NA` for the score component that was not requested,
    while preserving `NaN` for requested scores that cannot be computed
  - `bqs_rank()` and `bqs_select()` were revised:
    reranking now clears stale `best_*` solutions, ranks remain `NA` when the
    chosen ranking criterion is not available, and `bqs_select()` always
    refits selected solutions on the full data
  - `bqs_select()` now reports full-data refit failures as structured
    `bqs_select_error` objects instead of bare strings
  - `plot.bqs()` was fixed for `rankby = "1se"` and now validates requested
    score components against the score summaries actually stored in the object
  - `bqs()` now validates `B`, `ncores`, and empty method sets more carefully;
    BLAS/OpenMP threading inside PSOCK workers is serialized by default to
    avoid oversubscription

  infrastructure and maintenance

  - migrated package documentation to roxygen2 and regenerated `NAMESPACE`
    and the manual pages accordingly
  - added a package-level help page and updated help files to reflect the
    current API and behaviour of the package
  - expanded the test suite substantially with `testthat`, including
    regression tests for clustering output, scoring, plotting, validation,
    ranking/selection logic, and parallel-thread handling
  - updated package metadata, URLs and author information

* --- 2024-12-23 :: qcluster v1.2.1 ---

  updated citation information

* --- 2024-12-06 :: qcluster v1.2 ---

  first version of the package was finally uploaded on CRAN
