mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-17 05:19:40 +02:00
Some checks are pending
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
Vollständige Bau-Geschichte des Monorepos in der Tages-Devlog- Konvention (mana/docs/DEVLOG.md). Bodies sind heuristik- generiert aus den Commit-Subjects pro Tag (Lead-Satz + Highlights/Commit-Bullets, kein LLM-Pfad). Tage mit hand- curate-Bedarf können nachträglich überarbeitet werden — der Auto-Stub-Marker ist weg, die Bodies sind editierbar. 321 Files (data.json + spieler.md + macher.md pro Tag). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
442 lines
11 KiB
JSON
442 lines
11 KiB
JSON
{
|
||
"date": "2026-04-24",
|
||
"day_number": 93,
|
||
"weekday": "Freitag",
|
||
"commits": 40,
|
||
"authors": [
|
||
{
|
||
"name": "Till JS",
|
||
"count": 40
|
||
}
|
||
],
|
||
"additions": 17569,
|
||
"deletions": 1247,
|
||
"net_lines": 16322,
|
||
"files_changed": 246,
|
||
"new_files": 0,
|
||
"deleted_files": 0,
|
||
"session": {
|
||
"first_commit_at": "2026-04-24T11:56:29.000Z",
|
||
"last_commit_at": "2026-04-24T15:21:43.000Z",
|
||
"total_span_minutes": 205,
|
||
"active_minutes": 205,
|
||
"pauses": [],
|
||
"longest_focus_minutes": 205
|
||
},
|
||
"top_dirs": [
|
||
{
|
||
"path": "apps/mana/apps/web",
|
||
"pct": 84
|
||
},
|
||
{
|
||
"path": "apps/api/src/modules",
|
||
"pct": 2
|
||
},
|
||
{
|
||
"path": "packages/shared-ai/src",
|
||
"pct": 2
|
||
},
|
||
{
|
||
"path": "packages/shared-privacy/src",
|
||
"pct": 2
|
||
},
|
||
{
|
||
"path": "packages/mana-tool-registry/src",
|
||
"pct": 2
|
||
}
|
||
],
|
||
"top_extensions": [
|
||
{
|
||
"ext": ".svelte",
|
||
"count": 164
|
||
},
|
||
{
|
||
"ext": ".ts",
|
||
"count": 127
|
||
},
|
||
{
|
||
"ext": ".json",
|
||
"count": 22
|
||
},
|
||
{
|
||
"ext": ".md",
|
||
"count": 7
|
||
},
|
||
{
|
||
"ext": ".mjs",
|
||
"count": 2
|
||
},
|
||
{
|
||
"ext": ".development",
|
||
"count": 1
|
||
}
|
||
],
|
||
"tags": ["writing", "comic", "wardrobe", "wardrobe,picture", "shared-privacy"],
|
||
"commits_list": [
|
||
{
|
||
"hash": "0cebb24",
|
||
"short": "fix(wardrobe): prompt Ganzkörperfoto instead of Portrait for full try-on",
|
||
"type": "fix",
|
||
"scope": "wardrobe",
|
||
"additions": 11,
|
||
"deletions": 2,
|
||
"timestamp": "2026-04-24T13:56:29+02:00"
|
||
},
|
||
{
|
||
"hash": "2af2a4d",
|
||
"short": "feat(places): M5.a — places adopt the unified visibility system",
|
||
"type": "feat",
|
||
"scope": "places",
|
||
"additions": 109,
|
||
"deletions": 0,
|
||
"timestamp": "2026-04-24T13:59:15+02:00"
|
||
},
|
||
{
|
||
"hash": "0e0d48a",
|
||
"short": "feat(recipes): M5.b — recipes adopt the unified visibility system",
|
||
"type": "feat",
|
||
"scope": "recipes",
|
||
"additions": 118,
|
||
"deletions": 0,
|
||
"timestamp": "2026-04-24T14:04:14+02:00"
|
||
},
|
||
{
|
||
"hash": "218cf45",
|
||
"short": "feat(wardrobe): M5.c — outfits adopt the unified visibility system",
|
||
"type": "feat",
|
||
"scope": "wardrobe",
|
||
"additions": 111,
|
||
"deletions": 1,
|
||
"timestamp": "2026-04-24T14:08:32+02:00"
|
||
},
|
||
{
|
||
"hash": "9fbdc14",
|
||
"short": "feat(wardrobe,picture): symmetric wardrobeGarmentId FK + garment try-on strips",
|
||
"type": "feat",
|
||
"scope": "wardrobe,picture",
|
||
"additions": 176,
|
||
"deletions": 5,
|
||
"timestamp": "2026-04-24T14:16:40+02:00"
|
||
},
|
||
{
|
||
"hash": "800fc9a",
|
||
"short": "refactor(picture,wardrobe): extract ImageLightbox, use in garment detail",
|
||
"type": "refactor",
|
||
"scope": "picture,wardrobe",
|
||
"additions": 169,
|
||
"deletions": 79,
|
||
"timestamp": "2026-04-24T14:37:58+02:00"
|
||
},
|
||
{
|
||
"hash": "259f6fb",
|
||
"short": "fix(shared-privacy): default all new records to 'space', not 'private'",
|
||
"type": "fix",
|
||
"scope": "shared-privacy",
|
||
"additions": 45,
|
||
"deletions": 26,
|
||
"timestamp": "2026-04-24T14:46:48+02:00"
|
||
},
|
||
{
|
||
"hash": "3c3b2eb",
|
||
"short": "feat(writing): M1+M2 — new Ghostwriter module with manual draft CRUD",
|
||
"type": "feat",
|
||
"scope": "writing",
|
||
"additions": 3484,
|
||
"deletions": 0,
|
||
"timestamp": "2026-04-24T14:59:56+02:00"
|
||
},
|
||
{
|
||
"hash": "d725a8d",
|
||
"short": "feat(writing): M3 — one-shot prose generation via mana-llm",
|
||
"type": "feat",
|
||
"scope": "writing",
|
||
"additions": 814,
|
||
"deletions": 11,
|
||
"timestamp": "2026-04-24T15:11:48+02:00"
|
||
},
|
||
{
|
||
"hash": "1c82a37",
|
||
"short": "feat(writing): M4 — style system with presets + custom styles",
|
||
"type": "feat",
|
||
"scope": "writing",
|
||
"additions": 620,
|
||
"deletions": 6,
|
||
"timestamp": "2026-04-24T15:20:06+02:00"
|
||
},
|
||
{
|
||
"hash": "27c1860",
|
||
"short": "feat(comic): M1 — Datenschicht + Modul-Registrierung",
|
||
"type": "feat",
|
||
"scope": "comic",
|
||
"additions": 1385,
|
||
"deletions": 5,
|
||
"timestamp": "2026-04-24T15:29:51+02:00"
|
||
},
|
||
{
|
||
"hash": "19e0f33",
|
||
"short": "feat(writing): M6 — selection-refinement tools",
|
||
"type": "feat",
|
||
"scope": "writing",
|
||
"additions": 1014,
|
||
"deletions": 2,
|
||
"timestamp": "2026-04-24T15:37:04+02:00"
|
||
},
|
||
{
|
||
"hash": "3551652",
|
||
"short": "feat(comic): M2 — UI + Single-Panel-Generierung",
|
||
"type": "feat",
|
||
"scope": "comic",
|
||
"additions": 1638,
|
||
"deletions": 2,
|
||
"timestamp": "2026-04-24T15:42:27+02:00"
|
||
},
|
||
{
|
||
"hash": "98a68af",
|
||
"short": "fix(calendar): visibility picker also in the Workbench DetailView",
|
||
"type": "fix",
|
||
"scope": "calendar",
|
||
"additions": 28,
|
||
"deletions": 7,
|
||
"timestamp": "2026-04-24T15:49:48+02:00"
|
||
},
|
||
{
|
||
"hash": "8c43c11",
|
||
"short": "fix(calendar): promote visibility picker to a labeled prop-row",
|
||
"type": "fix",
|
||
"scope": "calendar",
|
||
"additions": 19,
|
||
"deletions": 19,
|
||
"timestamp": "2026-04-24T15:52:59+02:00"
|
||
},
|
||
{
|
||
"hash": "bfa923d",
|
||
"short": "feat(writing): M5 — cross-module references in the briefing",
|
||
"type": "feat",
|
||
"scope": "writing",
|
||
"additions": 722,
|
||
"deletions": 2,
|
||
"timestamp": "2026-04-24T15:53:35+02:00"
|
||
},
|
||
{
|
||
"hash": "63f5179",
|
||
"short": "feat(comic): M3 — Batch-Panel-Generierung (2–4 parallel)",
|
||
"type": "feat",
|
||
"scope": "comic",
|
||
"additions": 421,
|
||
"deletions": 12,
|
||
"timestamp": "2026-04-24T15:59:17+02:00"
|
||
},
|
||
{
|
||
"hash": "ed8ec98",
|
||
"short": "feat(workbench): app picker searches English aliases + IT/FR/ES i18n",
|
||
"type": "feat",
|
||
"scope": "workbench",
|
||
"additions": 149,
|
||
"deletions": 8,
|
||
"timestamp": "2026-04-24T16:00:27+02:00"
|
||
},
|
||
{
|
||
"hash": "f2275f7",
|
||
"short": "feat(writing): M11 — adopt the unified visibility system",
|
||
"type": "feat",
|
||
"scope": "writing",
|
||
"additions": 70,
|
||
"deletions": 0,
|
||
"timestamp": "2026-04-24T16:01:05+02:00"
|
||
},
|
||
{
|
||
"hash": "90915b7",
|
||
"short": "fix(visibility): promote picker to labeled rows across remaining modules",
|
||
"type": "fix",
|
||
"scope": "visibility",
|
||
"additions": 31,
|
||
"deletions": 18,
|
||
"timestamp": "2026-04-24T16:03:48+02:00"
|
||
},
|
||
{
|
||
"hash": "8a882a3",
|
||
"short": "feat(wardrobe,picture): Google Nano Banana as a Try-On option",
|
||
"type": "feat",
|
||
"scope": "wardrobe,picture",
|
||
"additions": 369,
|
||
"deletions": 52,
|
||
"timestamp": "2026-04-24T16:04:21+02:00"
|
||
},
|
||
{
|
||
"hash": "6432ef7",
|
||
"short": "feat(comic): M4 — AI-Storyboard aus Cross-Modul-Text",
|
||
"type": "feat",
|
||
"scope": "comic",
|
||
"additions": 1015,
|
||
"deletions": 1,
|
||
"timestamp": "2026-04-24T16:06:03+02:00"
|
||
},
|
||
{
|
||
"hash": "0dadc17",
|
||
"short": "feat(writing): M10 — publish hooks (export + save-as-article)",
|
||
"type": "feat",
|
||
"scope": "writing",
|
||
"additions": 383,
|
||
"deletions": 0,
|
||
"timestamp": "2026-04-24T16:07:39+02:00"
|
||
},
|
||
{
|
||
"hash": "cc51f0b",
|
||
"short": "chore(env): rotate GEMINI_API_KEY to the key that other Mana services use",
|
||
"type": "chore",
|
||
"scope": "env",
|
||
"additions": 5,
|
||
"deletions": 2,
|
||
"timestamp": "2026-04-24T16:12:27+02:00"
|
||
},
|
||
{
|
||
"hash": "d49ad23",
|
||
"short": "feat(writing): M8 — AI tools exposed through the shared catalog",
|
||
"type": "feat",
|
||
"scope": "writing",
|
||
"additions": 704,
|
||
"deletions": 1,
|
||
"timestamp": "2026-04-24T16:19:30+02:00"
|
||
},
|
||
{
|
||
"hash": "87b567e",
|
||
"short": "i18n: fix IT/FR/ES parity gaps in dashboard + memoro",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 671,
|
||
"deletions": 1,
|
||
"timestamp": "2026-04-24T16:19:59+02:00"
|
||
},
|
||
{
|
||
"hash": "05b2209",
|
||
"short": "polish(wardrobe): garment-detail cosmetic pass + slug-cleanup on upload",
|
||
"type": "polish",
|
||
"scope": "wardrobe",
|
||
"additions": 116,
|
||
"deletions": 45,
|
||
"timestamp": "2026-04-24T16:24:07+02:00"
|
||
},
|
||
{
|
||
"hash": "9c503b7",
|
||
"short": "i18n: strip dead legacy keys + fill IT/FR/ES calendar translations",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 63,
|
||
"deletions": 565,
|
||
"timestamp": "2026-04-24T16:28:10+02:00"
|
||
},
|
||
{
|
||
"hash": "201a085",
|
||
"short": "feat(scripts): validate:i18n-parity — lock locale key-sets in CI",
|
||
"type": "feat",
|
||
"scope": "scripts",
|
||
"additions": 135,
|
||
"deletions": 1,
|
||
"timestamp": "2026-04-24T16:30:35+02:00"
|
||
},
|
||
{
|
||
"hash": "0ee3b14",
|
||
"short": "polish(wardrobe): unify hover vocabulary + lift the Try-On CTA",
|
||
"type": "polish",
|
||
"scope": "wardrobe",
|
||
"additions": 72,
|
||
"deletions": 23,
|
||
"timestamp": "2026-04-24T16:31:11+02:00"
|
||
},
|
||
{
|
||
"hash": "91ae58f",
|
||
"short": "feat(comic): M6 — Comic-Autor persona-template",
|
||
"type": "feat",
|
||
"scope": "comic",
|
||
"additions": 155,
|
||
"deletions": 0,
|
||
"timestamp": "2026-04-24T16:34:55+02:00"
|
||
},
|
||
{
|
||
"hash": "e7398b2",
|
||
"short": "polish(wardrobe): make Try-On CTA the dominant element + shrink secondary actions",
|
||
"type": "polish",
|
||
"scope": "wardrobe",
|
||
"additions": 44,
|
||
"deletions": 36,
|
||
"timestamp": "2026-04-24T16:35:18+02:00"
|
||
},
|
||
{
|
||
"hash": "6545498",
|
||
"short": "feat(writing): agent.defaultWritingStyleId — M8 persona-linkage follow-up",
|
||
"type": "feat",
|
||
"scope": "writing",
|
||
"additions": 55,
|
||
"deletions": 2,
|
||
"timestamp": "2026-04-24T16:36:20+02:00"
|
||
},
|
||
{
|
||
"hash": "6f37e00",
|
||
"short": "feat(comic): AI_TOOL_CATALOG bridge — webapp-runner kann jetzt Comics",
|
||
"type": "feat",
|
||
"scope": "comic",
|
||
"additions": 451,
|
||
"deletions": 4,
|
||
"timestamp": "2026-04-24T16:49:24+02:00"
|
||
},
|
||
{
|
||
"hash": "92bee0d",
|
||
"short": "feat(unlisted): M8.1 — backend foundation for shareable-link snapshots",
|
||
"type": "feat",
|
||
"scope": "unlisted",
|
||
"additions": 873,
|
||
"deletions": 4,
|
||
"timestamp": "2026-04-24T17:12:13+02:00"
|
||
},
|
||
{
|
||
"hash": "c1d643f",
|
||
"short": "feat(writing): register Writing as a Workbench card",
|
||
"type": "feat",
|
||
"scope": "writing",
|
||
"additions": 43,
|
||
"deletions": 2,
|
||
"timestamp": "2026-04-24T17:15:25+02:00"
|
||
},
|
||
{
|
||
"hash": "5501f47",
|
||
"short": "feat(shared-privacy): M8.2 — unlisted-client + SharedLinkControls",
|
||
"type": "feat",
|
||
"scope": "shared-privacy",
|
||
"additions": 676,
|
||
"deletions": 0,
|
||
"timestamp": "2026-04-24T17:18:56+02:00"
|
||
},
|
||
{
|
||
"hash": "364522d",
|
||
"short": "feat(comic): image-model picker — OpenAI + Nano Banana wählbar",
|
||
"type": "feat",
|
||
"scope": "comic",
|
||
"additions": 252,
|
||
"deletions": 6,
|
||
"timestamp": "2026-04-24T17:19:40+02:00"
|
||
},
|
||
{
|
||
"hash": "e794e0c",
|
||
"short": "feat(i18n): locale-aware formatters, migrate hardcoded de-DE call-sites",
|
||
"type": "feat",
|
||
"scope": "i18n",
|
||
"additions": 337,
|
||
"deletions": 184,
|
||
"timestamp": "2026-04-24T17:20:11+02:00"
|
||
},
|
||
{
|
||
"hash": "3f438cf",
|
||
"short": "refactor(i18n): replace hand-maintained locale list with import.meta.glob",
|
||
"type": "refactor",
|
||
"scope": "i18n",
|
||
"additions": 16,
|
||
"deletions": 113,
|
||
"timestamp": "2026-04-24T17:21:43+02:00"
|
||
}
|
||
],
|
||
"review_state": "auto",
|
||
"llm": {
|
||
"model": null,
|
||
"generated_at": null
|
||
}
|
||
}
|