19 Commits

Author SHA1 Message Date
21ecdf77c6 I don't think it worked 2024-08-05 21:49:12 -04:00
cfe2ac0607 maybeee?? 2024-08-05 21:46:02 -04:00
74566a895a fix duplicate requires 2024-08-05 21:28:09 -04:00
587334a3e1 separate the nigbot generation and normal avatar generation 2024-08-05 21:26:11 -04:00
30cce2ec03 probably fix issue with Nigbot avatar generation 2024-08-05 21:10:10 -04:00
24f48788ab wheee 2024-08-05 21:04:55 -04:00
bed00aa4c5 niggers are so black tbh 2024-08-05 20:44:04 -04:00
fd16c95b8f add nigbot build job 2024-08-05 20:29:46 -04:00
39f6e4c637 maybe fr fr? 2024-08-05 20:12:46 -04:00
f8c34213cb maybe fr fr fix it? 2024-08-05 19:46:09 -04:00
eb889711f5 fix invalid-avatar set 2024-08-05 19:32:57 -04:00
8dd6ed7888 hopefully fix avatar generation for nigbot avatar 2024-08-05 19:25:45 -04:00
0cc38ac575 update index.md 2024-08-05 19:20:28 -04:00
cde9b3f74a add options in config 2024-08-05 17:54:22 -04:00
75245c0858 add nigbot avatar 2024-08-05 17:42:01 -04:00
be59329581 from 30 to 800 kb for emojis 2024-08-01 21:17:31 -04:00
6d103af5c9 Merge tag 'v10.3.3' of https://github.com/JohnXLivingston/peertube-plugin-livechat
v10.3.3

Minor changes and fixes:

* Fix #481: Moderation bot was not able to connect when remote chat was disabled.
* Some cleaning in code generating Prosody configuration file.
2024-07-29 19:44:23 -04:00
e57d39c8ab Fix #481:
* Moderation bot was not able to connect when remote chat was disabled.
* Some cleaning in code generating Prosody configuration file.
* Bump version 10.3.3
2024-07-25 12:09:55 +02:00
9526a19aab what the fuck 2024-07-20 22:45:58 -04:00
13 changed files with 115 additions and 13 deletions

View File

@ -1,5 +1,12 @@
# Changelog
## 10.3.3
### Minor changes and fixes
* Fix #481: Moderation bot was not able to connect when remote chat was disabled.
* Some cleaning in code generating Prosody configuration file.
## 10.3.2
### Minor changes and fixes

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

@ -4,7 +4,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
#peertube-plugin-livechat-container {
#peertube-plugin-livechat-container {
display: flex;
flex-direction: column;
height: 100%;
@ -28,6 +28,57 @@
height: 100%;
converse-muc {
min-height: max(30vh, 200px);
min-height: max(59vh, 400px);
}
}
// /* Media query for mobile devices */
// @media only screen and (max-width: 767px) {
// #peertube-plugin-livechat-container converse-root {
// converse-muc {
// min-height: 58vh;
// /* 100vh - 30vh for video = 70vh remaining */
// }
// }
// }
// /* Media query for tablets in portrait mode */
// @media only screen and (min-width: 768px) and (max-width: 1023px) {
// #peertube-plugin-livechat-container converse-root {
// converse-muc {
// min-height: 25vh;
// /* Slightly less to account for other elements */
// }
// }
// }
// /* Media query for tablets in landscape mode */
// @media only screen and (min-width: 1024px) and (max-width: 1279px) {
// #peertube-plugin-livechat-container converse-root {
// converse-muc {
// min-height: 25vh;
// /* Assuming more height can be used */
// }
// }
// }
/* Media query for desktops */
@media only screen and (min-width: 1280px) {
#peertube-plugin-livechat-container converse-root {
converse-muc {
height: inherit;
/* Full desktop experience */
}
}
}
/* custom toolbar CSS */
.send-button {
border-radius: 0.25rem !important;
}
.send-button:hover {
background-color: #0067c1 !important;
}

View File

