Some checks failed
CI / validate (push) Has been cancelled
Tag 1: Phase 0–10c Marathon, Live-Cut auf cardecky.mana.how. Tag 2: Marketplace-Restore (Phase 12 R0–R5 + G1–G4). Tag 3: Karten-Typ-Vollausbau (Periodensystem, audio, typing, multiple-choice, Vision-LLM-Deck-Generation). Tag 4: Mobile-Nav + 5 Sprachen + CSV/PDF + Astro-Landing. Tag 5: Security-Hardening (fail-secure, CSP, DSGVO-Audit, rate-limit) + Leech-Detection + AASA. Tag 6: Recovery + Undo + FSRS-Slider + Streak + Stats-Charts + Blog + Marketplace-Report + Privacy/Help. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
513 lines
12 KiB
JSON
513 lines
12 KiB
JSON
{
|
|
"date": "2026-05-08",
|
|
"day_number": 1,
|
|
"weekday": "Freitag",
|
|
"commits": 45,
|
|
"authors": [
|
|
{
|
|
"name": "Till JS",
|
|
"count": 38
|
|
},
|
|
{
|
|
"name": "Till",
|
|
"count": 7
|
|
}
|
|
],
|
|
"additions": 15371,
|
|
"deletions": 1122,
|
|
"net_lines": 14249,
|
|
"files_changed": 134,
|
|
"new_files": 0,
|
|
"deleted_files": 0,
|
|
"session": {
|
|
"first_commit_at": "2026-05-08T12:08:41.000Z",
|
|
"last_commit_at": "2026-05-08T20:10:52.000Z",
|
|
"total_span_minutes": 482,
|
|
"active_minutes": 244,
|
|
"pauses": [
|
|
{
|
|
"from": "14:41",
|
|
"to": "16:43",
|
|
"minutes": 122
|
|
},
|
|
{
|
|
"from": "18:52",
|
|
"to": "20:09",
|
|
"minutes": 77
|
|
},
|
|
{
|
|
"from": "21:11",
|
|
"to": "21:50",
|
|
"minutes": 39
|
|
}
|
|
],
|
|
"longest_focus_minutes": 130
|
|
},
|
|
"top_dirs": [
|
|
{
|
|
"path": "apps/web/src/lib",
|
|
"pct": 20
|
|
},
|
|
{
|
|
"path": "apps/web/src/routes",
|
|
"pct": 14
|
|
},
|
|
{
|
|
"path": "packages/cards-domain/src",
|
|
"pct": 12
|
|
},
|
|
{
|
|
"path": "apps/api/src/routes",
|
|
"pct": 8
|
|
},
|
|
{
|
|
"path": "apps/api/src/db",
|
|
"pct": 4
|
|
}
|
|
],
|
|
"top_extensions": [
|
|
{
|
|
"ext": ".ts",
|
|
"count": 159
|
|
},
|
|
{
|
|
"ext": ".svelte",
|
|
"count": 59
|
|
},
|
|
{
|
|
"ext": ".json",
|
|
"count": 23
|
|
},
|
|
{
|
|
"ext": ".md",
|
|
"count": 14
|
|
},
|
|
{
|
|
"ext": ".yml",
|
|
"count": 10
|
|
},
|
|
{
|
|
"ext": ".yaml",
|
|
"count": 7
|
|
}
|
|
],
|
|
"tags": [
|
|
"prod-compose",
|
|
"dockerfiles",
|
|
"api Dockerfile",
|
|
"prod",
|
|
"auth"
|
|
],
|
|
"commits_list": [
|
|
{
|
|
"hash": "8605b1b",
|
|
"short": "Phase 0+1: Repo-Skelett für Cards-Greenfield",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 1197,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-08T14:08:41+02:00"
|
|
},
|
|
{
|
|
"hash": "45a47e0",
|
|
"short": "Phase 3: Domain-Modell + Decks/Cards/Reviews-CRUD",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 1897,
|
|
"deletions": 106,
|
|
"timestamp": "2026-05-08T14:21:54+02:00"
|
|
},
|
|
{
|
|
"hash": "5f67bd9",
|
|
"short": "Phase 3 follow-up: type-check + tests grün, ts-fsrs v5 API",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 2345,
|
|
"deletions": 35,
|
|
"timestamp": "2026-05-08T14:41:04+02:00"
|
|
},
|
|
{
|
|
"hash": "e3b3a2b",
|
|
"short": "docs: SMOKE_TEST.md — verifizierter E2E-Lauf gegen lokale Postgres",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 111,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-08T16:43:07+02:00"
|
|
},
|
|
{
|
|
"hash": "89a7a92",
|
|
"short": "Phase 4: Frontend-Core MVP — Decks, Cards, Study mit FSRS-Loop",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 1582,
|
|
"deletions": 58,
|
|
"timestamp": "2026-05-08T16:52:31+02:00"
|
|
},
|
|
{
|
|
"hash": "0328caa",
|
|
"short": "Phase 5: Föderations-Endpunkte — Cards ist föderierter Peer",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 1371,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-08T17:10:35+02:00"
|
|
},
|
|
{
|
|
"hash": "2bed282",
|
|
"short": "docs: STATUS.md als Single Source of Truth für Cards-Onboarding",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 336,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-08T17:18:16+02:00"
|
|
},
|
|
{
|
|
"hash": "553a78d",
|
|
"short": "Phase 8a: Cloze als MVP-Card-Type, Cluster-Counter",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 248,
|
|
"deletions": 13,
|
|
"timestamp": "2026-05-08T17:35:39+02:00"
|
|
},
|
|
{
|
|
"hash": "0b609c4",
|
|
"short": "Phase 8b: Cloze-Render im Study-View",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 18,
|
|
"deletions": 1,
|
|
"timestamp": "2026-05-08T17:37:53+02:00"
|
|
},
|
|
{
|
|
"hash": "2ca09fe",
|
|
"short": "Phase 8c: Anki-Import via portiertem Parser",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 916,
|
|
"deletions": 3,
|
|
"timestamp": "2026-05-08T17:43:12+02:00"
|
|
},
|
|
{
|
|
"hash": "9da10b3",
|
|
"short": "Phase 8d: STATUS.md auf Phase-8-Stand aktualisiert",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 78,
|
|
"deletions": 20,
|
|
"timestamp": "2026-05-08T17:46:33+02:00"
|
|
},
|
|
{
|
|
"hash": "0a40367",
|
|
"short": "Phase 9a: Card-Edit-Page für alle 3 CardTypes",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 247,
|
|
"deletions": 4,
|
|
"timestamp": "2026-05-08T17:51:42+02:00"
|
|
},
|
|
{
|
|
"hash": "35366ed",
|
|
"short": "Phase 9b: Cloze-Editor in /cards/new",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 113,
|
|
"deletions": 38,
|
|
"timestamp": "2026-05-08T17:52:55+02:00"
|
|
},
|
|
{
|
|
"hash": "47419b3",
|
|
"short": "Phase 9c: Inbox-Banner auf /decks und /study",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 63,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-08T17:54:19+02:00"
|
|
},
|
|
{
|
|
"hash": "aff4d95",
|
|
"short": "Phase 9d: Pre-Flight — Protocol-Mirror durch upstream ersetzt",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 83,
|
|
"deletions": 175,
|
|
"timestamp": "2026-05-08T18:00:56+02:00"
|
|
},
|
|
{
|
|
"hash": "03117d5",
|
|
"short": "Phase 9e: Account-Page mit DSGVO-Self-Service",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 316,
|
|
"deletions": 52,
|
|
"timestamp": "2026-05-08T18:03:41+02:00"
|
|
},
|
|
{
|
|
"hash": "6db6dc3",
|
|
"short": "Phase 9f: Statistik-Dashboard",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 238,
|
|
"deletions": 2,
|
|
"timestamp": "2026-05-08T18:06:13+02:00"
|
|
},
|
|
{
|
|
"hash": "a640594",
|
|
"short": "docs: STATUS.md auf Phase-9-Polish-Stand",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 60,
|
|
"deletions": 26,
|
|
"timestamp": "2026-05-08T18:07:53+02:00"
|
|
},
|
|
{
|
|
"hash": "c25c1d0",
|
|
"short": "Phase 9g: i18n DE/EN über alle Routes",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 826,
|
|
"deletions": 270,
|
|
"timestamp": "2026-05-08T18:22:00+02:00"
|
|
},
|
|
{
|
|
"hash": "fd86d96",
|
|
"short": "Phase 9h: A11y-Pass",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 87,
|
|
"deletions": 7,
|
|
"timestamp": "2026-05-08T18:24:33+02:00"
|
|
},
|
|
{
|
|
"hash": "4b451f1",
|
|
"short": "Phase 9i: Cloze-Hint-Anzeige",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 60,
|
|
"deletions": 12,
|
|
"timestamp": "2026-05-08T18:26:00+02:00"
|
|
},
|
|
{
|
|
"hash": "593d447",
|
|
"short": "Phase 9j: Anki-Re-Import-Dedupe via content_hash",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 176,
|
|
"deletions": 8,
|
|
"timestamp": "2026-05-08T18:29:56+02:00"
|
|
},
|
|
{
|
|
"hash": "e7ae93d",
|
|
"short": "docs: STATUS.md auf Phase-9-Welle-2-Stand",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 42,
|
|
"deletions": 15,
|
|
"timestamp": "2026-05-08T18:31:57+02:00"
|
|
},
|
|
{
|
|
"hash": "c9eb0a6",
|
|
"short": "Phase 9k: Media-Upload via MinIO-Container",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 886,
|
|
"deletions": 78,
|
|
"timestamp": "2026-05-08T18:42:56+02:00"
|
|
},
|
|
{
|
|
"hash": "39b1791",
|
|
"short": "Phase 9l: Image-Occlusion als 4. MVP-CardType",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 681,
|
|
"deletions": 33,
|
|
"timestamp": "2026-05-08T18:50:45+02:00"
|
|
},
|
|
{
|
|
"hash": "04c48ed",
|
|
"short": "docs: STATUS.md auf Phase-9-Welle-3-Stand",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 59,
|
|
"deletions": 21,
|
|
"timestamp": "2026-05-08T18:52:49+02:00"
|
|
},
|
|
{
|
|
"hash": "045903b",
|
|
"short": "Phase 10a: Production-Deploy-Stack (Mac Mini)",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 203,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-08T20:09:19+02:00"
|
|
},
|
|
{
|
|
"hash": "a993cc2",
|
|
"short": "fix(prod-compose): cards-api needs NPM_AUTH_TOKEN build-arg",
|
|
"type": "fix",
|
|
"scope": "prod-compose",
|
|
"additions": 2,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-08T20:10:39+02:00"
|
|
},
|
|
{
|
|
"hash": "cfdc582",
|
|
"short": "fix(dockerfiles): copy tsconfig.base.json into build context",
|
|
"type": "fix",
|
|
"scope": "dockerfiles",
|
|
"additions": 2,
|
|
"deletions": 2,
|
|
"timestamp": "2026-05-08T20:12:01+02:00"
|
|
},
|
|
{
|
|
"hash": "464aee1",
|
|
"short": "fix(prod-compose): cards-minio port 9110→9210 (cadvisor belegt 9110)",
|
|
"type": "fix",
|
|
"scope": "prod-compose",
|
|
"additions": 4,
|
|
"deletions": 4,
|
|
"timestamp": "2026-05-08T20:13:06+02:00"
|
|
},
|
|
{
|
|
"hash": "78a6c8f",
|
|
"short": "fix(prod-compose): cards-api port 3091→3191 (3091 belegt)",
|
|
"type": "fix",
|
|
"scope": "prod-compose",
|
|
"additions": 2,
|
|
"deletions": 2,
|
|
"timestamp": "2026-05-08T20:13:46+02:00"
|
|
},
|
|
{
|
|
"hash": "f9d7a16",
|
|
"short": "fix(api Dockerfile): COPY app-manifest.json (runtime-import)",
|
|
"type": "fix",
|
|
"scope": "api Dockerfile",
|
|
"additions": 4,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-08T20:14:20+02:00"
|
|
},
|
|
{
|
|
"hash": "0dff798",
|
|
"short": "fix(prod): public URLs auf cardecky.* (war cards.* — bookmarks via nginx-301)",
|
|
"type": "fix",
|
|
"scope": "prod",
|
|
"additions": 7,
|
|
"deletions": 6,
|
|
"timestamp": "2026-05-08T20:18:10+02:00"
|
|
},
|
|
{
|
|
"hash": "6ea96dd",
|
|
"short": "docs: Phase 10 LIVE — cardecky.mana.how + cardecky-api.mana.how",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 8,
|
|
"deletions": 2,
|
|
"timestamp": "2026-05-08T20:19:59+02:00"
|
|
},
|
|
{
|
|
"hash": "506aec3",
|
|
"short": "Phase 2a: Cards-API JWT-Verify (additiv zum Dev-Stub)",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 73,
|
|
"deletions": 11,
|
|
"timestamp": "2026-05-08T20:41:09+02:00"
|
|
},
|
|
{
|
|
"hash": "76d4e92",
|
|
"short": "Phase 6: Tier-Awareness + mana-credits-Client (Plumbing)",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 147,
|
|
"deletions": 10,
|
|
"timestamp": "2026-05-08T20:45:08+02:00"
|
|
},
|
|
{
|
|
"hash": "5b6d096",
|
|
"short": "fix(prod-compose): pass MANA_AUTH_URL/MANA_CREDITS_URL/SERVICE_KEY/DEV_STUB into cards-api container",
|
|
"type": "fix",
|
|
"scope": "prod-compose",
|
|
"additions": 4,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-08T20:45:55+02:00"
|
|
},
|
|
{
|
|
"hash": "d7c7c97",
|
|
"short": "Phase 7a: cards.create-Tool für Cloze + Image-Occlusion + content_hash",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 36,
|
|
"deletions": 4,
|
|
"timestamp": "2026-05-08T20:48:39+02:00"
|
|
},
|
|
{
|
|
"hash": "a960d09",
|
|
"short": "docs: STATUS auf Phase 2/6/7/11 ✅",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 4,
|
|
"deletions": 4,
|
|
"timestamp": "2026-05-08T20:49:43+02:00"
|
|
},
|
|
{
|
|
"hash": "7119756",
|
|
"short": "Phase 10c: Cards-Web SSO-Login gegen mana-auth",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 236,
|
|
"deletions": 55,
|
|
"timestamp": "2026-05-08T21:08:06+02:00"
|
|
},
|
|
{
|
|
"hash": "f1622e9",
|
|
"short": "docs: Phase 7 LIVE — mana-share + mana-mcp deployed",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 1,
|
|
"deletions": 1,
|
|
"timestamp": "2026-05-08T21:11:31+02:00"
|
|
},
|
|
{
|
|
"hash": "1b840a9",
|
|
"short": "Phase 10d: Token-Refresh + 401-Retry im Cards-Web",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 118,
|
|
"deletions": 15,
|
|
"timestamp": "2026-05-08T21:50:12+02:00"
|
|
},
|
|
{
|
|
"hash": "3b74583",
|
|
"short": "fix(auth): two-step Login (Better-Auth-native + /refresh) für SSO-Cookie",
|
|
"type": "fix",
|
|
"scope": "auth",
|
|
"additions": 30,
|
|
"deletions": 15,
|
|
"timestamp": "2026-05-08T21:52:46+02:00"
|
|
},
|
|
{
|
|
"hash": "87a7a31",
|
|
"short": "fix(web): SvelteKit-env via \\$env/dynamic/public statt import.meta.env",
|
|
"type": "fix",
|
|
"scope": "web",
|
|
"additions": 17,
|
|
"deletions": 8,
|
|
"timestamp": "2026-05-08T22:03:35+02:00"
|
|
},
|
|
{
|
|
"hash": "f11df63",
|
|
"short": "Phase 9m: KI-Deck-Generation via mana-llm",
|
|
"type": null,
|
|
"scope": null,
|
|
"additions": 437,
|
|
"deletions": 6,
|
|
"timestamp": "2026-05-08T22:10:52+02:00"
|
|
}
|
|
],
|
|
"review_state": "auto",
|
|
"llm": {
|
|
"model": null,
|
|
"generated_at": null
|
|
}
|
|
}
|