refactor(big-bang): cards-native → wordeck-native

Code + Identity-Rename zur Vorbereitung auf Apple-Dev-Portal-Aktion
(Bundle ev.mana.wordeck, App-Group group.ev.mana.wordeck, AASA
applinks:wordeck.com). Build bleibt funktional, aber gegen die
neue text-only-API können image-occlusion-Creates 422 zurückgeben —
das wird mit der Wordeck-Native v1.0-Welle (parallele Apple-Aktion)
sauber gemacht.

Umbenennung:
- 41 Files: cardecky/Cardecky → wordeck/Wordeck (Display, Strings,
  Kommentare)
- 57 Files: CardsNative → WordeckNative, CardsAPI → WordeckAPI,
  CardsTheme → WordeckTheme, CardsBrand → WordeckBrand, CardsWidget →
  WordeckWidget, CardsDueWidget → WordeckDueWidget
- Bundle-ID ev.mana.cardecky → ev.mana.wordeck (project.yml,
  Info.plist, entitlements, Keychain-Service, App-Group)
- AASA applinks:cardecky.mana.how → applinks:wordeck.com
- API-Base cardecky-api.mana.how → api.wordeck.com
- 10 Files renamed (App-Entry, API-Extensions, Theme, Widget,
  Entitlements, Tests)
- xcodeproj regenerated via xcodegen → WordeckNative.xcodeproj
- MaskRegionsTests.swift gelöscht (image-occlusion entfällt mit
  Wordeck text-only)

Forgejo-Repo git.mana.how/till/cards-native → wordeck-native umbenannt
(Auto-Redirect aktiv). Lokales Verzeichnis Code/cards-native/ bleibt
vorerst — wird beim nächsten Apple-Setup mit Bundle-Test umbenannt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-05-17 23:10:42 +02:00
parent 4f154bfb39
commit 542082772a
83 changed files with 691 additions and 648 deletions

View file

