Changes in version 7.17 - The notebook's editor themes: 37 (CarmaR's three and RStudio's 34), chosen from a gallery of live samples; a theme now paints the whole chunk, the console and the script editor. Colour values for the RStudio palettes come from the Ace editor's themes (BSD-3-Clause; see inst/AUTHORS). - R highlighting follows RStudio's token vocabulary: section heads, roxygen tags, %infix% operators, brackets, the package before ::. Changes in version 7.15 - make_runnable(): stamp already rendered HTML pages (R Markdown, bookdown, pkgdown) with the one tag that makes their R blocks runnable; idempotent, assets = "local" copies the runtime beside the pages. First CRAN submission. What changed from the package that shipped with the CarmaR desktop releases: - The package ships no binaries and no application installer. install_app(), uninstall_app() and upgrade() are gone; the desktop application is a separate product from https://lacarm.com/carmar/. - run() never contacts the network. The update check it used to make on every start is gone. - New listen(site = NULL, port = 4747, open = FALSE): a headless kernel on a fixed port for a published page, with the site approved in advance. It returns a one-row carmar_listener data frame and never moves ports; a port held by something else is an error of class carmar_port_taken. run_published() is now a thin alias of listen(). - use_publishing() returns a one-row carmar_publishing data frame instead of a list, and writes the carmar: options block (port, label) into _quarto.yml when the file has none. - New check_publishing(site = "_site"): one row per rendered page with the port, the label and whether the runtime assets are beside it. - stop_kernel("all") returns a data.frame(port, stopped). - Every error a caller might handle carries a class (carmar_bad_site, carmar_port_taken, carmar_no_start, carmar_no_page, carmar_no_site, carmar_no_extension, ...). - Documentation is generated by roxygen2, with runnable examples, a vignette and a testthat suite.