managarten/devlog/2026-04-20/data.json
Till JS ad776c1a1c
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
devlog: 107 Tage backfilled (2025-11-22 → 2026-05-15)
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>
2026-05-15 22:24:29 +02:00

700 lines
17 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"date": "2026-04-20",
"day_number": 89,
"weekday": "Montag",
"commits": 68,
"authors": [
{
"name": "Till JS",
"count": 68
}
],
"additions": 22189,
"deletions": 111943,
"net_lines": -89754,
"files_changed": 965,
"new_files": 0,
"deleted_files": 0,
"session": {
"first_commit_at": "2026-04-20T12:24:39.000Z",
"last_commit_at": "2026-04-20T19:28:45.000Z",
"total_span_minutes": 424,
"active_minutes": 351,
"pauses": [
{
"from": "16:53",
"to": "18:05",
"minutes": 73
}
],
"longest_focus_minutes": 203
},
"top_dirs": [
{
"path": "apps/mana/apps/web",
"pct": 24
},
{
"path": "apps/context/apps/mobile",
"pct": 15
},
{
"path": "apps/picture/apps/mobile",
"pct": 13
},
{
"path": "apps/cards/apps/mobile",
"pct": 13
},
{
"path": "apps/chat/apps/mobile",
"pct": 11
}
],
"top_extensions": [
{
"ext": ".ts",
"count": 390
},
{
"ext": ".tsx",
"count": 334
},
{
"ext": ".svelte",
"count": 82
},
{
"ext": ".md",
"count": 62
},
{
"ext": ".json",
"count": 50
},
{
"ext": ".sql",
"count": 38
}
],
"tags": ["spaces", "invoices", "ai", "broadcast", "type-check"],
"commits_list": [
{
"hash": "52d008d",
"short": "fix(goals): start GoalTracker on boot + surface AI proposals inline",
"type": "fix",
"scope": "goals",
"additions": 35,
"deletions": 7,
"timestamp": "2026-04-20T14:24:39+02:00"
},
{
"hash": "a2598b9",
"short": "feat(crypto): type-safe registry entries + dev-mode drift check",
"type": "feat",
"scope": "crypto",
"additions": 122,
"deletions": 14,
"timestamp": "2026-04-20T14:26:37+02:00"
},
{
"hash": "c7af693",
"short": "feat(crypto): Phase C — build-time registry ↔ Dexie audit",
"type": "feat",
"scope": "crypto",
"additions": 406,
"deletions": 3,
"timestamp": "2026-04-20T14:36:32+02:00"
},
{
"hash": "1eda3f5",
"short": "chore(turbo): lint against recursive \\`turbo run\\` calls in child packages",
"type": "chore",
"scope": "turbo",
"additions": 98,
"deletions": 1,
"timestamp": "2026-04-20T14:39:32+02:00"
},
{
"hash": "5ec1dfc",
"short": "chore(db): enforce pgSchema isolation with a lint script",
"type": "chore",
"scope": "db",
"additions": 114,
"deletions": 8,
"timestamp": "2026-04-20T14:45:59+02:00"
},
{
"hash": "d1d3774",
"short": "fix(install): remove silent `|| true` from postinstall + narrow filter",
"type": "fix",
"scope": "install",
"additions": 13,
"deletions": 9,
"timestamp": "2026-04-20T14:58:59+02:00"
},
{
"hash": "da47f53",
"short": "docs(plans): function-calling migration + removal of propose/approve gate",
"type": "docs",
"scope": "plans",
"additions": 298,
"deletions": 0,
"timestamp": "2026-04-20T15:10:23+02:00"
},
{
"hash": "c34175a",
"short": "fix(type-check): repair silently broken per-package type-check scripts",
"type": "fix",
"scope": "type-check",
"additions": 26,
"deletions": 5,
"timestamp": "2026-04-20T15:13:54+02:00"
},
{
"hash": "4b8fede",
"short": "fix(mana-llm): surface Gemini finish_reason errors instead of returning \"\"",
"type": "fix",
"scope": "mana-llm",
"additions": 208,
"deletions": 13,
"timestamp": "2026-04-20T15:15:37+02:00"
},
{
"hash": "c612a22",
"short": "fix(type-check): unblock two more pre-existing failures",
"type": "fix",
"scope": "type-check",
"additions": 7,
"deletions": 2,
"timestamp": "2026-04-20T15:20:08+02:00"
},
{
"hash": "e757470",
"short": "feat(mana-llm): add OpenAI-style tools + tool_calls passthrough",
"type": "feat",
"scope": "mana-llm",
"additions": 566,
"deletions": 79,
"timestamp": "2026-04-20T15:22:48+02:00"
},
{
"hash": "4523ab2",
"short": "feat(shared-ai): toolToFunctionSchema — catalog → OpenAI function-spec",
"type": "feat",
"scope": "shared-ai",
"additions": 235,
"deletions": 2,
"timestamp": "2026-04-20T15:24:36+02:00"
},
{
"hash": "11f768b",
"short": "docs(invoices): ClubDesk vs. Mana comparison + invoices module plan",
"type": "docs",
"scope": "invoices",
"additions": 675,
"deletions": 0,
"timestamp": "2026-04-20T15:27:57+02:00"
},
{
"hash": "2cf89ce",
"short": "feat(invoices): M1 skeleton — module registration + empty ListView",
"type": "feat",
"scope": "invoices",
"additions": 666,
"deletions": 0,
"timestamp": "2026-04-20T15:28:09+02:00"
},
{
"hash": "4daca89",
"short": "feat(shared-ai): runPlannerLoop + compact system prompt for function calling",
"type": "feat",
"scope": "shared-ai",
"additions": 537,
"deletions": 1,
"timestamp": "2026-04-20T15:31:01+02:00"
},
{
"hash": "248137e",
"short": "chore(mobile): remove 6 of 7 mobile apps — keep only memoro",
"type": "chore",
"scope": "mobile",
"additions": 26,
"deletions": 106334,
"timestamp": "2026-04-20T15:31:47+02:00"
},
{
"hash": "8d00ee0",
"short": "feat(invoices): M2 CRUD — draft lifecycle, totals, list + detail",
"type": "feat",
"scope": "invoices",
"additions": 2704,
"deletions": 61,
"timestamp": "2026-04-20T15:40:11+02:00"
},
{
"hash": "a44e3df",
"short": "refactor(mana): remove post-signup onboarding wizard",
"type": "refactor",
"scope": "mana",
"additions": 1,
"deletions": 1329,
"timestamp": "2026-04-20T15:46:21+02:00"
},
{
"hash": "0077752",
"short": "fix(type-check): clear the last five failures — monorepo type-check is now 76/76 green",
"type": "fix",
"scope": "type-check",
"additions": 22,
"deletions": 10,
"timestamp": "2026-04-20T15:53:07+02:00"
},
{
"hash": "2dc298a",
"short": "feat(invoices): M4 PDF rendering — pdf-lib renderer + preview + download",
"type": "feat",
"scope": "invoices",
"additions": 904,
"deletions": 172,
"timestamp": "2026-04-20T15:57:30+02:00"
},
{
"hash": "b249345",
"short": "feat(spaces): add space types + module allowlist as multi-tenancy foundation",
"type": "feat",
"scope": "spaces",
"additions": 852,
"deletions": 0,
"timestamp": "2026-04-20T15:57:57+02:00"
},
{
"hash": "8dbc850",
"short": "chore(ci): add \\`validate:all\\` + fix undefined \\`validate:monorepo\\` reference",
"type": "chore",
"scope": "ci",
"additions": 3,
"deletions": 11,
"timestamp": "2026-04-20T16:01:54+02:00"
},
{
"hash": "3179fa1",
"short": "fix(page-shell): keep header title on one line with ellipsis",
"type": "fix",
"scope": "page-shell",
"additions": 7,
"deletions": 0,
"timestamp": "2026-04-20T16:03:26+02:00"
},
{
"hash": "9d69e44",
"short": "docs(claude-md): document \\`validate:all\\` + \\`test:coverage\\` in Quick Start",
"type": "docs",
"scope": "claude-md",
"additions": 6,
"deletions": 0,
"timestamp": "2026-04-20T16:03:55+02:00"
},
{
"hash": "166d6c6",
"short": "feat(spaces): validate space metadata on Better Auth organization hooks",
"type": "feat",
"scope": "spaces",
"additions": 577,
"deletions": 225,
"timestamp": "2026-04-20T16:05:38+02:00"
},
{
"hash": "5af23d3",
"short": "feat(invoices): M5 Swiss QR-Bill — SCOR reference + PDF overlay",
"type": "feat",
"scope": "invoices",
"additions": 398,
"deletions": 5,
"timestamp": "2026-04-20T16:07:35+02:00"
},
{
"hash": "5af96bf",
"short": "feat(webapp): mission runner on native function calling, tools execute directly",
"type": "feat",
"scope": "webapp",
"additions": 505,
"deletions": 734,
"timestamp": "2026-04-20T16:08:58+02:00"
},
{
"hash": "da1bb2d",
"short": "feat(spaces): auto-create personal space on signup via Better Auth hook",
"type": "feat",
"scope": "spaces",
"additions": 266,
"deletions": 1,
"timestamp": "2026-04-20T16:10:26+02:00"
},
{
"hash": "698ffe7",
"short": "feat(spaces): add spaces pg schema — credentials + module_permissions",
"type": "feat",
"scope": "spaces",
"additions": 167,
"deletions": 0,
"timestamp": "2026-04-20T16:13:33+02:00"
},
{
"hash": "78bfea4",
"short": "refactor(webapp): drop AiProposalInbox usages from 9 module pages",
"type": "refactor",
"scope": "webapp",
"additions": 71,
"deletions": 31,
"timestamp": "2026-04-20T16:18:54+02:00"
},
{
"hash": "c34c755",
"short": "feat(spaces): scope layer — active-space store + scoped-db wrapper + visibility",
"type": "feat",
"scope": "spaces",
"additions": 501,
"deletions": 0,
"timestamp": "2026-04-20T16:24:43+02:00"
},
{
"hash": "08b7ac1",
"short": "feat(invoices): M6 send-by-mail flow — mailto + PDF download + confirm",
"type": "feat",
"scope": "invoices",
"additions": 422,
"deletions": 3,
"timestamp": "2026-04-20T16:27:34+02:00"
},
{
"hash": "2d15684",
"short": "refactor(webapp): delete proposal infrastructure + ai-plan legacy wrappers",
"type": "refactor",
"scope": "webapp",
"additions": 26,
"deletions": 1555,
"timestamp": "2026-04-20T16:30:13+02:00"
},
{
"hash": "2ee3a1a",
"short": "feat(invoices): M7 dashboard widget + tests + plan status",
"type": "feat",
"scope": "invoices",
"additions": 644,
"deletions": 4,
"timestamp": "2026-04-20T16:38:18+02:00"
},
{
"hash": "1cd559c",
"short": "feat(mana-ai): server runner on runPlannerLoop, drops text-JSON parser",
"type": "feat",
"scope": "mana-ai",
"additions": 262,
"deletions": 212,
"timestamp": "2026-04-20T16:39:20+02:00"
},
{
"hash": "80dbb3b",
"short": "feat(spaces): migrate calendar module to scoped-db wrapper (pilot)",
"type": "feat",
"scope": "spaces",
"additions": 54,
"deletions": 22,
"timestamp": "2026-04-20T16:42:10+02:00"
},
{
"hash": "9f7d2f2",
"short": "feat(companion): chat on runPlannerLoop with native function calling",
"type": "feat",
"scope": "companion",
"additions": 106,
"deletions": 273,
"timestamp": "2026-04-20T16:45:33+02:00"
},
{
"hash": "e10c243",
"short": "feat(spaces): thread space_id through mana-sync protocol + storage",
"type": "feat",
"scope": "spaces",
"additions": 205,
"deletions": 11,
"timestamp": "2026-04-20T16:53:14+02:00"
},
{
"hash": "5b7564b",
"short": "test(ai): promote MockLlmClient to a shared @mana/shared-ai export",
"type": "test",
"scope": "ai",
"additions": 70,
"deletions": 80,
"timestamp": "2026-04-20T18:05:46+02:00"
},
{
"hash": "76060b0",
"short": "feat(invoices): M3 logo upload — embed in PDF header",
"type": "feat",
"scope": "invoices",
"additions": 301,
"deletions": 5,
"timestamp": "2026-04-20T18:06:40+02:00"
},
{
"hash": "871a1c3",
"short": "feat(spaces): wire active-space boot into (app) layout",
"type": "feat",
"scope": "spaces",
"additions": 19,
"deletions": 0,
"timestamp": "2026-04-20T18:10:46+02:00"
},
{
"hash": "b878ecf",
"short": "feat(spaces): Space-Switcher + Create-Dialog in (app) layout",
"type": "feat",
"scope": "spaces",
"additions": 715,
"deletions": 0,
"timestamp": "2026-04-20T18:16:47+02:00"
},
{
"hash": "0d613e1",
"short": "feat(ai): thread TokenUsage through runPlannerLoop → mana-ai budget",
"type": "feat",
"scope": "ai",
"additions": 60,
"deletions": 6,
"timestamp": "2026-04-20T18:21:34+02:00"
},
{
"hash": "a4bc7d2",
"short": "feat(invoices): M8 AI tools — create/mark_paid/list/stats",
"type": "feat",
"scope": "invoices",
"additions": 427,
"deletions": 4,
"timestamp": "2026-04-20T18:22:20+02:00"
},
{
"hash": "dc1a0a6",
"short": "docs(invoices): mark all milestones done, list Phase-2/3 open items",
"type": "docs",
"scope": "invoices",
"additions": 7,
"deletions": 9,
"timestamp": "2026-04-20T18:23:02+02:00"
},
{
"hash": "6d8637b",
"short": "feat(spaces): migrate todo/notes/contacts to scoped-db + add scopedGet",
"type": "feat",
"scope": "spaces",
"additions": 48,
"deletions": 16,
"timestamp": "2026-04-20T18:26:01+02:00"
},
{
"hash": "728027c",
"short": "feat(ai): auto-execute server-planned iterations on the client",
"type": "feat",
"scope": "ai",
"additions": 177,
"deletions": 0,
"timestamp": "2026-04-20T18:34:52+02:00"
},
{
"hash": "3194180",
"short": "docs(plans): mark shared-llm tool-call integration as deferred",
"type": "docs",
"scope": "plans",
"additions": 1,
"deletions": 0,
"timestamp": "2026-04-20T18:36:07+02:00"
},
{
"hash": "394aa79",
"short": "feat(invoices): close Phase-2 gaps — finance cross-link + structured addresses",
"type": "feat",
"scope": "invoices",
"additions": 413,
"deletions": 35,
"timestamp": "2026-04-20T18:58:18+02:00"
},
{
"hash": "8e84004",
"short": "fix(invoices): add scopedForModule import after Spaces bulk-migration",
"type": "fix",
"scope": "invoices",
"additions": 6,
"deletions": 3,
"timestamp": "2026-04-20T19:16:24+02:00"
},
{
"hash": "b13eb44",
"short": "docs(broadcast): plan newsletter / broadcast module",
"type": "docs",
"scope": "broadcast",
"additions": 505,
"deletions": 0,
"timestamp": "2026-04-20T19:32:53+02:00"
},
{
"hash": "00b1c9b",
"short": "feat(spaces): migrate 43 modules to scopedForModule (Batches AD)",
"type": "feat",
"scope": "spaces",
"additions": 379,
"deletions": 155,
"timestamp": "2026-04-20T19:42:06+02:00"
},
{
"hash": "a12928b",
"short": "fix(shared-types): add .ts extensions to re-exports for Node ESM resolvers",
"type": "fix",
"scope": "shared-types",
"additions": 15,
"deletions": 27,
"timestamp": "2026-04-20T19:50:22+02:00"
},
{
"hash": "4ff95b2",
"short": "feat(spaces): rename legacy spaceId → contextSpaceId (v31 migration)",
"type": "feat",
"scope": "spaces",
"additions": 94,
"deletions": 23,
"timestamp": "2026-04-20T19:52:44+02:00"
},
{
"hash": "88e3adb",
"short": "feat(spaces): multi-member RLS policy in mana-sync (forward-compat)",
"type": "feat",
"scope": "spaces",
"additions": 65,
"deletions": 4,
"timestamp": "2026-04-20T19:55:17+02:00"
},
{
"hash": "79a6da3",
"short": "feat(spaces): move access tier from user to space",
"type": "feat",
"scope": "spaces",
"additions": 117,
"deletions": 15,
"timestamp": "2026-04-20T20:10:06+02:00"
},
{
"hash": "1f392c1",
"short": "feat(broadcast): M1 skeleton — module registration + empty ListView",
"type": "feat",
"scope": "broadcast",
"additions": 500,
"deletions": 0,
"timestamp": "2026-04-20T20:16:35+02:00"
},
{
"hash": "5139ade",
"short": "feat(spaces): invite + accept flow (member management UI)",
"type": "feat",
"scope": "spaces",
"additions": 807,
"deletions": 0,
"timestamp": "2026-04-20T20:38:55+02:00"
},
{
"hash": "264c4c3",
"short": "feat(broadcast): M2 audience + editor + compose wizard",
"type": "feat",
"scope": "broadcast",
"additions": 2529,
"deletions": 147,
"timestamp": "2026-04-20T20:41:09+02:00"
},
{
"hash": "da37349",
"short": "chore(mana-llm): thread GOOGLE_API_KEY + default model into local compose",
"type": "chore",
"scope": "mana-llm",
"additions": 2,
"deletions": 0,
"timestamp": "2026-04-20T20:42:21+02:00"
},
{
"hash": "38d3524",
"short": "feat(spaces): end-to-end shared-space sync (membership lookup + plaintext)",
"type": "feat",
"scope": "spaces",
"additions": 365,
"deletions": 18,
"timestamp": "2026-04-20T20:46:53+02:00"
},
{
"hash": "3ac32d9",
"short": "feat(broadcast): M3 email HTML render + desktop/mobile/text preview",
"type": "feat",
"scope": "broadcast",
"additions": 828,
"deletions": 15,
"timestamp": "2026-04-20T20:48:14+02:00"
},
{
"hash": "1d3794f",
"short": "feat(mana-ai): Prometheus metrics for tool-calls, loop rounds, provider errors",
"type": "feat",
"scope": "mana-ai",
"additions": 125,
"deletions": 3,
"timestamp": "2026-04-20T20:48:29+02:00"
},
{
"hash": "fabd45b",
"short": "feat(spaces): move Space-Switcher into the PillNav start slot",
"type": "feat",
"scope": "spaces",
"additions": 38,
"deletions": 20,
"timestamp": "2026-04-20T20:54:41+02:00"
},
{
"hash": "ea673a2",
"short": "style(workbench): polish timeline — time-range filter, event count, prominent revert",
"type": "style",
"scope": "workbench",
"additions": 90,
"deletions": 15,
"timestamp": "2026-04-20T21:16:16+02:00"
},
{
"hash": "ea1c9c1",
"short": "fix(spaces): Space-Switcher visible + styled like native PillNav pills",
"type": "fix",
"scope": "spaces",
"additions": 375,
"deletions": 158,
"timestamp": "2026-04-20T21:21:16+02:00"
},
{
"hash": "8e677c9",
"short": "feat(ai): add Library AI tools (create / rate / status / list)",
"type": "feat",
"scope": "ai",
"additions": 305,
"deletions": 1,
"timestamp": "2026-04-20T21:23:19+02:00"
},
{
"hash": "becba67",
"short": "fix(spaces): call Better Auth at its real URL, not through SvelteKit",
"type": "fix",
"scope": "spaces",
"additions": 71,
"deletions": 47,
"timestamp": "2026-04-20T21:28:45+02:00"
}
],
"review_state": "auto",
"llm": {
"model": null,
"generated_at": null
}
}