mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-23 14:06:42 +02:00
feat(storage, chat, picture): add shared help pages
Add help pages to the remaining high-maturity production apps: - Storage (84/100): FAQ (upload, sharing, versioning, trash, privacy), features (cloud storage, sharing, versioning, search), shortcuts - Chat (82/100): FAQ (AI models, spaces, templates, comparison, privacy), features (multi-model, spaces, comparison, templates), shortcuts - Picture (81/100): FAQ (generation, credits, moodboards, explore, privacy), features (AI generation, gallery, moodboards, explore), shortcuts All 6 production web apps now have standardized help pages using the shared help system. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
979103b962
commit
f0233b8d31
10 changed files with 1009 additions and 0 deletions
|
|
@ -42,6 +42,8 @@
|
|||
"@manacore/shared-feedback-service": "workspace:*",
|
||||
"@manacore/shared-feedback-ui": "workspace:*",
|
||||
"@manacore/shared-i18n": "workspace:*",
|
||||
"@manacore/shared-help-types": "workspace:*",
|
||||
"@manacore/shared-help-ui": "workspace:*",
|
||||
"@manacore/shared-icons": "workspace:*",
|
||||
"@manacore/shared-profile-ui": "workspace:*",
|
||||
"@manacore/shared-stores": "workspace:*",
|
||||
|
|
|
|||
166
apps/chat/apps/web/src/lib/content/help/index.ts
Normal file
166
apps/chat/apps/web/src/lib/content/help/index.ts
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
/**
|
||||
* Help content for Chat app
|
||||
*/
|
||||
|
||||
import type { HelpContent } from '@manacore/shared-help-types';
|
||||
|
||||
export function getChatHelpContent(locale: string): HelpContent {
|
||||
const isDE = locale === 'de';
|
||||
|
||||
return {
|
||||
faq: [
|
||||
{
|
||||
id: 'faq-models',
|
||||
question: isDE
|
||||
? 'Welche KI-Modelle stehen zur Verfügung?'
|
||||
: 'Which AI models are available?',
|
||||
answer: isDE
|
||||
? '<p>Es gibt zwei Kategorien von Modellen:</p><ul><li><strong>Lokale Modelle</strong> (kostenlos): Laufen auf unserem Server — z.B. Gemma 3, Qwen2.5 Coder, LLaVA Vision</li><li><strong>Cloud-Modelle</strong> (Credits): Leistungsstärkere Modelle — z.B. Claude, GPT-4o, DeepSeek, Llama</li></ul><p>Lokale Modelle sind ideal für alltägliche Aufgaben. Cloud-Modelle bieten höhere Qualität für komplexe Anfragen.</p>'
|
||||
: '<p>There are two categories of models:</p><ul><li><strong>Local models</strong> (free): Run on our server — e.g. Gemma 3, Qwen2.5 Coder, LLaVA Vision</li><li><strong>Cloud models</strong> (credits): More powerful models — e.g. Claude, GPT-4o, DeepSeek, Llama</li></ul><p>Local models are ideal for everyday tasks. Cloud models offer higher quality for complex requests.</p>',
|
||||
category: 'features',
|
||||
order: 1,
|
||||
language: isDE ? 'de' : 'en',
|
||||
featured: true,
|
||||
tags: isDE ? ['modelle', 'ki', 'lokal', 'cloud'] : ['models', 'ai', 'local', 'cloud'],
|
||||
},
|
||||
{
|
||||
id: 'faq-spaces',
|
||||
question: isDE ? 'Was sind Spaces?' : 'What are Spaces?',
|
||||
answer: isDE
|
||||
? '<p>Spaces sind Bereiche, um deine Chats thematisch zu organisieren:</p><ul><li>Erstelle Spaces für verschiedene Projekte oder Themen</li><li>Jeder Space enthält eigene Unterhaltungen</li><li>Wechsle schnell zwischen Kontexten</li></ul>'
|
||||
: '<p>Spaces are areas to organize your chats by topic:</p><ul><li>Create spaces for different projects or topics</li><li>Each space contains its own conversations</li><li>Switch quickly between contexts</li></ul>',
|
||||
category: 'features',
|
||||
order: 2,
|
||||
language: isDE ? 'de' : 'en',
|
||||
tags: isDE ? ['spaces', 'organisation', 'bereiche'] : ['spaces', 'organize', 'areas'],
|
||||
},
|
||||
{
|
||||
id: 'faq-templates',
|
||||
question: isDE ? 'Wie nutze ich Templates?' : 'How do I use templates?',
|
||||
answer: isDE
|
||||
? '<p>Templates sind vordefinierte Prompt-Vorlagen:</p><ul><li>Wähle ein Template aus der Vorlagenbibliothek</li><li>Das Template füllt automatisch den Chat mit einem optimierten Prompt</li><li>Ideal für wiederkehrende Aufgaben wie Texterstellung, Übersetzung oder Code-Analyse</li></ul>'
|
||||
: '<p>Templates are predefined prompt presets:</p><ul><li>Select a template from the template library</li><li>The template automatically fills the chat with an optimized prompt</li><li>Ideal for recurring tasks like writing, translation, or code analysis</li></ul>',
|
||||
category: 'features',
|
||||
order: 3,
|
||||
language: isDE ? 'de' : 'en',
|
||||
tags: isDE ? ['templates', 'vorlagen', 'prompts'] : ['templates', 'presets', 'prompts'],
|
||||
},
|
||||
{
|
||||
id: 'faq-compare',
|
||||
question: isDE ? 'Was ist der Modellvergleich?' : 'What is model comparison?',
|
||||
answer: isDE
|
||||
? '<p>Mit dem Modellvergleich kannst du denselben Prompt an mehrere Modelle gleichzeitig senden und die Antworten nebeneinander vergleichen. So findest du das beste Modell für deine Aufgabe.</p>'
|
||||
: '<p>Model comparison lets you send the same prompt to multiple models simultaneously and compare responses side by side. This helps you find the best model for your task.</p>',
|
||||
category: 'features',
|
||||
order: 4,
|
||||
language: isDE ? 'de' : 'en',
|
||||
tags: isDE ? ['vergleich', 'modelle', 'test'] : ['compare', 'models', 'test'],
|
||||
},
|
||||
{
|
||||
id: 'faq-privacy',
|
||||
question: isDE ? 'Wie werden meine Chats geschützt?' : 'How are my chats protected?',
|
||||
answer: isDE
|
||||
? '<p>Deine Unterhaltungen sind sicher:</p><ul><li><strong>Verschlüsselung</strong>: Alle Daten werden bei der Übertragung (TLS) verschlüsselt</li><li><strong>Privat</strong>: Nur du hast Zugriff auf deine Chats</li><li><strong>Lokale Modelle</strong>: Bei lokalen Modellen verlassen deine Daten nie unseren Server</li><li><strong>DSGVO-konform</strong>: Wir halten uns an die EU-Datenschutzverordnung</li></ul>'
|
||||
: '<p>Your conversations are secure:</p><ul><li><strong>Encryption</strong>: All data is encrypted in transit (TLS)</li><li><strong>Private</strong>: Only you have access to your chats</li><li><strong>Local models</strong>: With local models, your data never leaves our server</li><li><strong>GDPR Compliant</strong>: We follow EU data protection regulations</li></ul>',
|
||||
category: 'privacy',
|
||||
order: 5,
|
||||
language: isDE ? 'de' : 'en',
|
||||
featured: true,
|
||||
tags: isDE ? ['datenschutz', 'sicherheit', 'dsgvo'] : ['privacy', 'security', 'gdpr'],
|
||||
},
|
||||
],
|
||||
features: [
|
||||
{
|
||||
id: 'feature-models',
|
||||
title: isDE ? 'Mehrere KI-Modelle' : 'Multiple AI Models',
|
||||
description: isDE
|
||||
? 'Lokale und Cloud-Modelle für jede Aufgabe'
|
||||
: 'Local and cloud models for every task',
|
||||
icon: '🤖',
|
||||
category: 'core',
|
||||
highlights: isDE
|
||||
? ['7+ lokale Modelle (kostenlos)', 'Cloud-Modelle (Claude, GPT)', 'Vision-Modelle']
|
||||
: ['7+ local models (free)', 'Cloud models (Claude, GPT)', 'Vision models'],
|
||||
content: '',
|
||||
order: 1,
|
||||
language: isDE ? 'de' : 'en',
|
||||
},
|
||||
{
|
||||
id: 'feature-spaces',
|
||||
title: 'Spaces',
|
||||
description: isDE
|
||||
? 'Organisiere Chats nach Themen und Projekten'
|
||||
: 'Organize chats by topics and projects',
|
||||
icon: '📂',
|
||||
category: 'core',
|
||||
highlights: isDE
|
||||
? ['Thematische Gruppierung', 'Schneller Kontextwechsel', 'Eigene Unterhaltungen']
|
||||
: ['Topic grouping', 'Quick context switch', 'Separate conversations'],
|
||||
content: '',
|
||||
order: 2,
|
||||
language: isDE ? 'de' : 'en',
|
||||
},
|
||||
{
|
||||
id: 'feature-compare',
|
||||
title: isDE ? 'Modellvergleich' : 'Model Comparison',
|
||||
description: isDE
|
||||
? 'Vergleiche Antworten mehrerer Modelle nebeneinander'
|
||||
: 'Compare responses from multiple models side by side',
|
||||
icon: '⚖️',
|
||||
category: 'advanced',
|
||||
highlights: isDE
|
||||
? ['Parallele Anfragen', 'Qualitätsvergleich', 'Beste Modellwahl']
|
||||
: ['Parallel requests', 'Quality comparison', 'Best model selection'],
|
||||
content: '',
|
||||
order: 3,
|
||||
language: isDE ? 'de' : 'en',
|
||||
},
|
||||
{
|
||||
id: 'feature-templates',
|
||||
title: 'Templates',
|
||||
description: isDE
|
||||
? 'Optimierte Prompts für wiederkehrende Aufgaben'
|
||||
: 'Optimized prompts for recurring tasks',
|
||||
icon: '📋',
|
||||
category: 'core',
|
||||
highlights: isDE
|
||||
? ['Prompt-Vorlagen', 'Ein-Klick-Start', 'Verschiedene Kategorien']
|
||||
: ['Prompt presets', 'One-click start', 'Various categories'],
|
||||
content: '',
|
||||
order: 4,
|
||||
language: isDE ? 'de' : 'en',
|
||||
},
|
||||
],
|
||||
shortcuts: [
|
||||
{
|
||||
id: 'shortcuts-nav',
|
||||
category: 'navigation',
|
||||
title: 'Navigation',
|
||||
language: isDE ? 'de' : 'en',
|
||||
order: 1,
|
||||
shortcuts: [
|
||||
{ shortcut: 'Cmd/Ctrl + 1', action: 'Chat' },
|
||||
{ shortcut: 'Cmd/Ctrl + 2', action: isDE ? 'Vergleich' : 'Compare' },
|
||||
{ shortcut: 'Cmd/Ctrl + 3', action: 'Templates' },
|
||||
{ shortcut: 'Cmd/Ctrl + 4', action: 'Spaces' },
|
||||
{ shortcut: 'Cmd/Ctrl + 5', action: isDE ? 'Dokumente' : 'Documents' },
|
||||
{ shortcut: 'Cmd/Ctrl + 6', action: isDE ? 'Archiv' : 'Archive' },
|
||||
],
|
||||
},
|
||||
],
|
||||
gettingStarted: [],
|
||||
changelog: [],
|
||||
contact: {
|
||||
id: 'contact-support',
|
||||
title: isDE ? 'Support kontaktieren' : 'Contact Support',
|
||||
content: isDE
|
||||
? '<p>Unser Support-Team hilft dir bei allen Fragen rund um Chat.</p>'
|
||||
: '<p>Our support team is here to help you with any chat-related questions.</p>',
|
||||
language: isDE ? 'de' : 'en',
|
||||
order: 1,
|
||||
supportEmail: 'support@mana.how',
|
||||
documentationUrl: 'https://mana.how/docs',
|
||||
responseTime: isDE ? 'Normalerweise innerhalb von 24 Stunden' : 'Usually within 24 hours',
|
||||
},
|
||||
};
|
||||
}
|
||||
157
apps/chat/apps/web/src/routes/(protected)/help/+page.svelte
Normal file
157
apps/chat/apps/web/src/routes/(protected)/help/+page.svelte
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
<script lang="ts">
|
||||
import { goto } from '$app/navigation';
|
||||
import { locale } from 'svelte-i18n';
|
||||
import { HelpPage } from '@manacore/shared-help-ui';
|
||||
import type { HelpPageTranslations } from '@manacore/shared-help-ui';
|
||||
import { getChatHelpContent } from '$lib/content/help/index.js';
|
||||
|
||||
const content = $derived(getChatHelpContent($locale ?? 'de'));
|
||||
|
||||
const translations: HelpPageTranslations = $derived(
|
||||
$locale === 'de'
|
||||
? {
|
||||
title: 'Hilfe & Support',
|
||||
subtitle: 'Finde Antworten und lerne Chat kennen',
|
||||
searchPlaceholder: 'Hilfe durchsuchen...',
|
||||
sections: {
|
||||
faq: 'FAQ',
|
||||
features: 'Features',
|
||||
shortcuts: 'Tastenkürzel',
|
||||
gettingStarted: 'Erste Schritte',
|
||||
changelog: 'Änderungen',
|
||||
contact: 'Kontakt',
|
||||
},
|
||||
search: {
|
||||
noResults: 'Keine Ergebnisse für "{query}"',
|
||||
resultsCount: '{count} Ergebnisse',
|
||||
searching: 'Suche...',
|
||||
},
|
||||
faq: {
|
||||
noItems: 'Keine häufigen Fragen verfügbar.',
|
||||
allCategories: 'Alle',
|
||||
categories: {
|
||||
general: 'Allgemein',
|
||||
account: 'Konto',
|
||||
billing: 'Abrechnung',
|
||||
features: 'Funktionen',
|
||||
technical: 'Technisch',
|
||||
privacy: 'Datenschutz',
|
||||
},
|
||||
},
|
||||
features: {
|
||||
noItems: 'Keine Features verfügbar.',
|
||||
comingSoon: 'Demnächst',
|
||||
learnMore: 'Mehr erfahren',
|
||||
},
|
||||
shortcuts: {
|
||||
noItems: 'Keine Tastenkürzel verfügbar.',
|
||||
columns: { shortcut: 'Kürzel', action: 'Aktion', description: 'Beschreibung' },
|
||||
},
|
||||
gettingStarted: {
|
||||
noItems: 'Keine Anleitungen verfügbar.',
|
||||
estimatedTime: 'Geschätzte Zeit',
|
||||
difficulty: {
|
||||
beginner: 'Einsteiger',
|
||||
intermediate: 'Fortgeschritten',
|
||||
advanced: 'Experte',
|
||||
},
|
||||
},
|
||||
changelog: {
|
||||
noItems: 'Keine Änderungen verfügbar.',
|
||||
showAll: 'Alle Versionen anzeigen',
|
||||
types: { major: 'Hauptversion', minor: 'Nebenversion', patch: 'Patch', beta: 'Beta' },
|
||||
labels: {
|
||||
features: 'Neue Funktionen',
|
||||
improvements: 'Verbesserungen',
|
||||
bugFixes: 'Fehlerbehebungen',
|
||||
},
|
||||
},
|
||||
contact: {
|
||||
noInfo: 'Keine Kontaktinformationen verfügbar.',
|
||||
email: 'E-Mail senden',
|
||||
responseTime: 'Antwortzeit',
|
||||
},
|
||||
common: { back: 'Zurück', showMore: 'Mehr anzeigen', showLess: 'Weniger anzeigen' },
|
||||
}
|
||||
: {
|
||||
title: 'Help & Support',
|
||||
subtitle: 'Find answers and learn how to use Chat',
|
||||
searchPlaceholder: 'Search help...',
|
||||
sections: {
|
||||
faq: 'FAQ',
|
||||
features: 'Features',
|
||||
shortcuts: 'Shortcuts',
|
||||
gettingStarted: 'Getting Started',
|
||||
changelog: 'Changelog',
|
||||
contact: 'Contact',
|
||||
},
|
||||
search: {
|
||||
noResults: 'No results for "{query}"',
|
||||
resultsCount: '{count} results',
|
||||
searching: 'Searching...',
|
||||
},
|
||||
faq: {
|
||||
noItems: 'No FAQs available.',
|
||||
allCategories: 'All',
|
||||
categories: {
|
||||
general: 'General',
|
||||
account: 'Account',
|
||||
billing: 'Billing',
|
||||
features: 'Features',
|
||||
technical: 'Technical',
|
||||
privacy: 'Privacy',
|
||||
},
|
||||
},
|
||||
features: {
|
||||
noItems: 'No features available.',
|
||||
comingSoon: 'Coming Soon',
|
||||
learnMore: 'Learn More',
|
||||
},
|
||||
shortcuts: {
|
||||
noItems: 'No shortcuts available.',
|
||||
columns: { shortcut: 'Shortcut', action: 'Action', description: 'Description' },
|
||||
},
|
||||
gettingStarted: {
|
||||
noItems: 'No guides available.',
|
||||
estimatedTime: 'Estimated time',
|
||||
difficulty: {
|
||||
beginner: 'Beginner',
|
||||
intermediate: 'Intermediate',
|
||||
advanced: 'Advanced',
|
||||
},
|
||||
},
|
||||
changelog: {
|
||||
noItems: 'No changelog available.',
|
||||
showAll: 'Show all releases',
|
||||
types: { major: 'Major', minor: 'Minor', patch: 'Patch', beta: 'Beta' },
|
||||
labels: {
|
||||
features: 'New Features',
|
||||
improvements: 'Improvements',
|
||||
bugFixes: 'Bug Fixes',
|
||||
},
|
||||
},
|
||||
contact: {
|
||||
noInfo: 'No contact info available.',
|
||||
email: 'Send email',
|
||||
responseTime: 'Response time',
|
||||
},
|
||||
common: { back: 'Back', showMore: 'Show more', showLess: 'Show less' },
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>{translations.title} | Chat</title>
|
||||
</svelte:head>
|
||||
|
||||
<HelpPage
|
||||
{content}
|
||||
appName="Chat"
|
||||
appId="chat"
|
||||
{translations}
|
||||
showBackButton
|
||||
onBack={() => goto('/chat')}
|
||||
showGettingStarted={false}
|
||||
showChangelog={false}
|
||||
defaultSection="faq"
|
||||
/>
|
||||
Loading…
Add table
Add a link
Reference in a new issue