From 13282988e8fce613f1c8172dcf3fb0d3707e08e4 Mon Sep 17 00:00:00 2001 From: diced Date: Sun, 5 Apr 2026 19:06:02 -0700 Subject: [PATCH] feat: instantaneous thumb generation --- .../migration.sql | 2 + prisma/schema.prisma | 7 +-- .../pages/serverSettings/parts/Features.tsx | 32 ++++++++---- .../pages/serverSettings/parts/Tasks.tsx | 4 +- src/lib/config/read/db.ts | 1 + src/lib/config/read/env.ts | 1 + src/lib/config/validate.ts | 1 + src/lib/tasks/index.ts | 4 ++ src/lib/tasks/run/thumbnails.ts | 51 +++++++++++-------- .../routes/api/server/settings/index.ts | 11 ++-- src/server/routes/api/upload/index.ts | 14 +++++ 11 files changed, 88 insertions(+), 40 deletions(-) create mode 100644 prisma/migrations/20260406015245_thumbnails_instantaneous/migration.sql diff --git a/prisma/migrations/20260406015245_thumbnails_instantaneous/migration.sql b/prisma/migrations/20260406015245_thumbnails_instantaneous/migration.sql new file mode 100644 index 00000000..52446814 --- /dev/null +++ b/prisma/migrations/20260406015245_thumbnails_instantaneous/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "public"."Zipline" ADD COLUMN "featuresThumbnailsInstantaneous" BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6d0e0e6f..198a60da 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -58,9 +58,10 @@ model Zipline { featuresOauthRegistration Boolean @default(false) featuresDeleteOnMaxViews Boolean @default(true) - featuresThumbnailsEnabled Boolean @default(true) - featuresThumbnailsNumberThreads Int @default(4) - featuresThumbnailsFormat String @default("jpg") + featuresThumbnailsEnabled Boolean @default(true) + featuresThumbnailsNumberThreads Int @default(4) + featuresThumbnailsFormat String @default("jpg") + featuresThumbnailsInstantaneous Boolean @default(false) featuresMetricsEnabled Boolean @default(true) featuresMetricsAdminOnly Boolean @default(false) diff --git a/src/components/pages/serverSettings/parts/Features.tsx b/src/components/pages/serverSettings/parts/Features.tsx index 8bef509d..cc90b31b 100644 --- a/src/components/pages/serverSettings/parts/Features.tsx +++ b/src/components/pages/serverSettings/parts/Features.tsx @@ -2,11 +2,13 @@ import { Response } from '@/lib/api/response'; import { Anchor, Button, + Divider, LoadingOverlay, NumberInput, Paper, Select, SimpleGrid, + Stack, Switch, TextInput, Title, @@ -35,6 +37,7 @@ export default function Features({ featuresThumbnailsEnabled: true, featuresThumbnailsNumberThreads: 4, featuresThumbnailsFormat: 'jpg', + featuresThumbnailsInstantaneous: false, featuresMetricsEnabled: true, featuresMetricsAdminOnly: false, featuresMetricsShowUserSpecific: true, @@ -61,6 +64,7 @@ export default function Features({ featuresThumbnailsEnabled: data.settings.featuresThumbnailsEnabled ?? true, featuresThumbnailsNumberThreads: data.settings.featuresThumbnailsNumberThreads ?? 4, featuresThumbnailsFormat: data.settings.featuresThumbnailsFormat ?? 'jpg', + featuresThumbnailsInstantaneous: data.settings.featuresThumbnailsInstantaneous ?? false, featuresMetricsEnabled: data.settings.featuresMetricsEnabled ?? true, featuresMetricsAdminOnly: data.settings.featuresMetricsAdminOnly ?? false, featuresMetricsShowUserSpecific: data.settings.featuresMetricsShowUserSpecific ?? true, @@ -76,7 +80,7 @@ export default function Features({ Features
- + -
- + + + + + + + -
+ + - +