wordeck/devlog/2026-05-10/data.json
Till JS ac05afa93e
Some checks failed
CI / validate (push) Has been cancelled
devlog: 6 Tage geschrieben (Greenfield → Hardening + Cardecky-Native-Vorbereitung)
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>
2026-05-15 22:23:29 +02:00

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