• Add is_renv_project criterion looking for an renv.lock file (@gadenbuie, #86).
  • Add is_quarto_project criterion looking for a Quarto project (@olivroy, #91, #92).


  • Update maintainer e-mail address.


  • Wrap :: to skip if not installed in tests (#94).
  • Add is_pkgdown_project root criterion looking for a _pkgdown.yml, _pkgdown.yaml, pkgdown/_pkgdown.yml and/or inst/_pkgdown.yml file (#79, @salim-b).
  • Avoid LazyData in DESCRIPTION.


  • In find_root_file(), if the first path component is already an absolute path, the path is returned unchanged without referring to the root. This allows using both root-relative and absolute paths in here::here(). Mixing root-relative and absolute paths in the same call returns an error (#59).
  • find_root_file() propagates NA values in path components. Using tidyverse recycling rules for path components of length different from one (#66).
  • has_file() and has_file_pattern() gain fixed argument (#75).
  • New is_drake_project criterion (#34).
  • Add subdir argument to make_fix_file() (#33, @BarkleyBG).
  • Update documentation for version control criteria (#35, @uribo).

Breaking changes

Bug fixes

  • The is_dirname() criterion no longer considers sibling directories (#44).


  • Use testthat 3e (#70).
  • The backports package is no longer imported (#68).
  • Re-license as MIT (#50).
  • Move checks to GitHub Actions (#52).
  • Availability of suggested packages knitr and rmarkdown, and pandoc, is now checked before running the corresponding tests.
  • Availability of suggested packages knitr and rmarkdown, and pandoc, is now checked before running the corresponding tests.
  • Adapt to testthat 2.0.0.
  • New thisfile(), moved from kimisc (#8).
  • Add more examples to vignette (#26, @BarkleyBG).
  • Detect .git directories created with git clone --separate-git-dir=... (#24, @karldw).
  • New root criteria
    • is_projectile_project recognize projectile projects (#21).
    • has_dir() constructs root criteria that check for existence of a directory.
    • is_git_root, is_svn_root and is_vcs_root look for a version control system root (#19).
  • New function
    • get_root_desc() returns the description of the criterion that applies to a given root, useful for composite criteria created with |.
  • Minor enhancements
    • Improve formatting of alternative criteria (#18).
    • If root cannot be found, the start path is shown in the error message.
  • Internal
    • The $testfun member of the rprojroot S3 class is now a list of functions instead of a function.
  • Compatibility
    • Compatible with R >= 3.0.0 with the help of the backports package.
  • New root criteria
  • Minor enhancement
    • Criteria can be combined with the | operator (#15).
  • Documentation
    • Add package documentation with a few examples (#13).
    • Clarify difference between find_file() and make_fix_file() in vignette (#9).
    • Remove unexported functions from documentation and examples (#10).
    • Use pkgdown to create website.
  • Testing
    • Use Travis instead of wercker. Travis tests three R versions, and OS X.
    • Improve AppVeyor testing.
  • Fix test that fails on Windows only on CRAN.

Initial CRAN release.