All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m16s
Für jede Whitelist-Domain wird das Favicon jetzt einmalig geladen und im image-Verzeichnis abgelegt. SearchFilter zeigt das Icon neben dem Domain-Namen im Filter-Dropdown. - Migration 009: allowed_domain.favicon_path (NULL = noch nicht geladen). - Neues Modul $lib/server/domains/favicons.ts: fetchAndStoreFavicon(domain, imageDir) + ensureFavicons(db, imageDir) für Bulk-Nachzug; 8 parallele Worker mit 3s-Timeout. - Reihenfolge: erst /favicon.ico der Domain, Fallback Google-Service. - GET /api/domains zieht fehlende Favicons auf Abruf nach; POST /api/domains lädt direkt im selben Call. - .ico + .svg jetzt in der /images/[filename]-Route erlaubt. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
46 lines
903 B
TypeScript
46 lines
903 B
TypeScript
export type Ingredient = {
|
|
position: number;
|
|
quantity: number | null;
|
|
unit: string | null;
|
|
name: string;
|
|
note: string | null;
|
|
raw_text: string;
|
|
};
|
|
|
|
export type Step = {
|
|
position: number;
|
|
text: string;
|
|
};
|
|
|
|
export type Recipe = {
|
|
id: number | null;
|
|
title: string;
|
|
description: string | null;
|
|
source_url: string | null;
|
|
source_domain: string | null;
|
|
image_path: string | null;
|
|
servings_default: number | null;
|
|
servings_unit: string | null;
|
|
prep_time_min: number | null;
|
|
cook_time_min: number | null;
|
|
total_time_min: number | null;
|
|
cuisine: string | null;
|
|
category: string | null;
|
|
ingredients: Ingredient[];
|
|
steps: Step[];
|
|
tags: string[];
|
|
};
|
|
|
|
export type Profile = {
|
|
id: number;
|
|
name: string;
|
|
avatar_emoji: string | null;
|
|
};
|
|
|
|
export type AllowedDomain = {
|
|
id: number;
|
|
domain: string;
|
|
display_name: string | null;
|
|
favicon_path: string | null;
|
|
};
|