plugin and hosted fixes

# Conflicts:
#	vue3/src/locales/de.json
This commit is contained in:
vabene1111
2025-09-08 08:31:01 +02:00
parent 44baa8322c
commit 6cedde7b2d
29 changed files with 92 additions and 12 deletions

View File

@@ -10,6 +10,7 @@
},
"dependencies": {
"@types/luxon": "^3.7.1",
"@types/sortablejs": "^1.15.8",
"@vueform/multiselect": "^2.6.11",
"@vueuse/core": "^13.6.0",
"@vueuse/router": "^13.6.0",
@@ -22,7 +23,6 @@
"vue-router": "^4.5.0",
"vue-simple-calendar": "7.1.0",
"vuedraggable": "^4.1.0",
"@types/sortablejs": "^1.15.8",
"vuetify": "^3.9.3"
},
"devDependencies": {
@@ -32,20 +32,21 @@
"@types/node": "^24.0.8",
"@vitejs/plugin-vue": "^6.0.0",
"@vue/tsconfig": "^0.7.0",
"esbuild-register": "^3.6.0",
"jsdom": "^26.1.0",
"typescript": "^5.8.3",
"vite": "6.3.5",
"vite-plugin-pwa": "^1.0.2",
"workbox-core": "^7.3.0",
"workbox-build": "^7.3.0",
"workbox-window": "^7.3.0",
"vite-plugin-vuetify": "^2.1.1",
"vue-tsc": "^2.2.8",
"workbox-background-sync": "^7.3.0",
"workbox-build": "^7.3.0",
"workbox-core": "^7.3.0",
"workbox-expiration": "^7.3.0",
"workbox-navigation-preload": "^7.3.0",
"workbox-precaching": "^7.3.0",
"workbox-routing": "^7.3.0",
"workbox-strategies": "^7.3.0",
"vite-plugin-vuetify": "^2.1.1",
"vue-tsc": "^2.2.8"
"workbox-window": "^7.3.0"
}
}

View File

@@ -152,6 +152,7 @@
"Log_Recipe_Cooking": "",
"Make_Header": "",
"Make_Ingredient": "",
"ManageSubscription": "",
"Manage_Books": "",
"Meal_Plan": "",
"Meal_Plan_Days": "",

View File

@@ -147,6 +147,7 @@
"Log_Recipe_Cooking": "Дневник на Рецепта за готвене",
"Make_Header": "Направете заглавие",
"Make_Ingredient": "Направете съставка",
"ManageSubscription": "",
"Manage_Books": "Управление на Книги",
"Meal_Plan": "План на хранене",
"Meal_Plan_Days": "Бъдещи планове за хранене",

View File

@@ -202,6 +202,7 @@
"Logo": "Logotip",
"Make_Header": "Establiu capçalera",
"Make_Ingredient": "Establiu ingredient",
"ManageSubscription": "",
"Manage_Books": "Gestioneu els llibres",
"Manage_Emails": "Administrar correus",
"Meal_Plan": "Pla d'àpats",

View File

@@ -200,6 +200,7 @@
"Logo": "Logo",
"Make_Header": "Použij jako nadpis",
"Make_Ingredient": "Použij jako ingredienci",
"ManageSubscription": "",
"Manage_Books": "Spravovat kuchařky",
"Manage_Emails": "Spravovat emaily",
"Meal_Plan": "Jídelníček",

View File

@@ -202,6 +202,7 @@
"Logo": "Logo",
"Make_Header": "Opret rubrik",
"Make_Ingredient": "Opret ingredient",
"ManageSubscription": "",
"Manage_Books": "Administrer bøger",
"Manage_Emails": "Håndter Emails",
"Meal_Plan": "Madplan",

View File

