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>
324 lines
8.1 KiB
JSON
324 lines
8.1 KiB
JSON
{
|
|
"date": "2026-05-10",
|
|
"day_number": 3,
|
|
"weekday": "Sonntag",
|
|
"commits": 26,
|
|
"authors": [
|
|
{
|
|
"name": "Till JS",
|
|
"count": 26
|
|
}
|
|
],
|
|
"additions": 7019,
|
|
"deletions": 1919,
|
|
"net_lines": 5100,
|
|
"files_changed": 59,
|
|
"new_files": 0,
|
|
"deleted_files": 0,
|
|
"session": {
|
|
"first_commit_at": "2026-05-10T12:38:48.000Z",
|
|
"last_commit_at": "2026-05-10T15:07:24.000Z",
|
|
"total_span_minutes": 149,
|
|
"active_minutes": 118,
|
|
"pauses": [
|
|
{
|
|
"from": "14:47",
|
|
"to": "15:18",
|
|
"minutes": 31
|
|
}
|
|
],
|
|
"longest_focus_minutes": 109
|
|
},
|
|
"top_dirs": [
|
|
{
|
|
"path": "apps/web/src/routes",
|
|
"pct": 39
|
|
},
|
|
{
|
|
"path": "apps/web/src/lib",
|
|
"pct": 34
|
|
},
|
|
{
|
|
"path": "apps/api/src/routes",
|
|
"pct": 11
|
|
},
|
|
{
|
|
"path": "packages/cards-domain/src",
|
|
"pct": 7
|
|
},
|
|
{
|
|
"path": "apps/api/src/lib",
|
|
"pct": 3
|
|
}
|
|
],
|
|
"top_extensions": [
|
|
{
|
|
"ext": ".svelte",
|
|
"count": 72
|
|
},
|
|
{
|
|
"ext": ".ts",
|
|
"count": 41
|
|
},
|
|
{
|
|
"ext": ".py",
|
|
"count": 1
|
|
},
|
|
{
|
|
"ext": ".jsonl",
|
|
"count": 1
|
|
},
|
|
{
|
|
"ext": ".md",
|
|
"count": 1
|
|
}
|
|
],
|
|
"tags": [
|
|
"cards",
|
|
"web",
|
|
"api",
|
|
"study",
|
|
"cards/new"
|
|
],
|
|
"commits_list": [
|
|
{
|
|
"hash": "e2b493d",
|
|
"short": "feat(study): Periodensystem-Karten mit Kategorie-Farben und Eigenschaften-Tabelle",
|
|
"type": "feat",
|
|
"scope": "study",
|
|
"additions": 338,
|
|
"deletions": 246,
|
|
"timestamp": "2026-05-10T14:38:48+02:00"
|
|
},
|
|
{
|
|
"hash": "d9532ed",
|
|
"short": "fix(study): Hint-Text entfernt, kein vertikales Scrollen",
|
|
"type": "fix",
|
|
"scope": "study",
|
|
"additions": 2,
|
|
"deletions": 10,
|
|
"timestamp": "2026-05-10T14:40:17+02:00"
|
|
},
|
|
{
|
|
"hash": "598acb4",
|
|
"short": "fix(study): kein Layout-Sprung beim Wechsel Reveal ↔ Grade-Buttons",
|
|
"type": "fix",
|
|
"scope": "study",
|
|
"additions": 35,
|
|
"deletions": 15,
|
|
"timestamp": "2026-05-10T14:47:15+02:00"
|
|
},
|
|
{
|
|
"hash": "170a282",
|
|
"short": "feat(cards): audio-front Card-Type",
|
|
"type": "feat",
|
|
"scope": "cards",
|
|
"additions": 122,
|
|
"deletions": 4,
|
|
"timestamp": "2026-05-10T15:18:41+02:00"
|
|
},
|
|
{
|
|
"hash": "1212b62",
|
|
"short": "feat(cards): Deck-Generierung aus Bildern und PDFs via Vision-LLM",
|
|
"type": "feat",
|
|
"scope": "cards",
|
|
"additions": 667,
|
|
"deletions": 94,
|
|
"timestamp": "2026-05-10T15:21:35+02:00"
|
|
},
|
|
{
|
|
"hash": "0791436",
|
|
"short": "feat(cards): typing Card-Type mit Fuzzy-Match",
|
|
"type": "feat",
|
|
"scope": "cards",
|
|
"additions": 354,
|
|
"deletions": 1,
|
|
"timestamp": "2026-05-10T15:23:58+02:00"
|
|
},
|
|
{
|
|
"hash": "2b36990",
|
|
"short": "feat(cards): multiple-choice Card-Type mit dynamischen Distractors",
|
|
"type": "feat",
|
|
"scope": "cards",
|
|
"additions": 351,
|
|
"deletions": 4,
|
|
"timestamp": "2026-05-10T15:28:37+02:00"
|
|
},
|
|
{
|
|
"hash": "a612ad0",
|
|
"short": "feat(cards/new): typing, multiple-choice, audio-front im Erstellungs-UI",
|
|
"type": "feat",
|
|
"scope": "cards/new",
|
|
"additions": 125,
|
|
"deletions": 9,
|
|
"timestamp": "2026-05-10T15:36:17+02:00"
|
|
},
|
|
{
|
|
"hash": "b5d3a29",
|
|
"short": "refactor(cards/new): UI-Redesign + Multiple-Choice Option-Builder",
|
|
"type": "refactor",
|
|
"scope": "cards/new",
|
|
"additions": 481,
|
|
"deletions": 185,
|
|
"timestamp": "2026-05-10T15:45:21+02:00"
|
|
},
|
|
{
|
|
"hash": "9754718",
|
|
"short": "feat(cards/new): Live-Kartenvorschau neben dem Formular",
|
|
"type": "feat",
|
|
"scope": "cards/new",
|
|
"additions": 597,
|
|
"deletions": 234,
|
|
"timestamp": "2026-05-10T15:50:57+02:00"
|
|
},
|
|
{
|
|
"hash": "03ec7e7",
|
|
"short": "feat(decks): Edit-Icon auf Deck-Karten + Deck-Edit-Page",
|
|
"type": "feat",
|
|
"scope": "decks",
|
|
"additions": 298,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-10T15:57:37+02:00"
|
|
},
|
|
{
|
|
"hash": "731481f",
|
|
"short": "refactor(deck-detail): Redesign mit Kategorie-Picker, Card-Menü, Markdown",
|
|
"type": "refactor",
|
|
"scope": "deck-detail",
|
|
"additions": 516,
|
|
"deletions": 138,
|
|
"timestamp": "2026-05-10T15:59:56+02:00"
|
|
},
|
|
{
|
|
"hash": "1f1abf3",
|
|
"short": "feat(decks/from-image): URL-Input als Alternative zu Datei-Upload",
|
|
"type": "feat",
|
|
"scope": "decks/from-image",
|
|
"additions": 181,
|
|
"deletions": 55,
|
|
"timestamp": "2026-05-10T16:00:04+02:00"
|
|
},
|
|
{
|
|
"hash": "0c68186",
|
|
"short": "refactor(marketplace): UI-Verbesserungen, MarketplaceDeckStack, Explore-Icons",
|
|
"type": "refactor",
|
|
"scope": "marketplace",
|
|
"additions": 451,
|
|
"deletions": 101,
|
|
"timestamp": "2026-05-10T16:00:11+02:00"
|
|
},
|
|
{
|
|
"hash": "b761cd5",
|
|
"short": "fix(decks/from-image): kontextbewusste Statusmeldungen für URL-only-Generierung",
|
|
"type": "fix",
|
|
"scope": "decks/from-image",
|
|
"additions": 7,
|
|
"deletions": 5,
|
|
"timestamp": "2026-05-10T16:02:21+02:00"
|
|
},
|
|
{
|
|
"hash": "c1a87a4",
|
|
"short": "feat(publish): Deck direkt aus der Detail-Seite veröffentlichen",
|
|
"type": "feat",
|
|
"scope": "publish",
|
|
"additions": 605,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-10T16:07:55+02:00"
|
|
},
|
|
{
|
|
"hash": "608b385",
|
|
"short": "feat(web): decks-page auf Explore-Layout migriert + Subscriptions sichtbar",
|
|
"type": "feat",
|
|
"scope": "web",
|
|
"additions": 207,
|
|
"deletions": 36,
|
|
"timestamp": "2026-05-10T16:08:21+02:00"
|
|
},
|
|
{
|
|
"hash": "a883ba8",
|
|
"short": "refactor(me/published): UX-Fix — Anzeige-Name zuerst, Auto-Slug, einspaltiges Layout",
|
|
"type": "refactor",
|
|
"scope": "me/published",
|
|
"additions": 344,
|
|
"deletions": 77,
|
|
"timestamp": "2026-05-10T16:11:57+02:00"
|
|
},
|
|
{
|
|
"hash": "b182bac",
|
|
"short": "refactor(api): review-row-Erstellung extrahieren + QW-Fixes",
|
|
"type": "refactor",
|
|
"scope": "api",
|
|
"additions": 64,
|
|
"deletions": 67,
|
|
"timestamp": "2026-05-10T16:12:28+02:00"
|
|
},
|
|
{
|
|
"hash": "f3a1481",
|
|
"short": "refactor(account): Profil-Karte, Meta-Grid, Action-Karten",
|
|
"type": "refactor",
|
|
"scope": "account",
|
|
"additions": 304,
|
|
"deletions": 56,
|
|
"timestamp": "2026-05-10T16:18:57+02:00"
|
|
},
|
|
{
|
|
"hash": "f2f752e",
|
|
"short": "feat(web): apiErrorMessage-Utility + MultipleChoice-Fallback",
|
|
"type": "feat",
|
|
"scope": "web",
|
|
"additions": 358,
|
|
"deletions": 261,
|
|
"timestamp": "2026-05-10T16:27:19+02:00"
|
|
},
|
|
{
|
|
"hash": "c39bacc",
|
|
"short": "refactor(api): DTO-Helper extrahieren + N+1 in marketplace/decks beheben",
|
|
"type": "refactor",
|
|
"scope": "api",
|
|
"additions": 87,
|
|
"deletions": 86,
|
|
"timestamp": "2026-05-10T16:30:29+02:00"
|
|
},
|
|
{
|
|
"hash": "595f1f9",
|
|
"short": "refactor(web): ClozeCardForm + MultipleChoiceCardForm extrahieren + Import-Bug fixen",
|
|
"type": "refactor",
|
|
"scope": "web",
|
|
"additions": 286,
|
|
"deletions": 168,
|
|
"timestamp": "2026-05-10T16:35:01+02:00"
|
|
},
|
|
{
|
|
"hash": "dc382a7",
|
|
"short": "feat(api): URL-Kontext auch in /decks/generate + fetchUrlContent extrahieren",
|
|
"type": "feat",
|
|
"scope": "api",
|
|
"additions": 63,
|
|
"deletions": 55,
|
|
"timestamp": "2026-05-10T16:39:39+02:00"
|
|
},
|
|
{
|
|
"hash": "26b136a",
|
|
"short": "test(api): Unit-Tests für makeInitialReviewRows und fetchUrlContent",
|
|
"type": "test",
|
|
"scope": "api",
|
|
"additions": 170,
|
|
"deletions": 0,
|
|
"timestamp": "2026-05-10T16:40:30+02:00"
|
|
},
|
|
{
|
|
"hash": "333581c",
|
|
"short": "fix(web): body stream already read — Text zuerst lesen, dann JSON parsen",
|
|
"type": "fix",
|
|
"scope": "web",
|
|
"additions": 6,
|
|
"deletions": 12,
|
|
"timestamp": "2026-05-10T17:07:24+02:00"
|
|
}
|
|
],
|
|
"review_state": "auto",
|
|
"llm": {
|
|
"model": null,
|
|
"generated_at": null
|
|
}
|
|
}
|