Changes in version 1.5.0.9000 Changes in version 1.5.0 (2026-01-12) - More performant implementation of HandlerStack, DelayStack, and TimeStack. These internal constructs are now implemented as closures instead of R6 classes. - More performant logging. Default is to not log as it is still somewhat expensive. Formatting is now using glue-like formats but not glue and doesn't allow expressions inside the format string - rename logger_silent() to `logger_void()`` - Remove cli formatting of log messages - Request and Response objects are now unclassed before sending them to the handlers. This will break code that checks the class of these. Use reqres::maybe_request() to check for likeliness to Request objects instead. Changes in version 1.4.1 (2025-11-18) - Added logger_silent() which does completely nothing Changes in version 1.4.0 (2025-11-10) - Add support for OpenTelemetry through the otel package - Request/Response object are now persistent across header and request logic (#55) Changes in version 1.3.0 (2025-08-20) - Added serve_static() method to Fire to serve a directory of static files directly outside the request loop - Move code over to rlang style programming - Full rewrite of condition handling. - Added logger_logger() to use the logger package for logging - Fire$log() now supports cli syntax in the message - Support for the reqres_problem conditions - Fire$log() now supports passing in a condition as message - Added Fire$data_store field to complement Fire$get_data() and friends. It provides direct access to the global data store - Allow naming plugins when they are attached - showcase in Fire$ignite()/Fire$run() can now take a string giving the path to open the browser at. - Improve the default session id handling and added session_id_cookie() helper function for constructing session ID extractor - Deprecate use of future. Fire$delay() and Fire$time() now uses quosures and Fire$async() has been soft deprecated in favor of letting the user use whatever async framework they like - Support returning promises in request events, and automated error logging from promises in all events - Added websocket-opened event that allows the user to add a handler that modifies the WebSocket connection when it is established Changes in version 1.2.1 (2024-02-05) - Fixed a test failure only affecting the CRAN M1 machine Changes in version 1.2.0 (2023-03-17) - Update to work with new future release - Move from assertthat to rlang based type checking Changes in version 1.1.4 (2022-08-16) - General upkeep (new CI, redocument, etc) Changes in version 1.1.3 (2020-12-15) - Avoid tests that fails on some CRAN machines due to new testthat version Changes in version 1.1.2 (2019-09-27) - Fix bug where delayed logging would result in wrong message being logged (#39) - Remove some tests as new later architecture makes certain async operations untestable (#40) - pkgdown site now available at https://fiery.data-imaginist.com Changes in version 1.1.1 (2018-10-22) - Fix bug with root mounting of app where the root would be stripped before checking if it exists. - Fix a bug when evaluating multiple futures at once, where the removal of the futures would throw an error (#28) - Fix a bug preventing setting loggers on cloned apps (#30) - The call that raises a caught error is now recorded in the log (#33) Changes in version 1.1.0 (2017-10-26) - Add logging API. Set custom loggers with set_logger() and send messages to the log with log(). Logging is automatically delayed so it doesn't slow down request and message handling (#18). - Added access_log_format field to define how requests are logged. - Added is_running() method to query the state of the server. - Capture errors in each handler for events and delayed execution, so that evaluation of the other handlers are unaffected (#20). - Document the use of delayed evaluation. See ?delay_doc Changes in version 1.0.0 (2017-08-16) - Fire$new() now takes a port and host argument to set these fields on initialisation. (fixes #5) - BREAKING Results from before-request and before-message events are now passed on to the request and message handlers as a list in the arg_list argument rather than as single arguments. - The host and port are now advertised when a server is started/resumed (#11) - Fire objects now has a print method (#12) - BREAKING fiery now uses the reqres Request and Response classes for handling http exchange. - BREAKING attach() now expect a on_attach() method rather than a onAttach() method from the plugin. It also expects a name field and optionally a require field - BREAKING The header event now expect handlers to return a logical, with TRUE indicating further processing, and FALSE indicating termination. - Cycle events are now triggered when running with block = FALSE making the two run modes identical in their life cycle events. - BREAKING The after-request event will no longer pass the response to handlers. This can be retrieved from the request object. - The server can now be mounted at a path, which will strip that path from request paths thus making the app logic independent on mounting. Use the root field to access and change the root location. - Websocket connections can now be closed from the server by using the close_ws_con() method. - Better documentation. Events and plugins now has their own documentation entries (fixes #10). - Convert roxygen documentation to md format - BREAKING fields now uses snake_case rather than camelCase for a more consistent interface. This means refreshRate -> refresh_rate, triggerDir -> trigger_dir. - Switch to MIT License - Catch errors in start and resume event handlers Changes in version 0.2.3 (2017-06-26) - DelayStack uses sequential futures with lazy = TRUE because previously used lazy futures are deprecated Changes in version 0.2.2 (2017-01-07) - Changed default host to 127.0.0.1 - Fixed test errors on Windows builders Changes in version 0.2.0 - Added fake_request to generate fake, rook-compliant, request objects. Useful for testing - Added header method to Fire for setting global header policies - Added standard 4xx responses - Added FutureStack class and subclasses to capture expressions for later, timed, and async evaluation - Added delay, remove_delay, time, remove_time, async, and remove_async methods to Fire for adding delayed, timed, and async expressions for evaluation Changes in version 0.1.0 - Added Fire class encapsulating the server runtime - Added HandlerStack class to store and trigger event handlers