Void Presence v2.6.12
Release details loaded from GitHub release and this tag package.json.
Release details loaded from GitHub release and this tag package.json.
If you just need the latest stable 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 GitHubGuaranteed First Activity Push
Discord RPC now always pushes config cycles activity immediately on ready via pushActivity(null).
Fixed complete index reset (cycleIndex=imageIndex=buttonIndex=partyIndex=0) — first cycle guaranteed on startup.
Session State Consistency
Proper initialization of currentTitle, lastSmTcStatus/Position, and lastJsonSignature for seamless pollJsonLoop() transitions.
attachDnD<T> generic with precise drop zones (drop-target-top/drop-target-bottom), stable hover states via dragenter/dragleave, and TypeScript-safe dataset handling.
Smoother dragging, no flickering, accurate drop positioning — fully reliable across all list types.Unified List Management
All user-editable lists (buttons, cycles, images, party, time blocks) now share a common createListManager<T> helper.
This reduces duplicated DOM-rendering and localStorage-saving code, making the config UI modules much more DRY and maintainable.
Reusable Row-Creation Helpers
Each config row (createButtonPairRow, createCycleRow, createTimeRow, etc.) is now built on top of a central createRow helper.
Row-related DOM creation, event listeners, onUpdate and onRemove hooks are now centralized, improving consistency across features and reducing boilerplate.
Config Module Organization The config-related logic has been split into clearly separated modules:
list-renderers – common list-handling and createListManager;rows – row-creation helpers;clientId-controls – clientId, intervals, toasts, drag-and-drop setup;mode-controls – timestamp and “now mode” logic;time-controls – time-cycles handling.
This makes it easier to locate, update, and test specific pieces of the UI.Helper-Driven Architecture Many duplicated patterns (DOM-element creation, localStorage I/O, drag-and-drop wiring) have been moved into reusable helpers instead of being scattered inline across multiple functions. This improves type-safety, testability, and makes future UI changes less error-prone.
Type-Safe Attachment Layer DnD-attaching and list-rendering now use a generic-style pattern, so the same logic can be applied to different list types without manual code duplication. TypeScript errors are easier to catch upfront, and the structure is more predictable for contributors.
No UI Behavior Changes From the user’s perspective, nothing has changed: