Commit graph

5 commits

Author SHA1 Message Date
Till JS
6805bd78c7 feat(decks): iOS-26 tabViewBottomAccessory für „Neues Deck"-Pille
Ersetzt den bottomBar-„+"-Button auf iOS 26 durch eine schwebende
Liquid-Glass-Pille via `.tabViewBottomAccessory`, nur sichtbar wenn
der Decks-Tab aktiv ist. iOS 18-Geräte behalten den bestehenden
bottomBar-Button (gated via `if #unavailable(iOS 26.0)`).

`showCreate` wandert als Binding von DeckListView nach RootView,
damit das Accessory den Sheet triggern kann.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 19:08:57 +02:00
Till JS
33101d703d feat(auth): DEBUG-Auto-Login (Memoro-Pattern)
Bei lokalen Xcode-Run-Builds wird beim Start automatisch eingeloggt
wenn der Keychain leer ist. Spart das manuelle Login bei jedem
Re-Install via Xcode.

- Sources/Core/Auth/DebugCredentials.swift — #if DEBUG-gewrappte
  Founder-Credentials (tills95@gmail.com / Aa-123456789)
- Sources/Core/Auth/AuthClient+EnsureSignedIn.swift — Extension
  ensureSignedIn() prüft .signedOut → signIn() in DEBUG
- RootView.task ruft auth.ensureSignedIn() — Release-Builds No-Op
  (Release/TestFlight/App-Store bleiben unverändert, User muss
  manuell einloggen)

Pattern 1:1 von memoro-native (gleiches File-Layout +
Klassennamen).

Build 9 → 10.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 17:50:29 +02:00
Till JS
07ada72b0f v0.6.0 — Phase β-5 Marketplace
Voller Marketplace-Flow mit TabBar und Universal-Link-Handler.
Drei Live-Decks (Geografie, English A2, Periodensystem) sind
browse-, abonnier- und lernbar.

- PublicDeckEntry/PublicDeck/PublicDeckVersion/PublicDeckOwner/
  PublicDeckDetail Codable mit snake_case
- ExploreResponse, BrowseResponse, SubscribeResponse
- MarketplaceSort-Enum (recent/popular/trending)
- CardsAPI.explore/browseMarketplace/publicDeck/subscribe/unsubscribe
- MarketplaceStore @Observable mit Explore + Browse States
- ExploreView: Featured + Trending Horizontal-Carousels, Browse-Link
- BrowseView: Searchable + Sort-Picker + List
- PublicDeckView: Header/Metadata/Subscribe — Subscribe löst Auto-Fork
  serverseitig aus, Response liefert private_deck_id, NavigationLink
  zum eigenen Deck
- PublicDeckCard + BrowseRow mit forest-Theme
- RootView: TabBar (Decks/Entdecken/Account) statt Single-View
- Universal-Link-Handler: onOpenURL + onContinueUserActivity für
  https://cardecky.mana.how/d/<slug> und cards://d/<slug>
- associated-domains: applinks:cardecky.mana.how im entitlement
- 5 neue Marketplace-Decoding-Tests (35 Total grün)

Universal-Links funktionieren erst nach AASA-Setup auf
cardecky.mana.how/.well-known/apple-app-site-association
(Web-Aufgabe, heute 404).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 00:51:12 +02:00
Till JS
f664a00b64 v0.2.0 — Phase β-1 Decks lesen
Deck-Liste mit Web-Parität: alle eigenen Decks aus cardecky-api,
Card-/Due-Counts pro Deck (Web-Pattern: separate Calls), Pull-to-
Refresh, Offline-Read via SwiftData, Inbox-Banner für Marketplace-
Forks.

- Deck-Codable-DTO mit snake_case-CodingKeys (DeckCategory,
  DeckVisibility, FsrsSettings)
- ISO8601-Date-Decoder mit Fractional-Seconds-Toleranz
- CardsAPI.listDecks() + cardCount() + dueCount()
- CachedDeck SwiftData-Model mit lastFetchedAt
- DeckListStore (API + Cache, paralleles Counts-Fetching via TaskGroup)
- DeckListView mit forest-Theme, deck.color-Streifen, Inbox-Banner
- AccountView mit Sign-out
- DashboardView durch DeckListView ersetzt
- 6 Unit-Tests + 1 UI-Test grün

Phasen-Plan: mana/docs/playbooks/CARDS_NATIVE_GREENFIELD.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 00:06:28 +02:00
Till JS
28b20cd934 v0.1.0 — Phase β-0 Setup
Repo-Skelett für cards-native, native SwiftUI-Universal-App
für Cardecky (mana e.V.). Web-Parität zu cardecky.mana.how.

- project.yml mit Bundle ev.mana.cards, ManaSwiftCore-Dep via path
- AppConfig: auth.mana.how + cardecky-api.mana.how, Keychain ev.mana.cards
- CardsTheme: forest-Werte aus mana/packages/themes/.../forest.css
- LoginView (Email/PW gegen mana-auth via ManaCore.AuthClient)
- DashboardView als β-1-Placeholder mit cardecky-api-Reachability-Probe
- Log unter Subsystem ev.mana.cards
- 3 AppConfig-Tests
- iOS-Simulator-Build grün

Phasen-Plan: mana/docs/playbooks/CARDS_NATIVE_GREENFIELD.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 19:29:45 +02:00