From e078d59812f736768158013e468c8cc6698b41b7 Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Mon, 30 Mar 2026 13:38:34 +0100 Subject: [PATCH 1/7] fix: admins can't see author buttons --- src/components/mii/author-buttons.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/mii/author-buttons.tsx b/src/components/mii/author-buttons.tsx index a237ddd..1a9414b 100644 --- a/src/components/mii/author-buttons.tsx +++ b/src/components/mii/author-buttons.tsx @@ -22,7 +22,7 @@ interface Props { export default function AuthorButtons({ mii }: Props) { const session = useSession(); - if (!session.data || Number(session.data.user?.id) !== mii.userId || Number(session.data.user?.id) !== Number(process.env.NEXT_PUBLIC_ADMIN_USER_ID)) + if (!session.data || (Number(session.data.user?.id) !== mii.userId && Number(session.data.user?.id) !== Number(process.env.NEXT_PUBLIC_ADMIN_USER_ID))) return null; return ( From e47914f8738e07d5537b0a36e5c9e52f49665c92 Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Mon, 30 Mar 2026 13:54:20 +0100 Subject: [PATCH 2/7] fix: resize custom images --- src/app/api/mii/[id]/edit/route.ts | 2 +- src/app/api/submit/route.ts | 2 +- src/components/mii/list/index.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/api/mii/[id]/edit/route.ts b/src/app/api/mii/[id]/edit/route.ts index e27d251..cb91818 100644 --- a/src/app/api/mii/[id]/edit/route.ts +++ b/src/app/api/mii/[id]/edit/route.ts @@ -163,7 +163,7 @@ export async function PATCH(request: NextRequest, { params }: { params: Promise< await Promise.all( images.map(async (image, index) => { const buffer = Buffer.from(await image.arrayBuffer()); - const pngBuffer = await sharp(buffer).png({ quality: 85 }).toBuffer(); + const pngBuffer = await sharp(buffer).resize({ height: 800, fit: "inside", withoutEnlargement: true }).png({ quality: 85 }).toBuffer(); const fileLocation = path.join(miiUploadsDirectory, `image${index}.png`); await fs.writeFile(fileLocation, pngBuffer); diff --git a/src/app/api/submit/route.ts b/src/app/api/submit/route.ts index 136477f..dc07a9e 100644 --- a/src/app/api/submit/route.ts +++ b/src/app/api/submit/route.ts @@ -313,7 +313,7 @@ export async function POST(request: NextRequest) { await Promise.all( customImages.map(async (image, index) => { const buffer = Buffer.from(await image.arrayBuffer()); - const pngBuffer = await sharp(buffer).png({ quality: 85 }).toBuffer(); + const pngBuffer = await sharp(buffer).resize({ height: 800, fit: "inside", withoutEnlargement: true }).png({ quality: 85 }).toBuffer(); const fileLocation = path.join(miiUploadsDirectory, `image${index}.png`); await fs.writeFile(fileLocation, pngBuffer); diff --git a/src/components/mii/list/index.tsx b/src/components/mii/list/index.tsx index 0a9a60e..283762a 100644 --- a/src/components/mii/list/index.tsx +++ b/src/components/mii/list/index.tsx @@ -189,7 +189,7 @@ export default async function MiiList({ searchParams, userId, inLikesPage }: Pro - + ); From c1ce38f594a1f2eae7fb31bc0e8b5d53e1be7eb3 Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Mon, 30 Mar 2026 14:07:49 +0100 Subject: [PATCH 3/7] fix: images breaking? --- src/app/mii/[id]/image/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/mii/[id]/image/route.ts b/src/app/mii/[id]/image/route.ts index 406991e..6d23d95 100644 --- a/src/app/mii/[id]/image/route.ts +++ b/src/app/mii/[id]/image/route.ts @@ -110,6 +110,6 @@ export async function GET(request: NextRequest, { params }: { params: Promise<{ return rateLimit.sendResponse(buffer, 200, { "Content-Type": "image/png", "X-Robots-Tag": "noindex, noimageindex, nofollow", - "Cache-Control": "no-store", + "Cache-Control": "public, max-age=31536000, immutable", }); } From 1805d21b12e8055f964f35d89f8d29920290d50e Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Mon, 30 Mar 2026 14:13:11 +0100 Subject: [PATCH 4/7] fix: temp fix for c1ce38f5 --- src/app/mii/[id]/image/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/mii/[id]/image/route.ts b/src/app/mii/[id]/image/route.ts index 6d23d95..1dd6b05 100644 --- a/src/app/mii/[id]/image/route.ts +++ b/src/app/mii/[id]/image/route.ts @@ -19,7 +19,7 @@ const searchParamsSchema = z.object({ }); export async function GET(request: NextRequest, { params }: { params: Promise<{ id: string }> }) { - const rateLimit = new RateLimit(request, 200, "/mii/image"); + const rateLimit = new RateLimit(request, 20000, "/mii/image"); const check = await rateLimit.handle(); if (check) return check; From c4d01fa8eeeb14c75faef46281260739a882fe2d Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Mon, 30 Mar 2026 18:30:03 +0100 Subject: [PATCH 5/7] feat: show controversial miis on profiles by default --- src/components/mii/list/filter-menu.tsx | 5 --- src/components/mii/list/index.tsx | 8 +---- src/components/mii/list/other-filters.tsx | 33 +++++++++++++------ .../submit-form/mii-editor/tabs/misc.tsx | 2 +- src/lib/schemas.ts | 2 +- 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/src/components/mii/list/filter-menu.tsx b/src/components/mii/list/filter-menu.tsx index 8778bd6..3081737 100644 --- a/src/components/mii/list/filter-menu.tsx +++ b/src/components/mii/list/filter-menu.tsx @@ -128,11 +128,6 @@ export default function FilterMenu() { )} -
-
- Other -
-
)} diff --git a/src/components/mii/list/index.tsx b/src/components/mii/list/index.tsx index 283762a..6ac9a1a 100644 --- a/src/components/mii/list/index.tsx +++ b/src/components/mii/list/index.tsx @@ -1,7 +1,4 @@ -import Link from "next/link"; - import { Prisma } from "@prisma/client"; -import { Icon } from "@iconify/react"; import crypto from "crypto"; import seedrandom from "seedrandom"; @@ -11,9 +8,6 @@ import { auth } from "@/lib/auth"; import { prisma } from "@/lib/prisma"; import SortSelect from "./sort-select"; -import Carousel from "../../carousel"; -import LikeButton from "../../like-button"; -import DeleteMiiButton from "../delete-mii-button"; import Pagination from "./pagination"; import FilterMenu from "./filter-menu"; import MiiGrid from "./mii-grid"; @@ -61,7 +55,7 @@ export default async function MiiList({ searchParams, userId, inLikesPage }: Pro // Makeup ...(makeup && { makeup: { equals: makeup } }), // Quarantined - ...(!quarantined && { quarantined: false }), + ...(!quarantined && !userId && { quarantined: false }), // Profiles ...(userId && { userId }), }; diff --git a/src/components/mii/list/other-filters.tsx b/src/components/mii/list/other-filters.tsx index 6ccec92..fac98b2 100644 --- a/src/components/mii/list/other-filters.tsx +++ b/src/components/mii/list/other-filters.tsx @@ -1,13 +1,13 @@ "use client"; -import { Icon } from "@iconify/react"; import { MiiPlatform } from "@prisma/client"; -import { useRouter, useSearchParams } from "next/navigation"; +import { usePathname, useRouter, useSearchParams } from "next/navigation"; import { ChangeEvent, useState, useTransition } from "react"; export default function OtherFilters() { const router = useRouter(); const searchParams = useSearchParams(); + const pathname = usePathname(); const [, startTransition] = useTransition(); const platform = (searchParams.get("platform") as MiiPlatform) || undefined; @@ -48,22 +48,35 @@ export default function OtherFilters() { }); }; + const showAllowCopying = platform !== "SWITCH"; + const showQuarantined = !pathname.startsWith("/profile"); + + if (!showAllowCopying && !showQuarantined) return null; + return ( <> - {platform === "THREE_DS" && ( -
+
+
+ Other +
+
+ + {showAllowCopying && ( +
)} -
- - -
+ {showQuarantined && ( +
+ + +
+ )} ); } diff --git a/src/components/submit-form/mii-editor/tabs/misc.tsx b/src/components/submit-form/mii-editor/tabs/misc.tsx index 34c6e70..caa02bd 100644 --- a/src/components/submit-form/mii-editor/tabs/misc.tsx +++ b/src/components/submit-form/mii-editor/tabs/misc.tsx @@ -181,7 +181,7 @@ export default function HeadTab({ instructions }: Props) { type="number" id="age" min={1} - max={100} + max={1000} className="pill input text-sm py-1! px-3! w-full" value={birthday.age ?? undefined} onChange={(e) => { diff --git a/src/lib/schemas.ts b/src/lib/schemas.ts index 6260162..5e4ae4e 100644 --- a/src/lib/schemas.ts +++ b/src/lib/schemas.ts @@ -288,7 +288,7 @@ export const switchMiiInstructionsSchema = z .object({ day: z.number().int().min(1).max(31).optional(), month: z.number().int().min(1).max(12).optional(), - age: z.number().int().min(1).max(100).optional(), + age: z.number().int().min(1).max(1000).optional(), dontAge: z.boolean().optional(), }) .optional(), From b01dd799dcc0d80ea611eae64568f8047b7f23d3 Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Mon, 30 Mar 2026 19:27:13 +0100 Subject: [PATCH 6/7] refactor: rename makeup to face paint --- src/components/mii/list/filter-menu.tsx | 2 +- src/components/mii/list/makeup-select.tsx | 12 ++++++------ src/components/submit-form/edit-form.tsx | 14 +++++++------- src/components/submit-form/index.tsx | 14 +++++++------- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/components/mii/list/filter-menu.tsx b/src/components/mii/list/filter-menu.tsx index 3081737..eb17a72 100644 --- a/src/components/mii/list/filter-menu.tsx +++ b/src/components/mii/list/filter-menu.tsx @@ -121,7 +121,7 @@ export default function FilterMenu() { <>

- Makeup + Face Paint
diff --git a/src/components/mii/list/makeup-select.tsx b/src/components/mii/list/makeup-select.tsx index 80ae9ee..53c210a 100644 --- a/src/components/mii/list/makeup-select.tsx +++ b/src/components/mii/list/makeup-select.tsx @@ -35,39 +35,39 @@ export default function MakeupSelect() { {/* Full Makeup */} {/* Partial Makeup */} {/* No Makeup */}
diff --git a/src/components/submit-form/edit-form.tsx b/src/components/submit-form/edit-form.tsx index 15cf51c..71794e3 100644 --- a/src/components/submit-form/edit-form.tsx +++ b/src/components/submit-form/edit-form.tsx @@ -268,7 +268,7 @@ export default function EditForm({ mii, likes }: Props) { <>
@@ -276,8 +276,8 @@ export default function EditForm({ mii, likes }: Props) {