# INLAvaan 0.2.4

## New features

* `bfit_indices()` computes per-sample Bayesian fit index vectors (BRMSEA, BCFI, BTLI, BNFI), with `summary()` and `print()` methods. Summary statistics are also available via `fitmeasures()`.
* `compare()` compares two or more fitted models side by side, reporting marginal log-likelihood, Bayes factors, and DIC, with optional fit measures from `fitmeasures()`.
* `diagnostics()` computes global and per-parameter convergence and approximation-quality diagnostics for fitted models.
* `get_inlavaan_internal()` is now exported and documented, providing access to the internal list stored in a fitted `INLAvaan` object.
* `predict()` generates predictions for observed data and missing data imputation, respecting multilevel structure if present.
* `sampling()` draws from the posterior (or prior) SEM generative model, returning parameter vectors, latent variables, or observed variables.
* `simulate()` generates complete replicate datasets from a fitted model, useful for simulation-based calibration and posterior predictive checks.
* `timing()` extracts wall-clock timings for individual computation stages of a fitted model.

## Minor improvements and fixes

* Cholesky factorisation of the precision matrix replaces raw `solve()` for covariance and log-determinant calculations.
* Copula sampling with NORTA (NORmal To Anything) correlation adjustment is now the default (`samp_copula = TRUE`), ensuring posterior samples have correct skew-normal marginals and correct Pearson correlations.
* Pre-computed Owen-scrambled Sobol sequences are used by default, with fallback to `{qrng}` for larger sequences. QMC sample size now scales with model dimension.
* Skew-normal fitting now runs in parallel automatically when the number of marginals exceeds 120, using all available cores.
* Small optimisations to the skew-normal volume correction.
* `acfa()`, `asem()`, and `agrowth()` gain a `vb_correction` argument.
* `{ggplot2}` is now optional; plots fall back to base R graphics when it is not installed.
* `inlavaan()` gains an `sn_fit_ngrid` argument to control the number of grid points per dimension when fitting skew-normal marginals (default 21).
* `inlavaan()` now supports `sn_fit_sample = TRUE` for defined parameters, fitting a skew-normal approximation to their posterior marginals based on drawn samples.
* `plot()` method gains improved visualisation options.
* `priors_for()` now supports the `[prec]` scale qualifier for variance parameters (`theta`, `psi`), placing the prior on the precision scale with automatic Jacobian adjustment.
* `sampling()` and `simulate()` gain a `silent` argument to suppress informational messages.
* `summary()` now includes 25th and 75th percentile columns.
* `vcov()` now returns the covariance matrix of the lavaan-side parameters and supports a `type` argument for choosing between sample and Laplace covariance.

## Bug fixes

* `marginal_correction = "shortcut"` no longer produces incorrect volume corrections.
* `qsnorm_fast()` no longer incorrectly handles sign symmetries.

# INLAvaan 0.2.3

* Improved axis scanning, skewness correction, and VB mean correction routine.
* Bug fixes for CRAN.
* Updated README example.

# INLAvaan 0.2.2

* Under the hood, use lavaan's MVN log-likelihood function to compute single- and multi-level log-likelihoods.
* Added support for multi-level SEM models.
* Added support for binary data using PML estimator from lavaan. NOTE: Ordinal is possible in theory, but the package still lacks proper prior support for the thresholds.
* Added support for `missing = "ML"` to handle FIML for missing data.

# INLAvaan 0.2.1

* Support for lavaan 0.6-21.
* Implemented variational Bayes mean correction for posterior marginals.
* Defined parameters are now available, e.g. mediation analysis.
* Prepare for CRAN release.

# INLAvaan 0.2

* INLAvaan has been rewritten from the ground up specifically for SEM models. The new version does not call R-INLA directly, but instead uses the core approximation ideas to fit SEM models more efficiently. 
* Features are restricted to **normal likelihoods only** and continuous observations for now.
* Support for most models that lavaan/blavaan can fit, including CFA, SEM, and growth curve models.
* Support for multigroup analysis.
* Added PPP and DIC model fit indices.
* Added prior specification for all model parameters.
* Added support for fixed values and parameter constraints.
* Initial CRAN submission.

# INLAvaan 0.1

* Used `rgeneric` functionality of R-INLA to implement a basic SEM framework.
