                 Changes in version 0.1.0 (2026-10-16)                  

First release.

  - Selection differentials and linear, quadratic and correlational
    gradients on relative fitness, with p-values from the logistic model
    for survival and from a Poisson or negative binomial model for
    counts.
  - Cubic spline fitness functions with a bootstrap band, two-trait
    fitness surfaces drawn only where there are data, and adaptive
    landscapes of mean fitness for one or two traits.
  - count_family = "quasipoisson" or "nb" in univariate_spline(),
    correlated_fitness_surface() and temporal_landscape() for
    overdispersed counts; the spline and the surface report the
    dispersion.
  - by_group = TRUE in the spline and the surface fits each group on its
    own and returns a list of fits.
  - Several groups on one surface, with each group's mean and highest
    point marked, and interior peaks told from maxima at the edge of the
    data.
  - Fitness functions and landscapes fitted period by period.
  - Bootstrap standard errors and percentile intervals for the
    gradients, and leave-one-out (HC3) standard errors with se_type =
    "hc3".
  - Assumption checks in one table: multivariate normality of the
    traits, VIF, rows per term, residuals or dispersion of the gradient
    model.
  - Bumpus's sparrows, Martin's pupfish and two sets of Galapagos
    finches bundled as datasets, with CSV copies of the pupfish and
    finch data in extdata.
  - A Shiny app that runs the analyses in a browser, opened with
    run_app(), which writes out the R calls that repeat an analysis with
    the current settings.
  - canonical_analysis() rotates the gamma matrix to its canonical axes,
    with double-regression standard errors, permutation p-values
    (Reynolds et al. 2010) and an optional bootstrap, and
    plot_canonical_axes() draws fitness along them.
  - Standard errors and a band on the GAM fitness surface, drawn with
    the plots' uncertainty option, and peak_difference() to compare two
    points of a surface, or each with the pass between them (route =
    "line" for the straight line).
  - The adaptive landscape reports how much of each simulated population
    falls outside the data, and flags an optimum on the edge of the
    grid; the plot can mark where the population leaves the data.
  - A clamp option on the landscape and the thin-plate surface holds
    predicted fitness inside the range of the fitness type; on by
    default.
