All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
2.1.2 (2023-04-02)
2.1.1 (2023-03-26)
- server: don't crash when
/instance/**/*.html
route 404s (#636) (c59adc8) - server: prevent directory traversal attacks (#639) (0646587)
2.1.0 (2023-03-25)
2.0.4 (2023-03-24)
2.0.3 (2023-03-24)
2.0.2 (2023-03-24)
- include templates in server build outputs (#625) (cdd8bf2)
- make node-fetch-commonjs a prod dep (#623) (72610c1)
2.0.1 (2023-03-23)
2.0.0 (2023-03-23)
1.9.0 (2022-03-30)
- auth: discord login option (#571) (3df008e)
- extension: allow extensions to export esmodule (#587) (8e3304a)
- login: add twitch id whitelisting (#583) (e83933f)
- dashboard: correct URL for obs drag when login is enabled (#585) (9046287)
- dashboard: fix the currently selected workspace not being highlighted on first page load (#538) (3442d76)
- socket: correct maxListeners setting to prevent memory leak (#579) (1b0611b)
- soundcue: fix soundcue files not persisting (#584) (eeac8c4)
- types: add/tweak types for replicant/readReplicant (#545) (f391281)
- types: correct typing for declared replicants (#596) (dea9c15)
1.8.1 (2021-03-10)
- better log formatting and configurable timestamps (#575) (dd323cd)
- deps: fix some vulnerabilities of dependency (81c9ee2)
1.8.0 (2021-03-08)
1.7.4 (2020-12-11)
1.7.3 (2020-12-11)
- deps: update express-bare-module-specifiers (bd1d925)
1.7.2 (2020-11-20)
- deps: switch json-schema-lib repo (7b7c7c1)
1.7.1 (2020-10-02)
1.7.0 (2020-09-20)
- deps: update dependencies through npm audit (a871f4b)
1.6.1 (2020-04-30)
1.6.0 (2020-02-24)
- bundle-parser: check version when parsing (#510) (484d839)
- replicants: clone default value (#527) (5ed1ed5)
- deps: update chokidar to v3 (#515) (f468825)
- docker: bump node to 10 (#533) (6fafeea)
- extension: add router helper (#535) (2a69423)
- extension: flexible mount (#519) (3ff1603)
1.5.0 (2019-08-06)
- login: expose refresh token from Twitch login authentication (#504) (b710314)
- add bundle paths customization (#483) (56ef32a)
- replicants: update persistence process (#497) (16fcefd), closes #493 #488
1.4.1 (2019-07-16)
- instance-errors: Update help text & design (#494) (7fcf6ee)
- types: Add sendMessageToBundle instance method to type definitions (#480) (a15fe3b)
- zeit_pkg: fix pkg'd executables not working when compiled on a drive other than C: (#498) (3ae9b75)
- docker: don't ignore types folder (4c0e65c)
1.4.0 (2019-04-19)
1.3.2 (2019-03-06)
1.3.1 (2019-02-03)
- dashboard: ensure the default workspace is first (#458) (18fdbe6)
- dashboard: inject default styles before user styles (#464) (5981d9e)
- injectscripts: don't inject client_registration into busy.html or killed.html (0a63202)
- package: fix error when running in a zeit pkg (38b01e2)
- package: include babel-plugin-bare-import-rewrite in zeit packages (9813da3)
- replicant-schemas: fix local refs not being resolved when appended to a file ref (0cd1673)
- router: delay 404 resolution (#463) (23e5772)
1.3.0 (2018-11-19)
- login: add password hashing support for local auth (#446) (cf6192b)
- rewrite bare module specifiers (#454) (4500ccd)
1.2.2 (2018-10-30)
- update Node.js version check (#438) (086621d)
- types: remove optional parameters in callback (81b0a11)
- security: add support for passphrase for SSL key (#437) (c444d9b)
- replace Pug by Lodash with cache (83404d1)
- TypeScript: Add NodeCG API TypeScript Type Definition (#432) (9372ca4)
1.1.3 (2018-08-05)
- dashboard: also target root html for theme import (0948f5f)
- dashboard: fix text and icon colors of Asset upload dialog (d1d3a45)
- dashboard: implement missing dark theme for bundle dialogs (d14158f)
- package: roll node-localstorage to v1.3.1 (56d8bb7)
1.1.2 (2018-07-19)
- dashboard: fix graphic instances not appearing when using a bundle that is not a git repo (54cfcd6)
1.1.1 (2018-07-19)
- dashboard: fix missing background color on graphics collapse toggle button (9e6bc4d)
- package: include schemas folder in zeit pkg builds (c38e463)
1.1.0 (2018-07-19)
- api: add nodecg.bundleGit object (#418) (dfe0b95)
- api: add nodecg.bundleVersion to api (#459) (170142b)
- api: introduce bundles replicant (#421) (94d0b1d)
- dashboard: implement dark theme (#425) (0dafe4e)
- dashboard: implement redesigned graphics tab with refresh buttons (#420) (215f489)
1.0.0 (2018-07-11)
- remove undocumented and non-functional panelClick event (1c20d58)
- remove undocumented dialog-confirm and dialog-dismiss attribute click handlers (cab06b6)
- assets: fix "can't set headers..." error (#411) (518cf21)
- dashboard: remove useless and busted-looking "info" dialog from panels (22499bd)
- login: use the New Twitch API (#413) (6696231)
- mounts: put mount routes behind an auth check (c99fa85)
- sounds: remove undocumented customCues system (efe877e)
- api: add support for intra-context messaging (#410) (3a3acf7)
- api: support multiple listenFor handlers (#403) (f19c79b), closes #298
- bundle-manager: blacklisted bundle directory names (#357) (68e7add)
- dashboard: The undocumented
[dialog-confirm]
and[dialog-dismiss]
attribute click handlers have been removed. - dashboard: The undocumented (and broken)
panelClick
event has been removed. - api: sendMessage can now trigger listenFor handlers in the same context (extension, webpage, etc).
- login: The format of Twitch auth scopes has changed. Please see https://dev.twitch.tv/docs/authentication/#scopes for documentation on this new format.
- login: Twitch auth now uses the "New Twitch API", instead of the deprecated "v5" API.
- api: A given context (server, client) can now declare multiple listenFor handlers for a given message. Handlers are called in the order they were registered.
However, a server-side listenFor handler must be careful to only call an acknowledgement once. Attempting to call an acknowledgement more than once will throw an error.
Your server-side code can check if an acknowledgement has already been called/handled by checking its .handled
property.
Example:
nodecg.listenFor('example', (data, ack) => {
if (ack && !ack.handled) {
ack();
}
});
- sounds: The undocumented customCues system has been removed.
0.9.12 (2018-07-05)
- bundles: avoid throwing exception on Unicode BOM (#401) (84a4555)
- package: use npm audit to fix a lot of vulnerability warnings (1b9dc96)
- api: add NodeCG.waitForReplicants method (b8d3ed1)
- auth: add basic local authentication (#390) (54bbcf6)
0.9.11 (2018-05-03)
- dashboard: always send 'dialog-dismissed' when clicking outside the dialog (#385) (da30fe1)
- dashboard: support the nodecg-dialog attribute within shadow roots (#384) (fc62adf)
- logger: improve formatting of errors reported to Sentry via the .error method (cb6426e)
- package: fix Steam auth not working (59627a9)
- package: update make-fetch-happen to version 4.0.1 (#389) (7a44ca1), closes #382
- server: prevent 'can't set headers after they are sent' error spam (#387) (58357bf)
0.9.10 (2018-03-08)
- package: synchronize package-lock.json (82a6e0b)
- package: update SoundJS to v1.0.0 (ba26fc8), closes #371
- replicants: bind methods on objects when returning them via the proxy (1987ce4)
0.9.9 (2018-01-18)
- extensions: improve logging when an extension fails to mount (e7f2a90)
- login: Redirect to /login after destroying session (#355) (30aa4ba)
- package: update fs-extra to version 5.0.0 (#352) (629cc45)
- replicator: don't crash when a an error occurs while updating the persisted value of a replicant (54baa0e)
- replicator: use mkdirp when ensuring that the db/replicants folder exists (7b952f4)
- add mounting feature (07210b0)
- bundles: support loading assets from node_modules (#358) (74915d7)
- config: always create cfg dir if it does not exist (49a9255)
- package: add "bin" prop to package.json (0c8d0b6)
- package: add nsp compliance (1b0da9b)
- add support for zeit pkg builds (#362) (acb168c)
0.9.8 (2017-10-19)
- bundle-manager: don't attempt watch *.lock files for changes (269f3d0)
- package: update JSDoc (a1a81c5)
- package: update nyc (13256a8)
- replicants: support schemas with internal $refs (ee1c394)
0.9.7 (2017-09-12)
- api: detect and throw when an object is assigned to multiple Replicants (2fbaee3)
- dashboard: remove extra margins that could appear in bundle dialogs (7bb2f9f)
0.9.6 (2017-09-07)
0.9.5 (2017-09-07)
- dashboard: fix Sign Out button being visible when login security is disabled (aa12c54)
- sentry: include git information about all loaded bundles when reporting errors to sentry (431274b)
0.9.4 (2017-08-31)
- config: reduce the number of cases where a bundle's config is rejected when it shouldn't be (e62de24)
- replicants: improve parsing of schema $refs (6364396)
0.9.3 (2017-08-29)
- config: properly load baseURL param (8c3d76b)
0.9.2 (2017-08-28)
- package: make fs.extra a production dependency, instead of a devDependency (5ac2c88)
0.9.1 (2017-08-28)
- bundle-manager: fix case where changes to a bundle's manifest could get ignored (882f406)
- bundle-manager: remove debug print (91546e2)
- replicants: improve how revision mismatch errors are logged to console on the client (e99dcbc)
- package: fix version number in
package.json
(this prevented most bundles from loading - whoops!)
0.9.0 (2017-08-27)
- api: print more useful error message when a replicant fails schema validation due to having additional properties (037709a)
- assets: improve appearance of dialogs. refactor back and frontend code to allow for potential future features. (7025d51), closes #309
- config: default
host
to0.0.0.0
instead oflocalhost
(7a3276d) - config: default baseURL to
localhost
when host is0.0.0.0
(3a4496b) - dashboard: add
raised
attribute to KILL button on single-instance graphics (1e116db) - dashboard: close drawer when viewport increases to a wide layout (20bafef), closes #282
- replicants: fixed a case where re-assigning a nested object could result in a broken replicant (9e72b86)
- replicants: harden logging of validation errors (250b3fe)
- replicants: prevent .once('change') listeners from potentially being called twice (78a11c8), closes #296
- replicants: properly load schemas when schemaPath is absolute (4201906)
- replicants: set status to "declared" before emitting the post-declare change event (a62d25d)
- soundCues: fix case where valid soundCues could fail schema validation (f0c17ba)
- dashboard: port to Polymer 2 (2084237), closes #218
- The following modules have been merged back into the main NodeCG codebase, instead of being kept as separate packages:
- tests: rewrote tests to use
ava
instead ofmocha
- api: add nodecg.unlisten method (ea45b3f)
- api: expose Logger class (5882dc4)
- api: if an acknowledgement is called with an error as the first callback, serialize that error (#300) (1c05f81)
- api: make client-side sendMessage return a Promise (#301) (fe93c73), closes #297
- config: add support for whitelisted loading of bundles (31533a8)
- config: added
--bundlesEnabled
and--bundlesDisabled
command-line arguments to specify a comma-separated list of bundle names to either whitelist or blacklist for loading on startup. Very useful when combined with things such as Run Configurations in your IDE of choosing. - dashboard: add "open in standalone window" button to panel headers (ba077c0)
- dashboard: add default body background color style to panels (3433529)
- dashboard: add support for "fullbleed" workspaces, which have one single panel that takes up the entire dashboard
- dashboard: add support for multiple tabs of panels, called "workspaces". See the Manifest tutorial (specifically the
nodecg.dashboardPanels
section) for more info. - dashboard: compatability with browsers other than Chrome has been greatly improved
- dashboard: re-design dashboard with tabbed navigation (8214b43)
- dashboard: show a much shorter and easier to read URL for each graphic on the Graphics page (5b91af1)
- replicants: add .validationErrors property (59f3c82)
- replicants: log a warning when attempting to access .value before the Replicant has finished declaring (#274) (293acf5), closes #265
- replicants: support external $refs in schemas (3c34450)
- add convenience 'shared' directory (#295) (63a1119)
- add Sentry integration for error tracking (#305) (92cd540)
- adopt new routing style (/bundles/:bundleName/*) (1663670)
- log unhandled promise rejections if Sentry is not enabled (59dc75e)
- api: add nodecg.unlisten method (ea45b3f)
- api: expose Logger class (5882dc4)
- api: if an acknowledgement is called with an error as the first callback, serialize that error (#300) (1c05f81)
- api: make client-side sendMessage return a Promise (#301) (fe93c73), closes #297
- config: add support for whitelisted loading of bundles (31533a8)
- config: added
--bundlesEnabled
and--bundlesDisabled
command-line arguments to specify a comma-separated list of bundle names to either whitelist or blacklist for loading on startup. Very useful when combined with things such as Run Configurations in your IDE of choosing. - dashboard: add "open in standalone window" button to panel headers (ba077c0)
- dashboard: add default body background color style to panels (3433529)
- dashboard: add support for "fullbleed" workspaces, which have one single panel that takes up the entire dashboard
- dashboard: add support for multiple tabs of panels, called "workspaces". See the Manifest tutorial (specifically the
nodecg.dashboardPanels
section) for more info. - dashboard: compatability with browsers other than Chrome has been greatly improved
- dashboard: re-design dashboard with tabbed navigation (8214b43)
- dashboard: show a much shorter and easier to read URL for each graphic on the Graphics page (5b91af1)
- replicants: add .validationErrors property (59f3c82)
- replicants: log a warning when attempting to access .value before the Replicant has finished declaring (#274) (293acf5), closes #265
- replicants: support external $refs in schemas (3c34450)
- add convenience 'shared' directory (#295) (63a1119)
- add Sentry integration for error tracking (#305) (92cd540)
- adopt new routing style (/bundles/:bundleName/*) (1663670)
- log unhandled promise rejections if Sentry is not enabled (59dc75e)
For detailed instructions on how to migrate your v0.8 bundles to v0.9, check out the tutorial on NodeCG.dev
- NodeCG no longer automatically installs the
npm
andbower
dependencies of installed bundles. Users must do this manually. - replicants: Replicants now set their state to
declared
before they emit their post-declarechange
event. This is unlikely to break any existing code, but it is technically a breaking change. - The Rollbar integration for error tracking has been removed, and has been replaced with a Sentry integration.
- api: If the first argument you provide to a message acknowledgement is an Error, it will be serialized instead of being sent as an empty object.
- dashboard: Removed most of the helper styles and classes, such as
nodecg-configure
, which were being injected into panels. Most of it would not work in Polymer 2 without extra effort. - Old
/panel
and/graphics
routes no longer work. You must update all routes to the new/bundles/:bundleName/*
format.
0.8.9 (2017-03-08)
- login: fix case where an invalid
socketToken
cookie would prevent a user from ever being able to log in (7392249)
0.8.8 (2017-03-03)
- auth: fix case where token auth via cookies would fail when
host
was set to0.0.0.0
(#255) (cb89d25) - sounds: persist the soundCues replicant to disk (#258) (775c158)
0.8.7 (2017-03-02)
- api: throw an error instead of just logging a warning when adding a duplicate
listenFor
handler (187b601) - dashboard: fix panels all being moved to top left corner when window is resized while a non-Dashboard tab is selected (89812f4), closes #217
- ensure NodeCG binds to the host and port provided in
cfg/nodecg.json
(thanks @vibhavp!) (fa5b57e)
- sound: add support for user-defined sound cues (#254) (05878eb)
- This is an advanced and currently undocumented feature. It requires much additional code within a bundle to be useful. We do not recommend trying to use it at this time.
0.8.6 (2017-01-29)
- api: call encodeURIComponent on "namespace" and "name" when autogenerating schemaPath (0fd2a19)
- assets: avoid thrashing asset replicants on startup (1250dd4)
- dashboard: fix
dialog-dismiss
anddialog-confirm
buttons sometimes not working (5f06166) - replicant: fix potential case where a proxied Array with custom methods wouldn't behave as expected (d772f05)
- replicants: fix case where Replicants with a value of
undefined
would not emitchange
events after declaration (a218dbe), closes #228 - fix favicon not being served (3dcdc83)
- rollbar: add reporting of unhandled promise rejections (c1a33b4)
- rollbar: fix browser-side Rollbar not receiving the correct access token from the config (2b810fd)
- single_instance: fix "Kill" buttons always being visible, even if no instance was open (6f4bc77)
- add ability to disable bundles via config (#248) (58480bd)
- auth: secure
/graphics
routes (#249) (975c17f) - config: add "exitOnUncaught" config param (a77bccf)
- rollbar: automatically report errors logged with
nodecg.log.error
to Rollbar, if Rollbar is enabled (7b19eaa)
0.8.5 (2016-10-12)
- dashboard: fix "copy url" button sometimes wrapping to two lines and looking bad (6047a52)
- dashboard: hide "Settings" menu button if there are no settings to manage in the current configuration (4f304eb)
- replicants: fix case where an unproxied object could be leaked via the
change
event after reconnecting to Socket.IO (9e39d45)
- replicants: add
result
property to operations (5f6e86f) - replicants: provide better error messages when a replicant fails schema validation (daddf64)
- sounds: add optional
channels
param (f33a165)
0.8.4 (2016-09-29)
- dashboard: replace usage of cn-jsurl bower lib with new URLSearchParams API (ea39f50)
- docker: remove VOLUME statement for db folder (2b8ecfe)
- server: catch and re-throw otherwise uncaught socket.io errors (1fc9a18)
- server: fix debug message logging string as number (eac7f63)
- server: improve rollbar catching of socket.io errors (e8a3443)
- sounds: fix error when soundFiles is null during option generation for Mixer panel (19226b2)
- sounds: fixed sounds category not showing in assets when there are no other asset categories defined. (#220) (b744fda), closes #208
- replicants: add optional validation of replicant values via schemas (26715fc)
0.8.3 (2016-06-23)
- docker: use abs path for db volume (8480a58)
- replicants: fixed unexpected behavior after modifying the index of an object inside an array replicant (2127dc4)
- login: add
forceHttpsReturn
config param (d952c95)
0.8.2 (2016-06-11)
0.8.1 (2016-06-10)
- dashboard: update nodecg-replicants (c537e36)
- replicants: ensure that already proxied objects aren't re-proxied (93f5539)
- replicants: fix case where an unproxied object could sometimes be returned (b1dc39b)
- replicants: fix client-side assignment being processed twice (e52b7cb)
- replicants: fix detection of changes in late-assigned objects (053605f), closes #181
- replicants: fix objects inserted into arrays via array insertion methods not being proxied (4e2d941)
- server: update Node.js v6 check from 'warn and continue' to 'error and exit' on lower versions (2fdb534)
- update nodecg-replicant to 0.5.8 (29323b0)
- dialogs: improve responsiveness of dialogs (204c8aa)
- dialogs: only add h2 title if panel.title has length (0696088)
0.8.0 (2016-05-06)
- api: throw error when handler is not a function (9804a84)
- dashboard: fix "Copy Url" buttons on graphics page (3ed107f)
- dashboard: fix invalid javascript on standalone panels (fcba09b)
- panels: panels are now served by filename rather than panel name (9f3e54b), closes #144
- rollbar: check for
config.rollbar.enabled
before activating rollbar (cffb1a3) - sounds: throw more informative errors when attempting to use sound api methods with no soundCues (e159749)
- tests: fix typo in error message (a6a0f99)
- tests: test standalone panels, ensure autodeps are enabled (366422d)
- rollbar: add support for automatically reporting uncaught exceptions to Rollbar (80f0ea6)
- sounds: add sounds feature, rename uploads to assets, add categories to assets (52a9045)
-
replicants: The order of Replicant
change
event arguments has been swapped.newVal
is now the first argument,oldVal
is the second argument. Be sure to update all of yourchange
event handlers accordingly.To migrate, follow the example below: Before: ``` myRep.on('change', function (oldVal, newVal) { // do work }); ``` After: ``` myRep.on('change', function (newVal, oldVal) { // do work }); ```
-
replicants: The third Replicant
change
event argument has been changed. Previously it waschanges
, an array of Object.observe change records. It is nowoperations
, an array of operation records in NodeCG's internal format. This format is likely to continue changing as we figure out what works best. Any further changes to this format will be considered breaking. -
replicants: WeakMap and Object.observe shims have been removed. This probably won't affect anyone, as any browser that supports Proxy also supports WeakMap, but be aware of it.
-
panels: the routes for panels are now
/panel/:bundleName/:panelFile
as opposed to/panel/:bundleName/:panelName
. -
sounds: uploads are now called assets, and their manifest format has changed
0.7.7 (2016-03-31)
- api: fix API erroring on page load (fec7793)
0.7.6 (2016-03-31)
- dashboard: fix "copy key" button on settings page (9182534)
- dashboard: fix panels appearing over the top of the loading spinner (6529248)
- deps: bump @nodecg/bundle-manager dep, forgot to in last release (4580bd2)
- login: improve reliability of login lib (4e37a13)
- tests: remove reference to wrench (a9ea8d9)
- all: update socket.io to 1.4.5, improves performance. (59d12c2)
- dashboard: add loading spinner to panels (dbc0466)
- dashboard: close the drawer panel when selecting an item (decc77f)
- dashboard: emit
dialog-opened
event in a dialog'sdocument
when it opens (bb527eb) - dashboard: show resolution on graphics page (8ab9335)
0.7.5 (2016-03-13)
- dashboard: don't apply background color to disabled paper-button elements when using builtin nodecg style classes (a34fc9d)
- api: deprecate nearestElementWithAttribute, replace usage with element.closest() (45b272c), closes #141
- bundles: Add configuration values allowing to disable bundle autodeps (4a99774)
- caching: disable caching (a70b9be)
- npm: only install production dependencies for bundles (be0e74c)
0.7.4 (2016-03-01)
- api: fix trace logging for client-side message reception (dc71366)
- dashboard: assign a more unique ID to the main paper-toast element (00f5959)
- dashboard: remove default opacity style of disabled paper-button elements (d6e5baa)
- uploads: fix case where changes to the first file caused duplication (4e7a61f)
- bundleConfig: defaults from configschema.json are now automatically applied to nodecg.bundleConfig (a4e28fa)
- uploads: bundles can specify allowed file types via uploads.allowedTypes (7a1a775)
- uploads: debounce change events by 500ms (91d151c)
0.7.3 (2016-02-20)
- uploads: prevent crash related to uninstalled bundles (9d17dc3)
- dashboard: hide panel controls until mouseover (7855a0b)
0.7.2 (2016-02-17)
- dashboard: fix loading of builtin polymer element scripts (52cc0fc)
- dashboard: remove unintentionally added "uploads" page (e2eb80b)
- scripts: Remove trailing comma from package.json (6304457)
- tests: Have Travis install grunt before running tests (d49091a)