Repository navigation
Releases: Sentinel-Mexico/WhatsNexus-Dekstop
Releases · Sentinel-Mexico/WhatsNexus-Dekstop
Release list
v2.3.2
Registro de Cambios - v2.3.2
Performance & Optimization
- Chromium Efficiency Switches & Tab Throttling:
- Configured switches before
app.whenReady()insrc/main.js: enabled background timer throttling (disable-background-timer-throttling=false) and activated performance feature flagsCalculateNativeWinOcclusion,IntensiveWakeUpThrottling, andThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframesto allow Chromium to freeze timers and throttle background tasks in non-visible contexts. - Implemented background tab throttling and visibility toggling upon account switching in
src/renderer/renderer.js: inactive<webview>tags are markedvisibility: hiddenand dispatched aset-tab-active: falsesignal, reducing background rendering overhead. Active accounts receivevisibility: visibleandset-tab-active: true.
- Configured switches before
- Clean Memory Management & Explicit WebContents Destruction:
- Added explicit
webContents.stop()andwebContents.destroy()invocations insrc/main.jsfor all partition-bound WebContents during account deletion (delete-account-data) and added a new IPC channeldestroy-webview-contents. - Updated
hibernateWebview(id)andexecuteDeleteAccount(id)insrc/renderer/renderer.jsto callwebview.stop()and invokeelectronAPI.destroyWebviewContents(partition)before DOM removal, eliminating dangling Chromium renderer processes. - Exposed
destroyWebviewContentsinsrc/preload-main.jsunderwindow.electronAPI.
- Added explicit
- Adaptive Network Polling (Smart Polling) & Power-Saving Pausing:
- Replaced linear interval polling in
startOfflinePolling()with an adaptive stepped schedule ([5000, 10000, 30000, 60000]ms) that backs off gracefully during extended outages. - Paused offline polling probes and duration timer DOM ticks when the application window is minimized or hidden (
document.hidden). Automatically resumes polling and synchronizes duration on windowvisibilitychangeandfocus.
- Replaced linear interval polling in
- DinoGame & Overlay Dormancy:
- Added
visibilitychangeandblurevent listeners toDinoGameinsrc/renderer/dino-game.jsto cancel activerequestAnimationFramerender loops viapausar()when the window loses focus or visibility. - Updated
destruir()to cleanly deregister all event listeners (blur,visibilitychange,resize,keydown,keyup,click).
- Added
- Guest Preload DOM Observer Optimization:
- In
src/preload.js, boundset-tab-activeIPC listener to track tab focus state; bypassed DOM scanning and interval execution when tab is inactive. - Narrowed
MutationObserverscope from unboundeddocument.bodyto#app/#sidecontainers, increased debounce interval to 2500ms, and implemented a hard 60-second self-termination timer to free observer resources once profile data is acquired.
- In
v2.2.8
[2.2.8] - 2026-09-06
Fixed
- Global Scope Syntax Error Elimination & Script Execution Restoration:
- Removed conflicting top-level
const electronAPI = window.electronAPI;declaration inrenderer.jsthat caused V8 to throwUncaught SyntaxError: Identifier 'electronAPI' has already been declaredupon script parsing due tocontextBridge.exposeInMainWorld('electronAPI', ...)defining a non-configurable global accessor onwindow. - Restored full execution and event registration across all renderer subsystems, resolving total interface freeze where sidebar navigation buttons and account tabs were non-responsive.
- Removed conflicting top-level
- Centralized & Early Navigation Listener Binding (
setupSidebarListeners):- Unified all bottom sidebar action handlers (
#add-account-btn,#settings-btn,#donate-btn,#report-bug-btn,#doom-btn) inside an idempotentsetupSidebarListeners()function protected bydataset.boundflags against listener duplication. - Executed
setupSidebarListeners()immediately upon script evaluation, at the beginning ofinit(), and insideDOMContentLoadedto guarantee immediate interactivity regardless of asynchronous initialization tasks. - Defensively chained asynchronous IPC calls (
setSpellcheckerLanguages,saveAccounts) with.catch(() => {})to eliminate unhandled promise rejections during cold boot.
- Unified all bottom sidebar action handlers (
- Ghost Layer Suppression & CSS Pointer-Events Hardening:
- Enforced
display: none !important; pointer-events: none !important; z-index: -1 !important;on.app-modal-backdrop.hidden,.offline-overlay.hidden, and.hibernation-overlay.hiddento eliminate phantom click interception and transparent backdrop hit-testing blocking. - Hardened
.sidebarwithposition: relative; z-index: 50; pointer-events: auto;guaranteeing the navigation rail remains strictly stacked above any guest webview surface or internal container overlays.
- Enforced
v2.2.6
Registro de Cambios - v2.2.6
Fixes
- Microphone and Device Permission Handlers & Voice Message Capture Resolution:
- Resolved structural failure in Chromium session permission checks where
PermissionCheckDetails.mediaType(singular string) was not evaluated, causingsetPermissionCheckHandlerandsetPermissionRequestHandlerto reject microphone requests and trigger WhatsApp Web's blocking "Permitir micrófono" dialog. - Implemented
checkMediaPermissionin the main process to comprehensively support direct permission names ('microphone','camera','audio','video') and'media'requests with both singularmediaTypeand pluralmediaTypespayloads. - Implemented
checkDisplayCapturePermissionsupporting bothmediaTypeandmediaTypesfor screen sharing. - Added real-time reactive permission synchronization:
- Broadcasts
permissions:updatedandnotifications:updatedacross all activewebContentsand<webview>instances viabroadcastPermissionsToAllWebContents. - Enhanced webview
preload.jswithappPermissionsstate, dynamically updating upon permission changes without requiring application restarts. - Extended
navigator.permissions.queryinterception to support'microphone','camera', and'geolocation'alongside'notifications', returning{ state: 'granted' }(or'denied') based on reactive settings. - Guarded
navigator.mediaDevices.getUserMediaand legacynavigator.getUserMediain webviews to cleanly reflect active user device permissions and prevent hangs.
- Broadcasts
- Resolved structural failure in Chromium session permission checks where
v2.2.4
Registro de Cambios - v2.2.4
Fixes
- Cold Start Offline Black Screen Bug Resolution (Escenario B):
- Identified and eliminated premature overlay dismissal caused by partition disk cache (
persist:acc_*) firingdom-readyanddid-finish-loadevents during offline cold starts. Webview lifecycle listeners now strictly guard against hiding the overlay when an offline scenario is active. - Implemented
checkInitialNetworkState()as an agnostic, imperative startup verification function that runs on every cold start, independently verifying real network connectivity before webview activation without relying on cached flags orlocalStorage. Infallibly enforces Escenario B upon detecting lack of connectivity. - Hardened
did-fail-loadevent handling to intercept all critical network failures (ERR_INTERNET_DISCONNECTED,ERR_NAME_NOT_RESOLVED,ERR_CONNECTION_REFUSED, etc.) and route them directly to Escenario B.
- Identified and eliminated premature overlay dismissal caused by partition disk cache (
- Interactive Rescan Button Animation & Validation (Escenario B):
- Configured
#offline-rescan-btnwith immediate click lock (disabled = true,pointer-events: none,opacity: 0.7, and.loadingclass) preventing duplicate triggers. - Integrated animated circular loading spinner (
fa-spinner fa-spin btn-spinner) and localized connecting text (status_connecting). - Implemented connectivity verification against
https://web.whatsapp.comrequiring HTTP 200–299 responses via backend IPCcheck-internet(utilizing Electron'snet.isOnline()) and frontend fetch fallback. On success, reloads all active account webviews and dismisses the overlay; on failure or non-2xx status, halts the spinner and gracefully reactivates the button in idle state.
- Configured
v2.0.2
Registro de Cambios - v2.0.2
Fixed
- Explicit Window Icon Assignment & Cross-Platform Taskbar Identity:
- Resolved generic framework fallback icon issue on the startup splash screen and secondary windows across Windows, macOS, and Linux desktop environments.
- Added explicit
icon: APP_ICON_PATHto allBrowserWindowinstances (createSplashWindowandcreateWindow) insrc/main.js. - Regenerated
src/assets/icon.pngat high-resolution 512x512 RGBA directly from the official vector source (src/assets/whatsnexus-logo.svg) to ensure optimal runtime scaling on high-DPI displays. - Configured
app.setAppUserModelId('com.sentinelstudio.whatsnexus')for Windows, preventing window ungrouping and ensuring notifications and taskbar instances correctly attribute to WhatsNexus. - Configured dynamic runtime macOS dock icon assignment via
app.dock.setIcon(APP_ICON_PATH)withinapp.whenReady(). - Explicitly declared
"icon": "src/assets/icon.png"and included"src/assets/**/*"inbuild.filesinsidepackage.jsonforelectron-builderproduction packaging.
Changed
- Version Quartet Synchronization:
- Bumped patch version to
2.0.2acrosspackage.json,package-lock.json,README.md,docs/README.md, andchangelog-dev.md.
- Bumped patch version to
v2.0.1
Registro de Cambios - v2.0.1
Fixed
- Production Theme Packaging & Dynamic Theme Scanner:
- Resolved a critical bug where production builds generated via
electron-builderfailed to locate modular theme schemas insrc/themes/, causing the palette dropdown to only display the "Personalizado" option. - Explicitly configured
"files"inpackage.jsonunderbuild("src/**/*","src/themes/**/*","package.json") ensuring all 16 JSON theme schemas are fully packaged intoapp.asar. - Refactored
src/main.jsload-themesIPC handler with defensive path resolution across development,app.asar(path.join(app.getAppPath(), 'src', 'themes')), and unpacked distribution paths. - Eliminated
fs.promises.accessvalidation that threw on virtual directory descriptors withinapp.asar, adding synchronous and asynchronous I/O fallbacks. - Implemented dual-layer fail-safe fallback (
FALLBACK_BASE_THEME) in both backend (src/main.js) and frontend (src/renderer/renderer.js) to guarantee that the primary "WhatsNexus" theme is always available in the UI even under severe filesystem degradation.
- Resolved a critical bug where production builds generated via
Changed
- Version Quartet Synchronization:
- Bumped patch version to
2.0.1acrosspackage.json,package-lock.json,README.md,docs/README.md, andchangelog-dev.md.
- Bumped patch version to
v2.0.0
Registro de Cambios - v2.0.0
Changed
- Major Runtime Upgrade to Electron 43 & Dependency Alignment:
- Upgraded core desktop runtime from Electron 29 (
^29.1.4) to Electron 43 (^43.6.0), bringing modern Chromium sandbox improvements and V8 runtime performance optimizations. - Upgraded
electron-builderto^26.15.3ensuring compatibility with modern distribution targets across Linux (AppImage, deb, rpm), Windows (NSIS, portable), and macOS. - Verified and aligned CI/CD pipeline (
.github/workflows/build.yml) to leverage purenpm cibuild resolution without legacy version pinning. - Executed strict clean-room environment sanitation (
rm -rf node_modules dist out && npm cache clean --force) to purge obsolete Electron 29 C++ binaries and build artifacts.
- Upgraded core desktop runtime from Electron 29 (
- Universal Custom Dropdown Engine & Clean Code Refactor:
- Enhanced
initCustomDropdown(selectId, options)insrc/renderer/renderer.jswith extensiblerenderOption(opt, targetEl)callback support. - Extracted clean
renderLanguageOption()providing specialized typography rendering for constructed languages (Elvish Tengwar and Klingon pIqaD) alongside native ISO language displays. - Refactored
populateLanguageSelect()to eliminate over 90 lines of duplicated DOM construction, manual.selectedclass manipulation, and custom click bindings, delegating visual lifecycle management torefreshCustomDropdown('language-select'). - Removed obsolete manual event handlers on
#language-select-trigger, unifying all dropdowns under centralized state and outside-click listeners.
- Enhanced
- Version Quartet Synchronization:
- Bumped major version to
2.0.0acrosspackage.json,package-lock.json,README.md,docs/README.md, andchangelog-dev.md. - Upheld repository governance rules by maintaining
changelog.mdstrictly untouched on branchDev.
- Bumped major version to
v1.6.1
Registro de Cambios - v1.6.1
Changed
- Standardized Packaging Artifact Naming Convention (
artifactName):- Configured
build.artifactNameinpackage.jsonto enforcewhatsnexus-${version}-${os}-${arch}.${ext}across all platform distributions (AppImage, deb, nsis/exe, dmg). - Ensured consistent and automated binary artifact naming for Windows, macOS, and Linux runners in GitHub Actions CI/CD workflows.
- Configured
- Documentation Cleanup & Governance:
- Removed obsolete Freedoom references from root
README.md. - Reverted
1.6.0entry fromchangelog.mdto adhere to repository branching conventions (changelog.mdreserved strictly for stable promotions tomain).
- Removed obsolete Freedoom references from root
1.5.0
[1.5.0] - 2026-09-05
Added
- Curated Theme Engine Expansion (16 Palettes across 4 Structured Tiers):
- Integrated 6 new color palettes with complete light and dark design tokens:
- Tier 2 (Custom / Original): Cyber-Nexus (Chrome Core / Neural Net), Dracula (Alucard / Dracula Official), Nord (Snow Storm / Nord Official).
- Tier 4 (Pop Culture): Doom (Phobos Base / Hellscape), Star Trek (Federation Day / LCARS Terminal), Vóxel (Overworld / Obsidian & The End).
- Implemented dynamic theme switch labels for specialized palettes (e.g., "Overworld" / "Nether/End" for Vóxel, "Jedi" / "Sith" for Star Wars, "Día" / "Noche" for High Contrast).
- Enforced strict 4-tier visual hierarchy with internal alphabetical ordering across all palette selections.
- Integrated 6 new color palettes with complete light and dark design tokens:
- Global Internationalization (i18n) Expansion & Parity:
- Expanded locale support to 55 global languages with 100% symmetric key parity (318 keys per language) and zero English fallback.
- Full authentic transliteration and native font rendering for constructed languages (Elvish Tengwar using Tengwar Telcontar and Klingon using authentic CSUR pIqaD).
- Asynchronous Locale Provisioning & In-Memory Caching:
- Migrated the
load-localeIPC channel to asynchronous non-blocking file I/O (fs.promises.readFile) paired with an in-memoryMapcache, eliminating disk thrashing when switching languages.
- Migrated the
Fixed
- Settings Navigation Default Tab Enforcement:
- Deactivated sticky tab memory behavior in Settings; opening the settings view now reliably resets to the default "Gestión de cuentas" tab (
#tab-accounts).
- Deactivated sticky tab memory behavior in Settings; opening the settings view now reliably resets to the default "Gestión de cuentas" tab (
- Language Selector Conlang Rendering & Deduplication:
- Eliminated duplicate entries for Klingon in the language dropdown and normalized flexbox inline alignment to remove unwanted spacing around parenthesized native script names.
- Security & External URL Sanitization:
- Hardened external URL dispatchers (
open-external-url) with protocol whitelist (http:,https:) and validation blocking loopback IP addresses, private subnets, and embedded credentials.
- Hardened external URL dispatchers (