managarten/devlog/2026-04-28/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

683 lines
17 KiB
JSON

{
"date": "2026-04-28",
"day_number": 97,
"weekday": "Dienstag",
"commits": 65,
"authors": [
{
"name": "Till JS",
"count": 65
}
],
"additions": 21935,
"deletions": 29438,
"net_lines": -7503,
"files_changed": 491,
"new_files": 0,
"deleted_files": 0,
"session": {
"first_commit_at": "2026-04-28T12:54:32.000Z",
"last_commit_at": "2026-04-29T00:50:16.000Z",
"total_span_minutes": 716,
"active_minutes": 436,
"pauses": [
{
"from": "16:24",
"to": "16:57",
"minutes": 33
},
{
"from": "17:37",
"to": "20:57",
"minutes": 199
},
{
"from": "01:30",
"to": "02:17",
"minutes": 48
}
],
"longest_focus_minutes": 273
},
"top_dirs": [
{
"path": "apps/mana/apps/web",
"pct": 54
},
{
"path": "games/arcade/apps",
"pct": 13
},
{
"path": "services/mana-geocoding/src",
"pct": 9
},
{
"path": "apps/api/src/modules",
"pct": 3
},
{
"path": "packages/shared-branding/src",
"pct": 2
}
],
"top_extensions": [
{
"ext": ".ts",
"count": 311
},
{
"ext": ".svelte",
"count": 170
},
{
"ext": ".json",
"count": 85
},
{
"ext": ".md",
"count": 25
},
{
"ext": ".html",
"count": 23
},
{
"ext": ".yml",
"count": 15
}
],
"tags": ["articles", "forms", "feedback", "geocoding", "deploy"],
"commits_list": [
{
"hash": "44f9155",
"short": "chore(dev): pnpm dev:analytics script + test-checklist mentions local-dev startup",
"type": "chore",
"scope": "dev",
"additions": 19,
"deletions": 1,
"timestamp": "2026-04-28T14:54:32+02:00"
},
{
"hash": "0c30a16",
"short": "fix: 4 boot-time noise + correctness bugs surfaced by post-deploy smoke",
"type": null,
"scope": null,
"additions": 106,
"deletions": 55,
"timestamp": "2026-04-28T14:56:24+02:00"
},
{
"hash": "5377190",
"short": "infra(macmini): bump squeezed container memory limits",
"type": "infra",
"scope": "macmini",
"additions": 10,
"deletions": 5,
"timestamp": "2026-04-28T15:02:38+02:00"
},
{
"hash": "eaa1d74",
"short": "fix: silence two cosmetic boot-time devtools warnings",
"type": null,
"scope": null,
"additions": 55,
"deletions": 20,
"timestamp": "2026-04-28T15:10:15+02:00"
},
{
"hash": "94d3277",
"short": "feat(feedback): \"Idee teilen\" lebt jetzt im PillNav-Usermenü",
"type": "feat",
"scope": "feedback",
"additions": 65,
"deletions": 109,
"timestamp": "2026-04-28T15:12:27+02:00"
},
{
"hash": "ff823bf",
"short": "fix(feedback): POST /api/v1/feedback liest appId aus X-App-Id-Header",
"type": "fix",
"scope": "feedback",
"additions": 6,
"deletions": 1,
"timestamp": "2026-04-28T15:16:11+02:00"
},
{
"hash": "f1e4a39",
"short": "feat(geocoding): provider chain with Photon + Nominatim fallbacks",
"type": "feat",
"scope": "geocoding",
"additions": 2120,
"deletions": 184,
"timestamp": "2026-04-28T15:21:11+02:00"
},
{
"hash": "f39e723",
"short": "chore(ci): drop 16 dead build-* jobs + per-product detect-changes branches",
"type": "chore",
"scope": "ci",
"additions": 30,
"deletions": 727,
"timestamp": "2026-04-28T15:32:43+02:00"
},
{
"hash": "15ab24b",
"short": "feat(feedback): heart-half als globales Feedback-Icon + inline-Form in der Workbench",
"type": "feat",
"scope": "feedback",
"additions": 441,
"deletions": 341,
"timestamp": "2026-04-28T15:36:52+02:00"
},
{
"hash": "9a0cf5b",
"short": "fix(geocoding): bump PROVIDER_TIMEOUT_MS default 5s → 8s",
"type": "fix",
"scope": "geocoding",
"additions": 6,
"deletions": 2,
"timestamp": "2026-04-28T15:39:09+02:00"
},
{
"hash": "34b1690",
"short": "fix(mana-ai): copy missing workspace deps into Docker installer stage",
"type": "fix",
"scope": "mana-ai",
"additions": 11,
"deletions": 1,
"timestamp": "2026-04-28T15:42:20+02:00"
},
{
"hash": "164d5da",
"short": "fix(mana-llm): copy aliases.yaml into Docker image",
"type": "fix",
"scope": "mana-llm",
"additions": 5,
"deletions": 1,
"timestamp": "2026-04-28T15:47:48+02:00"
},
{
"hash": "bcc21ca",
"short": "feat(geocoding): privacy hardening — sensitive-query block + coord quantization + extended cache TTL for public answers",
"type": "feat",
"scope": "geocoding",
"additions": 658,
"deletions": 29,
"timestamp": "2026-04-28T16:04:56+02:00"
},
{
"hash": "698e09b",
"short": "chore(deploy): auto-apply additive Drizzle schema migrations + RAM headroom for mana-web build",
"type": "chore",
"scope": "deploy",
"additions": 283,
"deletions": 0,
"timestamp": "2026-04-28T16:10:31+02:00"
},
{
"hash": "112e2cc",
"short": "feat(feedback): rename community → feedback (module + routes + domain)",
"type": "feat",
"scope": "feedback",
"additions": 51,
"deletions": 51,
"timestamp": "2026-04-28T16:18:45+02:00"
},
{
"hash": "f20a411",
"short": "chore(infra): right-size mem_limits based on observed RSS (Tier-3 sweep)",
"type": "chore",
"scope": "infra",
"additions": 28,
"deletions": 8,
"timestamp": "2026-04-28T16:18:58+02:00"
},
{
"hash": "b1fa55d",
"short": "feat(places): surface geocoding privacy notices in autocomplete UI",
"type": "feat",
"scope": "places",
"additions": 218,
"deletions": 25,
"timestamp": "2026-04-28T16:24:15+02:00"
},
{
"hash": "e4d9dc5",
"short": "fix(deploy): safe-db-push uses pnpm dlx when local drizzle-kit is missing",
"type": "fix",
"scope": "deploy",
"additions": 14,
"deletions": 2,
"timestamp": "2026-04-28T16:57:35+02:00"
},
{
"hash": "6f83fba",
"short": "docs(reports): geocoding self-hosting decision — recommend Photon on mana-gpu",
"type": "docs",
"scope": "reports",
"additions": 219,
"deletions": 0,
"timestamp": "2026-04-28T17:04:30+02:00"
},
{
"hash": "941df57",
"short": "feat(feedback): rename community-identity columns + settings-section",
"type": "feat",
"scope": "feedback",
"additions": 544,
"deletions": 209,
"timestamp": "2026-04-28T17:09:58+02:00"
},
{
"hash": "104a5a4",
"short": "fix(deploy): pnpm install workspace deps before running safe-db-push",
"type": "fix",
"scope": "deploy",
"additions": 42,
"deletions": 12,
"timestamp": "2026-04-28T17:10:08+02:00"
},
{
"hash": "153ad80",
"short": "feat(geocoding): support dual-Photon (self-hosted + public) for GPU migration",
"type": "feat",
"scope": "geocoding",
"additions": 537,
"deletions": 16,
"timestamp": "2026-04-28T17:19:04+02:00"
},
{
"hash": "f851f15",
"short": "feat(lasts): tidy ListView header — single-row quick-add + scrollable icon-tabs",
"type": "feat",
"scope": "lasts",
"additions": 109,
"deletions": 108,
"timestamp": "2026-04-28T17:22:40+02:00"
},
{
"hash": "c709420",
"short": "fix(feedback): ReactionBar stoppt Click-Bubbling",
"type": "fix",
"scope": "feedback",
"additions": 6,
"deletions": 2,
"timestamp": "2026-04-28T17:25:22+02:00"
},
{
"hash": "f41ca54",
"short": "fix(deploy): safe-db-push cleanup trap also removes snapshot + journal",
"type": "fix",
"scope": "deploy",
"additions": 37,
"deletions": 24,
"timestamp": "2026-04-28T17:25:46+02:00"
},
{
"hash": "f754d4e",
"short": "chore(infra): provision 2 GiB swap inside Colima VM as OOM safety net",
"type": "chore",
"scope": "infra",
"additions": 21,
"deletions": 0,
"timestamp": "2026-04-28T17:31:52+02:00"
},
{
"hash": "248549b",
"short": "fix(feedback): keine doppelte Anzeige von Title + Body",
"type": "fix",
"scope": "feedback",
"additions": 54,
"deletions": 3,
"timestamp": "2026-04-28T17:37:51+02:00"
},
{
"hash": "7ebbf06",
"short": "feat(macmini): pass PHOTON_SELF_API_URL through to mana-geocoding",
"type": "feat",
"scope": "macmini",
"additions": 9,
"deletions": 0,
"timestamp": "2026-04-28T21:15:54+02:00"
},
{
"hash": "fc49198",
"short": "docs(geocoding): post-migration log + Photon weekly-refresh operator scripts",
"type": "docs",
"scope": "geocoding",
"additions": 254,
"deletions": 5,
"timestamp": "2026-04-28T21:31:08+02:00"
},
{
"hash": "5535f2d",
"short": "feat(articles): server-side bulk-import worker (Phase 2)",
"type": "feat",
"scope": "articles",
"additions": 723,
"deletions": 0,
"timestamp": "2026-04-28T21:33:49+02:00"
},
{
"hash": "7bca16d",
"short": "feat(articles): bulk-import schema + plan (Phase 1)",
"type": "feat",
"scope": "articles",
"additions": 785,
"deletions": 4249,
"timestamp": "2026-04-28T22:11:51+02:00"
},
{
"hash": "2bbcf14",
"short": "chore(geocoding): remove Pelias + close 3 bypass paths to public Nominatim",
"type": "chore",
"scope": "geocoding",
"additions": 332,
"deletions": 1264,
"timestamp": "2026-04-28T22:12:26+02:00"
},
{
"hash": "a9bcd41",
"short": "feat(articles): client-side pickup consumer (Phase 3)",
"type": "feat",
"scope": "articles",
"additions": 166,
"deletions": 0,
"timestamp": "2026-04-28T22:16:10+02:00"
},
{
"hash": "19627f1",
"short": "docs(demo-personas): Runbook für echte-Account-Demo-Workflow",
"type": "docs",
"scope": "demo-personas",
"additions": 233,
"deletions": 0,
"timestamp": "2026-04-28T22:17:18+02:00"
},
{
"hash": "962606b",
"short": "feat(demo-personas): chor tägerwilen — Recherche + Seed (118 Records)",
"type": "feat",
"scope": "demo-personas",
"additions": 1275,
"deletions": 0,
"timestamp": "2026-04-28T22:17:32+02:00"
},
{
"hash": "8a5fad3",
"short": "fix(geocoding): bump PROVIDER_TIMEOUT_MS to 20s for cold cross-LAN",
"type": "fix",
"scope": "geocoding",
"additions": 18,
"deletions": 6,
"timestamp": "2026-04-28T22:19:21+02:00"
},
{
"hash": "fa299e3",
"short": "feat(app-registry): wire up 4 modules + 7 routes + tier-patch validator",
"type": "feat",
"scope": "app-registry",
"additions": 812,
"deletions": 556,
"timestamp": "2026-04-28T22:21:41+02:00"
},
{
"hash": "29cbaf3",
"short": "feat(articles): bulk-import store + queries (Phase 4)",
"type": "feat",
"scope": "articles",
"additions": 275,
"deletions": 1,
"timestamp": "2026-04-28T22:23:45+02:00"
},
{
"hash": "5f0a1b5",
"short": "feat(articles): bulk-import UI (Phase 5)",
"type": "feat",
"scope": "articles",
"additions": 773,
"deletions": 1,
"timestamp": "2026-04-28T22:30:36+02:00"
},
{
"hash": "0fc16d1",
"short": "feat(articles): bulk-import AI tool wiring (Phase 6)",
"type": "feat",
"scope": "articles",
"additions": 130,
"deletions": 3,
"timestamp": "2026-04-28T22:33:31+02:00"
},
{
"hash": "33b3f65",
"short": "test(articles): parseUrls unit tests + extract pure module (Phase 7)",
"type": "test",
"scope": "articles",
"additions": 184,
"deletions": 49,
"timestamp": "2026-04-28T22:39:17+02:00"
},
{
"hash": "230dfd5",
"short": "chore: extract arcade into standalone repo",
"type": null,
"scope": null,
"additions": 107,
"deletions": 17469,
"timestamp": "2026-04-28T22:29:14+02:00"
},
{
"hash": "907a3ad",
"short": "Create forms-module.md",
"type": null,
"scope": null,
"additions": 364,
"deletions": 0,
"timestamp": "2026-04-28T22:41:45+02:00"
},
{
"hash": "6d193a9",
"short": "chore(app-registry): polish 4 small wins — TOC + AppId-derive + route-drift test + 3 MANA_APPS",
"type": "chore",
"scope": "app-registry",
"additions": 205,
"deletions": 37,
"timestamp": "2026-04-28T22:59:26+02:00"
},
{
"hash": "75d9207",
"short": "feat(forms): M1 skeleton — module + Dexie v57 + welcome-seed",
"type": "feat",
"scope": "forms",
"additions": 1063,
"deletions": 0,
"timestamp": "2026-04-28T23:01:05+02:00"
},
{
"hash": "f104a2b",
"short": "feat(forms): M2 builder + CRUD — drag-reorder + 11 field-types",
"type": "feat",
"scope": "forms",
"additions": 1414,
"deletions": 0,
"timestamp": "2026-04-28T23:21:27+02:00"
},
{
"hash": "0ef71de",
"short": "feat(forms): M3a responses view + CSV export + detail modal",
"type": "feat",
"scope": "forms",
"additions": 1088,
"deletions": 1,
"timestamp": "2026-04-28T23:21:51+02:00"
},
{
"hash": "afeb32f",
"short": "feat(forms): M4a conditional branching — pure resolver + UI editor",
"type": "feat",
"scope": "forms",
"additions": 842,
"deletions": 2,
"timestamp": "2026-04-28T23:31:17+02:00"
},
{
"hash": "18f13e1",
"short": "feat(forms): M4b visibility + unlisted-sharing + public render",
"type": "feat",
"scope": "forms",
"additions": 800,
"deletions": 1,
"timestamp": "2026-04-28T23:39:41+02:00"
},
{
"hash": "054b9e5",
"short": "fix(articles): import-projection accepts F3 + legacy field_meta shapes",
"type": "fix",
"scope": "articles",
"additions": 28,
"deletions": 92,
"timestamp": "2026-04-28T23:22:30+02:00"
},
{
"hash": "8fbdc6d",
"short": "feat(notes): isSpaceContext flag replaces kontext module (Option B)",
"type": "feat",
"scope": "notes",
"additions": 496,
"deletions": 983,
"timestamp": "2026-04-29T00:06:34+02:00"
},
{
"hash": "1815139",
"short": "chore: drop context module — registry refs, schema, AI route, AppId",
"type": null,
"scope": null,
"additions": 11,
"deletions": 96,
"timestamp": "2026-04-28T20:57:14+02:00"
},
{
"hash": "5c8faae",
"short": "chore: drop remaining context module legacy refs",
"type": null,
"scope": null,
"additions": 1,
"deletions": 66,
"timestamp": "2026-04-28T21:44:33+02:00"
},
{
"hash": "a295894",
"short": "chore: drop legacy context module files (companion to acb737e25)",
"type": null,
"scope": null,
"additions": 0,
"deletions": 2241,
"timestamp": "2026-04-29T00:23:10+02:00"
},
{
"hash": "0d85d7c",
"short": "feat(forms): M5 AI tools — 7 tools im AI_TOOL_CATALOG",
"type": "feat",
"scope": "forms",
"additions": 640,
"deletions": 0,
"timestamp": "2026-04-29T00:33:55+02:00"
},
{
"hash": "e99fea1",
"short": "feat(forms): M3b public-submit endpoint — schließt den Public-Loop",
"type": "feat",
"scope": "forms",
"additions": 360,
"deletions": 23,
"timestamp": "2026-04-29T00:44:42+02:00"
},
{
"hash": "b297f68",
"short": "fix(articles, mana-ai): rollout-block hardening for sync_changes projections",
"type": "fix",
"scope": "articles, mana-ai",
"additions": 223,
"deletions": 69,
"timestamp": "2026-04-29T00:53:39+02:00"
},
{
"hash": "93545f8",
"short": "chore: drop who + kontext MANA_APPS entries to match earlier extractions",
"type": null,
"scope": null,
"additions": 0,
"deletions": 98,
"timestamp": "2026-04-29T01:04:34+02:00"
},
{
"hash": "59373c0",
"short": "chore(articles): hygiene pass — shared-ai actor + lib/sync-db + metrics (#5,#7,#11)",
"type": "chore",
"scope": "articles",
"additions": 247,
"deletions": 124,
"timestamp": "2026-04-29T01:06:15+02:00"
},
{
"hash": "7f805d9",
"short": "feat(forms): M7a auto-sync zu contacts — der Mana-Differentiator",
"type": "feat",
"scope": "forms",
"additions": 548,
"deletions": 4,
"timestamp": "2026-04-29T01:07:22+02:00"
},
{
"hash": "e8774fc",
"short": "test(articles): worker rollup + field-meta + consent-wall + recovery UI (#6,#14)",
"type": "test",
"scope": "articles",
"additions": 222,
"deletions": 3,
"timestamp": "2026-04-29T01:30:04+02:00"
},
{
"hash": "57b7a43",
"short": "feat(forms): M7b auto-sync zu events — RSVP-Pipeline für Anmeldungen",
"type": "feat",
"scope": "forms",
"additions": 285,
"deletions": 34,
"timestamp": "2026-04-29T02:17:37+02:00"
},
{
"hash": "ace1b70",
"short": "feat(forms): M8 website-block — formEmbed bindet Mana-Formulare ein",
"type": "feat",
"scope": "forms",
"additions": 913,
"deletions": 2,
"timestamp": "2026-04-29T02:38:28+02:00"
},
{
"hash": "e37c008",
"short": "chore(articles): polish pass — schema cleanup, MAX cap, filters, docs (#8,#9,#13,#15,#18,#20)",
"type": "chore",
"scope": "articles",
"additions": 218,
"deletions": 22,
"timestamp": "2026-04-29T02:42:46+02:00"
},
{
"hash": "48bd091",
"short": "feat(forms): FormsWidget — Workbench-Karte mit Stats + letzte Forms",
"type": "feat",
"scope": "forms",
"additions": 196,
"deletions": 1,
"timestamp": "2026-04-29T02:50:16+02:00"
}
],
"review_state": "auto",
"llm": {
"model": null,
"generated_at": null
}
}