Repository navigation
Releases
Releases · eitsupi/arf
0.7.0 - 2026-11-09
Immutable
release. Only release title and notes can be modified.
Release Notes
Added
arf history migratecopies history from the previous default location to the current one, skipping duplicates and leaving the old files in place. Use--dry-runto preview (#454, #455).- Experimental: IPC clients can keep a connection open with
attachand receive events from the session as they happen, so editors and other tools can follow it without polling (#465, #466, #468, #469, #470, #471, #472, #496, #497).arf ipc attachbridges such a connection over stdin/stdout, with optional event subscriptions. Closing stdin ends the bridge while leaving the R session running (#496).- R code can publish its own events with
arf_publish_event. - Subscribers receive
arf.execution_completedwhen terminal input or IPC user code finishes. Responses include an execution ID that matches it. - Subscribers receive R stdout and stderr through
arf.console_output, followed by the matching completion event (#497). - Sessions can expose named R functions ("handlers") for IPC clients to call with JSON arguments, with
--ipc-exposeat startup or later with:ipc exposeafter the user confirms. Handlers are not subject to the code evaluation policy, so expose only functions that validate their arguments.
- Experimental:
arf ipc interrupt [--pid] [--execution-id]and the JSON-RPCinterruptmethod can request interruption of an active IPC evaluation while keeping the R session alive (#489). - Experimental:
arf ipc r-help searchsearches installed R help topics andarf ipc r-help showretrieves Markdown pages without evaluating R, including while R is busy (#499). - Experimental: IPC
evaluateresponses includestatus(ok,error,interrupted, orunknown), matching the execution completion event so clients can detect errors in visible evaluations (#494). - Experimental: arf can start R from a Pixi environment or a rig project (#407, #411, #412, #419, #420, #423).
{ provider = "pixi" }inexperimental.r_source_overridesuses R from the active Pixi environment, such as underpixi run arf, without requiring rig (#407).{ provider = "rig-project" }uses R from a synchronizedrig projproject in the current directory (#419, #420).--r-providerandARF_R_PROVIDERselectpixiorrig-projectexplicitly. Unlike configured overrides, an unavailable provider is an error rather than a fallback (#411, #420).arf r resolveandarf headless --jsonreport the selected provider, where it was requested, and its details; failed explicit provider requests include areason_code(#412, #423).
- Experimental: The
history_runtimeobject inarf headless --jsonoutput includes asourcefield reporting where the history directory came from (default,legacy_default,explicit, orvolatile) (#455).
Changed
- Breaking: The default history location has moved on Linux and Windows (#455, #456).
- Linux:
$XDG_STATE_HOME/arf/history(~/.local/state/arf/history), previously$XDG_DATA_HOME/arf/history(~/.local/share/arf/history). - Windows:
%LOCALAPPDATA%\arf\history, previously%APPDATA%\arf\history. - Existing history is kept. While only the old location has history, arf keeps using it and warns at startup. Run
arf history migrateto copy it; arf then uses the new location. If both locations have history, the new one is used. The old files are left in place, and older arf versions keep using them. - macOS and explicit history directories (
--history-dir,ARF_HISTORY_DIR,history.mode = { dir = ... }) are not affected.
- Linux:
- Breaking:
arf -eandarf -fnow exit with status 1 when R code fails to parse or raises an error, as Rscript does. Previously they printed the error and exited with status 0 (#422). - Breaking:
--r-homeand--with-r-versionnow take precedence overARF_R_HOMEandARF_R_VERSION, and setting both environment variables without either option is an error. Unset one of them or pass the option instead (#408). - Experimental/Breaking:
experimental.r_source_overridesentries use theproviderkey instead oftype. Renametypetoproviderin your configuration (#409). - Experimental/Breaking:
arf headless --jsonnow reports onlystateinr_source_override. Read selection details fromr_source_selectionand the running R version fromr_version(#476). - Experimental/Breaking: Headless IPC
sendandeval --visiblenow run code through R's normal REPL, so task callbacks (addTaskCallback()), autoprinting, and.Last.valuebehave as in interactive R (#450).- Visible
evalresponses leavevalueanderrornull; printed output appears instdoutand errors instderr. Use silentevalto get a value. sendreturns anacceptedacknowledgment instead of reporting evaluation success. Subscribe toarf.execution_completedto learn when it finishes.readline(), menus,browser(), and other nested console reads receive EOF instead of consuming further IPC requests.- The session stops with a diagnostic if the main and continuation prompt options are not distinct, non-empty strings or resemble
browser()prompts.--no-echois unsupported.
- Visible
- Experimental/Breaking: Headless IPC history records each non-whitespace code request when execution begins, including silent
evaluate, and adds its exit status once known. Interactive history still records only visiblesendandeval --visible(#451). - Experimental/Breaking: IPC now rejects code containing a NUL character with an error in both interactive and headless sessions (#451).
:switchnow replaces earlier R version and provider options instead of adding to them, and the new session applies rig project activation afresh (#417).- R source overrides now try later entries when rig is unavailable, and show a single notice if all of them fail (#407).
- Checking an R installation's home directory during startup and
arf r resolvenow times out instead of waiting indefinitely (#407). - The interactive help browser stays responsive while searching large help indexes (#404).
Fixed
arf -eandarf -faccept R code with CRLF line endings (#422).- On Windows, Renviron files are read only once at startup and are skipped with
--no-environand--vanilla(#415). - R's documentation, share, and include directories are found for installations whose
Rscript refers to${R_HOME}(#415). - On macOS, the selected R's own libraries take priority when loading, and switching R versions restores the original library search path (#416).
- After changing directories,
:restartno longer keeps stale R directory paths from the previous R installation (#421). - The help and history browsers show their header row again instead of scrolling it off the screen (#433).
- Ctrl+C during
readline(),menu(), orbrowser()now follows R's interrupt behavior (#478). - Experimental: On Unix, password prompts during silent
arf ipc evalreceive EOF instead of waiting for terminal input (#506). - Experimental: The
R_NOT_AT_PROMPThint fromarf ipcnow points to the arf terminal instead of suggestingarf ipc send "Q", which is rejected in that state (#506). - Experimental: IPC response timeouts now return
TIMEOUT(-32007) with the appliedtimeout_ms, allowing clients to distinguish them from internal errors. Evaluation timeouts must be positive and do not interrupt R execution (#495). - Experimental: Unix IPC sessions no longer delete a different file or socket that replaced theirs at the same path when they exit (#477).
- Experimental: On Windows, an IPC
sendapproval prompt shown right after pressing Enter is no longer declined automatically (#429). - Experimental: On macOS,
arf ipccommands no longer intermittently report a transport error after the session has already handled the request (#432).
Install arf-console 0.7.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/eitsupi/arf/releases/download/v0.7.0/arf-console-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/eitsupi/arf/releases/download/v0.7.0/arf-console-installer.ps1 | iex"Download arf-console 0.7.0
| File | Platform | Checksum |
|---|---|---|
| arf-console-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| arf-console-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| arf-console-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| arf-console-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| arf-console-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| arf-console-x86_64-unknown-linux-gnu.tar.xz | x64 Linux ... |
0.7.0-beta.2 - 2026-10-29
Immutable
release. Only release title and notes can be modified.
Release Notes
Added
arf history migratecopies history from the previous default location to the current one, skipping duplicates and leaving the old files in place. Use--dry-runto preview (#454, #455).- Experimental: IPC clients can keep a connection open with
attachand receive events from the session as they happen, so editors and other tools can follow it without polling (#465, #466, #468, #469, #470, #471, #472, #496, #497).arf ipc attachbridges such a connection over stdin/stdout, with optional event subscriptions. Closing stdin ends the bridge while leaving the R session running (#496).- R code can publish its own events with
arf_publish_event. - Subscribers receive
arf.execution_completedwhen terminal input or IPC user code finishes. Responses include an execution ID that matches it. - Subscribers receive
arf.console_outputwith R stdout and stderr from terminal and IPC user code, including execution IDs and origin metadata, before the matching completion event. Subscribing toarf.*includes console output; subscribe toarf.execution_completedexplicitly if only completion is needed (#497). - Sessions can expose named R functions ("handlers") for IPC clients to call with JSON arguments, with
--ipc-exposeat startup or later with:ipc exposeafter the user confirms. Handlers are not subject to the code evaluation policy, so expose only functions that validate their arguments.
- Experimental:
arf ipc interrupt [--pid] [--execution-id]and the JSON-RPCinterruptmethod can request interruption of an active IPC evaluation while keeping the R session alive (#489). - Experimental: IPC
evaluateresponses includestatus(ok,error,interrupted, orunknown), matching the execution completion event so clients can detect errors in visible evaluations (#494). - Experimental: arf can start R from a Pixi environment or a rig project (#407, #411, #412, #419, #420, #423).
{ provider = "pixi" }inexperimental.r_source_overridesuses R from the active Pixi environment, such as underpixi run arf, without requiring rig (#407).{ provider = "rig-project" }uses R from a synchronizedrig projproject in the current directory (#419, #420). With rig 0.11.0,:switchto another R minor version can leave an incompatible project library active (rig#450); use a rig release with the fix and runrig proj syncfirst.--r-providerandARF_R_PROVIDERselectpixiorrig-projectexplicitly. Unlike configured overrides, an unavailable provider is an error rather than a fallback (#411, #420).arf r resolveandarf headless --jsonreport the selected provider, where it was requested, and its details; failed explicit provider requests include areason_code(#412, #423).
- Experimental: The
history_runtimeobject inarf headless --jsonoutput includes asourcefield reporting where the history directory came from (default,legacy_default,explicit, orvolatile) (#455).
Changed
- Breaking: The default history location has moved on Linux and Windows (#455, #456).
- Linux:
$XDG_STATE_HOME/arf/history(~/.local/state/arf/history), previously$XDG_DATA_HOME/arf/history(~/.local/share/arf/history). - Windows:
%LOCALAPPDATA%\arf\history, previously%APPDATA%\arf\history. - Existing history is kept. While only the old location has history, arf keeps using it and warns at startup. Run
arf history migrateto copy it; arf then uses the new location. If both locations have history, the new one is used. The old files are left in place, and older arf versions keep using them. - macOS and explicit history directories (
--history-dir,ARF_HISTORY_DIR,history.mode = { dir = ... }) are not affected.
- Linux:
- Breaking:
arf -eandarf -fnow exit with status 1 when R code fails to parse or raises an error, as Rscript does. Previously they printed the error and exited with status 0 (#422). - Breaking:
--r-homeand--with-r-versionnow take precedence overARF_R_HOMEandARF_R_VERSION, and setting both environment variables without either option is an error. Unset one of them or pass the option instead (#408). - Breaking:
arf headless --jsonnow reports onlystateinr_source_override; selection details remain available inr_source_selection(#476). :switchnow replaces earlier R version and provider options instead of adding to them, and the new session applies rig project activation afresh (#417).- R source overrides now try later entries when rig is unavailable, and show a single notice if all of them fail (#407).
- Checking an R installation's home directory during startup and
arf r resolvenow times out instead of waiting indefinitely (#407). - The interactive help browser stays responsive while searching large help indexes (#404).
- Experimental/Breaking: Headless IPC
sendandeval --visiblenow run code through R's normal REPL, so task callbacks (addTaskCallback()), autoprinting, and.Last.valuebehave as in interactive R (#450).- Visible
evalresponses leavevalueanderrornull; printed output appears instdoutand errors instderr. Use silentevalto get a value. sendreturns anacceptedacknowledgment instead of reporting evaluation success. Subscribe toarf.execution_completedto learn when it finishes.readline(), menus,browser(), and other nested console reads receive EOF instead of consuming further IPC requests.- The session stops with a diagnostic if the main and continuation prompt options are not distinct, non-empty strings or resemble
browser()prompts.--no-echois unsupported.
- Visible
- Experimental/Breaking: Headless IPC history records every code request, including silent
evaluate. Rows appear when execution begins and get their exit status once it is known. Interactive history still records only visiblesendandeval --visible(#451). - Experimental/Breaking: IPC now rejects code containing a NUL character with an error in both interactive and headless sessions (#451).
- Experimental/Breaking:
experimental.r_source_overridesentries use theproviderkey instead oftype. Renametypetoproviderin your configuration (#409).
Fixed
arf -eandarf -faccept R code with CRLF line endings (#422).- On Windows, Renviron files are read only once at startup and are skipped with
--no-environand--vanilla(#415). - R's documentation, share, and include directories are found for installations whose
Rscript refers to${R_HOME}(#415). - On macOS, the selected R's own libraries take priority when loading, and switching R versions restores the original library search path (#416).
- After changing directories,
:restartno longer keeps stale R directory paths from the previous R installation (#421). - The help and history browsers show their header row again instead of scrolling it off the screen (#433).
- Ctrl+C during
readline(),menu(), orbrowser()now follows R's interrupt behavior (#478). - Experimental: IPC response timeouts now return
TIMEOUT(-32007) with the appliedtimeout_ms, allowing clients to distinguish them from internal errors. Evaluation timeouts must be positive and do not interrupt R execution (#495). - Experimental: Unix IPC sessions no longer delete a different file or socket that replaced theirs at the same path when they exit (#477).
- Experimental: On Windows, an IPC
sendapproval prompt shown right after pressing Enter is no longer declined automatically (#429). - Experimental: On macOS,
arf ipccommands no longer intermittently report a transport error after the session has already handled the request (#432).
Install arf-console 0.7.0-beta.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/eitsupi/arf/releases/download/v0.7.0-beta.2/arf-console-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/eitsupi/arf/releases/download/v0.7.0-beta.2/arf-console-installer.ps1 | iex"Download arf-console 0.7.0-beta.2
| File | Platform | Checksum |
|---|---|---|
| arf-console-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| arf-console-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| arf-console-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| arf-console-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| arf-console-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| arf-console-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | [checksum]... |
0.7.0-beta.1 - 2026-10-24
Immutable
release. Only release title and notes can be modified.
Release Notes
Added
arf history migratecopies history from the previous default location to the current one, skipping duplicates and leaving the old files in place. Use--dry-runto preview (#454, #455).- Experimental: IPC clients can keep a connection open with
attachand receive events from the session as they happen, so editors and other tools can follow it without polling (#465, #466, #468, #469, #470, #471, #472).- R code can publish its own events with
arf_publish_event. - Subscribers receive
arf.execution_completedwhen terminal input or IPC user code finishes. Responses include an execution ID that matches it. - Sessions can expose named R functions ("handlers") for IPC clients to call with JSON arguments, with
--ipc-exposeat startup or later with:ipc exposeafter the user confirms. Handlers are not subject to the code evaluation policy, so expose only functions that validate their arguments.
- R code can publish its own events with
- Experimental: arf can start R from a Pixi environment or a rig project (#407, #411, #412, #419, #420, #423).
{ provider = "pixi" }inexperimental.r_source_overridesuses R from the active Pixi environment, such as underpixi run arf, without requiring rig (#407).{ provider = "rig-project" }uses R from a synchronizedrig projproject in the current directory (#419, #420). With rig 0.11.0,:switchto another R minor version can leave an incompatible project library active (rig#450); use a rig release with the fix and runrig proj syncfirst.--r-providerandARF_R_PROVIDERselectpixiorrig-projectexplicitly. Unlike configured overrides, an unavailable provider is an error rather than a fallback (#411, #420).arf r resolveandarf headless --jsonreport the selected provider, where it was requested, and its details; failed explicit provider requests include areason_code(#412, #423).
- Experimental: The
history_runtimeobject inarf headless --jsonoutput includes asourcefield reporting where the history directory came from (default,legacy_default,explicit, orvolatile) (#455).
Changed
- Breaking: The default history location has moved on Linux and Windows (#455, #456).
- Linux:
$XDG_STATE_HOME/arf/history(~/.local/state/arf/history), previously$XDG_DATA_HOME/arf/history(~/.local/share/arf/history). - Windows:
%LOCALAPPDATA%\arf\history, previously%APPDATA%\arf\history. - Existing history is kept. While only the old location has history, arf keeps using it and warns at startup. Run
arf history migrateto copy it; arf then uses the new location. If both locations have history, the new one is used. The old files are left in place, and older arf versions keep using them. - macOS and explicit history directories (
--history-dir,ARF_HISTORY_DIR,history.mode = { dir = ... }) are not affected.
- Linux:
- Breaking:
arf -eandarf -fnow exit with status 1 when R code fails to parse or raises an error, as Rscript does. Previously they printed the error and exited with status 0 (#422). - Breaking:
--r-homeand--with-r-versionnow take precedence overARF_R_HOMEandARF_R_VERSION, and setting both environment variables without either option is an error. Unset one of them or pass the option instead (#408). :switchnow replaces earlier R version and provider options instead of adding to them, and the new session applies rig project activation afresh (#417).- R source overrides now try later entries when rig is unavailable, and show a single notice if all of them fail (#407).
- Checking an R installation's home directory during startup and
arf r resolvenow times out instead of waiting indefinitely (#407). - The interactive help browser stays responsive while searching large help indexes (#404).
- Experimental/Breaking: Headless IPC
sendandeval --visiblenow run code through R's normal REPL, so task callbacks (addTaskCallback()), autoprinting, and.Last.valuebehave as in interactive R (#450).- Visible
evalresponses leavevalueanderrornull; printed output appears instdoutand errors instderr. Use silentevalto get a value. sendreturns anacceptedacknowledgment instead of reporting evaluation success. Subscribe toarf.execution_completedto learn when it finishes.readline(), menus,browser(), and other nested console reads receive EOF instead of consuming further IPC requests.- The session stops with a diagnostic if the main and continuation prompt options are not distinct, non-empty strings or resemble
browser()prompts.--no-echois unsupported.
- Visible
- Experimental/Breaking: Headless IPC history records every code request, including silent
evaluate. Rows appear when execution begins and get their exit status once it is known. Interactive history still records only visiblesendandeval --visible(#451). - Experimental/Breaking: IPC now rejects code containing a NUL character with an error in both interactive and headless sessions (#451).
- Experimental/Breaking:
experimental.r_source_overridesentries use theproviderkey instead oftype. Renametypetoproviderin your configuration (#409).
Fixed
arf -eandarf -faccept R code with CRLF line endings (#422).- On Windows, Renviron files are read only once at startup and are skipped with
--no-environand--vanilla(#415). - R's documentation, share, and include directories are found for installations whose
Rscript refers to${R_HOME}(#415). - On macOS, the selected R's own libraries take priority when loading, and switching R versions restores the original library search path (#416).
- After changing directories,
:restartno longer keeps stale R directory paths from the previous R installation (#421). - The help and history browsers show their header row again instead of scrolling it off the screen (#433).
- Experimental: On Windows, an IPC
sendapproval prompt shown right after pressing Enter is no longer declined automatically (#429). - Experimental: On macOS,
arf ipccommands no longer intermittently report a transport error after the session has already handled the request (#432).
Install arf-console 0.7.0-beta.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/eitsupi/arf/releases/download/v0.7.0-beta.1/arf-console-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/eitsupi/arf/releases/download/v0.7.0-beta.1/arf-console-installer.ps1 | iex"Download arf-console 0.7.0-beta.1
| File | Platform | Checksum |
|---|---|---|
| arf-console-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| arf-console-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| arf-console-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| arf-console-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| arf-console-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| arf-console-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| arf-console-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| arf-console-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.7.0-alpha.1 - 2026-10-11
Immutable
release. Only release title and notes can be modified.
Release Notes
Added
- Experimental:
{ provider = "pixi" }inexperimental.r_source_overridesuses R from the active Pixi environment, such as underpixi run arf, without requiring rig (#407). - Experimental:
{ provider = "rig-project" }uses R from a synchronizedrig projproject in the current directory (#419, #420).- With rig 0.11.0,
:switchto another R minor version can leave an incompatible project library active (rig#450); use a rig release with the fix and runrig proj syncfirst.
- With rig 0.11.0,
- Experimental:
--r-providerandARF_R_PROVIDERselectpixiorrig-projectexplicitly. Unlike configured overrides, an unavailable provider is an error rather than a fallback (#411, #420). - Experimental:
arf r resolveandarf headless --jsonreport the selected provider, where it was requested, and its details; failed explicit provider requests include areason_code(#412, #423).
Changed
- Experimental/Breaking:
experimental.r_source_overridesentries use theproviderkey instead oftype(#409). --r-homeand--with-r-versionnow take precedence overARF_R_HOMEandARF_R_VERSION; setting both environment variables is an error (#408).:switchnow replaces earlier R version and provider options instead of adding to them, and the new session applies rig project activation afresh (#417).- R source overrides now try later entries when rig is unavailable, and show a single notice if all of them fail (#407).
- Checking an R installation's home directory during startup and
arf r resolvenow times out instead of waiting indefinitely (#407). - The interactive help browser stays responsive while searching large help indexes (#404).
arf -eandarf -fnow exit with status 1 when R code fails to parse or raises an error, as Rscript does (#422).
Fixed
arf -eandarf -faccept R code with CRLF line endings (#422).- On Windows, Renviron files are read only once at startup and are skipped with
--no-environand--vanilla(#415). - R's documentation, share, and include directories are found for installations whose
Rscript refers to${R_HOME}(#415). - On macOS, the selected R's own libraries take priority when loading, and switching R versions restores the original library search path (#416).
- After changing directories,
:restartno longer keeps stale R directory paths from the previous R installation (#421).
Install arf-console 0.7.0-alpha.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/eitsupi/arf/releases/download/v0.7.0-alpha.1/arf-console-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/eitsupi/arf/releases/download/v0.7.0-alpha.1/arf-console-installer.ps1 | iex"Download arf-console 0.7.0-alpha.1
| File | Platform | Checksum |
|---|---|---|
| arf-console-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| arf-console-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| arf-console-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| arf-console-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| arf-console-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| arf-console-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| arf-console-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| arf-console-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.6.0 - 2026-10-08
Immutable
release. Only release title and notes can be modified.
Release Notes
Added
ARF_CONFIGselects a configuration file when--configis omitted, before falling back to the platform default;:infoshows the selected file and source (#402).- The native help viewer, including pages opened from
:help, now supports: - Experimental: Opt-in integration opens interactive R help results such as
?meanin arf's native help pager when enabled with[experimental.r_help] viewer = "auto"andutils' standard S3 printer is still registered. The default"r"leaves help display to R; existing custom printers are preserved, and unsupported or unavailable requests fall back to R's printer (#384).
Changed
- Breaking: Safe command outcome tracking now requires
R_existsVarInFrame. Without this API, including on R versions older than 4.2, command outcomes remain unavailable, history exit statuses areNULL, the prompt shows no status symbol with its normal color, and history-forget does not advance (#381).
Fixed
- Normal
arfstartup now preserves R's detected C stack limit, allowing recoverable C stack overflow errors without disabling R's stack checks (#380). - Interactive command outcomes are left unavailable when the
options(error)handler or arf's tracking state changes, preservingNULLhistory statuses, clearing the prompt status symbol, and avoiding incorrect history-forget updates (#381). - The
:helpbrowser prefers fuzzy matches with matching capitalization while retaining case-insensitive alternatives (#382). - The existing 1000ms completion timeout floor now applies to all R completion paths in function calls and namespace access, preventing missing candidates when a short timeout is configured (#392).
Install arf-console 0.6.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/eitsupi/arf/releases/download/v0.6.0/arf-console-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/eitsupi/arf/releases/download/v0.6.0/arf-console-installer.ps1 | iex"Download arf-console 0.6.0
| File | Platform | Checksum |
|---|---|---|
| arf-console-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| arf-console-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| arf-console-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| arf-console-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| arf-console-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| arf-console-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| arf-console-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| arf-console-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.5.3 - 2026-09-27
Immutable
release. Only release title and notes can be modified.
Release Notes
Added
- Experimental: Opt-in static formal-name completion for qualified calls such as
stats::lm(uses installed package metadata and stored code; enable it with[experimental.r_completion.static.formals] mode = "prefer-static", with exact package/function exclusions and automatic fallback to R completion (#356). - Newly created history databases and unified exports now carry versioned arf artifact metadata, so imports can identify artifact types independently of filenames while retaining legacy filename detection (#377).
Changed
- The
:helpbrowser now indexes installed help metadata without opening compiled help databases, searches all page aliases, and keeps help topics available when unrelated package metadata is missing or damaged (#375).
Fixed
arf history schemaand:history schemanow show the effective history directory selected by--history-dir,ARF_HISTORY_DIR, or configuration, including platform-correct database paths (#376).- The Rd help viewer now renders descriptions using headings, so pages with definition lists such as
ggplot2::Coorddisplay correctly (#374). - Configuration warnings are no longer duplicated across startup re-exec, and
arf config checkreports deprecated keys without failing validation (#364). - Windows IPC approval prompts now enter raw terminal mode before accepting input, so Ctrl+C reliably rejects the prompt and returns to the REPL (#361).
- Auto-pairing now uses reedline's live editor buffer, fixing stale state and improving behavior with raw strings, history recall, and pasted input (#330).
Install arf-console 0.5.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/eitsupi/arf/releases/download/v0.5.3/arf-console-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/eitsupi/arf/releases/download/v0.5.3/arf-console-installer.ps1 | iex"Download arf-console 0.5.3
| File | Platform | Checksum |
|---|---|---|
| arf-console-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| arf-console-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| arf-console-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| arf-console-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| arf-console-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| arf-console-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| arf-console-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| arf-console-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.5.2 - 2026-09-11
Immutable
release. Only release title and notes can be modified.
Release Notes
Fixed
- Restored the original Unix terminal mode after the first interactive reedline input so terminal security indicators are not triggered by a startup-only
ECHOsuppression state (#352).
Install arf-console 0.5.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/eitsupi/arf/releases/download/v0.5.2/arf-console-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/eitsupi/arf/releases/download/v0.5.2/arf-console-installer.ps1 | iex"Download arf-console 0.5.2
| File | Platform | Checksum |
|---|---|---|
| arf-console-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| arf-console-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| arf-console-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| arf-console-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| arf-console-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| arf-console-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| arf-console-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| arf-console-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.5.1 - 2026-09-01
Immutable
release. Only release title and notes can be modified.
Release Notes
Added
- Experimental: Opt-in
json-keyR source override provider for reading a version from JSON files such asrenv.lock({ type = "json-key", file = "renv.lock", key = "R.Version" }) (#321).
Fixed
- A continuation prompt set with
options(continue = ...)is now classified correctly, so history recording, formatting, and display no longer treat continuation lines as new top-level input. Whenpromptandcontinueare set to the same string, arf warns that the two cannot be told apart (#327, #328). - Vi pending character motions now correctly accept
vas the motion character instead of entering visual mode (#329). - Experimental: IPC PID file ownership and handoff now preserve tracking across interactive
:restartand:switch; relative paths and loader re-exec are preserved across the replacement (#342).
Install arf-console 0.5.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/eitsupi/arf/releases/download/v0.5.1/arf-console-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/eitsupi/arf/releases/download/v0.5.1/arf-console-installer.ps1 | iex"Download arf-console 0.5.1
| File | Platform | Checksum |
|---|---|---|
| arf-console-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| arf-console-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| arf-console-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| arf-console-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| arf-console-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| arf-console-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| arf-console-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| arf-console-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.5.0 - 2026-08-19
Immutable
release. Only release title and notes can be modified.
Release Notes
Added
- Experimental:
arf ipc sessionandarf headless --jsonnow report anipc_policyobject describing the active IPC policy, including the silent-eval allowlist and whether visible requests require human approval.:infometa command shows the same information for the running session.arf ipc listremains discovery-only; usearf ipc sessionto inspect policy details (#316).
Changed
- Breaking: Reprex mode is now a single three-state setting (
off,on, orformat) instead of separate reprex and auto-format switches (#318, #319).- Set the startup mode with
[startup] reprex, start arf in it with--reprex=<off|on|format>, and switch during a session with:reprex on|off|format. - Static reprex settings moved from
[mode.reprex]to a top-level[reprex]table, which also gained theformattersetting. formatmode now passes code to the formatter over stdin instead of writing a temporary file, and supports the Arity CLI alongside the Air CLI. Air 0.9.0 or later and Arity 0.18.0 or later are supported; formatter configuration is discovered from arf's working directory.formatter = "auto"(the default) prefers Air and then Arity when available. Explicit"air"or"arity"selections are strict and never fall back to the other backend.- If formatting fails, arf reports the formatter's stderr and does not evaluate the unformatted code.
- The old keys and the
--auto-format,:autoformat, and:formatinterfaces are removed without compatibility aliases.arf config checkreports all removed reprex keys in a single run.
- Set the startup mode with
- Breaking: History storage now has explicit persistent and volatile modes, selected with
[history] mode(#314).--no-historynow means volatile, session-only history rather than no history: recall, search, the browser, metadata, and IPC history queries all keep working, but nothing is read from or written to disk.- When a persistent database cannot be opened, arf falls back to volatile history and reports why instead of silently continuing without history.
:info, startup warnings, and thehistory_runtimeobject in headless JSON carry the cause. history.disabledand top-levelhistory.dirare still accepted with a migration warning whenmodeis omitted. With an explicitmode,disabledis ignored and reported, while top-leveldiris an error.
- Meta command classification is now stored in history (#312).
- Experimental/Breaking:
arf ipc evalwithout--visiblenow refuses R code unless every function it calls is allowlisted, so a program with access to the socket can no longer use this path to run arbitrary function calls in the session. Literals and object references still evaluate without configuration. Allow calls with[ipc.eval].allowed_functionsor--ipc-eval-allow-function, or opt out for a session with--ipc-eval-unrestrictedat startup. The check is syntactic, not an R sandbox (#303). - Experimental/Breaking:
arf ipc sendandarf ipc eval --visiblenow show the submitted code and ask for confirmation before running it in an interactive REPL.:ipc send-policy allowdisables the prompt until arf restarts. Headless sessions run visible requests immediately, and the eval allowlist does not apply to either visible path (#303). - Experimental/Breaking:
session_typeis now required in session metadata. Session files written by an older arf that lack this field are no longer accepted byarf ipc listor other client commands. Such files are deleted once their process is gone and left untouched while it is still running (#317).
Migration Guide
If you have a configuration file from 0.4.x, apply the following changes. arf config check reports removed reprex keys, and arf warns at startup about deprecated history keys.
| 0.4.x key | 0.5.0 key |
|---|---|
startup.mode.reprex = true |
startup.reprex = "on" |
startup.mode.reprex = true + startup.mode.autoformat = true |
startup.reprex = "format" |
mode.reprex.comment |
reprex.comment |
prompt.indicators.autoformat |
prompt.indicators.reprex_format |
history.disabled = true |
history.mode = "volatile" |
history.dir = "/custom/path" |
history.mode = { dir = "/custom/path" } |
Before (0.4.x):
[startup.mode]
reprex = true
autoformat = true
[mode.reprex]
comment = "#> "
[prompt.indicators]
reprex = "[reprex] "
autoformat = "[format] "
[history]
disabled = false
dir = "/custom/path"After (0.5.0):
[startup]
reprex = "format" # "off", "on", or "format"
[reprex]
comment = "#> "
formatter = "auto" # "auto", "air", or "arity"
[prompt.indicators]
reprex = "[reprex] "
reprex_format = "[format] "
[history]
mode = { dir = "/custom/path" } # or "persistent" / "volatile"The command-line and meta command interfaces changed accordingly:
| 0.4.x | 0.5.0 |
|---|---|
--reprex |
--reprex=on |
--reprex --auto-format |
--reprex=format |
:reprex (toggle) |
:reprex on, :reprex off |
:autoformat, :format |
:reprex format |
Fixed
- A command that prompted for input (
readline(),menu(),browser()) recorded its success or failure against the answer typed at that prompt instead of against the command itself (#312). - A history database error while saving a command no longer aborts the session (#312).
- Importing an arf history database now preserves session, hostname, working directory, duration, exit status, and metadata instead of only the command and timestamp (#313).
- Re-importing a source repairs those columns on entries an earlier import left empty without replacing values already recorded (#313).
- Importing a history database no longer writes to the source database (#313).
- Importing a file that is not an arf history database now reports an error instead of silently importing nothing (#313).
- macOS binaries no longer fail to start with a missing
liblzmalibrary error (#304). - Experimental: IPC approval prompts previously showed only the first few hundred characters of submitted code while arf ran all of it, allowing executable code to be hidden beyond the visible portion. The prompt now shows the complete submitted code with control characters escaped (#315).
Install arf-console 0.5.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/eitsupi/arf/releases/download/v0.5.0/arf-console-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/eitsupi/arf/releases/download/v0.5.0/arf-console-installer.ps1 | iex"Download arf-console 0.5.0
| File | Platform | Checksum |
|---|---|---|
| arf-console-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| arf-console-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| arf-console-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| arf-console-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| arf-console-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| arf-console-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| arf-console-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| arf-console-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.5.0-rc.1 - 2026-08-12
Immutable
release. Only release title and notes can be modified.
Release Notes
Changed
- Experimental/Breaking:
arf ipc evalwithout--visiblenow refuses R code unless every function it calls is allowlisted, so a program with access to the socket can no longer run arbitrary code in the session; literals and object references still evaluate without configuration. Allow calls with[ipc.eval].allowed_functionsor--ipc-eval-allow-function, or opt out for a session with--ipc-eval-unrestrictedat startup. The check is syntactic, not an R sandbox. (#303) - Experimental/Breaking:
arf ipc sendandarf ipc eval --visiblenow show the code and ask for confirmation before running it in an interactive REPL;:ipc send-policy allowsuspends the prompt until arf restarts. Headless sessions run immediately, and the eval allowlist does not apply to either path. (#303)
Fixed
- macOS binaries no longer fail to start with a missing
liblzmalibrary error (#304).
Install arf-console 0.5.0-rc.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/eitsupi/arf/releases/download/v0.5.0-rc.1/arf-console-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/eitsupi/arf/releases/download/v0.5.0-rc.1/arf-console-installer.ps1 | iex"Download arf-console 0.5.0-rc.1
| File | Platform | Checksum |
|---|---|---|
| arf-console-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| arf-console-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| arf-console-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| arf-console-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| arf-console-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| arf-console-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| arf-console-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| arf-console-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |