# Formula 1.2-5

* Improve `dot` handling in `model.matrix()` method when setting up the
  terms (reported by Kevin Tappe).


# Formula 1.2-4

* `model.part()` method tries to avoid calling `has_dot()` by checking the
  data attributes first. This can greatly improve speed when there are lots
  of variables in a model part that is actually not of interest.


# Formula 1.2-3

* Extended processing of formulas with one or more `.` on the
  right-hand side: In addition to `"separate"` and `"sequential"` processing,
  there is now `dot = "previous"` which resolves the `.` relative to
  the previous right-hand side part.

* `model.part()` failed in case of variables/terms with very long
  names. Now `deparse(..., width.cutoff = 500)` is used to support
  very long variable names as well.


# Formula 1.2-2

* Enhance `Formula()` so that if a `Formula` is supplied it is simply
  returned unchanged (rather than throwing a warning).

* Enhance `update()` method for `Formula` object so that also the "new"
  formula can be a `Formula` object.


# Formula 1.2-1

* Bug fix for formulas with transformed variables on the left-hand
  side (e.g., `cbind()`, `log()`, or `Surv()`) and one ore more `.` on the
  right-hand side. The `terms()` and hence the `model.frame()` now work
  smoothly. When using `model.part()` the same `Formula` (plus `dot`
  argument) has to be supplied when preparing the `model.frame()` and
  the `model.part()`.


# Formula 1.2-0

* Extended processing of formulas with one or more `.` on the
  right-hand side.


# Formula 1.1-2

* Added a `str()` method.


# Formula 1.1-1

* The `CITATION` was incorrect and is fixed now.


# Formula 1.1-0

* All methods returning `formula` or `Formula` objects now preserve the
  environment of the originally supplied object by default.

* The default and formula methods of `as.Formula()` methods now also take
  an `env` argument.


# Formula 1.0-1

* Added a `terms = FALSE` argument to `model.part()` method for `Formula`
  objects. This can be leveraged when processing multiple offsets.
  For example for `y ~ x + offset(o1) | z + offset(o2)`. See `?model.part`
  for a worked example.


# Formula 1.0-0

* Package now published in _Journal of Statistical Software_:
  [doi:10.18637/jss.v034.i01](https://doi.org/10.18637/jss.v034.i01)
  and `citation("Formula")` within R. 

* Added an `all.equal()` method for `Formula` objects that produces
  more intelligible output in case the result is not `TRUE`.

* Fixed an error of the `update()` method for `Formula` objects
  without LHS.


# Formula 0.2-0

* Major revision (not fully backward compatible) to enable support
  for multiple responses and multiple parts on the right-hand side
  such as
  `y1 | y2 ~ x`,
  `y1 + y2 ~ x1 + x2 | z1`, or
  `y ~ u1 + u2 | v1 | x1 + x2`
  and combinations of these.
      
* `Formula` objects now consist of the original formula plus two
  attributes `"lhs"` and `"rhs"` that contain the parts of the decomposed
  left- and right-hand side, respectively.

* Most methods take arguments `"lhs"` and `"rhs"` which allow selection
  of the desired parts on the left- and right-hand side respectively,
  e.g., in a `model.frame()` or `model.matrix()`.
  
* The previous arguments `response = TRUE`/`FALSE` and
  `part = "first"`/`"second"`/`"both"` were not flexible enough anymore
  and have been deprecated. Use the streamlined `lhs`/`rhs` arguments
  instead.

* `vignette("Formula", package = "Formula")` illustrates usage of
  the tools provided by the package and explains the ideas underlying
  its implementation.


# Formula 0.1-3

* Added `CITATION` file.

* Added a `has.intercept()` function with methods for `formula` and
  `Formula` objects.

* Change the default value for `model.frame.Formula`: `"both"` for a
  two-part formula and `"first"` otherwise.


# Formula 0.1-2

* Bug fix: `as.Formula()` failed for very long formulas.


# Formula 0.1-1

* First CRAN release of package `Formula` for extended
  formula processing. This package is still under development
  and the interface might change in future versions.

* Currently, this enables processing of formulas such as
  `y ~ x1 + x2 | z1 + z2 + z3`
  with two parts on the right hand side.
  
* Generalization to further formulas are planned (i.e.,
  not implemented yet), e.g.,
  `y1 + y2 ~ x1 + x2 + x3` or
  `y ~ x1 + x2 | u1 | v1 + v2 + v3 | ...`
  i.e., multiple responses and multi-part formulas.
