# AutoMLR 1.0.0

- CRAN pretest fix: replaced the `extreme_surv_screen()` regression test with
  a deterministic survival-only fixture using `stepwise_cox`, so the test no
  longer depends on optional `glmnet` behavior and remains stable on Windows
  and Debian R-devel incoming checks.
- Single-cohort report fix: cohort-aware survival, binary, continuous, and
  ordinal report tables now use a unified panel rule. A single real cohort is
  labelled by its cohort name, a literal `All` cohort is labelled `Overall`,
  and only multi-cohort analyses add `Overall` plus individual cohorts. This
  removes duplicated single-cohort panels such as `Overall` plus
  `TCGA_LUAD_PanCan`.
- Survival publication figures now adapt more layout settings to the actual
  rendered data: feature-importance and SHAP-style plots use data-driven left
  margins and point sizes, nomogram row spacing expands with the number of
  horizons, calibration and decision-curve legends choose less occupied plot
  corners, and the combination benchmark allocates relatively more space to
  the side performance bars.
- Binary publication figures now use the same data-aware plotting utilities
  for ROC, precision-recall, calibration, decision-curve, confusion-matrix,
  feature-importance, and benchmark plots, reducing label clipping and legend
  overlap in single- and multi-cohort outputs.
- Continuous and ordinal publication figures now compute ranking/importance
  margins from the longest model or feature label and reduce point size in
  observed-vs-predicted or observed-vs-score scatter plots as sample size
  increases. Ordinal confusion-matrix labels and cell counts also scale with
  the number and length of classes.
- DESCRIPTION wording was tightened for CRAN by removing unnecessary acronym
  parentheticals where the full method name is already written out.
- Routed model-evaluation and ensemble-fitting progress output through
  `log_message()` so `initialize_auto_logging()` captures messages such as
  `Evaluating ...` and `Fitting ...` in the log file as well as the console.
- Changed survival-SVM candidate evaluation to use k-fold resampling by
  default (`surv_svm_resampling = "kfold"`) to avoid known single-row
  prediction failures from `survivalsvm` under leave-one-out
  cross-validation.
- Improved publication plotting defaults: heatmaps drop all-NA rows while
  marking partial NA cells, heatmap color scales adapt to the finite metric
  range, forest plots use data-aware x-axis limits, and continuous residual
  histograms use data-driven breaks and axis ranges.
- Added continuous and ordinal ensemble-member fitting progress messages.
- Exported `automlr_input_to_surv_xy()`,
  `automlr_input_to_binary_xy()`, `automlr_input_to_continuous_xy()`, and
  `automlr_input_to_ordinal_xy()` so users can call lower-level evaluation
  functions without relying on internal `:::` helpers.
- Added optional automatic threshold recommendations for threshold-style
  ensemble selection: `auto_min_cindex`, `auto_min_auc`, `auto_min_r2`, and
  `auto_min_qwk`, controlled by `auto_quantile`.
- Added helper functions `recommend_surv_cindex_threshold()`,
  `recommend_binary_auc_threshold()`, `recommend_continuous_r2_threshold()`,
  and `recommend_ordinal_qwk_threshold()` for explicit threshold review.
- Moved heavyweight model engines from strong imports to optional suggested
  dependencies so installation no longer requires all modelling backends.
- Added `check_automlr_dependencies()` to report available and missing model
  backends, optional features, expected skip/degradation behavior, and install
  commands.
- Made logging and parallel execution degrade gracefully when optional
  `log4r`, `future`, or `future.apply` packages are unavailable.
- Added continuous-outcome workflows:
  `prepare_continuous_cohort_input()`, `continuousmlr_parameters()`,
  `fit_continuous_ensemble()`, `export_continuous_results()`, and
  `render_continuous_report()`.
- Added ordinal-outcome workflows:
  `prepare_ordinal_cohort_input()`, `ordinalmlr_parameters()`,
  `fit_ordinal_ensemble()`, `export_ordinal_results()`, and
  `render_ordinal_report()`.
- Added 18 default continuous/ordinal model variants across penalized
  regression, linear / stepwise linear regression, GBM, random forest,
  PCA-linear, and mean-baseline families.
- Continuous model selection defaults to out-of-fold RMSE, with MAE,
  R-squared, Pearson, Spearman, cohort performance, observed-vs-predicted,
  residual, and feature-importance diagnostics.
- Ordinal model selection defaults to out-of-fold quadratic weighted kappa,
  with accuracy, balanced accuracy, class MAE, score RMSE, Spearman,
  confusion-matrix, observed-score, and feature-importance diagnostics.
- Hardened the binary-classification workflow: multi-class outcomes are now
  rejected by default unless users explicitly request `collapse_other = TRUE`,
  and `negative_class` can be supplied for clear positive / negative mapping.
- Added binary preprocessing audits for missingness filtering, median
  imputation, zero / low-variance filtering, and optional feature
  standardization.
- Added binary k-fold and repeated k-fold resampling options while preserving
  LOOCV as the default.
- Split binary exported predictions into apparent and out-of-fold
  probabilities/classes; default diagnostic tables and plots now use
  out-of-fold probabilities.
- Fixed binary `strategy = "threshold"` report/export compatibility.
- Added binary `model_performance_forest.csv` and
  `fig9_model_performance_forest` with OOF ROC AUC and approximate 95% CI.
- Added a binary-classification workflow parallel to the survival
  workflow: `prepare_binary_cohort_input()`, `binarymlr_parameters()`,
  `fit_binary_ensemble()`, `export_binary_results()`, and binary summary
  helpers.
- Added 18 default binary model variants across 9 algorithm families:
  penalized logistic regression, standard / stepwise logistic regression,
  GBM, random forest, PCA-logistic, and Gaussian naive Bayes.
- Added binary single-model and single-/two-model probability-combination
  ranking by LOOCV ROC AUC, with PR-AUC, Brier score, threshold metrics,
  cohort AUC stability, calibration, DCA, confusion matrix, and feature
  importance exported as diagnostics.
- Added default explainability and clinical-utility outputs to regular
  survival exports: permutation feature importance, SHAP-style
  median-ablation summary and dependence plots, risk-score nomogram,
  calibration curve, decision curve analysis, and a model C-index forest plot.
- Refined the nomogram and SHAP-style figure set after FigureYa / regplot and
  SHAP documentation review: the nomogram now uses a points / total-points /
  event-risk ruler layout with risk-score distribution marks, while the SHAP
  figures follow mean-absolute-contribution bar, beeswarm summary, and
  dependence-with-density conventions.
- Added corresponding CSV audit tables:
  `feature_importance.csv`, `shap_approx_contributions.csv`,
  `risk_score_nomogram.csv`, `calibration_curve.csv`, `dca_curve.csv`,
  `model_cindex_forest.csv`, and `risk_prediction_horizon.csv`.
- Embedded the final publication figure set directly in the default HTML
  report while keeping diagnostic figures in a separate diagnostic folder.
- Clarified the four regular-analysis interpretation checkpoints in the
  default report bundle: data preparation, base-model screening, ensemble
  selection, and explainability / clinical utility.
- Added `summarize_explainability_results()` and bilingual interpretation text
  explaining that SHAP-style outputs are median-ablation approximations and
  that nomogram / calibration / DCA diagnostics are based on the final
  risk-score Cox calibration.
- Stored the training feature matrix inside fitted survival ensembles so
  exported explainability diagnostics can be regenerated from the fitted object.
- Validated the regular workflow on a 100-sample TCGA-LUAD test dataset with
  all publication figures, CSV tables, HTML report, and bilingual summaries
  generated successfully.

# AutoMLR 0.1.0

- Added 18 default survival-model variants across 10 registry entries.
- Added LOOCV C-index evaluation, two-model all-subsets combination search,
  and weighted survival-risk ensembles.
- Added fold-level LOOCV parallelism and shared glmnet fits for lambda variants.
- Added cohort / resampling stability diagnostics while keeping C-index as the
  default selection criterion.
- Added direct `fit_surv_ensemble(automlr_input)` support so cohort labels from
  `prepare_cohort_input()` are used automatically for stability diagnostics.
- Added `render_surv_report()` to write an HTML report with separate `figures/`
  and `tables/` folders.
- Added `export_surv_results()` for batch output, including publication-ready
  figures, tables, fitted objects, and session metadata.
- Added training-set `risk_scores.csv` export and a risk-stratified
  Kaplan-Meier figure.
- Improved publication figures with Kaplan-Meier number-at-risk tables,
  cohort heatmap legends, and optional time-dependent AUC output.
- Added optional timeROC curve export and a complete all-single-model cohort
  C-index heatmap for full variant-level inspection.
- Added IRLS-inspired publication panels: a combination-by-cohort benchmark
  matrix, multi-cohort Kaplan-Meier panels, and multi-cohort timeROC panels.
- Deduplicated the default publication output to a final figure set: all-model
  heatmap, combination benchmark matrix, multi-cohort KM where estimable, and
  multi-cohort timeROC when `timeROC` is available.
- Added `extreme_surv_screen()` for two-stage extreme screening: apparent
  full-data upper-bound ranking followed by top-N 70/30 seed search.
- Added `export_extreme_screen_results()` with complete audit tables and a
  Morandi-toned extreme-screening figure set.
- Added `summarize_extreme_screen_results()` and automatic bilingual English /
  Chinese `summary_report.md` export to explain the best apparent models,
  seed-search leaders, train / validation C-index results, cohort diagnostics,
  and failure notes.
- Added regular-analysis Markdown summary templates for data preparation,
  base-model screening, and ensemble selection. `render_surv_report()` and
  `export_surv_results()` now write bilingual English / Chinese summaries by
  default.
- Changed the regular ensemble default to search single- and two-model
  candidates (`min_models = 1`, `max_models = 2`) so users can directly compare
  the best single model with the best two-model combination.
- Added a figure-rich tutorial at
  `inst/tutorials/AutoMLR_tutorial.md`, with standalone code blocks and
  interpretation guides for regular analysis and extreme screening.