@@ -2,6 +2,7 @@
"AI": "AI",
"AIImportSubtitle": "Verwende AI um Fotos von Rezepten zu importieren.",
"API": "API",
"APIKey": "API Schlüssel",
"Summary": "Zusammenfassung",
"Structured": "Strukturiert",
"API_Browser": "API Browser",
@@ -284,7 +285,7 @@
"Logout": "Ausloggen",
"Make_Header": "In Überschrift wandeln",
"Make_Ingredient": "In Zutat umwandeln",
"ManageSubscription": "Tarfi verwalten",
"ManageSubscription": "Tarif verwalten",
"Manage_Books": "Bücher verwalten",
"Manage_Emails": "E-Mails verwalten",
"MealPlanHelp": "Ein Speiseplan ist ein Eintrag im Kalender zur Planung von Mahlzeiten. Er muss entweder ein Rezept oder einen Titel erhalten und kann mit der Einkaufsliste verknüpft werden. ",
@@ -303,6 +304,7 @@
"Miscellaneous": "Sonstige",
"MissingConversion": "Fehlende Umrechnung",
"MissingProperties": "Fehlende Eigenschaften",
"Model": "Modell",
"ModelSelectResultsHelp": "Für mehr Ergebnisse suchen",
"Monday": "Montag",
"Month": "Monat",
@@ -513,10 +515,12 @@
"Storage": "Externer Speicher",
"StorageHelp": "Externe Speicherorte an denen Rezepte als Dateien (Foto/PDF) abgelegt und mit Tandor syncronisiert werden können.",
"StoragePasswordTokenHelp": "Das hinterlegte Passwort/Token kann nicht angezeigt werden. Es wird nur aktualisiert wenn etwas neues in das Feld eingegeben wird. ",
"Structured": "Strukturiert",
"SubstituteOnHand": "Du hast eine Alternative vorrätig.",
"Substitutes": "Alternativen",
"Success": "Erfolgreich",
"SuccessClipboard": "Einkaufsliste wurde in die Zwischenablage kopiert",
"Summary": "Zusammenfassung",
"Sunday": "Sonntag",
"Supermarket": "Supermarkt",
"SupermarketCategoriesOnly": "Nur Supermarktkategorien",

View File

@@ -202,6 +202,7 @@
"Logo": "Λογότυπο",
"Make_Header": "Δημιουργία κεφαλίδας",
"Make_Ingredient": "Δημιουργία υλικού",
"ManageSubscription": "",
"Manage_Books": "Διαχείριση βιβλίων",
"Manage_Emails": "Διαχείριση email",
"Meal_Plan": "Πρόγραμμα γευμάτων",

View File

@@ -292,8 +292,6 @@
"Meal_Type_Required": "Meal type is required",
"Meal_Types": "Meal types",
"Merge": "Merge",
"Summary": "Summary",
"Structured": "Structured",
"MergeAutomateHelp": "Create an automation that replaces future objects of this type with the selected object.",
"Merge_Keyword": "Merge Keyword",
"Message": "Message",
@@ -301,6 +299,7 @@
"Miscellaneous": "Miscellaneous",
"MissingConversion": "Missing Conversion",
"MissingProperties": "Missing Properties",
"Model": "Model",
"ModelSelectResultsHelp": "Search for more results",
"Monday": "Monday",
"Month": "Month",
@@ -511,10 +510,12 @@
"Storage": "External Storage",
"StorageHelp": "External storage locations where recipe files (image/pdf) can be stored and synced with Tandoor.",
"StoragePasswordTokenHelp": "The stored password/token will never be displayed. It is only changed if something new is entered into the field. ",
"Structured": "Structured",
"SubstituteOnHand": "You have a substitute on hand.",
"Substitutes": "Substitutes",
"Success": "Success",
"SuccessClipboard": "Shopping list copied to clipboard",
"Summary": "Summary",
"Sunday": "Sunday",
"Supermarket": "Supermarket",
"SupermarketCategoriesOnly": "Supermarket Categories Only",

View File

@@ -196,6 +196,7 @@
"Logo": "Logo",
"Make_Header": "Valmista Otsikko",
"Make_Ingredient": "Valmista Ainesosa",
"ManageSubscription": "",
"Manage_Books": "Hallinnoi kirjoja",
"Manage_Emails": "Hallinnoi sähköposteja",
"Meal_Plan": "Ateriasuunnitelma",

View File

@@ -202,6 +202,7 @@
"Logo": "לוגו",
"Make_Header": "הפוך לכותרת",
"Make_Ingredient": "הפוך למרכיב",
"ManageSubscription": "",
"Manage_Books": "נהל ספרים",
"Manage_Emails": "נהל כתובות דואר אלקטרוני",
"Meal_Plan": "תוכנית ארוחה",

View File