@ -58,6 +58,9 @@ const avatarPartsDef = {
fur: 10,
eyes: 15,
mouth: 10
},
'nctv': {
body: null,
}
}
@ -169,6 +172,23 @@ async function generateAvatars (part) {
}
}
const generateNigbotAvatar = async () => {
console.log('Starting generating nigbot avatar');
const inputDir = './assets/images/avatars/nctv/';
const outputDir = './dist/server/avatars/nctv/';
fs.mkdirSync(outputDir, { recursive: true });
const buff = await sharp(path.join(inputDir, 'nigbot.png')).toBuffer();
await sharp(buff)
.resize(60, 60)
.png({ palette: true })
.toFile(path.join(outputDir, '1.png'));
}
async function generateBotsAvatars () {
{
// Moderation bot avatar: choosing some parts, and turning it so it is facing left.
@ -294,6 +314,21 @@ async function generateBotsAvatars () {
})
.toFile(path.join(botOutputDir, '1.png'))
}
{
// Nigbot avatar for users
const inputDir = './assets/images/avatars/nctv'
const botOutputDir = './dist/server/bot_avatars/nctv/'
fs.mkdirSync(botOutputDir, { recursive: true })
const buff = await sharp(path.join(inputDir, 'nigbot.png'))
.toBuffer()
await sharp(buff)
// .resize(60, 60)
.png()
.toFile(path.join(botOutputDir, '1.png'))
}
}
if (isMainThread) {
@ -337,6 +372,9 @@ if (isMainThread) {
throw err
}
)
} else if (part === 'nctv') {
generateNigbotAvatar();
parentPort.postMessage('done');
} else {
generateAvatars(part).then(
() => {

View File

@ -175,6 +175,7 @@ avatar_set_description: |
Please refer to the documentation:
<a href="https://livingston.frama.io/peertube-plugin-livechat/documentation/admin/settings/" target="_blank">Settings</a>.
avatar_set_option_sepia: "Sepia (Peertube mascot)"
avatar_set_option_nctv: "NCTV Branded"
avatar_set_option_cat: "Cats"
avatar_set_option_bird: "Birds"
avatar_set_option_fenec: "Fenecs (Mobilizon mascot)"

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "peertube-plugin-livechat",
"version": "10.3.2",
"version": "10.3.3",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "peertube-plugin-livechat",
"version": "10.3.2",
"version": "10.3.3",
"license": "AGPL-3.0",
"dependencies": {
"@xmpp/jid": "^0.13.1",

View File

@ -1,7 +1,7 @@
{
"name": "peertube-plugin-livechat",
"description": "PeerTube plugin livechat: create chat rooms for your Peertube lives! Comes with many features: federation, moderation tools, chat bot, chat persistence, OBS integration, ...",
"version": "10.3.2",
"version": "10.3.3",
"license": "AGPL-3.0",
"author": {
"name": "John Livingston",

View File

@ -102,7 +102,7 @@ async function getProsodyFilePaths (options: RegisterServerOptions): Promise<Pro
}
let avatarSet: AvatarSet = (settings['avatar-set'] ?? 'sepia') as AvatarSet
if (!['sepia', 'cat', 'bird', 'fenec', 'abstract', 'legacy'].includes(avatarSet)) {
if (!['sepia', 'cat', 'bird', 'fenec', 'abstract', 'legacy', 'nctv'].includes(avatarSet)) {
logger.error('Invalid avatar-set setting, using sepia as default')
avatarSet = 'sepia'
}

View File

@ -93,7 +93,7 @@ abstract class ProsodyConfigBlock {
this.entries.set(name, value)
}
add (name: string, value: ConfigEntryValue): void {
add (name: string, value: ConfigEntryValue, allowDuplicate?: boolean): void {
if (!this.entries.has(name)) {
this.entries.set(name, [])
}
@ -101,6 +101,9 @@ abstract class ProsodyConfigBlock {
if (!Array.isArray(entry)) {
entry = [entry]
}
if (!allowDuplicate && entry.includes(value)) {
return
}
entry.push(value)
this.entries.set(name, entry)
}
@ -239,7 +242,7 @@ class ProsodyConfigContent {
this.muc.set('muc_room_default_history_length', 20)
this.muc.add('modules_enabled', 'muc_slow_mode')
this.muc.add('slow_mode_duration_form_position', 120)
this.muc.set('slow_mode_duration_form_position', 120)
this.muc.add('modules_enabled', 'pubsub_peertubelivechat')
this.muc.add('modules_enabled', 'muc_peertubelivechat_roles')
@ -251,7 +254,7 @@ class ProsodyConfigContent {
}
this.muc.add('modules_enabled', 'muc_moderation_delay')
this.muc.add('moderation_delay_form_position', 118)
this.muc.set('moderation_delay_form_position', 118)
}
useAnonymous (autoBanIP: boolean): void {
@ -445,7 +448,7 @@ class ProsodyConfigContent {
useMucHttpDefault (url: string): void {
this.muc.add('modules_enabled', 'muc_http_defaults')
this.muc.add('muc_create_api_url', url)
this.muc.set('muc_create_api_url', url)
// restrict_room_creation: we can override the 'local' value.
// Indeed, when muc_http_default is used, room creation will be managed by api.
@ -517,7 +520,7 @@ class ProsodyConfigContent {
*/
useBotsVirtualHost (botAvatarPath: string, botAvatarFiles: string[]): void {
this.bot = new ProsodyConfigVirtualHost('bot.' + this.prosodyDomain)
this.bot.set('modules_enabled', ['ping'])
this.bot.set('modules_enabled', ['ping', 'tls'])
this.bot.set('authentication', 'peertubelivechat_bot')
// For now, just using random_vcard_peertubelivechat to set bot avatar

View File

@ -13,7 +13,7 @@ import { LivechatProsodyAuth } from './prosody/auth'
import { loc } from './loc'
const escapeHTML = require('escape-html')
type AvatarSet = 'sepia' | 'cat' | 'bird' | 'fenec' | 'abstract' | 'legacy'
type AvatarSet = 'sepia' | 'cat' | 'bird' | 'fenec' | 'abstract' | 'legacy' | 'nctv'
async function initSettings (options: RegisterServerOptions): Promise<void> {
const { peertubeHelpers, settingsManager } = options
@ -506,6 +506,7 @@ function initThemingSettings ({ registerSetting }: RegisterServerOptions): void
private: true,
options: [
{ value: 'sepia', label: loc('avatar_set_option_sepia') },
{ value: 'nctv', label: loc('avatar_set_option_nctv') },
{ value: 'cat', label: loc('avatar_set_option_cat') },
{ value: 'bird', label: loc('avatar_set_option_bird') },
{ value: 'fenec', label: loc('avatar_set_option_fenec') },

View File

@ -5,7 +5,7 @@
// Note: API request body size is limited to 100Kb (expressjs body-parser defaut limit, and Peertube nginx config).
// So we must be sure to never send more than 100Kb. The front end sends new emojis by batch, but maxSize must remain
// as little as possible, so that we never reach 100Kb in JSON/base64 format.
export const maxSize: number = 30 * 1024
export const maxSize: number = 800 * 1024
export const allowedExtensions = ['png', 'jpg', 'jpeg', 'gif']
export const inputFileAccept = ['image/jpg', 'image/png', 'image/gif']
export const allowedMimeTypes = ['image/jpg', 'image/png', 'image/gif']

View File

@ -28,6 +28,7 @@ These files are used to generate multiple avatars (see the `build-avatars.js` sc
* `assets/images/avatars/bird` contains new birds avatar set, based on the work of David Revoy (see copyright informations)
* `assets/images/avatars/fenec` contains new fenecs avatar set, based on the work of David Revoy (see copyright informations)
* `assets/images/avatars/abstract` contains new abstract avatar set, based on the work of David Revoy (see copyright informations)
* `assets/images/avatars/nctv` contains NCTV avatar, based on the work of The Almighty Kek
### assets/styles