From b5edf5cf2ecb62aca503ac1a25a92a2b649ee6b2 Mon Sep 17 00:00:00 2001 From: Till JS Date: Wed, 13 May 2026 15:11:11 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20User-facing=20Strings=20Cards=20?= =?UTF-8?q?=E2=86=92=20Cardecky=20komplett,=20Build=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- ShareExtension/ShareEditorView.swift | 2 +- Sources/App/CardsNativeApp.swift | 2 +- Sources/Core/Intents/StudyAppIntents.swift | 2 +- Sources/Resources/Localizable.xcstrings | 2 +- docs/MARKETING_COPY.md | 20 ++++++++++---------- docs/RELEASE_CHECKLIST.md | 2 +- project.yml | 8 ++++---- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/ShareExtension/ShareEditorView.swift b/ShareExtension/ShareEditorView.swift index 842afa3..f7b214b 100644 --- a/ShareExtension/ShareEditorView.swift +++ b/ShareExtension/ShareEditorView.swift @@ -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) } diff --git a/Sources/App/CardsNativeApp.swift b/Sources/App/CardsNativeApp.swift index 7cdc542..46bcc2e 100644 --- a/Sources/App/CardsNativeApp.swift +++ b/Sources/App/CardsNativeApp.swift @@ -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 { diff --git a/Sources/Core/Intents/StudyAppIntents.swift b/Sources/Core/Intents/StudyAppIntents.swift index a98efc2..d65e541 100644 --- a/Sources/Core/Intents/StudyAppIntents.swift +++ b/Sources/Core/Intents/StudyAppIntents.swift @@ -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 diff --git a/Sources/Resources/Localizable.xcstrings b/Sources/Resources/Localizable.xcstrings index 00f53d6..9f45a6f 100644 --- a/Sources/Resources/Localizable.xcstrings +++ b/Sources/Resources/Localizable.xcstrings @@ -31,7 +31,7 @@ "Card-Type »%@« kommt in einer späteren Phase" : { }, - "Cards" : { + "Cardecky" : { }, "Changelog" : { diff --git a/docs/MARKETING_COPY.md b/docs/MARKETING_COPY.md index 8b493ef..c327555 100644 --- a/docs/MARKETING_COPY.md +++ b/docs/MARKETING_COPY.md @@ -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. diff --git a/docs/RELEASE_CHECKLIST.md b/docs/RELEASE_CHECKLIST.md index 009b9fc..c8f965e 100644 --- a/docs/RELEASE_CHECKLIST.md +++ b/docs/RELEASE_CHECKLIST.md @@ -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 diff --git a/project.yml b/project.yml index c3d0ee6..2a39639 100644 --- a/project.yml +++ b/project.yml @@ -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: