'***' denotes important announcements
'**' denotes big changes visible to the user
'*' denotes minor changes visible to the user
'.' denotes minor bug fixes

Deprecated and liable to be removed in a future version:
 * buildjulia() and assorted functions (as of 2020-02-04)
 * conv() has been renamed to converged() (as of 2020-02-05)

1.6

*** Function conv() has been renamed to converged(). Of course, an alias
    remains, but it is now deprecated and will be removed in a future release.
** clm and clmm support
* Argument 'cl' now accepts an integer argument, in which case buildmer will
  create and manage a cluster for you
* REML can now be forced on by passing REML=TRUE. As an optimization, REML is
  forced on if the deviance-explained criterion is used. This can be disabled
  by passing REML=NA, which will fall back to the default behavior of
  differentiating between ML and REML. The ability to force REML off by
  passing REML=FALSE remains. This 'hidden' argument is now properly
  documented, as is the other hidden argument, 'dep'. For buildcustom(), where
  this option was already used explicitly with a different meaning, the old
  behavior remains as the new behavior doesn't make much sense if the user is
  specifying their own fitting function anyway.
* Remove deprecated 'reduce.fixed' and 'reduce.random' arguments (deprecated
  since 2019-11-27)
* Print the failure details when convergence failures cause order() or
  backward() to exit early
. Fix a bug combining backward() with the 'include' argument (GH issue #3)
. Fix a bug in calculating Wald p-values for ANOVA F scores affecting ndf >1
. Allow ddf='KR' as an abbreviation for ddf='Kenward-Roger'

1.5 (2020-03-01)

*** API change to the 'crit' function, which now has a new function signature
    (p,cur,alt)
*** Deprecate buildjulia due to the maintenance cost of duplicating all the
    important likelihood functions. You can code these yourself using
    buildcustom().
** Likelihood-ratio tests for random effects are now modeled as a mixture of
   chi squares (Stram & Lee 1994), rather than by dividing the p-value by 2.
   This makes a difference only for model terms with >1 change in df.
** PQL is okay with Gaussian errors (Breslow & Clayton 1993); this is now
   known to buildbam(), buildgam(), and buildgamm(). These now default to LRT,
   and give an error message with advice if errors are not Gaussian.
* Relax convergence tolerances for negative eigenvalues to -0.002 (mgcv and
  glmmTMB models only)
* Relax convergence tolerance for gradients to 0.04 (mgcv models only)
* Convergence messages are now more informative due to an added human-readable
  'reason' attribute
. re2mgcv no longer uses 'by', to possibly work around segmentation faults
. Progress messages are now word-wrapped properly
. Fix incorrect filtering of '...' for (g)lmtree models

1.4 (2019-12-03)

*** The 'reduce.fixed' and 'reduce.random' arguments have been deprecated; use
    the 'include' argument instead
** Add new criterion 'devexp' (alias: 'deviance') based on the explained
   deviance. Modify buildbam() so that, in the generalized case, it only
   accepts this criterion. bam() and gam() with non-outer optimization use PQL,
   which was incorrectly permitted by the previous version of the PQL guard
** S3 and S4 method passthrough support
** gamm support
** buildgam() has gained an experimental 'quickstart' argument that prefits
   each gam model using bam() to obtain starting values. Specifically for the
   'scat' family, the optimized theta values indicating the degrees of freedom
   and the scale parameter will also be passed on to the gam() call, but only
   if the mgcv version is at least 1.8-32
** Added new function 're2mgcv()' that makes it possible to use buildgam()
   with lme4-style random effects (with correlations removed)
* Smooth terms are now no longer forced to be evaluated after parametric terms
* For general families that are fitted with REML only, buildgam() now makes
  the appropriate modifications to the gam() call and include list
* buildcustom() has gained the ability to use buildmer's ML/REML
  differentiation facilities; turn this on by passing REML=TRUE to the call to
  buildcustom()
* Split up buildmer() and buildgamm4()
. Filter ... argument more precisely in the various buildmer() fitting paths
  for non-mixed models (lm/glm/gls)
. Fix bugs in remove.terms() and in order() affecting certain models containing
  smooths
. buildgam() is now properly able to fit intercept-only models
. Convergence for glmmTMB models is now checked correctly if there are/seem to
  be (as with REML=TRUE) no fixed effects
. Work around glmmTMB issue with REML for poisson and binomial models
. build.formula() now also handles formulas where fixed and random effects are
  not strictly in that order (which fixes 'include' for random effects)
. Implement workaround in buildgls() to work with rank-deficiency
. Wrap examples in requireNamespace()
. Explicitly fit (fixed/random)-intercept models as well, which was skipped in
  earlier versions. Add dependency on nlme, as gls() is used when
  transitioning from fixed to random effects in lme4 models.
. Fix diag() and add.terms() for one-sided formulas

1.3 (2019-09-28)

** GLMMadaptive support
* lme models (package nlme) now have full support for the random part as well
* glmertree models now have full support for stepwise elimination
* calc.anova is now FALSE by default. Most users will not use it anyway, and
  for some lmerTest-based models it can cause an error.
* It is now (experimentally) possible to pass REML=FALSE to all buildmer
  functions to disable REML detection and always use ML. This may be useful if
  you are fitting GLMMs using glmmTMB and do not want to use their REML
  approximation.
. Nonconvergence of the fixed-effects part of the term-ordering step is now
  handled properly
. Fix bugs in order() and forward() breaking ML-only GLMM fits (GitHub issue #2)
. The 'include' argument was not being processed correctly when a cluster was
  provided. This is now fixed.

1.2.1 (2019-09-03)

. Avoid the use of reformulate(), as its env= argument is only available on R
  >= 3.6 (bug reported by Willemijn Heeren)
. Relax the convergence checks for negative eigenvalues (affects mgcv and
  glmmTMB models)
. Improve detection of random effects
. Remove terms by block when a reference model fails to converge and detect
  empty models

1.2 (2019-08-27)

** Proper environment support
** glmertree support
* More formal support for diagonal covariance structures via a new 'groups'
  argument to tabulate.formula
* Retire the 'quiet' argument
* Overhaul documentation
* Significantly improve family handling
* Allow 'include' to take a tabulated formula
* conv() now accepts a singular.ok argument, which is always FALSE inside
  buildmer
. Improve REML detection
. Increase robustness with user-provided formula tab
. Make convergence checks more consistent between model types
. Rework add.terms and related random-effects detection to fix obscure bug
  when tabulating non-r.e. terms that fool lme4::findbars (e.g. 'ar1(x|g)')

1.1 (2019-05-18)

** Large rewrite of internal code organization. You can now specify arbitrary
   fitting functions, criteria, and elimination functions.
* Add 'include' argument to force terms to always be in the formula (fixes
  github bug #1)
* New function 'buildcustom'
* Added raw log-likelihood as a criterion: 'LL'
. Fix bug in calculating anova table with lmerTest ddf options
. Make calcWald respect numerator df in anova table
. Remove incorrect gradient check for mgcv models in conv(), instead check for
  'full convergence' string

1.0 (2019-03-31)

*** First public release
