Brand-Wechsel zu Wordeck (wordeck.com) ist beschlossen (2026-05-17).
Wordeck wird text-only — image-occlusion und audio fallen weg, neuer
iOS-Bundle ev.mana.wordeck, Pre-Cutover-Export für betroffene User.
- STATUS.md: Banner am Anfang mit Verweis auf das Playbook
- CLAUDE.md: neue Architektur-Invariante 0 (Text-only)
- CONTENT_PLAN.md: Owner-Slug cardecky bleibt, Brand-Wechsel-Notice
Vollständiger Plan: mana/docs/playbooks/WORDECK_REBRAND.md (eigener
Commit im mana-Repo).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Tracking-Update nach der Cardecky-Content-Welle vom 2026-05-17. Alle
Phase-1-Tier-A-Decks aus §8 (Naturwissenschaften, Sprache, Mathe,
Geografie/Geschichte) sind jetzt im Marketplace ✅. Dazu 5 neue
Tier-B-Bonus-Decks (B-16..B-20): Schweizer Kantone, Helvetismen,
Informatik Sek 1, Italienisch A2 (534), Latein-Grundwortschatz (199).
Marketplace-Stand: 43 Decks · 5572 Karten · 100 % kategorisiert
(language/science/math/history/technology). Audit-Trail pro Deck
liegt außerhalb des Repos in ~/Documents/cards-drafts/ (laut
Cardecky-Skill-Konvention).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Routes (additiv unter /api/v1/marketplace/*):
- POST/GET /authors/me — eigenes Author-Profil anlegen/updaten/lesen
- GET /authors/:slug — public Profile-Lookup (banned-reason gestrippt)
- POST /decks — Deck-Init (Slug-Validation + Pflicht-Author-Profil +
CHECK auf paid + Pro-License)
- POST /decks/:slug/publish — Versions-Snapshot mit per-Karte
cardContentHash aus @cards/domain, per-Version-Hash, AI-Mod-Stub-Log,
atomarer latest_version_id-Bump in Drizzle-Transaction
- PATCH /decks/:slug — Metadaten-Update (Owner-Only)
- GET /decks/:slug — Public-Detail mit optional-auth-Middleware
Geport aus cards-decommission-base:services/cards-server/, mit
Greenfield-Anpassungen:
- Hashing über @cards/domain.cardContentHash (gemeinsame SoT
zwischen privatem cards.cards und marketplace.deck_cards), per-
Version-Hash als SHA-256 über sortierte Karten-Hashes mit Ord-Prefix
- AI-Moderation als R2-Stub (pass+rationale+model='stub'),
echte mana-llm-Anbindung in späterer Welle
- Auth-Middleware-Shape an Greenfield (userId/tier/authMode in
c.get(...) statt user-Object), optional-auth als Schwester für
anonymen Public-Read
- Hono-typing: outer Marketplace-Decks-Router ist Partial<AuthVars>
weil Public-GET kein JWT braucht; Auth-Subroute ist strict
Lese-Referenz:
- 3331 LOC altes cards-server-Code (routes, services, middleware,
lib) unter docs/marketplace/archive/code/ archiviert. Read-only,
nicht im Build-Path.
Verifikation:
- 16 neue Vitest-Tests (Slug + Version-Hash), 72 gesamt grün
- type-check 0 errors
- E2E-Smoke gegen lokale cards-api: Cardecky-Author + Deck
r2-stoische-ethik mit 3 Karten v1.0.0 (basic + basic + cloze),
per-Karten-Hashes geschrieben, ai_moderation_log-Row da, semver-409
+ paid-422-Errors verifiziert. Smoke-Daten danach aufgeräumt.
Verbleibend für R3+: Discovery (explore + search), Engagement (stars/
subscribe/fork), Smart-Merge mit FSRS-State-Erhalt; danach R4 PRs +
Card-Discussions, R5 Frontend-Routes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>