@@ -202,6 +202,7 @@
"Logo": "Logotip",
"Make_Header": "Napravi zaglavlje",
"Make_Ingredient": "Napravi sastojak",
"ManageSubscription": "",
"Manage_Books": "Upravljaj knjigama",
"Manage_Emails": "Upravljanje e-poštom",
"Meal_Plan": "Plan obroka",

View File

@@ -183,6 +183,7 @@
"Log_Recipe_Cooking": "Főzés naplózása",
"Make_Header": "Átalakítás címsorra",
"Make_Ingredient": "Összetevő létrehozása",
"ManageSubscription": "",
"Manage_Books": "Könyvek kezelése",
"Manage_Emails": "Levelezés kezelése",
"Meal_Plan": "Menüterv",

View File

@@ -71,6 +71,7 @@
"Load_More": "",
"Log_Cooking": "Գրանցել եփելը",
"Log_Recipe_Cooking": "Գրանցել բաղադրատոմսի օգտագործում",
"ManageSubscription": "",
"Manage_Books": "Կարգավորել Գրքերը",
"Meal_Plan": "Ճաշացուցակ",
"Merge": "Միացնել",

View File

@@ -168,6 +168,7 @@
"Log_Recipe_Cooking": "Log Resep Memasak",
"Make_Header": "Buat Header",
"Make_Ingredient": "Buat bahan",
"ManageSubscription": "",
"Manage_Books": "Kelola Buku",
"Manage_Emails": "",
"Meal_Plan": "rencana makan",

View File

@@ -201,6 +201,7 @@
"Logo": "",
"Make_Header": "",
"Make_Ingredient": "",
"ManageSubscription": "",
"Manage_Books": "",
"Manage_Emails": "",
"Meal_Plan": "",

View File

@@ -185,6 +185,7 @@
"Log_Recipe_Cooking": "Užregistruoti recepto pagaminimą",
"Make_Header": "Padaryti antraštę",
"Make_Ingredient": "Padaryti ingredientą",
"ManageSubscription": "",
"Manage_Books": "Tvarkyti knygas",
"Manage_Emails": "",
"Meal_Plan": "Maisto planas",

View File

@@ -202,6 +202,7 @@
"Logo": "",
"Make_Header": "",
"Make_Ingredient": "",
"ManageSubscription": "",
"Manage_Books": "",
"Manage_Emails": "",
"Meal_Plan": "",

View File

@@ -192,6 +192,7 @@
"Log_Recipe_Cooking": "Logg oppskriftsbruk",
"Make_Header": "Bruk som overskrift",
"Make_Ingredient": "Bruk som ingrediens",
"ManageSubscription": "",
"Manage_Books": "Administrer bøker",
"Manage_Emails": "Administrer e-poster",
"Meal_Plan": "Måltidsplan",

View File

@@ -228,6 +228,7 @@
"Logo": "Logo",
"Make_Header": "Utwórz nagłówek",
"Make_Ingredient": "Utwórz składnik",
"ManageSubscription": "",
"Manage_Books": "Zarządzaj książkami",
"Manage_Emails": "Zarządzaj e-mailami",
"Meal_Plan": "Plan posiłków",

View File

@@ -159,6 +159,7 @@
"Log_Recipe_Cooking": "Registrar Receitas de Culinária",
"Make_Header": "Tornar cabeçalho",
"Make_Ingredient": "Fazer ingrediente",
"ManageSubscription": "",
"Manage_Books": "Gerenciar Livros",
"Meal_Plan": "Plano de Refeição",
"Meal_Plan_Days": "Planos de alimentação futuros",

View File

@@ -177,6 +177,7 @@
"Log_Recipe_Cooking": "Jurnalul rețetelor de pregătire",
"Make_Header": "Creare antet",
"Make_Ingredient": "Create ingredient",
"ManageSubscription": "",
"Manage_Books": "Gestionarea cărților",
"Manage_Emails": "Gestionarea e-mailurilor",
"Meal_Plan": "Plan de alimentare",

View File

@@ -239,6 +239,7 @@
"Logo": "Logga",
"Make_Header": "Skapa rubrik",
"Make_Ingredient": "Skapa ingrediens",
"ManageSubscription": "",
"Manage_Books": "Hantera böcker",
"Manage_Emails": "Hantera mejladresser",
"Meal_Plan": "Måltidsplanering",

View File

@@ -202,6 +202,7 @@
"Logo": "Logo",
"Make_Header": "Başlık Oluştur",
"Make_Ingredient": "Malzeme Oluştur",
"ManageSubscription": "",
"Manage_Books": "Kitapları Yönet",
"Manage_Emails": "E-postaları Yönet",
"Meal_Plan": "Yemek Planı",

View File

@@ -176,6 +176,7 @@
"Log_Recipe_Cooking": "Журнал приготування",
"Make_Header": "Створити Заголовок",
"Make_Ingredient": "Створити Інгрідієнт",
"ManageSubscription": "",
"Manage_Books": "Управління Книжкою",
"Meal_Plan": "План Харчування",
"Meal_Plan_Days": "Майбутній план харчування",

View File

@@ -202,6 +202,7 @@
"Logo": "徽标",
"Make_Header": "显示注意事项",
"Make_Ingredient": "制作食材",
"ManageSubscription": "",
"Manage_Books": "烹饪手册管理",
"Manage_Emails": "管理电子邮件",
"Meal_Plan": "用餐计划",

View File

@@ -12,11 +12,17 @@ export type TandoorPlugin = {
bottomNavigation: any[],
userNavigation: any[],
buildInputs?: string[],
databasePageComponent?: Component,
disabled?: boolean
}
export type PluginModule = {
plugin: TandoorPlugin
}
const pluginModules = import.meta.glob('@/plugins/*/plugin.ts', { eager: true })
export let TANDOOR_PLUGINS = [] as TandoorPlugin[]
Object.values(pluginModules).forEach(module => {

View File

@@ -1,12 +1,20 @@
import {fileURLToPath, URL} from 'node:url'
import {fileURLToPath, pathToFileURL, URL} from 'node:url'
import {readdirSync} from "fs"
import {resolve, join} from "path"
import 'esbuild-register/dist/node'
import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import vuetify, {transformAssetUrls} from 'vite-plugin-vuetify'
import {VitePWA} from "vite-plugin-pwa";
import {PluginModule} from "./src/types/Plugins";
import {readFileSync} from "node:fs";
// https://vitejs.dev/config/
export default defineConfig(({command, mode, isSsrBuild, isPreview}) => {
export default defineConfig(async ({command, mode, isSsrBuild, isPreview}) => {
const buildInputs = await collectBuildInputs()
return {
base: mode == 'development' ? '/static/vue3/' : './',
plugins: [
@@ -40,7 +48,7 @@ export default defineConfig(({command, mode, isSsrBuild, isPreview}) => {
// overwrite default .html entry
input: [
'src/apps/tandoor/main.ts',
],
].concat(buildInputs),
},
},
server: {
@@ -49,3 +57,33 @@ export default defineConfig(({command, mode, isSsrBuild, isPreview}) => {
}
}
})
/**
* function to load plugin configs and find additional build inputs
*/
async function collectBuildInputs() {
const pluginsDir = resolve(__dirname, "src/plugins")
const buildInputs: string[] = []
for (const dir of readdirSync(pluginsDir, {withFileTypes: true})) {
if (!dir.isDirectory() && !dir.isSymbolicLink()) continue
const pluginPath = join(pluginsDir, dir.name, "plugin.ts")
try {
const code = readFileSync(pluginPath, "utf-8")
// Regex to capture buildInputs: [ ... ]
const match = code.match(/buildInputs\s*:\s*(\[[^\]]*\])/s)
if (match) {
const arr = [eval][0](match[1]) as string[]
buildInputs.push(...arr)
}
} catch (err) {
console.warn(`Failed to parse plugin at ${pluginPath}:`, err)
}
}
console.log('Tandoor Plugin build inputs: ', buildInputs)
return buildInputs
}

View File

@@ -1904,6 +1904,13 @@ es-to-primitive@^1.3.0:
is-date-object "^1.0.5"
is-symbol "^1.0.4"
esbuild-register@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.6.0.tgz#cf270cfa677baebbc0010ac024b823cbf723a36d"
integrity sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==
dependencies:
debug "^4.3.4"
esbuild@^0.25.0:
version "0.25.5"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.5.tgz#71075054993fdfae76c66586f9b9c1f8d7edd430"