Commit graph

3 commits

Author SHA1 Message Date
Till JS
2eb7f61f9c fix: ITMS-90129 — DisplayName Cards → Cardecky + Build 2
Apple lehnte Build 0.1.0(1) ab mit ITMS-90129: "The bundle uses a
bundle name or display name that is already taken." Im App-Store
gibt es schon Apps mit dem DisplayName "Cards" (u.a. Apples eigene
Grußkarten-App war so benannt). App-Store-Connect-App heißt sowieso
"Cardecky" — Brand-Konsistenz: DisplayName durchgehend "Cardecky".

Geändert:
- project.yml Main-App: CFBundleDisplayName Cards → Cardecky,
  CFBundleVersion 1 → 2 (Apple lehnt doppelte Build-Nummern ab)
- project.yml Widget: CFBundleDisplayName Cards Widget → Cardecky Widget,
  INFOPLIST_KEY_CFBundleDisplayName analog
- project.yml Share-Extension: CFBundleVersion 1 → 2
- LoginView Heading: "Cards" → "Cardecky"
- NotificationManager.content.title: "Cards" → "Cardecky"
- UITest: erwartet "Cardecky" statt "Cards"

Archive verifiziert: CFBundleDisplayName=Cardecky, CFBundleVersion=2,
ARCHIVE SUCCEEDED. Nach erneutem Upload via Xcode Organizer sollte
TestFlight den Build akzeptieren.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 15:05:33 +02:00
Till JS
4dfb32ba25 chore: Rebrand auf ev.mana.cardecky
Apple-Developer-Portal-App-ID lautet ev.mana.cardecky (analog zur
Domain cardecky.mana.how). Alle Bundle-IDs, App-Group, Keychain-
Group, OSLog-Subsysteme, URL-Schemes, Widget-Kind, App-Intent-Phrases,
Marketing-Texte und Doku nachgezogen.

Bundle-IDs neu:
- Main: ev.mana.cardecky
- Widget: ev.mana.cardecky.widget
- Share: ev.mana.cardecky.share
- Tests: ev.mana.cardecky.tests / .uitests

App-Group: group.ev.mana.cardecky
Keychain-Access-Group: $(AppIdentifierPrefix)ev.mana.cardecky
OSLog-Subsystem: ev.mana.cardecky

AASA gleichzeitig in cards-Repo angepasst (Commit 21ec535) und
auf mana-server redeployed — Probe liefert appID
"QP3GLU8PH3.ev.mana.cardecky".

Plus: ShareExtension/Resources/Info.plist + entitlements werden
jetzt analog zu Widget-Resources gitignored (sind XcodeGen-generated).

35 Unit-Tests + 1 UI-Test grün, alle drei Targets bauen.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 13:29:04 +02:00
Till JS
a1770fbc6a v0.7.0 — Phase β-6 Native-Polish
Drei Sub-Pakete: Keyboard-Shortcuts, Daily-Reminder-Notifications,
WidgetKit-Extension mit App-Group-Daten-Sharing. Siri-Shortcuts
und Share-Extension auf β-7 verschoben — niedrige Priorität, die
drei großen Brocken decken 90% des Native-Polish ab.

Keyboard-Shortcuts:
- Hidden Buttons in StudySessionView mit .keyboardShortcut
- Space = flip, 1/2/3/4 = again/hard/good/easy
- iPad-Magic-Keyboard + macOS-tauglich

Daily-Reminders:
- NotificationManager @Observable mit UNUserNotificationCenter
- Authorization-State + Permission-Request-Flow
- UNCalendarNotificationTrigger täglich zur konfigurierten Zeit
- SettingsView in AccountView mit Toggle + DatePicker
- UserDefaults-Persistierung von Hour/Minute/Enabled

WidgetKit-Extension:
- WidgetSnapshot Codable mit topDecks (Top-3 by dueCount) + totalDueCount
- WidgetSnapshotStore schreibt in group.ev.mana.cards-Container
- DeckListStore.refresh schreibt Snapshot + WidgetCenter.reloadAllTimelines
- CardsWidgetExtension-Target im project.yml (app-extension)
- CardsWidgetBundle + CardsDueWidget mit 5 Familien (small/medium/
  accessoryCircular/accessoryInline/accessoryRectangular)
- DueProvider TimelineProvider mit 30-min-Refresh
- DueWidgetView Family-Switch
- WidgetSnapshot.swift shared in beiden Targets via XcodeGen sources
- App-Group im Haupt- und Widget-Entitlement

35 Tests grün (keine neuen Tests in β-6 — WidgetKit + Notifications
sind System-API-Integrationen, Tests wären überwiegend Mocks).
Build inkl. Widget-Extension grün.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 01:00:04 +02:00