                 Changes in version 0.2.0 (2026-09-28)                  

Correctness

  - hlm_context() now computes the standard error of the contextual
    contrast from the full fixed-effect covariance matrix, Var(bB - bW)
    = Var(bB) + Var(bW) - 2 Cov(bB, bW), instead of assuming that the
    covariance is zero. In a random-intercept model with an exactly
    group-mean centered Level-1 predictor that covariance is zero by
    construction, so previously published random-intercept results are
    unchanged; it is generally nonzero when the model contains a random
    slope, when the predictor is centered in some other way, or when the
    Mundlak specification uses the raw predictor.
  - hlm_context() gains level and check_centering arguments, returns
    conf_low and conf_high columns, and stores the covariance of the two
    coefficients in the attribute "cov_within_between". A warning is
    issued when x_within does not appear to be group-mean centered,
    because the difference between the two coefficients is then not the
    contextual effect.
  - hlm_icc() warns when the model has more than one grouping factor,
    and when the first random-effect term contains a random slope, in
    which case the reported ICC is conditional on the Level-1 predictor
    being zero.

Terminology

  - hlm_xint_geom() is deprecated. A random slope is unexplained
    heterogeneity in a Level-1 association; it is not a cross-level
    interaction, which requires an observed Level-2 moderator. The
    function remains available as an alias that warns and forwards to
    hlm_random_slope_plot(), and will be removed in a future release.

New functions

  - hlm_random_slope_plot() displays cluster-specific fitted lines from
    a random-slope model with the average line overlaid. Clusters are
    selected evenly across the distribution of conditional slopes by
    default, the plotting range is taken from the observed predictor,
    and remaining fixed effects are held at their sample means.
  - hlm_cross_level_plot() displays the Level-1 association at selected
    values of an observed Level-2 moderator, and warns when the model
    contains no such interaction.
  - hlm_icc_demo() simulates clustered data at several target intraclass
    correlations with the total variance held constant, so that students
    can see what low, moderate, and high ICC values look like. Clusters
    are ordered by their mean within each panel (sort_clusters = TRUE),
    so the sequence of cluster means is nearly flat at a low ICC and
    steep at a high one.
  - hlm_shrinkage_plot() compares raw cluster means with multilevel
    empirical Bayes estimates and draws an arrow between them, making
    partial pooling and its dependence on cluster size visible.

Other changes

  - hlm_icc() accepts cluster_size = "auto", recovers cluster sizes from
    the fitted model, and reports an unequal-cluster-size design effect
    based on sum(n^2) / sum(n) alongside the usual mean-size
    approximation. The returned object gains deff_unequal, n_clusters,
    and mean_cluster_size.
  - hlm_icc_plot() labels the components with their percentages and
    reports the unequal-size design effect when available.
  - A testthat suite was added, including cases in which the within- and
    between-cluster estimates are deliberately correlated.
  - Examples for hlm_decompose() and hlm_decompose_long() are
    self-contained and run without external data.

                 Changes in version 0.1.0 (2026-04-16)                  

  - First CRAN release.
