# -*- mode: org ; ispell-local-dictionary: "british" -*-

* xkcd 0.1.1

** External
- **Reproducible wobble.** `geom_xkcdpath()` and `xkcdman()` gain a `seed`
  argument. With a seed the same plot renders identically every time; each row is
  offset from the seed so figures still differ from one another. The global RNG is
  left untouched.
- **New `wobble` argument** to `geom_xkcdpath()`, a scalar multiplier on both
  jitter amounts. `wobble = 1` is the previous behaviour; `wobble = 0` draws
  straight lines.
- **`ratioxy` is now a proper aesthetic** with a default of 1. Previously it was
  read only as a data column, so passing `ratioxy =` as a layer argument was
  silently ignored and circles rendered as ellipses.
- **`xkcdman()` now uses `geom_xkcdpath()`**, as 0.1.0 intended but did not do. A
  stick figure is now two layers instead of eight `xkcdline()` calls.
- **`xkcdline()` now warns.** It is deprecated in favour of `geom_xkcdpath()` and
  will be removed in a future release.
- **`xkcdrect()` rewritten as a proper geom (breaking).** It is now a single
  `layer()` backed by the new `GeomXkcdRect`, instead of evaluating its own mapping
  and returning a list of five layers. This means it now supports faceting, the
  `.data` pronoun, and aesthetics inherited from the plot -- none of which worked
  before. The fill and border are set with the standard `fill`, `colour` and
  `linewidth` aesthetics and may be mapped to variables; the old `fillcolour`,
  `bordercolour` and `borderlinewidth` arguments still work for one release but
  warn. `xkcdrect()` also gains `wobble` and `seed`.

** Internal
- Fixed the CRAN NOTE on r-devel: the `xkcd-intro` vignette used the deprecated
  `structure(..., .Label=)` idiom to build a factor.
- `theme_xkcd()` caches the `extrafont::fonts()` lookup for the session instead of
  reading the font database on every call.
- Single shared mask-thickness rule; previously duplicated with divergent formulas
  in `xkcdline()` and `GeomXkcdPath`.
- Path expansion in `GeomXkcdPath$draw_panel()` preallocates and hoists the
  row-invariant column lookup out of the loop.
- Added a `testthat` suite (edition 3); the package previously had no tests.
- Dropped the unused `lattice` suggestion and the unused `grid::polylineGrob`
  import. Dropped `rlang` from Imports; the `GeomXkcdRect` rewrite removed the
  only use of `eval_tidy()`.
- Added `ggrepel` to Suggests and replaced `library(tidyverse)` with
  `library(dplyr)` in the penguins vignette, so no vignette uses an undeclared
  package.
- `build-site.sh` and `stickfigurehelper/` are now in `.Rbuildignore`; they are
  site-build assets, not package content.

* xkcd 0.1.0

** External (Breaking Changes)
- **Deprecated `xkcdline()`** and introduced the new, robust **`geom_xkcdpath()`**. Users should migrate from `xkcdline(...)` to `geom_xkcdpath(aes(x=x, y=y, xend=xend, yend=yend), ...)` for segments, and utilize the new `diameter` aesthetic for circles.
- **Improved `xkcdaxis()`** to use the new `geom_xkcdpath()` internally.
- **Improved `xkcdrect()`** to use the new `geom_xkcdpath()` for borders.
- **Improved `xkcdman()`** to use the new `geom_xkcdpath()` for drawing bones and the head. (This landed in 0.1.1; in 0.1.0 `xkcdman()` still called `xkcdline()`.)
- **Modernized `theme_xkcd()`** with improved font checking logic.
- **Vignette converted** from Rnw/LaTeX to R Markdown (`.Rmd`) format.

** Internal
- **New Core: `GeomXkcdPath`** introduced to replace old, fragile NSE (Non-Standard Evaluation) logic in `xkcdline`. This uses native `ggplot2::ggproto` for robust data mapping.
- **Moved helpers** `pointssegment` and `pointscircunference` into `R/xkcdline.R`, and removed the old data manipulation functions (`mappingjoin`, etc.).
- **Updated Dependencies:** Added `grid` and `rlang` to Imports for custom geom implementation.


* xkcd 0.0.6

** External
Updated to be used with ggplot2 version >=3.0.0. Mayor changes in aesthetics functions.

- xkcdline: 
     - Aesthetic specifications change: aes(x,y,xend, yend) (Originally, it was aes(xbegin,ybegin, xend, yend)). Example: ggplot() + xkcdline(mapping=aes(x=x1 +y1, y=y1, xend =xend, yend= yend, color = model), data=data)
** Internal
- pointssegment: replaced xbegin and ybegin by  x and y.
- xkcdline: New form to work with aesthetics
- createdefaultmappinganddata: New form to work with aesthetics
- mappingjoin2: Removed unknown aesthetics
- xkcdman: xbegin and yend removed.
- xkcdrect: Border lines are updated

* xkcd 0.0.5

** External

- DESCRIPTION: Title field in title case
- change NEWS file

** Internal

- ggplot 2.0 does not like ... I disable this option in xkcdline


