Skip to content

Releases: lvcabral/brs-desktop

2.6.2 - Server-Sent Events and GetRokuCustomerId

Choose a tag to compare

@github-actions github-actions released this 11 Oct 17:53

This release bumps brs-engine to v2.6.1 and brs-scenegraph to v0.6.1, completing the two Roku OS 16.0 features left out of the previous engine release. roUrlTransfer now supports Server-Sent Events (SSE) through the new AsyncGetSSEvents() method, delivering streaming roSSEvents to the message port, and the SceneGraph ChannelStore node gains the GetRokuCustomerId command, sent through its generic request framework (request/requestStatus fields) and returning the new customerId device-information property, now configurable in the Device settings. The documented Roku OS baseline is now 16.0. On the simulator side, the packaged app shrinks from 193 MB to 45 MB, a batch of SonarCloud reliability findings is cleared (with the Sonar rules now also enforced by the local lint), and electron-builder is upgraded to 26.15.3.

See the BrightScript Simulation Engine v2.6.1 full changelog for all the language and framework features and improvements.

New Features

  • Added a "Roku Customer Id" device setting, returned by the ChannelStore node GetRokuCustomerId command, with a random 32-digit hex default generated for each installation by @lvcabral in #359

Maintenance

  • Trimmed the packaged asar from 193 MB to 45 MB by @lvcabral in #352
  • Cleared SonarCloud reliability findings and enforced the Sonar rules in the local lint by @lvcabral in #357
  • Restored lockfile entries dropped by merging #353 and #354 by @lvcabral in #358

Dependency Bumps

  • Bump brs-engine from 2.6.0 to 2.6.1 by @lvcabral
  • Bump brs-scenegraph from 0.6.0 to 0.6.1 by @lvcabral
  • Bump electron-builder from 26.5.0 to 26.15.3 and builder-util-runtime from 9.5.1 to 9.7.0 by @lvcabral in #354
  • Bump msgpack5 from 4.5.1 to 6.1.0 and json-url from 3.1.0 to 4.0.0 by @lvcabral in #353

Full Changelog: v2.6.1...v2.6.2

2.6.1 - Effect Node, roWebSocket and Draw2D Updates

Choose a tag to compare

@github-actions github-actions released this 15 Sep 16:26
8e0f09b

This release bumps brs-engine to v2.6.0 and brs-scenegraph to v0.6.0, bringing substantial Roku OS 16.0 feature coverage. The new Effect node adds rounded corners, borders, and linear/radial gradients to Rectangle and Poster, paired with a new FloatArrayFieldInterpolator node for animating its array-valued fields and a public ArrayGrid.focusFeedbackPoster field for customizing a grid's focus indicator. The core engine gains a new roWebSocket component with full Node.js and browser support, ifDraw2D.Clear() now returns a Boolean like DrawLine()/DrawPoint()/DrawRect() already did, and a new
roTextureRequest.SetDrawable() controls whether a texture-manager bitmap can be drawn onto directly. An undefined conditional-compilation name in #if/#elseif now evaluates to false instead of raising a compile error, matching Roku OS 16.0's relaxed rule. The remote-control simulation also gains experimental multi-controller support (multi_controllers=1), an expanded game pad button map, and an analog GetValue() extension on roUniversalControlEvent. Also fixed: DrawScaledObject() not mirroring the image for a negative scaleX/scaleY, a SceneGraph focus re-grab being dropped when the competing focus lived in a still-detached subtree, and DynamicKeyGrid not rendering a Key Definition File's own icon/focusIcon bitmaps.

See the BrightScript Simulation Engine v2.6.0 full changelog for all the language and framework features and improvements.

Dependency Bumps

  • Bump brs-engine from 2.5.4 to 2.6.0 by @lvcabral
  • Bump brs-scenegraph from 0.5.4 to 0.6.0 by @lvcabral

Full Changelog: v2.6.0...v2.6.1

2.6.0 - Registry by App Setting and Engine Rendezvous Fixes

Choose a tag to compare

@github-actions github-actions released this 09 Sep 03:36

