From f7c562f8b6caf0262c9d4d651601f14a8c968e91 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Sun, 30 Mar 2025 12:51:34 -0500 Subject: [PATCH 01/33] fix: detect invalid 0-length translations --- package.json | 2 +- packages/bot/src/core/discord/localizationObject.ts | 3 ++- submodules/CUE4Parse | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) create mode 160000 submodules/CUE4Parse diff --git a/package.json b/package.json index 649b22a3c..a194ac6e0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "blitzkit", "private": true, - "version": "1.27.3", + "version": "1.27.4", "description": "🎉 Tools for everything World of Tanks Blitz", "type": "module", "types": "./types.d.ts", diff --git a/packages/bot/src/core/discord/localizationObject.ts b/packages/bot/src/core/discord/localizationObject.ts index 3e60ddfe0..d3e5560f8 100644 --- a/packages/bot/src/core/discord/localizationObject.ts +++ b/packages/bot/src/core/discord/localizationObject.ts @@ -15,7 +15,8 @@ export function localizationObject( (localizations, locale) => { const { strings } = translator(locale); const translation = literalsFunc(path(strings), literals); - const isValid = !strict || validNameRegex.test(translation); + const isValid = + (!strict || validNameRegex.test(translation)) && translation.length > 0; if (!isValid) { console.warn( diff --git a/submodules/CUE4Parse b/submodules/CUE4Parse new file mode 160000 index 000000000..624e07c8c --- /dev/null +++ b/submodules/CUE4Parse @@ -0,0 +1 @@ +Subproject commit 624e07c8c396724b3ae72d4e1e2854fdc5269e24 From a9c9a90ac10cb34dd75f833fe32b73f23057dafa Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Sun, 30 Mar 2025 12:53:14 -0500 Subject: [PATCH 02/33] fix: disable /auction --- packages/bot/src/events/interactionCreate/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/bot/src/events/interactionCreate/index.ts b/packages/bot/src/events/interactionCreate/index.ts index 9b9f097b3..611b41e88 100644 --- a/packages/bot/src/events/interactionCreate/index.ts +++ b/packages/bot/src/events/interactionCreate/index.ts @@ -15,7 +15,6 @@ import { SlashCommandSubcommandsOnlyBuilder, } from 'discord.js'; import { aboutCommand } from '../../commands/about'; -import { auctionCommand } from '../../commands/auction'; import { breakdownCommand } from '../../commands/breakdown'; import { debugCommand } from '../../commands/debug'; import { evolutionCommand } from '../../commands/evolution'; @@ -80,7 +79,7 @@ interface CommandRegistryExplicit extends CommandRegistryBase { export type CommandRegistry = CommandRegistryImplicit | CommandRegistryExplicit; export const COMMANDS_RAW: Promise[] = [ - auctionCommand, + // auctionCommand, permissionsCommand, debugCommand, aboutCommand, From d5d171bea6b1214263f5d06a4c23e5fa6e1756b7 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Sun, 30 Mar 2025 14:37:40 -0500 Subject: [PATCH 03/33] 4 --- .../bot/src/components/CommandWrapper.tsx | 1 - .../discord/normalizeInteractionReturnable.ts | 64 -------- .../normalizeInteractionReturnable.tsx | 148 ++++++++++++++++++ .../handlers/chatInputCommand.ts | 57 ++++++- packages/bot/src/main.ts | 11 +- packages/core/src/blitzkit/index.ts | 1 + packages/core/src/blitzkit/isFunny.ts | 4 + 7 files changed, 216 insertions(+), 70 deletions(-) delete mode 100644 packages/bot/src/core/discord/normalizeInteractionReturnable.ts create mode 100644 packages/bot/src/core/discord/normalizeInteractionReturnable.tsx create mode 100644 packages/core/src/blitzkit/isFunny.ts diff --git a/packages/bot/src/components/CommandWrapper.tsx b/packages/bot/src/components/CommandWrapper.tsx index e03c2efca..c3fce00fa 100644 --- a/packages/bot/src/components/CommandWrapper.tsx +++ b/packages/bot/src/components/CommandWrapper.tsx @@ -17,7 +17,6 @@ export function CommandWrapper({ children, fat }: CommandWrapperProps) { width: '100%', color: theme.colors.textHighContrast, position: 'relative', - background: theme.colors.appBackground1, }} > {children} diff --git a/packages/bot/src/core/discord/normalizeInteractionReturnable.ts b/packages/bot/src/core/discord/normalizeInteractionReturnable.ts deleted file mode 100644 index 3996f98bf..000000000 --- a/packages/bot/src/core/discord/normalizeInteractionReturnable.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { - ActionRowBuilder, - AttachmentBuilder, - ButtonBuilder, - EmbedBuilder, - InteractionEditReplyOptions, - InteractionReplyOptions, - MessageEditOptions, -} from 'discord.js'; -import { InteractionReturnable } from '../../events/interactionCreate'; -import { Writeable } from '../../types/writable'; -import { jsxToPngThreaded } from '../blitzkit/jsxToPngThreaded'; -import { RenderConfiguration } from '../blitzkit/renderConfiguration'; - -export async function normalizeInteractionReturnable( - returnable: InteractionReturnable, -) { - const images: [number, Buffer][] = []; - const reply: InteractionEditReplyOptions & - InteractionReplyOptions & - MessageEditOptions = {}; - const awaitedReturnable = await returnable; - const normalizedReturnable = Array.isArray(awaitedReturnable) - ? awaitedReturnable - : [awaitedReturnable]; - let renderConfiguration = new RenderConfiguration(); - - await Promise.all( - normalizedReturnable.map(async (item, index) => { - if (typeof item === 'string') { - reply.content = item; - } else if (item instanceof EmbedBuilder) { - if (!reply.embeds) reply.embeds = []; - (reply.embeds as Writeable).push(item); - } else if (item instanceof ButtonBuilder) { - if (!reply.components) - reply.components = [new ActionRowBuilder()]; - (reply.components[0] as ActionRowBuilder).addComponents( - item, - ); - } else if (item instanceof AttachmentBuilder) { - if (!reply.files) reply.files = []; - (reply.files as Writeable).push(item); - } else if (item instanceof RenderConfiguration) { - renderConfiguration = item; - } else if (item === null) { - return; - } else { - const image = await jsxToPngThreaded(item, renderConfiguration); - images.push([index, image]); - } - }), - ); - - if (images.length > 0) { - images.sort(([a], [b]) => b - a); - if (!reply.files) reply.files = []; - images.forEach(([, image]) => - (reply.files as Writeable)?.push(image), - ); - } - - return reply; -} diff --git a/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx b/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx new file mode 100644 index 000000000..015ec3160 --- /dev/null +++ b/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx @@ -0,0 +1,148 @@ +import { imgur } from '@blitzkit/core'; +import { + ActionRowBuilder, + AttachmentBuilder, + ButtonBuilder, + EmbedBuilder, + InteractionEditReplyOptions, + InteractionReplyOptions, + MessageEditOptions, +} from 'discord.js'; +import { InteractionReturnable } from '../../events/interactionCreate'; +import { FunnyType } from '../../events/interactionCreate/handlers/chatInputCommand'; +import { theme } from '../../stitches.config'; +import { Writeable } from '../../types/writable'; +import { jsxToPngThreaded } from '../blitzkit/jsxToPngThreaded'; +import { RenderConfiguration } from '../blitzkit/renderConfiguration'; + +export async function normalizeInteractionReturnable( + returnable: InteractionReturnable, + funnyType?: FunnyType, +) { + const images: [number, Buffer][] = []; + const reply: InteractionEditReplyOptions & + InteractionReplyOptions & + MessageEditOptions = {}; + const awaitedReturnable = await returnable; + const normalizedReturnable = Array.isArray(awaitedReturnable) + ? awaitedReturnable + : [awaitedReturnable]; + let renderConfiguration = new RenderConfiguration(); + + await Promise.all( + normalizedReturnable.map(async (item, index) => { + if (typeof item === 'string') { + reply.content = item; + } else if (item instanceof EmbedBuilder) { + if (!reply.embeds) reply.embeds = []; + (reply.embeds as Writeable).push(item); + } else if (item instanceof ButtonBuilder) { + if (!reply.components) + reply.components = [new ActionRowBuilder()]; + (reply.components[0] as ActionRowBuilder).addComponents( + item, + ); + } else if (item instanceof AttachmentBuilder) { + if (!reply.files) reply.files = []; + (reply.files as Writeable).push(item); + } else if (item instanceof RenderConfiguration) { + renderConfiguration = item; + } else if (item === null) { + return; + } else { + let jsx = item; + + switch (funnyType) { + case FunnyType.Rude: { + jsx = ( +
+ {item} +
+ ); + + break; + } + + case FunnyType.Weird: { + const angle = (Math.random() * 2 - 1) * 10; + jsx = ( +
+ {item} + + + + + + +
+ ); + + break; + } + } + + const image = await jsxToPngThreaded(jsx, renderConfiguration); + images.push([index, image]); + } + }), + ); + + if (images.length > 0) { + images.sort(([a], [b]) => b - a); + if (!reply.files) reply.files = []; + images.forEach(([, image]) => + (reply.files as Writeable)?.push(image), + ); + } + + return reply; +} diff --git a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts index a6228f3f2..2c879b4de 100644 --- a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts +++ b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts @@ -1,3 +1,4 @@ +import { isFunny } from '@blitzkit/core'; import { ActionRowBuilder, AttachmentBuilder, @@ -16,14 +17,64 @@ import { psa } from '../../../core/discord/psa'; import { translator } from '../../../core/localization/translator'; import { Writeable } from '../../../types/writable'; +export enum FunnyType { + Rude, + Weird, +} + +const funnyResponses: Record = { + [FunnyType.Rude]: [ + "Your decisions were calculated, but, man, you're bad at math.", + 'Hey man, have you considered like not lacking?', + 'Let me guess... it was your team?', + 'Confidence is key. Unfortunately, you lost the lock.', + "When I said live green, I wasn't talking about your winrate.", + 'Viewing your stats, publicly? You must be brave.', + 'Bold of you to assume the numbers have gone up since yesterday.', + "I'd give you advice, but I don't think you'd understand.", + "I didn't believe in negative numbers until I saw your stats.", + 'I was gaining hope in humanity. Something changed today.', + "I've seen potatoes aim better than you.", + "I've seen sloths move faster than your tank.", + ], + [FunnyType.Weird]: [ + 'yeah daddy, use me more', + 'uwu, hewe are your swaws... uwu', + 'hehehehe it tickles', + 'yeeeeeeeeeeeeahhhhhh that hits the spot', + 'ooooh yesss my circuits are starting to hurt yeeeeeeee', + ], +}; + export async function handleChatInputCommand( interaction: ChatInputCommandInteraction, ) { + let funny: FunnyType | undefined = undefined; + await interaction.deferReply(); + + if (isFunny) { + const funniesLength = Object.keys(funnyResponses).length; + + if (import.meta.env.DEBUG_FUNNY === 'true') { + // in debug mode, just pick a random one + funny = Math.floor(Math.random() * funniesLength); + } else { + const id = BigInt(interaction.user.id); + funny = Number(id % BigInt(funniesLength)); + } + + const responses = funnyResponses[funny]; + const responseIndex = Math.floor(Math.random() * responses.length); + const response = `### ${responses[responseIndex]}`; + const waitTime = response.length * 45; + + await interaction.editReply(response); + await new Promise((resolve) => setTimeout(resolve, waitTime)); + } + const awaitedCommands = await commands; const registry = awaitedCommands[interaction.commandName]; - await interaction.deferReply(); - try { const returnable = await registry.handler(interaction); @@ -41,7 +92,7 @@ export async function handleChatInputCommand( let index = 0; for (const chunk of chunks.filter((chunk) => chunk.length > 0)) { - const reply = await normalizeInteractionReturnable(chunk); + const reply = await normalizeInteractionReturnable(chunk, funny); if ( psa.data && diff --git a/packages/bot/src/main.ts b/packages/bot/src/main.ts index bf447527e..3ff5f1116 100644 --- a/packages/bot/src/main.ts +++ b/packages/bot/src/main.ts @@ -1,4 +1,4 @@ -import { assertSecret } from '@blitzkit/core'; +import { assertSecret, isFunny } from '@blitzkit/core'; import { ActivityType, ShardingManager } from 'discord.js'; import { discoveredIdsDefinitions, @@ -45,7 +45,7 @@ const interval = setInterval(async () => { const usernames = awaitedDiscoveredIdsDefinitions.count; manager.broadcastEval( - (client, { servers, users, channels, tanks, usernames }) => { + async (client, { servers, users, channels, tanks, usernames }) => { const bios = [ `Living in ${servers.toLocaleString()} servers`, `Serving ${users.toLocaleString()} users`, @@ -62,6 +62,13 @@ const interval = setInterval(async () => { }, ], }); + + for (const guild of client.guilds.cache.values()) { + try { + const botMember = await guild.members.fetch(client.user.id); + await botMember.setNickname(isFunny ? "No One's Kit" : 'BlitzKit'); + } catch {} + } }, { context: { servers, channels, users, tanks, usernames } }, ); diff --git a/packages/core/src/blitzkit/index.ts b/packages/core/src/blitzkit/index.ts index 983def4d7..e51b3b8d4 100644 --- a/packages/core/src/blitzkit/index.ts +++ b/packages/core/src/blitzkit/index.ts @@ -44,6 +44,7 @@ export * from './unwrapBlitzkitResponse'; export * from './votes'; // export * from './withCORSProxy'; export * from './createDefaultProvisions'; +export * from './isFunny'; export * from './metaSortTank'; export * from './romanize'; export * from './youtubers'; diff --git a/packages/core/src/blitzkit/isFunny.ts b/packages/core/src/blitzkit/isFunny.ts new file mode 100644 index 000000000..430b2990a --- /dev/null +++ b/packages/core/src/blitzkit/isFunny.ts @@ -0,0 +1,4 @@ +const now = new Date(); +export const isFunny = + (now.getMonth() === 3 && now.getDate() === 1) || + import.meta.env.DEBUG_FUNNY === 'true'; From 9538a03afb98ddb38903a9bf4cfbacf722aa3f1c Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 31 Mar 2025 16:54:32 -0500 Subject: [PATCH 04/33] feat: uh hahaha you'll see --- .../normalizeInteractionReturnable.tsx | 137 ++++++++---------- .../handlers/chatInputCommand.ts | 68 +++------ packages/bot/src/main.ts | 2 +- packages/core/src/blitzkit/isFunny.ts | 19 ++- 4 files changed, 102 insertions(+), 124 deletions(-) diff --git a/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx b/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx index 015ec3160..76b2c9e10 100644 --- a/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx +++ b/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx @@ -1,4 +1,4 @@ -import { imgur } from '@blitzkit/core'; +import { imgur, isFunny } from '@blitzkit/core'; import { ActionRowBuilder, AttachmentBuilder, @@ -9,7 +9,6 @@ import { MessageEditOptions, } from 'discord.js'; import { InteractionReturnable } from '../../events/interactionCreate'; -import { FunnyType } from '../../events/interactionCreate/handlers/chatInputCommand'; import { theme } from '../../stitches.config'; import { Writeable } from '../../types/writable'; import { jsxToPngThreaded } from '../blitzkit/jsxToPngThreaded'; @@ -17,7 +16,6 @@ import { RenderConfiguration } from '../blitzkit/renderConfiguration'; export async function normalizeInteractionReturnable( returnable: InteractionReturnable, - funnyType?: FunnyType, ) { const images: [number, Buffer][] = []; const reply: InteractionEditReplyOptions & @@ -50,84 +48,75 @@ export async function normalizeInteractionReturnable( } else if (item === null) { return; } else { - let jsx = item; + let jsx: JSX.Element; - switch (funnyType) { - case FunnyType.Rude: { - jsx = ( -
+ {item} + + - {item} -
- ); + /> - break; - } - - case FunnyType.Weird: { - const angle = (Math.random() * 2 - 1) * 10; - jsx = ( -
- {item} + /> - - - - - -
- ); - - break; - } + + + ); + } else { + jsx = ( +
+ {item} +
+ ); } const image = await jsxToPngThreaded(jsx, renderConfiguration); diff --git a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts index 2c879b4de..2c883534a 100644 --- a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts +++ b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts @@ -17,56 +17,34 @@ import { psa } from '../../../core/discord/psa'; import { translator } from '../../../core/localization/translator'; import { Writeable } from '../../../types/writable'; -export enum FunnyType { - Rude, - Weird, -} - -const funnyResponses: Record = { - [FunnyType.Rude]: [ - "Your decisions were calculated, but, man, you're bad at math.", - 'Hey man, have you considered like not lacking?', - 'Let me guess... it was your team?', - 'Confidence is key. Unfortunately, you lost the lock.', - "When I said live green, I wasn't talking about your winrate.", - 'Viewing your stats, publicly? You must be brave.', - 'Bold of you to assume the numbers have gone up since yesterday.', - "I'd give you advice, but I don't think you'd understand.", - "I didn't believe in negative numbers until I saw your stats.", - 'I was gaining hope in humanity. Something changed today.', - "I've seen potatoes aim better than you.", - "I've seen sloths move faster than your tank.", - ], - [FunnyType.Weird]: [ - 'yeah daddy, use me more', - 'uwu, hewe are your swaws... uwu', - 'hehehehe it tickles', - 'yeeeeeeeeeeeeahhhhhh that hits the spot', - 'ooooh yesss my circuits are starting to hurt yeeeeeeee', - ], -}; +const funnyResponses = [ + "your dwecisions were calculawed buw man, you're bad at math 🥀🥀", + 'senpai, have you consiwered not lacking 😳', + 'let shoow a guess cutie... it was your team? 🤬🤬🤬', + 'confiwence is key. unforwunawely you lost whe lock 🔒💔', + "when they say live green, they dwn't mean your 🌳 winrate 🌳", + 'daddy viewing your swats, hewe? you really are brawe 😎', + 'no surrie! your numwers are swill 💔', + "i would giwe you awvice, you won'w understand 🥀🥀", + "i diwn'w beliewe in negawive numwers unwil i saw your stats 😳😳😳", + 'yeah daddy, use me more 🤤', + 'uwu, hewe are your swaws... uwu 😋😋😋', + 'hehehehe it tickles 😻', + 'yeeeeeeeeeeeeahhhhhh that hits the spot 😳', + 'ooooh yesss my circuits are starting to hurt yeeeeeeee 💥', + 'wawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw', + 'https://tenor.com/tre3NETle2e.gif', +]; export async function handleChatInputCommand( interaction: ChatInputCommandInteraction, ) { - let funny: FunnyType | undefined = undefined; await interaction.deferReply(); - if (isFunny) { - const funniesLength = Object.keys(funnyResponses).length; - - if (import.meta.env.DEBUG_FUNNY === 'true') { - // in debug mode, just pick a random one - funny = Math.floor(Math.random() * funniesLength); - } else { - const id = BigInt(interaction.user.id); - funny = Number(id % BigInt(funniesLength)); - } - - const responses = funnyResponses[funny]; - const responseIndex = Math.floor(Math.random() * responses.length); - const response = `### ${responses[responseIndex]}`; - const waitTime = response.length * 45; + if (isFunny()) { + const response = + funnyResponses[Math.floor(Math.random() * funnyResponses.length)]; + const waitTime = response.length * 60; await interaction.editReply(response); await new Promise((resolve) => setTimeout(resolve, waitTime)); @@ -92,7 +70,7 @@ export async function handleChatInputCommand( let index = 0; for (const chunk of chunks.filter((chunk) => chunk.length > 0)) { - const reply = await normalizeInteractionReturnable(chunk, funny); + const reply = await normalizeInteractionReturnable(chunk); if ( psa.data && diff --git a/packages/bot/src/main.ts b/packages/bot/src/main.ts index 3ff5f1116..2a030105e 100644 --- a/packages/bot/src/main.ts +++ b/packages/bot/src/main.ts @@ -66,7 +66,7 @@ const interval = setInterval(async () => { for (const guild of client.guilds.cache.values()) { try { const botMember = await guild.members.fetch(client.user.id); - await botMember.setNickname(isFunny ? "No One's Kit" : 'BlitzKit'); + await botMember.setNickname(isFunny ? 'FreakKit' : 'BlitzKit'); } catch {} } }, diff --git a/packages/core/src/blitzkit/isFunny.ts b/packages/core/src/blitzkit/isFunny.ts index 430b2990a..8f1c7b8ad 100644 --- a/packages/core/src/blitzkit/isFunny.ts +++ b/packages/core/src/blitzkit/isFunny.ts @@ -1,4 +1,15 @@ -const now = new Date(); -export const isFunny = - (now.getMonth() === 3 && now.getDate() === 1) || - import.meta.env.DEBUG_FUNNY === 'true'; +const FUNNY_DATES: [number, number][] = [ + // two days for april fools + [4, 1], + [4, 2], +]; + +export function isFunny() { + const now = new Date(); + + return ( + FUNNY_DATES.some( + ([month, day]) => now.getMonth() === month - 1 && now.getDate() === day, + ) || import.meta.env.DEBUG_FUNNY === 'true' + ); +} From 9475d22472cc7b0627173dd70b2ff26f8a2c409a Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 31 Mar 2025 17:36:40 -0500 Subject: [PATCH 05/33] feat: uh hahaha you'll see ... again! --- packages/core/src/blitzkit/isFunny.ts | 2 +- packages/website/src/components/Funny.astro | 43 ++++++++++++++++++ packages/website/src/layouts/BaseLayout.astro | 7 +++ packages/website/src/layouts/base.css | 44 +++++++++++++++++++ .../website/src/pages/[...locale]/index.astro | 18 +++++++- 5 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 packages/website/src/components/Funny.astro diff --git a/packages/core/src/blitzkit/isFunny.ts b/packages/core/src/blitzkit/isFunny.ts index 8f1c7b8ad..3376a3fb9 100644 --- a/packages/core/src/blitzkit/isFunny.ts +++ b/packages/core/src/blitzkit/isFunny.ts @@ -1,7 +1,7 @@ const FUNNY_DATES: [number, number][] = [ - // two days for april fools [4, 1], [4, 2], + [4, 3], ]; export function isFunny() { diff --git a/packages/website/src/components/Funny.astro b/packages/website/src/components/Funny.astro new file mode 100644 index 000000000..d9faab95e --- /dev/null +++ b/packages/website/src/components/Funny.astro @@ -0,0 +1,43 @@ + diff --git a/packages/website/src/layouts/BaseLayout.astro b/packages/website/src/layouts/BaseLayout.astro index 05f7adab9..aab9b246d 100644 --- a/packages/website/src/layouts/BaseLayout.astro +++ b/packages/website/src/layouts/BaseLayout.astro @@ -7,6 +7,7 @@ import Navbar from '../components/Navbar.astro'; import Party3 from '../components/Party3.astro'; import './base.css'; import { DEFAULT_LOCALE } from '@blitzkit/i18n'; +import Funny from '../components/Funny.astro'; export interface Props { noFooter?: boolean; @@ -23,6 +24,10 @@ const locale = Astro.params.locale ?? DEFAULT_LOCALE; + @@ -55,6 +60,8 @@ const locale = Astro.params.locale ?? DEFAULT_LOCALE; + + diff --git a/packages/website/src/layouts/base.css b/packages/website/src/layouts/base.css index a3de75274..664cb15bb 100644 --- a/packages/website/src/layouts/base.css +++ b/packages/website/src/layouts/base.css @@ -2,4 +2,48 @@ body { margin: 0; + cursor: + url(https://i.imgur.com/MeQQWCX.png) 16 16, + auto; +} + +* { + font-family: 'Schoolbell', cursive !important; +} + +.radix-themes { + --gray-1: var(--crimson-5); + --gray-2: var(--crimson-5); + --gray-3: var(--crimson-5); + --gray-4: var(--crimson-6); + --gray-5: var(--crimson-6); + --gray-6: var(--crimson-7); + --gray-7: var(--crimson-7); + --gray-8: var(--crimson-8); + --gray-9: var(--crimson-9); + --gray-10: var(--crimson-10); + --gray-11: var(--crimson-11); + --gray-12: var(--crimson-12); +} + +.star { + position: fixed; + color: yellow; + font-size: 20px; + pointer-events: none; + animation: + fade-out 0.6s ease-out forwards, + move-up 0.6s ease-out forwards; +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes move-up { + to { + transform: translateY(20px); + } } diff --git a/packages/website/src/pages/[...locale]/index.astro b/packages/website/src/pages/[...locale]/index.astro index 025a9ef1c..f95ff9578 100644 --- a/packages/website/src/pages/[...locale]/index.astro +++ b/packages/website/src/pages/[...locale]/index.astro @@ -1,7 +1,8 @@ --- import { assertSecret } from '@blitzkit/core'; import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from '@blitzkit/i18n'; -import { Box, Flex, Heading, Link } from '@radix-ui/themes'; +import { literals } from '@blitzkit/i18n/src/literals'; +import { Box, Flex, Heading, Link, Quote } from '@radix-ui/themes'; import type { GetStaticPaths } from 'astro'; import { AesonPlug } from '../../components/AesonPlug'; import { HomeLocaleSwitcher } from '../../components/Home/HomeLocaleSwitcher'; @@ -21,7 +22,6 @@ import { tierListTool, } from '../../constants/tools'; import { getStrings } from '../../core/i18n/getStrings'; -import { literals } from '@blitzkit/i18n/src/literals'; import BaseLayout from '../../layouts/BaseLayout.astro'; const PUBLIC_ASSET_BRANCH = assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH); @@ -45,6 +45,20 @@ export const getStaticPaths = (() => { + + + + It has come to our attention that tanks are very harsh objects. To even + it out, we made the website a pretty pretty princess {'<'}3 + + + + { From 40a81f6b1b29813739ef0df37283bb6911158149 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 31 Mar 2025 17:39:01 -0500 Subject: [PATCH 06/33] fix: class list --- packages/website/src/components/Funny.astro | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/website/src/components/Funny.astro b/packages/website/src/components/Funny.astro index d9faab95e..5ea7628d6 100644 --- a/packages/website/src/components/Funny.astro +++ b/packages/website/src/components/Funny.astro @@ -5,8 +5,7 @@ if ( node.nodeType !== 3 || !node.textContent || - !(node instanceof HTMLElement) || - node.classList.contains('no-funny') + (node as HTMLElement).classList?.contains('no-funny') ) return; From 28f365f7621977b4c7f614b38e690f3373dca615 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 31 Mar 2025 17:39:42 -0500 Subject: [PATCH 07/33] fix: no class list --- packages/website/src/components/Funny.astro | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/website/src/components/Funny.astro b/packages/website/src/components/Funny.astro index 5ea7628d6..6ad8ac537 100644 --- a/packages/website/src/components/Funny.astro +++ b/packages/website/src/components/Funny.astro @@ -2,12 +2,7 @@ function funnify() { document.body.querySelectorAll('*').forEach((element) => { element.childNodes.forEach((node) => { - if ( - node.nodeType !== 3 || - !node.textContent || - (node as HTMLElement).classList?.contains('no-funny') - ) - return; + if (node.nodeType !== 3 || !node.textContent) return; node.textContent = node.textContent .replaceAll(/[tdkqgp]/g, 'w') From 0368e9cedadffc9a969827769a342bbe378c60a8 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 31 Mar 2025 17:44:08 -0500 Subject: [PATCH 08/33] feat: pink bot --- packages/bot/src/stitches.config.ts | 17 ++++++++++++++++- packages/core/src/blitzkit/isFunny.ts | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/bot/src/stitches.config.ts b/packages/bot/src/stitches.config.ts index 07d1f0f0e..27617dbc3 100644 --- a/packages/bot/src/stitches.config.ts +++ b/packages/bot/src/stitches.config.ts @@ -18,12 +18,27 @@ import { } from '@radix-ui/colors'; import { createBorderStyles, createColors, createSpaces } from 'bepaint'; +const funnyColors = { + pink1: crimsonDark.crimson5, + pink2: crimsonDark.crimson5, + pink3: crimsonDark.crimson5, + pink4: crimsonDark.crimson6, + pink5: crimsonDark.crimson6, + pink6: crimsonDark.crimson7, + pink7: crimsonDark.crimson7, + pink8: crimsonDark.crimson8, + pink9: crimsonDark.crimson9, + pink10: crimsonDark.crimson10, + pink11: crimsonDark.crimson11, + pink12: crimsonDark.crimson12, +}; + // this isn't really a stitches config, but the object is compliant export const theme = { spaces: createSpaces(), colors: { - ...createColors(slateDark), + ...createColors(funnyColors), ...createColors(slateDarkA, 'alpha'), ...createColors(slate, 'light'), diff --git a/packages/core/src/blitzkit/isFunny.ts b/packages/core/src/blitzkit/isFunny.ts index 3376a3fb9..4c73235a5 100644 --- a/packages/core/src/blitzkit/isFunny.ts +++ b/packages/core/src/blitzkit/isFunny.ts @@ -5,6 +5,8 @@ const FUNNY_DATES: [number, number][] = [ ]; export function isFunny() { + return true; + const now = new Date(); return ( From 034417d19f6d264f733ee1911877094406e8f6db Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 31 Mar 2025 17:49:23 -0500 Subject: [PATCH 09/33] fix: remove cue4 --- submodules/CUE4Parse | 1 - 1 file changed, 1 deletion(-) delete mode 160000 submodules/CUE4Parse diff --git a/submodules/CUE4Parse b/submodules/CUE4Parse deleted file mode 160000 index 624e07c8c..000000000 --- a/submodules/CUE4Parse +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 624e07c8c396724b3ae72d4e1e2854fdc5269e24 From 7472e39fafc2ba548ec70e6056690784cd2ed460 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Tue, 1 Apr 2025 19:34:03 -0500 Subject: [PATCH 10/33] fix: gifs --- .../handlers/chatInputCommand.ts | 20 ++++++++++--------- submodules/CUE4Parse | 1 + 2 files changed, 12 insertions(+), 9 deletions(-) create mode 160000 submodules/CUE4Parse diff --git a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts index 2c883534a..7b73dc7c2 100644 --- a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts +++ b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts @@ -19,21 +19,23 @@ import { Writeable } from '../../../types/writable'; const funnyResponses = [ "your dwecisions were calculawed buw man, you're bad at math 🥀🥀", - 'senpai, have you consiwered not lacking 😳', - 'let shoow a guess cutie... it was your team? 🤬🤬🤬', + 'have you consiwered not lacking 😳', + 'lemme guess... it was your team? 🤬🤬🤬', 'confiwence is key. unforwunawely you lost whe lock 🔒💔', "when they say live green, they dwn't mean your 🌳 winrate 🌳", - 'daddy viewing your swats, hewe? you really are brawe 😎', - 'no surrie! your numwers are swill 💔', + 'viewing your swats, hewe? you really are brawe 😎', + 'no surrie! your numwers are still no bueno 💔💔💔', "i would giwe you awvice, you won'w understand 🥀🥀", "i diwn'w beliewe in negawive numwers unwil i saw your stats 😳😳😳", - 'yeah daddy, use me more 🤤', - 'uwu, hewe are your swaws... uwu 😋😋😋', - 'hehehehe it tickles 😻', - 'yeeeeeeeeeeeeahhhhhh that hits the spot 😳', - 'ooooh yesss my circuits are starting to hurt yeeeeeeee 💥', 'wawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw', 'https://tenor.com/tre3NETle2e.gif', + 'https://tenor.com/bVWoA.gif', + 'https://tenor.com/bARFp.gif', + 'https://tenor.com/jDFYXtzM27i.gif', + 'https://tenor.com/dZ6MB62R32r.gif', + 'https://tenor.com/bqOZf.gif', + 'https://tenor.com/tD2TjXsmGVx.gif', + 'https://tenor.com/bya9M.gif', ]; export async function handleChatInputCommand( diff --git a/submodules/CUE4Parse b/submodules/CUE4Parse new file mode 160000 index 000000000..624e07c8c --- /dev/null +++ b/submodules/CUE4Parse @@ -0,0 +1 @@ +Subproject commit 624e07c8c396724b3ae72d4e1e2854fdc5269e24 From 57b3218c5a5f170dbb9937d936d53c95b5eb40ea Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Tue, 1 Apr 2025 19:38:00 -0500 Subject: [PATCH 11/33] undo cue4 --- submodules/CUE4Parse | 1 + 1 file changed, 1 insertion(+) create mode 160000 submodules/CUE4Parse diff --git a/submodules/CUE4Parse b/submodules/CUE4Parse new file mode 160000 index 000000000..624e07c8c --- /dev/null +++ b/submodules/CUE4Parse @@ -0,0 +1 @@ +Subproject commit 624e07c8c396724b3ae72d4e1e2854fdc5269e24 From 71e1ab1362d805238db3a1488223d95d00108912 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Tue, 1 Apr 2025 19:38:58 -0500 Subject: [PATCH 12/33] aaaaaaaaaaaaaaaa --- submodules/CUE4Parse | 1 - 1 file changed, 1 deletion(-) delete mode 160000 submodules/CUE4Parse diff --git a/submodules/CUE4Parse b/submodules/CUE4Parse deleted file mode 160000 index 624e07c8c..000000000 --- a/submodules/CUE4Parse +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 624e07c8c396724b3ae72d4e1e2854fdc5269e24 From 8ef355c574239a0035b3f6d88812871768433a99 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Wed, 2 Apr 2025 16:11:09 -0500 Subject: [PATCH 13/33] feat: we don't talk about it --- docs/changelogs/1.27.4.md | 3 + docs/changelogs/1.27.5.md | 11 +++ package.json | 2 +- .../bot/src/components/CommandWrapper.tsx | 1 + .../normalizeInteractionReturnable.tsx | 75 +------------------ .../handlers/chatInputCommand.ts | 31 -------- packages/bot/src/main.ts | 4 +- packages/core/src/blitzkit/index.ts | 1 - packages/core/src/blitzkit/isFunny.ts | 17 ----- packages/website/src/components/Funny.astro | 37 --------- packages/website/src/layouts/BaseLayout.astro | 8 -- packages/website/src/layouts/base.css | 44 ----------- .../website/src/pages/[...locale]/index.astro | 16 +--- 13 files changed, 20 insertions(+), 230 deletions(-) create mode 100644 docs/changelogs/1.27.4.md create mode 100644 docs/changelogs/1.27.5.md delete mode 100644 packages/core/src/blitzkit/isFunny.ts delete mode 100644 packages/website/src/components/Funny.astro diff --git a/docs/changelogs/1.27.4.md b/docs/changelogs/1.27.4.md new file mode 100644 index 000000000..eb1851f3f --- /dev/null +++ b/docs/changelogs/1.27.4.md @@ -0,0 +1,3 @@ +# FreakKit 1.27.4 + +It has come to our attention that tanks are very harsh objects. To even it out, we made the website a pretty pretty princess <3 diff --git a/docs/changelogs/1.27.5.md b/docs/changelogs/1.27.5.md new file mode 100644 index 000000000..ec1b77275 --- /dev/null +++ b/docs/changelogs/1.27.5.md @@ -0,0 +1,11 @@ +# BlitzKit 1.27.5 + +This update only affects the bot. + +## Changes + +- Removed `/auction` + +## Fixes + +- Fixed a bug that caused `/rating` to disappear diff --git a/package.json b/package.json index a194ac6e0..c07be3556 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "blitzkit", "private": true, - "version": "1.27.4", + "version": "1.27.5", "description": "🎉 Tools for everything World of Tanks Blitz", "type": "module", "types": "./types.d.ts", diff --git a/packages/bot/src/components/CommandWrapper.tsx b/packages/bot/src/components/CommandWrapper.tsx index c3fce00fa..8fe8f612c 100644 --- a/packages/bot/src/components/CommandWrapper.tsx +++ b/packages/bot/src/components/CommandWrapper.tsx @@ -16,6 +16,7 @@ export function CommandWrapper({ children, fat }: CommandWrapperProps) { gap: 16, width: '100%', color: theme.colors.textHighContrast, + backgroundColor: theme.colors.appBackground1, position: 'relative', }} > diff --git a/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx b/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx index 76b2c9e10..3996f98bf 100644 --- a/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx +++ b/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx @@ -1,4 +1,3 @@ -import { imgur, isFunny } from '@blitzkit/core'; import { ActionRowBuilder, AttachmentBuilder, @@ -9,7 +8,6 @@ import { MessageEditOptions, } from 'discord.js'; import { InteractionReturnable } from '../../events/interactionCreate'; -import { theme } from '../../stitches.config'; import { Writeable } from '../../types/writable'; import { jsxToPngThreaded } from '../blitzkit/jsxToPngThreaded'; import { RenderConfiguration } from '../blitzkit/renderConfiguration'; @@ -48,78 +46,7 @@ export async function normalizeInteractionReturnable( } else if (item === null) { return; } else { - let jsx: JSX.Element; - - if (isFunny()) { - const angle = (Math.random() * 2 - 1) * 10; - jsx = ( -
- {item} - - - - - - -
- ); - } else { - jsx = ( -
- {item} -
- ); - } - - const image = await jsxToPngThreaded(jsx, renderConfiguration); + const image = await jsxToPngThreaded(item, renderConfiguration); images.push([index, image]); } }), diff --git a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts index 7b73dc7c2..f48f91950 100644 --- a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts +++ b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts @@ -1,4 +1,3 @@ -import { isFunny } from '@blitzkit/core'; import { ActionRowBuilder, AttachmentBuilder, @@ -17,41 +16,11 @@ import { psa } from '../../../core/discord/psa'; import { translator } from '../../../core/localization/translator'; import { Writeable } from '../../../types/writable'; -const funnyResponses = [ - "your dwecisions were calculawed buw man, you're bad at math 🥀🥀", - 'have you consiwered not lacking 😳', - 'lemme guess... it was your team? 🤬🤬🤬', - 'confiwence is key. unforwunawely you lost whe lock 🔒💔', - "when they say live green, they dwn't mean your 🌳 winrate 🌳", - 'viewing your swats, hewe? you really are brawe 😎', - 'no surrie! your numwers are still no bueno 💔💔💔', - "i would giwe you awvice, you won'w understand 🥀🥀", - "i diwn'w beliewe in negawive numwers unwil i saw your stats 😳😳😳", - 'wawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw', - 'https://tenor.com/tre3NETle2e.gif', - 'https://tenor.com/bVWoA.gif', - 'https://tenor.com/bARFp.gif', - 'https://tenor.com/jDFYXtzM27i.gif', - 'https://tenor.com/dZ6MB62R32r.gif', - 'https://tenor.com/bqOZf.gif', - 'https://tenor.com/tD2TjXsmGVx.gif', - 'https://tenor.com/bya9M.gif', -]; - export async function handleChatInputCommand( interaction: ChatInputCommandInteraction, ) { await interaction.deferReply(); - if (isFunny()) { - const response = - funnyResponses[Math.floor(Math.random() * funnyResponses.length)]; - const waitTime = response.length * 60; - - await interaction.editReply(response); - await new Promise((resolve) => setTimeout(resolve, waitTime)); - } - const awaitedCommands = await commands; const registry = awaitedCommands[interaction.commandName]; diff --git a/packages/bot/src/main.ts b/packages/bot/src/main.ts index 2a030105e..c494ba6ad 100644 --- a/packages/bot/src/main.ts +++ b/packages/bot/src/main.ts @@ -1,4 +1,4 @@ -import { assertSecret, isFunny } from '@blitzkit/core'; +import { assertSecret } from '@blitzkit/core'; import { ActivityType, ShardingManager } from 'discord.js'; import { discoveredIdsDefinitions, @@ -66,7 +66,7 @@ const interval = setInterval(async () => { for (const guild of client.guilds.cache.values()) { try { const botMember = await guild.members.fetch(client.user.id); - await botMember.setNickname(isFunny ? 'FreakKit' : 'BlitzKit'); + await botMember.setNickname('BlitzKit'); } catch {} } }, diff --git a/packages/core/src/blitzkit/index.ts b/packages/core/src/blitzkit/index.ts index e51b3b8d4..983def4d7 100644 --- a/packages/core/src/blitzkit/index.ts +++ b/packages/core/src/blitzkit/index.ts @@ -44,7 +44,6 @@ export * from './unwrapBlitzkitResponse'; export * from './votes'; // export * from './withCORSProxy'; export * from './createDefaultProvisions'; -export * from './isFunny'; export * from './metaSortTank'; export * from './romanize'; export * from './youtubers'; diff --git a/packages/core/src/blitzkit/isFunny.ts b/packages/core/src/blitzkit/isFunny.ts deleted file mode 100644 index 4c73235a5..000000000 --- a/packages/core/src/blitzkit/isFunny.ts +++ /dev/null @@ -1,17 +0,0 @@ -const FUNNY_DATES: [number, number][] = [ - [4, 1], - [4, 2], - [4, 3], -]; - -export function isFunny() { - return true; - - const now = new Date(); - - return ( - FUNNY_DATES.some( - ([month, day]) => now.getMonth() === month - 1 && now.getDate() === day, - ) || import.meta.env.DEBUG_FUNNY === 'true' - ); -} diff --git a/packages/website/src/components/Funny.astro b/packages/website/src/components/Funny.astro deleted file mode 100644 index 6ad8ac537..000000000 --- a/packages/website/src/components/Funny.astro +++ /dev/null @@ -1,37 +0,0 @@ - diff --git a/packages/website/src/layouts/BaseLayout.astro b/packages/website/src/layouts/BaseLayout.astro index aab9b246d..31ab8bcd3 100644 --- a/packages/website/src/layouts/BaseLayout.astro +++ b/packages/website/src/layouts/BaseLayout.astro @@ -7,7 +7,6 @@ import Navbar from '../components/Navbar.astro'; import Party3 from '../components/Party3.astro'; import './base.css'; import { DEFAULT_LOCALE } from '@blitzkit/i18n'; -import Funny from '../components/Funny.astro'; export interface Props { noFooter?: boolean; @@ -24,17 +23,12 @@ const locale = Astro.params.locale ?? DEFAULT_LOCALE; - - - - - - - - - BlitzKit - { - isBranchNamed && ( - - {branchName} - - ) - } - - + - - - + + + + + + BlitzKit { - toolsFiltered.map((tool, index) => { - const unavailableOnBranch = tool.branches?.every( - (branch) => - branch !== assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH), - ); - const selected = Astro.url.pathname.includes(`/tools/${tool.id}`); - const toolStrings = - strings.website.tools[ - (tool.stringsId ?? - tool.id) as keyof typeof strings.website.tools - ]; - - if (unavailableOnBranch) return null; - - return ( - - {index > 0 && } - - {toolStrings.name} - - - ); - }) + isBranchNamed && ( + + {branchName} + + ) } + - + - - - - - - - - - - - - - - - - - - - - - { - tools.map((tool) => { + toolsFiltered.map((tool, index) => { const unavailableOnBranch = tool.branches?.every( (branch) => branch !== assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH), ); + const selected = Astro.url.pathname.includes(`/tools/${tool.id}`); const toolStrings = strings.website.tools[ (tool.stringsId ?? @@ -225,63 +127,118 @@ const strings = getStrings(locale); if (unavailableOnBranch) return null; return ( - - - - - - {toolStrings.name} - - - + {toolStrings.name} + ); }) } - - + + + + + + + + + + + + + + + + + + + + + + + + + + { + toolsFiltered.map((tool) => { + const unavailableOnBranch = tool.branches?.every( + (branch) => + branch !== assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH), + ); + + if (unavailableOnBranch) return null; + + const toolStrings = + strings.website.tools[ + (tool.stringsId ?? tool.id) as keyof typeof strings.website.tools + ]; + + return ( + + + + {toolStrings.name} + + + + ); + }) + } + + + diff --git a/packages/website/src/components/PageWrapper.tsx b/packages/website/src/components/PageWrapper.tsx index ac2cbd0c1..f78b1dd8b 100644 --- a/packages/website/src/components/PageWrapper.tsx +++ b/packages/website/src/components/PageWrapper.tsx @@ -39,7 +39,7 @@ export function PageWrapper({ gap="4" p={padding} width="100%" - maxWidth="50rem" + maxWidth="80rem" style={{ margin: 'auto', boxSizing: 'border-box', diff --git a/packages/website/src/core/radix/var.ts b/packages/website/src/core/radix/var.ts index 4f620bce8..903c6177e 100644 --- a/packages/website/src/core/radix/var.ts +++ b/packages/website/src/core/radix/var.ts @@ -9,19 +9,8 @@ export type VarName = | `radius-${1 | 2 | 3 | 4 | 5 | 6 | 'full'}` | `space-${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}` | `shadow-${1 | 2 | 3 | 4 | 5 | 6}` - | `${RadixColor | 'accent' | 'gray'}-${ - | 1 - | 2 - | 3 - | 4 - | 5 - | 6 - | 7 - | 8 - | 9 - | 10 - | 11 - | 12 + | `${RadixColor | 'accent' | 'gray' | 'black' | 'white'}-${ + | `${'' | 'a'}${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12}` | 'surface' | 'indicator' | 'track' diff --git a/packages/website/src/pages/[...locale]/index.astro b/packages/website/src/pages/[...locale]/index.astro index dde61641e..f74bc5dba 100644 --- a/packages/website/src/pages/[...locale]/index.astro +++ b/packages/website/src/pages/[...locale]/index.astro @@ -90,7 +90,7 @@ export const getStaticPaths = (() => { } - + { From c3d8f15a2a8187d2a5376bd0b6c3ea01e19930ff Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Thu, 3 Apr 2025 12:23:53 -0500 Subject: [PATCH 20/33] feat: better robots.txt --- .vscode/settings.json | 1 + bun.lockb | Bin 424247 -> 424263 bytes packages/website/src/pages/robots.txt.ts | 26 ++++++++++------------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 7817465ba..616b9e6b7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -130,6 +130,7 @@ "outdir", "outfile", "ownedtanks", + "partytown", "PIXELFORMAT", "playerachievements", "playerinfo", diff --git a/bun.lockb b/bun.lockb index aaa2b07f9399e87e0e8c4af722460f79aaaa318f..2c3aadebeb3332e27c169f124e6f14ee0de5640c 100644 GIT binary patch delta 35949 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 = { + 'User-agent': '*', + [allowRobots ? 'Allow' : 'Disallow']: '/', + + space: null, + Sitemap: `${new URL(request.url).origin}/sitemap-index.xml`, + }; return new Response( - ` -User-agent: * -Allow: / - -${ - allowRobots - ? ` -Host: ${site} -Sitemap: ${site}/sitemap-index.xml -` - : '' -} -`.trim(), + Object.entries(flags) + .map(([key, value]) => (value === null ? '' : `${key}: ${value}`)) + .join('\n'), ); } From 2d66e0ab2852a47c5efa162be5b303f3879b82e4 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Thu, 3 Apr 2025 12:34:02 -0500 Subject: [PATCH 21/33] fix: missing padding backgrond --- .../website/src/pages/[...locale]/index.astro | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/packages/website/src/pages/[...locale]/index.astro b/packages/website/src/pages/[...locale]/index.astro index f74bc5dba..910c4e5c5 100644 --- a/packages/website/src/pages/[...locale]/index.astro +++ b/packages/website/src/pages/[...locale]/index.astro @@ -1,4 +1,5 @@ --- +import { AstroSeo } from '@astrolib/seo'; import { assertSecret } from '@blitzkit/core'; import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from '@blitzkit/i18n'; import { literals } from '@blitzkit/i18n/src/literals'; @@ -40,8 +41,40 @@ export const getStaticPaths = (() => { }) satisfies GetStaticPaths; --- -BlitzKit - + From 6283ddc57ae2704c8702360df6188cf5de7268b9 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Thu, 3 Apr 2025 12:45:33 -0500 Subject: [PATCH 22/33] feat: astro seo --- .vscode/settings.json | 1 + bun.lockb | Bin 424263 -> 424760 bytes packages/i18n/strings/en.json | 7 + packages/website/package.json | 1 + packages/website/src/components/Navbar.astro | 252 +++++++++--------- .../src/components/ToolOpenGraph.astro | 18 +- .../docs/[directory]/[document]/index.astro | 15 +- .../[...locale]/docs/patches/index.astro | 17 +- .../website/src/pages/[...locale]/index.astro | 34 +-- .../tools/embed/[embed]/host/index.astro | 3 - .../tools/embed/[embed]/index.astro | 17 +- .../tools/tankopedia/[id]/index.astro | 15 +- 12 files changed, 207 insertions(+), 173 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 616b9e6b7..669c0629f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,6 +14,7 @@ "applypatches", "artefacts", "astrojs", + "astrolib", "atgm", "Autoloader", "Autoreloader", diff --git a/bun.lockb b/bun.lockb index 2c3aadebeb3332e27c169f124e6f14ee0de5640c..8f847e677081c8bde1dfbd12f719765a2a2078b1 100644 GIT binary patch delta 71648 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 CIGAAo diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json index 1eae21f53..4af90c3f4 100644 --- a/packages/i18n/strings/en.json +++ b/packages/i18n/strings/en.json @@ -844,6 +844,13 @@ "seo_description": "Tools for everything World of Tanks Blitz" }, + "docs": { + "patches": { + "name": "BlitzKit Changelogs", + "seo_description": "Changelogs for BlitzKit Discord bot and website" + } + }, + "tools": { "tankopedia": { "name": "Tankopedia", diff --git a/packages/website/package.json b/packages/website/package.json index 4e88aa0c1..188792c80 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@astrojs/partytown": "^2.1.4", + "@astrolib/seo": "^1.0.0-beta.8", "@blitzkit/core": "workspace:*", "@blitzkit/i18n": "workspace:*", "@nanostores/persistent": "^0.10.2", diff --git a/packages/website/src/components/Navbar.astro b/packages/website/src/components/Navbar.astro index 95a4d56a2..8d0693926 100644 --- a/packages/website/src/components/Navbar.astro +++ b/packages/website/src/components/Navbar.astro @@ -73,161 +73,161 @@ const strings = getStrings(locale); > - - - - BlitzKit + + + + + BlitzKit + { + isBranchNamed && ( + + {branchName} + + ) + } + + + + + + { - isBranchNamed && ( - - {branchName} - - ) + toolsFiltered.map((tool, index) => { + const unavailableOnBranch = tool.branches?.every( + (branch) => + branch !== assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH), + ); + const selected = Astro.url.pathname.includes(`/tools/${tool.id}`); + const toolStrings = + strings.website.tools[ + (tool.stringsId ?? + tool.id) as keyof typeof strings.website.tools + ]; + + if (unavailableOnBranch) return null; + + return ( + + {toolStrings.name} + + ); + }) } - - + + + + + + + + + + + + + + + + + + + + + { - toolsFiltered.map((tool, index) => { + toolsFiltered.map((tool) => { const unavailableOnBranch = tool.branches?.every( (branch) => branch !== assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH), ); - const selected = Astro.url.pathname.includes(`/tools/${tool.id}`); + + if (unavailableOnBranch) return null; + const toolStrings = strings.website.tools[ (tool.stringsId ?? tool.id) as keyof typeof strings.website.tools ]; - if (unavailableOnBranch) return null; - return ( - - {toolStrings.name} - + + + {toolStrings.name} + + + ); }) } - - - - - - - - - - - - - - - - - - - - - - - - - { - toolsFiltered.map((tool) => { - const unavailableOnBranch = tool.branches?.every( - (branch) => - branch !== assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH), - ); - - if (unavailableOnBranch) return null; - - const toolStrings = - strings.website.tools[ - (tool.stringsId ?? tool.id) as keyof typeof strings.website.tools - ]; - - return ( - - - - {toolStrings.name} - - - - ); - }) - } diff --git a/packages/website/src/components/ToolOpenGraph.astro b/packages/website/src/components/ToolOpenGraph.astro index 77b91e842..f53f7d548 100644 --- a/packages/website/src/components/ToolOpenGraph.astro +++ b/packages/website/src/components/ToolOpenGraph.astro @@ -1,4 +1,5 @@ --- +import { AstroSeo } from '@astrolib/seo'; import { imgur } from '@blitzkit/core'; import { type Tool } from '../constants/tools'; import { getStrings } from '../core/i18n/getStrings'; @@ -16,7 +17,16 @@ const toolStrings = ]; --- -{toolStrings.name} - - - + diff --git a/packages/website/src/pages/[...locale]/docs/[directory]/[document]/index.astro b/packages/website/src/pages/[...locale]/docs/[directory]/[document]/index.astro index b3ec6f8e3..47457dbc4 100644 --- a/packages/website/src/pages/[...locale]/docs/[directory]/[document]/index.astro +++ b/packages/website/src/pages/[...locale]/docs/[directory]/[document]/index.astro @@ -1,4 +1,5 @@ --- +import { AstroSeo } from '@astrolib/seo'; import type { GetStaticPaths } from 'astro'; import { readFile } from 'fs/promises'; import BaseLayout from '../../../../../layouts/BaseLayout.astro'; @@ -7,7 +8,6 @@ import { Page } from './_index'; export const getStaticPaths = (async () => { const parentPaths = parentGetStaticPaths(); - const ROOT = '../../../../../../../../docs/'; const files = import.meta.glob('../../../../../../../../docs/**/*.md', { eager: true, @@ -40,7 +40,18 @@ const { content } = Astro.props; const title = content.split('\n')[0].replace('# ', ''); --- -{title} + diff --git a/packages/website/src/pages/[...locale]/docs/patches/index.astro b/packages/website/src/pages/[...locale]/docs/patches/index.astro index b9521e432..02fc24d7c 100644 --- a/packages/website/src/pages/[...locale]/docs/patches/index.astro +++ b/packages/website/src/pages/[...locale]/docs/patches/index.astro @@ -1,15 +1,17 @@ --- +import { AstroSeo } from '@astrolib/seo'; import { MagicWandIcon, StarFilledIcon } from '@radix-ui/react-icons'; import { Flex, Heading, Link } from '@radix-ui/themes'; import { compareVersions } from 'compare-versions'; import { PageWrapper } from '../../../../components/PageWrapper'; +import { getStrings } from '../../../../core/i18n/getStrings'; import BaseLayout from '../../../../layouts/BaseLayout.astro'; export { getStaticPaths } from '../../index.astro'; // this can't be used in template literal :( const ROOT = '../../../../../../../docs/changelogs/'; - +const strings = getStrings(Astro.params.locale); const versions = Object.keys( import.meta.glob('../../../../../../../docs/changelogs/*.md', { eager: true, @@ -20,7 +22,18 @@ const versions = Object.keys( .reverse(); --- -BlitzKit Patches + diff --git a/packages/website/src/pages/[...locale]/index.astro b/packages/website/src/pages/[...locale]/index.astro index 910c4e5c5..fa472916e 100644 --- a/packages/website/src/pages/[...locale]/index.astro +++ b/packages/website/src/pages/[...locale]/index.astro @@ -44,36 +44,14 @@ export const getStaticPaths = (() => { diff --git a/packages/website/src/pages/[...locale]/tools/embed/[embed]/host/index.astro b/packages/website/src/pages/[...locale]/tools/embed/[embed]/host/index.astro index 19dbbcbde..8bf3f08a5 100644 --- a/packages/website/src/pages/[...locale]/tools/embed/[embed]/host/index.astro +++ b/packages/website/src/pages/[...locale]/tools/embed/[embed]/host/index.astro @@ -1,5 +1,4 @@ --- -import { capitalize } from 'lodash-es'; import EmbedLayout from '../../../../../../layouts/EmbedLayout.astro'; import type { getStaticPaths } from '../index.astro'; import { Page } from './_index'; @@ -7,8 +6,6 @@ import { Page } from './_index'; export { getStaticPaths } from '../index.astro'; --- -BlitzKit - {capitalize(Astro.params.embed)} embed - diff --git a/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro b/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro index 58103ddf6..c161789f6 100644 --- a/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro +++ b/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro @@ -1,4 +1,5 @@ --- +import { AstroSeo } from '@astrolib/seo'; import type { GetStaticPaths } from 'astro'; import { capitalize } from 'lodash-es'; import { embedConfigurations } from '../../../../../constants/embeds'; @@ -21,10 +22,24 @@ export const getStaticPaths = (() => { .flat(); }) satisfies GetStaticPaths; +const name = capitalize(Astro.params.embed); +const title = `BlitzKit - ${name} embed`; +const description = `BlitzKit ${name} embeds for streaming World of Tanks Blitz with extreme customization`; const { locale } = Astro.params; --- -BlitzKit - {capitalize(Astro.params.embed)} embed + diff --git a/packages/website/src/pages/[...locale]/tools/embed/[embed]/_index.tsx b/packages/website/src/pages/[...locale]/tools/embed/[embed]/_index.tsx index 74328579b..125f2a1a9 100644 --- a/packages/website/src/pages/[...locale]/tools/embed/[embed]/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/embed/[embed]/_index.tsx @@ -1,4 +1,3 @@ -import { imgur } from '@blitzkit/core'; import { CodeIcon, HeightIcon, @@ -63,7 +62,7 @@ function Content({ embed }: PageProps) { const embedStateStore = EmbedState.useStore(); const config = embedConfigurations[embed] as EmbedConfig; const [backgroundImage, setBackgroundImage] = useState( - imgur('SO13zur', { format: 'jpeg' }), + '/assets/images/backgrounds/embed-default.webp', ); const fileInput = useRef(); const { strings } = useLocale(); diff --git a/packages/website/src/pages/[...locale]/tools/embed/_index.tsx b/packages/website/src/pages/[...locale]/tools/embed/_index.tsx index 15a183f76..638ce1f98 100644 --- a/packages/website/src/pages/[...locale]/tools/embed/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/embed/_index.tsx @@ -1,4 +1,3 @@ -import { imgur, ImgurSize } from '@blitzkit/core'; import { Box, Flex, Link, Text } from '@radix-ui/themes'; import { PreviewWrapper } from '../../../../components/Embeds/PreviewWrapper'; import { LinkI18n } from '../../../../components/LinkI18n'; @@ -85,7 +84,8 @@ function Content() { overflow="hidden" position="relative" style={{ - backgroundImage: `url(${imgur('SO13zur', { format: 'jpeg', size: ImgurSize.SmallThumbnail })})`, + backgroundImage: + 'url(/assets/images/backgrounds/embed-default.webp)', backgroundSize: 'cover', backgroundPosition: 'center', }} From 6836cb327f4d81d5214f006a434afb1e6a0dc94f Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Sat, 5 Apr 2025 16:07:42 -0500 Subject: [PATCH 31/33] feat: more images --- .../assets/images/tools/blitz-analysis.webp | Bin 0 -> 23740 bytes .../assets/images/tools/blitz-insider.webp | Bin 0 -> 24896 bytes .../website/src/pages/[...locale]/index.astro | 8 ++++---- 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 packages/website/public/assets/images/tools/blitz-analysis.webp create mode 100644 packages/website/public/assets/images/tools/blitz-insider.webp diff --git a/packages/website/public/assets/images/tools/blitz-analysis.webp b/packages/website/public/assets/images/tools/blitz-analysis.webp new file mode 100644 index 0000000000000000000000000000000000000000..227a2b1f5ba748cd4c37f6a5788b0940400261d0 GIT binary patch literal 23740 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 Db2S9` literal 0 HcmV?d00001 diff --git a/packages/website/src/pages/[...locale]/index.astro b/packages/website/src/pages/[...locale]/index.astro index fa472916e..a15019fc0 100644 --- a/packages/website/src/pages/[...locale]/index.astro +++ b/packages/website/src/pages/[...locale]/index.astro @@ -144,16 +144,16 @@ export const getStaticPaths = (() => { From d77bd6a5f9faef2e03ea78163375d27c9f88e6e8 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Sat, 5 Apr 2025 16:15:55 -0500 Subject: [PATCH 32/33] feat: logs --- docs/changelogs/1.27.6.md | 23 +++++++++++++++++++++++ package.json | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 docs/changelogs/1.27.6.md diff --git a/docs/changelogs/1.27.6.md b/docs/changelogs/1.27.6.md new file mode 100644 index 000000000..03bc0b084 --- /dev/null +++ b/docs/changelogs/1.27.6.md @@ -0,0 +1,23 @@ +# BlitzKit 1.27.6 + +This update only affects the website. + +## Features + +- Added a promotional card for [the official Discord server](https://discord.gg/nDt7AjGJQH) to the homepage +- Added a better navbar + - The added spaces and padding helps add more room for error when clicking, especially on mobile + - The dropdown menu is now a lost smaller, disposing of the need to scroll at all +- Added shell filters to the tank search +- Reworked the filter buttons and their positions to allow for more space + +## Fixes + +- Moved most images from imgur to BlitzKit allowing for users in certain countries to load BlitzKit without getting blocked + +## Technical Features + +- Added Partytown to offload some workload off the main thread, allowing for a more responsive experience +- Reworked `robots.txt` to disallow indexing of BlitzKit variants +- Improved the SEO further for most pages +- Added a few compressor library to speed up load times diff --git a/package.json b/package.json index c07be3556..553d715f5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "blitzkit", "private": true, - "version": "1.27.5", + "version": "1.27.6", "description": "🎉 Tools for everything World of Tanks Blitz", "type": "module", "types": "./types.d.ts", From f90768d155398cec79e30b47973f8d081ae11513 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Sat, 5 Apr 2025 17:08:55 -0500 Subject: [PATCH 33/33] fix: env --- .github/workflows/website.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 5ec5db354..2db5d2ed9 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -28,6 +28,7 @@ env: GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} WOTB_GLOSSARY_DOMAIN: ${{ secrets.WOTB_GLOSSARY_DOMAIN }} WOTB_GLOSSARY_PATH: ${{ secrets.WOTB_GLOSSARY_PATH }} + PUBLIC_DISCORD_SERVER_ID: ${{ secrets.PUBLIC_DISCORD_SERVER_ID }} jobs: build: