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.