Changelog
Source:NEWS.md
CHANGES IN servr VERSION 0.33
CRAN release: 2026-06-16
The package has a documentation site now: https://git.yihui.org/servr/
Requires xfun >= 0.58. The internal helpers
fileinfo_table()andhtml_doc()for rendering directory listings have been moved into xfun and are now shared between servr andxfun::serve_dir().
CHANGES IN servr VERSION 0.31
CRAN release: 2024-08-29
- A fallback
favicon.icowill be provided if it does not exist when serving files (thanks, @MMJansen, rstudio/pagedown#329).
CHANGES IN servr VERSION 0.30
CRAN release: 2024-03-23
- Fixed a bug that caused WebSockets to fail when the URL contains a hash.
CHANGES IN servr VERSION 0.28
CRAN release: 2023-12-19
- Added support for HTTP authentication (thanks, @statquant, #63). For all server functions in this package, you can use the
authargument to provide the authentication scheme and credentials. See the help page?servr::server_configfor more info.
CHANGES IN servr VERSION 0.27
CRAN release: 2023-05-02
Fixed an issue with
vign()that when an error occurs in the vignette,vign()wouldn’t stop rebuilding the vignette.Fixed a character encoding issue #62 (thanks, @eternal-flame-AD).
CHANGES IN servr VERSION 0.26
CRAN release: 2023-03-18
vign()also watches for changes in js/css files now.Stop using the
encodingargument ofknitr::knit()andrmarkdown::render().Removed the experimental function
notebook()from several years ago.
CHANGES IN servr VERSION 0.25
CRAN release: 2022-11-04
Added a function
create_server()to create a server with a custom HTTP request handler and optionally a WebSocket handler.Added a function
redirect()to return a redirect response.Added a new argument
excludetorandom_port()to exclude certain port numbers when generating a random available port.The
baseurlargument works for all server functions now, such ashttd().
CHANGES IN servr VERSION 0.24
CRAN release: 2021-11-16
- When searching for an available random port via
servr::random_port()on the host127.0.0.1, the availability of the port is also tested on0.0.0.0by default. This is to avoid the situation where a port has been used on0.0.0.0but httpuv still thinks it is available on127.0.0.1. If you want to skip this additional testing, you may setoptions(servr.test.0.0.0.0 = FALSE).
CHANGES IN servr VERSION 0.22
CRAN release: 2021-04-14
- When the global option
options(servr.test.0.0.0.0 = TRUE),random_port()tests the availability of a port at the host address0.0.0.0when the requested host address is127.0.0.1.
CHANGES IN servr VERSION 0.21
CRAN release: 2020-12-14
Added a new argument
hosturltoserver_config().Added a new argument
filtertohttw()to allow users to filter file paths on the watch list (thanks, @ARawles, #51).
CHANGES IN servr VERSION 0.20
CRAN release: 2020-10-19
-
server_config()will add a leading/tobaseurlif it has not already been included.
CHANGES IN servr VERSION 0.19
CRAN release: 2020-10-06
-
server_config()also returns thedaemonvalue in the list.
CHANGES IN servr VERSION 0.18
CRAN release: 2020-07-28
Fixed the malformed Accept-Ranges header (thanks, @JasonPunyon, #47).
servr::random_port()looks for an available port quietly viahttpuv::startServer(quiet = TRUE). This requires httpuv >= v1.5.2.
CHANGES IN servr VERSION 0.17
CRAN release: 2020-05-26
- Added an argument
opentoservr::browse_last()so users can decide whether to reopen the lastly browsed page.
CHANGES IN servr VERSION 0.16
CRAN release: 2020-03-02
- Refinements to HTTP range request responses. Open-ended range requests (including “Range: bytes=0-”) should now be correctly handled (thanks, @raymondben, #41).
CHANGES IN servr VERSION 0.15
CRAN release: 2019-08-07
- When the environment variable
R_SERVR_PORTis set,server_config()may issue a superfluous warning “createTcpServer: address already in use” due to an unnecessary call torandom_port()(thanks, @itcarroll, #39).
CHANGES IN servr VERSION 0.14
CRAN release: 2019-06-11
- The argument
hostinserver_config()can be configured through the global optionservr.hostnow, e.g.,options(servr.host = '0.0.0.0').
CHANGES IN servr VERSION 0.13
CRAN release: 2019-03-04
Added a
verboseargument toserver_config().The
intervalargument ofserver_config()can be set via the global optionservr.intervalnow. For example,options(servr.interval = 0.5).Server functions such as
httd()now return the config object created byserver_config()instead of the server handle returned byhttpuv::startServer(). The config object contains various information about the server and methods to start/stop the server.
CHANGES IN servr VERSION 0.12
CRAN release: 2019-02-07
Exported the function
random_port()to return an available random TCP port.daemon_list()returns server IDs instead of handles, so that it will work with httpuv >= v1.4.5.1 (rstudio/blogdown#365).
CHANGES IN servr VERSION 0.11
CRAN release: 2018-10-23
- The default value of the
portargument ofserver_config()can be set via the environment variableR_SERVR_PORT. If the environment variable does not exist, the global optionservr.portwill be used if set, e.g.,options(servr.port = 4322). See?servr::server_configfor details.
CHANGES IN servr VERSION 0.10
CRAN release: 2018-05-30
Added a function
browse_last()to reopen the last browsed page.The
daemonargument inserver_config()now defaults tointeractive(), i.e., servr starts a daemonized server that does not block your interactive R session by default.
CHANGES IN servr VERSION 0.9
CRAN release: 2018-03-25
- The web browser may be opened too early (before the server is ready) (originally reported at rstudio/rstudio#2475).
CHANGES IN servr VERSION 0.8
CRAN release: 2017-11-06
- added another implementation of the daemonized server based on the later package, since the previous implmentation based on
httpuv::startDaemonizedServer()could crash the R session on Windows
CHANGES IN servr VERSION 0.7
CRAN release: 2017-08-17
added a new argument
watchtoservr::httw()exported the function
server_config()files/directories that contain multibyte characters in path names cannot be served correctly (thanks, Hao Peng)
CHANGES IN servr VERSION 0.6
CRAN release: 2017-05-12
on 404 (page not found), 404.html will be displayed if it exists under the root directory
improved the support for HTTP Range requests, e.g. servr can correctly serve MP4 videos now in major browsers including Safari
servr should decode requested paths before reading them (https://github.com/rstudio/blogdown/issues/85)
CHANGES IN servr VERSION 0.5
CRAN release: 2016-12-10
added an argument
initpathtoserver_config()so you can open a specific path initially in the web browserthe
daemonargument ofserver_config()takes the default value from the global optiongetOption('servr.daemon')now, e.g., you can setoptions(servr.daemon = TRUE)so that the daemonized server is always used
CHANGES IN servr VERSION 0.4.1
CRAN release: 2016-11-09
excluded ports considered unsafe by Chrome http://superuser.com/a/188070 when selecting a random port automatically
fixed a bug in 301 redirection when serving a directory without the trailing slash
CHANGES IN servr VERSION 0.4
CRAN release: 2016-04-15
you can disable websocket listening on an HTML page using a special HTML comment
<!-- DISABLE-SERVR-WEBSOCKET -->when servr is serving and watching a directory, so that this page will not communicate with R (e.g. when it is updated, R will not send signals to refresh it) (thanks @hafen, #25)a random TCP port will be used if the port 4321 is not available
CHANGES IN servr VERSION 0.2
CRAN release: 2015-03-30
when running inside RStudio, the RStudio web browser will be used if available (requires RStudio >= 0.98.439)
added three server functions jekyll(), rmdv1(), and rmdv2() to serve Jekyll websites, R Markdown v1, and R Markdown v2 documents, respectively
added a server function vign() to serve R Markdown/HTML package vignettes
added a server function make() to serve a directory and update files automatically via Makefile (#2)
the URL pathname foo will be redirected to foo/ automatically if foo is a directory (#5)
in case of errors when serving dynamic documents, the server functions will double the delay to check for updates and wait for the next build until the error is cleared (like Gmail)