✨ Highlights
- New fancyDirectoryInput – Upload entire directories in Shiny apps with streaming support for large folders and a built-in progress bar
- Cleaner dependencies – Removed magrittr, remotes, glue, base64url, and startup
- Better performance – Switched to Rcpp, improved lapply_async, and removed RcppParallel/TBB
🆕 New Features (since v0.2.3)
- fancyDirectoryInput – Directory upload widget with streaming & progress bar (v0.3.3)
- fancyFileInput – Styled file input with customized CSS (v0.2.8)
- is_from_namespace – Check if a function belongs to a namespace (v0.2.9)
- rs_set_repos – Set RStudio CRAN-like repository preferences (v0.2.4)
- maxSize argument for fancyFileInput and fancyDirectoryInput (v0.3.3)
- New baseline_array method for absolute contrast (v0.2.5)
- Keyboard shortcuts for debugging (v0.2.5, v0.2.7)
⚡ Performance & Architecture
- Removed RcppParallel/TBB in favor of TinyThread (v0.2.5)
- Switched to Rcpp to avoid internal API calls to ENCLOS/CLOSENV (v0.3.1–0.3.2)
- Improved lapply_async with automatic global variable size handling (v0.3.0)
- future::plan calls auto-cleaned by default (v0.3.1)
- rs_exec can now return as a promise object (v0.2.6)
🧹 Dependency Changes
- Removed: magrittr, remotes, glue, base64url, startup
- Re-exported: jsonlite, cli, rlang functions
- Using importFrom instead of importing entire shiny package
🐛 Bug Fixes
- Fixed race condition (v0.3.3) – thanks @HenrikBengtsson
- Fixed bslib compatibility with customized Shiny components (v0.3.1)
- Fixed TinyThread memory leak (v0.2.5)
- Fixed fastmap2/fastqueue2 missing index errors (v0.2.6)
- Fixed lapply_async2 not respecting chunk size (v0.2.7)
- Fixed quantile2 protection imbalance (v0.2.9)
- get_ip no longer throws warnings (v0.3.1)
🔒 Security
- Multiple JavaScript library upgrades to address vulnerability issues
Full Changelog: v0.2.3...v0.3.3