Void Presence Application v4.3.0
Release details for the void presence application application loaded from GitHub release data and package.json tag.
Release details for the void presence application application loaded from GitHub release data and package.json tag.
If you just need the latest stable application build, you can always download it from the main download page.
Go to download pageView this release on GitHub for full changelog and assets.
Check GitHub.node binaries); the app automatically runs npm install followed by electron-rebuild to recompile native modules against the correct Electron ABI, with a .rebuilt marker to skip redundant rebuilds on subsequent launches.plugin-name/index.js) instead of a single .js file, enabling plugins to include a worker.js, package.json with dependencies, and a manifest.json with metadata.worker.js, it is automatically launched in a Worker thread (same pattern as the builtin hardware plugin), allowing CPU-intensive work to run off the main thread.PluginContext now exposes writeConfig(name, data) and a smart readConfig(name) that reads from plugins-data/{pluginId}/ first, falling back to shared userData configs (buttons, imageCycles, etc.).external-plugins-state.json; state is restored on startAll without needing a manual settings entry per plugin.pluginDir in PluginContext — plugins receive the path to their own folder via ctx.pluginDir, enabling them to resolve local worker scripts, assets, or config files relative to themselves.voidpresence://install-plugin?zip=<github-tree-url> now downloads a folder plugin directly from GitHub via the Contents API (no zip required), with a markPluginInstalling flag that prevents the file watcher from firing prematurely.getNextButtons and readButtonsConfig, cycling through button pairs the same way the default plugin does.select control on the hardware plugin card instead of a standalone section on the main config page.voidpresence.site/plugins (browse community plugins) and the GitHub plugins folder (submit your own).shell:open-external IPC — a generic openExternal(url) API is now available in the renderer for opening any validated https:// URL in the system browser.startAllPlugins no longer blocks IPC registration — plugin loading (including npm install and electron-rebuild) now runs in the background via void startAllPlugins(), so IPC handlers register immediately and the renderer never gets "no handler registered" errors on startup.spawn EINVAL fix on Windows — npm install and electron-rebuild now use npm.cmd / npx.cmd with shell: false on Windows, eliminating the EINVAL and DEP0190 errors caused by passing .cmd executables with shell: true and an args array.startPluginsWatcher now handles both .js files and directory-based plugins, triggering hot-load or unload correctly when a folder is added or removed from the plugins directory.systeminformation replaces wmic/powershell/nvidia-smi calls; CPU load uses os.cpus() diff (no WMI), RAM uses os.totalmem/freemem, GPU stats are cached for 30 seconds, cutting CPU usage significantly.sendLog and sendToast call in plugin-manager.ts and the install handler in ipc.ts now goes through t() with keys in en, ru, and tr locales.build:manifest script — node scripts/build-manifest.js auto-generates plugins-manifest.json by scanning the plugins/ folder and extracting metadata (author, description, tags, preview.slides) directly from module.exports in each plugin file."folder": true flag and a GitHub tree sourceUrl; the install button sends ?zip=<tree-url> to the deep link handler.page.tsx using the GitHub API before the page is sent to the client, eliminating avatar fetch waterfalls in the browser.