Skip to content

Commit 206ab0e

Browse files
committed
Merge branch 'release/10.2.0'
* release/10.2.0: Final commit of version 10.2.0 Maintenance release to address latest websocket changes
2 parents db5df0b + 6697686 commit 206ab0e

11 files changed

Lines changed: 174 additions & 149 deletions

File tree

.github/FUNDING.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
github: binarykitchen
2+
custom: ["https://videomail.io", "https://binarykitchen.com"]

dist/videomail-for-ninja-forms.zip

51 Bytes
Binary file not shown.

package-lock.json

Lines changed: 131 additions & 117 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "videomail-for-ninja-forms",
3-
"version": "10.1.0",
3+
"version": "10.2.0",
44
"description": "With this add-on recording videos in Wordpress Ninja Forms comes true.",
55
"author": "Michael Heuberger <michael.heuberger@binarykitchen.com>",
66
"contributors": [
@@ -58,14 +58,14 @@
5858
]
5959
},
6060
"dependencies": {
61-
"videomail-client": "13.7.3"
61+
"videomail-client": "13.8.3"
6262
},
6363
"devDependencies": {
6464
"@babel/core": "7.29.0",
6565
"@babel/eslint-parser": "7.28.6",
6666
"@babel/plugin-transform-runtime": "7.29.0",
67-
"@babel/preset-env": "7.29.0",
68-
"@babel/runtime": "7.28.6",
67+
"@babel/preset-env": "7.29.2",
68+
"@babel/runtime": "7.29.2",
6969
"babel-eslint": "10.1.0",
7070
"browser-sync": "3.0.4",
7171
"del": "6.1.1",

readme.txt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Contributors: michael.heuberger, kbjohnson90
33
Tags: video, email, recorder, sign language
44
Requires at least: 6.0
55
Tested up to: 6.9.1
6-
Stable tag: 10.1.0
6+
Stable tag: 10.2.0
77
Requires PHP: 8.1.0
88
Donate link: https://videomail.io/faq
99
License: CC0-1.0
@@ -72,6 +72,16 @@ To get help, just use any of these contacts at [https://binarykitchen.com](https
7272

7373
== Changelog ==
7474

75+
= 10.2.0 (21 Mar 2026) =
76+
77+
**Change:**
78+
* Remove obsolete WebSocket options to reduce race-condition related errors
79+
80+
**Chore**
81+
* Upgrade VC dependency
82+
* Apply patches
83+
* Export types
84+
7585
= 10.1.0 (7 Feb 2026) =
7686
**Improvement**
7787
* Corrected documentation about whitelist key and polished its formatting further

src/js/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Remember, you can't use any import/require statements here
2-
const PLUGIN_VERSION = "10.1.0";
2+
const PLUGIN_VERSION = "10.2.0";
33

44
// manual switch to have more stuff printed to console
55
let DEBUG = false;

src/php/videomail.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
final class NF_Videomail {
33

44
const NAME = 'Videomail';
5-
const VERSION = '10.1.0';
5+
const VERSION = '10.2.0';
66
const AUTHOR = 'Michael Heuberger + Kyle B. Johnson';
77
const SLUG = 'videomail';
88
const PREFIX = 'NF_Videomail';

target/js/main-min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

target/js/videomail-client/index-min.js

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
else root["VideomailClient"] = factory();
66
})(globalThis, ()=>(()=>{
77
var __webpack_modules__ = {
8-
"./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[13].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[13].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[13].use[3]!./src/styles/main.styl" (module1, __webpack_exports__, __webpack_require__) {
8+
"./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[10].oneOf[2].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[10].oneOf[2].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[10].oneOf[2].use[3]!./src/styles/main.styl" (module1, __webpack_exports__, __webpack_require__) {
99
"use strict";
1010
__webpack_require__.d(__webpack_exports__, {
1111
A: ()=>__rspack_default_export
@@ -2265,7 +2265,7 @@
22652265
this.decoder = null;
22662266
this.encoding = null;
22672267
if (options.encoding) {
2268-
if (!StringDecoder) StringDecoder = __webpack_require__("./node_modules/duplexify/node_modules/string_decoder/lib/string_decoder.js").StringDecoder;
2268+
if (!StringDecoder) StringDecoder = __webpack_require__("./node_modules/duplexify/node_modules/string_decoder/lib/string_decoder.js").I;
22692269
this.decoder = new StringDecoder(options.encoding);
22702270
this.encoding = options.encoding;
22712271
}
@@ -2364,7 +2364,7 @@
23642364
return false === this._readableState.flowing;
23652365
};
23662366
Readable.prototype.setEncoding = function(enc) {
2367-
if (!StringDecoder) StringDecoder = __webpack_require__("./node_modules/duplexify/node_modules/string_decoder/lib/string_decoder.js").StringDecoder;
2367+
if (!StringDecoder) StringDecoder = __webpack_require__("./node_modules/duplexify/node_modules/string_decoder/lib/string_decoder.js").I;
23682368
this._readableState.decoder = new StringDecoder(enc);
23692369
this._readableState.encoding = enc;
23702370
return this;
@@ -3557,7 +3557,7 @@
35573557
if ('string' != typeof nenc && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
35583558
return nenc || enc;
35593559
}
3560-
exports1.StringDecoder = StringDecoder;
3560+
exports1.I = StringDecoder;
35613561
function StringDecoder(encoding) {
35623562
this.encoding = normalizeEncoding(encoding);
35633563
var nb;
@@ -8599,7 +8599,7 @@
85998599
this.decoder = null;
86008600
this.encoding = null;
86018601
if (options.encoding) {
8602-
if (!StringDecoder) StringDecoder = __webpack_require__("./node_modules/websocket-stream/node_modules/string_decoder/lib/string_decoder.js").StringDecoder;
8602+
if (!StringDecoder) StringDecoder = __webpack_require__("./node_modules/websocket-stream/node_modules/string_decoder/lib/string_decoder.js").I;
86038603
this.decoder = new StringDecoder(options.encoding);
86048604
this.encoding = options.encoding;
86058605
}
@@ -8698,7 +8698,7 @@
86988698
return false === this._readableState.flowing;
86998699
};
87008700
Readable.prototype.setEncoding = function(enc) {
8701-
if (!StringDecoder) StringDecoder = __webpack_require__("./node_modules/websocket-stream/node_modules/string_decoder/lib/string_decoder.js").StringDecoder;
8701+
if (!StringDecoder) StringDecoder = __webpack_require__("./node_modules/websocket-stream/node_modules/string_decoder/lib/string_decoder.js").I;
87028702
this._readableState.decoder = new StringDecoder(enc);
87038703
this._readableState.encoding = enc;
87048704
return this;
@@ -9891,7 +9891,7 @@
98919891
if ('string' != typeof nenc && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
98929892
return nenc || enc;
98939893
}
9894-
exports1.StringDecoder = StringDecoder;
9894+
exports1.I = StringDecoder;
98959895
function StringDecoder(encoding) {
98969896
this.encoding = normalizeEncoding(encoding);
98979897
var nb;
@@ -10832,7 +10832,7 @@
1083210832
var client = __webpack_require__("./node_modules/superagent/lib/client.js");
1083310833
var client_default = /*#__PURE__*/ __webpack_require__.n(client);
1083410834
var package_namespaceObject = {
10835-
rE: "13.7.3"
10835+
rE: "13.8.3"
1083610836
};
1083710837
function isAudioEnabled(options) {
1083810838
return Boolean(options.audio.enabled);
@@ -14852,7 +14852,8 @@
1485214852
const queryParams = {
1485314853
[constants.WHITELIST_KEY_LABEL]: this.options.whitelistKey
1485414854
};
14855-
let url = `${this.options.apiUrl}/videomail/`;
14855+
const path = videomail.public ? "wall" : "videomail";
14856+
let url = `${this.options.apiUrl}/${path}/`;
1485614857
if (method === FormMethod.PUT && videomail.key) url += videomail.key;
1485714858
try {
1485814859
const request = await client_default()(method, url).query(queryParams).set("Timezone-Id", this.timezoneId).withCredentials().send(videomail).timeout(this.options.timeouts.connection);
@@ -15159,7 +15160,7 @@
1515915160
var insertStyleElement_default = /*#__PURE__*/ __webpack_require__.n(insertStyleElement);
1516015161
var styleTagTransform = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleTagTransform.js");
1516115162
var styleTagTransform_default = /*#__PURE__*/ __webpack_require__.n(styleTagTransform);
15162-
var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[13].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[13].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[13].use[3]!./src/styles/main.styl");
15163+
var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[10].oneOf[2].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[10].oneOf[2].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[10].oneOf[2].use[3]!./src/styles/main.styl");
1516315164
var main_options = {};
1516415165
main_options.styleTagTransform = styleTagTransform_default();
1516515166
main_options.setAttributes = setAttributesWithoutAttributes_default();
@@ -17059,15 +17060,12 @@
1705917060
const url2Connect = `${this.options.socketUrl}?${encodeURIComponent(constants.WHITELIST_KEY_LABEL)}=${encodeURIComponent(this.options.whitelistKey)}`;
1706017061
this.options.logger.debug(`Recorder: initializing web socket to ${url2Connect}`);
1706117062
try {
17062-
this.stream = stream_default()(url2Connect, {
17063-
perMessageDeflate: false,
17064-
objectMode: true
17065-
});
17063+
this.stream = stream_default()(url2Connect);
1706617064
} catch (exc) {
1706717065
this.connecting = this.connected = false;
1706817066
const err = error_createError({
1706917067
message: "Failed to connect to server",
17070-
explanation: "Please upgrade your browser. Your current version does not seem to support websockets.",
17068+
explanation: "If this happens again, please contact us with the details of your environment.",
1707117069
options: this.options,
1707217070
exc
1707317071
});
@@ -17096,9 +17094,9 @@
1709617094
});
1709717095
this.stream.on("data", (data)=>{
1709817096
this.options.logger.debug(`${PIPE_SYMBOL}Stream *data* event emitted`);
17099-
let command;
1710017097
try {
17101-
command = JSON.parse(data.toString());
17098+
const command = JSON.parse(data.toString());
17099+
this.executeCommand(command);
1710217100
} catch (exc) {
1710317101
this.options.logger.debug(`Failed to parse command: ${exc}`);
1710417102
const err = error_createError({
@@ -17110,8 +17108,6 @@
1711017108
this.emit("ERROR", {
1711117109
err
1711217110
});
17113-
} finally{
17114-
this.executeCommand(command);
1711517111
}
1711617112
});
1711717113
this.stream.on("error", (err)=>{
@@ -17370,14 +17366,17 @@
1737017366
this.loop?.dispose();
1737117367
}
1737217368
getIntervalSum() {
17369+
if (!this.loop) return;
1737317370
return this.loop.getElapsedTime();
1737417371
}
1737517372
getAvgInterval() {
17376-
return this.getIntervalSum() / this.framesCount;
17373+
const intervalSum = this.getIntervalSum();
17374+
if (!intervalSum) return;
17375+
return intervalSum / this.framesCount;
1737717376
}
1737817377
getAvgFps() {
1737917378
const intervalSum = this.getIntervalSum();
17380-
if (0 === intervalSum || null == intervalSum) return;
17379+
if (!intervalSum) return;
1738117380
return this.framesCount / intervalSum * 1000;
1738217381
}
1738317382
getRecordingStats() {

target/php/videomail.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
final class NF_Videomail {
33

44
const NAME = 'Videomail';
5-
const VERSION = '10.1.0';
5+
const VERSION = '10.2.0';
66
const AUTHOR = 'Michael Heuberger + Kyle B. Johnson';
77
const SLUG = 'videomail';
88
const PREFIX = 'NF_Videomail';

0 commit comments

Comments
 (0)