Changes in version 1.4.0 Workflow Optimization & Standardization (2025-12-05) Performance Improvements - Optimized R-CMD-check workflow: Reduced from 5 to 3 platforms (macOS, Windows, Ubuntu release) - Removed failing platforms: Dropped ubuntu-latest (devel) and ubuntu-latest (oldrel-1) configurations - Runtime improvement: Check workflows now complete in ~2 minutes (down from 6+ minutes, 67% faster) - Build optimization: Added --ignore-vignettes flag to skip vignette validation during CI checks Bug Fixes - Fixed pkgdown build errors: - Removed non-existent reexports topic from _pkgdown.yml reference index - Added missing tidy topic to _pkgdown.yml reference index - pkgdown workflow now passes successfully Standardization - Badge order: Added R-hub badge to README, standardized order to match mediationverse ecosystem: CRAN, Lifecycle, R-CMD-check, Website, R-hub, Codecov - .Rbuildignore: Added ^STATUS\.md$ to match ecosystem standards - Website configuration: Already compliant with mediationverse standards: - Academic blue color scheme (#0054AD) - Consistent fonts (Inter, Montserrat, Fira Code) - Ecosystem and Status dropdown menus Documentation - Updated README badge order for consistency across ecosystem - All workflows now passing on main branch Dependency Reduction - Removed dependencies: e1071, modelr, and generics packages are no longer required. - Internal implementations: Added internal .skewness(), .kurtosis(), and .resample_bootstrap() functions to replace external dependencies. - Own tidy generic: Package now defines its own tidy() generic instead of re-exporting from generics. - Total Imports reduced from 10 to 7 packages. CI/CD Improvements - Added R-CMD-check.yaml workflow for multi-platform testing (macOS, Windows, Ubuntu with R devel/release/oldrel). - Added test-coverage.yaml workflow for Codecov integration. - Added VignetteBuilder: knitr to DESCRIPTION for proper vignette building. - Standardized README.md to mediationverse format. Ecosystem Notes - Part of the mediationverse ecosystem for mediation analysis in R. - Integration with medfit planned for v1.5.0 (Q1 2026). - See Ecosystem Coordination for version compatibility and development guidelines. - See Development Roadmap for timeline. Major Changes S7 Core Architecture (Complete Refactoring) - Complete architectural redesign: S7 is now the computational core, with legacy functions as thin wrappers. - Zero breaking changes: All existing code continues to work exactly as before (100% backward compatible). - Enhanced extensibility: New computational architecture makes adding CI methods and features straightforward. S7 OOP Classes - Introduced S7 object-oriented programming for modern, type-safe class definitions. - New S7 Classes: - ProductNormal: Represents the distribution of the product of normal random variables. - MBCOResult: Encapsulates results from MBCO tests. - New S7 Generics: cdf(), dist_quantile(), ci(), print(), summary(), show(). - All S7 classes include comprehensive display methods (print, summary, show) for meaningful output. N-Variable Product Support (NEW) - Breaking limitation removed: Can now compute confidence intervals for products of 3 or more variables. - Works with Monte Carlo method (type = "mc"). - Example: ProductNormal(mu = c(0.3, 0.4, 0.5), Sigma = diag(3)) for three-way products. - Previous versions limited to 2-variable products only. Internal Computational Core - New internal S7 functions: .compute_ci_dop(), .compute_ci_mc(), .compute_ci_asymp(), .compute_cdf_dop(), .compute_cdf_mc(), .compute_quantile_dop(), .compute_quantile_mc(). - All core algorithms now work with ProductNormal objects natively. - Legacy functions (medci(), pprodnormal(), qprodnormal()) convert parameters and dispatch to S7 core. - Identical numerical results to previous versions (validated with 201 tests). Enhanced ci() Function - Migrated ci() to S7 generic with methods for: - numeric: Legacy support for direct coefficient/covariance input. - lavaan: Automatic extraction and CI computation for indirect effects. - ProductNormal: Native S7 class support. - Auto-detection: Automatically identifies product parameters (e.g., ab := a*b) in lavaan models. - Renamed first argument to mu for better legacy compatibility. MBCO Function Updates - Migrated mbco() to S7 generic with method for MxModel objects. - Returns MBCOResult S7 objects with properties: statistic, df, p_value, type. - Legacy Compatibility: Implemented S3 methods ($, [[, names) for backward-compatible list-style access (e.g., result$chisq, result$p). - Display methods show significance indicators (*, **, ***, ns) and interpretation. Input Validation - Comprehensive input validation using checkmate package across all functions. - Type checking with match.arg() for categorical arguments. - Improved error messages for invalid inputs. Display Methods - All S7 classes have meaningful print(), summary(), and show() methods. - ProductNormal displays: distribution type, means, covariance matrix, SDs, and correlations. - MBCOResult displays: test type, statistics, p-values with significance levels, and interpretation. Namespace Improvements - Zero masking warnings: Package now loads cleanly with no namespace conflicts. - Renamed quantile() generic to dist_quantile() to avoid masking stats::quantile(). - S7 methods for print(), summary(), show() now properly register with base generics. - Added S4 compatibility via S7::S4_register() for formal generic support. Package Cleanup - Removed unused dependencies (doParallel, foreach, methods). - Fixed all documentation warnings and notes. - R CMD check: Now passes with 0 errors, 0 warnings, 0 notes. - Added 40 new S7 prototype tests + 19 display method tests (total: 201 tests, 100% pass rate). Bug Fixes - Fixed argument dispatch issues between alpha and level parameters. - Resolved S7 generic conflicts with base R functions (print, summary, quantile). - Fixed recursive dispatch issues in display methods. - Added case-insensitive handling for type parameter (accepts "MC", "mc", "DOP", "dop", etc.). - Fixed return value structure for ci() method (now returns list with CI, Estimate, SE components). Changes in version 1.3.0 (2025-11-20) - Updated functions and package documentation. - Updated package dependencies. - Updated mbco function documentation. - Implemented checkmate for robust input validation. - Created GitHub pages for package documentation. - Refactored package structure for better organization. - Refactored package validation for better input validation. - Added tests for package functions. Changes in version 1.2.3 - Fixed an issue where the type="all" in the medci function would generate incorrect labels for CIs. Changes in version 1.2.2 (2023-05-12) - Fixed an issue where the type="all" in the medci function would generate an error "object 'MeekerCI' not found". - changed the dependency version for grDevices to >= 3.5 in the description file. Changes in version 1.2.1 (2023-05-03) - Fixed issues to meet CRAN submission requirements. Changes in version 1.2.0 (2022-07-08) *New parametric and non-parametric MBCO test, using mbco function. - Fixed an error with printing medci, '(1-alpha)% CI' Changes in version 1.1.5 - Fixed the issue with 'medic' function that printed '(1-alpha/2)% CI' instead of '(1-alpha)% CI' Changes in version 1.1.4 (2016-03-14) - 'medci' function output structure is changed. For each 'type', it produces a 'list' of '(1-alpha/2)% CI', 'Estimate', and 'SE'. See help(ci) for more information. - Two functions 'pMC' and 'qMC' are added. - for medci(), type=‘prodclin’ is replaced with ‘dop’. Changes in version 1.1.3 (2014-03-07) - New 'ci' function produces CIs for any well-defined function of parameter estimates in an SEM and MSEM using the Monte Carlo or asymptotic normal theory with the multivariate delta standard error method.