@ -1,4 +1,4 @@
# RELEASE_CHECKLIST — cards-native
# RELEASE_CHECKLIST — wordeck-native
Externe Schritte vor App-Store-Submission. Alles unter dieser
Sektion läuft NICHT durch das Repo — sondern durch das Apple-
@ -11,14 +11,14 @@ AASA) und über Xcode (für Build + Sign).
- [x] **Team-ID gesetzt** (`QP3GLU8PH3`, mana e.V.) — `DEVELOPMENT_TEAM`
in `project.yml > settings > base`. Greift bei Archive automatisch.
- [ ] **App-ID `ev.mana.cardecky`** im Developer-Portal anlegen, falls
- [ ] **App-ID `ev.mana.wordeck`** im Developer-Portal anlegen, falls
noch nicht da. Mit Capabilities: App Groups, Keychain Sharing,
Associated Domains.
- [ ] **App-ID `ev.mana.cardecky.share`** + **`ev.mana.cardecky.widget`** für
- [ ] **App-ID `ev.mana.wordeck.share`** + **`ev.mana.wordeck.widget`** für
die Extensions analog anlegen, ebenfalls mit App Groups.
- [ ] **App-Group `group.ev.mana.cardecky`** im Portal anlegen und allen
- [ ] **App-Group `group.ev.mana.wordeck`** im Portal anlegen und allen
drei App-IDs zuweisen.
- [ ] **Keychain-Access-Group**: heute `ev.mana.cardecky`. Wenn
- [ ] **Keychain-Access-Group**: heute `ev.mana.wordeck`. Wenn
Shared-Keychain mit `memoro-native` gewünscht (siehe
`mana/docs/MANA_SWIFT.md` Phase γ), auf
`$(AppIdentifierPrefix)ev.mana.shared` umstellen und
@ -40,7 +40,7 @@ AASA) und über Xcode (für Build + Sign).
### Server-seitige Vorbedingungen
- [x] **AASA-Endpoint** auf `cardecky.mana.how/.well-known/apple-app-site-association`
- [x] **AASA-Endpoint** auf `wordeck.com/.well-known/apple-app-site-association`
— SvelteKit-Server-Route gebaut in
`cards/apps/web/src/routes/.well-known/apple-app-site-association/+server.ts`
(2026-05-13). Content-Type `application/json`, paths `/d/*` und
@ -50,11 +50,11 @@ AASA) und über Xcode (für Build + Sign).
(Commit folgt). Wird zur Runtime von `$env/dynamic/public`
aufgelöst und in den AASA-Response geschrieben.
- [x] **Production-Deploy von cards-web** durchgeführt 2026-05-13.
Probe von außen: `curl https://cardecky.mana.how/.well-known/apple-app-site-association`
liefert `application/json` mit `"appID":"QP3GLU8PH3.ev.mana.cardecky"`.
Probe von außen: `curl https://wordeck.com/.well-known/apple-app-site-association`
liefert `application/json` mit `"appID":"QP3GLU8PH3.ev.mana.wordeck"`.
Cloudflare-Tunnel reicht den Endpoint sauber durch (kein
HTML-Captive, kein Redirect).
- [ ] **cardecky-api.mana.how** muss erreichbar bleiben — die App
- [ ] **api.wordeck.com** muss erreichbar bleiben — die App
ist 100% Online-write. Health-Probe verifizieren.
### Build + Archive
@ -70,7 +70,7 @@ AASA) und über Xcode (für Build + Sign).
- [ ] **Cross-Device:** Web↔Native parallel. Karte gegrade in App →
Web zeigt nach Reload identischen Review-State.
- [ ] **Widget:** ans Home-Screen pinnen, Due-Count nach App-Refresh.
- [ ] **Universal-Link:** `https://cardecky.mana.how/d/<slug>` in
- [ ] **Universal-Link:** `https://wordeck.com/d/<slug>` in
Safari öffnen → App startet auf Explore-Tab + Public-Deck-Detail.
- [ ] **Share-Extension:** Text in Safari markieren → Teilen → "Als
Karte speichern" → Karte landet in der App.
@ -86,9 +86,9 @@ AASA) und über Xcode (für Build + Sign).
### App-Store-Connect
- [ ] **App-Eintrag erstellen** unter https://appstoreconnect.apple.com
mit Bundle-ID `ev.mana.cardecky`.
mit Bundle-ID `ev.mana.wordeck`.
- [ ] **App-Name** + **Subtitle** (max 30 Zeichen):
- Name: "Cardecky"
- Name: "Wordeck"
- Subtitle: "Karteikarten — Verein mana"
- [ ] **Description** (de + en, max 4000 Zeichen). Vorschlag in
[`docs/MARKETING_COPY.md`](MARKETING_COPY.md) — vor Submission
@ -97,11 +97,11 @@ AASA) und über Xcode (für Build + Sign).
"Karteikarten,Spaced Repetition,Lernen,Vokabeln,Anki,Flashcards,FSRS,mana,Verein,Open Source"
- [ ] **Screenshots** für iPhone 16 Pro Max + iPhone SE-3 + iPad Pro.
6.7", 6.5", 5.5", iPad 12.9" — siehe Apple's Specs.
- [x] **Privacy-Policy-URL**: `https://cardecky.mana.how/privacy` (live
- [x] **Privacy-Policy-URL**: `https://wordeck.com/privacy` (live
seit 2026-05-13, SvelteKit-Route mit Verein-Content).
- [x] **Support-URL**: `https://cardecky.mana.how/help` (live, FAQ +
- [x] **Support-URL**: `https://wordeck.com/help` (live, FAQ +
Kontakt-Email kontakt@mana-ev.ch).
- [ ] **Marketing-URL** (optional) — `cardecky.mana.how`.
- [ ] **Marketing-URL** (optional) — `wordeck.com`.
- [ ] **Age-Rating**: vermutlich 4+ (no objectionable content).
- [ ] **Pricing**: Free.
- [ ] **App-Privacy** (Data Type Declaration):
@ -124,7 +124,7 @@ AASA) und über Xcode (für Build + Sign).
### Hub-App vs Standalone-App (siehe MANA_SWIFT.md)
- [x] Entschieden: separate Apps. memoro-native und cards-native sind
- [x] Entschieden: separate Apps. memoro-native und wordeck-native sind
eigenständige App-Store-Einträge. Keine Hub-App.
## Carryover-Tasks (β-6 / β-7-Reste)
@ -144,7 +144,7 @@ AASA) und über Xcode (für Build + Sign).
## Nach Submission
- [ ] **Monitoring**: nach Release `cardecky-api.mana.how/healthz` und
- [ ] **Monitoring**: nach Release `api.wordeck.com/healthz` und
Rate-Limit-Auslastung beobachten — Native-App kann Last-Spitzen
erzeugen.
- [ ] **DSGVO-Endpoint** (`/api/v1/dsgvo/export`, `/delete`) testweise