fix: User-facing Strings Cards → Cardecky komplett, Build 3

User-facing Rebrand:
- LoginView Heading (war schon in v0.8.5)
- NotificationManager.title (war schon in v0.8.5)
- ShareEditorView Footer-Text: "...in der Cards-App" → "...in der Cardecky-App"
- StudyAppIntents Description: "Öffnet Cards" → "Öffnet Cardecky"
- Localizable.xcstrings: "Cards" key → "Cardecky"
- NSPhotoLibraryUsageDescription: "Cards greift..." → "Cardecky greift..."
- Log.app.info("Cards starting") → "Cardecky starting"
- MARKETING_COPY.md: alle "Cards"-Treffer in DE + EN auf Cardecky
- RELEASE_CHECKLIST: App-Name "Cards" → "Cardecky"

Build-Nummer 2 → 3 (Apple lehnt doppelte Build-Nummern ab, Code-
Hash hat sich geändert).

Code-Identifier bleiben: CardsAPI, CardsTheme, CardsNativeApp,
CardsWidgetExtension, CardsShareExtension — interne Symbol-Namen,
nicht user-facing.

Archive verifiziert: CFBundleDisplayName=Cardecky, Build=3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-05-13 15:11:11 +02:00
parent 2eb7f61f9c
commit b5edf5cf2e
7 changed files with 19 additions and 19 deletions

View file

@ -39,7 +39,7 @@ struct ShareEditorView: View {
}
}
Section {
Text("Wähle das Ziel-Deck in der Cards-App.")
Text("Wähle das Ziel-Deck in der Cardecky-App.")
.font(.caption)
.foregroundStyle(.secondary)
}

View file

@ -18,7 +18,7 @@ struct CardsNativeApp: App {
auth.bootstrap()
_auth = State(initialValue: auth)
mediaCache = MediaCache(api: CardsAPI(auth: auth))
Log.app.info("Cards starting — auth status: \(String(describing: auth.status), privacy: .public)")
Log.app.info("Cardecky starting — auth status: \(String(describing: auth.status), privacy: .public)")
}
var body: some Scene {

View file

@ -7,7 +7,7 @@ import SwiftUI
struct StudyCardsIntent: AppIntent {
static let title: LocalizedStringResource = "Karten lernen"
static let description = IntentDescription(
"Öffnet Cards und zeigt deine Decks mit fälligen Karten.",
"Öffnet Cardecky und zeigt deine Decks mit fälligen Karten.",
categoryName: "Lernen"
)
static let openAppWhenRun: Bool = true

View file

@ -31,7 +31,7 @@
"Card-Type »%@« kommt in einer späteren Phase" : {
},
"Cards" : {
"Cardecky" : {
},
"Changelog" : {

View file

@ -7,7 +7,7 @@ gegenlesen, Tonalität an Vereins-Stil schärfen (siehe `mana/docs/BRAND.md`,
## Name + Subtitle
**App-Name:** `Cards`
**App-Name:** `Cardecky`
**Subtitle (max 30 Zeichen):** `Karteikarten — mana e.V.`
## Keywords (max 100 Zeichen, comma-separated)
@ -21,7 +21,7 @@ Karteikarten,Spaced Repetition,Lernen,Vokabeln,Anki,Flashcards,FSRS,mana,Verein,
## Description — DE (max 4000 Zeichen)
```
Cards ist die Karteikarten-App des Vereins mana e.V. — Spaced
Cardecky ist die Karteikarten-App des Vereins mana e.V. — Spaced
Repetition wie es sein soll: ohne Werbung, ohne Tracking, ohne
Abo-Zwang.
@ -33,13 +33,13 @@ KARTEN, WIE DU SIE BRAUCHST
- Audio-Karten für Sprachen und Aussprache
MODERNER LERN-ALGORITHMUS
Cards nutzt FSRS (Free Spaced Repetition Scheduler), den genauesten
Cardecky nutzt FSRS (Free Spaced Repetition Scheduler), den genauesten
offenen Algorithmus für Karteikarten. Karten kommen wieder, wenn du
sie wirklich brauchst — nicht nach willkürlichen Intervallen.
OFFLINE LERNEN
Karten cachen lokal auf deinem Gerät. Im Flugzeug, in der U-Bahn,
ohne WLAN — Cards funktioniert. Deine Bewertungen werden gequeued
ohne WLAN — Cardecky funktioniert. Deine Bewertungen werden gequeued
und beim nächsten Online-Moment automatisch hochgeladen.
WIDGETS UND NOTIFICATIONS
@ -53,7 +53,7 @@ Sprachen, Wissenschaft. Abonnieren = Karten landen direkt in deiner
Bibliothek, du kannst sie nach Belieben anpassen.
VEREIN, NICHT FIRMA
Cards wird vom Verein mana e.V. (Schweiz, in Gründung) betrieben.
Cardecky wird vom Verein mana e.V. (Schweiz, in Gründung) betrieben.
Kein Tracking, kein Werbe-Anbieter, kein Crash-Reporter. Wenn du dem
Verein etwas zurückgeben willst: mana-ev.ch/spende.
@ -71,7 +71,7 @@ selbst.
## Description — EN (max 4000 Zeichen)
```
Cards is the flashcard app from mana e.V. — spaced repetition the
Cardecky is the flashcard app from mana e.V. — spaced repetition the
way it should be: no ads, no tracking, no subscription pressure.
THE CARDS YOU NEED
@ -80,12 +80,12 @@ THE CARDS YOU NEED
- Audio cards for languages and pronunciation
MODERN SPACED-REPETITION
Cards uses FSRS (Free Spaced Repetition Scheduler), the most accurate
open algorithm available. Cards come back when you actually need them.
Cardecky uses FSRS (Free Spaced Repetition Scheduler), the most accurate
open algorithm available. Your cards come back when you actually need them.
OFFLINE-FIRST
Decks cache locally on your device. On a plane, in the subway, off
the grid — Cards keeps working. Your reviews queue up and sync on
the grid — Cardecky keeps working. Your reviews queue up and sync on
the next online moment.
WIDGETS AND REMINDERS
@ -97,7 +97,7 @@ Browse public decks from the Cardecky community: geography, languages,
science. Subscribe = decks land in your library, ready to be edited.
ASSOCIATION, NOT CORPORATION
Cards is operated by mana e.V. (Switzerland, formation in progress).
Cardecky is operated by mana e.V. (Switzerland, formation in progress).
No tracking, no ad networks, no crash reporters. Want to give back?
mana-ev.ch/donate.

View file

@ -88,7 +88,7 @@ AASA) und über Xcode (für Build + Sign).
- [ ] **App-Eintrag erstellen** unter https://appstoreconnect.apple.com
mit Bundle-ID `ev.mana.cardecky`.
- [ ] **App-Name** + **Subtitle** (max 30 Zeichen):
- Name: "Cards"
- Name: "Cardecky"
- Subtitle: "Karteikarten — Verein mana"
- [ ] **Description** (de + en, max 4000 Zeichen). Vorschlag in
[`docs/MARKETING_COPY.md`](MARKETING_COPY.md) — vor Submission

View file

@ -55,7 +55,7 @@ targets:
path: Sources/Resources/Info.plist
properties:
CFBundleShortVersionString: "0.1.0"
CFBundleVersion: "2"
CFBundleVersion: "3"
CFBundleDevelopmentRegion: de
CFBundleDisplayName: Cardecky
LSApplicationCategoryType: "public.app-category.education"
@ -75,7 +75,7 @@ targets:
- cards
NSUserActivityTypes:
- NSUserActivityTypeBrowsingWeb
NSPhotoLibraryUsageDescription: "Cards greift auf deine Fotos zu, damit du Bilder zu Image-Occlusion-Karten hinzufügen kannst."
NSPhotoLibraryUsageDescription: "Cardecky greift auf deine Fotos zu, damit du Bilder zu Image-Occlusion-Karten hinzufügen kannst."
ITSAppUsesNonExemptEncryption: false
entitlements:
path: Sources/Resources/CardsNative.entitlements
@ -111,7 +111,7 @@ targets:
properties:
CFBundleDisplayName: Als Karte speichern
CFBundleShortVersionString: "0.1.0"
CFBundleVersion: "2"
CFBundleVersion: "3"
NSExtension:
NSExtensionPointIdentifier: com.apple.share-services
NSExtensionPrincipalClass: $(PRODUCT_MODULE_NAME).ShareViewController
@ -144,7 +144,7 @@ targets:
properties:
CFBundleDisplayName: Cardecky Widget
CFBundleShortVersionString: "0.1.0"
CFBundleVersion: "2"
CFBundleVersion: "3"
NSExtension:
NSExtensionPointIdentifier: com.apple.widgetkit-extension
entitlements: