                 Changes in version 0.2.0 (2026-09-05)                  

Breaking changes

  - scoring_bias_test() no longer takes a fun argument. In 0.1.0 the
    argument was validated and then never used: no scaling was applied
    to the shifts despite what the documentation claimed. Code that
    passed fun will now error rather than silently ignore it.

  - scoring_bias_test() returns unrounded values. Previously every
    column was rounded to 4 decimal places in the returned object, which
    lost precision for any downstream use, including multiplicity
    adjustment. Rounding now happens in print() only. Code that compared
    returned values to rounded constants may need updating.

  - summary() on an aidif object now returns an object of class
    summary.aidif instead of NULL, and printing is handled by
    print.summary.aidif(). Code relying on summary() printing as a side
    effect continues to work at the console; code that assigned the
    result and expected NULL does not.

New features

  - scoring_bias_test() and fit_aidif() gain a design argument. design =
    "paired" accepts cross-condition covariance information via
    cross_cov for the case where the same responses are scored under
    both conditions. design = "independent" remains the default and is
    conservative when applied to paired data, since the omitted
    cross-condition covariance is typically positive.

  - scoring_bias_test() and fit_aidif() gain a metric argument. metric =
    "linked" estimates the item-common metric offset that raw DASB
    cannot identify, using the same bi-square M-estimator the package
    already applies to within-condition robust scaling, and reports DASB
    relative to it. metric = "common" reproduces 0.1.0 behaviour and
    assumes linking was established upstream.

  - adjust argument for multiplicity control across items within a DASB
    analysis, using any stats::p.adjust method. The adjustment family is
    the items in the call; it does not span the human-DIF and AI-DIF
    tests.

  - as_aidif() converts a fitted multiple-group mirt model directly into
    the mle list structure aiDIF expects, replacing the manual parameter
    and covariance extraction 0.1.0 required. mirt remains in Suggests.

  - scoring_bias_test() returns confidence intervals (lower, upper)
    alongside the point estimates.

Bug fixes

  - summary.aidif() read object$fun, which fit_aidif() never set. The
    resulting sprintf() call returned character(0), so the line
    reporting the item count, scaling function, and alpha was silently
    omitted from every summary. Fixed.

  - Two-sided p-values were computed as 2 * (1 - pnorm(abs(z))), which
    underflows to exactly 0 for |z| above roughly 8.3. Now computed as 2
    * pnorm(-abs(z)).

  - Input validation never checked that the est data frames contained
    the a1 and d1 columns that scoring_bias_test() indexes by name, that
    intercept columns were consecutively numbered, that the slope column
    came first, or that covariance matrices matched the parameter count.
    Malformed input passed validation and failed later with an opaque
    subscript error. All of these are now checked at the boundary.

  - check_compatible_mles() compared item counts but not item names, so
    two calibrations with the same number of items in different orders
    were accepted and produced a meaningless contrast. Item names and
    order are now compared.

  - Flag counts in print.aidif() no longer return NA when any p-value is
    missing.

Documentation

  - data-raw/make_aidif_eg.R removed. It generated a data/aidif.eg.rda
    file the package no longer ships, and it rewrote DESCRIPTION as a
    side effect of being sourced.

  - README now documents installation from CRAN.

  - The package vignette has been rewritten as a full workflow,
    including an end-to-end example that calibrates in mirt and passes
    the result to fit_aidif() via as_aidif().

  - The robust scaling method is now cited to Halpin (2024,
    Psychometrika) rather than to a package manual.

                 Changes in version 0.1.0 (2026-04-21)                  

  - Initial CRAN release.
