Skip to content

Releases

0.7.0 - 2026-11-09

Choose a tag to compare

@github-actions github-actions released this 09 Nov 10:35
Immutable release. Only release title and notes can be modified.
320c020

Release Notes

Added

  • arf history migrate copies history from the previous default location to the current one, skipping duplicates and leaving the old files in place. Use --dry-run to preview (#454, #455).
  • Experimental: IPC clients can keep a connection open with attach and 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 attach bridges 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_completed when 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-expose at startup or later with :ipc expose after 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-RPC interrupt method can request interruption of an active IPC evaluation while keeping the R session alive (#489).
  • Experimental: arf ipc r-help search searches installed R help topics and arf ipc r-help show retrieves Markdown pages without evaluating R, including while R is busy (#499).
  • Experimental: IPC evaluate responses include status (ok, error, interrupted, or unknown), 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" } in experimental.r_source_overrides uses R from the active Pixi environment, such as under pixi run arf, without requiring rig (#407).
    • { provider = "rig-project" } uses R from a synchronized rig proj project in the current directory (#419, #420).
    • --r-provider and ARF_R_PROVIDER select pixi or rig-project explicitly. Unlike configured overrides, an unavailable provider is an error rather than a fallback (#411, #420).
    • arf r resolve and arf headless --json report the selected provider, where it was requested, and its details; failed explicit provider requests include a reason_code (#412, #423).
  • Experimental: The history_runtime object in arf headless --json output includes a source field reporting where the history directory came from (default, legacy_default, explicit, or volatile) (#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 migrate to 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.
  • Breaking: arf -e and arf -f now 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-home and --with-r-version now take precedence over ARF_R_HOME and ARF_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_overrides entries use the provider key instead of type. Rename type to provider in your configuration (#409).
  • Experimental/Breaking: arf headless --json now reports only state in r_source_override. Read selection details from r_source_selection and the running R version from r_version (#476).
  • Experimental/Breaking: Headless IPC send and eval --visible now run code through R's normal REPL, so task callbacks (addTaskCallback()), autoprinting, and .Last.value behave as in interactive R (#450).
    • Visible eval responses leave value and error null; printed output appears in stdout and errors in stderr. Use silent eval to get a value.
    • send returns an accepted acknowledgment instead of reporting evaluation success. Subscribe to arf.execution_completed to 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-echo is unsupported.
  • 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 visible send and eval --visible (#451).
  • Experimental/Breaking: IPC now rejects code containing a NUL character with an error in both interactive and headless sessions (#451).
  • :switch now 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 resolve now times out instead of waiting indefinitely (#407).
  • The interactive help browser stays responsive while searching large help indexes (#404).

Fixed

  • arf -e and arf -f accept R code with CRLF line endings (#422).
  • On Windows, Renviron files are read only once at startup and are skipped with --no-environ and --vanilla (#415).
  • R's documentation, share, and include directories are found for installations whose R script 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, :restart no 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(), or browser() now follows R's interrupt behavior (#478).
  • Experimental: On Unix, password prompts during silent arf ipc eval receive EOF instead of waiting for terminal input (#506).
  • Experimental: The R_NOT_AT_PROMPT hint from arf ipc now points to the arf terminal instead of suggesting arf ipc send "Q", which is rejected in that state (#506).
  • Experimental: IPC response timeouts now return TIMEOUT (-32007) with the applied timeout_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 send approval prompt shown right after pressing Enter is no longer declined automatically (#429).
  • Experimental: On macOS, arf ipc commands 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 | sh

Install 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 ...
Read more

0.7.0-beta.2 - 2026-10-29

Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Oct 14:16
Immutable release. Only release title and notes can be modified.
c1cb8e0

Release Notes

Added

  • arf history migrate copies history from the previous default location to the current one, skipping duplicates and leaving the old files in place. Use --dry-run to preview (#454, #455).
  • Experimental: IPC clients can keep a connection open with attach and 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 attach bridges 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_completed when terminal input or IPC user code finishes. Responses include an execution ID that matches it.
    • Subscribers receive arf.console_output with R stdout and stderr from terminal and IPC user code, including execution IDs and origin metadata, before the matching completion event. Subscribing to arf.* includes console output; subscribe to arf.execution_completed explicitly if only completion is needed (#497).
    • Sessions can expose named R functions ("handlers") for IPC clients to call with JSON arguments, with --ipc-expose at startup or later with :ipc expose after 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-RPC interrupt method can request interruption of an active IPC evaluation while keeping the R session alive (#489).
  • Experimental: IPC evaluate responses include status (ok, error, interrupted, or unknown), 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" } in experimental.r_source_overrides uses R from the active Pixi environment, such as under pixi run arf, without requiring rig (#407).
    • { provider = "rig-project" } uses R from a synchronized rig proj project in the current directory (#419, #420). With rig 0.11.0, :switch to another R minor version can leave an incompatible project library active (rig#450); use a rig release with the fix and run rig proj sync first.
    • --r-provider and ARF_R_PROVIDER select pixi or rig-project explicitly. Unlike configured overrides, an unavailable provider is an error rather than a fallback (#411, #420).
    • arf r resolve and arf headless --json report the selected provider, where it was requested, and its details; failed explicit provider requests include a reason_code (#412, #423).
  • Experimental: The history_runtime object in arf headless --json output includes a source field reporting where the history directory came from (default, legacy_default, explicit, or volatile) (#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 migrate to 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.
  • Breaking: arf -e and arf -f now 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-home and --with-r-version now take precedence over ARF_R_HOME and ARF_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 --json now reports only state in r_source_override; selection details remain available in r_source_selection (#476).
  • :switch now 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 resolve now times out instead of waiting indefinitely (#407).
  • The interactive help browser stays responsive while searching large help indexes (#404).
  • Experimental/Breaking: Headless IPC send and eval --visible now run code through R's normal REPL, so task callbacks (addTaskCallback()), autoprinting, and .Last.value behave as in interactive R (#450).
    • Visible eval responses leave value and error null; printed output appears in stdout and errors in stderr. Use silent eval to get a value.
    • send returns an accepted acknowledgment instead of reporting evaluation success. Subscribe to arf.execution_completed to 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-echo is unsupported.
  • 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 visible send and eval --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_overrides entries use the provider key instead of type. Rename type to provider in your configuration (#409).

Fixed

  • arf -e and arf -f accept R code with CRLF line endings (#422).
  • On Windows, Renviron files are read only once at startup and are skipped with --no-environ and --vanilla (#415).
  • R's documentation, share, and include directories are found for installations whose R script 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, :restart no 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(), or browser() now follows R's interrupt behavior (#478).
  • Experimental: IPC response timeouts now return TIMEOUT (-32007) with the applied timeout_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 send approval prompt shown right after pressing Enter is no longer declined automatically (#429).
  • Experimental: On macOS, arf ipc commands 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 | sh

Install 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]...
Read more

0.7.0-beta.1 - 2026-10-24

Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Oct 09:34
Immutable release. Only release title and notes can be modified.
ecb6996

Release Notes

Added

  • arf history migrate copies history from the previous default location to the current one, skipping duplicates and leaving the old files in place. Use --dry-run to preview (#454, #455).
  • Experimental: IPC clients can keep a connection open with attach and 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_completed when 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-expose at startup or later with :ipc expose after the user confirms. Handlers are not subject to the code evaluation policy, so expose only functions that validate their arguments.
  • Experimental: arf can start R from a Pixi environment or a rig project (#407, #411, #412, #419, #420, #423).
    • { provider = "pixi" } in experimental.r_source_overrides uses R from the active Pixi environment, such as under pixi run arf, without requiring rig (#407).
    • { provider = "rig-project" } uses R from a synchronized rig proj project in the current directory (#419, #420). With rig 0.11.0, :switch to another R minor version can leave an incompatible project library active (rig#450); use a rig release with the fix and run rig proj sync first.
    • --r-provider and ARF_R_PROVIDER select pixi or rig-project explicitly. Unlike configured overrides, an unavailable provider is an error rather than a fallback (#411, #420).
    • arf r resolve and arf headless --json report the selected provider, where it was requested, and its details; failed explicit provider requests include a reason_code (#412, #423).
  • Experimental: The history_runtime object in arf headless --json output includes a source field reporting where the history directory came from (default, legacy_default, explicit, or volatile) (#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 migrate to 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.
  • Breaking: arf -e and arf -f now 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-home and --with-r-version now take precedence over ARF_R_HOME and ARF_R_VERSION, and setting both environment variables without either option is an error. Unset one of them or pass the option instead (#408).
  • :switch now 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 resolve now times out instead of waiting indefinitely (#407).
  • The interactive help browser stays responsive while searching large help indexes (#404).
  • Experimental/Breaking: Headless IPC send and eval --visible now run code through R's normal REPL, so task callbacks (addTaskCallback()), autoprinting, and .Last.value behave as in interactive R (#450).
    • Visible eval responses leave value and error null; printed output appears in stdout and errors in stderr. Use silent eval to get a value.
    • send returns an accepted acknowledgment instead of reporting evaluation success. Subscribe to arf.execution_completed to 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-echo is unsupported.
  • 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 visible send and eval --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_overrides entries use the provider key instead of type. Rename type to provider in your configuration (#409).

Fixed

  • arf -e and arf -f accept R code with CRLF line endings (#422).
  • On Windows, Renviron files are read only once at startup and are skipped with --no-environ and --vanilla (#415).
  • R's documentation, share, and include directories are found for installations whose R script 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, :restart no 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 send approval prompt shown right after pressing Enter is no longer declined automatically (#429).
  • Experimental: On macOS, arf ipc commands 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 | sh

Install 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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Oct 15:43
Immutable release. Only release title and notes can be modified.
443efdf

Release Notes

Added

  • Experimental: { provider = "pixi" } in experimental.r_source_overrides uses R from the active Pixi environment, such as under pixi run arf, without requiring rig (#407).
  • Experimental: { provider = "rig-project" } uses R from a synchronized rig proj project in the current directory (#419, #420).
    • With rig 0.11.0, :switch to another R minor version can leave an incompatible project library active (rig#450); use a rig release with the fix and run rig proj sync first.
  • Experimental: --r-provider and ARF_R_PROVIDER select pixi or rig-project explicitly. Unlike configured overrides, an unavailable provider is an error rather than a fallback (#411, #420).
  • Experimental: arf r resolve and arf headless --json report the selected provider, where it was requested, and its details; failed explicit provider requests include a reason_code (#412, #423).

Changed

  • Experimental/Breaking: experimental.r_source_overrides entries use the provider key instead of type (#409).
  • --r-home and --with-r-version now take precedence over ARF_R_HOME and ARF_R_VERSION; setting both environment variables is an error (#408).
  • :switch now 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 resolve now times out instead of waiting indefinitely (#407).
  • The interactive help browser stays responsive while searching large help indexes (#404).
  • arf -e and arf -f now exit with status 1 when R code fails to parse or raises an error, as Rscript does (#422).

Fixed

  • arf -e and arf -f accept R code with CRLF line endings (#422).
  • On Windows, Renviron files are read only once at startup and are skipped with --no-environ and --vanilla (#415).
  • R's documentation, share, and include directories are found for installations whose R script 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, :restart no 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 | sh

Install 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

Choose a tag to compare

@github-actions github-actions released this 08 Oct 03:44
Immutable release. Only release title and notes can be modified.
3f015db

Release Notes

Added

  • ARF_CONFIG selects a configuration file when --config is omitted, before falling back to the platform default; :info shows the selected file and source (#402).
  • The native help viewer, including pages opened from :help, now supports:
    • Page-local search (#391).
    • Keyboard navigation through R help links and back to previously viewed topics within the same viewer session (#393, #394, #395, #396, #397).
  • Experimental: Opt-in integration opens interactive R help results such as ?mean in arf's native help pager when enabled with [experimental.r_help] viewer = "auto" and utils' 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 are NULL, the prompt shows no status symbol with its normal color, and history-forget does not advance (#381).

Fixed

  • Normal arf startup 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, preserving NULL history statuses, clearing the prompt status symbol, and avoiding incorrect history-forget updates (#381).
  • The :help browser 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 | sh

Install 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

Choose a tag to compare

@github-actions github-actions released this 27 Sep 07:04
Immutable release. Only release title and notes can be modified.
d1db3f4

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 :help browser 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 schema and :history schema now 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::Coord display correctly (#374).
  • Configuration warnings are no longer duplicated across startup re-exec, and arf config check reports 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 | sh

Install 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

Choose a tag to compare

@github-actions github-actions released this 11 Sep 15:04
Immutable release. Only release title and notes can be modified.
776376e

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 ECHO suppression 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 | sh

Install 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

Choose a tag to compare

@github-actions github-actions released this 01 Sep 15:04
Immutable release. Only release title and notes can be modified.
4d9ddb1

Release Notes

Added

  • Experimental: Opt-in json-key R source override provider for reading a version from JSON files such as renv.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. When prompt and continue are set to the same string, arf warns that the two cannot be told apart (#327, #328).
  • Vi pending character motions now correctly accept v as the motion character instead of entering visual mode (#329).
  • Experimental: IPC PID file ownership and handoff now preserve tracking across interactive :restart and :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 | sh

Install 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

Choose a tag to compare

@github-actions github-actions released this 19 Aug 15:14
Immutable release. Only release title and notes can be modified.
d08bfa1

Release Notes

Added

  • Experimental: arf ipc session and arf headless --json now report an ipc_policy object describing the active IPC policy, including the silent-eval allowlist and whether visible requests require human approval. :info meta command shows the same information for the running session. arf ipc list remains discovery-only; use arf ipc session to inspect policy details (#316).

Changed

  • Breaking: Reprex mode is now a single three-state setting (off, on, or format) 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 the formatter setting.
    • format mode 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 :format interfaces are removed without compatibility aliases. arf config check reports all removed reprex keys in a single run.
  • Breaking: History storage now has explicit persistent and volatile modes, selected with [history] mode (#314).
    • --no-history now 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 the history_runtime object in headless JSON carry the cause.
    • history.disabled and top-level history.dir are still accepted with a migration warning when mode is omitted. With an explicit mode, disabled is ignored and reported, while top-level dir is an error.
  • Meta command classification is now stored in history (#312).
  • Experimental/Breaking: arf ipc eval without --visible now 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_functions or --ipc-eval-allow-function, or opt out for a session with --ipc-eval-unrestricted at startup. The check is syntactic, not an R sandbox (#303).
  • Experimental/Breaking: arf ipc send and arf ipc eval --visible now show the submitted code and ask for confirmation before running it in an interactive REPL. :ipc send-policy allow disables 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_type is now required in session metadata. Session files written by an older arf that lack this field are no longer accepted by arf ipc list or 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 liblzma library 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 | sh

Install 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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Aug 01:17
Immutable release. Only release title and notes can be modified.
dc23e22

Release Notes

Changed

  • Experimental/Breaking: arf ipc eval without --visible now 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_functions or --ipc-eval-allow-function, or opt out for a session with --ipc-eval-unrestricted at startup. The check is syntactic, not an R sandbox. (#303)
  • Experimental/Breaking: arf ipc send and arf ipc eval --visible now show the code and ask for confirmation before running it in an interactive REPL; :ipc send-policy allow suspends 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 liblzma library 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 | sh

Install 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
⌂ 换网址