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>
38 lines
1.3 KiB
Swift
38 lines
1.3 KiB
Swift
import AppIntents
|
|
import SwiftUI
|
|
|
|
/// Siri-Shortcut: "Karten lernen". Öffnet die App im Decks-Tab.
|
|
/// Tatsächliche Tab-Aktivierung passiert via `cards://` URL-Scheme, das
|
|
/// RootView bereits handhabt.
|
|
struct StudyCardsIntent: AppIntent {
|
|
static let title: LocalizedStringResource = "Karten lernen"
|
|
static let description = IntentDescription(
|
|
"Öffnet Cardecky und zeigt deine Decks mit fälligen Karten.",
|
|
categoryName: "Lernen"
|
|
)
|
|
static let openAppWhenRun: Bool = true
|
|
|
|
@MainActor
|
|
func perform() async throws -> some IntentResult {
|
|
// Die App ist beim Ausführen schon geöffnet (openAppWhenRun);
|
|
// weitere Navigation passiert in RootView via Deep-Link, falls
|
|
// ein Parameter dazukommt. v1: simple App-Open.
|
|
.result()
|
|
}
|
|
}
|
|
|
|
/// Macht Intents direkt nach Install in Siri/Shortcuts-App sichtbar.
|
|
struct CardsAppShortcuts: AppShortcutsProvider {
|
|
static var appShortcuts: [AppShortcut] {
|
|
AppShortcut(
|
|
intent: StudyCardsIntent(),
|
|
phrases: [
|
|
"Karten lernen mit \(.applicationName)",
|
|
"Mit \(.applicationName) lernen",
|
|
"\(.applicationName) öffnen",
|
|
],
|
|
shortTitle: "Karten lernen",
|
|
systemImageName: "rectangle.stack"
|
|
)
|
|
}
|
|
}
|