Changelog
[0.9.2.0-beta] - 2026-04-24
📅 24th April, 2026
Added
- Added
excludeItemssupport for widget packaging (nwm build). - Added additional widget events:
clickright-clickdouble-clickscroll-upscroll-down
- Added Ctrl-based runtime overrides for widgets.
- Added
system.recycleBinAPI:openBin()emptyBin()emptyBinSilent()getStats()
- Added async Promise-based
webFetch(...). - Added
pixelHitTestproperty for UI elements.
Fixed
- Fixed hit testing behavior for:
- Rotator element
- Histogram element
- Area Graph element
- Fixed UI font property handling.
Removed
- Removed InputBox addon options:
messageplaceholder
[0.9.1.0-beta] - 2026-04-21
📅 21st April, 2026
Added
- Added Manage submenu and widget settings entries.
- Added tray events:
double-clickscroll-upscroll-down
- Added widget toolbar options:
showInToolbartoolbarIcontoolbarTitle
- Added
widgetWindowmethods:win.minimize()win.unMinimize()
- Added widget
.on(...)events:minimizeunMinimize
- Added global variable:
__mainScriptDirPath.
Changed
- Simplified
TextElementhit testing. - Refactored tooltip handling to manual tracking for more stable hover/tooltip behavior.
[0.9.0.0-beta] - 2026-04-16
📅 16th April, 2026
Added
New InputBox add-on
Support for named CSS colors
New Image properties:
imageFlipimageCropuseExifOrientation
New Image element property:
scaleMargins
New elements:
- Line
- Button
- Bitmap
- Histogram
- Rotator
Improved
- Enhanced
getAddonsPathfunction
[0.8.0.0-beta] - 2026-04-07
📅 7th April, 2026
Added
- Introduced manage_novadesk GUI for managing widgets.
- Added restart_novadesk.exe to restart the Novadesk application.
- Added support for .ndpkg files for widget distribution.
- Introduced a .ndpkg installer for widgets.
- Added a new global variable:
__addonsPath. - novadesk.exe now supports executing multiple scripts.
- novadesk.exe now supports several CLI arguments.
Changed
- Updated nwm for improved compatibility with .ndpkg files.
- Modified the output structure of distributions generated by nwm.
- nwm now generates .zip archives for widget distribution instead of raw files.
[0.7.0.0-beta] - 2026-03-24
📅 24th March, 2026
Added
- Added support for
meta.json.maininnwm run, allowing widgets to define a custom entry script path instead of always usingindex.js.
Changed
- Updated engine IPC: main-to-UI messages now use Electron-style
ipcRenderer.on(channel, (event, payload) => ...)instead of the old payload-first callback order. - Renamed
clipStringalias totextClip.
Fixed
- Fixed TextElement hit testing to use the actual rendered text ink alpha instead of the layout box, preventing false hover detection above/below glyphs.
- Fixed unstable button hover handling by preserving the currently hovered element, preventing repeated
onMouseOver/onMouseLeavetriggers. - Fixed an issue where setting a property on a text element would clear the text.
Removed
- Removed
appVolume,audioLevel,brightness,hotkey, andnowPlayingsystem objects (can now be replaced by external official addons). - Removed deprecated
app.tray*methods, replaced with the newtrayobject from Novadesk.
[0.6.0.0-beta] - 2026-03-06
📅 6th March, 2026
Added
- Integrated QuickJS for ECMAScript 2020 (ES11) support.
- Added new modules: novadesk, system, and fs.
Changed
- UI scripts now require the .ui.js suffix at the end of the script filename.
- Renamed the win object to the ui object (alias updated accordingly).
- Replaced the IPC method with a new implementation.
Removed
- Removed include() and require() methods.
- Removed all previous system and app objects.
[0.5.0.0-beta] - 2026-02-19
📅 19th February, 2026
Added
JSON API
- Added fixture for comment preservation.
- Booleans now persist as
true/falseinstead of1/0. - Suppresses merge-failure warnings for empty or whitespace-only files while keeping warnings for real merge failures.
App Object API
- Added
app.isPortable(). - Added
app.isFirstRun().
Engine & Module System
- Implemented module-aware path resolution by propagating module directory context into exported function calls.
Element & Widget System
- Added element grouping with dedicated
groupproperty. - Added
win.removeElementsByGroup(). - Added
win.setElementPropertyByGroup().
Cursor System
- Added
CursorManagerfor element mouse cursors. - Added
mouseEventCursor,mouseEventCursorName, andcursorsDiroptions. - Added support for built-in and custom
.curand.anicursors.
System APIs
- Added
setWallpaperAPI to change desktop wallpaper. - Added brightness control API for Windows.
- Added application volume control and mute APIs.
File & Icon APIs
- Added file icon extraction.
- Added ICO export functionality.
Global Variables
- Added
__widgetsDir - Added
__offsetX - Added
__offsetY - Added
__offsetXPercent - Added
__offsetYPercent - Added
__clientX - Added
__clientY - Added
__screenX - Added
__screenY
Widget Events
- Added widget mouse events:
mouseDownmouseUpmouseMovemouseOvermouseLeave
Installer
- Installer now includes Standard/Portable mode page, blocks Portable installs in system-protected paths, and skips uninstaller/registry/PATH changes when Portable is selected.
Fixed
Module System
- Fixed
js_requirecache writeback so modules that replacemodule.exportsare cached correctly.
Text Rendering
- Fixed
TextElementpartial update state loss. - Preserved
fontGradientand related text style fields inPreFillTextOptions. - Prevented gradient text from resetting to black on
setElementProperties.
Widget Lifecycle
- Fixed widget recreation crash.
- Removed old widget from global widget list before deletion.
- Prevented double-erase invalid iterator during
WM_DESTROY.
Input & Interaction
- Fixed mouse routing for non-interactive overlays.
- Text or overlays no longer steal hover, click, cursor, wheel, or tooltip events from underlying interactive elements.
Engine & JS API
- Fixed engine event callback context restoration to prevent win/Duktape stack corruption.
Installer Stub
- Fixed installer stub uninstall cleanup now removes all child folders/files in install directory (including unknown generated system API caches) before final root deletion, with existing cmd fallback retained.
[0.4.0.0-beta] - 2026-02-11
📅 11th February, 2026
Added
Window & Lifecycle
- Added new
.oncallbacks forwidgetWindowfocus and unfocus events. - Added new
widgetWindowmethods:setFocus()andunFocus(). - Added new
widgetWindowmethods:getHandle(),getInternalPointer(), andgetTitle(). - Added support for gradient backgrounds in
widgetWindow.
Elements
- Added new element type
roundLine. - Added new element type
shapeswith multiple shape variants. - Added gradient color support for elements.
- Added automatic width and height calculation for
barelement. - Added new element property
showto control element visibility.
System & Runtime
- Added new system monitor for
audioLevel. - Added system to detect and verify portable environment support.
- Added
requiremethod for loading modules.
Performance & Updates
- Added
win.startUpdate()andwin.endUpdate()methods for batch updating element properties.
Installation
- Added self-installation support for widgets using the new tool
installer_stub.
Fixed
- Fixed issue where images were not displayed when width or height was not explicitly set.
Removed
- Removed deprecated element properties like
solidColor2andgradientAngle, replaced by the new gradient support system.
[0.3.0.0-beta] - 2026-02-05
📅 5th February, 2026
Added
Extended fontWeight support with string and numeric values.
- String values: thin, extralight or ultralight, light, regular, medium, semibold or semi-bold, bold, extrabold or ultrabold, black
- Numeric values: 100, 200, 300, 400, 500, 600, 700, 800, 900
Added fontPath property for loading custom fonts in the text element
Added inline style tag support for the text element
Added fontColor support for gradient colors
Added fontShadow support for text
Added letterSpacing property for the text element
Added case property for the text element
Added underline property for the text element
Added strikethrough property for the text element
Supported Inline Tags
<b>: Bold text<i>: Italic text<u>: Underlined text<s>: Strikethrough text<color=value>: Changes text color or applies a gradient
Example:<color=#f00>Red Text</color>
Example:<color=linearGradient(0,#f00,#0f0)>Gradient Text</color><size=value>: Changes font size in pixels
Example:<size=24>Large Text</size><font=name>: Changes font face
Example:<font=Consolas>Monospaced Text</font><case=value>: Changes text case
Valid values:normal: Maintains original casingupper: Converts all text to uppercaselower: Converts all text to lowercasecapitalize: Capitalizes the first letter of each wordsentence: Capitalizes the first letter of the first word
Example:<case=upper>this will be uppercase</case>
[0.2.0.0-beta] - 2026-01-30
📅 30th January, 2026
Added
- New JavaScript APIs on the
appobject:getAppDataPath(),getSettingsFilePath(), andgetLogPath(). - Dynamic product name retrieval from executable resources for consistent directory naming.
Fixed
- Single Instance Enforcement: Resolved an issue where multiple instances could run if one was started as Administrator (by the installer) and another as a Standard User.
- Changelog Sorting: Standardized versioning to 3-part Semver to ensure "Latest" version labeling works correctly.
Changed
- Branding Consistency: Refactored
GetAppTitle()to usePathUtils::GetProductName(), ensuring the product name is consistently pulled from executable resources across the entire application (including the tray menu). - Redirected
settings.json,config.json, andlogs.logto the user's%APPDATA%directory. - Updated the installer and uninstaller to handle user data cleanup in AppData.
- Consolidated resource extraction logic across the codebase for improved performance (caching).
[0.1.0.0-beta] - 2026-01-30
📅 30th January, 2026
Added
- Initial beta release...