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>
This commit is contained in:
parent
80eb3708b4
commit
07ada72b0f
10 changed files with 1015 additions and 24 deletions
57
PLAN.md
57
PLAN.md
|
|
@ -1,10 +1,9 @@
|
|||
# Plan — cards-native (SwiftUI Universal)
|
||||
|
||||
**Stand: 2026-05-13 — Phasen β-0 bis β-4 abgeschlossen.**
|
||||
Alle 7 Card-Types werden gerendert und können erstellt werden,
|
||||
inklusive image-occlusion (Touch-Drag-Mask-Editor) und audio-front
|
||||
(File-Picker + AVAudioPlayer). MediaCache mit LRU 200 MB.
|
||||
30 Unit-Tests + 1 UI-Test grün.
|
||||
**Stand: 2026-05-13 — Phasen β-0 bis β-5 abgeschlossen.**
|
||||
Alle 7 Card-Types + voller Marketplace (Explore/Browse/Subscribe)
|
||||
+ TabBar + Universal-Link-Handling für `cardecky.mana.how/d/<slug>`.
|
||||
35 Unit-Tests + 1 UI-Test grün.
|
||||
|
||||
Pflicht-Check für β-2: Endurance-Test auf realem Gerät (200+ Karten
|
||||
mit Flugmodus zwischendurch) steht aus — Aufgabe für Till.
|
||||
|
|
@ -28,6 +27,30 @@ mit Flugmodus zwischendurch) steht aus — Aufgabe für Till.
|
|||
- `LoginView` (Email/PW gegen mana-auth)
|
||||
- 3 Unit-Tests (AppConfig)
|
||||
|
||||
✅ **β-5 — Marketplace (2026-05-13, Tag `v0.6.0`)**
|
||||
- `PublicDeckEntry`, `PublicDeck`, `PublicDeckVersion`, `PublicDeckOwner`,
|
||||
`PublicDeckDetail`, `ExploreResponse`, `BrowseResponse`,
|
||||
`SubscribeResponse` Codable-DTOs mit snake_case
|
||||
- `MarketplaceSort` Enum (recent/popular/trending) mit deutschen Labels
|
||||
- `CardsAPI`: explore(), browseMarketplace(query:sort:language:),
|
||||
publicDeck(slug:), subscribe(slug:), unsubscribe(slug:)
|
||||
- `MarketplaceStore` @Observable mit Explore-State + Browse-State
|
||||
- `ExploreView` mit Featured + Trending Carousels, Browse-Link
|
||||
- `BrowseView` mit Searchable + Sort-Picker + Liste
|
||||
- `PublicDeckView` mit Header + Version + Owner + Subscribe-Button
|
||||
(Auto-Fork serverseitig, danach NavigationLink zum eigenen Deck)
|
||||
- `PublicDeckCard` + `BrowseRow` Komponenten mit forest-Theme
|
||||
- `RootView` → TabBar (Decks / Entdecken / Account) statt Single-View
|
||||
- Universal-Link-Handler in `RootView` (onOpenURL + onContinueUserActivity):
|
||||
`https://cardecky.mana.how/d/<slug>` und `cards://d/<slug>` → Explore-Tab
|
||||
öffnet `PublicDeckView`
|
||||
- `associated-domains: applinks:cardecky.mana.how` im entitlement
|
||||
- 5 neue Marketplace-Decoding-Tests (35 Total grün)
|
||||
|
||||
**Wichtig:** Universal-Links funktionieren erst, wenn AASA-Endpoint
|
||||
unter `cardecky.mana.how/.well-known/apple-app-site-association`
|
||||
ausgeliefert wird — heute 404. Web-seitige Aufgabe.
|
||||
|
||||
✅ **β-4 — Media + Advanced Card-Types (2026-05-13, Tag `v0.5.0`)**
|
||||
- `MediaUploadResponse` DTO + `MediaKind`-Enum
|
||||
- `MaskRegion` Codable mit 0..1-Coordinates, `MaskRegions.parse/encode`-
|
||||
|
|
@ -112,26 +135,20 @@ mit Flugmodus zwischendurch) steht aus — Aufgabe für Till.
|
|||
| β-2 | ✅ 2026-05-13 | Study-Loop, Offline-Grade-Queue (Endurance-Test offen) |
|
||||
| β-3 | ✅ 2026-05-13 | Editor: Deck-CRUD + Card-Create (5 Types); Anki-Import auf β-3-ext verschoben |
|
||||
| β-4 | ✅ 2026-05-13 | Media-Upload, image-occlusion (Touch-Mask-Editor), audio-front (AVAudioPlayer) |
|
||||
| β-5 | — | Marketplace, Universal-Links |
|
||||
| β-5 | ✅ 2026-05-13 | Marketplace (Explore/Browse/Subscribe) + TabBar + Universal-Link-Handler (AASA server-side pending) |
|
||||
| β-6 | — | Native-Polish (Widgets, Notifications, Share-Extension) |
|
||||
| β-7 | — | App-Store-Submission |
|
||||
|
||||
## Nächste Schritte für β-5 (Marketplace)
|
||||
## Nächste Schritte für β-6 (Native-Polish)
|
||||
|
||||
Aus Greenfield-Plan-Sektion "Phase β-5":
|
||||
Aus Greenfield-Plan-Sektion "Phase β-6":
|
||||
|
||||
1. `ExploreView`: GET `/api/v1/marketplace/explore` — Featured/Trending
|
||||
2. `BrowseView`: GET `/api/v1/marketplace/decks/browse` mit Filter-Bar
|
||||
3. `PublicDeckView`: GET `/api/v1/marketplace/decks/:slug` — Detail mit
|
||||
Subscribe-Button (= POST `/subscribe/:slug`, Auto-Fork)
|
||||
4. Subscribed-Decks-Liste als zweite Section in `DeckListView`
|
||||
5. **Universal-Links**: `cardecky.mana.how/d/:slug` öffnet App direkt
|
||||
|
||||
**Erfolgskriterium:** Drei Live-Decks (geografie-welt-top30, english-a2,
|
||||
periodensystem-elemente) sichtbar, subscribebar, lernbar.
|
||||
|
||||
**Vorbedingung:** AASA auf `cardecky.mana.how/.well-known/apple-app-site-association`
|
||||
muss aufgesetzt werden — heute 404. Aufgabe ans Cards-Web-Repo.
|
||||
1. WidgetKit-Extension (Small, Medium, Lock-Screen) mit Due-Count
|
||||
2. UNUserNotificationCenter — tägliche Reminder zur konfigurierten Zeit
|
||||
3. Siri-Shortcuts ("Karten lernen" → Default-Deck)
|
||||
4. Share-Extension "Save as Card" für Safari/Mail
|
||||
5. Keyboard-Shortcuts iPad/macOS (Space=flip, 1-4=Rating, J/K=next/prev)
|
||||
6. App-Group `group.ev.mana.cards` für Widget-Daten-Sharing
|
||||
|
||||
## Notizen aus β-4
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue