diff --git a/.env.template b/.env.template index 521fb380..0c37b652 100644 --- a/.env.template +++ b/.env.template @@ -1,5 +1,5 @@ # ==================================================== -# MiroTalk P2P v.1.7.60 - Environment Configuration +# MiroTalk P2P v.1.7.61 - Environment Configuration # ==================================================== # App environment @@ -193,16 +193,17 @@ CHATGPT_MODEL=gpt-3.5-turbo CHATGPT_MAX_TOKENS=1000 CHATGPT_TEMPERATURE=0 -# Configure email settings for notifications or alerts -# Refer to the documentation for Gmail configuration: https://support.google.com/mail/answer/185833?hl=en +# Email configuration for notifications and alerts +# For testing, you can use Mailpit: run `npm run mailpit:up` or `npm run mailpit:down` +# For Gmail, refer to: https://support.google.com/mail/answer/185833?hl=en EMAIL_ALERT=false # true or false -EMAIL_HOST=smtp.gmail.com -EMAIL_PORT=587 -EMAIL_USERNAME=your_username -EMAIL_PASSWORD=your_password -EMAIL_FROM= -EMAIL_SEND_TO=p2p.mirotalk@gmail.com +EMAIL_HOST=localhost +EMAIL_PORT=1025 +EMAIL_USERNAME=test +EMAIL_PASSWORD=test +EMAIL_FROM=test@mirotalk.com +EMAIL_SEND_TO=test@mirotalk.com # Stats # Umami: https://github.com/umami-software/umami diff --git a/app/src/config.template.js b/app/src/config.template.js index a5afaad8..b9dd0fc3 100644 --- a/app/src/config.template.js +++ b/app/src/config.template.js @@ -2,7 +2,7 @@ /** * ============================================== - * MiroTalk P2P v.1.7.60 - Configuration File + * MiroTalk P2P v.1.7.61 - Configuration File * ============================================== * * This file is the central configuration source. diff --git a/app/src/server.js b/app/src/server.js index 3ed32814..470aef48 100755 --- a/app/src/server.js +++ b/app/src/server.js @@ -45,7 +45,7 @@ dependencies: { * @license For commercial use or closed source, contact us at license.mirotalk@gmail.com or purchase directly from CodeCanyon * @license CodeCanyon: https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661 * @author Miroslav Pejic - miroslav.pejic.85@gmail.com - * @version 1.7.60 + * @version 1.7.61 * */ diff --git a/docker-compose-mailpit.yml b/docker-compose-mailpit.yml new file mode 100644 index 00000000..e092d8de --- /dev/null +++ b/docker-compose-mailpit.yml @@ -0,0 +1,17 @@ +services: + mailpit: + image: axllent/mailpit:latest + container_name: mirotalkmailpit + restart: unless-stopped + ports: + - '${MAILPIT_HTTP_PORT:-8025}:8025' + - '${MAILPIT_SMTP_PORT:-1025}:1025' + volumes: + - './.mailpit_data:/data' + environment: + MP_DATABASE: /data/mailpit.db + MP_MAX_MESSAGES: 5000 + +volumes: + mailpit_data: + driver: local diff --git a/package-lock.json b/package-lock.json index 5001818f..b0c49b0a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { "name": "mirotalk", - "version": "1.7.60", + "version": "1.7.61", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mirotalk", - "version": "1.7.60", + "version": "1.7.61", "license": "AGPL-3.0", "dependencies": { "@mattermost/client": "11.4.0", "@ngrok/ngrok": "1.7.0", - "@sentry/node": "^10.45.0", + "@sentry/node": "^10.46.0", "axios": "^1.13.6", "chokidar": "^5.0.0", "colors": "^1.4.0", @@ -30,7 +30,7 @@ "jsdom": "^29.0.1", "jsonwebtoken": "^9.0.3", "nodemailer": "^8.0.4", - "openai": "^6.32.0", + "openai": "^6.33.0", "qs": "^6.15.0", "socket.io": "^4.8.3", "swagger-ui-express": "^5.0.1", @@ -681,9 +681,9 @@ } }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.6.0.tgz", - "integrity": "sha512-L8UyDwqpTcbkIK5cgwDRDYDoEhQoj8wp8BwsO19w3LB1Z41yEQm2VJyNfAi9DrLP/YTqXqWpKHyZfR9/tFYo1Q==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.6.1.tgz", + "integrity": "sha512-XHzhwRNkBpeP8Fs/qjGrAf9r9PRv67wkJQ/7ZPaBQQ68DYlTBBx5MF9LvPx7mhuXcDessKK2b+DcxqwpgkcivQ==", "license": "Apache-2.0", "engines": { "node": "^18.19.0 || >=20.6.0" @@ -1101,12 +1101,12 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.6.0.tgz", - "integrity": "sha512-D4y/+OGe3JSuYUCBxtH5T9DSAWNcvCb/nQWIga8HNtXTVPQn59j0nTBAgaAXxUVBDl40mG3Tc76b46wPlZaiJQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.6.1.tgz", + "integrity": "sha512-lID/vxSuKWXM55XhAKNoYXu9Cutoq5hFdkbTdI/zDKQktXzcWBVhNsOkiZFTMU9UtEWuGRNe0HUgmsFldIdxVA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.6.0", + "@opentelemetry/core": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -1116,14 +1116,29 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.6.0.tgz", - "integrity": "sha512-g/OZVkqlxllgFM7qMKqbPV9c1DUPhQ7d4n3pgZFcrnrNft9eJXZM2TNHTPYREJBrtNdRytYyvwjgL5geDKl3EQ==", + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.6.1.tgz", + "integrity": "sha512-8xHSGWpJP9wBxgBpnqGL0R3PbdWQndL1Qp50qrg71+B28zK5OQmUgcDKLJgzyAAV38t4tOyLMGDD60LneR5W8g==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.6.0", - "@opentelemetry/resources": "2.6.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.6.1.tgz", + "integrity": "sha512-r86ut4T1e8vNwB35CqCcKd45yzqH6/6Wzvpk2/cZB8PsPLlZFTvrh8yfOS3CYZYcUmAx4hHTZJ8AO8Dj8nrdhw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.6.1", + "@opentelemetry/resources": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -1133,6 +1148,21 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/core": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.6.1.tgz", + "integrity": "sha512-8xHSGWpJP9wBxgBpnqGL0R3PbdWQndL1Qp50qrg71+B28zK5OQmUgcDKLJgzyAAV38t4tOyLMGDD60LneR5W8g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.40.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.40.0.tgz", @@ -1238,18 +1268,18 @@ "license": "Apache-2.0" }, "node_modules/@sentry/core": { - "version": "10.45.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.45.0.tgz", - "integrity": "sha512-s69UXxvefeQxuZ5nY7/THtTrIEvJxNVCp3ns4kwoCw1qMpgpvn/296WCKVmM7MiwnaAdzEKnAvLAwaxZc2nM7Q==", + "version": "10.46.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.46.0.tgz", + "integrity": "sha512-N3fj4zqBQOhXliS1Ne9euqIKuciHCGOJfPGQLwBoW9DNz03jF+NB8+dUKtrJ79YLoftjVgf8nbgwtADK7NR+2Q==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@sentry/node": { - "version": "10.45.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.45.0.tgz", - "integrity": "sha512-Kpiq9lRGnJc1ex8SwxOBl+FLQNl4Y137BydVooP7AFiAYZ6ftwHsIEF1bcYXaipHMT1YHS2bdhC2UQaaB2jkuQ==", + "version": "10.46.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.46.0.tgz", + "integrity": "sha512-vF+7FrUXEtmYWuVcnvBjlWKeyLw/kwHpwnGj9oUmO/a2uKjDmUr53ZVcapggNxCjivavGYr9uHOY64AGdeUyzA==", "license": "MIT", "dependencies": { "@fastify/otel": "0.17.1", @@ -1283,9 +1313,9 @@ "@opentelemetry/sdk-trace-base": "^2.6.0", "@opentelemetry/semantic-conventions": "^1.40.0", "@prisma/instrumentation": "7.4.2", - "@sentry/core": "10.45.0", - "@sentry/node-core": "10.45.0", - "@sentry/opentelemetry": "10.45.0", + "@sentry/core": "10.46.0", + "@sentry/node-core": "10.46.0", + "@sentry/opentelemetry": "10.46.0", "import-in-the-middle": "^3.0.0" }, "engines": { @@ -1293,13 +1323,13 @@ } }, "node_modules/@sentry/node-core": { - "version": "10.45.0", - "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.45.0.tgz", - "integrity": "sha512-KQZEvLKM344+EqXiA9HIzWbW5hzq6/9nnFUQ8niaBPoOgR9AiJhrccfIscfgb8vjkriiEtzE03OW/4h1CTgZ3Q==", + "version": "10.46.0", + "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.46.0.tgz", + "integrity": "sha512-gwLGXfkzmiCmUI1VWttyoZBaVp1ItpDKc8AV2mQblWPQGdLSD0c6uKV/FkU291yZA3rXsrLXVwcWoibwnjE2vw==", "license": "MIT", "dependencies": { - "@sentry/core": "10.45.0", - "@sentry/opentelemetry": "10.45.0", + "@sentry/core": "10.46.0", + "@sentry/opentelemetry": "10.46.0", "import-in-the-middle": "^3.0.0" }, "engines": { @@ -1339,12 +1369,12 @@ } }, "node_modules/@sentry/opentelemetry": { - "version": "10.45.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.45.0.tgz", - "integrity": "sha512-PmuGO+p/gC3ZQ8ddOeJ5P9ApnTTm35i12Bpuyb13AckCbNSJFvG2ggZda35JQOmiFU0kKYiwkoFAa8Mvj9od3Q==", + "version": "10.46.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.46.0.tgz", + "integrity": "sha512-dzzV2ovruGsx9jzusGGr6cNPvMgYRu2BIrF8aMZ3rkQ1OpPJjPStqtA1l1fw0aoxHOxIjFU7ml4emF+xdmMl3g==", "license": "MIT", "dependencies": { - "@sentry/core": "10.45.0" + "@sentry/core": "10.46.0" }, "engines": { "node": ">=18" @@ -5097,9 +5127,9 @@ } }, "node_modules/openai": { - "version": "6.32.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-6.32.0.tgz", - "integrity": "sha512-j3k+BjydAf8yQlcOI7WUQMQTbbF5GEIMAE2iZYCOzwwB3S2pCheaWYp+XZRNAch4jWVc52PMDGRRjutao3lLCg==", + "version": "6.33.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-6.33.0.tgz", + "integrity": "sha512-xAYN1W3YsDXJWA5F277135YfkEk6H7D3D6vWwRhJ3OEkzRgcyK8z/P5P9Gyi/wB4N8kK9kM5ZjprfvyHagKmpw==", "license": "Apache-2.0", "bin": { "openai": "bin/cli" diff --git a/package.json b/package.json index 888a0b09..53c34b39 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mirotalk", - "version": "1.7.60", + "version": "1.7.61", "description": "A free WebRTC browser-based video call", "main": "server.js", "scripts": { @@ -9,16 +9,18 @@ "start-dev": "nodemon app/src/server.js", "test": "mocha tests/*.js", "lint": "npx prettier --write .", - "docker-build": "docker build --tag mirotalk/p2p:latest .", - "docker-rmi": "docker images |grep '' |awk '{print $3}' |xargs docker rmi", - "docker-push": "docker push mirotalk/p2p:latest", - "docker-pull": "docker pull mirotalk/p2p:latest", - "docker-rmc": "docker container rm mirotalk --force", - "docker-run": "docker run -d -p 3000:3000 --name mirotalk mirotalk/p2p:latest", - "docker-rune": "docker run -d -p 3000:3000 -v .env:/src/.env:ro --name mirotalk mirotalk/p2p:latest", - "docker-run-vm": "docker run -d -p 3000:3000 -v .env:/src/.env:ro -v ./app/:/src/app/:ro -v ./public/:/src/public/:ro --name mirotalk mirotalk/p2p:latest", - "docker-start": "docker start mirotalk", - "docker-stop": "docker stop mirotalk" + "mailpit:up": "docker-compose -f docker-compose-mailpit.yml up -d", + "mailpit:down": "docker-compose -f docker-compose-mailpit.yml down", + "docker:build": "docker build --tag mirotalk/p2p:latest .", + "docker:rmi": "docker images |grep '' |awk '{print $3}' |xargs docker rmi", + "docker:push": "docker push mirotalk/p2p:latest", + "docker:pull": "docker pull mirotalk/p2p:latest", + "docker:rmc": "docker container rm mirotalk --force", + "docker:run": "docker run -d -p 3000:3000 --name mirotalk mirotalk/p2p:latest", + "docker:rune": "docker run -d -p 3000:3000 -v .env:/src/.env:ro --name mirotalk mirotalk/p2p:latest", + "docker:run-vm": "docker run -d -p 3000:3000 -v .env:/src/.env:ro -v ./app/:/src/app/:ro -v ./public/:/src/public/:ro --name mirotalk mirotalk/p2p:latest", + "docker:start": "docker start mirotalk", + "docker:stop": "docker stop mirotalk" }, "repository": { "type": "git", @@ -44,7 +46,7 @@ "dependencies": { "@mattermost/client": "11.4.0", "@ngrok/ngrok": "1.7.0", - "@sentry/node": "^10.45.0", + "@sentry/node": "^10.46.0", "axios": "^1.13.6", "chokidar": "^5.0.0", "colors": "^1.4.0", @@ -63,7 +65,7 @@ "jsdom": "^29.0.1", "jsonwebtoken": "^9.0.3", "nodemailer": "^8.0.4", - "openai": "^6.32.0", + "openai": "^6.33.0", "qs": "^6.15.0", "socket.io": "^4.8.3", "swagger-ui-express": "^5.0.1", diff --git a/public/js/brand.js b/public/js/brand.js index 05adefe6..5381794b 100644 --- a/public/js/brand.js +++ b/public/js/brand.js @@ -107,7 +107,7 @@ let brand = { }, about: { imageUrl: '../images/mirotalk-logo.gif', - title: 'WebRTC P2P v1.7.60', + title: 'WebRTC P2P v1.7.61', html: `