This release adds a Registry by App device setting that segregates roRegistrySection data per running sideloaded app, and fixes a bug where some zip/bpk packages had their bytes corrupted while loading over the executeFile IPC path, throwing unknown compression type on otherwise-valid packages. The Home app also gets a couple of focus/title polish fixes, and console log tag coloring now covers a bracketed tag's full content instead of stopping at the first non-word character. Bumped brs-engine to v2.5.4 and brs-scenegraph to v0.5.4, fixing a callFunc issued onto a SceneGraph Task (or a Task-owned Node) silently running locally instead of rendezvousing to the owning thread — the root cause of a reported New Relic SDK crash — along with a container-copy fix for an assocarray/array holding a SceneGraph node, and a PeekMessage()/GetMessage() fix that stopped a duplicate HTTP request and roUrlEvent delivery loop.

See the BrightScript Simulation Engine v2.5.4 full changelog for all the language and framework features and improvements.

New Features

  • Added a "Registry by App" device setting that segregates registry data per running sideloaded app, taking effect for the next app started with no device reset or simulator restart needed by @lvcabral in #347

Bug Fixes

  • Stopped corrupting zip/bpk package bytes on the executeFile IPC path, fixing unknown compression type errors sideloading some otherwise-valid packages by @lvcabral in #348
  • Fixed the Home app refreshing when focus returns to its left menu, "Options" showing in the Overhang menu outside the apps grid, and the main window title showing a duplicated "BrightScript Simulator" by @lvcabral in #345
  • Fixed bracketed console log tags only coloring up to the first non-word character instead of their full content by @lvcabral in #346

Maintenance

  • Set up the macOS signing keychain explicitly in CI instead of letting electron-builder manage it, working around an upstream set-key-partition-list unlock bug exposed by a macOS runner point release by @lvcabral
  • Stubbed process.uptime() in the ECP-2 device-info test to remove a rounding-boundary flake by @lvcabral

Dependency Bumps

  • Bump brs-engine from 2.5.2 to 2.5.4 by @lvcabral
  • Bump brs-scenegraph from 0.5.2 to 0.5.4 by @lvcabral
  • Bump @xmldom/xmldom from 0.8.13 to 0.8.15 by @lvcabral in #344
  • Bump fast-uri from 3.1.5 to 3.1.7 by @lvcabral in #343

Full Changelog: v2.5.2...v2.6.0

2.5.2 - Bug Fixes and Engine Upgrade

Choose a tag to compare

@github-actions github-actions released this 30 Aug 04:06

This release fixes file dialogs forgetting their last-used folder, the Copy Screenshot menu option sometimes becoming disabled while an app is running, and cross-origin credentialed requests failing after the Electron 43 CORS changes.

Bug Fixes

  • Preserved dynamically-enabled menu item states (Copy Screenshot, Save Screenshot, Close App) across macOS menu rebuilds by @lvcabral in #342
  • Persisted last-used folder for file dialogs so Open/Save dialogs remember the previous directory by @lvcabral in #341
  • Reflected request Origin and credentials in CORS headers instead of hardcoding wildcards, fixing credentialed cross-origin fetches by @lvcabral in #340

Dependency Bumps

  • Bump brs-engine from 2.5.1 to 2.5.2 by @lvcabral
  • Bump brs-scenegraph from 0.5.1 to 0.5.2 by @lvcabral

Full Changelog: v2.5.1...v2.5.2

2.5.1 - BrightScript-Aware Console Coloring

Choose a tag to compare

@github-actions github-actions released this 22 Aug 03:01
699f6e1

This release gives the Editor console panel BrightScript-aware syntax coloring — strings, numbers, booleans, invalid, <Component: ...>/<Function: ...> references, pkg://tmp:/ device URIs, GUIDs, XML tags, timestamps, backtrace structure, source comments, and ERROR:/WARNING:/DEBUG: labels are now colored distinctly instead of the generic Unix-console highlighting the terminal component shipped with by default. A new "Disable Console Log Coloring" option under Editor settings lets users opt back into plain text. Also fixes cross-origin channel content (e.g. S3-hosted posters/icons) failing to load after the Electron 43 upgrade.

New Features

  • Added BrightScript-aware syntax coloring to the Editor console panel, with a setting to disable it, by @lvcabral in #339

