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

@ -818,7 +818,7 @@ All web apps with backends now use the runtime injection pattern:
- ✅ `chat/apps/web`
- ✅ `picture/apps/web`
- ✅ `zitare/apps/web`
- ✅ `quotes/apps/web`
- ✅ `contacts/apps/web`
- ✅ `calendar/apps/web`
- ✅ `clock/apps/web`

View file

@ -14,7 +14,7 @@
| # | App | Collections | Stores umgeschrieben? |
| --- | --------------- | ---------------------------------------------------- | ------------------------------------------------------------ |
| 1 | Todo | tasks, projects, labels, taskLabels, reminders | Ja (komplett) |
| 2 | Zitare | favorites, lists | Ja (komplett) |
| 2 | Quotes | favorites, lists | Ja (komplett) |
| 3 | Calendar | calendars, events | Ja (komplett) |
| 4 | Clock | alarms, timers, worldClocks | Ja (komplett) |
| 5 | Contacts | contacts | Ja (komplett) |

View file

@ -325,7 +325,7 @@ Alle Web-Apps mit CRUD-Datenmodell wurden auf Local-First migriert:
| App | Collections | Server-Logik verbleibt |
|---|---|---|
| **Todo** | tasks, projects, labels, taskLabels, reminders | RRULE, Reminders (Hono/Bun) |
| **Zitare** | favorites, lists | Nur Sync |
| **Quotes** | favorites, lists | Nur Sync |
| **Calendar** | calendars, events | RRULE, Google Calendar OAuth |
| **Clock** | alarms, timers, worldClocks | Nur Sync |
| **Cards** | decks, cards | Spaced Repetition, LLM |

View file

@ -16,7 +16,7 @@
| # | App | Modul | Routen | Status |
|---|-----|-------|--------|--------|
| 1 | **calc** | collections, components (5 skins), engine, stores, queries | `/calc`, `/calc/standard` | **Done** |
| 2 | **zitare** | collections, stores (5), components (2), queries | `/zitare` + 6 Sub-Routen | **Done** |
| 2 | **quotes** | collections, stores (5), components (2), queries | `/quotes` + 6 Sub-Routen | **Done** |
| 3 | **clock** | collections, stores (6), components (2), queries | `/clock`, `/clock/alarms` | **Done** |
| 4 | **skilltree** | collections, stores (2), components (9), queries | `/skilltree`, `/skilltree/tree`, `/skilltree/achievements` | **Done** |
| 5 | **moodlit** | collections, stores (2), components (3), queries | `/moodlit`, `/moodlit/moods`, `/moodlit/sequences` | **Done** |
@ -97,7 +97,7 @@ Alle Apps die zum ManaCore-Ökosystem gehören und von Shared IndexedDB, Dashboa
| **chat** | AI-Chat, Cross-App-Referenzen |
| **picture** | AI-Bilder, Cross-App-Referenzen |
| **cards** | Lernkarten, Cross-App-Links |
| **zitare** | Zitate, Dashboard-Widget |
| **quotes** | Zitate, Dashboard-Widget |
| **clock** | Uhren/Timer, Dashboard-Widget |
| **mukke** | Musik, eigenständig aber profitiert von shared Auth |
| **storage** | Cloud-Dateien, Cross-App-Referenzen |
@ -247,7 +247,7 @@ src/lib/modules/
├── chat/
├── picture/
├── cards/
├── zitare/
├── quotes/
├── clock/
├── mukke/
├── storage/
@ -330,7 +330,7 @@ src/routes/
│ │ ├── deck/[id]/+page.svelte
│ │ └── study/[id]/+page.svelte
│ │
│ ├── zitare/
│ ├── quotes/
│ │ ├── +page.svelte
│ │ └── favorites/+page.svelte
│ │
@ -463,7 +463,7 @@ import { CONTACTS_COLLECTIONS } from '$lib/modules/contacts/collections';
import { CHAT_COLLECTIONS } from '$lib/modules/chat/collections';
import { PICTURE_COLLECTIONS } from '$lib/modules/picture/collections';
import { CARDS_COLLECTIONS } from '$lib/modules/cards/collections';
import { ZITARE_COLLECTIONS } from '$lib/modules/zitare/collections';
import { QUOTES_COLLECTIONS } from '$lib/modules/quotes/collections';
import { CLOCK_COLLECTIONS } from '$lib/modules/clock/collections';
import { MUKKE_COLLECTIONS } from '$lib/modules/mukke/collections';
import { STORAGE_COLLECTIONS } from '$lib/modules/storage/collections';
@ -509,7 +509,7 @@ db.version(1).stores({
// ... alle weiteren
...PICTURE_COLLECTIONS,
...CARDS_COLLECTIONS,
...ZITARE_COLLECTIONS,
...QUOTES_COLLECTIONS,
...CLOCK_COLLECTIONS,
...MUKKE_COLLECTIONS,
...STORAGE_COLLECTIONS,
@ -566,7 +566,7 @@ export const SYNC_APP_MAP: Record<string, string[]> = {
chat: ['conversations', 'messages', 'templates'],
picture: ['images', 'boards', 'boardItems', 'tags', 'imageTags'],
cards: ['decks', 'cards'],
zitare: ['favorites', 'lists'],
quotes: ['favorites', 'lists'],
clock: ['alarms', 'timers', 'worldClocks'],
mukke: ['songs', 'playlists', 'playlistSongs', 'mProjects', 'markers'],
storage: ['files', 'folders', 'sTags', 'fileTags'],
@ -756,7 +756,7 @@ Nach Komplexität sortiert — einfachste zuerst, um den Prozess einzuüben:
| # | App | Routes | Components | Priorität | Grund |
|---|-----|--------|-----------|-----------|-------|
| 1 | **calc** | 4 | 8 | Starter | Minimal, keine Backend-Deps |
| 2 | **zitare** | 8 | 12 | Starter | Einfach, wenig Stores |
| 2 | **quotes** | 8 | 12 | Starter | Einfach, wenig Stores |
| 3 | **clock** | 8 | 15 | Starter | Eigenständig, keine API |
| 4 | **skilltree** | 5 | 6 | Starter | Minimal |
| 5 | **moodlit** | 6 | 4 | Starter | Minimal |