From e164d515744e4ae5985df8f0b9c0c68c32e517f1 Mon Sep 17 00:00:00 2001 From: opencode Date: Wed, 5 Aug 2026 07:40:47 +0200 Subject: [PATCH] feat: compare limit 9, format-aware import placeholder, help links - Raise compare limit from 8 to 9 (server + client, toast on overflow) - Make import textarea placeholder match selected format (CSV/JSON/YAML/auto) - Add GuideHelp links to admin create/edit user dialogs and tool import dialog --- artifacts/api-server/src/routes/tools.ts | 4 +- .../src/components/tool-import-dialog.tsx | 15 +- artifacts/toolrate/src/i18n/locales/de.json | 5 + artifacts/toolrate/src/i18n/locales/en.json | 5 + artifacts/toolrate/src/pages/admin.tsx | 7 +- artifacts/toolrate/src/pages/tools-browse.tsx | 11 +- docs/releases/v0.9.1.de.md | 27 + docs/releases/v0.9.1.en.md | 27 + .../v0.9.1/handbook/administration.de.md | 104 + .../v0.9.1/handbook/administration.en.md | 104 + docs/releases/v0.9.1/handbook/analytics.de.md | 29 + docs/releases/v0.9.1/handbook/analytics.en.md | 29 + docs/releases/v0.9.1/handbook/bewerten.de.md | 39 + docs/releases/v0.9.1/handbook/bewerten.en.md | 39 + .../v0.9.1/handbook/datenmodell.de.md | 70 + .../v0.9.1/handbook/datenmodell.en.md | 70 + .../v0.9.1/handbook/getting-started.de.md | 53 + .../v0.9.1/handbook/getting-started.en.md | 53 + docs/releases/v0.9.1/handbook/index.de.md | 53 + docs/releases/v0.9.1/handbook/index.en.md | 52 + docs/releases/v0.9.1/handbook/index.json | 138 + docs/releases/v0.9.1/handbook/konto.de.md | 53 + docs/releases/v0.9.1/handbook/konto.en.md | 52 + docs/releases/v0.9.1/handbook/kosten.de.md | 35 + docs/releases/v0.9.1/handbook/kosten.en.md | 35 + .../releases/v0.9.1/handbook/papierkorb.de.md | 41 + .../releases/v0.9.1/handbook/papierkorb.en.md | 40 + docs/releases/v0.9.1/handbook/plaene.de.md | 42 + docs/releases/v0.9.1/handbook/plaene.en.md | 42 + docs/releases/v0.9.1/handbook/redundanz.de.md | 38 + docs/releases/v0.9.1/handbook/redundanz.en.md | 38 + docs/releases/v0.9.1/handbook/tastatur.de.md | 36 + docs/releases/v0.9.1/handbook/tastatur.en.md | 36 + .../v0.9.1/handbook/tool-anlegen.de.md | 46 + .../v0.9.1/handbook/tool-anlegen.en.md | 46 + .../v0.9.1/handbook/tool-bearbeiten.de.md | 33 + .../v0.9.1/handbook/tool-bearbeiten.en.md | 32 + .../v0.9.1/handbook/tools-finden.de.md | 67 + .../v0.9.1/handbook/tools-finden.en.md | 66 + .../v0.9.1/handbook/vergleichen.de.md | 42 + .../v0.9.1/handbook/vergleichen.en.md | 42 + docs/releases/v0.9.1/handbook/watchlist.de.md | 34 + docs/releases/v0.9.1/handbook/watchlist.en.md | 33 + docs/releases/v0.9.1/reference.json | 2854 +++++++++++++++++ docs/releases/v0.9.2.de.md | 28 + docs/releases/v0.9.2.en.md | 27 + .../v0.9.2/handbook/administration.de.md | 104 + .../v0.9.2/handbook/administration.en.md | 104 + docs/releases/v0.9.2/handbook/analytics.de.md | 29 + docs/releases/v0.9.2/handbook/analytics.en.md | 29 + docs/releases/v0.9.2/handbook/bewerten.de.md | 39 + docs/releases/v0.9.2/handbook/bewerten.en.md | 39 + .../v0.9.2/handbook/datenmodell.de.md | 70 + .../v0.9.2/handbook/datenmodell.en.md | 70 + .../v0.9.2/handbook/getting-started.de.md | 53 + .../v0.9.2/handbook/getting-started.en.md | 53 + docs/releases/v0.9.2/handbook/index.de.md | 53 + docs/releases/v0.9.2/handbook/index.en.md | 52 + docs/releases/v0.9.2/handbook/index.json | 138 + docs/releases/v0.9.2/handbook/konto.de.md | 53 + docs/releases/v0.9.2/handbook/konto.en.md | 52 + docs/releases/v0.9.2/handbook/kosten.de.md | 35 + docs/releases/v0.9.2/handbook/kosten.en.md | 35 + .../releases/v0.9.2/handbook/papierkorb.de.md | 41 + .../releases/v0.9.2/handbook/papierkorb.en.md | 40 + docs/releases/v0.9.2/handbook/plaene.de.md | 42 + docs/releases/v0.9.2/handbook/plaene.en.md | 42 + docs/releases/v0.9.2/handbook/redundanz.de.md | 38 + docs/releases/v0.9.2/handbook/redundanz.en.md | 38 + docs/releases/v0.9.2/handbook/tastatur.de.md | 36 + docs/releases/v0.9.2/handbook/tastatur.en.md | 36 + .../v0.9.2/handbook/tool-anlegen.de.md | 46 + .../v0.9.2/handbook/tool-anlegen.en.md | 46 + .../v0.9.2/handbook/tool-bearbeiten.de.md | 33 + .../v0.9.2/handbook/tool-bearbeiten.en.md | 32 + .../v0.9.2/handbook/tools-finden.de.md | 67 + .../v0.9.2/handbook/tools-finden.en.md | 66 + .../v0.9.2/handbook/vergleichen.de.md | 42 + .../v0.9.2/handbook/vergleichen.en.md | 42 + docs/releases/v0.9.2/handbook/watchlist.de.md | 34 + docs/releases/v0.9.2/handbook/watchlist.en.md | 33 + docs/releases/v0.9.2/reference.json | 2854 +++++++++++++++++ 82 files changed, 9381 insertions(+), 7 deletions(-) create mode 100644 docs/releases/v0.9.1.de.md create mode 100644 docs/releases/v0.9.1.en.md create mode 100644 docs/releases/v0.9.1/handbook/administration.de.md create mode 100644 docs/releases/v0.9.1/handbook/administration.en.md create mode 100644 docs/releases/v0.9.1/handbook/analytics.de.md create mode 100644 docs/releases/v0.9.1/handbook/analytics.en.md create mode 100644 docs/releases/v0.9.1/handbook/bewerten.de.md create mode 100644 docs/releases/v0.9.1/handbook/bewerten.en.md create mode 100644 docs/releases/v0.9.1/handbook/datenmodell.de.md create mode 100644 docs/releases/v0.9.1/handbook/datenmodell.en.md create mode 100644 docs/releases/v0.9.1/handbook/getting-started.de.md create mode 100644 docs/releases/v0.9.1/handbook/getting-started.en.md create mode 100644 docs/releases/v0.9.1/handbook/index.de.md create mode 100644 docs/releases/v0.9.1/handbook/index.en.md create mode 100644 docs/releases/v0.9.1/handbook/index.json create mode 100644 docs/releases/v0.9.1/handbook/konto.de.md create mode 100644 docs/releases/v0.9.1/handbook/konto.en.md create mode 100644 docs/releases/v0.9.1/handbook/kosten.de.md create mode 100644 docs/releases/v0.9.1/handbook/kosten.en.md create mode 100644 docs/releases/v0.9.1/handbook/papierkorb.de.md create mode 100644 docs/releases/v0.9.1/handbook/papierkorb.en.md create mode 100644 docs/releases/v0.9.1/handbook/plaene.de.md create mode 100644 docs/releases/v0.9.1/handbook/plaene.en.md create mode 100644 docs/releases/v0.9.1/handbook/redundanz.de.md create mode 100644 docs/releases/v0.9.1/handbook/redundanz.en.md create mode 100644 docs/releases/v0.9.1/handbook/tastatur.de.md create mode 100644 docs/releases/v0.9.1/handbook/tastatur.en.md create mode 100644 docs/releases/v0.9.1/handbook/tool-anlegen.de.md create mode 100644 docs/releases/v0.9.1/handbook/tool-anlegen.en.md create mode 100644 docs/releases/v0.9.1/handbook/tool-bearbeiten.de.md create mode 100644 docs/releases/v0.9.1/handbook/tool-bearbeiten.en.md create mode 100644 docs/releases/v0.9.1/handbook/tools-finden.de.md create mode 100644 docs/releases/v0.9.1/handbook/tools-finden.en.md create mode 100644 docs/releases/v0.9.1/handbook/vergleichen.de.md create mode 100644 docs/releases/v0.9.1/handbook/vergleichen.en.md create mode 100644 docs/releases/v0.9.1/handbook/watchlist.de.md create mode 100644 docs/releases/v0.9.1/handbook/watchlist.en.md create mode 100644 docs/releases/v0.9.1/reference.json create mode 100644 docs/releases/v0.9.2.de.md create mode 100644 docs/releases/v0.9.2.en.md create mode 100644 docs/releases/v0.9.2/handbook/administration.de.md create mode 100644 docs/releases/v0.9.2/handbook/administration.en.md create mode 100644 docs/releases/v0.9.2/handbook/analytics.de.md create mode 100644 docs/releases/v0.9.2/handbook/analytics.en.md create mode 100644 docs/releases/v0.9.2/handbook/bewerten.de.md create mode 100644 docs/releases/v0.9.2/handbook/bewerten.en.md create mode 100644 docs/releases/v0.9.2/handbook/datenmodell.de.md create mode 100644 docs/releases/v0.9.2/handbook/datenmodell.en.md create mode 100644 docs/releases/v0.9.2/handbook/getting-started.de.md create mode 100644 docs/releases/v0.9.2/handbook/getting-started.en.md create mode 100644 docs/releases/v0.9.2/handbook/index.de.md create mode 100644 docs/releases/v0.9.2/handbook/index.en.md create mode 100644 docs/releases/v0.9.2/handbook/index.json create mode 100644 docs/releases/v0.9.2/handbook/konto.de.md create mode 100644 docs/releases/v0.9.2/handbook/konto.en.md create mode 100644 docs/releases/v0.9.2/handbook/kosten.de.md create mode 100644 docs/releases/v0.9.2/handbook/kosten.en.md create mode 100644 docs/releases/v0.9.2/handbook/papierkorb.de.md create mode 100644 docs/releases/v0.9.2/handbook/papierkorb.en.md create mode 100644 docs/releases/v0.9.2/handbook/plaene.de.md create mode 100644 docs/releases/v0.9.2/handbook/plaene.en.md create mode 100644 docs/releases/v0.9.2/handbook/redundanz.de.md create mode 100644 docs/releases/v0.9.2/handbook/redundanz.en.md create mode 100644 docs/releases/v0.9.2/handbook/tastatur.de.md create mode 100644 docs/releases/v0.9.2/handbook/tastatur.en.md create mode 100644 docs/releases/v0.9.2/handbook/tool-anlegen.de.md create mode 100644 docs/releases/v0.9.2/handbook/tool-anlegen.en.md create mode 100644 docs/releases/v0.9.2/handbook/tool-bearbeiten.de.md create mode 100644 docs/releases/v0.9.2/handbook/tool-bearbeiten.en.md create mode 100644 docs/releases/v0.9.2/handbook/tools-finden.de.md create mode 100644 docs/releases/v0.9.2/handbook/tools-finden.en.md create mode 100644 docs/releases/v0.9.2/handbook/vergleichen.de.md create mode 100644 docs/releases/v0.9.2/handbook/vergleichen.en.md create mode 100644 docs/releases/v0.9.2/handbook/watchlist.de.md create mode 100644 docs/releases/v0.9.2/handbook/watchlist.en.md create mode 100644 docs/releases/v0.9.2/reference.json diff --git a/artifacts/api-server/src/routes/tools.ts b/artifacts/api-server/src/routes/tools.ts index 3758811..3c7134c 100644 --- a/artifacts/api-server/src/routes/tools.ts +++ b/artifacts/api-server/src/routes/tools.ts @@ -268,8 +268,8 @@ router.get("/compare", requireFeature("compare"), async (req, res): Promise 8) { - res.status(400).json({ error: "Maximum of 8 tools can be compared" }); + if (ids.length > 9) { + res.status(400).json({ error: "Maximum of 9 tools can be compared" }); return; } const tools = await db.select().from(toolsTable).where(and(isNull(toolsTable.deletedAt), inArray(toolsTable.id, ids))); diff --git a/artifacts/toolrate/src/components/tool-import-dialog.tsx b/artifacts/toolrate/src/components/tool-import-dialog.tsx index b441872..2044e6f 100644 --- a/artifacts/toolrate/src/components/tool-import-dialog.tsx +++ b/artifacts/toolrate/src/components/tool-import-dialog.tsx @@ -7,6 +7,7 @@ import { Textarea } from "@/components/ui/textarea"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Label } from "@/components/ui/label"; +import { GuideHelp } from "@/components/guide-help"; import { Upload, FileUp, CheckCircle2, AlertCircle } from "lucide-react"; type Format = "auto" | "csv" | "json" | "yaml"; @@ -62,14 +63,24 @@ export function ToolImportDialog({ const canSubmit = data.trim().length > 0 && !importTools.isPending; + const placeholder = + format === "csv" + ? t("adminTools.importTextareaPlaceholderCsv") + : format === "json" + ? t("adminTools.importTextareaPlaceholderJson") + : format === "yaml" + ? t("adminTools.importTextareaPlaceholderYaml") + : t("adminTools.importTextareaPlaceholderAuto"); + return ( - + {t("adminTools.importTitle")} +
@@ -131,7 +142,7 @@ export function ToolImportDialog({