The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
RDesk 1.0.0 (2026-03-22)
New features
- Native Window Management: Added
app$set_size(), app$set_position(),
app$minimize(), app$maximize(),
app$restore(), app$fullscreen(), and
app$always_on_top().
- Enhanced Native Dialogs: Implemented
app$dialog_folder(), app$message_box()
(OK/Yes/No/Cancel with icons), and app$dialog_color().
- System Integration:
- Recursive Menus: Native Win32 menu bars now support
arbitrarily deep nesting and checkable items.
- System Tray Context Menus: Added
app$set_tray_menu() for native right-click
interaction.
- Global Hotkeys: Added
app$register_hotkey() for system-wide keyboard
shortcuts.
- Clipboard: Added
app$clipboard_read()
and app$clipboard_write().
- Lifecycle & Stability Hardening:
- Anti-Zombie Watchdog: Native launcher now
auto-terminates if the parent R process dies.
- Single-Instance Lock: Prevents running multiple
copies of the same application.
- Close Interception: Added
app$on_close() to intercept or cancel window exit
attempts.
- Persistent Logging: Success and error logs are now
written to
%LOCALAPPDATA%/RDesk.
- Auto-Updater: Added
app$check_update()
to detect and link to remote application updates.
- renv integration: The RDesk development environment
and built bundles are now lockable via
renv.lock for
reproducible distribution.
Bug fixes
- Fixed COM reference count leaks and Unicode path handling in the
native launcher.
- Resolved R6 namespace collisions during complex application
initialization.
- Hardened
build_app(dry_run = TRUE) for rapid
environment validation.
- Fixed plot rendering synchronization in background worker
pools.
RDesk 0.9.0 (2026-03-19)
Breaking changes
- Removed httpuv dependency entirely. Apps built with earlier versions
must be rebuilt with the new launcher.
New features
- Zero-port native IPC architecture using WebView2
PostWebMessageAsString and stdin/stdout pipe.
- Virtual hostname mapping via SetVirtualHostNameToFolderMapping – app
assets load from disk with no HTTP server.
- Three-tier async engine: async() wrapper, rdesk_async(), and direct
mirai access. 5.9x faster task startup vs callr alone.
- Loading overlay system with progress bar, cancellation, and toast
notifications built into the framework.
- build_app() now supports build_installer = TRUE for InnoSetup
Windows installer generation.
- rdesk_create_app() scaffold generates a complete working app
structure ready to run.
- GitHub Actions CI/CD with three workflows: R-CMD-check, build-app,
and release.
- Comprehensive error logging – crash.log and rdesk_startup.log
written on failure. Native Windows popup on crash.
- System tray, native menus, file dialogs, toast notifications.
Bug fixes
- Fixed bundled dialog, tray, notify, and IPC command handling in
App.R so packaged apps no longer try to write to a null
window process handle.
- Hardened launcher shutdown, notification handling, request IDs,
menu/tray updates, and save-dialog Unicode handling across the native
C++ launcher and
window.R.
- Fixed bundled stub logging and stdout handling so packaged apps
preserve IPC while still writing crash diagnostics.
- Fixed scaffolded apps and demo apps so bundled mode no longer sinks
stdout, app paths resolve more reliably, and generated tests/plots use
safer defaults.
- Fixed
build_app() package bundling, temp cleanup,
empty-directory copies, and added explicit portable-R strategies via
portable_r_method and runtime_dir.
- Fixed GitHub Actions bundled-app workflows to use explicit installer
runtime provisioning and current setup actions.
- Fixed COM reference count leak in C++ launcher on shutdown.
- Replaced hardcoded personal paths with dynamic environment variable
lookups in build.R.
- Fixed duplicate publisher parameter in build_app() signature.
- Corrected R-CMD-check YAML quoting for args and error-on
fields.
- Removed dead httpuv private fields from App R6 class.
- Fixed @export tags
incorrectly placed on private R6 methods.
- Unicode path handling hardened using MultiByteToWideChar throughout
C++ launcher.
Internal changes
- IPC message envelope standardised with id, type, version, payload,
timestamp fields across R and JavaScript.
- Version centralised via getOption(“rdesk.ipc_version”).
- CI guard added – headless environments skip native window init.
- mirai daemon pool pre-warmed at App\(run()
and shut down cleanly at App\)cleanup().
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.