# ccpsyc 0.2.8

## CRAN compliance

* Removed the dependency on **ufs**, which is scheduled for archival on
  CRAN. `mg_rel_table()` no longer calls `ufs::scaleStructure()`; the
  internal consistency measures are now computed inside ccpsyc using
  **lavaan** and **psych**, both of which were already imported.

* `clearing_fa()` no longer calls `xlsx::read.xlsx()`. The **xlsx** package
  was not declared in `Imports`, which caused an undeclared-dependency
  check failure. Excel key files are now read with **readxl** (moved to
  `Suggests`), which also removes the Java requirement. Supplying an
  `.xlsx` key file without readxl installed now raises an informative
  error.

* `calculate_dif_indices()` is now actually exported and documented; it was
  tagged for export but missing from `NAMESPACE`.

* Declared `stats` in `Imports` and dropped the unused `rlang` dependency.

* Removed the redundant `data/example.csv`, which duplicated
  `data/example.rda` and defined the same `example` object.

## Bug fixes

* `release_bonferroni()` passed the rlang `.data` pronoun as a data
  argument to `dplyr::filter()`, causing the function to error.

* `splitgroup()` used an invalid column selection that could not work as
  written; it now drops the grouping column and returns the remaining ones.

* `pancultural()` signalled an error with `print()` rather than `stop()`,
  and coerced `nfactors` to character before passing it to
  `psych::principal()`.

* `gamma_hat_scaled()` no longer computes an unused quantity.

## Changes in reported statistics

* The `glb` column of `mg_rel_table()` now reports the maximum split-half
  reliability (Guttman's lambda 4) via `psych::splitHalf()`. The previous
  route, `psych::glb()`, calls `psych::ICLUST()`, which draws a diagram
  even when `plot = FALSE` and therefore fails whenever no graphics device
  has been initialised. Values are very close to, but not always identical
  to, those reported previously.

* Alpha and omega confidence intervals are now computed analytically rather
  than through the previous wrapper. Alpha reproduces the normal-theory
  interval exactly; omega is estimated from a single-factor congeneric
  model with a delta-method interval. The `seed` argument of
  `mg_rel_table()` is retained for backward compatibility but is no longer
  used, and a `conf.level` argument has been added.

* Measures that cannot be estimated for a group (fewer than three items, or
  a model that fails to converge) now return `NA` instead of erroring.

## Documentation and tests

* Added runnable examples for `dMACS()`, `mg_rel_table()` and
  `calculate_dif_indices()`.
* Internal helpers `MNCI()` and `gamma_hat_scaled()` are no longer given
  `.Rd` pages, which lacked `\value` sections.
* Added tests for `mg_rel_table()` and added tolerances to the existing
  numerical tests so they are robust across BLAS implementations.