Bug Fixes

  • Forced 200 status on CORS preflight responses so cross-origin channel content loads correctly after the Electron 43 app:// origin change by @lvcabral in #338

Dependency Bumps

  • Bump @lvcabral/terminal from 1.1.0 to 1.3.0 by @lvcabral

Full Changelog: v2.5.0...v2.5.1

2.5.0 - SG Home App and Peer Roku Discovery Persistence

Choose a tag to compare

@github-actions github-actions released this 20 Aug 23:01
7cf54c4

This release replaces the Home app by a new SceneGraph-based one, with support for removing sideloaded packages and jumping straight to a settings section. Roku peer device discovery results are now cached to disk so the peer menu is populated immediately on startup instead of waiting for a fresh network scan, and the Deploy to Peer Roku menu label now shows the discovered device's friendly name. The editor also gains a configurable console log level. Bumped brs-engine to v2.5.1 and brs-scenegraph to v0.5.1, bringing MPEG-DASH streaming support, an hls.js upgrade, and spec-compliant AnimatedImage/roAnimatedImage. Electron is also upgraded from v39 to v43, closing a security-patch gap.

See the BrightScript Simulation Engine v2.5.1 full changelog for all the language and framework features and improvements.

New Features

  • Replaced the Home app by a new SceneGraph based, with new features for removing recent/sideloaded apps from the grid and opening a specific settings sections by @lvcabral in #336
  • Added persistence for Roku device discovery results and a dynamic peer Roku menu label showing the discovered device's name by @lvcabral in #335
  • Added a configurable console log level to the editor settings by @lvcabral in #334

Maintenance

  • Upgraded Electron from v39 to v43 by @lvcabral
    • App windows now load from a privileged app:// scheme instead of file:// (src/helpers/protocol.js), since Electron 43 stopped granting crossOriginIsolated to file:// documents (electron/electron#50789), which brs-engine's worker needs for SharedArrayBuffer
    • Restored CORS-free cross-origin fetches for channel content, which file:// provided for free but a real origin like app:// does not
    • Home app recent-apps icons now serve from app:// too, cached under a dedicated icons/ subdirectory of userData rather than its root (so the rest of userData, including brs-settings.json, isn't reachable from the app windows), with a matching fix in the brs-home.zip app so its icon loading recognizes the new scheme. Icons cached by earlier versions are moved into the new location automatically on first launch
    • toastify-js is now copied into the build output instead of referenced via ../node_modules/..., which only worked under file://
    • The file:// → app:// change also moves localStorage to a new origin, which would otherwise orphan the editor's saved code snippets and brs-engine's per-channel registry values from before the upgrade. These are now migrated automatically on first launch of the new version
    • Preserved the app's square frameless window look on Linux, where v43 defaults frameless windows to rounded corners

Documentation

  • Documented the Debug Server command set and updated the VS Code integration guide to drop the retired rendezvousTracking launch config option by @lvcabral in #333

Dependency Bumps

  • Bump brs-engine from 2.4.0 to 2.5.1 by @lvcabral
  • Bump brs-scenegraph from 0.4.0 to 0.5.0 by @lvcabral
  • Bump electron from 39.2.7 to 43.4.0 by @lvcabral

Full Changelog: v2.4.0...v2.5.0

v2.4.0 - Remote Screen and Rendezvous Tracking

Choose a tag to compare

@github-actions github-actions released this 12 Aug 06:30

This release brings several new features and bug fixes to the BrightScript Simulator. Highlights include the new Remote Screen service for WebRTC video streaming, ECP rendezvous tracking for debugging, an 'Allow Remote Access' setting to restrict network services, and a new target command in the debug server. It also includes various bug fixes for the console, startup logic, and window sizing.

See the BrightScript Simulation Engine v2.4.0 full changelog for all the language and framework new features and improvements.

New Features

  • Added the Remote Screen service: streams the simulator display to a browser on the local network over WebRTC, with an on-screen Roku remote, keyboard mapping, text entry and a screenshot download — see the documentation. by @lvcabral in #322
  • Added 'Allow Remote Access' setting to restrict network services to localhost by @anupamme in #314
  • Implemented Live rendezvous logging via brs-engine API & ECP endpoints by @lvcabral in #320
  • Implemented ECP rendezvous tracking by @lvcabral in #323
  • Added target command handler to debug server by @lvcabral in #325
  • Added ability to copy file path to clipboard by clicking status bar text by @lvcabral in #326
  • Added option to clear console on startup and implement trigger in engine events by @lvcabral in #331

Bug Fixes

  • Fixed: align localStorage key so 'don't show again' checkbox persists by @lvcabral in #317
  • Fixed: drop remote connections on local-only toggle and document the setting by @lvcabral in #318
  • Fixed: restore minimum window size overridden by custom-electron-titlebar by @lvcabral in #319
  • Fixed: reverted ECP rendezvous tracking IPC calls linked with the Debug service by @lvcabral in #321
  • Fixed: console buffer losing warning/error coloring when editor opens late by @lvcabral in #327
  • Fixed: startup race between queued app launch and auto-start logic by @lvcabral in #328
  • Resolved npm audit findings without breaking minimatch@3 chain by @lvcabral

Testing & Tooling

  • Run ESLint and Prettier as a CI job, fix pending lint errors by @lvcabral in #329

Dependency Bumps

New Contributors

Full Changelog: v2.3.0...v2.4.0

2.3.0 - SceneGraph Node Complete and more!

Choose a tag to compare

@github-actions github-actions released this 27 Jul 01:16

This release brings a large set of new features, bug fixes, and infrastructure improvements to the BrightScript Simulator. Highlights include a Debug Server on telnet port 8080, a console search feature, clipboard paste support, OOM/crash recovery, video auto-play settings, custom device feature flags, auto-save in the editor, JPEG screenshot support, and a comprehensive Vitest test suite. The SceneGraph extension is now in beta status, and it's Node complete! See the BrightScript Simulation Engine full changelog for all the language and framework features and improvements.

New Features

  • Implemented the Debug Server on telnet port 8080 by @lvcabral in #276
  • Added search feature to the console panel by @lvcabral in #273
  • Added keepAppOpen setting for Peer Roku by @lvcabral in #272
  • Added clipboard paste support for sending text to the simulator via sequential keypresses by @lvcabral in #280
  • Added customization settings for managing custom feature flags via roDeviceInfo by @lvcabral in #281
  • Added video auto-play setting to device configuration and UI preferences by @lvcabral in #284
  • Added custom features icon and updated settings configuration labels by @lvcabral in #283
  • Installer password now updates immediately; service restart instruction only applies to port changes by @lvcabral in #285
  • Added JPEG support for screenshot exports and save dialog filters by @lvcabral in #287
  • Home key now intercepts to exit apps even with the debugger active by @lvcabral in #288
  • Enhanced toast system with click-to-disable functionality and DevTools performance warning by @lvcabral in #291
  • Added auto-save functionality when running code in the editor via configurable preference by @lvcabral in #292
  • Implemented OOM and crash recovery with automatic device reload and user notification by @lvcabral in #279
  • Adjusted update check intervals and added skip version option by @lvcabral in #277
  • Resolved system theme setting to current application theme in editor initialization
  • Added support for HEAD HTTP request on the Installer Service by @lvcabral in #266
  • Updated SceneGraph warning dialog to reflect beta status and changed localStorage key by @lvcabral in #315

Bug Fixes

  • Fixed: respect disableCheckForUpdates setting dynamically inside timers by @lvcabral in #278
  • Fixed: enforce OS-specific search shortcuts in console by @lvcabral in #274
  • Fixed: auto-update search matches when console output changes by @lvcabral in #275
  • Fixed: add key-press delay and enable native paste for secondary windows by @lvcabral in #282
  • Fixed: restrict clipboard copy shortcut to platform-specific key combination by @lvcabral in #290
  • Fixed: restore terminal input focus after updates to prevent intermittent focus loss by @lvcabral in #289
  • Fixed: removed calls to a non-existent function
  • Fixed: removed duplicated autoPlayEnabled property from main configuration object
  • Fixed: detect a compile failure regardless of whitespace by @lvcabral in #301
  • Fixed: ECP now resolves bundled assets so routes work outside the bundle too by @lvcabral in #309
  • Fixed: ECP answers device queries during the pre-deviceData startup window by @lvcabral in #297
  • Fixed: keep the shortened path within its budget in the status bar by @lvcabral in #307
  • Fixed: return a string from hashCode for every input by @lvcabral in #306
  • Fixed: reject malformed IP addresses instead of coercing them by @lvcabral in #305
  • Fixed: return nothing for firmware outside the version alphabet by @lvcabral in #304
  • Fixed: stop a bare -w flag persisting NaN as the web installer port by @lvcabral in #303
  • Fixed: read the numeric prefix of a version segment in update checker by @lvcabral in #302
  • Fixed: support remote shortcuts with more than one modifier by @lvcabral in #299
  • Fixed: restore the default for a missing remote key instead of throwing by @lvcabral in #300
  • Fixed: stop custom key bindings firing on unrelated chords by @lvcabral in #298
  • Resolved npm audit vulnerabilities in shipped dependencies by @lvcabral in #295

Refactoring & Code Quality

  • Dynamically generate recent files submenu and increased recent file limits by @lvcabral in #286
  • Refactored dev-console commands dispatch from a table by @lvcabral in #310
  • Resolved recent-file menu items by id instead of position by @lvcabral in #308
  • Removed the fs-jetpack dependency, replacing its five usages with Node's built-in fs module and
    two small helpers (readJsonFile/writeJsonFile in src/helpers/util.js) that preserve the previous
    behaviour, including atomic writes of recent-files.json and window-state-*.json
  • Removed build/webpack.unit.config.js and build/webpack.e2e.config.js, unused leftovers from the
    electron-boilerplate template
  • Removed dead CodeMirror leftovers by @lvcabral in #294
  • Updated simulator info modal with bold text and issue tracker link

Testing & Tooling

  • Added Vitest test suite covering pure logic and network services by @lvcabral in #296
  • Modeled Electron submenus so the menu suite runs on Windows and Linux by @lvcabral in #311
  • Added ESLint with the brs-engine ruleset ported to JavaScript by @lvcabral in #313
  • Added Prettier config and formatted the codebase by @lvcabral in #312
  • Upgraded monaco-editor to v0.56.0 and added overrides for dompurify, @electron/asar,
    @electron/universal and filelist to resolve npm audit reports
  • npm audit went from 19 vulnerabilities (2 moderate, 17 high) to 10 (all high), and
    npm audit --omit=dev now reports 0 vulnerabilities — nothing vulnerable ships in the application

Dependency Bumps

Full Changelog: v2.2.0...v2.3.0

v2.2.0 - Hide Editor and Electron 39

Choose a tag to compare

@lvcabral lvcabral released this 12 Feb 04:21

This release includes several improvements and bug fixes to the BrightScript Simulator. It upgrades Electron to v39, bringing performance enhancements and security updates. Additionally, it introduces a new feature that allows users to hide or show the editor panel manually, providing a more flexible workspace. The brs-engine dependency is also upgraded to v2.1.0 with RSG extension, which includes various fixes and improvements to the BrightScript language and SceneGraph support.

brs-desktop-hide-editor

