Repository navigation
Releases: lvcabral/brs-desktop
Release list
2.6.2 - Server-Sent Events and GetRokuCustomerId
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
ChannelStorenodeGetRokuCustomerIdcommand, 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-enginefrom 2.6.0 to 2.6.1 by @lvcabral - Bump
brs-scenegraphfrom 0.6.0 to 0.6.1 by @lvcabral - Bump
electron-builderfrom 26.5.0 to 26.15.3 andbuilder-util-runtimefrom 9.5.1 to 9.7.0 by @lvcabral in #354 - Bump
msgpack5from 4.5.1 to 6.1.0 andjson-urlfrom 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
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-enginefrom 2.5.4 to 2.6.0 by @lvcabral - Bump
brs-scenegraphfrom 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
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
executeFileIPC path, fixingunknown compression typeerrors 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-listunlock 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-enginefrom 2.5.2 to 2.5.4 by @lvcabral - Bump
brs-scenegraphfrom 0.5.2 to 0.5.4 by @lvcabral - Bump
@xmldom/xmldomfrom 0.8.13 to 0.8.15 by @lvcabral in #344 - Bump
fast-urifrom 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
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-enginefrom 2.5.1 to 2.5.2 by @lvcabral - Bump
brs-scenegraphfrom 0.5.1 to 0.5.2 by @lvcabral
Full Changelog: v2.5.1...v2.5.2
2.5.1 - BrightScript-Aware Console Coloring
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/terminalfrom 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
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 offile://(src/helpers/protocol.js), since Electron 43 stopped grantingcrossOriginIsolatedtofile://documents (electron/electron#50789), whichbrs-engine's worker needs forSharedArrayBuffer - Restored CORS-free cross-origin fetches for channel content, which
file://provided for free but a real origin likeapp://does not - Home app recent-apps icons now serve from
app://too, cached under a dedicatedicons/subdirectory ofuserDatarather than its root (so the rest ofuserData, includingbrs-settings.json, isn't reachable from the app windows), with a matching fix in thebrs-home.zipapp so its icon loading recognizes the new scheme. Icons cached by earlier versions are moved into the new location automatically on first launch toastify-jsis now copied into the build output instead of referenced via../node_modules/..., which only worked underfile://- The
file://→app://change also moveslocalStorageto a new origin, which would otherwise orphan the editor's saved code snippets andbrs-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
- App windows now load from a privileged
Documentation
- Documented the Debug Server command set and updated the VS Code integration guide to drop the retired
rendezvousTrackinglaunch config option by @lvcabral in #333
Dependency Bumps
- Bump
brs-enginefrom 2.4.0 to 2.5.1 by @lvcabral - Bump
brs-scenegraphfrom 0.4.0 to 0.5.0 by @lvcabral - Bump
electronfrom 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
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
targetcommand 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 auditfindings without breaking minimatch@3 chain by @lvcabral
Testing & Tooling
Dependency Bumps
- Bump
fast-urifrom 3.1.4 to 3.1.5 by @dependabot in #324 - Bump
js-yamlfrom 4.3.0 to 4.3.1 by @dependabot in #330
New Contributors
Full Changelog: v2.3.0...v2.4.0
2.3.0 - SceneGraph Node Complete and more!
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
keepAppOpensetting 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
roDeviceInfoby @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
localStoragekey by @lvcabral in #315
Bug Fixes
- Fixed: respect
disableCheckForUpdatessetting 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
autoPlayEnabledproperty 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-
deviceDatastartup 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
hashCodefor 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
-wflag persistingNaNas 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 auditvulnerabilities 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-jetpackdependency, replacing its five usages with Node's built-infsmodule and
two small helpers (readJsonFile/writeJsonFileinsrc/helpers/util.js) that preserve the previous
behaviour, including atomic writes ofrecent-files.jsonandwindow-state-*.json - Removed
build/webpack.unit.config.jsandbuild/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-engineruleset ported to JavaScript by @lvcabral in #313 - Added Prettier config and formatted the codebase by @lvcabral in #312
- Upgraded
monaco-editorto v0.56.0 and addedoverridesfordompurify,@electron/asar,
@electron/universalandfilelistto resolvenpm auditreports npm auditwent from 19 vulnerabilities (2 moderate, 17 high) to 10 (all high), and
npm audit --omit=devnow reports 0 vulnerabilities — nothing vulnerable ships in the application
Dependency Bumps
- Bump
@xmldom/xmldomfrom 0.8.12 to 0.8.13 by @dependabot in #259 - Bump
ip-addressfrom 10.1.0 to 10.2.0 by @dependabot in #260 - Bump
fast-urifrom 3.1.0 to 3.1.2 by @dependabot in #261 - Bump
@babel/plugin-transform-modules-systemjsfrom 7.28.5 to 7.29.4 by @dependabot in #262 - Bump
serialize-javascript,@lvcabral/electron-preferencesandcopy-webpack-pluginby @dependabot in #263 - Bump
postcssfrom 8.5.6 to 8.5.15 by @dependabot in #264 - Bump
tmpfrom 0.2.5 to 0.2.7 by @dependabot in #265 - Bump
form-databy @dependabot in #267 - Bump
wsby @dependabot in #268 - Bump
tarfrom 7.5.13 to 7.5.16 by @dependabot in #269 - Bump
js-yamlfrom 4.1.1 to 4.2.0 by @dependabot in #270 - Bump
@babel/core,@babel/preset-envandbabel-loaderby @dependabot in #271
Full Changelog: v2.2.0...v2.3.0
v2.2.0 - Hide Editor and Electron 39
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.
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-engineto 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 BOMonLexer - (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
millisecondsparam onroDateTime.toISOString() - (brs) Allowed to use
globalas function parameter name - (brs) Add LongInteger (Int64) support to Str() global function
- Changes on
brs-scenegraphpackage (release v0.1.0):- (rsg) Implement thread updates similar to SceneGraph Rendezvous
- (rsg) Fixed
Scenegraphcrash handling and stack trace - (rsg) Implemented support for debugging Task threads
- (rsg) Added
PosterGridand improved focus style handling onArrayGridbased nodes - (rsg) Fixed
ScrollingLabelto handlehorizAlignand actually scroll when needed - (rsg) Added
InfoPanenode - (rsg) Fixed the handling of
OKkey inRowListandZoomRowList - (rsg) Added
setNodeFocusmethod toArrayGridto resetitemFocusedwhen getting the focus - (rsg) Added
sgnodescommand toMicroDebuggerto list node type statistics - (rsg) Added
MaskGroupdraft and fixed several issues with field assignment - (rsg) Fixed component XML parsing of
interfaceto handle attributes as case-insensitive - (rsg) Improved parsing of field types:
StringArray,Vector2DandVector2DArray - (rsg) Fixed XML parsing to support
aliasfield to be set withouttype - (rsg) Added support for default item component on
RowListand item focus callback inArrayGrid - (rsg) Implemented all
PanelSetrelated nodes - (rsg) Fixed
rolefields 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
Videonode on startup (after the Splash) - (rsg) Improved handling of manifest entries
ui_resolutionsanduri_resolution_autosub - (rsg) Fixed crash when
m.top.getScene()is used oninit()in aTaskthread - (rsg) Implemented
ancestorBoundingRect()method - (rsg) Added support for multiple
Nodefield 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
Nodefield aliases observer trigger - (rsg) Fixed
Poster,BusySpinner,VideoandTrickPlayBarto properly handle child nodesuriupdate - (rsg) Fixed
BusySpinnerdimensions calculation - (rsg) Fixed circular dependency issue when
Nodehas child with its sameidinalias - (rsg) Fixed
StandardDialogfocus andbackkey 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
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.
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-engineto v2.0.5 (with RSG extension), main changes were:- (brs) Fixed debugger to restore the context on
RunTimeError - (brs) Added
toBooleanfor all numeric components - (brs) Fixed
CreateObjectto properly handle boxed parameters and raiseRunTimeError - (rsg) Fixed
roSGNodecreation using boxedStringasnodeType - (rsg) Fixed focus when
initialFocusis not set - (rsg) Fixed:
ArrayGridbased nodes must reset focused item whencontentis updated - (rsg) Fixed
findNodeto prioritize search onchildren - (rsg) Implemented
AnimationandInterpolatornodes - (rsg) Changed
Nodeto preserve field name case - (rsg) Fixed conflict on
roSGScreenscene events handling - (cli) Fixed CLI loading SceneGraph components on Windows file system
- (rsg) Optimized
roSGScreento only render when changes happened
- (brs) Fixed debugger to restore the context on
Full Changelog: v2.1.2...v2.1.3

