Changes in version 0.2.4.9001 - Performance & Stability: Major optimizations to the gradient calculation for GCP models. The Jacobian computation now uses a sparse matrix approach, leading to significant speedups. The $\gamma_1$ correction calculation was corrected by reverting to the scalar path, ensuring numerical stability and accuracy. - Internal: Added joint_lp_grad and joint_lp_grad_vectorised to the output list for external inspection. Changes in version 0.2.4 (2026-04-03) 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. Changes in version 0.2.3 (2026-01-28) - Improved axis scanning, skewness correction, and VB mean correction routine. - Bug fixes for CRAN. - Updated README example. Changes in version 0.2.2 (2026-01-27) - 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. Changes in version 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. Changes in version 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. Changes in version 0.1 - Used rgeneric functionality of R-INLA to implement a basic SEM framework.