Release Changes

  • Upgraded Electron to v39 by @lvcabral in #241
  • Changed the Editor/Console window to allow user to hide/show the editor panel manually by @lvcabral in #242
  • Upgraded brs-engine to v2.1.0 (with RSG extension), main changes were:
    • (brs) Fixed MicroDebugger stack trace and context (variables)
    • (brs) Properly handle crash during debugger session
    • (brs) Properly handle files with UTF-8 BOM on Lexer
    • (brs) Implemented DRM detection in browser environment to populate roDeviceInfo.getDrmInfoEx()
    • (brs) Fix video URL handling to correctly process package video files
    • (brs) Added support for the milliseconds param on roDateTime.toISOString()
    • (brs) Allowed to use global as function parameter name
    • (brs) Add LongInteger (Int64) support to Str() global function
    • Changes on brs-scenegraph package (release v0.1.0):
      • (rsg) Implement thread updates similar to SceneGraph Rendezvous
      • (rsg) Fixed Scenegraph crash handling and stack trace
      • (rsg) Implemented support for debugging Task threads
      • (rsg) Added PosterGrid and improved focus style handling on ArrayGrid based nodes
      • (rsg) Fixed ScrollingLabel to handle horizAlign and actually scroll when needed
      • (rsg) Added InfoPane node
      • (rsg) Fixed the handling of OK key in RowList and ZoomRowList
      • (rsg) Added setNodeFocus method to ArrayGrid to reset itemFocused when getting the focus
      • (rsg) Added sgnodes command to MicroDebugger to list node type statistics
      • (rsg) Added MaskGroup draft and fixed several issues with field assignment
      • (rsg) Fixed component XML parsing of interface to handle attributes as case-insensitive
      • (rsg) Improved parsing of field types: StringArray, Vector2D and Vector2DArray
      • (rsg) Fixed XML parsing to support alias field to be set without type
      • (rsg) Added support for default item component on RowList and item focus callback in ArrayGrid
      • (rsg) Implemented all PanelSet related nodes
      • (rsg) Fixed role fields to not be case sensitive
      • (rsg) Implemented the context expansion for the Main thread
      • (rsg) Allowed replacing hidden fields when extending ContentNode
      • (rsg) Prevent issues with Video node on startup (after the Splash)
      • (rsg) Improved handling of manifest entries ui_resolutions and uri_resolution_autosub
      • (rsg) Fixed crash when m.top.getScene() is used on init() in a Task thread
      • (rsg) Implemented ancestorBoundingRect() method
      • (rsg) Added support for multiple Node field aliases (CSV)
      • (rsg) Fixed Node.setValue() signature to prevent field creation on assignment
      • (rsg) Fixed item component handling to not fail when fields are not defined in XML
      • (rsg) Fixed Node field aliases observer trigger
      • (rsg) Fixed Poster, BusySpinner, Video and TrickPlayBar to properly handle child nodes uri update
      • (rsg) Fixed BusySpinner dimensions calculation
      • (rsg) Fixed circular dependency issue when Node has child with its same id in alias
      • (rsg) Fixed StandardDialog focus and back key press handling
      • (rsg) Fixed observables serialization and handling of InfoFields

Full Changelog: v2.1.3...v2.2.0

v2.1.3 - Animation and Interpolator Nodes

Choose a tag to compare

@lvcabral lvcabral released this 06 Jan 18:13

This release includes several bug fixes and improvements to the BrightScript Simulator. It addresses issues related to custom Settings icons on Windows OS, Roku devices detection on computers with multiple network interfaces, resizing the main window on macOS, and enforces a single application instance. Additionally, it upgrades the brs-engine dependency to v2.0.4 with RSG extension, bringing various fixes and enhancements to the BrightScript language and SceneGraph support including the implementation of Animation and Interpolator nodes.

brs-desktop-animation-demo-01-2026

Release Changes

  • Fixed custom Settings icons on Windows OS by @lvcabral in #237
  • Improved Roku devices detection on computers with several NICs by @lvcabral in #238
  • Fixed resizing main window on MacOS by @lvcabral in #239
  • Enforce single application instance by @lvcabral in #240
  • Upgraded brs-engine to v2.0.5 (with RSG extension), main changes were:
    • (brs) Fixed debugger to restore the context on RunTimeError
    • (brs) Added toBoolean for all numeric components
    • (brs) Fixed CreateObject to properly handle boxed parameters and raise RunTimeError
    • (rsg) Fixed roSGNode creation using boxed String as nodeType
    • (rsg) Fixed focus when initialFocus is not set
    • (rsg) Fixed: ArrayGrid based nodes must reset focused item when content is updated
    • (rsg) Fixed findNode to prioritize search on children
    • (rsg) Implemented Animation and Interpolator nodes
    • (rsg) Changed Node to preserve field name case
    • (rsg) Fixed conflict on roSGScreen scene events handling
    • (cli) Fixed CLI loading SceneGraph components on Windows file system
    • (rsg) Optimized roSGScreen to only render when changes happened

Full Changelog: v2.1.2...v2.1.3