refactor: rename zitare -> quotes (Zitate)

Zitare was opaque Latin/Italian-flavored branding. Renamed to clear
English "quotes" (DE: Zitate) matching short-concrete-noun cluster.

- Module, routes, API, i18n, standalone landing app, plans dirs
- Dexie tables: quotesFavorites, quotesLists, quotesListTags,
  customQuotes (dropped redundant "quotes" prefix on the last)
- Logo QuotesLogo, theme quotes.css, search provider, dashboard
  widget QuoteWidget
- German user-facing label "Zitate" (English brand stays Quotes)

Pre-launch, no data migration needed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-14 20:59:16 +02:00
parent 7a1f11c971
commit 851a281e5a
196 changed files with 891 additions and 776 deletions

View file

@ -161,7 +161,7 @@ const track = {
photos: createModuleTracker('photos'),
storage: createModuleTracker('storage'),
music: createModuleTracker('music'),
zitare: createModuleTracker('zitare'),
quotes: createModuleTracker('quotes'),
presi: createModuleTracker('presi'),
subscription: createModuleTracker('subscription'),
memoro: createModuleTracker('memoro'),
@ -460,19 +460,19 @@ export const MusicEvents = {
};
/**
* Zitare App Events
* Quotes App Events
*/
export const ZitareEvents = {
randomQuoteLoaded: () => track.zitare('random_quote_loaded'),
quoteShared: (category: string) => track.zitare('quote_shared', { category }),
quoteFavorited: (category: string) => track.zitare('quote_favorited', { category }),
quoteUnfavorited: () => track.zitare('quote_unfavorited'),
categoryViewed: (category: string) => track.zitare('category_viewed', { category }),
export const QuotesEvents = {
randomQuoteLoaded: () => track.quotes('random_quote_loaded'),
quoteShared: (category: string) => track.quotes('quote_shared', { category }),
quoteFavorited: (category: string) => track.quotes('quote_favorited', { category }),
quoteUnfavorited: () => track.quotes('quote_unfavorited'),
categoryViewed: (category: string) => track.quotes('category_viewed', { category }),
searchPerformed: (resultsCount: number) =>
track.zitare('search_performed', { results: resultsCount }),
listCreated: () => track.zitare('list_created'),
listDeleted: () => track.zitare('list_deleted'),
quoteLanguageChanged: (language: string) => track.zitare('quote_language_changed', { language }),
track.quotes('search_performed', { results: resultsCount }),
listCreated: () => track.quotes('list_created'),
listDeleted: () => track.quotes('list_deleted'),
quoteLanguageChanged: (language: string) => track.quotes('quote_language_changed', { language }),
};
/**