                        Changes in version 3.3.1                        

Bug fixes and refinements

  - Improved partialpro() validation of predictor limits, learner
    predictions, virtual-twin scores, and classification targets and
    probabilities. Named class targets now match named probability
    columns, and unsupported multivariate responses are rejected
    explicitly.
  - Failed or rank-deficient partial-profile fits now remain unavailable
    instead of producing flat curves. Supported-data fits are retained
    when no valid out-of-sample error comparison favors the unrestricted
    fit.
  - Fixed plot.partialpro() predictor indexing and limits, single-case
    summaries, and missing-profile handling. Unavailable standard errors
    remain NA, while available mean curves can still be displayed.
  - Improved binary partial-profile plots to preserve complete predictor
    labels, group identities, and graphics settings. Baseline-contrast
    plots now use the axis label "change from baseline".
  - Fixed gbm.learner() binary-response encoding and probability-column
    labels. GBM and BART learners now accept single numeric survival
    targets, and RF and GBM learners avoid collisions between response
    and predictor names.
  - Fixed test-data hot-encoding to preserve rows with missing factor
    values, retain encoding metadata after column selection, and prevent
    new factor levels from displacing existing training columns through
    name collisions.
  - Fixed outpro(reduce = TRUE) to expand selected original predictors
    to their fitted hot-encoded columns using the encoding map,
    preserving priority order and assigning each column its original
    predictor's weight.
  - Corrected uvarpro() importance weighting to use original-region OOB
    counts. Explicitly supplied seeds are now passed to forest
    construction, and generated response names no longer collide with
    predictor names.
  - Improved UVarPro local lasso fitting by excluding constant
    predictors, supporting a single varying predictor, and avoiding
    dummy-column name collisions.
  - Corrected varpro.strength() importance standardization for single
    responses stored as matrices or data frames and for multivariate
    regression, scaling each response's importance by its own standard
    deviation.

Documentation

  - Expanded documentation for importance and variable selection,
    cross-validation, iVarPro gradients and plotting, outPro scoring and
    calibration, UVarPro local analysis, and partial profiles. Clarified
    prediction scales, uncertainty guides, baseline contrasts, and
    reproducibility controls.

                 Changes in version 3.3.0 (2026-09-22)                  

New features

  - cv.varpro() gains optional outer cross-validation through cv.folds
    and foldid, with held-out prediction errors, selection frequencies,
    and importance-stability summaries for all three selection rules.
    The default, cv.folds = 0, retains OOB-based selection without outer
    cross-validation.
  - varpro() objects now include model.info, recording original and
    working responses, survival targets and RMST horizons, class-label
    mappings, and effective forest settings. model.info$observations
    also records input, retained, and omitted row counts, including in
    split.weight.only results (#7).

Interface changes

  - Removed iVarPro cut-ladder storage and plotting bands. plot() for
    iVarPro objects no longer supports ladder, ladder.cuts, or
    ladder.max.segments; remove these arguments from existing calls.
  - varpro(), partialpro(), rf.learner(), gbm.learner(), and
    bart.learner() now reject unnamed options, unrecognized names, and
    duplicate names in ... (#7). This includes unsupported na.action in
    varpro() and RMST, rmst, and time in partialpro().
  - rf.learner() now rejects user-supplied formula, data, xvar.wt, and
    perf.type, which the wrapper sets internally (#7).

Bug fixes and refinements

  - Added long vector support for SEXP input-output, internal transient
    allocations, and offset handling.
  - Importance summaries now map encoded columns to original predictors
    exactly, avoiding substring and regular-expression name collisions
    and incorrect pooling across responses. get.orgvimp() now reuses a
    supplied vmp summary.
  - Fixed multivariate importance-column handling and CV importance
    extraction for empty selections and forced one-variable models.
  - Improved hot-encoding of single-level factors and factors with
    nonsyntactic names. Internal survival-response names now avoid
    predictor-name collisions.
  - Fixed ivarpro() to honor scale = "global" and scale = "none"
    throughout neighborhood searches and exclude invalid local fits with
    use.loo = FALSE.
  - Corrected multivariate VarPro OOB-prediction extraction in ivarpro()
    and preserved all columns of user-supplied y.external responses.
  - Fixed iVarPro prediction to reuse training hot-encoding, preserve
    row alignment, honor noise.na overrides, and restore training OOB
    scores when predict() is called without newdata, including on a
    prediction result.
  - Improved iVarPro plotting with a single retained predictor, numeric
    gradient matrices, and plotting data containing unrelated nonnumeric
    columns.
  - Corrected survival CRPS evaluation to use the evaluation outcomes
    and matching censoring predictions, including in the fast fitting
    path. Evaluation with nblocks = 1 now respects supplied held-out
    data.
  - Improved cv.varpro() input validation, cutoff ordering, and handling
    of unavailable prediction errors, with warnings when no candidate
    error is finite.
  - Applied RFQ imbalance controls consistently in the rule-generating
    forest and cross-validation candidate forests.
  - Fixed get.rmst() to use full-ensemble survival estimates with an OOB
    fallback, validate time horizons, and preserve matrix dimensions for
    small inputs and response identities for multiple horizons. The
    integral now uses survival at each interval's left endpoint (#7).
  - Fixed varpro.strength(..., stat = "oob") to return meanOOB for
    regression.
  - Fixed sdependent() to align importance-matrix rows and columns by
    variable name before clearing self-links, fill missing release rows
    with zeros, and validate matrix values and names.
  - varpro() now warns when preprocessing omits observations with
    missing values, reporting the input, omitted, and retained counts
    (#7).

Documentation

  - Expanded documentation and examples for VarPro selection,
    cross-validation, iVarPro fitting and prediction, outPro scoring and
    calibration, and UVarPro local lasso analysis and dependence graphs.
  - Documented shap.ivarpro() with the iVarPro plotting methods and
    get.beta.entropy() and sdependent() with uvarpro().
  - Documented validation of additional arguments, supported learner
    controls, and observation counts (#7).

                 Changes in version 3.2.0 (2026-08-22)                  

New features

  - partialpro() gains a new vt.filter argument for selecting the
    virtual-twin filtering engine. The default, vt.filter = "isopro",
    preserves the existing isolation-forest filtering behavior. New
    alternatives are vt.filter = "outpro", which uses outpro-based
    out-of-distribution support, and vt.filter = "none", which disables
    VT filtering.
  - Added outpro-based VT filtering to partialpro(). For vt.filter =
    "outpro", virtual twins are scored by an outpro distance, calibrated
    against an outpro.null() reference distribution, and converted to a
    support score. The existing cut option is retained: larger values
    require stronger support and cut = 0 disables VT filtering.
  - Added distancef = "knn" to outpro(). The KNN distance is computed in
    the standardized selected predictor subspace and provides a faster
    option for large prediction or virtual-twin grids because it does
    not require the forest-neighborhood distance construction.
  - The outpro VT filter in partialpro() uses KNN distance by default
    through the hidden option out.distancef = "knn". Additional advanced
    controls are available through ..., including out.neighbor,
    out.reduce, out.cutoff, out.max.rules.tree, out.max.tree,
    out.knn.chunk.size, and out.null.
  - outpro() now supports newdata.xscale, allowing package-internal
    callers to pass new data that are already aligned to the fitted
    VarPro x-scale. This is useful for functions such as partialpro(),
    where virtual data are constructed directly from the stored VarPro
    design matrix.
  - outpro.null() now supports nulldata.xscale, providing the
    corresponding x-scale option for null/reference data.

Documentation

  - Expanded the partialpro() help file with a fuller description of the
    case-local partial-profile method, virtual-twin filtering, local
    polynomial smoothing, classification log-odds handling,
    binary-variable handling, and advanced options passed through ....
  - Expanded the outpro() documentation to describe the KNN distance
    option and the x-scale handling used by package-internal calls.

Bug fixes and refinements

  - Fixed hidden-option parsing in partialpro() so that nodesize is read
    from nodesize, not from ntree.
  - outpro.null() now uses cutoff = NULL by default, matching the main
    outpro() cutoff-selection rule and keeping null calibration
    consistent with ordinary outpro() calls.

                 Changes in version 3.1.0 (2026-04-19)                  

Breaking changes

  - importance() is now a true S3 generic rather than an alias-style
    front end.
  - partial.ivarpro() has been replaced by plot.ivarpro().
  - The supported user-facing interfaces for fitted objects are now the
    corresponding S3 generics, such as importance(), predict(), and
    plot().

S3 interface cleanup

  - Registered importance() methods for "varpro" and "uvarpro" objects.
  - Registered plot() methods for "ivarpro" and "partialpro" objects.
  - Continued support for class-specific predict() methods through
    standard S3 dispatch for "varpro", "uvarpro", "ivarpro", and
    "isopro" objects.

Documentation

  - Help topics retain dotted method names such as plot.ivarpro,
    plot.partialpro, predict.ivarpro, predict.varpro, predict.uvarpro,
    and predict.isopro so that method pages remain easy to find in the
    reference manual and via ?topic.
  - Usage sections were updated to show S3 method signatures
    consistently, for example \method{plot}{ivarpro}(x, ...) and
    \method{predict}{ivarpro}(object, ...).
  - Examples were updated to use the generic forms plot(x, ...),
    predict(object, ...), and importance(object).
  - The iVarPro plotting documentation now uses data for the original
    feature matrix and documents target explicitly for multivariate and
    multiclass outputs.

Migration notes

  - Replace calls of the form partial.ivarpro(iv, var = ...) with
    plot(iv, var = ...).
  - Prefer importance(fit) over direct calls to importance.varpro(fit).
  - Prefer predict(fit, ...) over direct calls to predict.class(fit,
    ...).

                 Changes in version 3.0.0 (2026-04-08)                  

Improvements

  - Refactored varpro.strength() to reduce R-side post-processing
    overhead after the native varProStrength call, improving performance
    on large forests and large membership reconstructions.
  - Improved scalability and stability of varpro.strength(...,
    membership = TRUE) for very large analyses.
  - For RHF grow objects, varpro.strength() now uses the integrated
    hazard exposure values stored on the fitted object (int.haz.oob) as
    the default working response when available.
  - Internal cleanup of native-output decoding and membership
    reconstruction logic.

Bug fixes

  - Fixed a failure that could occur on very large analyses when
    rebuilding membership lists in R after native execution, which could
    previously surface as an integer-overflow warning from cumsum()
    followed by a downstream missing-value error in membership
    reconstruction.

                 Changes in version 2.1.0 (2026-02-12)                  

  - Major refactoring and enhancement to functions downstream from the
    entry varpro() function.

                 Changes in version 2.0.0 (2026-01-11)                  

  - Improved ivarPro.
  - Refactored code to improve speed.
  - Eliminated or replaced mclapply() with PSOCK-based parallel
    execution, improving Windows compatibility.

                 Changes in version 1.0.1 (2025-12-14)                  

  - CRAN compliance fixes.

                 Changes in version 1.0.0 (2025-12-11)                  

  - Initial release.
