{ "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 } }