-
Notifications
You must be signed in to change notification settings - Fork 11
XSplit JS Framework Version 1
Welcome to the Wiki. This is where we post our release notes for new releases, and outline our software roadmap for upcoming features.
If you're interested in learning how to use the framework, please visit our Github Page instead.
1.4.1 (issues)
This release contains specifically-selected new features, and important fixes.
New features / improvements:
- Add method that emits events when scenes are added / deleted (#98).
- Add funtionality to delete videoitems (#107).
Bugfix and Other changes:
- Bugfixes related to items and the XBC preview editor where:
- calling
getSceneId
from items loaded in the preview editor returns NaN (#113). - items swapped from the preview editor can no longer save configuration (#118).
- calling
- Bugfix for
setItemOrder
reloading items and disconnecting camera sources (#106). This bugfix is done in coordination with the core XBC product. - Bugfix for calling
getId
method onCameraDevices
having ampersand (&) on their device IDs converting said character into “&” (#116). - Bugfix on HTMLItem's
setURL
method not automatically affixing browser configuration (#117) - Document change to properly reflect the return of the DLL class
call
method (#110). Return is listed as string when it should have been a promise.
1.4.0 (issues)
This release contains new features, enhancements and important fixes.
Notable changes:
- Compatibility for XBC Global sources build (#85).
The changes on this item covers the bugs and incompatibilities caused by the changes in XBC core and the handling of the “video item” instead of sources. For more information, please consult this page.
- Add functionality to framework to convert any source to a global source, or reverse the process (#86)
- Deprecated
Source
methods. UseItem
methods instead. Most of the Source methods should still generally work on the latest XBC build.
New features / improvements:
- Add method that emits events for stream-start and stream-end (#5).
- Apply name change to all items sharing the same source (#95).
- Allow unzipping files through XjsEx.dll (#79).
Bugfix and Other changes:
- Bugfix related to toXML method (#89). This is a minor update for this method to handle the variables properly.
- Update sample plugins in the website (#93). The update should generally let the plugins work for both the XBC 2.7 and 2.8 versions.
- Bugfix for source-list-select event on the latest XBC(2.8) version (#94).
- Bugfix on the error handling if there are more than 12 scenes in support for XBC 2.8 (#96). This also includes the addition of a method that fetches the actual number of scenes available through Scene.getSceneCount().
1.3.0 (issues)
This milestone cleans up some important edge cases, and implements some necessary functions for creating cleaner Extensions.
Notable changes:
- Extensions can now set their window titles (#81) and border options for the window (#76). These functions should ideally be done on startup. Known Issues:
- Setting a window title for an extension does not update its name in the Permissions window.
- Disabling the close button does not incur any visual changes.
- Setting extension window border options sometimes requires dragging of the window first before the changes take effect.
Other changes:
- Release builds will now contain the license header (#75)
- Allow calling of global function calls declared on the window object for HTML sources (#69). This allows some level of inter-source communication. Extensions can also call these functions.
- Add additional methods to the ScreenSource class (#62)
- Add support for masking and edge effects (#59). This affects multiple source types. For the complete list of function calls, see IItemEffect
- Allow modification of existing video playlist sources (#53)
- bugfix: Avoid performing double URI decode for relevant calls (#77)
- bugfix: Fetching current source in Preview Editor can still fail on SourceProps window (#74)
1.2.0 (issues)
This release contains new features, as well as important fixes related to the usage of the Preview Editor.
New features / improvements:
- Allow adding video playlists programmatically (#39)
- Add hardware encoder detection for Camera sources (#52). Since currently all camera sources that use hardware encoders are capture cards, then getting true for both CameraSource#isHardwareEncoder() and CameraSource#isActive() indicates high likelihood that a capture card is being used. Some older capture cards will return false on isHardwareEncoder(), however. Improvements will be made to improve detection.
- Distributed builds are now minified (#52)
- Add full dynamic color range to color interface (#57)
- Add force deinterlace to Camera sources (#60)
- Allow Media sources to get file information (#61). This includes codecs, bitrate, resolution, and others.
- Scene load event for source plugins. (#70) Sources can now detect when their containing scene is being loaded.
- Allow source plugins to register right click events (#71). However, disabling the source props window is currently not possible.
- Additional detection for source being loaded in preview (#72). Source#getView() can be used together with the scene load event if necessary, as the event fires when the source is being loaded in the preview editor or the thumbnail view.
Bugfixes:
- Bugfixes related to the preview editor (#67). This should allow Source.getCurrentSource() to work properly in preview editor, and a related XBC change now assigns a different ID to sources in the preview editor. However, there are still issues with handling the source props when in the preview (#74).
- Compatibility issue with webpack ts-loader (#68)
Breaking changes:
- We deprecated Environment.isSourceConfig() (#64). Use Environment.isSourceProps() instead. This is in line with #34.
- Scene.getActiveScene() is now disabled for sources (#73). The original behavior was similar to Source#getScene(), and there is currently no way to detect the active scene from within sources.
1.1.0 (issues)
This release contains important bug fixes and feature requests.
New features / improvements:
- MediaSource now uses pixel shading deinterlace instead of standard deinterlace (#63)
- Add crop methods for item sources (#54). This was a layout property missing from earlier releases.
- Added new rotation and cropping methods for sources implementing the IItemLayout interface (#58). Additional notes: These enhanced functions do not only manipulate the underlying source property (crop, for instance), but also handle other related properties (such as position) so that it behaves similarly to the default Layout tab in XBC's source properties dialogs. For an example, see getEnhancedRotate
- Custom transition support. (#55). This requires at least XBC 2.7.1602.0502. For more details, please check this link
Other changes:
- fix: getAsList method does not handle possible errors (#66)
- fix: filterSources will not return sources from other scenes when executed in source properties window (#65)
1.0.0 (issues)
This is the official release of a stable version!
- Added missing documentation and code samples, and improvements to other docs
- all methods related to some ID are now changed to use the
Id
capitalization for consistency instead. Source.getId(), Source.getSceneId(), Scene.getById(), Scene.searchItemsById(), Scene.searchScenesByItemId(), CameraSource.getDeviceId(), AudioDevice.getId(), CameraDevice.getId(), MicrophoneDevice.getDisplayId() - all Item classes are now renamed to Source classes. Thus 'HtmlSource', 'GameSource', 'CameraSource', etc. (This was done to avoid confusion as to what an 'item' is.)
- SourceConfigWindow is now renamed to SourcePropsWindow to better match our standard nomenclature
- SourcePropsWindow's resizeConfig() and closeConfig() functions now renamed to resize() and close()
0.10.0 (issues)
This milestone greatly improves feature parity between the framework and XSplit Broadcaster, especially with regards to adding new sources to the stage.
Notable changes:
- adding auto-detect game sources (#19), screen regions (#36), and images/media (#37) to the stage
- improved support for DLLs with the XSplit's new DLL security scheme (#49)
Breaking changes:
- fix: Setting the Primary Microphone/Speaker seems to destroy the primary audio devices (#41). Because of some limitations, modifications on the audio devices used by Broadcaster are now limited to a few functions. Check the API for more info
- refactor: consistent use of "Id" instead of "ID". We now have getId() for Item instances (#28)
Other changes:
- fix: searching items by ID should be case insensitive (#33)
- added missing framework functions for manipulating media (#35), audio-related (#44) and camera sources (#47)
- new events for extensions to detect when sources are highlighted, selected, etc. (#40)
- fix: possible bugs when manipulating configuration object for sources (#43)
- fix: automatically handle DPI-related bugs when setting a source's browser size (#45)
- support for browserify bundler (#46)
- fix: return XBC's application version for getVersion call (#48)
- add refresh functionality for sources (#50)
- hotfix for Dialog.getResult() due to certain ES6 functions not transpiled (issue)
0.9.0 (issues)
This milestone is primarily focused on exposing our internal DLLs for plugin developers to use. See our reference website for more details.
Notable changes:
- DLL support (#21). (This should address file-writing as requested in #7). Please take note of the current issues with DLLs as explained in our DLL tutorial
- Allow changing title of source properties dialog #31
Breaking changes:
- fix: item layout methods swapped top and left (#42). Rectangle.fromCoordinate now follows LTRB coordinate order instead of TLRB. This is in accordance with how XBC handles its coordinates. All future methods related to coordinates should follow this order as well.
Other changes:
- Documentation for DLL usage added to the website.
- versioning improvements (#16). The framework will now be distributed with a version number.
- full migration to TypeScript 1.6. This was previously prevented by the doc gen not being totally compatible. (#18)
- refactored internal item get and set methods
0.8.0 (issues)
This milestone marks our move from our internal issue tracking to Git issues, so not all issues may be found in the link above.
Notable framework changes:
- New features:
- getting system fonts (
System.getFonts
) - clearing browser cookies (
App.clearBrowserCookies
) - new Item subclasses (
ScreenItem
,FlashItem
,MediaItem
,ImageItem
). These should now all be detected appropriately byScene#getItems()
. -
URL
class to allow adding new URL sources to current scene - new
Extension
class, the extension plugin's complement of the source plugin'sItem
class (currently used for saving/loading Extension configuration). In the future this might be used to represent all other extensions present. - Two new extensible utility functions for searching: one that returns items matching some test (
Scene.filterItems()
), and another that returns scenes containing items that match some test (Scene.filterScenesByItems()
).
- getting system fonts (
- Breaking changes:
- We've updated our Item search function. First we did a little naming change for clarity (and consistency with our filtering functions described above).
Scene.searchAllForItemName()
is nowScene.searchItemsByName
.Scene.searchAllForItemId()
is nowScene.searchItemsById()
. An important note regardingsearchItemsByName
is that it now searches by Custom Name first, and uses the Name property as a fallback. This is in line with our recommended practice to prefer Custom Name over Name (as users will want to have consistent information.)
- We've updated our Item search function. First we did a little naming change for clarity (and consistency with our filtering functions described above).
- New/updated tutorial articles at our website:
- Using Dialogs for authentication
- Common errors
- Updated article on extension plugins
- Developing plugins with ES6
Other changes:
- fix:
HTMLItem
methodssetBrowserJS
,enableBrowserJS
,setCustomCSS
,enableCustomCSS
not returning promise ofHTMLItem
object (erroneously returning window object for this context) - fix:
ItemLayout
interface methodgetPosition
interchanging left and top values - fix: Scene
searchAllForItemId
method sometimes failing due to error in checking for valid source ID - fix: browser configuration sometimes reverting to previous settings when reloading/refreshing source
- change: disable incompatible autoDialog for source config window (throw an error)
-
HTMLItem
methods for browser JS and CSS - Prepare event system for different types of windows.
ExtensionWindow
now receivesscene-load
events. Other windows (source plugin, source configuration) now ready to receive new events as they are implemented in the application -
ExtensionWindow
resizing function -
Channel
class for getting stream statistics - initial implementation of
Dialog
- better API documentation (missing docs, document inheritance chain, explicit mention of chainable methods)
- fix:
HTMLItem#getUrl
should only return the URL - fix: reverse order of parameters for
Scene#setItemOrder
for "top-down" flow - fix: typo with set background color window call
This section describes the major points of our plans for the framework. Only major issues/themes are listed here. If you check the issue listing, you can contribute to issues marked with the tag help wanted
.
- Upcoming 1.5.0 aims to make usability of the framework easier, especially with regards to linked sources. It should also include compatibility fixes with internal changes within XSplit 2.9.
-
xjs@1.6.0
will address two things primarily: 1) control over recordings and streams, and 2) ability to call XSplit methods remotely. - If you have feature requests, or want to suggest something, file an issue! Or raise your concern at Gitter; we might be able to prioritize your use case. If you simply want to chat about how you're using the framework, we'd love to hear it as well!