Skip to content

Changelog

[0.9.2.0-beta] - 2026-04-24

📅 24th April, 2026

Added

  • Added excludeItems support for widget packaging (nwm build).
  • Added additional widget events:
    • click
    • right-click
    • double-click
    • scroll-up
    • scroll-down
  • Added Ctrl-based runtime overrides for widgets.
  • Added system.recycleBin API:
    • openBin()
    • emptyBin()
    • emptyBinSilent()
    • getStats()
  • Added async Promise-based webFetch(...).
  • Added pixelHitTest property 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:
    • message
    • placeholder

[0.9.1.0-beta] - 2026-04-21

📅 21st April, 2026

Added

  • Added Manage submenu and widget settings entries.
  • Added tray events:
    • double-click
    • scroll-up
    • scroll-down
  • Added widget toolbar options:
    • showInToolbar
    • toolbarIcon
    • toolbarTitle
  • Added widgetWindow methods:
    • win.minimize()
    • win.unMinimize()
  • Added widget .on(...) events:
    • minimize
    • unMinimize
  • Added global variable: __mainScriptDirPath.

Changed

  • Simplified TextElement hit 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:

    • imageFlip
    • imageCrop
    • useExifOrientation
  • New Image element property:

    • scaleMargins
  • New elements:

    • Line
    • Button
    • Bitmap
    • Histogram
    • Rotator

Improved

  • Enhanced getAddonsPath function

[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.main in nwm run, allowing widgets to define a custom entry script path instead of always using index.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 clipString alias to textClip.

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 / onMouseLeave triggers.
  • Fixed an issue where setting a property on a text element would clear the text.

Removed

  • Removed appVolume, audioLevel, brightness, hotkey, and nowPlaying system objects (can now be replaced by external official addons).
  • Removed deprecated app.tray* methods, replaced with the new tray object 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/false instead of 1/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 group property.
  • Added win.removeElementsByGroup().
  • Added win.setElementPropertyByGroup().

Cursor System

  • Added CursorManager for element mouse cursors.
  • Added mouseEventCursor, mouseEventCursorName, and cursorsDir options.
  • Added support for built-in and custom .cur and .ani cursors.

System APIs

  • Added setWallpaper API 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:
    • mouseDown
    • mouseUp
    • mouseMove
    • mouseOver
    • mouseLeave

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_require cache writeback so modules that replace module.exports are cached correctly.

Text Rendering

  • Fixed TextElement partial update state loss.
  • Preserved fontGradient and related text style fields in PreFillTextOptions.
  • 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 .on callbacks for widgetWindow focus and unfocus events.
  • Added new widgetWindow methods: setFocus() and unFocus().
  • Added new widgetWindow methods: getHandle(), getInternalPointer(), and getTitle().
  • Added support for gradient backgrounds in widgetWindow.

Elements

  • Added new element type roundLine.
  • Added new element type shapes with multiple shape variants.
  • Added gradient color support for elements.
  • Added automatic width and height calculation for bar element.
  • Added new element property show to control element visibility.

System & Runtime

  • Added new system monitor for audioLevel.
  • Added system to detect and verify portable environment support.
  • Added require method for loading modules.

Performance & Updates

  • Added win.startUpdate() and win.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 solidColor2 and gradientAngle, 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 casing
    • upper : Converts all text to uppercase
    • lower : Converts all text to lowercase
    • capitalize : Capitalizes the first letter of each word
    • sentence : 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 app object: getAppDataPath(), getSettingsFilePath(), and getLogPath().
  • 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 use PathUtils::GetProductName(), ensuring the product name is consistently pulled from executable resources across the entire application (including the tray menu).
  • Redirected settings.json, config.json, and logs.log to 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...