Added Python Shiny support: py-shinylive (browser-based via Pyodide) and py-shiny (native with Python runtime). All four app types are now fully implemented.
Runtime strategies
Added four runtime strategies for native apps (r-shiny, py-shiny): system, bundled, auto-download (default), and container.
Bundled strategy embeds a portable R or Python runtime inside the Electron app for zero-dependency distribution.
Auto-download strategy downloads the runtime on first launch and caches it locally.
Container strategy runs apps inside Docker or Podman for full environment isolation.
Multi-app suites
Bundle multiple Shiny apps into a single Electron shell with a launcher UI.
Configure via _shinyelectron.yml with an apps array.
Python suites read dependencies from a single suite-root requirements.txt.
Lifecycle UI
New lifecycle splash screen with progressive status updates during startup.
Backend stderr is parsed and surfaced in the splash (package loading, font downloads, server status) so users see what’s happening instead of a frozen screen.
Port allocation uses OS-assigned ports via findAvailablePort() to prevent collisions when multiple apps run simultaneously.
Fixed fs::dir_copy() creating nested subdirectories on Windows by introducing copy_dir_contents() with consistent cross-platform semantics.
Fixed GNU tar (from Git for Windows) misinterpreting drive letters as remote hosts by resolving to %SystemRoot%\System32\tar.exe (bsdtar) explicitly.
Fixed Python download URL: python-build-standalone ships .tar.gz on all platforms, not .zip on Windows.
Fixed bundled R package installation: packages are now installed into the portable R’s own library with a scrubbed environment (--vanilla, R_LIBS_USER="").
Added post-copy entrypoint validation to catch file layout issues at build time instead of inside a running Electron app.