diff --git a/app-manifest.json b/app-manifest.json index 3b71fbb..e112037 100644 --- a/app-manifest.json +++ b/app-manifest.json @@ -1,31 +1,31 @@ { "$schema": "https://pkg.mana.how/@mana/shared-share-protocol/0.1/manifest.json", "schema_version": "0.1", - "id": "cards", - "name": "Cardecky", + "id": "wordeck", + "name": "Wordeck", "version": "1.0.0", - "homepage": "https://cardecky.mana.how", - "icon": "https://cardecky.mana.how/icon-512.png", - "description": "Spaced-repetition flashcards with FSRS scheduling.", - "description_de": "Lernkarten mit Spaced-Repetition (FSRS).", + "homepage": "https://wordeck.com", + "icon": "https://wordeck.com/icon-512.png", + "description": "Spaced-repetition flashcards with FSRS scheduling — text-first, no images, no audio.", + "description_de": "Spaced Repetition, text-first. Nur Worte, keine Bilder, kein Audio.", "ownership": { "kind": "verein" }, "tier_required": "beta", "endpoints": { - "base_url": "https://cardecky.mana.how", + "base_url": "https://wordeck.com", "health": "/healthz", "dsgvo_export": "/api/v1/dsgvo/export", "search": "/api/v1/search", "share_receive": "/api/v1/share/receive", "tool_invoke": "/api/v1/tools/:name", - "deep_link_scheme": "cards://", + "deep_link_scheme": "wordeck://", "link_patterns": [ { "pattern": "card/(?[a-z0-9_-]+)", - "template": "https://cardecky.mana.how/c/{id}" + "template": "https://wordeck.com/c/{id}" }, { "pattern": "deck/(?[a-z0-9_-]+)", - "template": "https://cardecky.mana.how/d/{id}" + "template": "https://wordeck.com/d/{id}" } ] }, @@ -37,14 +37,14 @@ ], "tools": [ { - "name": "cards.create", + "name": "wordeck.create", "description": "Erzeugt eine Lernkarte für den authentifizierten User.", "input_schema": { "$ref": "/payload-schemas/create-card-input.json" }, "output_schema": { "$ref": "/payload-schemas/card.json" }, "auth": "user_token" }, { - "name": "cards.search", + "name": "wordeck.search", "description": "Sucht in den Lernkarten des authentifizierten Users.", "input_schema": { "$ref": "/payload-schemas/search-input.json" }, "output_schema": { "$ref": "/payload-schemas/search-output.json" }, diff --git a/apps/web/src/hooks.server.ts b/apps/web/src/hooks.server.ts index 1212293..f7ba85c 100644 --- a/apps/web/src/hooks.server.ts +++ b/apps/web/src/hooks.server.ts @@ -22,7 +22,7 @@ const CSP_POLICY = [ "img-src 'self' data: blob:", "font-src 'self' data:", // XHR/fetch-Ziele: eigene API + Auth-Portal + LLM/Share/MCP-Plattform. - "connect-src 'self' https://cardecky-api.mana.how https://auth.mana.how https://share.mana.how https://mcp.mana.how", + "connect-src 'self' https://api.wordeck.com https://cardecky-api.mana.how https://auth.mana.how https://share.mana.how https://mcp.mana.how", "media-src 'self' blob:", "frame-ancestors 'none'", "base-uri 'self'", diff --git a/apps/web/src/lib/components/marketplace/PublishDeckModal.svelte b/apps/web/src/lib/components/marketplace/PublishDeckModal.svelte index a6fde26..6bb8707 100644 --- a/apps/web/src/lib/components/marketplace/PublishDeckModal.svelte +++ b/apps/web/src/lib/components/marketplace/PublishDeckModal.svelte @@ -193,7 +193,7 @@
- cardecky.mana.how/d/ + wordeck.com/d/ ` direkt in die App - * geöffnet statt im Browser. + * von `https://wordeck.com/.well-known/apple-app-site-association` (sowie + * von der Legacy-Domain `https://cardecky.mana.how/...`) und vergleicht + * sie mit dem `applinks:`-Entitlement der App. Bei Match werden Links + * auf `/d/` direkt in die App geöffnet statt im Browser. * * **Pflichtbedingungen:** * 1. Antwort MUSS `Content-Type: application/json` haben (nicht @@ -21,22 +21,28 @@ import type { RequestHandler } from './$types'; * Developer-Accounts gesetzt werden, sonst akzeptiert Apple die AASA * nicht. * - * Cross-Ref: `cards-native/docs/RELEASE_CHECKLIST.md` → "Server-seitige - * Vorbedingungen". + * Beide Bundle-IDs sind aktiv: + * - `ev.mana.cardecky` (cards-native v0.9.4, End-of-Life) + * - `ev.mana.wordeck` (Wordeck-Native ab Ω-3, neue ASC-Eintragung) + * + * Cross-Ref: `mana/docs/playbooks/WORDECK_REBRAND.md`, + * `cards-native/docs/RELEASE_CHECKLIST.md` → "Server-seitige Vorbedingungen". */ export const GET: RequestHandler = async () => { const teamId = env.PUBLIC_APPLE_TEAM_ID ?? 'XXXXXXXXXX'; - const bundleId = 'ev.mana.cardecky'; const payload = { applinks: { apps: [], details: [ { - appID: `${teamId}.${bundleId}`, - // `/d/*` Deck-Slugs, `/u/*` User-Profile, `/auth/*` für - // Reset-/Verify-Mail-Klicks von mana-auth — der Mail-Link - // öffnet damit direkt die App via Universal Link. + // Legacy: cards-native v0.9.4 (End-of-Life nach Wordeck-Cutover) + appID: `${teamId}.ev.mana.cardecky`, + paths: ['/d/*', '/u/*', '/auth/*'], + }, + { + // Aktuell: Wordeck-Native (neuer Bundle ab Ω-3) + appID: `${teamId}.ev.mana.wordeck`, paths: ['/d/*', '/u/*', '/auth/*'], }, ], diff --git a/apps/web/src/routes/auth/reset/+page.svelte b/apps/web/src/routes/auth/reset/+page.svelte index 8d6a625..fc206de 100644 --- a/apps/web/src/routes/auth/reset/+page.svelte +++ b/apps/web/src/routes/auth/reset/+page.svelte @@ -6,7 +6,7 @@ /** * Web-Fallback für die Reset-Password-Mail von mana-auth. * - * Auf iOS-Geräten mit installierter Cardecky-App öffnet Apple den + * Auf iOS-Geräten mit installierter Wordeck-App öffnet Apple den * Universal Link direkt in der App, diese Page wird nie gerendert. * * Für alle anderen User (kein iOS, App nicht installiert, Desktop) @@ -32,7 +32,7 @@ - Passwort zurücksetzen — Cardecky + Passwort zurücksetzen — Wordeck
diff --git a/apps/web/src/routes/auth/verify/+page.svelte b/apps/web/src/routes/auth/verify/+page.svelte index ee6fc5a..ad77a53 100644 --- a/apps/web/src/routes/auth/verify/+page.svelte +++ b/apps/web/src/routes/auth/verify/+page.svelte @@ -6,7 +6,7 @@ /** * Web-Fallback für die Verify-Email-Mail von mana-auth. * - * Auf iOS-Geräten mit installierter Cardecky-App öffnet Apple den + * Auf iOS-Geräten mit installierter Wordeck-App öffnet Apple den * Universal Link direkt in der App. Für alle anderen User leiten * wir zum Better-Auth-Verify-Endpoint auf auth.mana.how weiter, * der den Token konsumiert und auf das Auth-Portal redirected. @@ -32,7 +32,7 @@ - Email bestätigen — Cardecky + Email bestätigen — Wordeck
diff --git a/apps/web/src/routes/d/[slug]/+page.svelte b/apps/web/src/routes/d/[slug]/+page.svelte index 88d0c89..a645d90 100644 --- a/apps/web/src/routes/d/[slug]/+page.svelte +++ b/apps/web/src/routes/d/[slug]/+page.svelte @@ -157,7 +157,7 @@ - {deck?.title ?? slug} · Cardecky + {deck?.title ?? slug} · Wordeck {#if loading} diff --git a/apps/web/src/routes/decks/+page.svelte b/apps/web/src/routes/decks/+page.svelte index 5bde739..a40d39c 100644 --- a/apps/web/src/routes/decks/+page.svelte +++ b/apps/web/src/routes/decks/+page.svelte @@ -163,7 +163,7 @@ - Meine Decks · Cardecky + Meine Decks · Wordeck
diff --git a/apps/web/src/routes/decks/[id]/print/+page.svelte b/apps/web/src/routes/decks/[id]/print/+page.svelte index 72a89f5..3517d2c 100644 --- a/apps/web/src/routes/decks/[id]/print/+page.svelte +++ b/apps/web/src/routes/decks/[id]/print/+page.svelte @@ -46,7 +46,7 @@ - {deck ? t('print.title', { deck: deck.name }) : t('print.loading')} · Cardecky + {deck ? t('print.title', { deck: deck.name }) : t('print.loading')} · Wordeck
diff --git a/apps/web/src/routes/explore/+page.svelte b/apps/web/src/routes/explore/+page.svelte index b3bfb5d..97d1389 100644 --- a/apps/web/src/routes/explore/+page.svelte +++ b/apps/web/src/routes/explore/+page.svelte @@ -78,12 +78,12 @@ - Explore · Cardecky + Explore · Wordeck
-

Cardecky-Library

+

Wordeck-Library

{#if loadingExplore} diff --git a/apps/web/src/routes/help/+page.svelte b/apps/web/src/routes/help/+page.svelte index 5b68eaf..c1c77c9 100644 --- a/apps/web/src/routes/help/+page.svelte +++ b/apps/web/src/routes/help/+page.svelte @@ -1,13 +1,13 @@ - Hilfe — Cardecky - + Hilfe — Wordeck +

Hilfe & Support

- Cardecky wird vom Verein mana e.V. (i. G.) betrieben. + Wordeck wird vom Verein mana e.V. (i. G.) betrieben. Bei Fragen oder Problemen melde dich direkt bei uns — wir antworten meist innerhalb eines Tages.

@@ -22,7 +22,7 @@

Wie funktioniert das Lern-Schema?

- Cardecky nutzt FSRS + Wordeck nutzt FSRS (Free Spaced Repetition Scheduler), den genauesten offenen Algorithmus für Karteikarten. Karten kommen wieder, wenn deine Erinnerung sie braucht — und nicht nach starren Intervallen. @@ -41,7 +41,7 @@ und beim nächsten Online-Moment synchronisiert.

-

Was ist mit dem Marketplace (Cardecky)?

+

Was ist mit dem Marketplace (Wordeck)?

Der Marketplace unter Entdecken ist die offene Sammlung freigegebener Decks. Subscriben heißt: das Deck wird in deine eigene diff --git a/apps/web/src/routes/me/forks/+page.svelte b/apps/web/src/routes/me/forks/+page.svelte index df1e148..4c85033 100644 --- a/apps/web/src/routes/me/forks/+page.svelte +++ b/apps/web/src/routes/me/forks/+page.svelte @@ -57,7 +57,7 @@ - Meine Forks · Cardecky + Meine Forks · Wordeck

diff --git a/apps/web/src/routes/me/published/+page.svelte b/apps/web/src/routes/me/published/+page.svelte index e6ddae1..6c69bdd 100644 --- a/apps/web/src/routes/me/published/+page.svelte +++ b/apps/web/src/routes/me/published/+page.svelte @@ -96,12 +96,12 @@ const pageSubtitle = $derived( author ? `@${author.slug} · ${decks.length} Deck${decks.length !== 1 ? 's' : ''} veröffentlicht` - : 'Lege dein Author-Profil an um eigene Decks im Cardecky-Marketplace zu veröffentlichen.' + : 'Lege dein Author-Profil an um eigene Decks im Wordeck-Marketplace zu veröffentlichen.' ); - {pageTitle} · Cardecky + {pageTitle} · Wordeck
@@ -135,7 +135,7 @@