mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 20:21:09 +02:00
feat: major update with network graphs, themes, todo extensions, and more
## New Features ### Network Graph Visualization (Contacts, Calendar, Todo) - D3.js force simulation for physics-based layout - Zoom & pan with mouse/touchpad - Keyboard shortcuts: +/- zoom, 0 reset, Esc deselect, / search, F focus - Filtering by tags, company/location/project, connection strength - Shared components in @manacore/shared-ui ### Central Tags API (mana-core-auth) - CRUD endpoints for tags - Schema: tags table with userId, name, color, app - Shared tag components in @manacore/shared-ui ### Custom Themes System - Theme editor with live preview and color picker - Community theme gallery - Theme sharing (public, unlisted, private) - Backend API in mana-core-auth ### Todo App Extensions - Glass-pill design for task input and items - Settings page with 20+ preferences - Task edit modal with inline editing - Statistics page with visualizations - PWA support with offline capabilities - Multiple kanban boards ### Contacts App Features - Duplicate detection - Photo upload - Batch operations - Enhanced favorites page with multiple view modes - Alphabet view improvements - Search modal ### Help System - @manacore/shared-help-content - @manacore/shared-help-ui - @manacore/shared-help-types ### Other Features - Themes page for all apps - Referral system frontend - CommandBar (global search) - Skeleton loaders - Settings page improvements ## Bug Fixes - Network graph simulation initialization - Database schema TEXT for user_id columns (Better Auth compatibility) - Various styling fixes ## Documentation - Daily report for 2025-12-10 - CI/CD deployment guide 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
e84371aa94
commit
ee42b6cc76
381 changed files with 39284 additions and 6275 deletions
|
|
@ -65,5 +65,18 @@ export {
|
|||
getForgotPasswordTranslations,
|
||||
} from './translations/auth';
|
||||
|
||||
// Help translations
|
||||
export {
|
||||
en as helpTranslationsEn,
|
||||
de as helpTranslationsDe,
|
||||
it as helpTranslationsIt,
|
||||
fr as helpTranslationsFr,
|
||||
es as helpTranslationsEs,
|
||||
type HelpTranslations,
|
||||
type HelpLocale,
|
||||
helpTranslations,
|
||||
getHelpTranslations,
|
||||
} from './translations/help';
|
||||
|
||||
// Components
|
||||
export { LanguageSelector } from './components';
|
||||
|
|
|
|||
65
packages/shared-i18n/src/translations/help/de.json
Normal file
65
packages/shared-i18n/src/translations/help/de.json
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
"title": "Hilfe & Support",
|
||||
"subtitle": "Finde Antworten und lerne die App kennen",
|
||||
"searchPlaceholder": "Hilfe durchsuchen...",
|
||||
"sections": {
|
||||
"faq": "FAQ",
|
||||
"features": "Features",
|
||||
"shortcuts": "Tastenkürzel",
|
||||
"gettingStarted": "Erste Schritte",
|
||||
"changelog": "Neuigkeiten",
|
||||
"contact": "Kontakt"
|
||||
},
|
||||
"search": {
|
||||
"noResults": "Keine Ergebnisse für \"{query}\"",
|
||||
"resultsCount": "{count} Ergebnisse gefunden",
|
||||
"searching": "Suche..."
|
||||
},
|
||||
"faq": {
|
||||
"noItems": "Keine FAQs verfügbar",
|
||||
"categories": {
|
||||
"general": "Allgemein",
|
||||
"account": "Konto",
|
||||
"billing": "Abrechnung",
|
||||
"features": "Funktionen",
|
||||
"technical": "Technik",
|
||||
"privacy": "Datenschutz"
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"noItems": "Noch keine Features dokumentiert",
|
||||
"comingSoon": "Demnächst",
|
||||
"learnMore": "Mehr erfahren"
|
||||
},
|
||||
"shortcuts": {
|
||||
"noItems": "Keine Tastenkürzel verfügbar"
|
||||
},
|
||||
"gettingStarted": {
|
||||
"noItems": "Noch keine Anleitungen verfügbar",
|
||||
"estimatedTime": "Geschätzte Zeit",
|
||||
"difficulty": {
|
||||
"beginner": "Anfänger",
|
||||
"intermediate": "Fortgeschritten",
|
||||
"advanced": "Experte"
|
||||
}
|
||||
},
|
||||
"changelog": {
|
||||
"noItems": "Noch keine Updates",
|
||||
"types": {
|
||||
"major": "Haupt-Update",
|
||||
"minor": "Kleines Update",
|
||||
"patch": "Fehlerbehebung",
|
||||
"beta": "Beta"
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"noInfo": "Kontaktinformationen nicht verfügbar",
|
||||
"email": "E-Mail senden",
|
||||
"responseTime": "Antwortzeit"
|
||||
},
|
||||
"common": {
|
||||
"back": "Zurück",
|
||||
"showMore": "Mehr anzeigen",
|
||||
"showLess": "Weniger anzeigen"
|
||||
}
|
||||
}
|
||||
65
packages/shared-i18n/src/translations/help/en.json
Normal file
65
packages/shared-i18n/src/translations/help/en.json
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
"title": "Help & Support",
|
||||
"subtitle": "Find answers and learn how to use the app",
|
||||
"searchPlaceholder": "Search help articles...",
|
||||
"sections": {
|
||||
"faq": "FAQ",
|
||||
"features": "Features",
|
||||
"shortcuts": "Keyboard Shortcuts",
|
||||
"gettingStarted": "Getting Started",
|
||||
"changelog": "What's New",
|
||||
"contact": "Contact Us"
|
||||
},
|
||||
"search": {
|
||||
"noResults": "No results found for \"{query}\"",
|
||||
"resultsCount": "{count} results found",
|
||||
"searching": "Searching..."
|
||||
},
|
||||
"faq": {
|
||||
"noItems": "No FAQs available",
|
||||
"categories": {
|
||||
"general": "General",
|
||||
"account": "Account",
|
||||
"billing": "Billing",
|
||||
"features": "Features",
|
||||
"technical": "Technical",
|
||||
"privacy": "Privacy"
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"noItems": "No features documented yet",
|
||||
"comingSoon": "Coming soon",
|
||||
"learnMore": "Learn more"
|
||||
},
|
||||
"shortcuts": {
|
||||
"noItems": "No keyboard shortcuts available"
|
||||
},
|
||||
"gettingStarted": {
|
||||
"noItems": "No guides available yet",
|
||||
"estimatedTime": "Estimated time",
|
||||
"difficulty": {
|
||||
"beginner": "Beginner",
|
||||
"intermediate": "Intermediate",
|
||||
"advanced": "Advanced"
|
||||
}
|
||||
},
|
||||
"changelog": {
|
||||
"noItems": "No updates yet",
|
||||
"types": {
|
||||
"major": "Major",
|
||||
"minor": "Minor",
|
||||
"patch": "Patch",
|
||||
"beta": "Beta"
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"noInfo": "Contact information not available",
|
||||
"email": "Email us",
|
||||
"responseTime": "Response time"
|
||||
},
|
||||
"common": {
|
||||
"back": "Back",
|
||||
"showMore": "Show more",
|
||||
"showLess": "Show less"
|
||||
}
|
||||
}
|
||||
65
packages/shared-i18n/src/translations/help/es.json
Normal file
65
packages/shared-i18n/src/translations/help/es.json
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
"title": "Ayuda y Soporte",
|
||||
"subtitle": "Encuentra respuestas y aprende a usar la aplicación",
|
||||
"searchPlaceholder": "Buscar en la ayuda...",
|
||||
"sections": {
|
||||
"faq": "FAQ",
|
||||
"features": "Características",
|
||||
"shortcuts": "Atajos de teclado",
|
||||
"gettingStarted": "Primeros pasos",
|
||||
"changelog": "Novedades",
|
||||
"contact": "Contacto"
|
||||
},
|
||||
"search": {
|
||||
"noResults": "Sin resultados para \"{query}\"",
|
||||
"resultsCount": "{count} resultados encontrados",
|
||||
"searching": "Buscando..."
|
||||
},
|
||||
"faq": {
|
||||
"noItems": "No hay preguntas frecuentes disponibles",
|
||||
"categories": {
|
||||
"general": "General",
|
||||
"account": "Cuenta",
|
||||
"billing": "Facturación",
|
||||
"features": "Características",
|
||||
"technical": "Técnico",
|
||||
"privacy": "Privacidad"
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"noItems": "No hay características documentadas",
|
||||
"comingSoon": "Próximamente",
|
||||
"learnMore": "Saber más"
|
||||
},
|
||||
"shortcuts": {
|
||||
"noItems": "No hay atajos de teclado disponibles"
|
||||
},
|
||||
"gettingStarted": {
|
||||
"noItems": "No hay guías disponibles",
|
||||
"estimatedTime": "Tiempo estimado",
|
||||
"difficulty": {
|
||||
"beginner": "Principiante",
|
||||
"intermediate": "Intermedio",
|
||||
"advanced": "Avanzado"
|
||||
}
|
||||
},
|
||||
"changelog": {
|
||||
"noItems": "Sin actualizaciones",
|
||||
"types": {
|
||||
"major": "Principal",
|
||||
"minor": "Menor",
|
||||
"patch": "Corrección",
|
||||
"beta": "Beta"
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"noInfo": "Información de contacto no disponible",
|
||||
"email": "Envíanos un correo",
|
||||
"responseTime": "Tiempo de respuesta"
|
||||
},
|
||||
"common": {
|
||||
"back": "Volver",
|
||||
"showMore": "Ver más",
|
||||
"showLess": "Ver menos"
|
||||
}
|
||||
}
|
||||
65
packages/shared-i18n/src/translations/help/fr.json
Normal file
65
packages/shared-i18n/src/translations/help/fr.json
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
"title": "Aide & Support",
|
||||
"subtitle": "Trouvez des réponses et apprenez à utiliser l'application",
|
||||
"searchPlaceholder": "Rechercher dans l'aide...",
|
||||
"sections": {
|
||||
"faq": "FAQ",
|
||||
"features": "Fonctionnalités",
|
||||
"shortcuts": "Raccourcis clavier",
|
||||
"gettingStarted": "Premiers pas",
|
||||
"changelog": "Nouveautés",
|
||||
"contact": "Contact"
|
||||
},
|
||||
"search": {
|
||||
"noResults": "Aucun résultat pour \"{query}\"",
|
||||
"resultsCount": "{count} résultats trouvés",
|
||||
"searching": "Recherche..."
|
||||
},
|
||||
"faq": {
|
||||
"noItems": "Aucune FAQ disponible",
|
||||
"categories": {
|
||||
"general": "Général",
|
||||
"account": "Compte",
|
||||
"billing": "Facturation",
|
||||
"features": "Fonctionnalités",
|
||||
"technical": "Technique",
|
||||
"privacy": "Confidentialité"
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"noItems": "Aucune fonctionnalité documentée",
|
||||
"comingSoon": "Bientôt disponible",
|
||||
"learnMore": "En savoir plus"
|
||||
},
|
||||
"shortcuts": {
|
||||
"noItems": "Aucun raccourci clavier disponible"
|
||||
},
|
||||
"gettingStarted": {
|
||||
"noItems": "Aucun guide disponible",
|
||||
"estimatedTime": "Temps estimé",
|
||||
"difficulty": {
|
||||
"beginner": "Débutant",
|
||||
"intermediate": "Intermédiaire",
|
||||
"advanced": "Avancé"
|
||||
}
|
||||
},
|
||||
"changelog": {
|
||||
"noItems": "Aucune mise à jour",
|
||||
"types": {
|
||||
"major": "Majeure",
|
||||
"minor": "Mineure",
|
||||
"patch": "Correctif",
|
||||
"beta": "Bêta"
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"noInfo": "Informations de contact non disponibles",
|
||||
"email": "Nous contacter",
|
||||
"responseTime": "Délai de réponse"
|
||||
},
|
||||
"common": {
|
||||
"back": "Retour",
|
||||
"showMore": "Voir plus",
|
||||
"showLess": "Voir moins"
|
||||
}
|
||||
}
|
||||
108
packages/shared-i18n/src/translations/help/index.ts
Normal file
108
packages/shared-i18n/src/translations/help/index.ts
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
/**
|
||||
* Help translations exports
|
||||
*/
|
||||
|
||||
import en from './en.json';
|
||||
import de from './de.json';
|
||||
import it from './it.json';
|
||||
import fr from './fr.json';
|
||||
import es from './es.json';
|
||||
|
||||
export { en, de, it, fr, es };
|
||||
|
||||
/**
|
||||
* Help translations type structure
|
||||
*/
|
||||
export interface HelpTranslations {
|
||||
title: string;
|
||||
subtitle: string;
|
||||
searchPlaceholder: string;
|
||||
sections: {
|
||||
faq: string;
|
||||
features: string;
|
||||
shortcuts: string;
|
||||
gettingStarted: string;
|
||||
changelog: string;
|
||||
contact: string;
|
||||
};
|
||||
search: {
|
||||
noResults: string;
|
||||
resultsCount: string;
|
||||
searching: string;
|
||||
};
|
||||
faq: {
|
||||
noItems: string;
|
||||
categories: {
|
||||
general: string;
|
||||
account: string;
|
||||
billing: string;
|
||||
features: string;
|
||||
technical: string;
|
||||
privacy: string;
|
||||
};
|
||||
};
|
||||
features: {
|
||||
noItems: string;
|
||||
comingSoon: string;
|
||||
learnMore: string;
|
||||
};
|
||||
shortcuts: {
|
||||
noItems: string;
|
||||
};
|
||||
gettingStarted: {
|
||||
noItems: string;
|
||||
estimatedTime: string;
|
||||
difficulty: {
|
||||
beginner: string;
|
||||
intermediate: string;
|
||||
advanced: string;
|
||||
};
|
||||
};
|
||||
changelog: {
|
||||
noItems: string;
|
||||
types: {
|
||||
major: string;
|
||||
minor: string;
|
||||
patch: string;
|
||||
beta: string;
|
||||
};
|
||||
};
|
||||
contact: {
|
||||
noInfo: string;
|
||||
email: string;
|
||||
responseTime: string;
|
||||
};
|
||||
common: {
|
||||
back: string;
|
||||
showMore: string;
|
||||
showLess: string;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Supported help locales
|
||||
*/
|
||||
export type HelpLocale = 'en' | 'de' | 'it' | 'fr' | 'es';
|
||||
|
||||
/**
|
||||
* All help translations by locale
|
||||
*/
|
||||
export const helpTranslations: Record<HelpLocale, HelpTranslations> = {
|
||||
en,
|
||||
de,
|
||||
it,
|
||||
fr,
|
||||
es,
|
||||
};
|
||||
|
||||
/**
|
||||
* Get help translations by locale
|
||||
*/
|
||||
export function getHelpTranslations(locale: string): HelpTranslations {
|
||||
const supportedLocale = locale as HelpLocale;
|
||||
if (supportedLocale in helpTranslations) {
|
||||
return helpTranslations[supportedLocale];
|
||||
}
|
||||
// Default to English
|
||||
return helpTranslations.en;
|
||||
}
|
||||
65
packages/shared-i18n/src/translations/help/it.json
Normal file
65
packages/shared-i18n/src/translations/help/it.json
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
"title": "Aiuto & Supporto",
|
||||
"subtitle": "Trova risposte e impara a usare l'app",
|
||||
"searchPlaceholder": "Cerca nell'aiuto...",
|
||||
"sections": {
|
||||
"faq": "FAQ",
|
||||
"features": "Funzionalità",
|
||||
"shortcuts": "Scorciatoie",
|
||||
"gettingStarted": "Primi passi",
|
||||
"changelog": "Novità",
|
||||
"contact": "Contatti"
|
||||
},
|
||||
"search": {
|
||||
"noResults": "Nessun risultato per \"{query}\"",
|
||||
"resultsCount": "{count} risultati trovati",
|
||||
"searching": "Ricerca..."
|
||||
},
|
||||
"faq": {
|
||||
"noItems": "Nessuna FAQ disponibile",
|
||||
"categories": {
|
||||
"general": "Generale",
|
||||
"account": "Account",
|
||||
"billing": "Fatturazione",
|
||||
"features": "Funzionalità",
|
||||
"technical": "Tecnico",
|
||||
"privacy": "Privacy"
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"noItems": "Nessuna funzionalità documentata",
|
||||
"comingSoon": "Prossimamente",
|
||||
"learnMore": "Scopri di più"
|
||||
},
|
||||
"shortcuts": {
|
||||
"noItems": "Nessuna scorciatoia disponibile"
|
||||
},
|
||||
"gettingStarted": {
|
||||
"noItems": "Nessuna guida disponibile",
|
||||
"estimatedTime": "Tempo stimato",
|
||||
"difficulty": {
|
||||
"beginner": "Principiante",
|
||||
"intermediate": "Intermedio",
|
||||
"advanced": "Avanzato"
|
||||
}
|
||||
},
|
||||
"changelog": {
|
||||
"noItems": "Nessun aggiornamento",
|
||||
"types": {
|
||||
"major": "Principale",
|
||||
"minor": "Secondario",
|
||||
"patch": "Correzione",
|
||||
"beta": "Beta"
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"noInfo": "Informazioni di contatto non disponibili",
|
||||
"email": "Inviaci un'email",
|
||||
"responseTime": "Tempo di risposta"
|
||||
},
|
||||
"common": {
|
||||
"back": "Indietro",
|
||||
"showMore": "Mostra di più",
|
||||
"showLess": "Mostra meno"
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue