Changes in version 0.7.8 (2026-03-17) New features - Validation Split Resampling: Added resampling_method = "validation_split" to fastml() and train_models(). The holdout proportion is derived from folds as 1 - 1 / folds, with stratification support where applicable. - Explicit Save Helper: Added exported save_fastml() as the primary helper for persisting fitted fastml objects. Improvements - Nested CV Parameter Tracking: Improved nested cross-validation selection so the chosen outer split better follows the final hyperparameter configuration selected from inner results. - Survival Holdout Plumbing: Holdout evaluation now forwards survival-specific column metadata (start_col, time_col, status_col) through the evaluation path. - Prediction Model Validation: predict.fastml() now treats native survival and Royston-Parmar model objects as valid prediction targets when flattening and selecting fitted models. - Safer Task Detection: Survival auto-detection now ignores missing status values when checking for two-level event coding, and numeric auto-detection only upgrades clearly binary numeric outcomes to classification. - RNG State Restoration: fastml(), train_models(), and bootstrap confidence interval computations now restore the caller's .Random.seed after execution. - Documentation Updates: Expanded documentation for folds, flatten_and_rename_models(), and get_best_model_idx() for clearer usage and cleaner package checks. Bug fixes - Fixed event_class validation in both fastml() and train_models() so invalid values are rejected consistently. - Fixed multiclass handling so logistic_reg is converted to multinom_reg before the training loop, avoiding per-iteration mutation and preserving engine parameter transfer. - Fixed discriminant model specification helpers to use parsnip::discrim_linear() and parsnip::discrim_quad(), resolving dependency warnings caused by referencing unexported discrim objects. - Fixed default engine resolution by removing duplicate switch entries for survival algorithms such as survreg and royston_parmar. - Removed package-owned restoration of deleted objects into .GlobalEnv inside sandboxed preprocessing guards, resolving the corresponding R CMD check NOTE about global environment assignments. - Deprecated save.fastml() in favour of save_fastml() to avoid confusion with a non-generic S3-style naming pattern. - Removed dead internal statements in model evaluation and selection paths, including unused holdout label handling and stray performance-value expressions. - Added missing Rd argument documentation for flatten_and_rename_models() and get_best_model_idx(), resolving R CMD check \usage warnings. - Added regression tests covering event class validation, engine lookup, nested CV parameter selection, multiclass algorithm swapping, and sandbox global-environment protections. Changes in version 0.7.7 (2026-01-27) New features - Feature Importance Stability Analysis: Added explain_stability() function to analyze feature importance stability across cross-validation folds. This helps identify features that are consistently important vs. those whose importance varies across different data subsets. - Store Fold Models: Added store_fold_models parameter to fastml() to optionally store models trained on each CV fold, enabling stability analysis with explain_stability(). - S3 Methods for Stability Objects: Added print.fastml_stability() and plot.fastml_stability() methods for convenient display of stability analysis results. Improvements - Unified Explainer Infrastructure: Added fastml_prepare_explainer_inputs() helper function providing consistent data preparation across all explainer methods (explain_dalex(), explain_ale(), plot_ice(), interaction_strength(), surrogate_tree()). - Positive Class Resolution: Added resolve_positive_class() helper for consistent positive class handling across explainer functions, respecting event_class settings. - Enhanced explain_dalex(): Major refactoring with robust preprocessing ("baking") helper that handles three scenarios: no preprocessor, successful baking, and fallback validation for already-processed data. - Enhanced plot_ice(): Added target_class parameter for classification, improved feature validation with informative error messages, and added warnings for multiclass problems. - Improved Resampling Metrics Aggregation: Resampling results now properly compute CV statistics (mean and SD across folds) instead of pooled metrics. Fixed grouping attributes that could carry over from fold processing. - Better Model Validation in Predictions: Added valid_model() helper to properly validate workflow and native survival model types during prediction. Bug fixes - Fixed algorithm name matching in predict.fastml() to correctly resolve base algorithm names to their full "algorithm (engine)" format. - Fixed fold metrics aggregation in guarded resampling to properly ungroup and convert results to plain tibbles. - Fixed various edge cases in explainer functions when preprocessing pipelines are absent or data is already processed. - Fixed unit tests across multiple test files for improved reliability and stability. - Prevented Rplots.pdf files from being created during test execution by adding graphics device suppression to plotting tests. - Added Rplots.pdf to .gitignore to prevent accidental tracking. Changes in version 0.7.5 (2025-12-22) Breaking changes - Removed incomplete or unstable survival backends where correct, leakage-safe behavior could not be guaranteed. New features - Full Survival Analysis Support: Added training, resampling, prediction, metric computation, and model summarization for time-to-event outcomes. - Guarded Survival Resampling: Introduced a workflow enforcing leakage-safe preprocessing, imputation, and model fitting within each resampling split. - Integrated Brier Score (IBS): Added IBS and expanded survival metric support with flexible time handling and user-configurable summary outputs. - New Survival Engines: Added support for parametric and semi-parametric models, including Cox, penalized Cox, Royston–Parmar, and flexible parametric survival models. - Advanced Resampling Strategies: Implemented grouped, blocked, rolling, stratified, and unbiased nested cross-validation. - Fold-wise Imputation: Added support for advanced imputation during resampling while preventing outcome leakage. - Engine Parameters: Introduced an engine_params argument to allow passing engine-specific options in a consistent way. - S3 Methods: Added explicit S3 method annotations for fastml generics. Improvements - Multiclass ROC AUC now defaults to macro averaging (tidymodels) and can be configured via multiclass_auc to use macro_weighted class-prevalence weighting. - Improved robustness of survival predictions, including risk scores, survival probabilities, quantiles, medians, and time estimates. - Enhanced survival summary outputs with clearer metric alignment and better handling of stratified and time-varying Cox models. - Improved extraction of predictions and summaries for parametric survival engines. - Strengthened recipe validation and sandboxing to harden preprocessing isolation and reduce user-induced leakage. - Improved handling of novel and missing categorical levels during prediction. - Integrated resampling metadata more tightly into training workflows and summaries. - Added survival_metric_convention to align survival evaluation defaults with tidymodels conventions when desired. - Parallel tuning now uses explicit RNG seeding to keep results stable across core counts. Bug fixes - Fixed multiple issues in survival label validation, prediction post-processing, and metric computation. - Corrected survival risk and probability calculations for several engines and model types. - Fixed log-rank calculation for time-varying Cox models. - Fixed summary formatting when confidence intervals are unavailable. - Removed inappropriate confusion matrix warnings for non-classification tasks. - Fixed edge cases leading to NA survival predictions and early exits during survival time computation. - Addressed naming collisions and alignment issues in tuning grids and metric selection.