This commit is contained in:
MathMan05 2025-03-10 11:46:46 -05:00
commit bb3b2eedf5
9 changed files with 138 additions and 16 deletions

18
.github/workflows/docker-image.yml vendored Normal file
View file

@ -0,0 +1,18 @@
name: Docker Image CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build the Docker image
run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)

View file

@ -6,10 +6,17 @@ good at reducing the pallet, a first step for images that have a limited number
## PNGs:
good ratios, though not as good as other options, though better compatibility
### oxipng
Seems to be the best of all of the options, not sure if it's all you would need, but it did shrink pngs further than the other two tools afterwards.
```bash
oxipng -o max --strip all --alpha <filename here>
```
`all` may be replaced with `safe` if you want to be a bit safer
### pngcrush
Good, but should be ran before optipng, but isn't as good as it, use in tandom
### optipng
The best tool to really shrink pngs to be as small as they can be.
The second best tool to really shrink pngs to be as small as they can be.
## WEBP
it's better than png, though I have a feeling more could be done to compress these

18
Dockerfile Normal file
View file

@ -0,0 +1,18 @@
FROM node:18-bullseye AS builder
WORKDIR /devel
RUN apt-get update ; apt-get upgrade -y ; apt-get install -y build-essential
COPY . .
RUN npm i ; npm run build
FROM node:18-alpine
EXPOSE 8080
WORKDIR /exec
RUN apk add --update nodejs npm
COPY --from=builder /devel/ .
RUN adduser -D jankclient
USER jankclient
CMD ["npm", "start"]

View file

@ -1,8 +1,8 @@
# Jank Client
Jank Client is a [Spacebar](https://spacebar.chat) Client written in TS, HTML, and CSS.
To run it, clone the repo and do `npm install`, then
`node index.js`
To build it, clone the repo and run `npm install`, then `npm run build`
To run it, use `npm start`
or do the equivalent with bun
Both [Bun](https://bun.sh) and [Node.js](https://nodejs.org) are supported, and should function as expected.

8
compose.yaml Normal file
View file

@ -0,0 +1,8 @@
services:
jank:
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
ports:
- "8080:8080"

View file

@ -290,12 +290,8 @@ class Member extends SnowFlake {
hypomember.bio = _;
regen();
});
return; //Returns early to stop errors
if (this.accent_color) {
color = "#" + this.accent_color.toString(16);
} else {
color = "transparent";
}
color = (this.accent_color ? "#" + this.accent_color.toString(16) : "transparent") as string;
const colorPicker = settingsLeft.addColorInput(
I18n.getTranslation("profileColor"),
(_) => {},
@ -304,7 +300,7 @@ class Member extends SnowFlake {
colorPicker.watchForChange((_) => {
console.log();
color = _;
hypomember.accent_color = Number.parseInt("0x" + _.substr(1), 16);
hypomember.accent_color = Number.parseInt("0x" + _.substr(1, 16));
changed = true;
regen();
});

View file

@ -3,6 +3,7 @@
"authors": [
"Booky",
"Brettchenweber",
"Byte",
"SergeCroise",
"SomeRandomDeveloper"
]
@ -45,7 +46,36 @@
"MANAGE_GUILD_EXPRESSIONS": "Ermöglicht die Verwaltung von Emojis, Stickern und dem Soundboard",
"USE_APPLICATION_COMMANDS": "Erlaubt dem Nutzer die Verwendung von Befehlen bestimmter Anwendungen",
"REQUEST_TO_SPEAK": "Erlaubt dem Nutzer, in einem Bühnenkanal das Rederecht zu erbitten",
"MANAGE_EVENTS": "Erlaubt dem Nutzer das Verwalten und Editieren von Events"
"MANAGE_EVENTS": "Erlaubt dem Nutzer das Verwalten und Editieren von Events",
"MANAGE_THREADS": "Erlaubt es dem Benutzer, Threads zu löschen und zu archivieren sowie alle privaten Threads anzuzeigen",
"CREATE_PUBLIC_THREADS": "Erlaubt es dem Benutzer, öffentliche Threads zu erstellen",
"CREATE_PRIVATE_THREADS": "Erlaubt es dem Benutzer, private Threads zu erstellen",
"USE_EXTERNAL_STICKERS": "Ermöglicht dem Benutzer, externe Aufkleber zu verwenden",
"SEND_MESSAGES_IN_THREADS": "Ermöglicht dem Benutzer, Nachrichten in Threads zu senden",
"USE_EMBEDDED_ACTIVITIES": "Erlaubt es dem Benutzer, eingebettete Aktivitäten zu nutzen",
"MODERATE_MEMBERS": "Erlaubt es dem Benutzer, andere Benutzer zeitlich auszuschließen, um zu verhindern, dass sie Nachrichten im Chat und in Threads senden oder darauf reagieren, sowie um zu verhindern, dass sie in Sprach- und Bühnenkanälen sprechen",
"VIEW_CREATOR_MONETIZATION_ANALYTICS": "Ermöglicht das Anzeigen von Einblicken in Rollenabonnements",
"USE_SOUNDBOARD": "Erlaubt die Verwendung von Soundboard in einem Sprachkanal",
"CREATE_GUILD_EXPRESSIONS": "Erlaubt die Erstellung von Emojis, Aufklebern und Soundboard-Sounds sowie die Bearbeitung und Löschung der von dem aktuellen Benutzer erstellten.",
"CREATE_EVENTS": "Erlaubt die Erstellung von geplanten Ereignissen und die Bearbeitung und Löschung der von dem aktuellen Benutzer erstellten.",
"USE_EXTERNAL_SOUNDS": "Ermöglicht die Verwendung benutzerdefinierter Soundboard-Sounds von anderen Servern",
"SEND_VOICE_MESSAGES": "Ermöglicht Senden von Sprachnachrichten",
"SEND_POLLS": "Erlaubt die Absendung von Umfragen",
"USE_EXTERNAL_APPS": "Ermöglicht benutzerinstallierten Apps, öffentliche Antworten zu senden. Wenn diese Option deaktiviert ist, können Benutzer ihre Apps weiterhin verwenden, die Antworten sind jedoch flüchtig. Dies gilt nur für Apps, die nicht auch auf dem Server installiert sind."
},
"readableNames": {
"CREATE_INSTANT_INVITE": "Einladung erstellen",
"KICK_MEMBERS": "Mitglieder rauswerfen",
"BAN_MEMBERS": "Mitglieder sperren",
"ADMINISTRATOR": "Administrator",
"MANAGE_CHANNELS": "Vorlagen verwalten",
"MANAGE_GUILD": "Gilde verwalten",
"ADD_REACTIONS": "Reaktionen hinzufügen",
"VIEW_AUDIT_LOG": "Audit-Protokoll anzeigen",
"PRIORITY_SPEAKER": "Prioritätsredner",
"STREAM": "Video",
"VIEW_CHANNEL": "Änderungen zeigen",
"SPEAK": "Bergspitze"
}
},
"hideBlockedMessages": "Dieser Benutzer ist blockiert, klicke, um die Nachrichten zu verbergen.",

View file

@ -9,28 +9,53 @@
"permissions": {
"readableNames": {
"ADMINISTRATOR": "Administrateur",
"STREAM": "Video"
"STREAM": "Video",
"ATTACH_FILES": "Fichieren uspéngelen",
"USE_EXTERNAL_EMOJIS": "Extern Emojie benotzen",
"CONNECT": "Verbannen",
"SPEAK": "Schwätzen",
"MUTE_MEMBERS": "Membere stommschalten",
"CHANGE_NICKNAME": "Spëtznumm änneren",
"MANAGE_NICKNAMES": "Spëtznimm geréieren",
"MANAGE_ROLES": "Rolle geréieren",
"MANAGE_GUILD_EXPRESSIONS": "Ausdréck geréieren",
"CREATE_EVENTS": "Evenementer uleeën",
"SEND_POLLS": "Ëmfroen uleeën",
"USE_EXTERNAL_APPS": "Extern Appe benotzen"
}
},
"deleteConfirm": "Sidd Dir sécher, datt Dir dat läsche wëllt?",
"yes": "Jo",
"no": "Neen",
"todayAt": "Haut um $1",
"yesterdayAt": "Gëschter um $1",
"botSettings": "Botastellungen",
"botSettings": "Bot-Astellungen",
"pronouns": "Pronomen:",
"profileColor": "Profilfaarf",
"confirmGuildLeave": "Sidd Dir sécher, datt Dir aus $1 erausgoe wëllt",
"typing": "$2 {{PLURAL:$1|ass|sinn}} am schreiwen",
"blankMessage": "Eidele Message",
"channel": {
"copyId": "Kanal-ID kopéieren",
"markRead": "Als gelies markéieren",
"settings": "Astellungen",
"delete": "Kanal läschen",
"makeInvite": "Invitatioun maachen",
"settingsFor": "Astellunge fir $1",
"text": "Text",
"announcement": "Ukënnegungen",
"name:": "Numm:",
"topic:": "Theema:",
"nsfw:": "NSFW:",
"selectType": "Kanaltyp auswielen",
"selectName": "Numm vum Kanal",
"selectCatName": "Numm vun der Kategorie",
"createChannel": "Kanal uleeën",
"createCatagory": "Kategorie uleeën"
},
"switchAccounts": "Konto wiesselen ⇌",
"htmlPages": {
"instanceField": "Instanz:",
"emailField": "E-Mail:",
"pwField": "Passwuert:",
"loginButton": "Aloggen",
@ -59,6 +84,7 @@
"serverName": "Servernumm:",
"yesDelete": "Jo, ech si mer sécher",
"loadingDiscovery": "Lueden…",
"default": "Standard ($1)",
"description:": "Beschreiwung:"
},
"role": {
@ -76,6 +102,9 @@
"SWOff": "Aus",
"SWOffline": "Nëmmen offline",
"SWOn": "Un",
"clearCache": "Cache eidelmaachen",
"CheckUpdate": "No Aktualiséierunge sichen",
"2faDisable": "2FA desaktivéieren",
"badCode": "Ongültege Code",
"2faEnable": "2FA aktivéieren",
"2faCode:": "Code:",
@ -90,10 +119,15 @@
"newPassword:": "Neit Passwuert:",
"PasswordsNoMatch": "D'Passwierder sinn net d'selwecht",
"description": "Beschreiwung:",
"manageBot": "Bot geréieren",
"addBot": "Bot derbäisetzen",
"botUsername": "Botbenotzernumm:",
"language": "Sprooch:"
"advancedBot": "Erweidert Bot-Astellungen",
"language": "Sprooch:",
"connections": "Verbindungen"
},
"message": {
"reactionAdd": "Reaktioun derbäisetzen",
"delete": "Message läschen",
"edit": "Message änneren",
"edited": "(geännert)",
@ -106,6 +140,7 @@
"members": "Memberen: $1"
},
"inviteOptions": {
"title": "Leit invitéieren",
"30m": "30 Minutten",
"1h": "1 Stonn",
"6h": "6 Stonnen",
@ -113,13 +148,20 @@
"1d": "1 Dag",
"7d": "7 Deeg",
"30d": "30 Deeg",
"never": "Ni"
"never": "Ni",
"noLimit": "Keng Limitt"
},
"2faCode": "2FA-Code:",
"invite": {
"accept": "Akzeptéieren"
"invitedBy": "Dir gouft vum $1 invitéiert",
"alreadyJoined": "Scho bäigetrueden",
"accept": "Akzeptéieren",
"channel:": "Kanal:",
"createInvite": "Invitatioun maachen"
},
"friends": {
"blocked": "Gespaart",
"blockedusers": "Gespaarte Benotzer:",
"notfound": "Benotzer net fonnt",
"online": "Online",
"friends": "Frënn"

View file

@ -4,6 +4,7 @@
"locale": "ru",
"comment": "Русский перевод Jank Client",
"authors": [
"Amire80",
"Aprenik",
"Kaganer",
"Kareyac",
@ -266,6 +267,8 @@
"themesAndSounds": "Темы и звуки",
"theme:": "Тема",
"notisound": "Звук уведомления:",
"customSound": "Пользовательский звук",
"soundTooLarge": "Звук, который вы пытались загрузить, был слишком большим, попробуйте ещё раз.",
"accentColor": "Акцентный цвет:",
"enableEVoice": "Включить экспериментальную поддержку голосовых каналов",
"VoiceWarning": "Вы точно хотите включить это? Оно находится на стадии доработки. (Эта функция создана для разработчиков, пожалуйста, не включайте, если вы не знаете, что делаете)",