diff --git a/devlog/2025-11-22/data.json b/devlog/2025-11-22/data.json new file mode 100644 index 000000000..a988bcd2f --- /dev/null +++ b/devlog/2025-11-22/data.json @@ -0,0 +1,127 @@ +{ + "date": "2025-11-22", + "day_number": 1, + "weekday": "Samstag", + "commits": 5, + "authors": [ + { + "name": "Till-JS", + "count": 5 + } + ], + "additions": 516933, + "deletions": 124, + "net_lines": 516809, + "files_changed": 2475, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-11-22T22:38:24.000Z", + "last_commit_at": "2025-11-22T22:59:55.000Z", + "total_span_minutes": 22, + "active_minutes": 22, + "pauses": [], + "longest_focus_minutes": 22 + }, + "top_dirs": [ + { + "path": "memoro/apps/landing", + "pct": 26 + }, + { + "path": "memoro/apps/mobile", + "pct": 23 + }, + { + "path": "maerchenzauber/apps/mobile", + "pct": 9 + }, + { + "path": "memoro/apps/web", + "pct": 7 + }, + { + "path": "maerchenzauber/apps/backend", + "pct": 7 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 504 + }, + { + "ext": ".tsx", + "count": 417 + }, + { + "ext": ".md", + "count": 368 + }, + { + "ext": ".mdx", + "count": 240 + }, + { + "ext": ".astro", + "count": 210 + }, + { + "ext": ".json", + "count": 177 + } + ], + "tags": [], + "commits_list": [ + { + "hash": "e7f5f94", + "short": "chore: initial commit - consolidate 4 projects into monorepo", + "type": null, + "scope": null, + "additions": 487047, + "deletions": 0, + "timestamp": "2025-11-22T23:38:24+01:00" + }, + { + "hash": "2c58d03", + "short": "feat: add monorepo configuration and shared packages structure", + "type": null, + "scope": null, + "additions": 738, + "deletions": 0, + "timestamp": "2025-11-22T23:41:52+01:00" + }, + { + "hash": "6613f45", + "short": "docs: add dependency alignment guide", + "type": null, + "scope": null, + "additions": 174, + "deletions": 0, + "timestamp": "2025-11-22T23:42:39+01:00" + }, + { + "hash": "f3b428e", + "short": "feat: align dependencies across all projects", + "type": null, + "scope": null, + "additions": 28669, + "deletions": 44, + "timestamp": "2025-11-22T23:53:07+01:00" + }, + { + "hash": "725db63", + "short": "chore: cleanup turbo config and fix peer dependencies", + "type": null, + "scope": null, + "additions": 305, + "deletions": 80, + "timestamp": "2025-11-22T23:59:55+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-11-22/macher.md b/devlog/2025-11-22/macher.md new file mode 100644 index 000000000..5f61311e0 --- /dev/null +++ b/devlog/2025-11-22/macher.md @@ -0,0 +1,22 @@ +--- +date: 2025-11-22 +day: 1 +view: macher +weekday: Samstag +commits: 5 +review: written +--- + +# Samstag, 2025-11-22 — Tag 1 (Macher-Sicht) + +## Stats + +5 Commits, +516933 / −124 LoC, 2475 Files. Top-Dirs: `memoro/apps/landing` (26%), `memoro/apps/mobile` (23%), `maerchenzauber/apps/mobile` (9%), `memoro/apps/web` (7%), `maerchenzauber/apps/backend` (7%). Tags: —. Session 22:38 → 22:59 (~22 aktive Min, längster Fokus 22 Min). + +## Commits + +- `e7f5f94` chore: initial commit - consolidate 4 projects into monorepo (+487047/-0) +- `2c58d03` feat: add monorepo configuration and shared packages structure (+738/-0) +- `6613f45` docs: add dependency alignment guide (+174/-0) +- `f3b428e` feat: align dependencies across all projects (+28669/-44) +- `725db63` chore: cleanup turbo config and fix peer dependencies (+305/-80) diff --git a/devlog/2025-11-22/spieler.md b/devlog/2025-11-22/spieler.md new file mode 100644 index 000000000..3e2bb095f --- /dev/null +++ b/devlog/2025-11-22/spieler.md @@ -0,0 +1,18 @@ +--- +date: 2025-11-22 +day: 1 +view: spieler +weekday: Samstag +commits: 5 +review: written +--- + +# Samstag, 2025-11-22 — Tag 1 + +Kurzer Arbeitstag, Schwerpunkt **memoro**. + +## Highlights + +- add monorepo configuration and shared packages structure +- add dependency alignment guide +- align dependencies across all projects diff --git a/devlog/2025-11-24/data.json b/devlog/2025-11-24/data.json new file mode 100644 index 000000000..6bc74d83c --- /dev/null +++ b/devlog/2025-11-24/data.json @@ -0,0 +1,328 @@ +{ + "date": "2025-11-24", + "day_number": 2, + "weekday": "Montag", + "commits": 25, + "authors": [ + { + "name": "Till-JS", + "count": 25 + } + ], + "additions": 233767, + "deletions": 33690, + "net_lines": 200077, + "files_changed": 1557, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-11-24T20:09:20.000Z", + "last_commit_at": "2025-11-25T03:00:36.000Z", + "total_span_minutes": 411, + "active_minutes": 188, + "pauses": [ + { + "from": "21:09", + "to": "21:51", + "minutes": 42 + }, + { + "from": "22:39", + "to": "23:54", + "minutes": 75 + }, + { + "from": "00:42", + "to": "01:31", + "minutes": 49 + }, + { + "from": "03:03", + "to": "04:00", + "minutes": 57 + } + ], + "longest_focus_minutes": 92 + }, + "top_dirs": [ + { + "path": "uload/apps/web", + "pct": 15 + }, + { + "path": "picture/apps/mobile", + "pct": 9 + }, + { + "path": "picture/apps/landing", + "pct": 9 + }, + { + "path": "memoro/apps/web", + "pct": 7 + }, + { + "path": "picture/apps/web", + "pct": 6 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 474 + }, + { + "ext": ".svelte", + "count": 430 + }, + { + "ext": ".md", + "count": 291 + }, + { + "ext": ".json", + "count": 192 + }, + { + "ext": ".astro", + "count": 81 + }, + { + "ext": ".tsx", + "count": 77 + } + ], + "tags": ["manadeck", "shared-ui", "maerchenzauber/web", "landing"], + "commits_list": [ + { + "hash": "ef70a1a", + "short": " Commit Message feat: implement comprehensive shared packages architecture for monorepo SUMMARY: Introduce 10 shared packages to unify common code across all 4 web apps, reducing ~3,000 lines of duplicated code and establishing consistent patterns for authentication, UI components, theming, and utilities. NEW SHARED PACKAGES: - @manacore/shared-auth: Unified auth logic (token management, JWT utils, fetch interceptor, storage/device/network adapters) - @manacore/shared-auth-ui: Reusable auth UI (LoginPage, RegisterPage, OAuth buttons for Google/Apple) - @manacore/shared-tailwind: Unified Tailwind config with 4 themes (lume, nature, stone, ocean) and light/dark mode support - @manacore/shared-icons: Phosphor-based icon library (40+ icons) - @manacore/shared-ui: Atomic design system (Text, Button, Badge, Toggle, Input, Modal) - @manacore/shared-i18n: Unified i18n setup with locale detection - @manacore/shared-config: Environment validation with Zod - @manacore/shared-subscriptio n-types: Subscription type definitions - @manacore/shared-subscriptio n-ui: Subscription UI components (planned) EXTENDED PACKAGES: - @manacore/shared-types: Added auth.ts, theme.ts, ui.ts, common.ts - @manacore/shared-utils: Added format.ts, validation.ts APP MIGRATIONS: - memoro/web: Migrated login (549→46 LOC), tailwind (165→12 LOC), removed 15+ duplicate components - manacore/web: Migrated to client-side auth with shared-auth, added new components (Icon, ThemeToggle, Logo) - manadeck/web: Replaced local authService/tokenManager with shared-auth, migrated auth pages - maerchenzauber/web: Added auth setup, stores, components, routes DELETED FILES (migrated to shared packages): - OAuth buttons (Google/Apple) from memoro, manacore, manadeck - Local authService, tokenManager, deviceManager, jwt utils - Duplicate Modal, Toggle, Text components - iconPaths and ManaIcon components - Subscription-related components (CostCard, PackageCard, etc.) BENEFITS: - 92% reduction in login page code - 93% reduction in tailwind config code - Consistent theming across all apps - Single source of truth for auth logic - Easier maintenance and updates BREAKING CHANGES: - Icon imports now from @manacore/shared-icons - Modal imports from @manacore/shared-ui - OAuth config via setGoogleCl ientId()/setAppleConfig()", + "type": null, + "scope": null, + "additions": 11114, + "deletions": 3657, + "timestamp": "2025-11-24T21:09:20+01:00" + }, + { + "hash": "96e0ace", + "short": "feat: implement unified theme system across all web apps", + "type": null, + "scope": null, + "additions": 2980, + "deletions": 1076, + "timestamp": "2025-11-24T21:51:24+01:00" + }, + { + "hash": "22cb7d2", + "short": "feat: unify UI components, AppSlider, and login screens across apps", + "type": null, + "scope": null, + "additions": 893, + "deletions": 22130, + "timestamp": "2025-11-24T21:53:44+01:00" + }, + { + "hash": "afdc30b", + "short": "feat(shared-ui): add navigation components and form elements", + "type": "feat", + "scope": "shared-ui", + "additions": 1536, + "deletions": 22, + "timestamp": "2025-11-24T22:01:04+01:00" + }, + { + "hash": "7d426d5", + "short": "feat: add shared-branding package and extend shared-utils", + "type": null, + "scope": null, + "additions": 493, + "deletions": 1, + "timestamp": "2025-11-24T22:12:24+01:00" + }, + { + "hash": "74ccad3", + "short": "feat: unify utilities into shared packages (Tier 1)", + "type": null, + "scope": null, + "additions": 878, + "deletions": 648, + "timestamp": "2025-11-24T22:19:04+01:00" + }, + { + "hash": "f93cb99", + "short": "fix: add missing @manacore/shared-branding dependency to web apps", + "type": null, + "scope": null, + "additions": 43, + "deletions": 12, + "timestamp": "2025-11-24T22:30:44+01:00" + }, + { + "hash": "1032502", + "short": "feat: add Tier 2 shared components (stats, tags, media)", + "type": null, + "scope": null, + "additions": 513, + "deletions": 304, + "timestamp": "2025-11-24T22:39:15+01:00" + }, + { + "hash": "9449fff", + "short": "feat: add Tier 3 shared auth store patterns", + "type": null, + "scope": null, + "additions": 717, + "deletions": 0, + "timestamp": "2025-11-24T23:54:27+01:00" + }, + { + "hash": "294d1fc", + "short": "refactor: consolidate app logos into shared-branding package (Tier 4)", + "type": null, + "scope": null, + "additions": 112, + "deletions": 121, + "timestamp": "2025-11-25T00:06:21+01:00" + }, + { + "hash": "c87641f", + "short": "feat: add shared credit service package (Tier 5)", + "type": null, + "scope": null, + "additions": 619, + "deletions": 12, + "timestamp": "2025-11-25T00:16:43+01:00" + }, + { + "hash": "3c457f9", + "short": "feat: add layout components to shared-ui (Tier 6)", + "type": null, + "scope": null, + "additions": 413, + "deletions": 7, + "timestamp": "2025-11-25T00:28:52+01:00" + }, + { + "hash": "5045d70", + "short": "feat: add form and layout components to shared-ui (Tier 6b)", + "type": null, + "scope": null, + "additions": 505, + "deletions": 1, + "timestamp": "2025-11-25T00:36:12+01:00" + }, + { + "hash": "cacbd61", + "short": "feat: add sidebar enhancement components (Tier 7)", + "type": null, + "scope": null, + "additions": 306, + "deletions": 4, + "timestamp": "2025-11-25T00:42:46+01:00" + }, + { + "hash": "bd869df", + "short": "feat: unify navigation with shared PillNavigation component", + "type": null, + "scope": null, + "additions": 984, + "deletions": 1520, + "timestamp": "2025-11-25T01:31:23+01:00" + }, + { + "hash": "926ca23", + "short": "feat: add i18n localization with language switcher to all web apps", + "type": null, + "scope": null, + "additions": 7051, + "deletions": 2237, + "timestamp": "2025-11-25T01:41:25+01:00" + }, + { + "hash": "39a9a61", + "short": "fix(manadeck): update Badge and Button variants to match shared-ui", + "type": "fix", + "scope": "manadeck", + "additions": 3, + "deletions": 3, + "timestamp": "2025-11-25T01:42:00+01:00" + }, + { + "hash": "10cb295", + "short": "feat: add localized AppSlider translations for all web apps", + "type": null, + "scope": null, + "additions": 1084, + "deletions": 69, + "timestamp": "2025-11-25T02:09:39+01:00" + }, + { + "hash": "9c584a2", + "short": "feat(maerchenzauber/web): add missing features for mobile app parity", + "type": "feat", + "scope": "maerchenzauber/web", + "additions": 3077, + "deletions": 10, + "timestamp": "2025-11-25T02:18:20+01:00" + }, + { + "hash": "84f9343", + "short": "Feat: Login localization, design, märchenzauber feature complete webapp", + "type": null, + "scope": null, + "additions": 3229, + "deletions": 150, + "timestamp": "2025-11-25T02:19:40+01:00" + }, + { + "hash": "1530efa", + "short": "feat(manadeck): migrate backend from Supabase to PostgreSQL with Drizzle ORM", + "type": "feat", + "scope": "manadeck", + "additions": 3428, + "deletions": 233, + "timestamp": "2025-11-25T02:39:39+01:00" + }, + { + "hash": "be9df4a", + "short": "feat(manadeck): complete Supabase removal from frontend and backend", + "type": "feat", + "scope": "manadeck", + "additions": 91, + "deletions": 557, + "timestamp": "2025-11-25T02:49:34+01:00" + }, + { + "hash": "4bdb5de", + "short": "feat(manadeck): implement AI deck generation with Google Gemini", + "type": "feat", + "scope": "manadeck", + "additions": 712, + "deletions": 79, + "timestamp": "2025-11-25T02:59:46+01:00" + }, + { + "hash": "c6c4c5a", + "short": "feat(landing): add shared-landing-ui package and manadeck landing page", + "type": "feat", + "scope": "landing", + "additions": 3519, + "deletions": 381, + "timestamp": "2025-11-25T03:03:41+01:00" + }, + { + "hash": "c712a25", + "short": "feat: integrate uload and picture, unify package naming", + "type": null, + "scope": null, + "additions": 189467, + "deletions": 456, + "timestamp": "2025-11-25T04:00:36+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-11-24/macher.md b/devlog/2025-11-24/macher.md new file mode 100644 index 000000000..e69c25bdb --- /dev/null +++ b/devlog/2025-11-24/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-11-24 +day: 2 +view: macher +weekday: Montag +commits: 25 +review: written +--- + +# Montag, 2025-11-24 — Tag 2 (Macher-Sicht) + +## Stats + +25 Commits, +233767 / −33690 LoC, 1557 Files. Top-Dirs: `uload/apps/web` (15%), `picture/apps/mobile` (9%), `picture/apps/landing` (9%), `memoro/apps/web` (7%), `picture/apps/web` (6%). Tags: manadeck, shared-ui, maerchenzauber/web, landing. Session 20:09 → 03:00 (~188 aktive Min, längster Fokus 92 Min). + +## Commits + +- `ef70a1a` Commit Message feat: implement comprehensive shared packages architecture for monorepo SUMMARY: Introduce 10 shared packages to unify common code across all 4 web apps, reducing ~3,000 lines of duplicated code and establishing consistent patterns for authentication, UI components, theming, and utilities. NEW SHARED PACKAGES: - @manacore/shared-auth: Unified auth logic (token management, JWT utils, fetch interceptor, storage/device/network adapters) - @manacore/shared-auth-ui: Reusable auth UI (LoginPage, RegisterPage, OAuth buttons for Google/Apple) - @manacore/shared-tailwind: Unified Tailwind config with 4 themes (lume, nature, stone, ocean) and light/dark mode support - @manacore/shared-icons: Phosphor-based icon library (40+ icons) - @manacore/shared-ui: Atomic design system (Text, Button, Badge, Toggle, Input, Modal) - @manacore/shared-i18n: Unified i18n setup with locale detection - @manacore/shared-config: Environment validation with Zod - @manacore/shared-subscriptio n-types: Subscription type definitions - @manacore/shared-subscriptio n-ui: Subscription UI components (planned) EXTENDED PACKAGES: - @manacore/shared-types: Added auth.ts, theme.ts, ui.ts, common.ts - @manacore/shared-utils: Added format.ts, validation.ts APP MIGRATIONS: - memoro/web: Migrated login (549→46 LOC), tailwind (165→12 LOC), removed 15+ duplicate components - manacore/web: Migrated to client-side auth with shared-auth, added new components (Icon, ThemeToggle, Logo) - manadeck/web: Replaced local authService/tokenManager with shared-auth, migrated auth pages - maerchenzauber/web: Added auth setup, stores, components, routes DELETED FILES (migrated to shared packages): - OAuth buttons (Google/Apple) from memoro, manacore, manadeck - Local authService, tokenManager, deviceManager, jwt utils - Duplicate Modal, Toggle, Text components - iconPaths and ManaIcon components - Subscription-related components (CostCard, PackageCard, etc.) BENEFITS: - 92% reduction in login page code - 93% reduction in tailwind config code - Consistent theming across all apps - Single source of truth for auth logic - Easier maintenance and updates BREAKING CHANGES: - Icon imports now from @manacore/shared-icons - Modal imports from @manacore/shared-ui - OAuth config via setGoogleCl ientId()/setAppleConfig() (+11114/-3657) +- `96e0ace` feat: implement unified theme system across all web apps (+2980/-1076) +- `22cb7d2` feat: unify UI components, AppSlider, and login screens across apps (+893/-22130) +- `afdc30b` feat(shared-ui): add navigation components and form elements (+1536/-22) +- `7d426d5` feat: add shared-branding package and extend shared-utils (+493/-1) +- `74ccad3` feat: unify utilities into shared packages (Tier 1) (+878/-648) +- `f93cb99` fix: add missing @manacore/shared-branding dependency to web apps (+43/-12) +- `1032502` feat: add Tier 2 shared components (stats, tags, media) (+513/-304) +- `9449fff` feat: add Tier 3 shared auth store patterns (+717/-0) +- `294d1fc` refactor: consolidate app logos into shared-branding package (Tier 4) (+112/-121) +- `c87641f` feat: add shared credit service package (Tier 5) (+619/-12) +- `3c457f9` feat: add layout components to shared-ui (Tier 6) (+413/-7) +- `5045d70` feat: add form and layout components to shared-ui (Tier 6b) (+505/-1) +- `cacbd61` feat: add sidebar enhancement components (Tier 7) (+306/-4) +- `bd869df` feat: unify navigation with shared PillNavigation component (+984/-1520) +- `926ca23` feat: add i18n localization with language switcher to all web apps (+7051/-2237) +- `39a9a61` fix(manadeck): update Badge and Button variants to match shared-ui (+3/-3) +- `10cb295` feat: add localized AppSlider translations for all web apps (+1084/-69) +- `9c584a2` feat(maerchenzauber/web): add missing features for mobile app parity (+3077/-10) +- `84f9343` Feat: Login localization, design, märchenzauber feature complete webapp (+3229/-150) + +_… plus 5 weitere Commits._ diff --git a/devlog/2025-11-24/spieler.md b/devlog/2025-11-24/spieler.md new file mode 100644 index 000000000..97d1095bf --- /dev/null +++ b/devlog/2025-11-24/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-11-24 +day: 2 +view: spieler +weekday: Montag +commits: 25 +review: written +--- + +# Montag, 2025-11-24 — Tag 2 + +Dichter Tag in **uload** und Umgebung. + +## Highlights + +- Commit Message feat: implement comprehensive shared packages architecture for monorepo SUMMARY: Introduce 10 shared packages to unify common code across all 4 web apps, reducing ~3,000 lines of duplicated code and establishing consistent patterns for authentication, UI components, theming, and utilities. NEW SHARED PACKAGES: - @manacore/shared-auth: Unified auth logic (token management, JWT utils, fetch interceptor, storage/device/network adapters) - @manacore/shared-auth-ui: Reusable auth UI (LoginPage, RegisterPage, OAuth buttons for Google/Apple) - @manacore/shared-tailwind: Unified Tailwind config with 4 themes (lume, nature, stone, ocean) and light/dark mode support - @manacore/shared-icons: Phosphor-based icon library (40+ icons) - @manacore/shared-ui: Atomic design system (Text, Button, Badge, Toggle, Input, Modal) - @manacore/shared-i18n: Unified i18n setup with locale detection - @manacore/shared-config: Environment validation with Zod - @manacore/shared-subscriptio n-types: Subscription type definitions - @manacore/shared-subscriptio n-ui: Subscription UI components (planned) EXTENDED PACKAGES: - @manacore/shared-types: Added auth.ts, theme.ts, ui.ts, common.ts - @manacore/shared-utils: Added format.ts, validation.ts APP MIGRATIONS: - memoro/web: Migrated login (549→46 LOC), tailwind (165→12 LOC), removed 15+ duplicate components - manacore/web: Migrated to client-side auth with shared-auth, added new components (Icon, ThemeToggle, Logo) - manadeck/web: Replaced local authService/tokenManager with shared-auth, migrated auth pages - maerchenzauber/web: Added auth setup, stores, components, routes DELETED FILES (migrated to shared packages): - OAuth buttons (Google/Apple) from memoro, manacore, manadeck - Local authService, tokenManager, deviceManager, jwt utils - Duplicate Modal, Toggle, Text components - iconPaths and ManaIcon components - Subscription-related components (CostCard, PackageCard, etc.) BENEFITS: - 92% reduction in login page code - 93% reduction in tailwind config code - Consistent theming across all apps - Single source of truth for auth logic - Easier maintenance and updates BREAKING CHANGES: - Icon imports now from @manacore/shared-icons - Modal imports from @manacore/shared-ui - OAuth config via setGoogleCl ientId()/setAppleConfig() +- implement unified theme system across all web apps +- unify UI components, AppSlider, and login screens across apps +- add navigation components and form elements +- add shared-branding package and extend shared-utils diff --git a/devlog/2025-11-25/data.json b/devlog/2025-11-25/data.json new file mode 100644 index 000000000..323924907 --- /dev/null +++ b/devlog/2025-11-25/data.json @@ -0,0 +1,248 @@ +{ + "date": "2025-11-25", + "day_number": 3, + "weekday": "Dienstag", + "commits": 14, + "authors": [ + { + "name": "Till-JS", + "count": 9 + }, + { + "name": "Wuesteon", + "count": 5 + } + ], + "additions": 109563, + "deletions": 11046, + "net_lines": 98517, + "files_changed": 4792, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-11-25T11:02:52.000Z", + "last_commit_at": "2025-11-26T02:03:24.000Z", + "total_span_minutes": 901, + "active_minutes": 33, + "pauses": [ + { + "from": "12:02", + "to": "13:01", + "minutes": 59 + }, + { + "from": "13:01", + "to": "13:48", + "minutes": 47 + }, + { + "from": "13:49", + "to": "15:54", + "minutes": 126 + }, + { + "from": "15:57", + "to": "17:52", + "minutes": 115 + }, + { + "from": "18:20", + "to": "18:56", + "minutes": 36 + }, + { + "from": "18:57", + "to": "01:30", + "minutes": 393 + }, + { + "from": "01:31", + "to": "03:03", + "minutes": 92 + } + ], + "longest_focus_minutes": 28 + }, + "top_dirs": [ + { + "path": "{memoro => apps/memoro}/apps", + "pct": 28 + }, + { + "path": "{maerchenzauber => apps/maerchenzauber}/apps", + "pct": 11 + }, + { + "path": "{picture => apps/picture}/apps", + "pct": 9 + }, + { + "path": "{uload => apps/uload}/apps", + "pct": 6 + }, + { + "path": "{manacore => apps/manacore}/apps", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 1267 + }, + { + "ext": ".md", + "count": 724 + }, + { + "ext": ".tsx", + "count": 645 + }, + { + "ext": ".svelte", + "count": 434 + }, + { + "ext": ".json", + "count": 352 + }, + { + "ext": ".astro", + "count": 343 + } + ], + "tags": ["chat", "uload", "nutriphi", "picture"], + "commits_list": [ + { + "hash": "559eb08", + "short": "fix(uload): update Docker config and add env examples to apps/web", + "type": "fix", + "scope": "uload", + "additions": 605, + "deletions": 172, + "timestamp": "2025-11-25T12:02:52+01:00" + }, + { + "hash": "fcf3a34", + "short": "Feat: New project chat, uload refactor (postgress), hosting plans, uload landingpage", + "type": null, + "scope": null, + "additions": 7100, + "deletions": 3709, + "timestamp": "2025-11-25T13:01:41+01:00" + }, + { + "hash": "c638a7f", + "short": "feat(chat): integrate chat project into monorepo with full app structure", + "type": "feat", + "scope": "chat", + "additions": 22644, + "deletions": 370, + "timestamp": "2025-11-25T13:48:24+01:00" + }, + { + "hash": "ba3e053", + "short": "Feat: Overview doc", + "type": null, + "scope": null, + "additions": 1326, + "deletions": 0, + "timestamp": "2025-11-25T13:49:00+01:00" + }, + { + "hash": "9a84cc0", + "short": "feat(chat): add SvelteKit web app with full feature parity to mobile", + "type": "feat", + "scope": "chat", + "additions": 7187, + "deletions": 42, + "timestamp": "2025-11-25T15:54:44+01:00" + }, + { + "hash": "ce71db2", + "short": "Feat: docs", + "type": null, + "scope": null, + "additions": 65, + "deletions": 0, + "timestamp": "2025-11-25T15:57:23+01:00" + }, + { + "hash": "6537863", + "short": "feat(nutriphi): migrate from Supabase to PostgreSQL + Hetzner S3", + "type": "feat", + "scope": "nutriphi", + "additions": 15225, + "deletions": 159, + "timestamp": "2025-11-25T17:52:14+01:00" + }, + { + "hash": "36b85fc", + "short": "fix(picture): migrate to Astro 5.x content collections and fix TypeScript errors", + "type": "fix", + "scope": "picture", + "additions": 248, + "deletions": 60, + "timestamp": "2025-11-25T18:13:57+01:00" + }, + { + "hash": "865d74f", + "short": "Feat: Landingpages centralized, new app news integrated", + "type": null, + "scope": null, + "additions": 8242, + "deletions": 610, + "timestamp": "2025-11-25T18:20:17+01:00" + }, + { + "hash": "754e87e", + "short": "add mana core", + "type": null, + "scope": null, + "additions": 34751, + "deletions": 534, + "timestamp": "2025-11-25T18:56:35+01:00" + }, + { + "hash": "28d167a", + "short": "Merge branch 'feat/mana-core'", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-11-25T18:57:32+01:00" + }, + { + "hash": "7a1f1e9", + "short": "make auth working", + "type": null, + "scope": null, + "additions": 301, + "deletions": 51, + "timestamp": "2025-11-26T01:30:51+01:00" + }, + { + "hash": "25824ed", + "short": "make auth working", + "type": null, + "scope": null, + "additions": 9103, + "deletions": 3887, + "timestamp": "2025-11-26T01:31:12+01:00" + }, + { + "hash": "ff80aee", + "short": "refactor: restructure monorepo with apps/ and services/ directories", + "type": null, + "scope": null, + "additions": 2766, + "deletions": 1452, + "timestamp": "2025-11-26T03:03:24+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-11-25/macher.md b/devlog/2025-11-25/macher.md new file mode 100644 index 000000000..d861e8a4d --- /dev/null +++ b/devlog/2025-11-25/macher.md @@ -0,0 +1,31 @@ +--- +date: 2025-11-25 +day: 3 +view: macher +weekday: Dienstag +commits: 14 +review: written +--- + +# Dienstag, 2025-11-25 — Tag 3 (Macher-Sicht) + +## Stats + +14 Commits, +109563 / −11046 LoC, 4792 Files. Top-Dirs: `{memoro => apps/memoro}/apps` (28%), `{maerchenzauber => apps/maerchenzauber}/apps` (11%), `{picture => apps/picture}/apps` (9%), `{uload => apps/uload}/apps` (6%), `{manacore => apps/manacore}/apps` (5%). Tags: chat, uload, nutriphi, picture. Session 11:02 → 02:03 (~33 aktive Min, längster Fokus 28 Min). + +## Commits + +- `559eb08` fix(uload): update Docker config and add env examples to apps/web (+605/-172) +- `fcf3a34` Feat: New project chat, uload refactor (postgress), hosting plans, uload landingpage (+7100/-3709) +- `c638a7f` feat(chat): integrate chat project into monorepo with full app structure (+22644/-370) +- `ba3e053` Feat: Overview doc (+1326/-0) +- `9a84cc0` feat(chat): add SvelteKit web app with full feature parity to mobile (+7187/-42) +- `ce71db2` Feat: docs (+65/-0) +- `6537863` feat(nutriphi): migrate from Supabase to PostgreSQL + Hetzner S3 (+15225/-159) +- `36b85fc` fix(picture): migrate to Astro 5.x content collections and fix TypeScript errors (+248/-60) +- `865d74f` Feat: Landingpages centralized, new app news integrated (+8242/-610) +- `754e87e` add mana core (+34751/-534) +- `28d167a` Merge branch 'feat/mana-core' (+0/-0) +- `7a1f1e9` make auth working (+301/-51) +- `25824ed` make auth working (+9103/-3887) +- `ff80aee` refactor: restructure monorepo with apps/ and services/ directories (+2766/-1452) diff --git a/devlog/2025-11-25/spieler.md b/devlog/2025-11-25/spieler.md new file mode 100644 index 000000000..42934b29d --- /dev/null +++ b/devlog/2025-11-25/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-11-25 +day: 3 +view: spieler +weekday: Dienstag +commits: 14 +review: written +--- + +# Dienstag, 2025-11-25 — Tag 3 + +Dichter Tag in **{memoro => apps** und Umgebung. + +## Highlights + +- update Docker config and add env examples to apps/web +- New project chat, uload refactor (postgress), hosting plans, uload landingpage +- integrate chat project into monorepo with full app structure +- Overview doc +- add SvelteKit web app with full feature parity to mobile diff --git a/devlog/2025-11-26/data.json b/devlog/2025-11-26/data.json new file mode 100644 index 000000000..a616e0cf7 --- /dev/null +++ b/devlog/2025-11-26/data.json @@ -0,0 +1,147 @@ +{ + "date": "2025-11-26", + "day_number": 4, + "weekday": "Mittwoch", + "commits": 5, + "authors": [ + { + "name": "Wuesteon", + "count": 3 + }, + { + "name": "Till-JS", + "count": 2 + } + ], + "additions": 10169, + "deletions": 1909, + "net_lines": 8260, + "files_changed": 139, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-11-26T12:08:50.000Z", + "last_commit_at": "2025-11-27T01:25:37.000Z", + "total_span_minutes": 797, + "active_minutes": 12, + "pauses": [ + { + "from": "13:08", + "to": "13:50", + "minutes": 42 + }, + { + "from": "14:02", + "to": "17:26", + "minutes": 203 + }, + { + "from": "17:26", + "to": "02:25", + "minutes": 540 + } + ], + "longest_focus_minutes": 12 + }, + "top_dirs": [ + { + "path": "apps/picture/apps/backend", + "pct": 37 + }, + { + "path": "apps/picture/apps/web", + "pct": 18 + }, + { + "path": "apps/chat/apps/mobile", + "pct": 10 + }, + { + "path": "apps/nutriphi/apps/backend", + "pct": 7 + }, + { + "path": "apps/nutriphi/apps/mobile", + "pct": 6 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 105 + }, + { + "ext": ".json", + "count": 16 + }, + { + "ext": ".tsx", + "count": 9 + }, + { + "ext": ".md", + "count": 3 + }, + { + "ext": ".mjs", + "count": 3 + }, + { + "ext": ".example", + "count": 3 + } + ], + "tags": [], + "commits_list": [ + { + "hash": "2328b89", + "short": "🧑‍💻 chore: add centralized environment variable system", + "type": null, + "scope": null, + "additions": 675, + "deletions": 2, + "timestamp": "2025-11-26T13:08:50+01:00" + }, + { + "hash": "5b7d6fa", + "short": "fix env", + "type": null, + "scope": null, + "additions": 10, + "deletions": 10, + "timestamp": "2025-11-26T13:50:52+01:00" + }, + { + "hash": "c6b95ee", + "short": "🧑‍💻 chore: add build:packages script and auto-build on install", + "type": null, + "scope": null, + "additions": 2, + "deletions": 1, + "timestamp": "2025-11-26T14:02:48+01:00" + }, + { + "hash": "046a0e3", + "short": "Fix: Picture App envs", + "type": null, + "scope": null, + "additions": 31, + "deletions": 0, + "timestamp": "2025-11-26T17:26:07+01:00" + }, + { + "hash": "98efa6f", + "short": "Feat: Refactor postgress", + "type": null, + "scope": null, + "additions": 9451, + "deletions": 1896, + "timestamp": "2025-11-27T02:25:37+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-11-26/macher.md b/devlog/2025-11-26/macher.md new file mode 100644 index 000000000..71845fb8a --- /dev/null +++ b/devlog/2025-11-26/macher.md @@ -0,0 +1,22 @@ +--- +date: 2025-11-26 +day: 4 +view: macher +weekday: Mittwoch +commits: 5 +review: written +--- + +# Mittwoch, 2025-11-26 — Tag 4 (Macher-Sicht) + +## Stats + +5 Commits, +10169 / −1909 LoC, 139 Files. Top-Dirs: `apps/picture/apps/backend` (37%), `apps/picture/apps/web` (18%), `apps/chat/apps/mobile` (10%), `apps/nutriphi/apps/backend` (7%), `apps/nutriphi/apps/mobile` (6%). Tags: —. Session 12:08 → 01:25 (~12 aktive Min, längster Fokus 12 Min). + +## Commits + +- `2328b89` 🧑‍💻 chore: add centralized environment variable system (+675/-2) +- `5b7d6fa` fix env (+10/-10) +- `c6b95ee` 🧑‍💻 chore: add build:packages script and auto-build on install (+2/-1) +- `046a0e3` Fix: Picture App envs (+31/-0) +- `98efa6f` Feat: Refactor postgress (+9451/-1896) diff --git a/devlog/2025-11-26/spieler.md b/devlog/2025-11-26/spieler.md new file mode 100644 index 000000000..4080e6c36 --- /dev/null +++ b/devlog/2025-11-26/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-11-26 +day: 4 +view: spieler +weekday: Mittwoch +commits: 5 +review: written +--- + +# Mittwoch, 2025-11-26 — Tag 4 + +Kurzer Arbeitstag, Schwerpunkt **apps**. + +## Highlights + +- 🧑‍💻 chore: add centralized environment variable system +- fix env +- 🧑‍💻 chore: add build:packages script and auto-build on install +- Picture App envs +- Refactor postgress diff --git a/devlog/2025-11-27/data.json b/devlog/2025-11-27/data.json new file mode 100644 index 000000000..14c73b5ae --- /dev/null +++ b/devlog/2025-11-27/data.json @@ -0,0 +1,326 @@ +{ + "date": "2025-11-27", + "day_number": 5, + "weekday": "Donnerstag", + "commits": 26, + "authors": [ + { + "name": "Till-JS", + "count": 16 + }, + { + "name": "Wuesteon", + "count": 10 + } + ], + "additions": 1450995, + "deletions": 768187, + "net_lines": 682808, + "files_changed": 4526, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-11-27T13:21:49.000Z", + "last_commit_at": "2025-11-27T18:53:03.000Z", + "total_span_minutes": 331, + "active_minutes": 239, + "pauses": [ + { + "from": "15:54", + "to": "17:26", + "minutes": 92 + } + ], + "longest_focus_minutes": 147 + }, + "top_dirs": [ + { + "path": "apps/memoro/apps/mobile", + "pct": 10 + }, + { + "path": "apps/bauntown/apps/landing", + "pct": 8 + }, + { + "path": "apps/quote/apps/mobile", + "pct": 6 + }, + { + "path": "apps/memoro/apps/landing", + "pct": 5 + }, + { + "path": "apps/uload/apps/web", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 1705 + }, + { + "ext": ".tsx", + "count": 823 + }, + { + "ext": ".md", + "count": 812 + }, + { + "ext": ".svelte", + "count": 489 + }, + { + "ext": ".astro", + "count": 471 + }, + { + "ext": ".json", + "count": 461 + } + ], + "tags": ["picture", "presi", "ci", "transcriber", "quote"], + "commits_list": [ + { + "hash": "4b08c41", + "short": "feat(transcriber): Add YouTube transcriber app to monorepo", + "type": "feat", + "scope": "transcriber", + "additions": 19436, + "deletions": 411, + "timestamp": "2025-11-27T14:21:49+01:00" + }, + { + "hash": "3a8d6bc", + "short": "feat(picture): migrate batch generation from Supabase to NestJS API", + "type": "feat", + "scope": "picture", + "additions": 3934, + "deletions": 249, + "timestamp": "2025-11-27T14:44:01+01:00" + }, + { + "hash": "ea3285d", + "short": "feat(quote): integrate Quote app into monorepo", + "type": "feat", + "scope": "quote", + "additions": 645599, + "deletions": 8, + "timestamp": "2025-11-27T14:44:33+01:00" + }, + { + "hash": "cb56575", + "short": "feat(wisekeep): rename transcriber app to wisekeep", + "type": "feat", + "scope": "wisekeep", + "additions": 28, + "deletions": 24, + "timestamp": "2025-11-27T14:44:44+01:00" + }, + { + "hash": "14aace0", + "short": "feat(manadeck): migrate stores to backend API and remove audio features", + "type": "feat", + "scope": "manadeck", + "additions": 2394, + "deletions": 1611, + "timestamp": "2025-11-27T14:47:14+01:00" + }, + { + "hash": "c561c4c", + "short": "feat(picture): migrate from Supabase to NestJS backend API", + "type": "feat", + "scope": "picture", + "additions": 2622, + "deletions": 8531, + "timestamp": "2025-11-27T14:47:23+01:00" + }, + { + "hash": "cc6ca02", + "short": "chore(nutriphi): update config and type definitions", + "type": "chore", + "scope": "nutriphi", + "additions": 3, + "deletions": 13, + "timestamp": "2025-11-27T14:47:28+01:00" + }, + { + "hash": "7abfc4c", + "short": "docs: add Hetzner deployment guide and update lockfile", + "type": null, + "scope": null, + "additions": 1572, + "deletions": 261, + "timestamp": "2025-11-27T14:47:35+01:00" + }, + { + "hash": "4f7052b", + "short": "chore: add games folder structure to monorepo", + "type": null, + "scope": null, + "additions": 12, + "deletions": 1, + "timestamp": "2025-11-27T15:06:59+01:00" + }, + { + "hash": "d35ba76", + "short": "chore: add bauntown project to monorepo configuration", + "type": null, + "scope": null, + "additions": 4792, + "deletions": 1141, + "timestamp": "2025-11-27T15:10:15+01:00" + }, + { + "hash": "5b1e12e", + "short": "feat: add new projects bauntown, presi, voxel-lava, whopixels", + "type": null, + "scope": null, + "additions": 46356, + "deletions": 0, + "timestamp": "2025-11-27T15:11:53+01:00" + }, + { + "hash": "58a342b", + "short": "feat(reader): integrate reader app into monorepo structure", + "type": "feat", + "scope": "reader", + "additions": 9831, + "deletions": 7, + "timestamp": "2025-11-27T15:31:38+01:00" + }, + { + "hash": "607ca19", + "short": "feat: integrate presi and voxel-lava into monorepo structure", + "type": null, + "scope": null, + "additions": 4188, + "deletions": 609, + "timestamp": "2025-11-27T15:33:28+01:00" + }, + { + "hash": "1c64359", + "short": "feat(presi): add share deck feature for public presentation viewing", + "type": "feat", + "scope": "presi", + "additions": 736, + "deletions": 15, + "timestamp": "2025-11-27T15:38:25+01:00" + }, + { + "hash": "658ebe0", + "short": "docs(voxel-lava): add project documentation and env config", + "type": "docs", + "scope": "voxel-lava", + "additions": 152, + "deletions": 0, + "timestamp": "2025-11-27T15:46:57+01:00" + }, + { + "hash": "9e14119", + "short": "fix(presi): fix TypeScript errors and add missing theme module", + "type": "fix", + "scope": "presi", + "additions": 77, + "deletions": 26, + "timestamp": "2025-11-27T15:54:21+01:00" + }, + { + "hash": "74dc689", + "short": "first implementation", + "type": null, + "scope": null, + "additions": 28993, + "deletions": 3028, + "timestamp": "2025-11-27T17:26:18+01:00" + }, + { + "hash": "0ec0396", + "short": "Merge branch 'feature/cicd' into cicd/integration", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-11-27T17:34:13+01:00" + }, + { + "hash": "f55962e", + "short": "docs: add comprehensive CI/CD documentation hub", + "type": null, + "scope": null, + "additions": 3152, + "deletions": 0, + "timestamp": "2025-11-27T18:04:07+01:00" + }, + { + "hash": "0241f55", + "short": "fix(cicd): docker paths, formatting config, and documentation", + "type": "fix", + "scope": "cicd", + "additions": 2173, + "deletions": 187, + "timestamp": "2025-11-27T18:33:08+01:00" + }, + { + "hash": "d36b321", + "short": "style: auto-format codebase with Prettier", + "type": null, + "scope": null, + "additions": 673657, + "deletions": 751910, + "timestamp": "2025-11-27T18:33:16+01:00" + }, + { + "hash": "47a3bf9", + "short": "🩹 fix(memoro): remove orphaned patch file", + "type": null, + "scope": null, + "additions": 0, + "deletions": 30, + "timestamp": "2025-11-27T18:41:22+01:00" + }, + { + "hash": "c012226", + "short": "🔥 fix(docker): remove deprecated mana-core-nestjs-package", + "type": null, + "scope": null, + "additions": 4, + "deletions": 72, + "timestamp": "2025-11-27T18:59:48+01:00" + }, + { + "hash": "e6f7a4a", + "short": "🔧 ci: simplify to focus on chat and manacore only", + "type": null, + "scope": null, + "additions": 7, + "deletions": 48, + "timestamp": "2025-11-27T19:21:06+01:00" + }, + { + "hash": "0cea08f", + "short": "fix(ci): resolve turbo recursive build loop and filter issues", + "type": "fix", + "scope": "ci", + "additions": 1276, + "deletions": 5, + "timestamp": "2025-11-27T19:26:28+01:00" + }, + { + "hash": "8f7c639", + "short": "fix(ci): make format check non-blocking", + "type": "fix", + "scope": "ci", + "additions": 1, + "deletions": 0, + "timestamp": "2025-11-27T19:53:03+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-11-27/macher.md b/devlog/2025-11-27/macher.md new file mode 100644 index 000000000..629ab04c9 --- /dev/null +++ b/devlog/2025-11-27/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-11-27 +day: 5 +view: macher +weekday: Donnerstag +commits: 26 +review: written +--- + +# Donnerstag, 2025-11-27 — Tag 5 (Macher-Sicht) + +## Stats + +26 Commits, +1450995 / −768187 LoC, 4526 Files. Top-Dirs: `apps/memoro/apps/mobile` (10%), `apps/bauntown/apps/landing` (8%), `apps/quote/apps/mobile` (6%), `apps/memoro/apps/landing` (5%), `apps/uload/apps/web` (4%). Tags: picture, presi, ci, transcriber, quote. Session 13:21 → 18:53 (~239 aktive Min, längster Fokus 147 Min). + +## Commits + +- `4b08c41` feat(transcriber): Add YouTube transcriber app to monorepo (+19436/-411) +- `3a8d6bc` feat(picture): migrate batch generation from Supabase to NestJS API (+3934/-249) +- `ea3285d` feat(quote): integrate Quote app into monorepo (+645599/-8) +- `cb56575` feat(wisekeep): rename transcriber app to wisekeep (+28/-24) +- `14aace0` feat(manadeck): migrate stores to backend API and remove audio features (+2394/-1611) +- `c561c4c` feat(picture): migrate from Supabase to NestJS backend API (+2622/-8531) +- `cc6ca02` chore(nutriphi): update config and type definitions (+3/-13) +- `7abfc4c` docs: add Hetzner deployment guide and update lockfile (+1572/-261) +- `4f7052b` chore: add games folder structure to monorepo (+12/-1) +- `d35ba76` chore: add bauntown project to monorepo configuration (+4792/-1141) +- `5b1e12e` feat: add new projects bauntown, presi, voxel-lava, whopixels (+46356/-0) +- `58a342b` feat(reader): integrate reader app into monorepo structure (+9831/-7) +- `607ca19` feat: integrate presi and voxel-lava into monorepo structure (+4188/-609) +- `1c64359` feat(presi): add share deck feature for public presentation viewing (+736/-15) +- `658ebe0` docs(voxel-lava): add project documentation and env config (+152/-0) +- `9e14119` fix(presi): fix TypeScript errors and add missing theme module (+77/-26) +- `74dc689` first implementation (+28993/-3028) +- `0ec0396` Merge branch 'feature/cicd' into cicd/integration (+0/-0) +- `f55962e` docs: add comprehensive CI/CD documentation hub (+3152/-0) +- `0241f55` fix(cicd): docker paths, formatting config, and documentation (+2173/-187) + +_… plus 6 weitere Commits._ diff --git a/devlog/2025-11-27/spieler.md b/devlog/2025-11-27/spieler.md new file mode 100644 index 000000000..0469cedd0 --- /dev/null +++ b/devlog/2025-11-27/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-11-27 +day: 5 +view: spieler +weekday: Donnerstag +commits: 26 +review: written +--- + +# Donnerstag, 2025-11-27 — Tag 5 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- Add YouTube transcriber app to monorepo +- migrate batch generation from Supabase to NestJS API +- integrate Quote app into monorepo +- rename transcriber app to wisekeep +- migrate stores to backend API and remove audio features diff --git a/devlog/2025-11-28/data.json b/devlog/2025-11-28/data.json new file mode 100644 index 000000000..6d58a5595 --- /dev/null +++ b/devlog/2025-11-28/data.json @@ -0,0 +1,253 @@ +{ + "date": "2025-11-28", + "day_number": 6, + "weekday": "Freitag", + "commits": 19, + "authors": [ + { + "name": "Till-JS", + "count": 19 + } + ], + "additions": 33366, + "deletions": 2495, + "net_lines": 30871, + "files_changed": 483, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-11-28T19:13:14.000Z", + "last_commit_at": "2025-11-28T20:31:46.000Z", + "total_span_minutes": 79, + "active_minutes": 79, + "pauses": [], + "longest_focus_minutes": 79 + }, + "top_dirs": [ + { + "path": "apps/{quote => zitare}/apps/mobile", + "pct": 37 + }, + { + "path": "games/mana-games/apps", + "pct": 21 + }, + { + "path": "apps/{quote => zitare}/apps/web", + "pct": 5 + }, + { + "path": "apps/picture/apps/web", + "pct": 5 + }, + { + "path": "apps/{quote => zitare}/packages/web-ui", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 190 + }, + { + "ext": ".svelte", + "count": 80 + }, + { + "ext": ".tsx", + "count": 44 + }, + { + "ext": ".json", + "count": 33 + }, + { + "ext": ".astro", + "count": 25 + }, + { + "ext": ".html", + "count": 24 + } + ], + "tags": ["wisekeep", "manadeck", "zitare", "chat", "shared-branding"], + "commits_list": [ + { + "hash": "23f8950", + "short": "feat(games): add mana-games - AI-powered browser games platform", + "type": "feat", + "scope": "games", + "additions": 29217, + "deletions": 0, + "timestamp": "2025-11-28T20:13:14+01:00" + }, + { + "hash": "75a2527", + "short": "feat(zitare): rename quote project to zitare and add global search", + "type": "feat", + "scope": "zitare", + "additions": 841, + "deletions": 224, + "timestamp": "2025-11-28T20:14:19+01:00" + }, + { + "hash": "468b7b7", + "short": "fix(zitare): resolve layout overlap with fixed navigation", + "type": "fix", + "scope": "zitare", + "additions": 49, + "deletions": 7, + "timestamp": "2025-11-28T20:21:20+01:00" + }, + { + "hash": "5e15f57", + "short": "feat(picture): migrate to mana-core auth and update AI models", + "type": "feat", + "scope": "picture", + "additions": 176, + "deletions": 616, + "timestamp": "2025-11-28T20:27:39+01:00" + }, + { + "hash": "79acf8b", + "short": "feat(presi): add PillNavigation and fix auth service JWT parsing", + "type": "feat", + "scope": "presi", + "additions": 540, + "deletions": 506, + "timestamp": "2025-11-28T20:49:45+01:00" + }, + { + "hash": "1958cf2", + "short": "fix(chat): resolve CORS and build issues for local development", + "type": "fix", + "scope": "chat", + "additions": 5, + "deletions": 2, + "timestamp": "2025-11-28T20:51:14+01:00" + }, + { + "hash": "0acd7c3", + "short": "feat(shared-branding): add global app icons and centralized app config", + "type": "feat", + "scope": "shared-branding", + "additions": 360, + "deletions": 26, + "timestamp": "2025-11-28T20:54:50+01:00" + }, + { + "hash": "87abafd", + "short": "feat(chat): migrate auth pages to shared-auth-ui with AppSlider", + "type": "feat", + "scope": "chat", + "additions": 91, + "deletions": 275, + "timestamp": "2025-11-28T20:57:23+01:00" + }, + { + "hash": "eae083a", + "short": "feat(shared-branding): add Presi app branding", + "type": "feat", + "scope": "shared-branding", + "additions": 28, + "deletions": 1, + "timestamp": "2025-11-28T20:58:45+01:00" + }, + { + "hash": "f7c9612", + "short": "chore(wisekeep): add shared package dependencies", + "type": "chore", + "scope": "wisekeep", + "additions": 6, + "deletions": 0, + "timestamp": "2025-11-28T20:58:54+01:00" + }, + { + "hash": "a34a341", + "short": "chore: update pnpm lockfile", + "type": null, + "scope": null, + "additions": 1241, + "deletions": 733, + "timestamp": "2025-11-28T20:58:59+01:00" + }, + { + "hash": "c90c79d", + "short": "feat(mana-core-nestjs): add OptionalAuthGuard and Public decorator", + "type": "feat", + "scope": "mana-core-nestjs", + "additions": 100, + "deletions": 0, + "timestamp": "2025-11-28T21:02:20+01:00" + }, + { + "hash": "bc21a25", + "short": "feat(manadeck): add mana-core auth integration", + "type": "feat", + "scope": "manadeck", + "additions": 3, + "deletions": 0, + "timestamp": "2025-11-28T21:03:17+01:00" + }, + { + "hash": "6b8ab58", + "short": "feat(wisekeep): add auth routes and protected layout", + "type": "feat", + "scope": "wisekeep", + "additions": 554, + "deletions": 51, + "timestamp": "2025-11-28T21:03:29+01:00" + }, + { + "hash": "48df2b8", + "short": "chore: update pnpm lockfile", + "type": null, + "scope": null, + "additions": 46, + "deletions": 1, + "timestamp": "2025-11-28T21:03:34+01:00" + }, + { + "hash": "3339aa2", + "short": "fix(manadeck): align study session with schema", + "type": "fix", + "scope": "manadeck", + "additions": 3, + "deletions": 2, + "timestamp": "2025-11-28T21:03:48+01:00" + }, + { + "hash": "47056ac", + "short": "fix(wisekeep): use dynamic env for API URL", + "type": "fix", + "scope": "wisekeep", + "additions": 2, + "deletions": 2, + "timestamp": "2025-11-28T21:04:01+01:00" + }, + { + "hash": "e3eae2c", + "short": "feat(wisekeep): add mana-core authentication to web app", + "type": "feat", + "scope": "wisekeep", + "additions": 65, + "deletions": 22, + "timestamp": "2025-11-28T21:30:40+01:00" + }, + { + "hash": "f1e27f3", + "short": "fix(manadeck): resolve backend startup and auth configuration issues", + "type": "fix", + "scope": "manadeck", + "additions": 39, + "deletions": 27, + "timestamp": "2025-11-28T21:31:46+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-11-28/macher.md b/devlog/2025-11-28/macher.md new file mode 100644 index 000000000..00dc66bcf --- /dev/null +++ b/devlog/2025-11-28/macher.md @@ -0,0 +1,36 @@ +--- +date: 2025-11-28 +day: 6 +view: macher +weekday: Freitag +commits: 19 +review: written +--- + +# Freitag, 2025-11-28 — Tag 6 (Macher-Sicht) + +## Stats + +19 Commits, +33366 / −2495 LoC, 483 Files. Top-Dirs: `apps/{quote => zitare}/apps/mobile` (37%), `games/mana-games/apps` (21%), `apps/{quote => zitare}/apps/web` (5%), `apps/picture/apps/web` (5%), `apps/{quote => zitare}/packages/web-ui` (4%). Tags: wisekeep, manadeck, zitare, chat, shared-branding. Session 19:13 → 20:31 (~79 aktive Min, längster Fokus 79 Min). + +## Commits + +- `23f8950` feat(games): add mana-games - AI-powered browser games platform (+29217/-0) +- `75a2527` feat(zitare): rename quote project to zitare and add global search (+841/-224) +- `468b7b7` fix(zitare): resolve layout overlap with fixed navigation (+49/-7) +- `5e15f57` feat(picture): migrate to mana-core auth and update AI models (+176/-616) +- `79acf8b` feat(presi): add PillNavigation and fix auth service JWT parsing (+540/-506) +- `1958cf2` fix(chat): resolve CORS and build issues for local development (+5/-2) +- `0acd7c3` feat(shared-branding): add global app icons and centralized app config (+360/-26) +- `87abafd` feat(chat): migrate auth pages to shared-auth-ui with AppSlider (+91/-275) +- `eae083a` feat(shared-branding): add Presi app branding (+28/-1) +- `f7c9612` chore(wisekeep): add shared package dependencies (+6/-0) +- `a34a341` chore: update pnpm lockfile (+1241/-733) +- `c90c79d` feat(mana-core-nestjs): add OptionalAuthGuard and Public decorator (+100/-0) +- `bc21a25` feat(manadeck): add mana-core auth integration (+3/-0) +- `6b8ab58` feat(wisekeep): add auth routes and protected layout (+554/-51) +- `48df2b8` chore: update pnpm lockfile (+46/-1) +- `3339aa2` fix(manadeck): align study session with schema (+3/-2) +- `47056ac` fix(wisekeep): use dynamic env for API URL (+2/-2) +- `e3eae2c` feat(wisekeep): add mana-core authentication to web app (+65/-22) +- `f1e27f3` fix(manadeck): resolve backend startup and auth configuration issues (+39/-27) diff --git a/devlog/2025-11-28/spieler.md b/devlog/2025-11-28/spieler.md new file mode 100644 index 000000000..f8f474092 --- /dev/null +++ b/devlog/2025-11-28/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-11-28 +day: 6 +view: spieler +weekday: Freitag +commits: 19 +review: written +--- + +# Freitag, 2025-11-28 — Tag 6 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- add mana-games - AI-powered browser games platform +- rename quote project to zitare and add global search +- resolve layout overlap with fixed navigation +- migrate to mana-core auth and update AI models +- add PillNavigation and fix auth service JWT parsing diff --git a/devlog/2025-11-29/data.json b/devlog/2025-11-29/data.json new file mode 100644 index 000000000..83f32c761 --- /dev/null +++ b/devlog/2025-11-29/data.json @@ -0,0 +1,586 @@ +{ + "date": "2025-11-29", + "day_number": 7, + "weekday": "Samstag", + "commits": 52, + "authors": [ + { + "name": "Till-JS", + "count": 52 + } + ], + "additions": 21935, + "deletions": 56265, + "net_lines": -34330, + "files_changed": 3484, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-11-29T05:04:35.000Z", + "last_commit_at": "2025-11-30T00:00:43.000Z", + "total_span_minutes": 1136, + "active_minutes": 194, + "pauses": [ + { + "from": "06:06", + "to": "06:55", + "minutes": 48 + }, + { + "from": "07:03", + "to": "08:55", + "minutes": 112 + }, + { + "from": "09:24", + "to": "13:20", + "minutes": 236 + }, + { + "from": "13:24", + "to": "15:10", + "minutes": 106 + }, + { + "from": "16:04", + "to": "21:40", + "minutes": 336 + }, + { + "from": "21:40", + "to": "22:29", + "minutes": 48 + }, + { + "from": "23:10", + "to": "00:06", + "minutes": 56 + } + ], + "longest_focus_minutes": 54 + }, + "top_dirs": [ + { + "path": "{apps => apps-archived}/memoro/apps", + "pct": 37 + }, + { + "path": "{apps => apps-archived}/maerchenzauber/apps", + "pct": 14 + }, + { + "path": "{apps => apps-archived}/uload/apps", + "pct": 8 + }, + { + "path": "{apps => apps-archived}/bauntown/apps", + "pct": 7 + }, + { + "path": "{apps => apps-archived}/nutriphi/apps", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 834 + }, + { + "ext": ".svelte", + "count": 582 + }, + { + "ext": ".md", + "count": 551 + }, + { + "ext": ".tsx", + "count": 391 + }, + { + "ext": ".astro", + "count": 265 + }, + { + "ext": ".mdx", + "count": 253 + } + ], + "tags": ["chat", "shared-ui", "theme", "manacore", "nutriphi"], + "commits_list": [ + { + "hash": "8b61399", + "short": "feat(nutriphi): migrate to shared auth UI components", + "type": "feat", + "scope": "nutriphi", + "additions": 298, + "deletions": 266, + "timestamp": "2025-11-29T06:04:35+01:00" + }, + { + "hash": "af8bb9b", + "short": "fix(wisekeep): improve auth flow and redirect handling", + "type": "fix", + "scope": "wisekeep", + "additions": 25, + "deletions": 29, + "timestamp": "2025-11-29T06:06:47+01:00" + }, + { + "hash": "4eed414", + "short": "feat(shared-ui): extend PillNavigation with tab groups and migrate Picture app", + "type": "feat", + "scope": "shared-ui", + "additions": 660, + "deletions": 29, + "timestamp": "2025-11-29T06:55:14+01:00" + }, + { + "hash": "655da23", + "short": "fix(presi): resolve CORS issues and add strictPort to all web apps", + "type": "fix", + "scope": "presi", + "additions": 27, + "deletions": 4, + "timestamp": "2025-11-29T06:58:00+01:00" + }, + { + "hash": "b97149a", + "short": "feat(icons): migrate to phosphor-svelte for all icon usage", + "type": "feat", + "scope": "icons", + "additions": 256, + "deletions": 452, + "timestamp": "2025-11-29T07:02:59+01:00" + }, + { + "hash": "61d181f", + "short": "chore: archive inactive projects to apps-archived/", + "type": null, + "scope": null, + "additions": 411, + "deletions": 46614, + "timestamp": "2025-11-29T07:03:59+01:00" + }, + { + "hash": "1296928", + "short": "feat(shared-auth-ui): redesign login page with animations and theme support", + "type": "feat", + "scope": "shared-auth-ui", + "additions": 1076, + "deletions": 596, + "timestamp": "2025-11-29T08:55:56+01:00" + }, + { + "hash": "54383bf", + "short": "feat(theme): add ThemePage components and distinct background colors", + "type": "feat", + "scope": "theme", + "additions": 1796, + "deletions": 1939, + "timestamp": "2025-11-29T09:03:20+01:00" + }, + { + "hash": "8a4cc29", + "short": "feat(theme): add themes page to picture, manadeck, and presi apps", + "type": "feat", + "scope": "theme", + "additions": 150, + "deletions": 6, + "timestamp": "2025-11-29T09:14:12+01:00" + }, + { + "hash": "b9608bd", + "short": "fix(picture): resolve all TypeScript type errors", + "type": "fix", + "scope": "picture", + "additions": 71, + "deletions": 82, + "timestamp": "2025-11-29T09:17:55+01:00" + }, + { + "hash": "f436fbb", + "short": "feat(theme): migrate theme emojis to Phosphor icons and integrate theme system into Zitare", + "type": "feat", + "scope": "theme", + "additions": 299, + "deletions": 327, + "timestamp": "2025-11-29T09:24:32+01:00" + }, + { + "hash": "3cfa6a7", + "short": "feat(shared-ui): add theme mode selector to PillNavigation dropdown", + "type": "feat", + "scope": "shared-ui", + "additions": 166, + "deletions": 10, + "timestamp": "2025-11-29T13:20:43+01:00" + }, + { + "hash": "7deb5b9", + "short": "feat(shared-ui): add reusable settings components with glass styling", + "type": "feat", + "scope": "shared-ui", + "additions": 2402, + "deletions": 1233, + "timestamp": "2025-11-29T13:22:12+01:00" + }, + { + "hash": "95bba8e", + "short": "feat(chat): add Google Gemini API support with Flash as default model", + "type": "feat", + "scope": "chat", + "additions": 426, + "deletions": 211, + "timestamp": "2025-11-29T13:22:58+01:00" + }, + { + "hash": "c164403", + "short": "fix(shared-ui): improve toggle active state styling", + "type": "fix", + "scope": "shared-ui", + "additions": 21, + "deletions": 1, + "timestamp": "2025-11-29T13:23:22+01:00" + }, + { + "hash": "b68e015", + "short": "feat(chat): add settings page and improve chat UI components", + "type": "feat", + "scope": "chat", + "additions": 1454, + "deletions": 436, + "timestamp": "2025-11-29T13:24:02+01:00" + }, + { + "hash": "dde2d51", + "short": "feat(shared-ui): add app switcher dropdown to PillNavigation", + "type": "feat", + "scope": "shared-ui", + "additions": 546, + "deletions": 9, + "timestamp": "2025-11-29T15:10:17+01:00" + }, + { + "hash": "9e90cea", + "short": "feat(chat): add app switcher to PillNavigation", + "type": "feat", + "scope": "chat", + "additions": 6, + "deletions": 0, + "timestamp": "2025-11-29T15:12:57+01:00" + }, + { + "hash": "f8d8faa", + "short": "fix(chat): use correct Gemini model names", + "type": "fix", + "scope": "chat", + "additions": 4, + "deletions": 4, + "timestamp": "2025-11-29T15:13:34+01:00" + }, + { + "hash": "0cd5ad7", + "short": "refactor(shared-ui): use PillDropdown for app switcher", + "type": "refactor", + "scope": "shared-ui", + "additions": 61, + "deletions": 461, + "timestamp": "2025-11-29T15:15:00+01:00" + }, + { + "hash": "35a7b0b", + "short": "chore(chat): deactivate Azure models, only show Gemini in dropdown", + "type": "chore", + "scope": "chat", + "additions": 9, + "deletions": 9, + "timestamp": "2025-11-29T15:15:59+01:00" + }, + { + "hash": "6150347", + "short": "fix(shared-branding): filter archived apps from app switcher", + "type": "fix", + "scope": "shared-branding", + "additions": 17, + "deletions": 1, + "timestamp": "2025-11-29T15:17:10+01:00" + }, + { + "hash": "24eafc5", + "short": "fix(chat-web): select default model instead of first model", + "type": "fix", + "scope": "chat-web", + "additions": 26, + "deletions": 4, + "timestamp": "2025-11-29T15:18:53+01:00" + }, + { + "hash": "90c696c", + "short": "fix(chat): add PATCH to CORS and use Gemini for title generation", + "type": "fix", + "scope": "chat", + "additions": 21, + "deletions": 4, + "timestamp": "2025-11-29T15:20:24+01:00" + }, + { + "hash": "9b80d13", + "short": "fix(chat): update templates page to use Gemini 2.5 Flash as default model", + "type": "fix", + "scope": "chat", + "additions": 1, + "deletions": 1, + "timestamp": "2025-11-29T15:28:38+01:00" + }, + { + "hash": "e28a1aa", + "short": "docs(chat): update CLAUDE.md with Gemini AI models and configuration", + "type": "docs", + "scope": "chat", + "additions": 9, + "deletions": 10, + "timestamp": "2025-11-29T15:29:10+01:00" + }, + { + "hash": "606fd9a", + "short": "feat(shared-ui): add user dropdown and improve FAB styling", + "type": "feat", + "scope": "shared-ui", + "additions": 5, + "deletions": 6, + "timestamp": "2025-11-29T15:31:43+01:00" + }, + { + "hash": "353cf6a", + "short": "feat: rename subscription routes to /mana across all apps", + "type": null, + "scope": null, + "additions": 73, + "deletions": 13, + "timestamp": "2025-11-29T15:42:32+01:00" + }, + { + "hash": "8f58599", + "short": "refactor(shared-ui): move Mana button to standalone pill in navigation", + "type": "refactor", + "scope": "shared-ui", + "additions": 17, + "deletions": 13, + "timestamp": "2025-11-29T15:43:34+01:00" + }, + { + "hash": "7819c9c", + "short": "feat(chat): redesign chat UI with glassmorphism styling", + "type": "feat", + "scope": "chat", + "additions": 141, + "deletions": 96, + "timestamp": "2025-11-29T15:45:42+01:00" + }, + { + "hash": "f2c7950", + "short": "fix(chat): add shared-subscription-ui dependency for mana page", + "type": "fix", + "scope": "chat", + "additions": 183, + "deletions": 150, + "timestamp": "2025-11-29T15:47:08+01:00" + }, + { + "hash": "a324708", + "short": "feat(subscription-ui): redesign with glass morphism and responsive layout", + "type": "feat", + "scope": "subscription-ui", + "additions": 848, + "deletions": 134, + "timestamp": "2025-11-29T16:04:04+01:00" + }, + { + "hash": "0467ac3", + "short": "fix(chat): align frontend types with backend camelCase and redesign message bubbles", + "type": "fix", + "scope": "chat", + "additions": 532, + "deletions": 370, + "timestamp": "2025-11-29T16:04:19+01:00" + }, + { + "hash": "2dc289c", + "short": "feat(chat): add shared profile UI package and integrate into navigation", + "type": "feat", + "scope": "chat", + "additions": 790, + "deletions": 363, + "timestamp": "2025-11-29T21:40:47+01:00" + }, + { + "hash": "a32c4f0", + "short": "fix(shared-ui): fix theme mode selector styling in dropdown", + "type": "fix", + "scope": "shared-ui", + "additions": 19, + "deletions": 4, + "timestamp": "2025-11-29T22:29:04+01:00" + }, + { + "hash": "05fe8ca", + "short": "feat(chat): add auto title generation, inline renaming, and styled delete modal", + "type": "feat", + "scope": "chat", + "additions": 447, + "deletions": 71, + "timestamp": "2025-11-29T22:43:41+01:00" + }, + { + "hash": "819e4c9", + "short": "feat(feedback): add centralized feedback system with AI-generated titles", + "type": "feat", + "scope": "feedback", + "additions": 4197, + "deletions": 245, + "timestamp": "2025-11-29T22:46:37+01:00" + }, + { + "hash": "4f06301", + "short": "feat(chat): add conversation pinning and date-based sections", + "type": "feat", + "scope": "chat", + "additions": 295, + "deletions": 227, + "timestamp": "2025-11-29T23:01:18+01:00" + }, + { + "hash": "0893ed7", + "short": "feat(chat): add toast notification system and docker AI config", + "type": "feat", + "scope": "chat", + "additions": 175, + "deletions": 2, + "timestamp": "2025-11-29T23:02:52+01:00" + }, + { + "hash": "c85cd45", + "short": "feat: improve chat UX and add optional auth for public feedback", + "type": null, + "scope": null, + "additions": 192, + "deletions": 53, + "timestamp": "2025-11-29T23:10:03+01:00" + }, + { + "hash": "9432a73", + "short": "feat: integrate shared PageHeader and ProfilePage across all web apps", + "type": null, + "scope": null, + "additions": 1710, + "deletions": 1059, + "timestamp": "2025-11-30T00:06:29+01:00" + }, + { + "hash": "e85ef8b", + "short": "chore: add dev:manacore:app script for consistency", + "type": null, + "scope": null, + "additions": 1, + "deletions": 0, + "timestamp": "2025-11-30T00:14:57+01:00" + }, + { + "hash": "eab69c5", + "short": "feat(i18n): add language picker and 5-language support to all auth screens", + "type": "feat", + "scope": "i18n", + "additions": 626, + "deletions": 142, + "timestamp": "2025-11-30T00:28:14+01:00" + }, + { + "hash": "8965328", + "short": "feat(manacore): add credits management and improve dashboard", + "type": "feat", + "scope": "manacore", + "additions": 917, + "deletions": 253, + "timestamp": "2025-11-30T00:29:25+01:00" + }, + { + "hash": "52d43b2", + "short": "fix(manacore): use correct nav icons for Credits and Feedback", + "type": "fix", + "scope": "manacore", + "additions": 5, + "deletions": 5, + "timestamp": "2025-11-30T00:34:58+01:00" + }, + { + "hash": "2d17b72", + "short": "feat(theme): add complete theme support to all web apps", + "type": "feat", + "scope": "theme", + "additions": 49, + "deletions": 6, + "timestamp": "2025-11-30T00:36:47+01:00" + }, + { + "hash": "b970473", + "short": "feat(manacore): add Mana subscription page to navigation", + "type": "feat", + "scope": "manacore", + "additions": 30, + "deletions": 8, + "timestamp": "2025-11-30T00:37:16+01:00" + }, + { + "hash": "74b824d", + "short": "fix(manacore): use manaHref for proper Mana icon in user dropdown", + "type": "fix", + "scope": "manacore", + "additions": 1, + "deletions": 1, + "timestamp": "2025-11-30T00:40:54+01:00" + }, + { + "hash": "6bb8285", + "short": "refactor(apps): unify AppSlider to use centralized MANA_APPS config", + "type": "refactor", + "scope": "apps", + "additions": 60, + "deletions": 183, + "timestamp": "2025-11-30T00:46:13+01:00" + }, + { + "hash": "9a29a8e", + "short": "feat: improve language switcher integration across all web apps", + "type": null, + "scope": null, + "additions": 198, + "deletions": 64, + "timestamp": "2025-11-30T00:46:13+01:00" + }, + { + "hash": "2ce19fe", + "short": "feat(shared-ui): add submenu and divider support to PillDropdown", + "type": "feat", + "scope": "shared-ui", + "additions": 168, + "deletions": 46, + "timestamp": "2025-11-30T00:51:37+01:00" + }, + { + "hash": "120bc93", + "short": "feat(shared-ui): add nested language submenu in PillNavigation", + "type": "feat", + "scope": "shared-ui", + "additions": 18, + "deletions": 13, + "timestamp": "2025-11-30T01:00:43+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-11-29/macher.md b/devlog/2025-11-29/macher.md new file mode 100644 index 000000000..d71ba1c28 --- /dev/null +++ b/devlog/2025-11-29/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-11-29 +day: 7 +view: macher +weekday: Samstag +commits: 52 +review: written +--- + +# Samstag, 2025-11-29 — Tag 7 (Macher-Sicht) + +## Stats + +52 Commits, +21935 / −56265 LoC, 3484 Files. Top-Dirs: `{apps => apps-archived}/memoro/apps` (37%), `{apps => apps-archived}/maerchenzauber/apps` (14%), `{apps => apps-archived}/uload/apps` (8%), `{apps => apps-archived}/bauntown/apps` (7%), `{apps => apps-archived}/nutriphi/apps` (4%). Tags: chat, shared-ui, theme, manacore, nutriphi. Session 05:04 → 00:00 (~194 aktive Min, längster Fokus 54 Min). + +## Commits + +- `8b61399` feat(nutriphi): migrate to shared auth UI components (+298/-266) +- `af8bb9b` fix(wisekeep): improve auth flow and redirect handling (+25/-29) +- `4eed414` feat(shared-ui): extend PillNavigation with tab groups and migrate Picture app (+660/-29) +- `655da23` fix(presi): resolve CORS issues and add strictPort to all web apps (+27/-4) +- `b97149a` feat(icons): migrate to phosphor-svelte for all icon usage (+256/-452) +- `61d181f` chore: archive inactive projects to apps-archived/ (+411/-46614) +- `1296928` feat(shared-auth-ui): redesign login page with animations and theme support (+1076/-596) +- `54383bf` feat(theme): add ThemePage components and distinct background colors (+1796/-1939) +- `8a4cc29` feat(theme): add themes page to picture, manadeck, and presi apps (+150/-6) +- `b9608bd` fix(picture): resolve all TypeScript type errors (+71/-82) +- `f436fbb` feat(theme): migrate theme emojis to Phosphor icons and integrate theme system into Zitare (+299/-327) +- `3cfa6a7` feat(shared-ui): add theme mode selector to PillNavigation dropdown (+166/-10) +- `7deb5b9` feat(shared-ui): add reusable settings components with glass styling (+2402/-1233) +- `95bba8e` feat(chat): add Google Gemini API support with Flash as default model (+426/-211) +- `c164403` fix(shared-ui): improve toggle active state styling (+21/-1) +- `b68e015` feat(chat): add settings page and improve chat UI components (+1454/-436) +- `dde2d51` feat(shared-ui): add app switcher dropdown to PillNavigation (+546/-9) +- `9e90cea` feat(chat): add app switcher to PillNavigation (+6/-0) +- `f8d8faa` fix(chat): use correct Gemini model names (+4/-4) +- `0cd5ad7` refactor(shared-ui): use PillDropdown for app switcher (+61/-461) + +_… plus 32 weitere Commits._ diff --git a/devlog/2025-11-29/spieler.md b/devlog/2025-11-29/spieler.md new file mode 100644 index 000000000..d5d8b99ba --- /dev/null +++ b/devlog/2025-11-29/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-11-29 +day: 7 +view: spieler +weekday: Samstag +commits: 52 +review: written +--- + +# Samstag, 2025-11-29 — Tag 7 + +Großer Sprint-Tag mit Schwerpunkt **{apps => apps-archived}** (52 Commits). + +## Highlights + +- migrate to shared auth UI components +- improve auth flow and redirect handling +- extend PillNavigation with tab groups and migrate Picture app +- resolve CORS issues and add strictPort to all web apps +- migrate to phosphor-svelte for all icon usage diff --git a/devlog/2025-12-01/data.json b/devlog/2025-12-01/data.json new file mode 100644 index 000000000..d6a8af65d --- /dev/null +++ b/devlog/2025-12-01/data.json @@ -0,0 +1,360 @@ +{ + "date": "2025-12-01", + "day_number": 8, + "weekday": "Montag", + "commits": 27, + "authors": [ + { + "name": "Wuesteon", + "count": 17 + }, + { + "name": "Till-JS", + "count": 10 + } + ], + "additions": 49204, + "deletions": 28026, + "net_lines": 21178, + "files_changed": 372, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-01T12:30:58.000Z", + "last_commit_at": "2025-12-02T01:43:47.000Z", + "total_span_minutes": 793, + "active_minutes": 142, + "pauses": [ + { + "from": "13:30", + "to": "14:14", + "minutes": 43 + }, + { + "from": "15:41", + "to": "17:16", + "minutes": 95 + }, + { + "from": "17:16", + "to": "20:44", + "minutes": 208 + }, + { + "from": "20:50", + "to": "23:15", + "minutes": 145 + }, + { + "from": "00:03", + "to": "01:00", + "minutes": 57 + }, + { + "from": "01:00", + "to": "02:43", + "minutes": 103 + } + ], + "longest_focus_minutes": 87 + }, + "top_dirs": [ + { + "path": "services/mana-core-auth/src", + "pct": 11 + }, + { + "path": "games/mana-games/apps", + "pct": 9 + }, + { + "path": "apps/picture/apps/backend", + "pct": 5 + }, + { + "path": "apps/chat/apps/web", + "pct": 5 + }, + { + "path": "services/mana-core-auth/test", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 178 + }, + { + "ext": ".svelte", + "count": 107 + }, + { + "ext": ".md", + "count": 61 + }, + { + "ext": ".json", + "count": 53 + }, + { + "ext": ".astro", + "count": 24 + }, + { + "ext": ".yml", + "count": 11 + } + ], + "tags": ["ci", "picture", "feedback", "apps", "zitare"], + "commits_list": [ + { + "hash": "2a002bf", + "short": "first auth impl", + "type": null, + "scope": null, + "additions": 13348, + "deletions": 6069, + "timestamp": "2025-12-01T13:30:58+01:00" + }, + { + "hash": "a09c389", + "short": "fix(picture): resolve hydration error and CORS issues", + "type": "fix", + "scope": "picture", + "additions": 85, + "deletions": 9, + "timestamp": "2025-12-01T14:14:08+01:00" + }, + { + "hash": "51edd52", + "short": "refactor(picture): remove Supabase dependency, migrate to NestJS backend", + "type": "refactor", + "scope": "picture", + "additions": 1627, + "deletions": 986, + "timestamp": "2025-12-01T14:22:49+01:00" + }, + { + "hash": "1f2d21e", + "short": "feat(feedback): add feedback pages to all archived web apps", + "type": "feat", + "scope": "feedback", + "additions": 241, + "deletions": 431, + "timestamp": "2025-12-01T14:42:26+01:00" + }, + { + "hash": "4e4db46", + "short": "feat(apps): add unified Apps page and PillNavigation to all web apps", + "type": "feat", + "scope": "apps", + "additions": 1354, + "deletions": 538, + "timestamp": "2025-12-01T14:48:00+01:00" + }, + { + "hash": "6cfab65", + "short": "feat(zitare): add vertical scroll-snap quote feed with infinite scroll", + "type": "feat", + "scope": "zitare", + "additions": 165, + "deletions": 40, + "timestamp": "2025-12-01T14:57:05+01:00" + }, + { + "hash": "8dd1e43", + "short": "🐛 fix(auth): use Better Auth native JWT validation with EdDSA", + "type": null, + "scope": null, + "additions": 498, + "deletions": 480, + "timestamp": "2025-12-01T15:18:57+01:00" + }, + { + "hash": "0805713", + "short": "🐛 fix(chat): use correct token storage key from shared-auth", + "type": null, + "scope": null, + "additions": 2, + "deletions": 1, + "timestamp": "2025-12-01T15:19:09+01:00" + }, + { + "hash": "bc27484", + "short": "📝 docs(auth): add comprehensive auth architecture documentation", + "type": null, + "scope": null, + "additions": 530, + "deletions": 0, + "timestamp": "2025-12-01T15:19:20+01:00" + }, + { + "hash": "746df03", + "short": "✅ test(auth): update tests for minimal JWT claims architecture", + "type": null, + "scope": null, + "additions": 209, + "deletions": 641, + "timestamp": "2025-12-01T15:21:19+01:00" + }, + { + "hash": "8a43bbf", + "short": "🔀 merge: auth/complete branch with Better Auth implementation", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-01T15:25:38+01:00" + }, + { + "hash": "64c82a1", + "short": "🐛 fix(presi): resolve auth token mismatch and add feedback navigation", + "type": null, + "scope": null, + "additions": 30, + "deletions": 20, + "timestamp": "2025-12-01T15:35:56+01:00" + }, + { + "hash": "1e2cc03", + "short": "✨ feat(shared-auth-ui): add theme toggle to auth pages", + "type": null, + "scope": null, + "additions": 183, + "deletions": 85, + "timestamp": "2025-12-01T15:40:22+01:00" + }, + { + "hash": "a51e065", + "short": "🚸 feat(shared-ui): improve PillNavigation mobile responsiveness", + "type": null, + "scope": null, + "additions": 123, + "deletions": 4, + "timestamp": "2025-12-01T15:40:33+01:00" + }, + { + "hash": "f8258b8", + "short": "docs", + "type": null, + "scope": null, + "additions": 2, + "deletions": 5, + "timestamp": "2025-12-01T15:41:05+01:00" + }, + { + "hash": "1d5f49a", + "short": "Merge branch 'main' of https://github.com/Memo-2023/manacore-monorepo", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-01T15:41:06+01:00" + }, + { + "hash": "942c588", + "short": "🔒️ feat(auth): centralize JWT validation via mana-core-auth", + "type": null, + "scope": null, + "additions": 1125, + "deletions": 313, + "timestamp": "2025-12-01T17:16:21+01:00" + }, + { + "hash": "5b0b309", + "short": "🔒️ feat(auth): centralize JWT validation and add deployment docs", + "type": null, + "scope": null, + "additions": 11916, + "deletions": 718, + "timestamp": "2025-12-01T20:44:45+01:00" + }, + { + "hash": "5282f55", + "short": "fix(ci): handle missing coverage artifacts gracefully", + "type": "fix", + "scope": "ci", + "additions": 10, + "deletions": 1, + "timestamp": "2025-12-01T20:50:10+01:00" + }, + { + "hash": "0ebfde0", + "short": "fix(ci): build shared packages before tests and fix formatting", + "type": "fix", + "scope": "ci", + "additions": 16214, + "deletions": 15644, + "timestamp": "2025-12-01T23:15:00+01:00" + }, + { + "hash": "6748da8", + "short": "chore(ci): remove Codecov integration", + "type": "chore", + "scope": "ci", + "additions": 4, + "deletions": 58, + "timestamp": "2025-12-01T23:26:58+01:00" + }, + { + "hash": "3f57b84", + "short": "fix(ci): fix test-config and upgrade vitest to v4", + "type": "fix", + "scope": "ci", + "additions": 263, + "deletions": 264, + "timestamp": "2025-12-01T23:37:47+01:00" + }, + { + "hash": "d5af7eb", + "short": "fix(ci): fix YAML syntax error in ci-main.yml", + "type": "fix", + "scope": "ci", + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-01T23:50:39+01:00" + }, + { + "hash": "d916845", + "short": "fix(ci): filter shared packages by directory not package name", + "type": "fix", + "scope": "ci", + "additions": 3, + "deletions": 2, + "timestamp": "2025-12-01T23:54:51+01:00" + }, + { + "hash": "eb17321", + "short": "fix(ci): remove nested turbo.json from presi", + "type": "fix", + "scope": "ci", + "additions": 0, + "deletions": 19, + "timestamp": "2025-12-02T00:03:31+01:00" + }, + { + "hash": "2cfa09c", + "short": "feat(storage): add MinIO local storage and @manacore/shared-storage package", + "type": "feat", + "scope": "storage", + "additions": 1191, + "deletions": 126, + "timestamp": "2025-12-02T01:00:42+01:00" + }, + { + "hash": "4cc1ad2", + "short": "🔧 chore: fix turbo infinite recursion and update dependencies", + "type": null, + "scope": null, + "additions": 80, + "deletions": 1571, + "timestamp": "2025-12-02T02:43:47+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-01/macher.md b/devlog/2025-12-01/macher.md new file mode 100644 index 000000000..963568c96 --- /dev/null +++ b/devlog/2025-12-01/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-12-01 +day: 8 +view: macher +weekday: Montag +commits: 27 +review: written +--- + +# Montag, 2025-12-01 — Tag 8 (Macher-Sicht) + +## Stats + +27 Commits, +49204 / −28026 LoC, 372 Files. Top-Dirs: `services/mana-core-auth/src` (11%), `games/mana-games/apps` (9%), `apps/picture/apps/backend` (5%), `apps/chat/apps/web` (5%), `services/mana-core-auth/test` (4%). Tags: ci, picture, feedback, apps, zitare. Session 12:30 → 01:43 (~142 aktive Min, längster Fokus 87 Min). + +## Commits + +- `2a002bf` first auth impl (+13348/-6069) +- `a09c389` fix(picture): resolve hydration error and CORS issues (+85/-9) +- `51edd52` refactor(picture): remove Supabase dependency, migrate to NestJS backend (+1627/-986) +- `1f2d21e` feat(feedback): add feedback pages to all archived web apps (+241/-431) +- `4e4db46` feat(apps): add unified Apps page and PillNavigation to all web apps (+1354/-538) +- `6cfab65` feat(zitare): add vertical scroll-snap quote feed with infinite scroll (+165/-40) +- `8dd1e43` 🐛 fix(auth): use Better Auth native JWT validation with EdDSA (+498/-480) +- `0805713` 🐛 fix(chat): use correct token storage key from shared-auth (+2/-1) +- `bc27484` 📝 docs(auth): add comprehensive auth architecture documentation (+530/-0) +- `746df03` ✅ test(auth): update tests for minimal JWT claims architecture (+209/-641) +- `8a43bbf` 🔀 merge: auth/complete branch with Better Auth implementation (+0/-0) +- `64c82a1` 🐛 fix(presi): resolve auth token mismatch and add feedback navigation (+30/-20) +- `1e2cc03` ✨ feat(shared-auth-ui): add theme toggle to auth pages (+183/-85) +- `a51e065` 🚸 feat(shared-ui): improve PillNavigation mobile responsiveness (+123/-4) +- `f8258b8` docs (+2/-5) +- `1d5f49a` Merge branch 'main' of https://github.com/Memo-2023/manacore-monorepo (+0/-0) +- `942c588` 🔒️ feat(auth): centralize JWT validation via mana-core-auth (+1125/-313) +- `5b0b309` 🔒️ feat(auth): centralize JWT validation and add deployment docs (+11916/-718) +- `5282f55` fix(ci): handle missing coverage artifacts gracefully (+10/-1) +- `0ebfde0` fix(ci): build shared packages before tests and fix formatting (+16214/-15644) + +_… plus 7 weitere Commits._ diff --git a/devlog/2025-12-01/spieler.md b/devlog/2025-12-01/spieler.md new file mode 100644 index 000000000..f70fa8d21 --- /dev/null +++ b/devlog/2025-12-01/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-01 +day: 8 +view: spieler +weekday: Montag +commits: 27 +review: written +--- + +# Montag, 2025-12-01 — Tag 8 + +Dichter Tag in **services** und Umgebung. + +## Highlights + +- first auth impl +- resolve hydration error and CORS issues +- add feedback pages to all archived web apps +- add unified Apps page and PillNavigation to all web apps +- add vertical scroll-snap quote feed with infinite scroll diff --git a/devlog/2025-12-02/data.json b/devlog/2025-12-02/data.json new file mode 100644 index 000000000..974a2a63d --- /dev/null +++ b/devlog/2025-12-02/data.json @@ -0,0 +1,350 @@ +{ + "date": "2025-12-02", + "day_number": 9, + "weekday": "Dienstag", + "commits": 27, + "authors": [ + { + "name": "Till-JS", + "count": 19 + }, + { + "name": "Wuesteon", + "count": 8 + } + ], + "additions": 45938, + "deletions": 4929, + "net_lines": 41009, + "files_changed": 396, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-02T11:35:54.000Z", + "last_commit_at": "2025-12-03T01:38:38.000Z", + "total_span_minutes": 843, + "active_minutes": 206, + "pauses": [ + { + "from": "13:17", + "to": "13:50", + "minutes": 33 + }, + { + "from": "13:50", + "to": "14:39", + "minutes": 49 + }, + { + "from": "14:42", + "to": "22:56", + "minutes": 494 + }, + { + "from": "00:44", + "to": "01:46", + "minutes": 61 + } + ], + "longest_focus_minutes": 109 + }, + "top_dirs": [ + { + "path": "apps/calendar/apps/web", + "pct": 21 + }, + { + "path": "apps/calendar/apps/backend", + "pct": 9 + }, + { + "path": "apps/contacts/apps/web", + "pct": 9 + }, + { + "path": "apps/storage/apps/backend", + "pct": 9 + }, + { + "path": "apps/storage/apps/web", + "pct": 9 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 246 + }, + { + "ext": ".svelte", + "count": 165 + }, + { + "ext": ".json", + "count": 52 + }, + { + "ext": ".md", + "count": 30 + }, + { + "ext": ".astro", + "count": 26 + }, + { + "ext": ".css", + "count": 11 + } + ], + "tags": ["landing"], + "commits_list": [ + { + "hash": "ef8fd6a", + "short": "feat(landing): add Cloudflare Pages deployment setup", + "type": "feat", + "scope": "landing", + "additions": 843, + "deletions": 235, + "timestamp": "2025-12-02T12:35:54+01:00" + }, + { + "hash": "29aaaec", + "short": "♻️ refactor(storage): unify bucket names and add calendar/contacts", + "type": null, + "scope": null, + "additions": 70, + "deletions": 26, + "timestamp": "2025-12-02T12:59:22+01:00" + }, + { + "hash": "623b1a2", + "short": "feat(landing): add Presi landing page and improve Zitare landing", + "type": "feat", + "scope": "landing", + "additions": 1575, + "deletions": 249, + "timestamp": "2025-12-02T13:06:38+01:00" + }, + { + "hash": "00176a2", + "short": "✨ feat(calendar): add complete calendar app with backend, web, and landing", + "type": null, + "scope": null, + "additions": 9433, + "deletions": 0, + "timestamp": "2025-12-02T13:15:04+01:00" + }, + { + "hash": "45d7015", + "short": "✨ feat(contacts): add complete contacts app with backend, web, and landing", + "type": null, + "scope": null, + "additions": 3812, + "deletions": 1, + "timestamp": "2025-12-02T13:17:42+01:00" + }, + { + "hash": "a00a02a", + "short": "🎨 style(contacts): fix CSS variables and add modern contact pages", + "type": null, + "scope": null, + "additions": 1868, + "deletions": 3, + "timestamp": "2025-12-02T13:50:19+01:00" + }, + { + "hash": "3799fe1", + "short": "🎨 style(calendar): improve UI components and integrate shared-auth-ui", + "type": null, + "scope": null, + "additions": 466, + "deletions": 329, + "timestamp": "2025-12-02T14:39:23+01:00" + }, + { + "hash": "fb9945c", + "short": "🔧 fix(chat): update schema for Better Auth nanoid user IDs", + "type": null, + "scope": null, + "additions": 8, + "deletions": 8, + "timestamp": "2025-12-02T14:40:02+01:00" + }, + { + "hash": "2a04010", + "short": "✨ feat(branding): add Calendar and Storage app branding", + "type": null, + "scope": null, + "additions": 87, + "deletions": 2, + "timestamp": "2025-12-02T14:40:30+01:00" + }, + { + "hash": "1a88dec", + "short": "🔧 fix(shared-storage): update build configuration for CommonJS", + "type": null, + "scope": null, + "additions": 19, + "deletions": 13, + "timestamp": "2025-12-02T14:40:55+01:00" + }, + { + "hash": "19500e8", + "short": "✨ feat(storage): add Storage app scaffolding and root config", + "type": null, + "scope": null, + "additions": 8293, + "deletions": 5, + "timestamp": "2025-12-02T14:41:15+01:00" + }, + { + "hash": "fa13f98", + "short": "🔧 fix(auth): skip migrations in Docker entrypoint", + "type": null, + "scope": null, + "additions": 3, + "deletions": 6, + "timestamp": "2025-12-02T14:41:34+01:00" + }, + { + "hash": "6cc9f70", + "short": "✨ feat(contacts): add archive, favorites, groups, and feedback pages", + "type": null, + "scope": null, + "additions": 3190, + "deletions": 0, + "timestamp": "2025-12-02T14:42:01+01:00" + }, + { + "hash": "02c82c7", + "short": "✨ feat(a11y): add accessibility settings and theme improvements", + "type": null, + "scope": null, + "additions": 1474, + "deletions": 143, + "timestamp": "2025-12-02T22:56:09+01:00" + }, + { + "hash": "9d8c184", + "short": "✨ feat(calendar): add comprehensive settings and profile pages", + "type": null, + "scope": null, + "additions": 1889, + "deletions": 392, + "timestamp": "2025-12-02T23:18:49+01:00" + }, + { + "hash": "0f2aae6", + "short": "✨ feat(calendar): add drag & drop and page-level scrolling", + "type": null, + "scope": null, + "additions": 1013, + "deletions": 92, + "timestamp": "2025-12-02T23:42:03+01:00" + }, + { + "hash": "2635281", + "short": "✨ feat(storage): add shared package types and configuration", + "type": null, + "scope": null, + "additions": 89, + "deletions": 0, + "timestamp": "2025-12-03T00:04:35+01:00" + }, + { + "hash": "2154c3b", + "short": "🔧 chore: add Husky pre-commit hook for type-check", + "type": null, + "scope": null, + "additions": 118, + "deletions": 327, + "timestamp": "2025-12-03T00:08:06+01:00" + }, + { + "hash": "0e5d923", + "short": "✨ feat(auth): add centralized user settings synced across all apps", + "type": null, + "scope": null, + "additions": 1624, + "deletions": 7, + "timestamp": "2025-12-03T00:09:47+01:00" + }, + { + "hash": "b01153b", + "short": "🐛 fix(calendar): improve drag & drop and resize behavior", + "type": null, + "scope": null, + "additions": 430, + "deletions": 101, + "timestamp": "2025-12-03T00:14:47+01:00" + }, + { + "hash": "482509a", + "short": "🐛 fix(theme): add ShadCN-style CSS variable aliases for shared components", + "type": null, + "scope": null, + "additions": 839, + "deletions": 188, + "timestamp": "2025-12-03T00:20:49+01:00" + }, + { + "hash": "0b539bd", + "short": "📝 docs: add comprehensive Claude Code guidelines", + "type": null, + "scope": null, + "additions": 4971, + "deletions": 0, + "timestamp": "2025-12-03T00:44:49+01:00" + }, + { + "hash": "6c9e897", + "short": "fix: update docker registry to ghcr.io/memo-2023", + "type": null, + "scope": null, + "additions": 12, + "deletions": 12, + "timestamp": "2025-12-03T01:46:16+01:00" + }, + { + "hash": "ea3582d", + "short": "💄 style: apply prettier formatting across codebase", + "type": null, + "scope": null, + "additions": 3309, + "deletions": 2574, + "timestamp": "2025-12-03T02:02:09+01:00" + }, + { + "hash": "86da45a", + "short": "🔧 chore: add lint-staged for pre-commit formatting", + "type": null, + "scope": null, + "additions": 163, + "deletions": 0, + "timestamp": "2025-12-03T02:04:41+01:00" + }, + { + "hash": "8cdb950", + "short": "🐛 fix(mana-games): use openai package for Azure OpenAI client", + "type": null, + "scope": null, + "additions": 339, + "deletions": 215, + "timestamp": "2025-12-03T02:20:09+01:00" + }, + { + "hash": "09477e0", + "short": "🐛 fix(mana-games): clean dist before Astro build", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-03T02:38:38+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-02/macher.md b/devlog/2025-12-02/macher.md new file mode 100644 index 000000000..9a715fb57 --- /dev/null +++ b/devlog/2025-12-02/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-12-02 +day: 9 +view: macher +weekday: Dienstag +commits: 27 +review: written +--- + +# Dienstag, 2025-12-02 — Tag 9 (Macher-Sicht) + +## Stats + +27 Commits, +45938 / −4929 LoC, 396 Files. Top-Dirs: `apps/calendar/apps/web` (21%), `apps/calendar/apps/backend` (9%), `apps/contacts/apps/web` (9%), `apps/storage/apps/backend` (9%), `apps/storage/apps/web` (9%). Tags: landing. Session 11:35 → 01:38 (~206 aktive Min, längster Fokus 109 Min). + +## Commits + +- `ef8fd6a` feat(landing): add Cloudflare Pages deployment setup (+843/-235) +- `29aaaec` ♻️ refactor(storage): unify bucket names and add calendar/contacts (+70/-26) +- `623b1a2` feat(landing): add Presi landing page and improve Zitare landing (+1575/-249) +- `00176a2` ✨ feat(calendar): add complete calendar app with backend, web, and landing (+9433/-0) +- `45d7015` ✨ feat(contacts): add complete contacts app with backend, web, and landing (+3812/-1) +- `a00a02a` 🎨 style(contacts): fix CSS variables and add modern contact pages (+1868/-3) +- `3799fe1` 🎨 style(calendar): improve UI components and integrate shared-auth-ui (+466/-329) +- `fb9945c` 🔧 fix(chat): update schema for Better Auth nanoid user IDs (+8/-8) +- `2a04010` ✨ feat(branding): add Calendar and Storage app branding (+87/-2) +- `1a88dec` 🔧 fix(shared-storage): update build configuration for CommonJS (+19/-13) +- `19500e8` ✨ feat(storage): add Storage app scaffolding and root config (+8293/-5) +- `fa13f98` 🔧 fix(auth): skip migrations in Docker entrypoint (+3/-6) +- `6cc9f70` ✨ feat(contacts): add archive, favorites, groups, and feedback pages (+3190/-0) +- `02c82c7` ✨ feat(a11y): add accessibility settings and theme improvements (+1474/-143) +- `9d8c184` ✨ feat(calendar): add comprehensive settings and profile pages (+1889/-392) +- `0f2aae6` ✨ feat(calendar): add drag & drop and page-level scrolling (+1013/-92) +- `2635281` ✨ feat(storage): add shared package types and configuration (+89/-0) +- `2154c3b` 🔧 chore: add Husky pre-commit hook for type-check (+118/-327) +- `0e5d923` ✨ feat(auth): add centralized user settings synced across all apps (+1624/-7) +- `b01153b` 🐛 fix(calendar): improve drag & drop and resize behavior (+430/-101) + +_… plus 7 weitere Commits._ diff --git a/devlog/2025-12-02/spieler.md b/devlog/2025-12-02/spieler.md new file mode 100644 index 000000000..df5462b31 --- /dev/null +++ b/devlog/2025-12-02/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-02 +day: 9 +view: spieler +weekday: Dienstag +commits: 27 +review: written +--- + +# Dienstag, 2025-12-02 — Tag 9 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- add Cloudflare Pages deployment setup +- ♻️ refactor(storage): unify bucket names and add calendar/contacts +- add Presi landing page and improve Zitare landing +- ✨ feat(calendar): add complete calendar app with backend, web, and landing +- ✨ feat(contacts): add complete contacts app with backend, web, and landing diff --git a/devlog/2025-12-03/data.json b/devlog/2025-12-03/data.json new file mode 100644 index 000000000..6a3a00f5a --- /dev/null +++ b/devlog/2025-12-03/data.json @@ -0,0 +1,414 @@ +{ + "date": "2025-12-03", + "day_number": 10, + "weekday": "Mittwoch", + "commits": 32, + "authors": [ + { + "name": "Till-JS", + "count": 16 + }, + { + "name": "Wuesteon", + "count": 15 + }, + { + "name": "Nils Weiser", + "count": 1 + } + ], + "additions": 51262, + "deletions": 7445, + "net_lines": 43817, + "files_changed": 691, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-03T10:54:17.000Z", + "last_commit_at": "2025-12-04T03:21:15.000Z", + "total_span_minutes": 987, + "active_minutes": 200, + "pauses": [ + { + "from": "11:57", + "to": "12:44", + "minutes": 47 + }, + { + "from": "12:46", + "to": "13:45", + "minutes": 59 + }, + { + "from": "13:58", + "to": "15:37", + "minutes": 99 + }, + { + "from": "16:27", + "to": "23:42", + "minutes": 435 + }, + { + "from": "23:42", + "to": "00:32", + "minutes": 50 + }, + { + "from": "02:43", + "to": "03:22", + "minutes": 38 + }, + { + "from": "03:22", + "to": "04:21", + "minutes": 59 + } + ], + "longest_focus_minutes": 132 + }, + "top_dirs": [ + { + "path": "apps/clock/apps/web", + "pct": 7 + }, + { + "path": "apps/mail/apps/backend", + "pct": 7 + }, + { + "path": "apps/calendar/apps/web", + "pct": 5 + }, + { + "path": "apps/todo/apps/backend", + "pct": 5 + }, + { + "path": "apps/todo/apps/web", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 323 + }, + { + "ext": ".json", + "count": 130 + }, + { + "ext": ".svelte", + "count": 115 + }, + { + "ext": ".js", + "count": 63 + }, + { + "ext": ".tsx", + "count": 56 + }, + { + "ext": ".mjs", + "count": 39 + } + ], + "tags": [], + "commits_list": [ + { + "hash": "e56485f", + "short": "✨ feat(calendar): improve header UI and add quick event overlay", + "type": null, + "scope": null, + "additions": 606, + "deletions": 31, + "timestamp": "2025-12-03T11:54:17+01:00" + }, + { + "hash": "ba746fc", + "short": "Merge branch 'main' of https://github.com/Memo-2023/manacore-monorepo", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-03T11:57:30+01:00" + }, + { + "hash": "80f8a03", + "short": "✨ feat(calendar): add event detail modal and structured location fields", + "type": null, + "scope": null, + "additions": 2580, + "deletions": 809, + "timestamp": "2025-12-03T12:44:39+01:00" + }, + { + "hash": "110c677", + "short": "🐛 fix(calendar): shift FAB buttons when PillNav is in sidebar mode", + "type": null, + "scope": null, + "additions": 7, + "deletions": 1, + "timestamp": "2025-12-03T12:46:34+01:00" + }, + { + "hash": "0086e33", + "short": "🔧 chore(voxel-lava): add ESLint v9 flat config for backend", + "type": null, + "scope": null, + "additions": 379, + "deletions": 105, + "timestamp": "2025-12-03T13:45:37+01:00" + }, + { + "hash": "fd962c3", + "short": "🔧 chore: add root ESLint config and enable lint in pre-commit", + "type": null, + "scope": null, + "additions": 367, + "deletions": 327, + "timestamp": "2025-12-03T13:49:57+01:00" + }, + { + "hash": "f720a25", + "short": "🔧 chore: enforce stricter ESLint rules", + "type": null, + "scope": null, + "additions": 4, + "deletions": 5, + "timestamp": "2025-12-03T13:52:30+01:00" + }, + { + "hash": "ec23630", + "short": "🔧 chore: add lint:root and lint:fix scripts", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2025-12-03T13:58:40+01:00" + }, + { + "hash": "2ef457e", + "short": "✨ feat(clock): add complete Clock app with backend, web, and landing", + "type": null, + "scope": null, + "additions": 7517, + "deletions": 2, + "timestamp": "2025-12-03T15:37:51+01:00" + }, + { + "hash": "eca8ca6", + "short": "🐛 fix(clock): rename theme.ts to theme.svelte.ts for Svelte 5 runes", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-03T15:46:48+01:00" + }, + { + "hash": "32eef40", + "short": "🐛 fix(clock): update theme.svelte imports", + "type": null, + "scope": null, + "additions": 3, + "deletions": 3, + "timestamp": "2025-12-03T15:49:08+01:00" + }, + { + "hash": "79b629b", + "short": "✨ feat(contacts): add import/export with Google Contacts integration", + "type": null, + "scope": null, + "additions": 5302, + "deletions": 6, + "timestamp": "2025-12-03T15:54:31+01:00" + }, + { + "hash": "180eced", + "short": "✨ feat(contacts): add import/export with Google Contacts integration", + "type": null, + "scope": null, + "additions": 4182, + "deletions": 5, + "timestamp": "2025-12-03T15:55:04+01:00" + }, + { + "hash": "79dd564", + "short": "🐛 fix(clock): use 'lume' as default theme variant instead of 'amber'", + "type": null, + "scope": null, + "additions": 40, + "deletions": 24, + "timestamp": "2025-12-03T15:58:34+01:00" + }, + { + "hash": "604727c", + "short": "✨ feat(mail): add complete Mail app with backend, web, mobile, and landing", + "type": null, + "scope": null, + "additions": 15653, + "deletions": 0, + "timestamp": "2025-12-03T16:06:32+01:00" + }, + { + "hash": "2126cd5", + "short": "✨ feat(clock): redesign timer page with better UX", + "type": null, + "scope": null, + "additions": 448, + "deletions": 138, + "timestamp": "2025-12-03T16:09:58+01:00" + }, + { + "hash": "8dcf543", + "short": "🐛 fix(clock): fix i18n initialization and add missing nav icons", + "type": null, + "scope": null, + "additions": 37, + "deletions": 6, + "timestamp": "2025-12-03T16:11:01+01:00" + }, + { + "hash": "043acf3", + "short": "🐛 fix(clock): fix Svelte class directive syntax errors", + "type": null, + "scope": null, + "additions": 3, + "deletions": 10, + "timestamp": "2025-12-03T16:12:17+01:00" + }, + { + "hash": "cda3004", + "short": "🔧 chore: misc updates across contacts, mail, and shared-ui", + "type": null, + "scope": null, + "additions": 4615, + "deletions": 2027, + "timestamp": "2025-12-03T16:13:50+01:00" + }, + { + "hash": "39b8a56", + "short": "🔧 chore: extend CORS origins and update todo theme", + "type": null, + "scope": null, + "additions": 2, + "deletions": 2, + "timestamp": "2025-12-03T16:27:18+01:00" + }, + { + "hash": "16cb8e7", + "short": "improve code quality", + "type": null, + "scope": null, + "additions": 2355, + "deletions": 2590, + "timestamp": "2025-12-03T23:42:37+01:00" + }, + { + "hash": "e9caa4a", + "short": "fix lint", + "type": null, + "scope": null, + "additions": 1784, + "deletions": 728, + "timestamp": "2025-12-04T00:32:13+01:00" + }, + { + "hash": "843cf1e", + "short": "fixes", + "type": null, + "scope": null, + "additions": 400, + "deletions": 55, + "timestamp": "2025-12-04T00:51:40+01:00" + }, + { + "hash": "4900106", + "short": "🎨 style: fix Prettier formatting issues", + "type": null, + "scope": null, + "additions": 776, + "deletions": 379, + "timestamp": "2025-12-04T01:05:10+01:00" + }, + { + "hash": "5ea7767", + "short": "🐛 fix(chat-backend): add missing shared-nestjs-auth package to Dockerfile", + "type": null, + "scope": null, + "additions": 4, + "deletions": 0, + "timestamp": "2025-12-04T01:16:02+01:00" + }, + { + "hash": "16a6050", + "short": "🐛 fix(ci): correct GitHub context property in test workflow", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-04T01:26:04+01:00" + }, + { + "hash": "88c10e4", + "short": "Merge pull request #8 from Memo-2023/feat/code-quality", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-04T01:37:17+01:00" + }, + { + "hash": "e32e4b1", + "short": "🐛 fix(build): remove recursive build scripts from parent packages", + "type": null, + "scope": null, + "additions": 1394, + "deletions": 15, + "timestamp": "2025-12-04T01:59:53+01:00" + }, + { + "hash": "aca6cdb", + "short": "🐛 fix(build): fix build errors and add troubleshooting docs", + "type": null, + "scope": null, + "additions": 2604, + "deletions": 22, + "timestamp": "2025-12-04T02:19:11+01:00" + }, + { + "hash": "a87e138", + "short": "🐛 fix(docker): fix manadeck backend Dockerfile to use pnpm", + "type": null, + "scope": null, + "additions": 43, + "deletions": 36, + "timestamp": "2025-12-04T02:43:58+01:00" + }, + { + "hash": "f7986bc", + "short": "🐛 fix(cd): fix staging deployment registry authentication and missing images", + "type": null, + "scope": null, + "additions": 99, + "deletions": 88, + "timestamp": "2025-12-04T03:22:07+01:00" + }, + { + "hash": "cf2b6aa", + "short": "🐛 fix(cd): fix postgres startup and health check issues in staging", + "type": null, + "scope": null, + "additions": 55, + "deletions": 30, + "timestamp": "2025-12-04T04:21:15+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-03/macher.md b/devlog/2025-12-03/macher.md new file mode 100644 index 000000000..7c867683e --- /dev/null +++ b/devlog/2025-12-03/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-12-03 +day: 10 +view: macher +weekday: Mittwoch +commits: 32 +review: written +--- + +# Mittwoch, 2025-12-03 — Tag 10 (Macher-Sicht) + +## Stats + +32 Commits, +51262 / −7445 LoC, 691 Files. Top-Dirs: `apps/clock/apps/web` (7%), `apps/mail/apps/backend` (7%), `apps/calendar/apps/web` (5%), `apps/todo/apps/backend` (5%), `apps/todo/apps/web` (5%). Tags: —. Session 10:54 → 03:21 (~200 aktive Min, längster Fokus 132 Min). + +## Commits + +- `e56485f` ✨ feat(calendar): improve header UI and add quick event overlay (+606/-31) +- `ba746fc` Merge branch 'main' of https://github.com/Memo-2023/manacore-monorepo (+0/-0) +- `80f8a03` ✨ feat(calendar): add event detail modal and structured location fields (+2580/-809) +- `110c677` 🐛 fix(calendar): shift FAB buttons when PillNav is in sidebar mode (+7/-1) +- `0086e33` 🔧 chore(voxel-lava): add ESLint v9 flat config for backend (+379/-105) +- `fd962c3` 🔧 chore: add root ESLint config and enable lint in pre-commit (+367/-327) +- `f720a25` 🔧 chore: enforce stricter ESLint rules (+4/-5) +- `ec23630` 🔧 chore: add lint:root and lint:fix scripts (+2/-0) +- `2ef457e` ✨ feat(clock): add complete Clock app with backend, web, and landing (+7517/-2) +- `eca8ca6` 🐛 fix(clock): rename theme.ts to theme.svelte.ts for Svelte 5 runes (+0/-0) +- `32eef40` 🐛 fix(clock): update theme.svelte imports (+3/-3) +- `79b629b` ✨ feat(contacts): add import/export with Google Contacts integration (+5302/-6) +- `180eced` ✨ feat(contacts): add import/export with Google Contacts integration (+4182/-5) +- `79dd564` 🐛 fix(clock): use 'lume' as default theme variant instead of 'amber' (+40/-24) +- `604727c` ✨ feat(mail): add complete Mail app with backend, web, mobile, and landing (+15653/-0) +- `2126cd5` ✨ feat(clock): redesign timer page with better UX (+448/-138) +- `8dcf543` 🐛 fix(clock): fix i18n initialization and add missing nav icons (+37/-6) +- `043acf3` 🐛 fix(clock): fix Svelte class directive syntax errors (+3/-10) +- `cda3004` 🔧 chore: misc updates across contacts, mail, and shared-ui (+4615/-2027) +- `39b8a56` 🔧 chore: extend CORS origins and update todo theme (+2/-2) + +_… plus 12 weitere Commits._ diff --git a/devlog/2025-12-03/spieler.md b/devlog/2025-12-03/spieler.md new file mode 100644 index 000000000..594bf3067 --- /dev/null +++ b/devlog/2025-12-03/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-03 +day: 10 +view: spieler +weekday: Mittwoch +commits: 32 +review: written +--- + +# Mittwoch, 2025-12-03 — Tag 10 + +Großer Sprint-Tag mit Schwerpunkt **apps** (32 Commits). + +## Highlights + +- ✨ feat(calendar): improve header UI and add quick event overlay +- ✨ feat(calendar): add event detail modal and structured location fields +- 🐛 fix(calendar): shift FAB buttons when PillNav is in sidebar mode +- 🔧 chore(voxel-lava): add ESLint v9 flat config for backend +- 🔧 chore: add root ESLint config and enable lint in pre-commit diff --git a/devlog/2025-12-04/data.json b/devlog/2025-12-04/data.json new file mode 100644 index 000000000..251f058a3 --- /dev/null +++ b/devlog/2025-12-04/data.json @@ -0,0 +1,613 @@ +{ + "date": "2025-12-04", + "day_number": 11, + "weekday": "Donnerstag", + "commits": 54, + "authors": [ + { + "name": "Till-JS", + "count": 28 + }, + { + "name": "Wuesteon", + "count": 26 + } + ], + "additions": 115646, + "deletions": 36556, + "net_lines": 79090, + "files_changed": 1050, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-04T14:37:34.000Z", + "last_commit_at": "2025-12-05T03:26:34.000Z", + "total_span_minutes": 769, + "active_minutes": 275, + "pauses": [ + { + "from": "17:46", + "to": "19:08", + "minutes": 82 + }, + { + "from": "19:09", + "to": "21:53", + "minutes": 164 + }, + { + "from": "21:53", + "to": "22:58", + "minutes": 65 + }, + { + "from": "23:40", + "to": "00:15", + "minutes": 35 + }, + { + "from": "00:15", + "to": "00:50", + "minutes": 35 + }, + { + "from": "00:50", + "to": "01:33", + "minutes": 43 + }, + { + "from": "01:33", + "to": "02:10", + "minutes": 38 + }, + { + "from": "02:12", + "to": "02:45", + "minutes": 32 + } + ], + "longest_focus_minutes": 129 + }, + "top_dirs": [ + { + "path": "games/figgos/{ => apps", + "pct": 6 + }, + { + "path": "apps/clock/apps/web", + "pct": 6 + }, + { + "path": "apps/finance/apps/backend", + "pct": 5 + }, + { + "path": "apps/finance/apps/web", + "pct": 5 + }, + { + "path": "apps/manacore/apps/web", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 482 + }, + { + "ext": ".svelte", + "count": 274 + }, + { + "ext": ".tsx", + "count": 125 + }, + { + "ext": ".json", + "count": 102 + }, + { + "ext": ".md", + "count": 26 + }, + { + "ext": ".yml", + "count": 20 + } + ], + "tags": ["ci", "staging", "chat-web", "manacore", "cd"], + "commits_list": [ + { + "hash": "9eb0b51", + "short": "✨ feat(clock): add 10 new clock face designs", + "type": null, + "scope": null, + "additions": 5937, + "deletions": 10, + "timestamp": "2025-12-04T15:37:34+01:00" + }, + { + "hash": "10f4da8", + "short": "✨ feat(manacore): add configurable cross-app dashboard with widgets", + "type": null, + "scope": null, + "additions": 2641, + "deletions": 176, + "timestamp": "2025-12-04T15:41:24+01:00" + }, + { + "hash": "6080902", + "short": "✨ feat(clock): add multi-stopwatch support with improved UI", + "type": null, + "scope": null, + "additions": 851, + "deletions": 132, + "timestamp": "2025-12-04T15:42:12+01:00" + }, + { + "hash": "03b77ee", + "short": "✨ feat(clock): add life clock page with minimal homepage redesign", + "type": null, + "scope": null, + "additions": 1864, + "deletions": 124, + "timestamp": "2025-12-04T16:00:54+01:00" + }, + { + "hash": "949b9c8", + "short": "🎮 feat(games): add figgos game to monorepo", + "type": null, + "scope": null, + "additions": 7769, + "deletions": 0, + "timestamp": "2025-12-04T16:26:25+01:00" + }, + { + "hash": "5b3c5ff", + "short": "🐛 fix: resolve type-check errors in finance and moodlit", + "type": null, + "scope": null, + "additions": 30, + "deletions": 0, + "timestamp": "2025-12-04T16:30:01+01:00" + }, + { + "hash": "bbe540c", + "short": "✨ feat: add global start page setting across all apps", + "type": null, + "scope": null, + "additions": 602, + "deletions": 22, + "timestamp": "2025-12-04T16:31:04+01:00" + }, + { + "hash": "ad0051a", + "short": "✨ feat(finance): add complete finance app with budget tracking", + "type": null, + "scope": null, + "additions": 10502, + "deletions": 0, + "timestamp": "2025-12-04T16:41:43+01:00" + }, + { + "hash": "b7eeae9", + "short": "✨ feat(moodlit): add complete web app with fullscreen moods and sequences", + "type": null, + "scope": null, + "additions": 8104, + "deletions": 2, + "timestamp": "2025-12-04T16:53:56+01:00" + }, + { + "hash": "234703a", + "short": "♻️ refactor(cd): hardcode non-sensitive config in staging workflow", + "type": null, + "scope": null, + "additions": 188, + "deletions": 20, + "timestamp": "2025-12-04T17:11:36+01:00" + }, + { + "hash": "f80b864", + "short": "✨ feat(clock): add interactive world map to world clock page", + "type": null, + "scope": null, + "additions": 558, + "deletions": 26, + "timestamp": "2025-12-04T17:25:58+01:00" + }, + { + "hash": "9dee75e", + "short": "✨ feat(clock): improve UI across alarms, timers, pomodoro, and world clock pages", + "type": null, + "scope": null, + "additions": 752, + "deletions": 624, + "timestamp": "2025-12-04T17:26:50+01:00" + }, + { + "hash": "05d074c", + "short": "🔧 refactor(figgos): restructure to standard monorepo pattern", + "type": null, + "scope": null, + "additions": 2207, + "deletions": 63, + "timestamp": "2025-12-04T17:27:15+01:00" + }, + { + "hash": "ed985d9", + "short": "✨ feat(shared-ui): add centered mode to PageHeader component", + "type": null, + "scope": null, + "additions": 76, + "deletions": 21, + "timestamp": "2025-12-04T17:27:43+01:00" + }, + { + "hash": "1b11ebc", + "short": "🐛 fix(shared-feedback-ui): use CreateFeedbackInput type in handleSubmit", + "type": null, + "scope": null, + "additions": 6, + "deletions": 2, + "timestamp": "2025-12-04T17:27:58+01:00" + }, + { + "hash": "c93aca0", + "short": "📝 docs: update COMMANDS.md and add APP-IDEAS.md", + "type": null, + "scope": null, + "additions": 170, + "deletions": 0, + "timestamp": "2025-12-04T17:28:16+01:00" + }, + { + "hash": "040d044", + "short": "🐛 fix(mana-core-auth): add ConfigModule import to AiModule", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2025-12-04T17:46:39+01:00" + }, + { + "hash": "d69cc60", + "short": "🐛 fix(auth): remove type-only import of ConfigService in AiService", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-04T19:08:37+01:00" + }, + { + "hash": "a865da9", + "short": "📝 docs: add NestJS dependency injection troubleshooting", + "type": null, + "scope": null, + "additions": 136, + "deletions": 0, + "timestamp": "2025-12-04T19:09:38+01:00" + }, + { + "hash": "60ecc24", + "short": "🐛 fix(auth): remove all type-only ConfigService imports", + "type": null, + "scope": null, + "additions": 6, + "deletions": 6, + "timestamp": "2025-12-04T21:53:28+01:00" + }, + { + "hash": "9b26caf", + "short": "🐛 fix(mana-core-auth): remove type-only imports from services and controllers", + "type": null, + "scope": null, + "additions": 5, + "deletions": 5, + "timestamp": "2025-12-04T22:58:45+01:00" + }, + { + "hash": "b8f9bc1", + "short": "🐛 fix(chat-backend): remove type-only ConfigService import", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-04T23:02:26+01:00" + }, + { + "hash": "9c47119", + "short": "Fix wrong type import, make auth and chat work", + "type": null, + "scope": null, + "additions": 24453, + "deletions": 443, + "timestamp": "2025-12-04T23:25:25+01:00" + }, + { + "hash": "952f246", + "short": "fix styleing", + "type": null, + "scope": null, + "additions": 371, + "deletions": 147, + "timestamp": "2025-12-04T23:40:25+01:00" + }, + { + "hash": "b6115a6", + "short": "add health route", + "type": null, + "scope": null, + "additions": 15719, + "deletions": 15698, + "timestamp": "2025-12-05T00:15:44+01:00" + }, + { + "hash": "6c3b297", + "short": "fix route", + "type": null, + "scope": null, + "additions": 15859, + "deletions": 15859, + "timestamp": "2025-12-05T00:50:23+01:00" + }, + { + "hash": "80f8005", + "short": "refactor(staging): simplify CI/CD to mana-core-auth + chat-backend only", + "type": "refactor", + "scope": "staging", + "additions": 600, + "deletions": 158, + "timestamp": "2025-12-05T01:33:01+01:00" + }, + { + "hash": "714298f", + "short": "feat(chat-web): add Docker deployment for chat frontend", + "type": "feat", + "scope": "chat-web", + "additions": 424, + "deletions": 332, + "timestamp": "2025-12-05T02:10:32+01:00" + }, + { + "hash": "1ecdee4", + "short": "chore(ci): simplify pipelines for rapid testing", + "type": "chore", + "scope": "ci", + "additions": 756, + "deletions": 56, + "timestamp": "2025-12-05T02:12:59+01:00" + }, + { + "hash": "eaf82b4", + "short": "fix(ci): remove validate job - Docker builds are self-contained", + "type": "fix", + "scope": "ci", + "additions": 10, + "deletions": 56, + "timestamp": "2025-12-05T02:45:06+01:00" + }, + { + "hash": "8253fbb", + "short": "chore(ci): disable test workflows for rapid iteration", + "type": "chore", + "scope": "ci", + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-05T02:47:20+01:00" + }, + { + "hash": "be37808", + "short": "fix(chat-web): use runtime env vars instead of static imports", + "type": "fix", + "scope": "chat-web", + "additions": 17, + "deletions": 6, + "timestamp": "2025-12-05T02:49:32+01:00" + }, + { + "hash": "c1d14a4", + "short": "chore(ci): rename backup files to .bak to prevent GitHub detection", + "type": "chore", + "scope": "ci", + "additions": 0, + "deletions": 562, + "timestamp": "2025-12-05T03:04:01+01:00" + }, + { + "hash": "0aa9ba0", + "short": "chore(ci): disable PR and dependency workflows for minimal setup", + "type": "chore", + "scope": "ci", + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-05T03:06:24+01:00" + }, + { + "hash": "4a56c88", + "short": "fix(staging): correct chat-backend health check path to /api/v1/health", + "type": "fix", + "scope": "staging", + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-05T03:32:22+01:00" + }, + { + "hash": "0c05097", + "short": "docs: add staging deployment troubleshooting guide", + "type": null, + "scope": null, + "additions": 296, + "deletions": 1, + "timestamp": "2025-12-05T03:35:10+01:00" + }, + { + "hash": "cfbc8a2", + "short": "♻️ refactor: unify web app patterns across monorepo", + "type": null, + "scope": null, + "additions": 2215, + "deletions": 175, + "timestamp": "2025-12-05T03:35:26+01:00" + }, + { + "hash": "acb5d74", + "short": "📝 docs: add release plan and manacore roadmap", + "type": null, + "scope": null, + "additions": 1405, + "deletions": 113, + "timestamp": "2025-12-05T03:38:27+01:00" + }, + { + "hash": "4460807", + "short": "fix(chat-web): inject runtime env vars for client-side auth", + "type": "fix", + "scope": "chat-web", + "additions": 29, + "deletions": 10, + "timestamp": "2025-12-05T03:38:53+01:00" + }, + { + "hash": "5fd5423", + "short": "feat(manacore): add Picture, ManaDeck, and Clock dashboard widgets", + "type": "feat", + "scope": "manacore", + "additions": 961, + "deletions": 2, + "timestamp": "2025-12-05T03:45:07+01:00" + }, + { + "hash": "00281a8", + "short": "fix(staging): add CORS_ORIGINS to mana-core-auth", + "type": "fix", + "scope": "staging", + "additions": 2, + "deletions": 0, + "timestamp": "2025-12-05T03:56:30+01:00" + }, + { + "hash": "113495a", + "short": "docs: add client-side env injection and CORS troubleshooting", + "type": null, + "scope": null, + "additions": 158, + "deletions": 0, + "timestamp": "2025-12-05T04:09:11+01:00" + }, + { + "hash": "0fe3975", + "short": "fix(cd): use drizzle-kit push for schema migration", + "type": "fix", + "scope": "cd", + "additions": 68, + "deletions": 2, + "timestamp": "2025-12-05T04:16:32+01:00" + }, + { + "hash": "f1ed3e3", + "short": "feat(inventory): add new Inventory app scaffolding", + "type": "feat", + "scope": "inventory", + "additions": 7270, + "deletions": 2, + "timestamp": "2025-12-05T04:19:36+01:00" + }, + { + "hash": "a514879", + "short": "refactor(calendar): reorganize routes into (app) layout group", + "type": "refactor", + "scope": "calendar", + "additions": 269, + "deletions": 261, + "timestamp": "2025-12-05T04:19:51+01:00" + }, + { + "hash": "4a41b45", + "short": "refactor(clock): reorganize routes into (app) layout group", + "type": "refactor", + "scope": "clock", + "additions": 257, + "deletions": 256, + "timestamp": "2025-12-05T04:19:56+01:00" + }, + { + "hash": "ebec369", + "short": "refactor(finance): reorganize routes into (app) layout group", + "type": "refactor", + "scope": "finance", + "additions": 346, + "deletions": 173, + "timestamp": "2025-12-05T04:20:02+01:00" + }, + { + "hash": "2f7450b", + "short": "refactor(mail): reorganize routes into (app) layout group", + "type": "refactor", + "scope": "mail", + "additions": 318, + "deletions": 221, + "timestamp": "2025-12-05T04:20:06+01:00" + }, + { + "hash": "4a6d946", + "short": "refactor(presi): reorganize routes into (app) and (auth) layout groups", + "type": "refactor", + "scope": "presi", + "additions": 258, + "deletions": 251, + "timestamp": "2025-12-05T04:20:11+01:00" + }, + { + "hash": "862560f", + "short": "refactor(todo): reorganize routes into (app) layout group", + "type": "refactor", + "scope": "todo", + "additions": 263, + "deletions": 243, + "timestamp": "2025-12-05T04:20:16+01:00" + }, + { + "hash": "fd3341f", + "short": "refactor(zitare): reorganize routes into (app) layout group", + "type": "refactor", + "scope": "zitare", + "additions": 283, + "deletions": 267, + "timestamp": "2025-12-05T04:20:21+01:00" + }, + { + "hash": "fca93a9", + "short": "fix(manacore): update app layout", + "type": "fix", + "scope": "manacore", + "additions": 8, + "deletions": 2, + "timestamp": "2025-12-05T04:20:27+01:00" + }, + { + "hash": "c3c272a", + "short": "chore: update config files and dependencies", + "type": null, + "scope": null, + "additions": 585, + "deletions": 23, + "timestamp": "2025-12-05T04:20:35+01:00" + }, + { + "hash": "da4f05a", + "short": "fix(shared-auth): add UUID fallback for HTTP contexts", + "type": "fix", + "scope": "shared-auth", + "additions": 37, + "deletions": 1, + "timestamp": "2025-12-05T04:26:34+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-04/macher.md b/devlog/2025-12-04/macher.md new file mode 100644 index 000000000..0ed7c9e93 --- /dev/null +++ b/devlog/2025-12-04/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-12-04 +day: 11 +view: macher +weekday: Donnerstag +commits: 54 +review: written +--- + +# Donnerstag, 2025-12-04 — Tag 11 (Macher-Sicht) + +## Stats + +54 Commits, +115646 / −36556 LoC, 1050 Files. Top-Dirs: `games/figgos/{ => apps` (6%), `apps/clock/apps/web` (6%), `apps/finance/apps/backend` (5%), `apps/finance/apps/web` (5%), `apps/manacore/apps/web` (5%). Tags: ci, staging, chat-web, manacore, cd. Session 14:37 → 03:26 (~275 aktive Min, längster Fokus 129 Min). + +## Commits + +- `9eb0b51` ✨ feat(clock): add 10 new clock face designs (+5937/-10) +- `10f4da8` ✨ feat(manacore): add configurable cross-app dashboard with widgets (+2641/-176) +- `6080902` ✨ feat(clock): add multi-stopwatch support with improved UI (+851/-132) +- `03b77ee` ✨ feat(clock): add life clock page with minimal homepage redesign (+1864/-124) +- `949b9c8` 🎮 feat(games): add figgos game to monorepo (+7769/-0) +- `5b3c5ff` 🐛 fix: resolve type-check errors in finance and moodlit (+30/-0) +- `bbe540c` ✨ feat: add global start page setting across all apps (+602/-22) +- `ad0051a` ✨ feat(finance): add complete finance app with budget tracking (+10502/-0) +- `b7eeae9` ✨ feat(moodlit): add complete web app with fullscreen moods and sequences (+8104/-2) +- `234703a` ♻️ refactor(cd): hardcode non-sensitive config in staging workflow (+188/-20) +- `f80b864` ✨ feat(clock): add interactive world map to world clock page (+558/-26) +- `9dee75e` ✨ feat(clock): improve UI across alarms, timers, pomodoro, and world clock pages (+752/-624) +- `05d074c` 🔧 refactor(figgos): restructure to standard monorepo pattern (+2207/-63) +- `ed985d9` ✨ feat(shared-ui): add centered mode to PageHeader component (+76/-21) +- `1b11ebc` 🐛 fix(shared-feedback-ui): use CreateFeedbackInput type in handleSubmit (+6/-2) +- `c93aca0` 📝 docs: update COMMANDS.md and add APP-IDEAS.md (+170/-0) +- `040d044` 🐛 fix(mana-core-auth): add ConfigModule import to AiModule (+2/-0) +- `d69cc60` 🐛 fix(auth): remove type-only import of ConfigService in AiService (+1/-1) +- `a865da9` 📝 docs: add NestJS dependency injection troubleshooting (+136/-0) +- `60ecc24` 🐛 fix(auth): remove all type-only ConfigService imports (+6/-6) + +_… plus 34 weitere Commits._ diff --git a/devlog/2025-12-04/spieler.md b/devlog/2025-12-04/spieler.md new file mode 100644 index 000000000..3f20aff22 --- /dev/null +++ b/devlog/2025-12-04/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-04 +day: 11 +view: spieler +weekday: Donnerstag +commits: 54 +review: written +--- + +# Donnerstag, 2025-12-04 — Tag 11 + +Großer Sprint-Tag mit Schwerpunkt **games** (54 Commits). + +## Highlights + +- ✨ feat(clock): add 10 new clock face designs +- ✨ feat(manacore): add configurable cross-app dashboard with widgets +- ✨ feat(clock): add multi-stopwatch support with improved UI +- ✨ feat(clock): add life clock page with minimal homepage redesign +- 🎮 feat(games): add figgos game to monorepo diff --git a/devlog/2025-12-05/data.json b/devlog/2025-12-05/data.json new file mode 100644 index 000000000..93b81f5b3 --- /dev/null +++ b/devlog/2025-12-05/data.json @@ -0,0 +1,201 @@ +{ + "date": "2025-12-05", + "day_number": 12, + "weekday": "Freitag", + "commits": 11, + "authors": [ + { + "name": "Till-JS", + "count": 9 + }, + { + "name": "Wuesteon", + "count": 2 + } + ], + "additions": 79293, + "deletions": 5883, + "net_lines": 73410, + "files_changed": 1376, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-05T12:13:15.000Z", + "last_commit_at": "2025-12-05T16:57:26.000Z", + "total_span_minutes": 284, + "active_minutes": 56, + "pauses": [ + { + "from": "13:47", + "to": "15:09", + "minutes": 81 + }, + { + "from": "15:30", + "to": "17:18", + "minutes": 108 + }, + { + "from": "17:18", + "to": "17:57", + "minutes": 39 + } + ], + "longest_focus_minutes": 34 + }, + "top_dirs": [ + { + "path": "apps/context/apps/mobile", + "pct": 13 + }, + { + "path": "apps-archived/techbase/apps", + "pct": 11 + }, + { + "path": "{apps => apps-archived}/presi/apps", + "pct": 10 + }, + { + "path": "{apps => apps-archived}/mail/apps", + "pct": 9 + }, + { + "path": "games/worldream/{ => apps", + "pct": 8 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 541 + }, + { + "ext": ".svelte", + "count": 238 + }, + { + "ext": ".tsx", + "count": 166 + }, + { + "ext": ".json", + "count": 123 + }, + { + "ext": ".md", + "count": 115 + }, + { + "ext": ".astro", + "count": 49 + } + ], + "tags": ["mana-core-auth", "games", "context"], + "commits_list": [ + { + "hash": "ace7fa8", + "short": "chore: archive finance, mail, moodlit apps and rename voxel-lava", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-05T13:13:15+01:00" + }, + { + "hash": "8e414c1", + "short": "feat(games): add worldream game to monorepo", + "type": "feat", + "scope": "games", + "additions": 26745, + "deletions": 0, + "timestamp": "2025-12-05T13:24:06+01:00" + }, + { + "hash": "1731347", + "short": "fix(mana-core-auth): use JWKS with jose for JWT verification", + "type": "fix", + "scope": "mana-core-auth", + "additions": 43, + "deletions": 28, + "timestamp": "2025-12-05T13:26:19+01:00" + }, + { + "hash": "34c8799", + "short": "chore: add techbase to apps-archived", + "type": null, + "scope": null, + "additions": 12613, + "deletions": 0, + "timestamp": "2025-12-05T13:47:39+01:00" + }, + { + "hash": "bb0e0cf", + "short": "🚚 feat(context): integrate context app into monorepo", + "type": null, + "scope": null, + "additions": 31903, + "deletions": 474, + "timestamp": "2025-12-05T15:09:04+01:00" + }, + { + "hash": "44897ae", + "short": "chore: archive inventory, presi, storage apps", + "type": null, + "scope": null, + "additions": 24, + "deletions": 70, + "timestamp": "2025-12-05T15:22:38+01:00" + }, + { + "hash": "12f5917", + "short": "docs: update CLAUDE.md for archived apps", + "type": null, + "scope": null, + "additions": 3, + "deletions": 2, + "timestamp": "2025-12-05T15:29:58+01:00" + }, + { + "hash": "dbf5745", + "short": "fix(mana-core-auth): configure helmet for cross-origin requests", + "type": "fix", + "scope": "mana-core-auth", + "additions": 8, + "deletions": 2, + "timestamp": "2025-12-05T15:30:12+01:00" + }, + { + "hash": "86a6ff2", + "short": "fix(context): add expo-font dependency and fix TypeScript issues", + "type": "fix", + "scope": "context", + "additions": 7941, + "deletions": 5307, + "timestamp": "2025-12-05T15:30:31+01:00" + }, + { + "hash": "9be1125", + "short": "update docs", + "type": null, + "scope": null, + "additions": 13, + "deletions": 0, + "timestamp": "2025-12-05T17:18:40+01:00" + }, + { + "hash": "d41d060", + "short": "Merge branch 'dev-1' into dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-05T17:57:26+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-05/macher.md b/devlog/2025-12-05/macher.md new file mode 100644 index 000000000..fd897d5e3 --- /dev/null +++ b/devlog/2025-12-05/macher.md @@ -0,0 +1,28 @@ +--- +date: 2025-12-05 +day: 12 +view: macher +weekday: Freitag +commits: 11 +review: written +--- + +# Freitag, 2025-12-05 — Tag 12 (Macher-Sicht) + +## Stats + +11 Commits, +79293 / −5883 LoC, 1376 Files. Top-Dirs: `apps/context/apps/mobile` (13%), `apps-archived/techbase/apps` (11%), `{apps => apps-archived}/presi/apps` (10%), `{apps => apps-archived}/mail/apps` (9%), `games/worldream/{ => apps` (8%). Tags: mana-core-auth, games, context. Session 12:13 → 16:57 (~56 aktive Min, längster Fokus 34 Min). + +## Commits + +- `ace7fa8` chore: archive finance, mail, moodlit apps and rename voxel-lava (+0/-0) +- `8e414c1` feat(games): add worldream game to monorepo (+26745/-0) +- `1731347` fix(mana-core-auth): use JWKS with jose for JWT verification (+43/-28) +- `34c8799` chore: add techbase to apps-archived (+12613/-0) +- `bb0e0cf` 🚚 feat(context): integrate context app into monorepo (+31903/-474) +- `44897ae` chore: archive inventory, presi, storage apps (+24/-70) +- `12f5917` docs: update CLAUDE.md for archived apps (+3/-2) +- `dbf5745` fix(mana-core-auth): configure helmet for cross-origin requests (+8/-2) +- `86a6ff2` fix(context): add expo-font dependency and fix TypeScript issues (+7941/-5307) +- `9be1125` update docs (+13/-0) +- `d41d060` Merge branch 'dev-1' into dev (+0/-0) diff --git a/devlog/2025-12-05/spieler.md b/devlog/2025-12-05/spieler.md new file mode 100644 index 000000000..bbc593594 --- /dev/null +++ b/devlog/2025-12-05/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-05 +day: 12 +view: spieler +weekday: Freitag +commits: 11 +review: written +--- + +# Freitag, 2025-12-05 — Tag 12 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- add worldream game to monorepo +- use JWKS with jose for JWT verification +- 🚚 feat(context): integrate context app into monorepo +- update CLAUDE.md for archived apps +- configure helmet for cross-origin requests diff --git a/devlog/2025-12-07/data.json b/devlog/2025-12-07/data.json new file mode 100644 index 000000000..f6da99de1 --- /dev/null +++ b/devlog/2025-12-07/data.json @@ -0,0 +1,174 @@ +{ + "date": "2025-12-07", + "day_number": 13, + "weekday": "Sonntag", + "commits": 9, + "authors": [ + { + "name": "Till-JS", + "count": 9 + } + ], + "additions": 8093, + "deletions": 1471, + "net_lines": 6622, + "files_changed": 96, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-07T12:23:45.000Z", + "last_commit_at": "2025-12-07T15:36:17.000Z", + "total_span_minutes": 193, + "active_minutes": 31, + "pauses": [ + { + "from": "13:23", + "to": "14:44", + "minutes": 81 + }, + { + "from": "14:44", + "to": "16:06", + "minutes": 81 + } + ], + "longest_focus_minutes": 30 + }, + "top_dirs": [ + { + "path": "apps/manacore/apps/web", + "pct": 28 + }, + { + "path": "apps/todo/apps/web", + "pct": 20 + }, + { + "path": "services/mana-core-auth/src", + "pct": 18 + }, + { + "path": "apps/todo/apps/backend", + "pct": 11 + }, + { + "path": "apps/picture/apps/web", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 56 + }, + { + "ext": ".svelte", + "count": 38 + }, + { + "ext": ".mjs", + "count": 8 + }, + { + "ext": ".md", + "count": 2 + }, + { + "ext": ".json", + "count": 2 + }, + { + "ext": ".yaml", + "count": 1 + } + ], + "tags": ["manacore", "todo", "auth", "picture", "settings"], + "commits_list": [ + { + "hash": "ee52f6c", + "short": "chore: remove empty archived app stubs from apps/", + "type": null, + "scope": null, + "additions": 0, + "deletions": 111, + "timestamp": "2025-12-07T13:23:45+01:00" + }, + { + "hash": "a6cc0b8", + "short": "fix(manacore): auth flow and dashboard widget API fixes", + "type": "fix", + "scope": "manacore", + "additions": 2634, + "deletions": 68, + "timestamp": "2025-12-07T14:44:58+01:00" + }, + { + "hash": "e3ba35b", + "short": "refactor(todo): unify task views into single page with collapsible sections", + "type": "refactor", + "scope": "todo", + "additions": 492, + "deletions": 330, + "timestamp": "2025-12-07T16:06:08+01:00" + }, + { + "hash": "6d91831", + "short": "feat(auth): add fraud detection, cron jobs, and admin endpoints to referral system", + "type": "feat", + "scope": "auth", + "additions": 1522, + "deletions": 415, + "timestamp": "2025-12-07T16:09:39+01:00" + }, + { + "hash": "6f8585e", + "short": "fix(manacore): improve API response handling and auth flow", + "type": "fix", + "scope": "manacore", + "additions": 110, + "deletions": 80, + "timestamp": "2025-12-07T16:10:51+01:00" + }, + { + "hash": "833a828", + "short": "fix(picture): update API client to v1 endpoint and rename steps param", + "type": "fix", + "scope": "picture", + "additions": 6, + "deletions": 6, + "timestamp": "2025-12-07T16:11:04+01:00" + }, + { + "hash": "9ece591", + "short": "docs: add referral system implementation plan", + "type": null, + "scope": null, + "additions": 1247, + "deletions": 0, + "timestamp": "2025-12-07T16:11:23+01:00" + }, + { + "hash": "7b8335a", + "short": "fix(settings): unify global settings across web apps", + "type": "fix", + "scope": "settings", + "additions": 25, + "deletions": 461, + "timestamp": "2025-12-07T16:28:00+01:00" + }, + { + "hash": "bb59227", + "short": "feat(todo): add Kanban board with drag & drop and filters", + "type": "feat", + "scope": "todo", + "additions": 2057, + "deletions": 0, + "timestamp": "2025-12-07T16:36:17+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-07/macher.md b/devlog/2025-12-07/macher.md new file mode 100644 index 000000000..74da640ec --- /dev/null +++ b/devlog/2025-12-07/macher.md @@ -0,0 +1,26 @@ +--- +date: 2025-12-07 +day: 13 +view: macher +weekday: Sonntag +commits: 9 +review: written +--- + +# Sonntag, 2025-12-07 — Tag 13 (Macher-Sicht) + +## Stats + +9 Commits, +8093 / −1471 LoC, 96 Files. Top-Dirs: `apps/manacore/apps/web` (28%), `apps/todo/apps/web` (20%), `services/mana-core-auth/src` (18%), `apps/todo/apps/backend` (11%), `apps/picture/apps/web` (4%). Tags: manacore, todo, auth, picture, settings. Session 12:23 → 15:36 (~31 aktive Min, längster Fokus 30 Min). + +## Commits + +- `ee52f6c` chore: remove empty archived app stubs from apps/ (+0/-111) +- `a6cc0b8` fix(manacore): auth flow and dashboard widget API fixes (+2634/-68) +- `e3ba35b` refactor(todo): unify task views into single page with collapsible sections (+492/-330) +- `6d91831` feat(auth): add fraud detection, cron jobs, and admin endpoints to referral system (+1522/-415) +- `6f8585e` fix(manacore): improve API response handling and auth flow (+110/-80) +- `833a828` fix(picture): update API client to v1 endpoint and rename steps param (+6/-6) +- `9ece591` docs: add referral system implementation plan (+1247/-0) +- `7b8335a` fix(settings): unify global settings across web apps (+25/-461) +- `bb59227` feat(todo): add Kanban board with drag & drop and filters (+2057/-0) diff --git a/devlog/2025-12-07/spieler.md b/devlog/2025-12-07/spieler.md new file mode 100644 index 000000000..5e6eb8219 --- /dev/null +++ b/devlog/2025-12-07/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-07 +day: 13 +view: spieler +weekday: Sonntag +commits: 9 +review: written +--- + +# Sonntag, 2025-12-07 — Tag 13 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- auth flow and dashboard widget API fixes +- add fraud detection, cron jobs, and admin endpoints to referral system +- improve API response handling and auth flow +- update API client to v1 endpoint and rename steps param +- add referral system implementation plan diff --git a/devlog/2025-12-08/data.json b/devlog/2025-12-08/data.json new file mode 100644 index 000000000..dd436e616 --- /dev/null +++ b/devlog/2025-12-08/data.json @@ -0,0 +1,419 @@ +{ + "date": "2025-12-08", + "day_number": 14, + "weekday": "Montag", + "commits": 34, + "authors": [ + { + "name": "Wuesteon", + "count": 34 + } + ], + "additions": 5273, + "deletions": 3519, + "net_lines": 1754, + "files_changed": 90, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-08T11:53:42.000Z", + "last_commit_at": "2025-12-09T01:13:11.000Z", + "total_span_minutes": 799, + "active_minutes": 358, + "pauses": [ + { + "from": "12:56", + "to": "14:38", + "minutes": 102 + }, + { + "from": "14:44", + "to": "15:51", + "minutes": 68 + }, + { + "from": "17:04", + "to": "17:35", + "minutes": 31 + }, + { + "from": "19:51", + "to": "20:49", + "minutes": 58 + }, + { + "from": "23:11", + "to": "01:00", + "minutes": 109 + }, + { + "from": "01:00", + "to": "02:13", + "minutes": 73 + } + ], + "longest_focus_minutes": 141 + }, + "top_dirs": [ + { + "path": "apps/manacore/apps/web", + "pct": 23 + }, + { + "path": "apps/calendar/apps/web", + "pct": 9 + }, + { + "path": "apps/clock/apps/web", + "pct": 9 + }, + { + "path": "apps/todo/apps/web", + "pct": 8 + }, + { + "path": "services/mana-core-auth/src", + "pct": 7 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 40 + }, + { + "ext": "", + "count": 29 + }, + { + "ext": ".yml", + "count": 17 + }, + { + "ext": ".md", + "count": 13 + }, + { + "ext": ".json", + "count": 9 + }, + { + "ext": ".svelte", + "count": 7 + } + ], + "tags": ["ci", "web", "staging", "todo-web", "docker"], + "commits_list": [ + { + "hash": "8de629d", + "short": "🚀 ci: add dev branch workflow with PR validation", + "type": null, + "scope": null, + "additions": 80, + "deletions": 13, + "timestamp": "2025-12-08T12:53:42+01:00" + }, + { + "hash": "e423785", + "short": "🔧 ci: remove auto-deploy, keep manual/tag-based only", + "type": null, + "scope": null, + "additions": 6, + "deletions": 21, + "timestamp": "2025-12-08T12:56:06+01:00" + }, + { + "hash": "67a15cc", + "short": "🧑‍💻 dx: add automatic database setup and dev:*:full commands", + "type": null, + "scope": null, + "additions": 515, + "deletions": 18, + "timestamp": "2025-12-08T14:38:18+01:00" + }, + { + "hash": "541e227", + "short": "🙈 chore: ignore claude-flow metrics from git tracking", + "type": null, + "scope": null, + "additions": 1, + "deletions": 662, + "timestamp": "2025-12-08T14:38:41+01:00" + }, + { + "hash": "60756f7", + "short": "small linting fixes", + "type": null, + "scope": null, + "additions": 5, + "deletions": 7, + "timestamp": "2025-12-08T14:44:17+01:00" + }, + { + "hash": "bb4e12c", + "short": "🐛 fix: resolve auth issues in Manacore, Calendar, and Clock apps", + "type": null, + "scope": null, + "additions": 35, + "deletions": 69, + "timestamp": "2025-12-08T15:51:57+01:00" + }, + { + "hash": "5e0b5a8", + "short": "🚀 ci: add Docker deployment for Manacore, Todo, Calendar, and Clock apps", + "type": null, + "scope": null, + "additions": 898, + "deletions": 0, + "timestamp": "2025-12-08T16:04:50+01:00" + }, + { + "hash": "63a5674", + "short": "🐛 fix: add build args for SvelteKit env vars in web Dockerfiles", + "type": null, + "scope": null, + "additions": 38, + "deletions": 0, + "timestamp": "2025-12-08T16:15:42+01:00" + }, + { + "hash": "f0d57c1", + "short": "🐛 fix: switch web apps to adapter-node for Docker builds", + "type": null, + "scope": null, + "additions": 482, + "deletions": 287, + "timestamp": "2025-12-08T16:30:04+01:00" + }, + { + "hash": "48c5cb4", + "short": "🐛 fix: add MIDDLEWARE_URL to manacore-web Dockerfile", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2025-12-08T16:37:18+01:00" + }, + { + "hash": "ee091c4", + "short": "♻️ refactor: migrate manacore-web from Supabase to mana-core-auth", + "type": null, + "scope": null, + "additions": 350, + "deletions": 632, + "timestamp": "2025-12-08T17:04:35+01:00" + }, + { + "hash": "9746db1", + "short": "🚀 ci: add manacore, todo, calendar, clock to tagged deployment workflow", + "type": null, + "scope": null, + "additions": 35, + "deletions": 4, + "timestamp": "2025-12-08T17:35:11+01:00" + }, + { + "hash": "59ce92a", + "short": "🔧 fix: deployment workflow - lowercase image prefix, service names, and port fixes", + "type": null, + "scope": null, + "additions": 15, + "deletions": 7, + "timestamp": "2025-12-08T17:54:40+01:00" + }, + { + "hash": "73dfe57", + "short": "🔧 fix: add GHCR authentication for staging server", + "type": null, + "scope": null, + "additions": 6, + "deletions": 0, + "timestamp": "2025-12-08T18:13:17+01:00" + }, + { + "hash": "3485bf0", + "short": "fix(ci): use GITHUB_TOKEN for GHCR auth on staging server", + "type": "fix", + "scope": "ci", + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-08T18:16:11+01:00" + }, + { + "hash": "aa8cbb1", + "short": "fix(ci): correct health check path for backend deployments", + "type": "fix", + "scope": "ci", + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-08T18:41:45+01:00" + }, + { + "hash": "17c4932", + "short": "fix(todo-web): remove silent npm install failure in Dockerfile", + "type": "fix", + "scope": "todo-web", + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-08T18:58:31+01:00" + }, + { + "hash": "ef44c06", + "short": "fix(web): remove silent npm install failures in all web Dockerfiles", + "type": "fix", + "scope": "web", + "additions": 4, + "deletions": 4, + "timestamp": "2025-12-08T18:59:08+01:00" + }, + { + "hash": "75d9d18", + "short": "fix(web): copy node_modules from builder instead of npm install", + "type": "fix", + "scope": "web", + "additions": 10, + "deletions": 20, + "timestamp": "2025-12-08T19:24:52+01:00" + }, + { + "hash": "fd1c0ee", + "short": "fix(docker): preserve pnpm symlink structure in web Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 45, + "deletions": 15, + "timestamp": "2025-12-08T19:38:49+01:00" + }, + { + "hash": "828b6d7", + "short": "docs: add pnpm Docker symlinks troubleshooting guide", + "type": null, + "scope": null, + "additions": 129, + "deletions": 0, + "timestamp": "2025-12-08T19:51:14+01:00" + }, + { + "hash": "3d717eb", + "short": "fix(web): add runtime env injection for auth URLs in todo, calendar, clock", + "type": "fix", + "scope": "web", + "additions": 176, + "deletions": 19, + "timestamp": "2025-12-08T20:49:39+01:00" + }, + { + "hash": "7f7b8b6", + "short": "docs: add SvelteKit runtime env injection guidelines and troubleshooting", + "type": null, + "scope": null, + "additions": 222, + "deletions": 3, + "timestamp": "2025-12-08T20:54:13+01:00" + }, + { + "hash": "c96820d", + "short": "fix(ci): pass version tags to docker-compose via .env file", + "type": "fix", + "scope": "ci", + "additions": 39, + "deletions": 2, + "timestamp": "2025-12-08T21:23:36+01:00" + }, + { + "hash": "e02e2b3", + "short": "fix(staging): add all web app origins to mana-core-auth CORS", + "type": "fix", + "scope": "staging", + "additions": 2, + "deletions": 2, + "timestamp": "2025-12-08T21:28:06+01:00" + }, + { + "hash": "7caeea4", + "short": "fix(manacore-web): add runtime env injection for auth URLs", + "type": "fix", + "scope": "manacore-web", + "additions": 39, + "deletions": 10, + "timestamp": "2025-12-08T21:47:02+01:00" + }, + { + "hash": "4398fbc", + "short": "fix(manacore-web,todo-web): use runtime URLs for backend API services", + "type": "fix", + "scope": "manacore-web,todo-web", + "additions": 123, + "deletions": 24, + "timestamp": "2025-12-08T22:03:12+01:00" + }, + { + "hash": "a50e4e5", + "short": "fix(staging): add manacore-web origin to backend CORS configs", + "type": "fix", + "scope": "staging", + "additions": 3, + "deletions": 3, + "timestamp": "2025-12-08T22:27:34+01:00" + }, + { + "hash": "66bc3e9", + "short": "docs: add staging deployment issues troubleshooting guide", + "type": null, + "scope": null, + "additions": 267, + "deletions": 0, + "timestamp": "2025-12-08T22:43:53+01:00" + }, + { + "hash": "6db8753", + "short": "debug(auth): add detailed logging to JwtAuthGuard", + "type": "debug", + "scope": "auth", + "additions": 10, + "deletions": 2, + "timestamp": "2025-12-08T22:52:59+01:00" + }, + { + "hash": "81a2970", + "short": "docs: add tag naming convention for mana-core-auth", + "type": null, + "scope": null, + "additions": 12, + "deletions": 0, + "timestamp": "2025-12-08T23:02:40+01:00" + }, + { + "hash": "d074e6d", + "short": "docs: comprehensive staging deployment troubleshooting guide", + "type": null, + "scope": null, + "additions": 132, + "deletions": 3, + "timestamp": "2025-12-08T23:11:01+01:00" + }, + { + "hash": "18a7b2d", + "short": "docs: add setup templates and checklists for recurring tasks", + "type": null, + "scope": null, + "additions": 450, + "deletions": 0, + "timestamp": "2025-12-09T01:00:02+01:00" + }, + { + "hash": "8af0172", + "short": "✨ feat(db): add production-safe migration system with advisory locks", + "type": null, + "scope": null, + "additions": 1139, + "deletions": 1689, + "timestamp": "2025-12-09T02:13:11+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-08/macher.md b/devlog/2025-12-08/macher.md new file mode 100644 index 000000000..8638831b9 --- /dev/null +++ b/devlog/2025-12-08/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-12-08 +day: 14 +view: macher +weekday: Montag +commits: 34 +review: written +--- + +# Montag, 2025-12-08 — Tag 14 (Macher-Sicht) + +## Stats + +34 Commits, +5273 / −3519 LoC, 90 Files. Top-Dirs: `apps/manacore/apps/web` (23%), `apps/calendar/apps/web` (9%), `apps/clock/apps/web` (9%), `apps/todo/apps/web` (8%), `services/mana-core-auth/src` (7%). Tags: ci, web, staging, todo-web, docker. Session 11:53 → 01:13 (~358 aktive Min, längster Fokus 141 Min). + +## Commits + +- `8de629d` 🚀 ci: add dev branch workflow with PR validation (+80/-13) +- `e423785` 🔧 ci: remove auto-deploy, keep manual/tag-based only (+6/-21) +- `67a15cc` 🧑‍💻 dx: add automatic database setup and dev:\*:full commands (+515/-18) +- `541e227` 🙈 chore: ignore claude-flow metrics from git tracking (+1/-662) +- `60756f7` small linting fixes (+5/-7) +- `bb4e12c` 🐛 fix: resolve auth issues in Manacore, Calendar, and Clock apps (+35/-69) +- `5e0b5a8` 🚀 ci: add Docker deployment for Manacore, Todo, Calendar, and Clock apps (+898/-0) +- `63a5674` 🐛 fix: add build args for SvelteKit env vars in web Dockerfiles (+38/-0) +- `f0d57c1` 🐛 fix: switch web apps to adapter-node for Docker builds (+482/-287) +- `48c5cb4` 🐛 fix: add MIDDLEWARE_URL to manacore-web Dockerfile (+2/-0) +- `ee091c4` ♻️ refactor: migrate manacore-web from Supabase to mana-core-auth (+350/-632) +- `9746db1` 🚀 ci: add manacore, todo, calendar, clock to tagged deployment workflow (+35/-4) +- `59ce92a` 🔧 fix: deployment workflow - lowercase image prefix, service names, and port fixes (+15/-7) +- `73dfe57` 🔧 fix: add GHCR authentication for staging server (+6/-0) +- `3485bf0` fix(ci): use GITHUB_TOKEN for GHCR auth on staging server (+1/-1) +- `aa8cbb1` fix(ci): correct health check path for backend deployments (+1/-1) +- `17c4932` fix(todo-web): remove silent npm install failure in Dockerfile (+1/-1) +- `ef44c06` fix(web): remove silent npm install failures in all web Dockerfiles (+4/-4) +- `75d9d18` fix(web): copy node_modules from builder instead of npm install (+10/-20) +- `fd1c0ee` fix(docker): preserve pnpm symlink structure in web Dockerfiles (+45/-15) + +_… plus 14 weitere Commits._ diff --git a/devlog/2025-12-08/spieler.md b/devlog/2025-12-08/spieler.md new file mode 100644 index 000000000..dc0313b49 --- /dev/null +++ b/devlog/2025-12-08/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-08 +day: 14 +view: spieler +weekday: Montag +commits: 34 +review: written +--- + +# Montag, 2025-12-08 — Tag 14 + +Großer Sprint-Tag mit Schwerpunkt **apps** (34 Commits). + +## Highlights + +- 🚀 ci: add dev branch workflow with PR validation +- 🔧 ci: remove auto-deploy, keep manual/tag-based only +- 🧑‍💻 dx: add automatic database setup and dev:\*:full commands +- 🙈 chore: ignore claude-flow metrics from git tracking +- small linting fixes diff --git a/devlog/2025-12-09/data.json b/devlog/2025-12-09/data.json new file mode 100644 index 000000000..80f0a0621 --- /dev/null +++ b/devlog/2025-12-09/data.json @@ -0,0 +1,580 @@ +{ + "date": "2025-12-09", + "day_number": 15, + "weekday": "Dienstag", + "commits": 51, + "authors": [ + { + "name": "Till-JS", + "count": 34 + }, + { + "name": "Wuesteon", + "count": 15 + }, + { + "name": "Nils Weiser", + "count": 2 + } + ], + "additions": 98123, + "deletions": 18954, + "net_lines": 79169, + "files_changed": 505, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-09T11:27:57.000Z", + "last_commit_at": "2025-12-10T02:35:28.000Z", + "total_span_minutes": 908, + "active_minutes": 323, + "pauses": [ + { + "from": "13:30", + "to": "14:04", + "minutes": 34 + }, + { + "from": "15:02", + "to": "15:52", + "minutes": 50 + }, + { + "from": "16:40", + "to": "17:45", + "minutes": 65 + }, + { + "from": "18:15", + "to": "19:41", + "minutes": 86 + }, + { + "from": "19:41", + "to": "20:24", + "minutes": 43 + }, + { + "from": "20:49", + "to": "01:56", + "minutes": 307 + } + ], + "longest_focus_minutes": 99 + }, + "top_dirs": [ + { + "path": "apps/contacts/apps/web", + "pct": 20 + }, + { + "path": "apps/todo/apps/web", + "pct": 9 + }, + { + "path": "packages/shared-ui/src", + "pct": 7 + }, + { + "path": "apps/contacts/apps/backend", + "pct": 7 + }, + { + "path": "apps/calendar/apps/web", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 312 + }, + { + "ext": ".ts", + "count": 302 + }, + { + "ext": ".md", + "count": 123 + }, + { + "ext": ".json", + "count": 51 + }, + { + "ext": ".tsx", + "count": 16 + }, + { + "ext": ".yml", + "count": 10 + } + ], + "tags": ["todo", "contacts", "shared-ui", "ui", "settings"], + "commits_list": [ + { + "hash": "241dc61", + "short": "Merge branch 'dev' of https://github.com/Memo-2023/manacore-monorepo into dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-09T12:27:57+01:00" + }, + { + "hash": "fb76cdc", + "short": "fix(settings): unify global settings across all web apps", + "type": "fix", + "scope": "settings", + "additions": 7, + "deletions": 357, + "timestamp": "2025-12-09T12:37:49+01:00" + }, + { + "hash": "eb98f89", + "short": "fix(settings): complete global settings unification for remaining apps", + "type": "fix", + "scope": "settings", + "additions": 9, + "deletions": 114, + "timestamp": "2025-12-09T12:45:10+01:00" + }, + { + "hash": "3703904", + "short": "feat(todo): redesign task input and items with glass-pill style", + "type": "feat", + "scope": "todo", + "additions": 812, + "deletions": 129, + "timestamp": "2025-12-09T13:00:29+01:00" + }, + { + "hash": "b148a72", + "short": "feat(referral): integrate referral system frontend", + "type": "feat", + "scope": "referral", + "additions": 492, + "deletions": 10, + "timestamp": "2025-12-09T13:01:43+01:00" + }, + { + "hash": "00dadc9", + "short": "docs(todo): add task metadata reference documentation", + "type": "docs", + "scope": "todo", + "additions": 250, + "deletions": 0, + "timestamp": "2025-12-09T13:04:39+01:00" + }, + { + "hash": "863dd62", + "short": "feat(todo): add comprehensive settings page with 20+ preferences", + "type": "feat", + "scope": "todo", + "additions": 1570, + "deletions": 2, + "timestamp": "2025-12-09T13:30:02+01:00" + }, + { + "hash": "3e35e6a", + "short": "feat(todo): add task edit modal and fix task loading", + "type": "feat", + "scope": "todo", + "additions": 1718, + "deletions": 25, + "timestamp": "2025-12-09T14:04:11+01:00" + }, + { + "hash": "0c2434b", + "short": "feat(todo): add task metadata fields and mana page", + "type": "feat", + "scope": "todo", + "additions": 131, + "deletions": 2, + "timestamp": "2025-12-09T14:29:56+01:00" + }, + { + "hash": "d45a9db", + "short": "feat(todo): add statistics page with visualizations", + "type": "feat", + "scope": "todo", + "additions": 2032, + "deletions": 329, + "timestamp": "2025-12-09T14:37:44+01:00" + }, + { + "hash": "1ac74c9", + "short": "feat(todo): add PWA support with offline capabilities", + "type": "feat", + "scope": "todo", + "additions": 1292, + "deletions": 2, + "timestamp": "2025-12-09T14:40:42+01:00" + }, + { + "hash": "c88626d", + "short": "feat(todo): add multiple kanban boards with task editing features", + "type": "feat", + "scope": "todo", + "additions": 2665, + "deletions": 397, + "timestamp": "2025-12-09T14:41:50+01:00" + }, + { + "hash": "a52e518", + "short": "Docs", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-09T14:48:53+01:00" + }, + { + "hash": "23c2d85", + "short": "📝 docs(cicd): add comprehensive deployment guide with CI/CD architecture", + "type": null, + "scope": null, + "additions": 619, + "deletions": 0, + "timestamp": "2025-12-09T15:02:44+01:00" + }, + { + "hash": "3808f29", + "short": "📝 docs: add audit documentation and metrics", + "type": null, + "scope": null, + "additions": 21899, + "deletions": 386, + "timestamp": "2025-12-09T15:52:29+01:00" + }, + { + "hash": "3cf0a43", + "short": "🚀 ci: add todo-backend and todo-web to CI/CD pipeline", + "type": null, + "scope": null, + "additions": 148, + "deletions": 1, + "timestamp": "2025-12-09T15:52:48+01:00" + }, + { + "hash": "582c6f5", + "short": "🐛 fix(ci): prevent container name conflict in staging deployment", + "type": null, + "scope": null, + "additions": 23, + "deletions": 6, + "timestamp": "2025-12-09T15:59:06+01:00" + }, + { + "hash": "4e63f3f", + "short": "fix(todo): use TEXT for user_id columns (Better Auth compatibility)", + "type": "fix", + "scope": "todo", + "additions": 87, + "deletions": 16, + "timestamp": "2025-12-09T16:24:22+01:00" + }, + { + "hash": "f440ca2", + "short": "fix(db): use TEXT for user_id columns across entire codebase", + "type": "fix", + "scope": "db", + "additions": 73, + "deletions": 53, + "timestamp": "2025-12-09T16:30:51+01:00" + }, + { + "hash": "79b4bb0", + "short": "feat(ci): add database migrations step to tagged staging deployments", + "type": "feat", + "scope": "ci", + "additions": 112, + "deletions": 3, + "timestamp": "2025-12-09T16:40:46+01:00" + }, + { + "hash": "dd40bb4", + "short": "feat(contacts): add duplicate detection, photo upload, and batch operations", + "type": "feat", + "scope": "contacts", + "additions": 5172, + "deletions": 617, + "timestamp": "2025-12-09T17:45:29+01:00" + }, + { + "hash": "09599c2", + "short": "refactor(shared-ui): convert SettingsSelect from CSS to Tailwind classes", + "type": "refactor", + "scope": "shared-ui", + "additions": 29, + "deletions": 150, + "timestamp": "2025-12-09T17:46:08+01:00" + }, + { + "hash": "76f573f", + "short": "refactor(shared-ui): convert settings components from scoped CSS to Tailwind", + "type": "refactor", + "scope": "shared-ui", + "additions": 119, + "deletions": 573, + "timestamp": "2025-12-09T17:49:07+01:00" + }, + { + "hash": "4e5d12a", + "short": "feat(contacts): add enhanced favorites page with multiple view modes", + "type": "feat", + "scope": "contacts", + "additions": 4125, + "deletions": 640, + "timestamp": "2025-12-09T18:00:55+01:00" + }, + { + "hash": "05dd9a0", + "short": "fix(contacts): remove groups store dependency from data page", + "type": "fix", + "scope": "contacts", + "additions": 6, + "deletions": 30, + "timestamp": "2025-12-09T18:07:56+01:00" + }, + { + "hash": "99c2824", + "short": "refactor(contacts): consolidate groups into tags feature", + "type": "refactor", + "scope": "contacts", + "additions": 116, + "deletions": 3024, + "timestamp": "2025-12-09T18:15:32+01:00" + }, + { + "hash": "b6158a8", + "short": "feat(ui): add comprehensive skeleton loaders for contacts and todo apps", + "type": "feat", + "scope": "ui", + "additions": 2303, + "deletions": 111, + "timestamp": "2025-12-09T19:41:19+01:00" + }, + { + "hash": "1dda437", + "short": "feat(help): add centralized help system with shared packages", + "type": "feat", + "scope": "help", + "additions": 5482, + "deletions": 0, + "timestamp": "2025-12-09T20:24:22+01:00" + }, + { + "hash": "2b3f92f", + "short": "feat(contacts): add interactive network graph visualization", + "type": "feat", + "scope": "contacts", + "additions": 2142, + "deletions": 4, + "timestamp": "2025-12-09T20:29:38+01:00" + }, + { + "hash": "a4846ae", + "short": "feat(shared-ui): add global CommandBar component with search across apps", + "type": "feat", + "scope": "shared-ui", + "additions": 899, + "deletions": 17, + "timestamp": "2025-12-09T20:35:58+01:00" + }, + { + "hash": "7987fe0", + "short": "feat(ui): add skeleton loaders for calendar and clock apps", + "type": "feat", + "scope": "ui", + "additions": 558, + "deletions": 102, + "timestamp": "2025-12-09T20:36:37+01:00" + }, + { + "hash": "fb7c788", + "short": "feat(ui): add Phosphor Icons to PillNavigation", + "type": "feat", + "scope": "ui", + "additions": 275, + "deletions": 148, + "timestamp": "2025-12-09T20:40:44+01:00" + }, + { + "hash": "5cf9f81", + "short": "feat(contacts): improve network page with contact detail sidebar", + "type": "feat", + "scope": "contacts", + "additions": 80, + "deletions": 384, + "timestamp": "2025-12-09T20:46:16+01:00" + }, + { + "hash": "25fd0c2", + "short": "feat(contacts): add archive link to settings page", + "type": "feat", + "scope": "contacts", + "additions": 18, + "deletions": 1, + "timestamp": "2025-12-09T20:47:56+01:00" + }, + { + "hash": "2e6f151", + "short": "feat(contacts): add SearchModal component and help content", + "type": "feat", + "scope": "contacts", + "additions": 689, + "deletions": 0, + "timestamp": "2025-12-09T20:49:56+01:00" + }, + { + "hash": "c61dcb8", + "short": "docs: remove all Coolify references from codebase", + "type": null, + "scope": null, + "additions": 175, + "deletions": 4740, + "timestamp": "2025-12-10T01:56:38+01:00" + }, + { + "hash": "6239cc7", + "short": "fix: use $env/dynamic/private for runtime env vars in SvelteKit hooks", + "type": null, + "scope": null, + "additions": 67, + "deletions": 71, + "timestamp": "2025-12-10T02:20:49+01:00" + }, + { + "hash": "3fa7b02", + "short": "feat: add email service and storage module + fix runtime env vars", + "type": null, + "scope": null, + "additions": 1222, + "deletions": 75, + "timestamp": "2025-12-10T02:22:34+01:00" + }, + { + "hash": "e84371a", + "short": "Merge pull request #13 from Memo-2023/n-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-10T02:31:03+01:00" + }, + { + "hash": "ee42b6c", + "short": "feat: major update with network graphs, themes, todo extensions, and more", + "type": null, + "scope": null, + "additions": 39260, + "deletions": 6251, + "timestamp": "2025-12-10T02:37:46+01:00" + }, + { + "hash": "d06df86", + "short": "docs: add Git workflow guide", + "type": null, + "scope": null, + "additions": 254, + "deletions": 0, + "timestamp": "2025-12-10T02:45:04+01:00" + }, + { + "hash": "9955939", + "short": "fix(docker): add shared-storage package to chat-backend Dockerfile", + "type": "fix", + "scope": "docker", + "additions": 4, + "deletions": 0, + "timestamp": "2025-12-10T02:46:57+01:00" + }, + { + "hash": "dae8c9d", + "short": "Merge pull request #14 from Memo-2023/till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-10T02:47:58+01:00" + }, + { + "hash": "a1524b4", + "short": "🐛 fix(docker): add shared-tags package to todo-web and calendar-web Dockerfiles", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2025-12-10T02:57:44+01:00" + }, + { + "hash": "c97a0d7", + "short": "🔥 fix(todo-web): remove dead i18n import from network page", + "type": null, + "scope": null, + "additions": 0, + "deletions": 1, + "timestamp": "2025-12-10T03:06:37+01:00" + }, + { + "hash": "a5fab21", + "short": "fix(staging): use HTTPS staging domains for all client URLs", + "type": "fix", + "scope": "staging", + "additions": 63, + "deletions": 18, + "timestamp": "2025-12-10T03:27:46+01:00" + }, + { + "hash": "dd0199c", + "short": "docs: add comprehensive staging environment setup guide", + "type": null, + "scope": null, + "additions": 441, + "deletions": 0, + "timestamp": "2025-12-10T03:35:28+01:00" + }, + { + "hash": "1169ef3", + "short": "docs: update git workflow - keep individual commits", + "type": null, + "scope": null, + "additions": 69, + "deletions": 82, + "timestamp": "2025-12-10T02:51:30+01:00" + }, + { + "hash": "40d2ea9", + "short": "docs(pr-reviews): add code review for PR #14", + "type": "docs", + "scope": "pr-reviews", + "additions": 272, + "deletions": 0, + "timestamp": "2025-12-10T02:52:55+01:00" + }, + { + "hash": "8f9e14c", + "short": "docs: update git workflow - keep individual commits", + "type": null, + "scope": null, + "additions": 69, + "deletions": 82, + "timestamp": "2025-12-10T02:51:30+01:00" + }, + { + "hash": "59324ca", + "short": "docs(pr-reviews): add code review for PR #14", + "type": "docs", + "scope": "pr-reviews", + "additions": 272, + "deletions": 0, + "timestamp": "2025-12-10T02:52:55+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-09/macher.md b/devlog/2025-12-09/macher.md new file mode 100644 index 000000000..c274ad7d8 --- /dev/null +++ b/devlog/2025-12-09/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-12-09 +day: 15 +view: macher +weekday: Dienstag +commits: 51 +review: written +--- + +# Dienstag, 2025-12-09 — Tag 15 (Macher-Sicht) + +## Stats + +51 Commits, +98123 / −18954 LoC, 505 Files. Top-Dirs: `apps/contacts/apps/web` (20%), `apps/todo/apps/web` (9%), `packages/shared-ui/src` (7%), `apps/contacts/apps/backend` (7%), `apps/calendar/apps/web` (5%). Tags: todo, contacts, shared-ui, ui, settings. Session 11:27 → 02:35 (~323 aktive Min, längster Fokus 99 Min). + +## Commits + +- `241dc61` Merge branch 'dev' of https://github.com/Memo-2023/manacore-monorepo into dev (+0/-0) +- `fb76cdc` fix(settings): unify global settings across all web apps (+7/-357) +- `eb98f89` fix(settings): complete global settings unification for remaining apps (+9/-114) +- `3703904` feat(todo): redesign task input and items with glass-pill style (+812/-129) +- `b148a72` feat(referral): integrate referral system frontend (+492/-10) +- `00dadc9` docs(todo): add task metadata reference documentation (+250/-0) +- `863dd62` feat(todo): add comprehensive settings page with 20+ preferences (+1570/-2) +- `3e35e6a` feat(todo): add task edit modal and fix task loading (+1718/-25) +- `0c2434b` feat(todo): add task metadata fields and mana page (+131/-2) +- `d45a9db` feat(todo): add statistics page with visualizations (+2032/-329) +- `1ac74c9` feat(todo): add PWA support with offline capabilities (+1292/-2) +- `c88626d` feat(todo): add multiple kanban boards with task editing features (+2665/-397) +- `a52e518` Docs (+1/-1) +- `23c2d85` 📝 docs(cicd): add comprehensive deployment guide with CI/CD architecture (+619/-0) +- `3808f29` 📝 docs: add audit documentation and metrics (+21899/-386) +- `3cf0a43` 🚀 ci: add todo-backend and todo-web to CI/CD pipeline (+148/-1) +- `582c6f5` 🐛 fix(ci): prevent container name conflict in staging deployment (+23/-6) +- `4e63f3f` fix(todo): use TEXT for user_id columns (Better Auth compatibility) (+87/-16) +- `f440ca2` fix(db): use TEXT for user_id columns across entire codebase (+73/-53) +- `79b4bb0` feat(ci): add database migrations step to tagged staging deployments (+112/-3) + +_… plus 31 weitere Commits._ diff --git a/devlog/2025-12-09/spieler.md b/devlog/2025-12-09/spieler.md new file mode 100644 index 000000000..cfde94620 --- /dev/null +++ b/devlog/2025-12-09/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-09 +day: 15 +view: spieler +weekday: Dienstag +commits: 51 +review: written +--- + +# Dienstag, 2025-12-09 — Tag 15 + +Großer Sprint-Tag mit Schwerpunkt **apps** (51 Commits). + +## Highlights + +- unify global settings across all web apps +- complete global settings unification for remaining apps +- redesign task input and items with glass-pill style +- integrate referral system frontend +- add task metadata reference documentation diff --git a/devlog/2025-12-10/data.json b/devlog/2025-12-10/data.json new file mode 100644 index 000000000..7ef6c4545 --- /dev/null +++ b/devlog/2025-12-10/data.json @@ -0,0 +1,637 @@ +{ + "date": "2025-12-10", + "day_number": 16, + "weekday": "Mittwoch", + "commits": 59, + "authors": [ + { + "name": "Till-JS", + "count": 51 + }, + { + "name": "Wuesteon", + "count": 7 + }, + { + "name": "Nils Weiser", + "count": 1 + } + ], + "additions": 28423, + "deletions": 7033, + "net_lines": 21390, + "files_changed": 168, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-10T12:48:45.000Z", + "last_commit_at": "2025-12-10T21:00:53.000Z", + "total_span_minutes": 492, + "active_minutes": 235, + "pauses": [ + { + "from": "15:21", + "to": "15:53", + "minutes": 32 + }, + { + "from": "16:02", + "to": "18:56", + "minutes": 174 + }, + { + "from": "19:11", + "to": "20:02", + "minutes": 51 + } + ], + "longest_focus_minutes": 118 + }, + "top_dirs": [ + { + "path": "apps/calendar/apps/web", + "pct": 26 + }, + { + "path": "apps/todo/apps/web", + "pct": 26 + }, + { + "path": "packages/shared-ui/src", + "pct": 16 + }, + { + "path": "apps/todo/apps/backend", + "pct": 8 + }, + { + "path": "apps/contacts/apps/web", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 200 + }, + { + "ext": ".ts", + "count": 136 + }, + { + "ext": ".json", + "count": 15 + }, + { + "ext": ".yaml", + "count": 10 + }, + { + "ext": ".md", + "count": 4 + }, + { + "ext": ".js", + "count": 4 + } + ], + "tags": ["todo", "calendar", "shared-ui", "todo-backend", "todo-web"], + "commits_list": [ + { + "hash": "422fcd6", + "short": "chore(ci): add staging config protection and validation", + "type": "chore", + "scope": "ci", + "additions": 193, + "deletions": 0, + "timestamp": "2025-12-10T13:48:45+01:00" + }, + { + "hash": "937e3c0", + "short": "fix(todo-backend): implement recurrence handling and fix N+1 query", + "type": "fix", + "scope": "todo-backend", + "additions": 1285, + "deletions": 397, + "timestamp": "2025-12-10T14:11:17+01:00" + }, + { + "hash": "306c74e", + "short": "feat(todo): add quick task creation via CommandBar", + "type": "feat", + "scope": "todo", + "additions": 460, + "deletions": 25, + "timestamp": "2025-12-10T14:15:12+01:00" + }, + { + "hash": "8b9337a", + "short": "refactor(todo-web): extract reusable form components from TaskEditModal", + "type": "refactor", + "scope": "todo-web", + "additions": 794, + "deletions": 636, + "timestamp": "2025-12-10T14:18:26+01:00" + }, + { + "hash": "4197b61", + "short": "fix(todo): add input validation, N+1 fix, and RRULE bounds checking", + "type": "fix", + "scope": "todo", + "additions": 130, + "deletions": 16, + "timestamp": "2025-12-10T14:25:24+01:00" + }, + { + "hash": "68c7bfb", + "short": "feat: add unified CommandBar Quick-Create for Calendar and Contacts", + "type": null, + "scope": null, + "additions": 1415, + "deletions": 660, + "timestamp": "2025-12-10T14:37:01+01:00" + }, + { + "hash": "56269a5", + "short": "feat(todo): add deep validation for DTOs and completed task pagination", + "type": "feat", + "scope": "todo", + "additions": 219, + "deletions": 35, + "timestamp": "2025-12-10T14:38:11+01:00" + }, + { + "hash": "7591fc0", + "short": "style(shared-ui): refactor CommandBar to use theme CSS variables", + "type": "style", + "scope": "shared-ui", + "additions": 45, + "deletions": 45, + "timestamp": "2025-12-10T14:40:20+01:00" + }, + { + "hash": "a0306ba", + "short": "refactor(todo): rename priority labels for better natural language input", + "type": "refactor", + "scope": "todo", + "additions": 346, + "deletions": 190, + "timestamp": "2025-12-10T14:52:11+01:00" + }, + { + "hash": "04b255c", + "short": "feat(shared-ui): add unified statistics components with theme support", + "type": "feat", + "scope": "shared-ui", + "additions": 2611, + "deletions": 0, + "timestamp": "2025-12-10T14:52:29+01:00" + }, + { + "hash": "9691659", + "short": "fix(todo): allow priority keywords without ! prefix", + "type": "fix", + "scope": "todo", + "additions": 5, + "deletions": 5, + "timestamp": "2025-12-10T14:57:37+01:00" + }, + { + "hash": "d9626a9", + "short": "feat(shared-ui): add syntax highlighting to CommandBar input", + "type": "feat", + "scope": "shared-ui", + "additions": 113, + "deletions": 11, + "timestamp": "2025-12-10T15:01:57+01:00" + }, + { + "hash": "aa117c5", + "short": "feat(command-bar): match priority highlight colors to UI", + "type": "feat", + "scope": "command-bar", + "additions": 551, + "deletions": 92, + "timestamp": "2025-12-10T15:06:22+01:00" + }, + { + "hash": "6b30a91", + "short": "fix(todo): improve drag-and-drop reliability with ID-based sync", + "type": "fix", + "scope": "todo", + "additions": 16, + "deletions": 7, + "timestamp": "2025-12-10T15:09:10+01:00" + }, + { + "hash": "9f13bba", + "short": "refactor(todo): rename Labels to Tags for consistency across apps", + "type": "refactor", + "scope": "todo", + "additions": 1963, + "deletions": 382, + "timestamp": "2025-12-10T15:21:33+01:00" + }, + { + "hash": "aa778bc", + "short": "feat(calendar): integrate todo tasks into calendar views", + "type": "feat", + "scope": "calendar", + "additions": 640, + "deletions": 0, + "timestamp": "2025-12-10T15:53:56+01:00" + }, + { + "hash": "3fc89f5", + "short": "feat(calendar): add tasks page for todo management", + "type": "feat", + "scope": "calendar", + "additions": 1113, + "deletions": 0, + "timestamp": "2025-12-10T15:55:18+01:00" + }, + { + "hash": "c6b5c2e", + "short": "feat(calendar): add agenda view components", + "type": "feat", + "scope": "calendar", + "additions": 368, + "deletions": 0, + "timestamp": "2025-12-10T15:55:48+01:00" + }, + { + "hash": "a4c986f", + "short": "feat(shared-ui): improve nav visibility settings with icons", + "type": "feat", + "scope": "shared-ui", + "additions": 130, + "deletions": 17, + "timestamp": "2025-12-10T15:59:08+01:00" + }, + { + "hash": "adb6d06", + "short": "feat(todo): add inline tag creation with color palette", + "type": "feat", + "scope": "todo", + "additions": 216, + "deletions": 53, + "timestamp": "2025-12-10T15:59:34+01:00" + }, + { + "hash": "108e69d", + "short": "feat(todo): configure nav items for visibility settings", + "type": "feat", + "scope": "todo", + "additions": 14, + "deletions": 1, + "timestamp": "2025-12-10T16:00:04+01:00" + }, + { + "hash": "2123145", + "short": "chore(calendar): add lucide-svelte and update dependencies", + "type": "chore", + "scope": "calendar", + "additions": 222, + "deletions": 329, + "timestamp": "2025-12-10T16:00:31+01:00" + }, + { + "hash": "f04300d", + "short": "Merge branch 'till-dev' into till-dev-backup", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-10T16:02:35+01:00" + }, + { + "hash": "114c2e9", + "short": "feat(calendar): auto-create default calendar for new users", + "type": "feat", + "scope": "calendar", + "additions": 304, + "deletions": 101, + "timestamp": "2025-12-10T18:56:26+01:00" + }, + { + "hash": "4dc4a4e", + "short": "refactor(calendar): improve code quality with quick wins", + "type": "refactor", + "scope": "calendar", + "additions": 903, + "deletions": 223, + "timestamp": "2025-12-10T19:05:56+01:00" + }, + { + "hash": "ebb7559", + "short": "fix(calendar): ensure i18n locale is loaded before rendering", + "type": "fix", + "scope": "calendar", + "additions": 12, + "deletions": 1, + "timestamp": "2025-12-10T19:11:14+01:00" + }, + { + "hash": "b92dc29", + "short": "refactor(calendar): improve type safety and add optimistic delete", + "type": "refactor", + "scope": "calendar", + "additions": 117, + "deletions": 32, + "timestamp": "2025-12-10T20:02:40+01:00" + }, + { + "hash": "0b28eba", + "short": "chore: various UI improvements and fixes", + "type": null, + "scope": null, + "additions": 167, + "deletions": 198, + "timestamp": "2025-12-10T20:05:02+01:00" + }, + { + "hash": "812a6f5", + "short": "fix(todo): resolve type errors and update component props", + "type": "fix", + "scope": "todo", + "additions": 69, + "deletions": 40, + "timestamp": "2025-12-10T20:16:17+01:00" + }, + { + "hash": "1040b54", + "short": "fix(calendar): fix Todo integration and show all tasks in sidebar", + "type": "fix", + "scope": "calendar", + "additions": 90, + "deletions": 81, + "timestamp": "2025-12-10T20:34:25+01:00" + }, + { + "hash": "a86b907", + "short": "fix(shared-ui): fix reactivity in NavVisibilitySettings", + "type": "fix", + "scope": "shared-ui", + "additions": 3, + "deletions": 5, + "timestamp": "2025-12-10T20:43:14+01:00" + }, + { + "hash": "6f74e1d", + "short": "✨ feat(chat,picture): add OpenRouter integration and credit system", + "type": null, + "scope": null, + "additions": 877, + "deletions": 467, + "timestamp": "2025-12-10T20:46:33+01:00" + }, + { + "hash": "39b04e4", + "short": "🐛 fix(auth): enable automatic token refresh across all web apps", + "type": null, + "scope": null, + "additions": 209, + "deletions": 33, + "timestamp": "2025-12-10T20:52:29+01:00" + }, + { + "hash": "d8f1bbb", + "short": "fix(todo-backend): implement recurrence handling and fix N+1 query", + "type": "fix", + "scope": "todo-backend", + "additions": 1078, + "deletions": 203, + "timestamp": "2025-12-10T14:11:17+01:00" + }, + { + "hash": "89a2b3d", + "short": "feat(todo): add quick task creation via CommandBar", + "type": "feat", + "scope": "todo", + "additions": 460, + "deletions": 25, + "timestamp": "2025-12-10T14:15:12+01:00" + }, + { + "hash": "828dbcc", + "short": "refactor(todo-web): extract reusable form components from TaskEditModal", + "type": "refactor", + "scope": "todo-web", + "additions": 794, + "deletions": 636, + "timestamp": "2025-12-10T14:18:26+01:00" + }, + { + "hash": "c6b48d8", + "short": "fix(todo): add input validation, N+1 fix, and RRULE bounds checking", + "type": "fix", + "scope": "todo", + "additions": 130, + "deletions": 16, + "timestamp": "2025-12-10T14:25:24+01:00" + }, + { + "hash": "b1877c4", + "short": "feat: add unified CommandBar Quick-Create for Calendar and Contacts", + "type": null, + "scope": null, + "additions": 1415, + "deletions": 660, + "timestamp": "2025-12-10T14:37:01+01:00" + }, + { + "hash": "74604b0", + "short": "feat(todo): add deep validation for DTOs and completed task pagination", + "type": "feat", + "scope": "todo", + "additions": 219, + "deletions": 35, + "timestamp": "2025-12-10T14:38:11+01:00" + }, + { + "hash": "6aa8554", + "short": "style(shared-ui): refactor CommandBar to use theme CSS variables", + "type": "style", + "scope": "shared-ui", + "additions": 45, + "deletions": 45, + "timestamp": "2025-12-10T14:40:20+01:00" + }, + { + "hash": "330b990", + "short": "refactor(todo): rename priority labels for better natural language input", + "type": "refactor", + "scope": "todo", + "additions": 346, + "deletions": 190, + "timestamp": "2025-12-10T14:52:11+01:00" + }, + { + "hash": "09e44a2", + "short": "feat(shared-ui): add unified statistics components with theme support", + "type": "feat", + "scope": "shared-ui", + "additions": 2611, + "deletions": 0, + "timestamp": "2025-12-10T14:52:29+01:00" + }, + { + "hash": "993b8c1", + "short": "fix(todo): allow priority keywords without ! prefix", + "type": "fix", + "scope": "todo", + "additions": 5, + "deletions": 5, + "timestamp": "2025-12-10T14:57:37+01:00" + }, + { + "hash": "d98efc4", + "short": "feat(shared-ui): add syntax highlighting to CommandBar input", + "type": "feat", + "scope": "shared-ui", + "additions": 113, + "deletions": 11, + "timestamp": "2025-12-10T15:01:57+01:00" + }, + { + "hash": "aeb6a15", + "short": "feat(command-bar): match priority highlight colors to UI", + "type": "feat", + "scope": "command-bar", + "additions": 551, + "deletions": 92, + "timestamp": "2025-12-10T15:06:22+01:00" + }, + { + "hash": "75bf7ec", + "short": "fix(todo): improve drag-and-drop reliability with ID-based sync", + "type": "fix", + "scope": "todo", + "additions": 16, + "deletions": 7, + "timestamp": "2025-12-10T15:09:10+01:00" + }, + { + "hash": "a898160", + "short": "refactor(todo): rename Labels to Tags for consistency across apps", + "type": "refactor", + "scope": "todo", + "additions": 1963, + "deletions": 382, + "timestamp": "2025-12-10T15:21:33+01:00" + }, + { + "hash": "f3c567f", + "short": "feat(calendar): integrate todo tasks into calendar views", + "type": "feat", + "scope": "calendar", + "additions": 640, + "deletions": 0, + "timestamp": "2025-12-10T15:53:56+01:00" + }, + { + "hash": "cd569ef", + "short": "feat(calendar): add tasks page for todo management", + "type": "feat", + "scope": "calendar", + "additions": 1113, + "deletions": 0, + "timestamp": "2025-12-10T15:55:18+01:00" + }, + { + "hash": "931ee6b", + "short": "feat(calendar): add agenda view components", + "type": "feat", + "scope": "calendar", + "additions": 368, + "deletions": 0, + "timestamp": "2025-12-10T15:55:48+01:00" + }, + { + "hash": "064ab3d", + "short": "feat(shared-ui): improve nav visibility settings with icons", + "type": "feat", + "scope": "shared-ui", + "additions": 130, + "deletions": 17, + "timestamp": "2025-12-10T15:59:08+01:00" + }, + { + "hash": "6c2d603", + "short": "feat(todo): add inline tag creation with color palette", + "type": "feat", + "scope": "todo", + "additions": 216, + "deletions": 53, + "timestamp": "2025-12-10T15:59:34+01:00" + }, + { + "hash": "6bc3c09", + "short": "feat(todo): configure nav items for visibility settings", + "type": "feat", + "scope": "todo", + "additions": 14, + "deletions": 1, + "timestamp": "2025-12-10T16:00:04+01:00" + }, + { + "hash": "e586820", + "short": "chore(calendar): add lucide-svelte and update dependencies", + "type": "chore", + "scope": "calendar", + "additions": 222, + "deletions": 329, + "timestamp": "2025-12-10T16:00:31+01:00" + }, + { + "hash": "78b5e6d", + "short": "chore: update pnpm-lock.yaml after rebase", + "type": null, + "scope": null, + "additions": 329, + "deletions": 209, + "timestamp": "2025-12-10T21:13:15+01:00" + }, + { + "hash": "2effac4", + "short": "fix: add type-check script to @mana-core/nestjs-integration", + "type": null, + "scope": null, + "additions": 2, + "deletions": 1, + "timestamp": "2025-12-10T21:25:10+01:00" + }, + { + "hash": "307f1ae", + "short": "fix: add ^build dependency to type-check task", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-10T21:34:07+01:00" + }, + { + "hash": "15a29aa", + "short": "Merge pull request #15 from Memo-2023/till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-10T21:42:38+01:00" + }, + { + "hash": "a069670", + "short": "fix(calendar): resolve a11y errors in calendar views", + "type": "fix", + "scope": "calendar", + "additions": 42, + "deletions": 33, + "timestamp": "2025-12-10T22:00:53+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-10/macher.md b/devlog/2025-12-10/macher.md new file mode 100644 index 000000000..80fd4ea0e --- /dev/null +++ b/devlog/2025-12-10/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-12-10 +day: 16 +view: macher +weekday: Mittwoch +commits: 59 +review: written +--- + +# Mittwoch, 2025-12-10 — Tag 16 (Macher-Sicht) + +## Stats + +59 Commits, +28423 / −7033 LoC, 168 Files. Top-Dirs: `apps/calendar/apps/web` (26%), `apps/todo/apps/web` (26%), `packages/shared-ui/src` (16%), `apps/todo/apps/backend` (8%), `apps/contacts/apps/web` (3%). Tags: todo, calendar, shared-ui, todo-backend, todo-web. Session 12:48 → 21:00 (~235 aktive Min, längster Fokus 118 Min). + +## Commits + +- `422fcd6` chore(ci): add staging config protection and validation (+193/-0) +- `937e3c0` fix(todo-backend): implement recurrence handling and fix N+1 query (+1285/-397) +- `306c74e` feat(todo): add quick task creation via CommandBar (+460/-25) +- `8b9337a` refactor(todo-web): extract reusable form components from TaskEditModal (+794/-636) +- `4197b61` fix(todo): add input validation, N+1 fix, and RRULE bounds checking (+130/-16) +- `68c7bfb` feat: add unified CommandBar Quick-Create for Calendar and Contacts (+1415/-660) +- `56269a5` feat(todo): add deep validation for DTOs and completed task pagination (+219/-35) +- `7591fc0` style(shared-ui): refactor CommandBar to use theme CSS variables (+45/-45) +- `a0306ba` refactor(todo): rename priority labels for better natural language input (+346/-190) +- `04b255c` feat(shared-ui): add unified statistics components with theme support (+2611/-0) +- `9691659` fix(todo): allow priority keywords without ! prefix (+5/-5) +- `d9626a9` feat(shared-ui): add syntax highlighting to CommandBar input (+113/-11) +- `aa117c5` feat(command-bar): match priority highlight colors to UI (+551/-92) +- `6b30a91` fix(todo): improve drag-and-drop reliability with ID-based sync (+16/-7) +- `9f13bba` refactor(todo): rename Labels to Tags for consistency across apps (+1963/-382) +- `aa778bc` feat(calendar): integrate todo tasks into calendar views (+640/-0) +- `3fc89f5` feat(calendar): add tasks page for todo management (+1113/-0) +- `c6b5c2e` feat(calendar): add agenda view components (+368/-0) +- `a4c986f` feat(shared-ui): improve nav visibility settings with icons (+130/-17) +- `adb6d06` feat(todo): add inline tag creation with color palette (+216/-53) + +_… plus 39 weitere Commits._ diff --git a/devlog/2025-12-10/spieler.md b/devlog/2025-12-10/spieler.md new file mode 100644 index 000000000..97e15893f --- /dev/null +++ b/devlog/2025-12-10/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-10 +day: 16 +view: spieler +weekday: Mittwoch +commits: 59 +review: written +--- + +# Mittwoch, 2025-12-10 — Tag 16 + +Großer Sprint-Tag mit Schwerpunkt **apps** (59 Commits). + +## Highlights + +- implement recurrence handling and fix N+1 query +- add quick task creation via CommandBar +- add input validation, N+1 fix, and RRULE bounds checking +- add unified CommandBar Quick-Create for Calendar and Contacts +- add deep validation for DTOs and completed task pagination diff --git a/devlog/2025-12-11/data.json b/devlog/2025-12-11/data.json new file mode 100644 index 000000000..894ad68b8 --- /dev/null +++ b/devlog/2025-12-11/data.json @@ -0,0 +1,251 @@ +{ + "date": "2025-12-11", + "day_number": 17, + "weekday": "Donnerstag", + "commits": 16, + "authors": [ + { + "name": "Till-JS", + "count": 15 + }, + { + "name": "Wuesteon", + "count": 1 + } + ], + "additions": 18555, + "deletions": 6771, + "net_lines": 11784, + "files_changed": 111, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-11T15:00:08.000Z", + "last_commit_at": "2025-12-12T02:51:53.000Z", + "total_span_minutes": 712, + "active_minutes": 65, + "pauses": [ + { + "from": "16:12", + "to": "18:48", + "minutes": 156 + }, + { + "from": "18:48", + "to": "23:49", + "minutes": 301 + }, + { + "from": "23:49", + "to": "02:17", + "minutes": 148 + }, + { + "from": "03:05", + "to": "03:48", + "minutes": 42 + } + ], + "longest_focus_minutes": 49 + }, + "top_dirs": [ + { + "path": "apps/calendar/apps/web", + "pct": 30 + }, + { + "path": "packages/shared-ui/src", + "pct": 15 + }, + { + "path": "apps/contacts/apps/web", + "pct": 12 + }, + { + "path": "apps/todo/apps/web", + "pct": 9 + }, + { + "path": "services/mana-core-auth/src", + "pct": 6 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 81 + }, + { + "ext": ".ts", + "count": 66 + }, + { + "ext": ".json", + "count": 19 + }, + { + "ext": ".md", + "count": 4 + }, + { + "ext": ".css", + "count": 3 + }, + { + "ext": ".yaml", + "count": 2 + } + ], + "tags": ["calendar", "contacts", "shared-ui", "settings", "theme"], + "commits_list": [ + { + "hash": "309faba", + "short": "feat(contacts): integrate contacts into Todo and Calendar apps", + "type": "feat", + "scope": "contacts", + "additions": 6014, + "deletions": 252, + "timestamp": "2025-12-11T16:00:08+01:00" + }, + { + "hash": "876d81f", + "short": "Merge branch 'till-dev' into till-dev-backup", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-11T16:12:26+01:00" + }, + { + "hash": "0ecbf69", + "short": "feat(contacts): integrate contacts into Todo and Calendar apps", + "type": "feat", + "scope": "contacts", + "additions": 5791, + "deletions": 53, + "timestamp": "2025-12-11T16:00:08+01:00" + }, + { + "hash": "5921cfd", + "short": "Merge branch 'till-dev-backup' into till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-11T18:48:28+01:00" + }, + { + "hash": "c6f8b9f", + "short": "feat(settings): add device-specific settings storage", + "type": "feat", + "scope": "settings", + "additions": 857, + "deletions": 410, + "timestamp": "2025-12-11T23:49:18+01:00" + }, + { + "hash": "0f10a38", + "short": "feat(shared-ui): add QuickInputBar and PillToolbar components", + "type": "feat", + "scope": "shared-ui", + "additions": 3697, + "deletions": 121, + "timestamp": "2025-12-12T02:17:17+01:00" + }, + { + "hash": "db701fd", + "short": "fix(calendar): improve DateStrip today and range highlighting", + "type": "fix", + "scope": "calendar", + "additions": 51, + "deletions": 108, + "timestamp": "2025-12-12T02:26:54+01:00" + }, + { + "hash": "12ba2cf", + "short": "refactor(theme): remove custom theme editor and community themes", + "type": "refactor", + "scope": "theme", + "additions": 44, + "deletions": 3395, + "timestamp": "2025-12-12T02:34:43+01:00" + }, + { + "hash": "e473a02", + "short": "refactor(auth): remove themes module from mana-core-auth", + "type": "refactor", + "scope": "auth", + "additions": 0, + "deletions": 1188, + "timestamp": "2025-12-12T02:35:18+01:00" + }, + { + "hash": "21f2b28", + "short": "fix(shared-ui): improve PillNavigation and PillDropdown components", + "type": "fix", + "scope": "shared-ui", + "additions": 44, + "deletions": 10, + "timestamp": "2025-12-12T02:37:18+01:00" + }, + { + "hash": "b42db50", + "short": "feat(calendar): improve calendar UI with new components", + "type": "feat", + "scope": "calendar", + "additions": 495, + "deletions": 510, + "timestamp": "2025-12-12T02:37:43+01:00" + }, + { + "hash": "5cd550c", + "short": "fix(contacts): improve ContactList and FilterBar styling", + "type": "fix", + "scope": "contacts", + "additions": 391, + "deletions": 310, + "timestamp": "2025-12-12T02:40:44+01:00" + }, + { + "hash": "7d03a52", + "short": "fix: misc UI improvements across todo and shared-tailwind", + "type": null, + "scope": null, + "additions": 494, + "deletions": 346, + "timestamp": "2025-12-12T02:42:25+01:00" + }, + { + "hash": "74e2dab", + "short": "feat(calendar): add moon phases to DateStrip component", + "type": "feat", + "scope": "calendar", + "additions": 90, + "deletions": 62, + "timestamp": "2025-12-12T03:05:53+01:00" + }, + { + "hash": "c6677a8", + "short": "docs(architecture): add Workspace Orchestrator architecture decision", + "type": "docs", + "scope": "architecture", + "additions": 507, + "deletions": 0, + "timestamp": "2025-12-12T03:48:11+01:00" + }, + { + "hash": "7ff8213", + "short": "feat(calendar): add default calendars and event indicators", + "type": "feat", + "scope": "calendar", + "additions": 80, + "deletions": 6, + "timestamp": "2025-12-12T03:51:53+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-11/macher.md b/devlog/2025-12-11/macher.md new file mode 100644 index 000000000..0ec0ff0a8 --- /dev/null +++ b/devlog/2025-12-11/macher.md @@ -0,0 +1,33 @@ +--- +date: 2025-12-11 +day: 17 +view: macher +weekday: Donnerstag +commits: 16 +review: written +--- + +# Donnerstag, 2025-12-11 — Tag 17 (Macher-Sicht) + +## Stats + +16 Commits, +18555 / −6771 LoC, 111 Files. Top-Dirs: `apps/calendar/apps/web` (30%), `packages/shared-ui/src` (15%), `apps/contacts/apps/web` (12%), `apps/todo/apps/web` (9%), `services/mana-core-auth/src` (6%). Tags: calendar, contacts, shared-ui, settings, theme. Session 15:00 → 02:51 (~65 aktive Min, längster Fokus 49 Min). + +## Commits + +- `309faba` feat(contacts): integrate contacts into Todo and Calendar apps (+6014/-252) +- `876d81f` Merge branch 'till-dev' into till-dev-backup (+0/-0) +- `0ecbf69` feat(contacts): integrate contacts into Todo and Calendar apps (+5791/-53) +- `5921cfd` Merge branch 'till-dev-backup' into till-dev (+0/-0) +- `c6f8b9f` feat(settings): add device-specific settings storage (+857/-410) +- `0f10a38` feat(shared-ui): add QuickInputBar and PillToolbar components (+3697/-121) +- `db701fd` fix(calendar): improve DateStrip today and range highlighting (+51/-108) +- `12ba2cf` refactor(theme): remove custom theme editor and community themes (+44/-3395) +- `e473a02` refactor(auth): remove themes module from mana-core-auth (+0/-1188) +- `21f2b28` fix(shared-ui): improve PillNavigation and PillDropdown components (+44/-10) +- `b42db50` feat(calendar): improve calendar UI with new components (+495/-510) +- `5cd550c` fix(contacts): improve ContactList and FilterBar styling (+391/-310) +- `7d03a52` fix: misc UI improvements across todo and shared-tailwind (+494/-346) +- `74e2dab` feat(calendar): add moon phases to DateStrip component (+90/-62) +- `c6677a8` docs(architecture): add Workspace Orchestrator architecture decision (+507/-0) +- `7ff8213` feat(calendar): add default calendars and event indicators (+80/-6) diff --git a/devlog/2025-12-11/spieler.md b/devlog/2025-12-11/spieler.md new file mode 100644 index 000000000..0c14ad1e0 --- /dev/null +++ b/devlog/2025-12-11/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-11 +day: 17 +view: spieler +weekday: Donnerstag +commits: 16 +review: written +--- + +# Donnerstag, 2025-12-11 — Tag 17 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- integrate contacts into Todo and Calendar apps +- integrate contacts into Todo and Calendar apps +- add device-specific settings storage +- add QuickInputBar and PillToolbar components +- improve DateStrip today and range highlighting diff --git a/devlog/2025-12-12/data.json b/devlog/2025-12-12/data.json new file mode 100644 index 000000000..b0c114fc4 --- /dev/null +++ b/devlog/2025-12-12/data.json @@ -0,0 +1,287 @@ +{ + "date": "2025-12-12", + "day_number": 18, + "weekday": "Freitag", + "commits": 19, + "authors": [ + { + "name": "Till-JS", + "count": 12 + }, + { + "name": "Wuesteon", + "count": 5 + }, + { + "name": "Nils Weiser", + "count": 2 + } + ], + "additions": 5204, + "deletions": 3478, + "net_lines": 1726, + "files_changed": 70, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-12T10:57:55.000Z", + "last_commit_at": "2025-12-12T20:58:26.000Z", + "total_span_minutes": 601, + "active_minutes": 74, + "pauses": [ + { + "from": "12:15", + "to": "13:00", + "minutes": 45 + }, + { + "from": "13:25", + "to": "14:12", + "minutes": 47 + }, + { + "from": "14:12", + "to": "14:54", + "minutes": 42 + }, + { + "from": "14:54", + "to": "20:47", + "minutes": 354 + }, + { + "from": "20:56", + "to": "21:36", + "minutes": 39 + } + ], + "longest_focus_minutes": 25 + }, + "top_dirs": [ + { + "path": "apps/calendar/apps/web", + "pct": 42 + }, + { + "path": "packages/shared-splitscreen/src", + "pct": 15 + }, + { + "path": "packages/shared-ui/src", + "pct": 11 + }, + { + "path": "apps/chat/apps/backend", + "pct": 4 + }, + { + "path": "pnpm-lock.yaml", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 56 + }, + { + "ext": ".ts", + "count": 28 + }, + { + "ext": ".json", + "count": 6 + }, + { + "ext": ".md", + "count": 4 + }, + { + "ext": ".yaml", + "count": 3 + }, + { + "ext": ".svelte}", + "count": 1 + } + ], + "tags": ["calendar", "splitscreen", "shared-ui"], + "commits_list": [ + { + "hash": "51912a2", + "short": "feat(calendar): add search highlighting to calendar views", + "type": "feat", + "scope": "calendar", + "additions": 221, + "deletions": 18, + "timestamp": "2025-12-12T11:57:55+01:00" + }, + { + "hash": "8a75b34", + "short": "refactor(shared-ui): rename QuickInputBar to InputBar", + "type": "refactor", + "scope": "shared-ui", + "additions": 271, + "deletions": 560, + "timestamp": "2025-12-12T11:58:13+01:00" + }, + { + "hash": "f51708d", + "short": "fix(calendar): fix QuickEventOverlay z-index stacking issue", + "type": "fix", + "scope": "calendar", + "additions": 44, + "deletions": 20, + "timestamp": "2025-12-12T12:15:01+01:00" + }, + { + "hash": "f2ac3e2", + "short": "feat(splitscreen): add split-screen feature for multi-app side-by-side view", + "type": "feat", + "scope": "splitscreen", + "additions": 2773, + "deletions": 534, + "timestamp": "2025-12-12T13:00:26+01:00" + }, + { + "hash": "448cfb9", + "short": "fix(calendar): improve toolbar UX and fix build warnings", + "type": "fix", + "scope": "calendar", + "additions": 457, + "deletions": 157, + "timestamp": "2025-12-12T13:03:31+01:00" + }, + { + "hash": "287a62a", + "short": "fix(splitscreen): fix resize handle not working after first drag", + "type": "fix", + "scope": "splitscreen", + "additions": 42, + "deletions": 14, + "timestamp": "2025-12-12T13:12:41+01:00" + }, + { + "hash": "81f77c4", + "short": "feat(calendar): improve navigation layout controls and sidebar integration", + "type": "feat", + "scope": "calendar", + "additions": 261, + "deletions": 10, + "timestamp": "2025-12-12T13:13:45+01:00" + }, + { + "hash": "b349083", + "short": "fix(calendar): add shared-splitscreen to Dockerfile", + "type": "fix", + "scope": "calendar", + "additions": 1, + "deletions": 0, + "timestamp": "2025-12-12T13:25:42+01:00" + }, + { + "hash": "4357902", + "short": "Merge remote-tracking branch 'origin/dev' into till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-12T14:12:14+01:00" + }, + { + "hash": "b44e515", + "short": "Merge pull request #16 from Memo-2023/till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-12T14:54:12+01:00" + }, + { + "hash": "0fa154c", + "short": "🐛 fix(shared-auth): add automatic token refresh on 401 responses", + "type": null, + "scope": null, + "additions": 106, + "deletions": 18, + "timestamp": "2025-12-12T20:47:43+01:00" + }, + { + "hash": "3f9bc57", + "short": "♻️ refactor(chat): simplify chat service and update seed data", + "type": null, + "scope": null, + "additions": 76, + "deletions": 394, + "timestamp": "2025-12-12T20:48:10+01:00" + }, + { + "hash": "a9aeffa", + "short": "♻️ refactor(picture): simplify credit system to production-only", + "type": null, + "scope": null, + "additions": 36, + "deletions": 67, + "timestamp": "2025-12-12T20:49:38+01:00" + }, + { + "hash": "612f6a1", + "short": "🔧 chore: switch chat backend to OpenRouter API", + "type": null, + "scope": null, + "additions": 260, + "deletions": 1234, + "timestamp": "2025-12-12T20:50:03+01:00" + }, + { + "hash": "35ce678", + "short": "Merge pull request #17 from Memo-2023/chat-picture", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-12T20:56:59+01:00" + }, + { + "hash": "b7057ed", + "short": "feat(calendar): improve DateStrip today button and fix initial date display", + "type": "feat", + "scope": "calendar", + "additions": 56, + "deletions": 22, + "timestamp": "2025-12-12T21:36:19+01:00" + }, + { + "hash": "502ba0c", + "short": "♻️ refactor(calendar): integrate agenda as view type and improve DayView layout", + "type": null, + "scope": null, + "additions": 496, + "deletions": 343, + "timestamp": "2025-12-12T21:51:05+01:00" + }, + { + "hash": "4d1db20", + "short": "feat(calendar): convert toolbar to collapsed FAB next to InputBar", + "type": "feat", + "scope": "calendar", + "additions": 16, + "deletions": 30, + "timestamp": "2025-12-12T21:55:07+01:00" + }, + { + "hash": "11da7d2", + "short": "fix(calendar): toolbar opens below InputBar and pushes content up", + "type": "fix", + "scope": "calendar", + "additions": 88, + "deletions": 57, + "timestamp": "2025-12-12T21:58:26+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-12/macher.md b/devlog/2025-12-12/macher.md new file mode 100644 index 000000000..5d1a6e726 --- /dev/null +++ b/devlog/2025-12-12/macher.md @@ -0,0 +1,36 @@ +--- +date: 2025-12-12 +day: 18 +view: macher +weekday: Freitag +commits: 19 +review: written +--- + +# Freitag, 2025-12-12 — Tag 18 (Macher-Sicht) + +## Stats + +19 Commits, +5204 / −3478 LoC, 70 Files. Top-Dirs: `apps/calendar/apps/web` (42%), `packages/shared-splitscreen/src` (15%), `packages/shared-ui/src` (11%), `apps/chat/apps/backend` (4%), `pnpm-lock.yaml` (3%). Tags: calendar, splitscreen, shared-ui. Session 10:57 → 20:58 (~74 aktive Min, längster Fokus 25 Min). + +## Commits + +- `51912a2` feat(calendar): add search highlighting to calendar views (+221/-18) +- `8a75b34` refactor(shared-ui): rename QuickInputBar to InputBar (+271/-560) +- `f51708d` fix(calendar): fix QuickEventOverlay z-index stacking issue (+44/-20) +- `f2ac3e2` feat(splitscreen): add split-screen feature for multi-app side-by-side view (+2773/-534) +- `448cfb9` fix(calendar): improve toolbar UX and fix build warnings (+457/-157) +- `287a62a` fix(splitscreen): fix resize handle not working after first drag (+42/-14) +- `81f77c4` feat(calendar): improve navigation layout controls and sidebar integration (+261/-10) +- `b349083` fix(calendar): add shared-splitscreen to Dockerfile (+1/-0) +- `4357902` Merge remote-tracking branch 'origin/dev' into till-dev (+0/-0) +- `b44e515` Merge pull request #16 from Memo-2023/till-dev (+0/-0) +- `0fa154c` 🐛 fix(shared-auth): add automatic token refresh on 401 responses (+106/-18) +- `3f9bc57` ♻️ refactor(chat): simplify chat service and update seed data (+76/-394) +- `a9aeffa` ♻️ refactor(picture): simplify credit system to production-only (+36/-67) +- `612f6a1` 🔧 chore: switch chat backend to OpenRouter API (+260/-1234) +- `35ce678` Merge pull request #17 from Memo-2023/chat-picture (+0/-0) +- `b7057ed` feat(calendar): improve DateStrip today button and fix initial date display (+56/-22) +- `502ba0c` ♻️ refactor(calendar): integrate agenda as view type and improve DayView layout (+496/-343) +- `4d1db20` feat(calendar): convert toolbar to collapsed FAB next to InputBar (+16/-30) +- `11da7d2` fix(calendar): toolbar opens below InputBar and pushes content up (+88/-57) diff --git a/devlog/2025-12-12/spieler.md b/devlog/2025-12-12/spieler.md new file mode 100644 index 000000000..c95417177 --- /dev/null +++ b/devlog/2025-12-12/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-12 +day: 18 +view: spieler +weekday: Freitag +commits: 19 +review: written +--- + +# Freitag, 2025-12-12 — Tag 18 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- add search highlighting to calendar views +- fix QuickEventOverlay z-index stacking issue +- add split-screen feature for multi-app side-by-side view +- improve toolbar UX and fix build warnings +- fix resize handle not working after first drag diff --git a/devlog/2025-12-13/data.json b/devlog/2025-12-13/data.json new file mode 100644 index 000000000..ad79d8571 --- /dev/null +++ b/devlog/2025-12-13/data.json @@ -0,0 +1,201 @@ +{ + "date": "2025-12-13", + "day_number": 19, + "weekday": "Samstag", + "commits": 15, + "authors": [ + { + "name": "Till-JS", + "count": 15 + } + ], + "additions": 1827, + "deletions": 421, + "net_lines": 1406, + "files_changed": 32, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-13T12:50:42.000Z", + "last_commit_at": "2025-12-13T14:06:41.000Z", + "total_span_minutes": 76, + "active_minutes": 76, + "pauses": [], + "longest_focus_minutes": 76 + }, + "top_dirs": [ + { + "path": "apps/calendar/apps/web", + "pct": 68 + }, + { + "path": "packages/shared-ui/src", + "pct": 28 + }, + { + "path": "apps/calendar/packages/shared", + "pct": 2 + }, + { + "path": "packages/shared-tailwind/src", + "pct": 2 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 48 + }, + { + "ext": ".ts", + "count": 11 + }, + { + "ext": ".css", + "count": 1 + } + ], + "tags": ["calendar", "ui"], + "commits_list": [ + { + "hash": "7d16664", + "short": "style(calendar): align FAB with InputBar height and position", + "type": "style", + "scope": "calendar", + "additions": 16, + "deletions": 14, + "timestamp": "2025-12-13T13:50:42+01:00" + }, + { + "hash": "4444e89", + "short": "style(calendar): add more spacing between InputBar and toolbar", + "type": "style", + "scope": "calendar", + "additions": 1, + "deletions": 0, + "timestamp": "2025-12-13T13:51:21+01:00" + }, + { + "hash": "15b2d5d", + "short": "style(calendar): increase spacing between InputBar and toolbar to 8rem", + "type": "style", + "scope": "calendar", + "additions": 1, + "deletions": 1, + "timestamp": "2025-12-13T13:52:34+01:00" + }, + { + "hash": "ef69274", + "short": "fix(calendar): increase spacing between InputBar and toolbar correctly", + "type": "fix", + "scope": "calendar", + "additions": 19, + "deletions": 15, + "timestamp": "2025-12-13T13:55:13+01:00" + }, + { + "hash": "5ebdc35", + "short": "style(calendar): reduce toolbar spacing slightly (150px → 140px)", + "type": "style", + "scope": "calendar", + "additions": 4, + "deletions": 4, + "timestamp": "2025-12-13T13:56:18+01:00" + }, + { + "hash": "e8ec273", + "short": "feat(calendar): make toolbar content horizontally scrollable on mobile", + "type": "feat", + "scope": "calendar", + "additions": 314, + "deletions": 4, + "timestamp": "2025-12-13T13:57:28+01:00" + }, + { + "hash": "faa9412", + "short": "style(calendar): add fade effect to DateStrip edges", + "type": "style", + "scope": "calendar", + "additions": 8, + "deletions": 0, + "timestamp": "2025-12-13T14:02:30+01:00" + }, + { + "hash": "cc37db8", + "short": "feat(calendar): improve FAB positioning on mobile and subtle close styling", + "type": "feat", + "scope": "calendar", + "additions": 18, + "deletions": 3, + "timestamp": "2025-12-13T14:04:51+01:00" + }, + { + "hash": "10d4170", + "short": "feat(calendar): add event context menu and fix event persistence", + "type": "feat", + "scope": "calendar", + "additions": 287, + "deletions": 14, + "timestamp": "2025-12-13T14:24:08+01:00" + }, + { + "hash": "a1c3eaf", + "short": "feat(calendar): add context menu support to MonthView and MultiDayView", + "type": "feat", + "scope": "calendar", + "additions": 32, + "deletions": 3, + "timestamp": "2025-12-13T14:34:22+01:00" + }, + { + "hash": "88c91e2", + "short": "fix(ui): replace hardcoded colors with theme variables", + "type": "fix", + "scope": "ui", + "additions": 140, + "deletions": 247, + "timestamp": "2025-12-13T14:40:16+01:00" + }, + { + "hash": "8eb295d", + "short": "feat(calendar): add responsible person and attendees to events", + "type": "feat", + "scope": "calendar", + "additions": 576, + "deletions": 5, + "timestamp": "2025-12-13T14:53:53+01:00" + }, + { + "hash": "bd89871", + "short": "feat(ui): add elevation system for overlays and modals", + "type": "feat", + "scope": "ui", + "additions": 104, + "deletions": 27, + "timestamp": "2025-12-13T15:00:33+01:00" + }, + { + "hash": "2777447", + "short": "fix(calendar): improve all-day events row positioning and styling", + "type": "fix", + "scope": "calendar", + "additions": 81, + "deletions": 66, + "timestamp": "2025-12-13T15:05:11+01:00" + }, + { + "hash": "c710f43", + "short": "feat(calendar): add DateStrip context menu with display settings", + "type": "feat", + "scope": "calendar", + "additions": 226, + "deletions": 18, + "timestamp": "2025-12-13T15:06:41+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-13/macher.md b/devlog/2025-12-13/macher.md new file mode 100644 index 000000000..6c319a3a3 --- /dev/null +++ b/devlog/2025-12-13/macher.md @@ -0,0 +1,32 @@ +--- +date: 2025-12-13 +day: 19 +view: macher +weekday: Samstag +commits: 15 +review: written +--- + +# Samstag, 2025-12-13 — Tag 19 (Macher-Sicht) + +## Stats + +15 Commits, +1827 / −421 LoC, 32 Files. Top-Dirs: `apps/calendar/apps/web` (68%), `packages/shared-ui/src` (28%), `apps/calendar/packages/shared` (2%), `packages/shared-tailwind/src` (2%). Tags: calendar, ui. Session 12:50 → 14:06 (~76 aktive Min, längster Fokus 76 Min). + +## Commits + +- `7d16664` style(calendar): align FAB with InputBar height and position (+16/-14) +- `4444e89` style(calendar): add more spacing between InputBar and toolbar (+1/-0) +- `15b2d5d` style(calendar): increase spacing between InputBar and toolbar to 8rem (+1/-1) +- `ef69274` fix(calendar): increase spacing between InputBar and toolbar correctly (+19/-15) +- `5ebdc35` style(calendar): reduce toolbar spacing slightly (150px → 140px) (+4/-4) +- `e8ec273` feat(calendar): make toolbar content horizontally scrollable on mobile (+314/-4) +- `faa9412` style(calendar): add fade effect to DateStrip edges (+8/-0) +- `cc37db8` feat(calendar): improve FAB positioning on mobile and subtle close styling (+18/-3) +- `10d4170` feat(calendar): add event context menu and fix event persistence (+287/-14) +- `a1c3eaf` feat(calendar): add context menu support to MonthView and MultiDayView (+32/-3) +- `88c91e2` fix(ui): replace hardcoded colors with theme variables (+140/-247) +- `8eb295d` feat(calendar): add responsible person and attendees to events (+576/-5) +- `bd89871` feat(ui): add elevation system for overlays and modals (+104/-27) +- `2777447` fix(calendar): improve all-day events row positioning and styling (+81/-66) +- `c710f43` feat(calendar): add DateStrip context menu with display settings (+226/-18) diff --git a/devlog/2025-12-13/spieler.md b/devlog/2025-12-13/spieler.md new file mode 100644 index 000000000..e42ae2d58 --- /dev/null +++ b/devlog/2025-12-13/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-13 +day: 19 +view: spieler +weekday: Samstag +commits: 15 +review: written +--- + +# Samstag, 2025-12-13 — Tag 19 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- align FAB with InputBar height and position +- add more spacing between InputBar and toolbar +- increase spacing between InputBar and toolbar to 8rem +- increase spacing between InputBar and toolbar correctly +- reduce toolbar spacing slightly (150px → 140px) diff --git a/devlog/2025-12-14/data.json b/devlog/2025-12-14/data.json new file mode 100644 index 000000000..f94ea61c8 --- /dev/null +++ b/devlog/2025-12-14/data.json @@ -0,0 +1,536 @@ +{ + "date": "2025-12-14", + "day_number": 20, + "weekday": "Sonntag", + "commits": 48, + "authors": [ + { + "name": "Till-JS", + "count": 48 + } + ], + "additions": 20781, + "deletions": 9666, + "net_lines": 11115, + "files_changed": 175, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-14T13:39:27.000Z", + "last_commit_at": "2025-12-15T02:37:01.000Z", + "total_span_minutes": 778, + "active_minutes": 273, + "pauses": [ + { + "from": "15:35", + "to": "16:14", + "minutes": 39 + }, + { + "from": "16:32", + "to": "19:42", + "minutes": 190 + }, + { + "from": "19:42", + "to": "20:49", + "minutes": 67 + }, + { + "from": "21:43", + "to": "22:20", + "minutes": 37 + }, + { + "from": "23:43", + "to": "02:35", + "minutes": 172 + } + ], + "longest_focus_minutes": 83 + }, + "top_dirs": [ + { + "path": "apps/calendar/apps/web", + "pct": 47 + }, + { + "path": "apps/contacts/apps/web", + "pct": 28 + }, + { + "path": "packages/shared-ui/src", + "pct": 15 + }, + { + "path": "apps/calendar/apps/backend", + "pct": 5 + }, + { + "path": "apps/contacts/apps/backend", + "pct": 2 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 184 + }, + { + "ext": ".ts", + "count": 109 + }, + { + "ext": ".mjs", + "count": 1 + }, + { + "ext": ".json", + "count": 1 + }, + { + "ext": ".yaml", + "count": 1 + } + ], + "tags": ["calendar", "contacts", "shared-ui", "ui"], + "commits_list": [ + { + "hash": "6bea47d", + "short": "refactor(calendar): consolidate code patterns and reduce duplication", + "type": "refactor", + "scope": "calendar", + "additions": 288, + "deletions": 349, + "timestamp": "2025-12-14T14:39:27+01:00" + }, + { + "hash": "cab1905", + "short": "fix(calendar): prevent event resize jump on drag start", + "type": "fix", + "scope": "calendar", + "additions": 61, + "deletions": 14, + "timestamp": "2025-12-14T15:07:43+01:00" + }, + { + "hash": "5190b14", + "short": "feat(ui): add ConfirmationPopover component for inline confirmations", + "type": "feat", + "scope": "ui", + "additions": 434, + "deletions": 22, + "timestamp": "2025-12-14T15:09:16+01:00" + }, + { + "hash": "b720f64", + "short": "feat(calendar): replace calendar dropdown with horizontal pills", + "type": "feat", + "scope": "calendar", + "additions": 680, + "deletions": 344, + "timestamp": "2025-12-14T15:19:22+01:00" + }, + { + "hash": "4098283", + "short": "feat(calendar): filter events by calendar visibility", + "type": "feat", + "scope": "calendar", + "additions": 62, + "deletions": 14, + "timestamp": "2025-12-14T15:22:03+01:00" + }, + { + "hash": "7bbeb7c", + "short": "feat(calendar): improve settings page UI and add default calendar selection", + "type": "feat", + "scope": "calendar", + "additions": 30, + "deletions": 4, + "timestamp": "2025-12-14T15:22:44+01:00" + }, + { + "hash": "9eb3f42", + "short": "feat(calendar): add week number display to DateStrip", + "type": "feat", + "scope": "calendar", + "additions": 54, + "deletions": 0, + "timestamp": "2025-12-14T15:35:51+01:00" + }, + { + "hash": "863f296", + "short": "feat(ui): add shared ExpandableToolbar and unify toolbar dropdowns", + "type": "feat", + "scope": "ui", + "additions": 2343, + "deletions": 783, + "timestamp": "2025-12-14T16:14:30+01:00" + }, + { + "hash": "6ce385a", + "short": "style: apply formatting fixes from pre-commit hooks", + "type": null, + "scope": null, + "additions": 540, + "deletions": 11, + "timestamp": "2025-12-14T16:16:29+01:00" + }, + { + "hash": "d76f2dd", + "short": "style: format NewContactModal component", + "type": null, + "scope": null, + "additions": 323, + "deletions": 7, + "timestamp": "2025-12-14T16:18:00+01:00" + }, + { + "hash": "3f27e47", + "short": "fix(contacts): improve new contact card and sticky section headers", + "type": "fix", + "scope": "contacts", + "additions": 22, + "deletions": 27, + "timestamp": "2025-12-14T16:31:38+01:00" + }, + { + "hash": "6862622", + "short": "feat(contacts): unify network page toolbar with ExpandableToolbar pattern", + "type": "feat", + "scope": "contacts", + "additions": 451, + "deletions": 305, + "timestamp": "2025-12-14T16:32:59+01:00" + }, + { + "hash": "4b6a4c7", + "short": "feat(contacts): add collapsible alphabet-nav with FAB toggle", + "type": "feat", + "scope": "contacts", + "additions": 294, + "deletions": 21, + "timestamp": "2025-12-14T19:42:38+01:00" + }, + { + "hash": "cdc3cd3", + "short": "feat(calendar): add birthday integration from contacts service", + "type": "feat", + "scope": "calendar", + "additions": 995, + "deletions": 85, + "timestamp": "2025-12-14T20:49:08+01:00" + }, + { + "hash": "c4fe9ea", + "short": "refactor(calendar): extract shared constants and event filtering utilities", + "type": "refactor", + "scope": "calendar", + "additions": 337, + "deletions": 207, + "timestamp": "2025-12-14T21:07:52+01:00" + }, + { + "hash": "026c165", + "short": "fix(contacts): resolve Svelte 5 hydration error", + "type": "fix", + "scope": "contacts", + "additions": 774, + "deletions": 27, + "timestamp": "2025-12-14T21:13:22+01:00" + }, + { + "hash": "5bf275d", + "short": "refactor(calendar): add comprehensive drag/drop composables", + "type": "refactor", + "scope": "calendar", + "additions": 807, + "deletions": 173, + "timestamp": "2025-12-14T21:13:58+01:00" + }, + { + "hash": "e0ef152", + "short": "feat(calendar): add minimize button to DateStrip", + "type": "feat", + "scope": "calendar", + "additions": 54, + "deletions": 0, + "timestamp": "2025-12-14T21:17:22+01:00" + }, + { + "hash": "668957a", + "short": "refactor(calendar): extract birthday popover logic into composable", + "type": "refactor", + "scope": "calendar", + "additions": 76, + "deletions": 66, + "timestamp": "2025-12-14T21:18:50+01:00" + }, + { + "hash": "b966c91", + "short": "refactor(calendar): extract EventCard component from views", + "type": "refactor", + "scope": "calendar", + "additions": 400, + "deletions": 370, + "timestamp": "2025-12-14T21:26:32+01:00" + }, + { + "hash": "0badca2", + "short": "feat(calendar): add configurable ViewModePill for quick view switching", + "type": "feat", + "scope": "calendar", + "additions": 329, + "deletions": 0, + "timestamp": "2025-12-14T21:29:03+01:00" + }, + { + "hash": "cc28cc7", + "short": "feat(calendar): add birthday calendar and collapsible date strip", + "type": "feat", + "scope": "calendar", + "additions": 197, + "deletions": 1, + "timestamp": "2025-12-14T21:29:58+01:00" + }, + { + "hash": "48edd85", + "short": "refactor(calendar): improve agenda and event components", + "type": "refactor", + "scope": "calendar", + "additions": 76, + "deletions": 57, + "timestamp": "2025-12-14T21:30:24+01:00" + }, + { + "hash": "d353fb0", + "short": "refactor(contacts): remove favorites functionality", + "type": "refactor", + "scope": "contacts", + "additions": 0, + "deletions": 2066, + "timestamp": "2025-12-14T21:30:55+01:00" + }, + { + "hash": "c7a9e88", + "short": "refactor(contacts): remove network and new contact pages", + "type": "refactor", + "scope": "contacts", + "additions": 0, + "deletions": 1327, + "timestamp": "2025-12-14T21:31:12+01:00" + }, + { + "hash": "fc3129a", + "short": "refactor(contacts): major component and API refactoring", + "type": "refactor", + "scope": "contacts", + "additions": 1812, + "deletions": 1175, + "timestamp": "2025-12-14T21:31:36+01:00" + }, + { + "hash": "bc0db4d", + "short": "feat(shared-ui): add FilterDropdown export and InputBar FAB support", + "type": "feat", + "scope": "shared-ui", + "additions": 15, + "deletions": 3, + "timestamp": "2025-12-14T21:32:03+01:00" + }, + { + "hash": "bed7c4e", + "short": "chore: update pnpm-lock.yaml", + "type": null, + "scope": null, + "additions": 210, + "deletions": 327, + "timestamp": "2025-12-14T21:32:16+01:00" + }, + { + "hash": "1ff172f", + "short": "feat(contacts): add birthday and custom dates support", + "type": "feat", + "scope": "contacts", + "additions": 462, + "deletions": 1, + "timestamp": "2025-12-14T21:43:17+01:00" + }, + { + "hash": "9e71139", + "short": "feat(shared-ui): add InputBar context menu with settings", + "type": "feat", + "scope": "shared-ui", + "additions": 849, + "deletions": 11, + "timestamp": "2025-12-14T22:20:00+01:00" + }, + { + "hash": "e0d7b3d", + "short": "feat(calendar): add swipe navigation for calendar views", + "type": "feat", + "scope": "calendar", + "additions": 618, + "deletions": 65, + "timestamp": "2025-12-14T22:22:15+01:00" + }, + { + "hash": "9e0c8cb", + "short": "refactor(contacts): use InputBar settings store for autoFocus", + "type": "refactor", + "scope": "contacts", + "additions": 0, + "deletions": 1, + "timestamp": "2025-12-14T22:22:40+01:00" + }, + { + "hash": "781225a", + "short": "fix(shared-ui): add backdrop to ContextMenu to block clicks behind", + "type": "fix", + "scope": "shared-ui", + "additions": 19, + "deletions": 0, + "timestamp": "2025-12-14T22:46:36+01:00" + }, + { + "hash": "4e391bd", + "short": "refine(calendar): improve swipe navigation UX", + "type": "refine", + "scope": "calendar", + "additions": 10, + "deletions": 20, + "timestamp": "2025-12-14T22:57:17+01:00" + }, + { + "hash": "dca7d97", + "short": "feat(calendar): improve swipe to smooth linear scrolling", + "type": "feat", + "scope": "calendar", + "additions": 66, + "deletions": 21, + "timestamp": "2025-12-14T23:06:19+01:00" + }, + { + "hash": "0ebc3d0", + "short": "fix(calendar): use pure JS animation for truly linear swipe", + "type": "fix", + "scope": "calendar", + "additions": 53, + "deletions": 25, + "timestamp": "2025-12-14T23:08:58+01:00" + }, + { + "hash": "3929911", + "short": "feat(calendar): enable fast multi-page navigation", + "type": "feat", + "scope": "calendar", + "additions": 67, + "deletions": 10, + "timestamp": "2025-12-14T23:14:39+01:00" + }, + { + "hash": "a86f8e4", + "short": "refactor(calendar): simplify swipe to instant navigation", + "type": "refactor", + "scope": "calendar", + "additions": 45, + "deletions": 299, + "timestamp": "2025-12-14T23:19:39+01:00" + }, + { + "hash": "78fb495", + "short": "feat(calendar): add visual scrolling with instant snap", + "type": "feat", + "scope": "calendar", + "additions": 123, + "deletions": 33, + "timestamp": "2025-12-14T23:21:24+01:00" + }, + { + "hash": "1f7b93a", + "short": "feat(calendar): add context menu to CalendarHeader with display settings", + "type": "feat", + "scope": "calendar", + "additions": 206, + "deletions": 7, + "timestamp": "2025-12-14T23:25:29+01:00" + }, + { + "hash": "20bc954", + "short": "fix(calendar): prevent double navigation with lock mechanism", + "type": "fix", + "scope": "calendar", + "additions": 27, + "deletions": 11, + "timestamp": "2025-12-14T23:25:43+01:00" + }, + { + "hash": "5ac8de7", + "short": "revert(calendar): restore animated swipe navigation", + "type": "revert", + "scope": "calendar", + "additions": 194, + "deletions": 46, + "timestamp": "2025-12-14T23:30:55+01:00" + }, + { + "hash": "c712cc7", + "short": "feat(shared-ui): add reusable HelpModal system with keyboard shortcuts and syntax panels", + "type": "feat", + "scope": "shared-ui", + "additions": 1238, + "deletions": 195, + "timestamp": "2025-12-14T23:43:19+01:00" + }, + { + "hash": "1395291", + "short": "feat(calendar): combine calendar/tasks pill with sidebar toggle and mobile splitscreen", + "type": "feat", + "scope": "calendar", + "additions": 420, + "deletions": 511, + "timestamp": "2025-12-15T02:35:35+01:00" + }, + { + "hash": "3edb65c", + "short": "feat(calendar): add number labels to ViewSwitcher and extended day views", + "type": "feat", + "scope": "calendar", + "additions": 627, + "deletions": 63, + "timestamp": "2025-12-15T02:54:10+01:00" + }, + { + "hash": "a6d4393", + "short": "feat(calendar): add immersive/fullscreen mode toggle", + "type": "feat", + "scope": "calendar", + "additions": 306, + "deletions": 99, + "timestamp": "2025-12-15T03:22:30+01:00" + }, + { + "hash": "893c6ef", + "short": "feat(shared-ui): unify ImmersiveModeToggle across Calendar, Contacts, and Todo apps", + "type": "feat", + "scope": "shared-ui", + "additions": 246, + "deletions": 121, + "timestamp": "2025-12-15T03:34:15+01:00" + }, + { + "hash": "bc0eeca", + "short": "Feat: Tagmodal, fullscreenmode, tag groups, onepage design philosophy", + "type": null, + "scope": null, + "additions": 3541, + "deletions": 342, + "timestamp": "2025-12-15T03:37:01+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-14/macher.md b/devlog/2025-12-14/macher.md new file mode 100644 index 000000000..0eb6e3540 --- /dev/null +++ b/devlog/2025-12-14/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-12-14 +day: 20 +view: macher +weekday: Sonntag +commits: 48 +review: written +--- + +# Sonntag, 2025-12-14 — Tag 20 (Macher-Sicht) + +## Stats + +48 Commits, +20781 / −9666 LoC, 175 Files. Top-Dirs: `apps/calendar/apps/web` (47%), `apps/contacts/apps/web` (28%), `packages/shared-ui/src` (15%), `apps/calendar/apps/backend` (5%), `apps/contacts/apps/backend` (2%). Tags: calendar, contacts, shared-ui, ui. Session 13:39 → 02:37 (~273 aktive Min, längster Fokus 83 Min). + +## Commits + +- `6bea47d` refactor(calendar): consolidate code patterns and reduce duplication (+288/-349) +- `cab1905` fix(calendar): prevent event resize jump on drag start (+61/-14) +- `5190b14` feat(ui): add ConfirmationPopover component for inline confirmations (+434/-22) +- `b720f64` feat(calendar): replace calendar dropdown with horizontal pills (+680/-344) +- `4098283` feat(calendar): filter events by calendar visibility (+62/-14) +- `7bbeb7c` feat(calendar): improve settings page UI and add default calendar selection (+30/-4) +- `9eb3f42` feat(calendar): add week number display to DateStrip (+54/-0) +- `863f296` feat(ui): add shared ExpandableToolbar and unify toolbar dropdowns (+2343/-783) +- `6ce385a` style: apply formatting fixes from pre-commit hooks (+540/-11) +- `d76f2dd` style: format NewContactModal component (+323/-7) +- `3f27e47` fix(contacts): improve new contact card and sticky section headers (+22/-27) +- `6862622` feat(contacts): unify network page toolbar with ExpandableToolbar pattern (+451/-305) +- `4b6a4c7` feat(contacts): add collapsible alphabet-nav with FAB toggle (+294/-21) +- `cdc3cd3` feat(calendar): add birthday integration from contacts service (+995/-85) +- `c4fe9ea` refactor(calendar): extract shared constants and event filtering utilities (+337/-207) +- `026c165` fix(contacts): resolve Svelte 5 hydration error (+774/-27) +- `5bf275d` refactor(calendar): add comprehensive drag/drop composables (+807/-173) +- `e0ef152` feat(calendar): add minimize button to DateStrip (+54/-0) +- `668957a` refactor(calendar): extract birthday popover logic into composable (+76/-66) +- `b966c91` refactor(calendar): extract EventCard component from views (+400/-370) + +_… plus 28 weitere Commits._ diff --git a/devlog/2025-12-14/spieler.md b/devlog/2025-12-14/spieler.md new file mode 100644 index 000000000..185b0252b --- /dev/null +++ b/devlog/2025-12-14/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-14 +day: 20 +view: spieler +weekday: Sonntag +commits: 48 +review: written +--- + +# Sonntag, 2025-12-14 — Tag 20 + +Großer Sprint-Tag mit Schwerpunkt **apps** (48 Commits). + +## Highlights + +- prevent event resize jump on drag start +- add ConfirmationPopover component for inline confirmations +- replace calendar dropdown with horizontal pills +- filter events by calendar visibility +- improve settings page UI and add default calendar selection diff --git a/devlog/2025-12-15/data.json b/devlog/2025-12-15/data.json new file mode 100644 index 000000000..6636796ab --- /dev/null +++ b/devlog/2025-12-15/data.json @@ -0,0 +1,411 @@ +{ + "date": "2025-12-15", + "day_number": 21, + "weekday": "Montag", + "commits": 31, + "authors": [ + { + "name": "Wuesteon", + "count": 30 + }, + { + "name": "Nils Weiser", + "count": 1 + } + ], + "additions": 9198, + "deletions": 2487, + "net_lines": 6711, + "files_changed": 227, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-15T13:10:34.000Z", + "last_commit_at": "2025-12-16T04:10:01.000Z", + "total_span_minutes": 899, + "active_minutes": 216, + "pauses": [ + { + "from": "14:27", + "to": "17:53", + "minutes": 206 + }, + { + "from": "17:53", + "to": "19:09", + "minutes": 75 + }, + { + "from": "19:49", + "to": "20:27", + "minutes": 38 + }, + { + "from": "20:27", + "to": "21:33", + "minutes": 67 + }, + { + "from": "21:33", + "to": "22:33", + "minutes": 60 + }, + { + "from": "22:44", + "to": "23:41", + "minutes": 57 + }, + { + "from": "00:34", + "to": "01:29", + "minutes": 55 + }, + { + "from": "01:49", + "to": "02:43", + "minutes": 55 + }, + { + "from": "03:33", + "to": "04:43", + "minutes": 70 + } + ], + "longest_focus_minutes": 52 + }, + "top_dirs": [ + { + "path": "apps/manacore/apps/web", + "pct": 15 + }, + { + "path": "apps/calendar/apps/web", + "pct": 11 + }, + { + "path": "apps/clock/apps/web", + "pct": 9 + }, + { + "path": "apps/contacts/apps/web", + "pct": 8 + }, + { + "path": "apps/chat/apps/web", + "pct": 6 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 102 + }, + { + "ext": ".ts", + "count": 73 + }, + { + "ext": ".json", + "count": 24 + }, + { + "ext": "", + "count": 19 + }, + { + "ext": ".sh", + "count": 16 + }, + { + "ext": ".md", + "count": 10 + } + ], + "tags": ["manacore-web", "auth", "runtime-config", "deps", "storage"], + "commits_list": [ + { + "hash": "660cbd6", + "short": "Merge branch 'dev' into till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-15T14:10:34+01:00" + }, + { + "hash": "3011d77", + "short": "♻️ refactor(contacts,zitare): use dynamic runtime URLs in auth stores", + "type": null, + "scope": null, + "additions": 49, + "deletions": 9, + "timestamp": "2025-12-15T14:13:00+01:00" + }, + { + "hash": "eebc370", + "short": "📝 docs: update runtime URL injection checklist", + "type": null, + "scope": null, + "additions": 14, + "deletions": 12, + "timestamp": "2025-12-15T14:14:58+01:00" + }, + { + "hash": "9238ff7", + "short": "Merge pull request #18 from Memo-2023/till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-15T14:27:32+01:00" + }, + { + "hash": "b949037", + "short": "🔧 chore: add svelte-check to pre-commit hooks", + "type": null, + "scope": null, + "additions": 195, + "deletions": 1, + "timestamp": "2025-12-15T17:53:52+01:00" + }, + { + "hash": "42e5e97", + "short": "♿️ fix: resolve all svelte-check a11y warnings across web apps", + "type": null, + "scope": null, + "additions": 1048, + "deletions": 558, + "timestamp": "2025-12-15T19:09:01+01:00" + }, + { + "hash": "272132c", + "short": "🙈 chore: remove .claude-flow from git tracking", + "type": null, + "scope": null, + "additions": 0, + "deletions": 98, + "timestamp": "2025-12-15T19:12:26+01:00" + }, + { + "hash": "44e28bb", + "short": "♿️ fix(worldream): add a11y attributes to modal and dialog components", + "type": null, + "scope": null, + "additions": 14, + "deletions": 2, + "timestamp": "2025-12-15T19:14:08+01:00" + }, + { + "hash": "263d779", + "short": "🐛 fix: resolve CI/CD build failures for manacore-web and todo-web", + "type": null, + "scope": null, + "additions": 17, + "deletions": 15, + "timestamp": "2025-12-15T19:40:19+01:00" + }, + { + "hash": "1480638", + "short": "🔧 chore: add pre-push build validation for changed apps", + "type": null, + "scope": null, + "additions": 105, + "deletions": 3, + "timestamp": "2025-12-15T19:49:30+01:00" + }, + { + "hash": "f414aec", + "short": "📝 docs: add staging URLs and modernize README", + "type": null, + "scope": null, + "additions": 124, + "deletions": 57, + "timestamp": "2025-12-15T20:27:02+01:00" + }, + { + "hash": "2c30867", + "short": "🔧 refactor: implement 12-factor runtime config for all web apps", + "type": null, + "scope": null, + "additions": 1594, + "deletions": 608, + "timestamp": "2025-12-15T21:33:50+01:00" + }, + { + "hash": "b8d1067", + "short": "🐛 fix: use dynamic env for MIDDLEWARE_URL in server middleware", + "type": null, + "scope": null, + "additions": 3, + "deletions": 1, + "timestamp": "2025-12-15T22:33:23+01:00" + }, + { + "hash": "22af718", + "short": "fix(runtime-config): add missing zod dependency to Clock and Contacts web apps", + "type": "fix", + "scope": "runtime-config", + "additions": 349, + "deletions": 220, + "timestamp": "2025-12-15T22:44:24+01:00" + }, + { + "hash": "5c594a4", + "short": "fix(deps): add missing zod dependency to Calendar and Chat web apps for CI", + "type": "fix", + "scope": "deps", + "additions": 8, + "deletions": 6, + "timestamp": "2025-12-15T23:41:37+01:00" + }, + { + "hash": "9b55f10", + "short": "fix(manacore-web): fix Docker entrypoint path for config.json", + "type": "fix", + "scope": "manacore-web", + "additions": 5, + "deletions": 2, + "timestamp": "2025-12-16T00:00:53+01:00" + }, + { + "hash": "b2a8ffa", + "short": "fix(manacore-web): await getAuthUrl() and use runtime config in user-settings", + "type": "fix", + "scope": "manacore-web", + "additions": 13, + "deletions": 13, + "timestamp": "2025-12-16T00:21:23+01:00" + }, + { + "hash": "aab8c73", + "short": "feat: add multi-layered runtime config protection system", + "type": null, + "scope": null, + "additions": 945, + "deletions": 0, + "timestamp": "2025-12-16T00:28:57+01:00" + }, + { + "hash": "d268e8e", + "short": "docs: add comprehensive session report for runtime config implementation", + "type": null, + "scope": null, + "additions": 1078, + "deletions": 0, + "timestamp": "2025-12-16T00:34:06+01:00" + }, + { + "hash": "78cd59a", + "short": "feat(storage): unified single-bucket architecture with Hetzner S3", + "type": "feat", + "scope": "storage", + "additions": 226, + "deletions": 252, + "timestamp": "2025-12-16T01:29:11+01:00" + }, + { + "hash": "eeab9b7", + "short": "fix(auth): use correct Better Auth API method for password reset", + "type": "fix", + "scope": "auth", + "additions": 40, + "deletions": 28, + "timestamp": "2025-12-16T01:49:06+01:00" + }, + { + "hash": "26ca921", + "short": "✨ feat(auth): add centralized @manacore/better-auth-types package", + "type": null, + "scope": null, + "additions": 513, + "deletions": 32, + "timestamp": "2025-12-16T02:43:55+01:00" + }, + { + "hash": "fff2819", + "short": "🔒️ feat(auth): add Zod validation and endpoint rate limiting", + "type": null, + "scope": null, + "additions": 162, + "deletions": 13, + "timestamp": "2025-12-16T02:44:21+01:00" + }, + { + "hash": "a7f2746", + "short": "✅ test(auth): add role security integration tests", + "type": null, + "scope": null, + "additions": 452, + "deletions": 51, + "timestamp": "2025-12-16T02:44:39+01:00" + }, + { + "hash": "6e6815a", + "short": "📝 docs(auth): document Better Auth typing improvements", + "type": null, + "scope": null, + "additions": 835, + "deletions": 0, + "timestamp": "2025-12-16T02:45:41+01:00" + }, + { + "hash": "cd19106", + "short": "🐛 fix(docker): add better-auth-types to web app Dockerfiles", + "type": null, + "scope": null, + "additions": 24, + "deletions": 0, + "timestamp": "2025-12-16T02:59:51+01:00" + }, + { + "hash": "f37f85e", + "short": "🐛 fix(docker): add better-auth-types to backend Dockerfiles", + "type": null, + "scope": null, + "additions": 16, + "deletions": 0, + "timestamp": "2025-12-16T03:14:45+01:00" + }, + { + "hash": "c5ffd92", + "short": "feat(auth): add Brevo email integration for password reset and org invites", + "type": "feat", + "scope": "auth", + "additions": 950, + "deletions": 463, + "timestamp": "2025-12-16T03:33:15+01:00" + }, + { + "hash": "bdbe66d", + "short": "🐛 fix(docker): remove pre-compressed config files at runtime", + "type": null, + "scope": null, + "additions": 25, + "deletions": 0, + "timestamp": "2025-12-16T04:43:11+01:00" + }, + { + "hash": "7b33f6a", + "short": "📝 docs(staging): add troubleshooting for pre-compressed configs and caching", + "type": null, + "scope": null, + "additions": 174, + "deletions": 17, + "timestamp": "2025-12-16T05:03:23+01:00" + }, + { + "hash": "d2c2326", + "short": "🐛 fix(calendar): use runtime config for cross-app service URLs", + "type": null, + "scope": null, + "additions": 220, + "deletions": 26, + "timestamp": "2025-12-16T05:10:01+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-15/macher.md b/devlog/2025-12-15/macher.md new file mode 100644 index 000000000..e62a86fcf --- /dev/null +++ b/devlog/2025-12-15/macher.md @@ -0,0 +1,39 @@ +--- +date: 2025-12-15 +day: 21 +view: macher +weekday: Montag +commits: 31 +review: written +--- + +# Montag, 2025-12-15 — Tag 21 (Macher-Sicht) + +## Stats + +31 Commits, +9198 / −2487 LoC, 227 Files. Top-Dirs: `apps/manacore/apps/web` (15%), `apps/calendar/apps/web` (11%), `apps/clock/apps/web` (9%), `apps/contacts/apps/web` (8%), `apps/chat/apps/web` (6%). Tags: manacore-web, auth, runtime-config, deps, storage. Session 13:10 → 04:10 (~216 aktive Min, längster Fokus 52 Min). + +## Commits + +- `660cbd6` Merge branch 'dev' into till-dev (+0/-0) +- `3011d77` ♻️ refactor(contacts,zitare): use dynamic runtime URLs in auth stores (+49/-9) +- `eebc370` 📝 docs: update runtime URL injection checklist (+14/-12) +- `9238ff7` Merge pull request #18 from Memo-2023/till-dev (+0/-0) +- `b949037` 🔧 chore: add svelte-check to pre-commit hooks (+195/-1) +- `42e5e97` ♿️ fix: resolve all svelte-check a11y warnings across web apps (+1048/-558) +- `272132c` 🙈 chore: remove .claude-flow from git tracking (+0/-98) +- `44e28bb` ♿️ fix(worldream): add a11y attributes to modal and dialog components (+14/-2) +- `263d779` 🐛 fix: resolve CI/CD build failures for manacore-web and todo-web (+17/-15) +- `1480638` 🔧 chore: add pre-push build validation for changed apps (+105/-3) +- `f414aec` 📝 docs: add staging URLs and modernize README (+124/-57) +- `2c30867` 🔧 refactor: implement 12-factor runtime config for all web apps (+1594/-608) +- `b8d1067` 🐛 fix: use dynamic env for MIDDLEWARE_URL in server middleware (+3/-1) +- `22af718` fix(runtime-config): add missing zod dependency to Clock and Contacts web apps (+349/-220) +- `5c594a4` fix(deps): add missing zod dependency to Calendar and Chat web apps for CI (+8/-6) +- `9b55f10` fix(manacore-web): fix Docker entrypoint path for config.json (+5/-2) +- `b2a8ffa` fix(manacore-web): await getAuthUrl() and use runtime config in user-settings (+13/-13) +- `aab8c73` feat: add multi-layered runtime config protection system (+945/-0) +- `d268e8e` docs: add comprehensive session report for runtime config implementation (+1078/-0) +- `78cd59a` feat(storage): unified single-bucket architecture with Hetzner S3 (+226/-252) + +_… plus 11 weitere Commits._ diff --git a/devlog/2025-12-15/spieler.md b/devlog/2025-12-15/spieler.md new file mode 100644 index 000000000..decbdca5e --- /dev/null +++ b/devlog/2025-12-15/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-15 +day: 21 +view: spieler +weekday: Montag +commits: 31 +review: written +--- + +# Montag, 2025-12-15 — Tag 21 + +Großer Sprint-Tag mit Schwerpunkt **apps** (31 Commits). + +## Highlights + +- ♻️ refactor(contacts,zitare): use dynamic runtime URLs in auth stores +- 📝 docs: update runtime URL injection checklist +- 🔧 chore: add svelte-check to pre-commit hooks +- ♿️ fix: resolve all svelte-check a11y warnings across web apps +- 🙈 chore: remove .claude-flow from git tracking diff --git a/devlog/2025-12-16/data.json b/devlog/2025-12-16/data.json new file mode 100644 index 000000000..9b07e2bbf --- /dev/null +++ b/devlog/2025-12-16/data.json @@ -0,0 +1,223 @@ +{ + "date": "2025-12-16", + "day_number": 22, + "weekday": "Dienstag", + "commits": 13, + "authors": [ + { + "name": "Wuesteon", + "count": 6 + }, + { + "name": "Till-JS", + "count": 6 + }, + { + "name": "Nils Weiser", + "count": 1 + } + ], + "additions": 5334, + "deletions": 2788, + "net_lines": 2546, + "files_changed": 96, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-16T16:37:19.000Z", + "last_commit_at": "2025-12-16T20:12:25.000Z", + "total_span_minutes": 215, + "active_minutes": 74, + "pauses": [ + { + "from": "18:39", + "to": "19:17", + "minutes": 37 + }, + { + "from": "19:27", + "to": "20:28", + "minutes": 61 + }, + { + "from": "20:29", + "to": "21:12", + "minutes": 43 + } + ], + "longest_focus_minutes": 63 + }, + "top_dirs": [ + { + "path": "apps/calendar/apps/web", + "pct": 29 + }, + { + "path": "packages/shared-i18n/src", + "pct": 6 + }, + { + "path": "apps/calendar/apps/backend", + "pct": 4 + }, + { + "path": "services/mana-core-auth/src", + "pct": 4 + }, + { + "path": "games/voxelava/apps", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 34 + }, + { + "ext": ".ts", + "count": 31 + }, + { + "ext": ".md", + "count": 18 + }, + { + "ext": ".json", + "count": 14 + }, + { + "ext": ".yml", + "count": 4 + }, + { + "ext": ".backup", + "count": 1 + } + ], + "tags": ["calendar"], + "commits_list": [ + { + "hash": "ad495b2", + "short": "📝 docs: restructure CLAUDE.md and documentation (74% reduction)", + "type": null, + "scope": null, + "additions": 1006, + "deletions": 1898, + "timestamp": "2025-12-16T17:37:19+01:00" + }, + { + "hash": "781bc52", + "short": "fix(calendar): equal cell heights in month view on smaller screens", + "type": "fix", + "scope": "calendar", + "additions": 7, + "deletions": 2, + "timestamp": "2025-12-16T17:43:38+01:00" + }, + { + "hash": "c7c451e", + "short": "feat(calendar): add tag filtering to calendar views", + "type": "feat", + "scope": "calendar", + "additions": 195, + "deletions": 23, + "timestamp": "2025-12-16T17:59:28+01:00" + }, + { + "hash": "484efcc", + "short": "style(calendar): use neutral colors for TagStrip action buttons", + "type": "style", + "scope": "calendar", + "additions": 12, + "deletions": 12, + "timestamp": "2025-12-16T18:08:11+01:00" + }, + { + "hash": "31f187b", + "short": "feat(calendar): integrate network view into homepage with heatmap stats", + "type": "feat", + "scope": "calendar", + "additions": 950, + "deletions": 401, + "timestamp": "2025-12-16T18:35:03+01:00" + }, + { + "hash": "ea85621", + "short": "feat(calendar): show settings as modal on homepage", + "type": "feat", + "scope": "calendar", + "additions": 1249, + "deletions": 1, + "timestamp": "2025-12-16T18:37:11+01:00" + }, + { + "hash": "6035994", + "short": "feat(calendar): add stats sidebar section and heatmap support in year view", + "type": "feat", + "scope": "calendar", + "additions": 511, + "deletions": 6, + "timestamp": "2025-12-16T18:39:59+01:00" + }, + { + "hash": "285e142", + "short": "Merge branch 'dev' into till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-16T19:17:07+01:00" + }, + { + "hash": "11324b5", + "short": "Merge pull request #19 from Memo-2023/till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-16T19:27:03+01:00" + }, + { + "hash": "d3e11b3", + "short": "🐛 fix(auth): require name field in registration forms", + "type": null, + "scope": null, + "additions": 151, + "deletions": 56, + "timestamp": "2025-12-16T20:28:28+01:00" + }, + { + "hash": "3e3e9f3", + "short": "🩹 fix(voxelava): fix type errors in level types and user profile", + "type": null, + "scope": null, + "additions": 9, + "deletions": 29, + "timestamp": "2025-12-16T20:29:38+01:00" + }, + { + "hash": "8c973e4", + "short": " 1. Brevo email integration (API key, sender settings) 2. URL configuration fix (BASE_URL, FRONTEND_URL) 3. Password reset URL pointing to frontend instead of API", + "type": null, + "scope": null, + "additions": 42, + "deletions": 4, + "timestamp": "2025-12-16T21:12:25+01:00" + }, + { + "hash": "4c44764", + "short": " 1. Brevo email integration (API key, sender settings) 2. URL configuration fix (BASE_URL, FRONTEND_URL) 3. Password reset URL pointing to frontend instead of API", + "type": null, + "scope": null, + "additions": 1202, + "deletions": 356, + "timestamp": "2025-12-16T21:12:25+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-16/macher.md b/devlog/2025-12-16/macher.md new file mode 100644 index 000000000..d3d5b1dfe --- /dev/null +++ b/devlog/2025-12-16/macher.md @@ -0,0 +1,30 @@ +--- +date: 2025-12-16 +day: 22 +view: macher +weekday: Dienstag +commits: 13 +review: written +--- + +# Dienstag, 2025-12-16 — Tag 22 (Macher-Sicht) + +## Stats + +13 Commits, +5334 / −2788 LoC, 96 Files. Top-Dirs: `apps/calendar/apps/web` (29%), `packages/shared-i18n/src` (6%), `apps/calendar/apps/backend` (4%), `services/mana-core-auth/src` (4%), `games/voxelava/apps` (3%). Tags: calendar. Session 16:37 → 20:12 (~74 aktive Min, längster Fokus 63 Min). + +## Commits + +- `ad495b2` 📝 docs: restructure CLAUDE.md and documentation (74% reduction) (+1006/-1898) +- `781bc52` fix(calendar): equal cell heights in month view on smaller screens (+7/-2) +- `c7c451e` feat(calendar): add tag filtering to calendar views (+195/-23) +- `484efcc` style(calendar): use neutral colors for TagStrip action buttons (+12/-12) +- `31f187b` feat(calendar): integrate network view into homepage with heatmap stats (+950/-401) +- `ea85621` feat(calendar): show settings as modal on homepage (+1249/-1) +- `6035994` feat(calendar): add stats sidebar section and heatmap support in year view (+511/-6) +- `285e142` Merge branch 'dev' into till-dev (+0/-0) +- `11324b5` Merge pull request #19 from Memo-2023/till-dev (+0/-0) +- `d3e11b3` 🐛 fix(auth): require name field in registration forms (+151/-56) +- `3e3e9f3` 🩹 fix(voxelava): fix type errors in level types and user profile (+9/-29) +- `8c973e4` 1. Brevo email integration (API key, sender settings) 2. URL configuration fix (BASE_URL, FRONTEND_URL) 3. Password reset URL pointing to frontend instead of API (+42/-4) +- `4c44764` 1. Brevo email integration (API key, sender settings) 2. URL configuration fix (BASE_URL, FRONTEND_URL) 3. Password reset URL pointing to frontend instead of API (+1202/-356) diff --git a/devlog/2025-12-16/spieler.md b/devlog/2025-12-16/spieler.md new file mode 100644 index 000000000..9f051bb71 --- /dev/null +++ b/devlog/2025-12-16/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-16 +day: 22 +view: spieler +weekday: Dienstag +commits: 13 +review: written +--- + +# Dienstag, 2025-12-16 — Tag 22 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- 📝 docs: restructure CLAUDE.md and documentation (74% reduction) +- equal cell heights in month view on smaller screens +- add tag filtering to calendar views +- use neutral colors for TagStrip action buttons +- integrate network view into homepage with heatmap stats diff --git a/devlog/2025-12-17/data.json b/devlog/2025-12-17/data.json new file mode 100644 index 000000000..50f408b16 --- /dev/null +++ b/devlog/2025-12-17/data.json @@ -0,0 +1,172 @@ +{ + "date": "2025-12-17", + "day_number": 23, + "weekday": "Mittwoch", + "commits": 10, + "authors": [ + { + "name": "Wuesteon", + "count": 10 + } + ], + "additions": 2166, + "deletions": 638, + "net_lines": 1528, + "files_changed": 32, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-17T16:57:06.000Z", + "last_commit_at": "2025-12-17T18:49:37.000Z", + "total_span_minutes": 113, + "active_minutes": 113, + "pauses": [], + "longest_focus_minutes": 113 + }, + "top_dirs": [ + { + "path": "apps/picture/apps/web", + "pct": 21 + }, + { + "path": "packages/shared-nestjs-cors/src", + "pct": 9 + }, + { + "path": "pnpm-lock.yaml", + "pct": 7 + }, + { + "path": "apps/picture/apps/backend", + "pct": 7 + }, + { + "path": "packages/shared-nestjs-cors/package.json", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": "", + "count": 16 + }, + { + "ext": ".ts", + "count": 6 + }, + { + "ext": ".json", + "count": 5 + }, + { + "ext": ".yml", + "count": 5 + }, + { + "ext": ".yaml", + "count": 3 + }, + { + "ext": ".svelte", + "count": 3 + } + ], + "tags": [], + "commits_list": [ + { + "hash": "3504172", + "short": "✨ feat(cors): add cross-app communication bundle", + "type": null, + "scope": null, + "additions": 283, + "deletions": 12, + "timestamp": "2025-12-17T17:57:06+01:00" + }, + { + "hash": "c5d662b", + "short": "✅ test(cors): add comprehensive unit tests for shared-nestjs-cors", + "type": null, + "scope": null, + "additions": 938, + "deletions": 328, + "timestamp": "2025-12-17T18:07:00+01:00" + }, + { + "hash": "1be3d7a", + "short": "🐛 fix(docker): add missing workspace dependencies to all Dockerfiles", + "type": null, + "scope": null, + "additions": 44, + "deletions": 17, + "timestamp": "2025-12-17T18:19:29+01:00" + }, + { + "hash": "47881ae", + "short": "✨ feat(husky): add helpful error messages to git hooks", + "type": null, + "scope": null, + "additions": 38, + "deletions": 4, + "timestamp": "2025-12-17T18:39:41+01:00" + }, + { + "hash": "74654e6", + "short": "🐛 fix(cors): compile shared-nestjs-cors to JavaScript for production", + "type": null, + "scope": null, + "additions": 26, + "deletions": 6, + "timestamp": "2025-12-17T18:42:47+01:00" + }, + { + "hash": "dcdc15f", + "short": "🚀 ci(picture): add picture app to CI/CD deployment pipeline", + "type": null, + "scope": null, + "additions": 285, + "deletions": 2, + "timestamp": "2025-12-17T18:47:42+01:00" + }, + { + "hash": "71cbca0", + "short": "🐛 fix(picture-web): fix Docker build and auth pages", + "type": null, + "scope": null, + "additions": 184, + "deletions": 25, + "timestamp": "2025-12-17T18:58:31+01:00" + }, + { + "hash": "05ad5f1", + "short": "🔧 fix(picture-web): switch from adapter-netlify to adapter-node", + "type": null, + "scope": null, + "additions": 346, + "deletions": 232, + "timestamp": "2025-12-17T19:13:29+01:00" + }, + { + "hash": "70c9196", + "short": "🐛 fix(cors): handle both string and array corsOriginsEnv", + "type": null, + "scope": null, + "additions": 17, + "deletions": 11, + "timestamp": "2025-12-17T19:27:57+01:00" + }, + { + "hash": "1214c78", + "short": "🐛 fix(picture-backend): fix TypeScript output path for Docker", + "type": null, + "scope": null, + "additions": 5, + "deletions": 1, + "timestamp": "2025-12-17T19:49:37+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-17/macher.md b/devlog/2025-12-17/macher.md new file mode 100644 index 000000000..d3c884fca --- /dev/null +++ b/devlog/2025-12-17/macher.md @@ -0,0 +1,27 @@ +--- +date: 2025-12-17 +day: 23 +view: macher +weekday: Mittwoch +commits: 10 +review: written +--- + +# Mittwoch, 2025-12-17 — Tag 23 (Macher-Sicht) + +## Stats + +10 Commits, +2166 / −638 LoC, 32 Files. Top-Dirs: `apps/picture/apps/web` (21%), `packages/shared-nestjs-cors/src` (9%), `pnpm-lock.yaml` (7%), `apps/picture/apps/backend` (7%), `packages/shared-nestjs-cors/package.json` (5%). Tags: —. Session 16:57 → 18:49 (~113 aktive Min, längster Fokus 113 Min). + +## Commits + +- `3504172` ✨ feat(cors): add cross-app communication bundle (+283/-12) +- `c5d662b` ✅ test(cors): add comprehensive unit tests for shared-nestjs-cors (+938/-328) +- `1be3d7a` 🐛 fix(docker): add missing workspace dependencies to all Dockerfiles (+44/-17) +- `47881ae` ✨ feat(husky): add helpful error messages to git hooks (+38/-4) +- `74654e6` 🐛 fix(cors): compile shared-nestjs-cors to JavaScript for production (+26/-6) +- `dcdc15f` 🚀 ci(picture): add picture app to CI/CD deployment pipeline (+285/-2) +- `71cbca0` 🐛 fix(picture-web): fix Docker build and auth pages (+184/-25) +- `05ad5f1` 🔧 fix(picture-web): switch from adapter-netlify to adapter-node (+346/-232) +- `70c9196` 🐛 fix(cors): handle both string and array corsOriginsEnv (+17/-11) +- `1214c78` 🐛 fix(picture-backend): fix TypeScript output path for Docker (+5/-1) diff --git a/devlog/2025-12-17/spieler.md b/devlog/2025-12-17/spieler.md new file mode 100644 index 000000000..cadf02d90 --- /dev/null +++ b/devlog/2025-12-17/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-17 +day: 23 +view: spieler +weekday: Mittwoch +commits: 10 +review: written +--- + +# Mittwoch, 2025-12-17 — Tag 23 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- ✨ feat(cors): add cross-app communication bundle +- ✅ test(cors): add comprehensive unit tests for shared-nestjs-cors +- 🐛 fix(docker): add missing workspace dependencies to all Dockerfiles +- ✨ feat(husky): add helpful error messages to git hooks +- 🐛 fix(cors): compile shared-nestjs-cors to JavaScript for production diff --git a/devlog/2025-12-18/data.json b/devlog/2025-12-18/data.json new file mode 100644 index 000000000..ff52ef176 --- /dev/null +++ b/devlog/2025-12-18/data.json @@ -0,0 +1,206 @@ +{ + "date": "2025-12-18", + "day_number": 24, + "weekday": "Donnerstag", + "commits": 11, + "authors": [ + { + "name": "Wuesteon", + "count": 10 + }, + { + "name": "Till-JS", + "count": 1 + } + ], + "additions": 11359, + "deletions": 4314, + "net_lines": 7045, + "files_changed": 92, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-18T16:03:07.000Z", + "last_commit_at": "2025-12-19T02:26:59.000Z", + "total_span_minutes": 624, + "active_minutes": 48, + "pauses": [ + { + "from": "17:03", + "to": "21:42", + "minutes": 280 + }, + { + "from": "22:28", + "to": "23:25", + "minutes": 57 + }, + { + "from": "23:26", + "to": "02:17", + "minutes": 171 + }, + { + "from": "02:18", + "to": "03:26", + "minutes": 68 + } + ], + "longest_focus_minutes": 46 + }, + "top_dirs": [ + { + "path": "services/mana-core-auth/src", + "pct": 34 + }, + { + "path": "packages/shared-error-tracking/src", + "pct": 10 + }, + { + "path": ".github/workflows/cd-staging.yml", + "pct": 2 + }, + { + "path": "docker-compose.staging.yml", + "pct": 2 + }, + { + "path": "services/mana-core-auth/scripts", + "pct": 2 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 34 + }, + { + "ext": ".md", + "count": 23 + }, + { + "ext": ".json", + "count": 13 + }, + { + "ext": ".yml", + "count": 10 + }, + { + "ext": ".sh", + "count": 5 + }, + { + "ext": ".sql", + "count": 5 + } + ], + "tags": [], + "commits_list": [ + { + "hash": "1cd04a5", + "short": "Merge branch 'dev' into till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-18T17:03:07+01:00" + }, + { + "hash": "4d15d9e", + "short": "🔒 security(auth): migrate to EdDSA JWT and add automated monitoring", + "type": null, + "scope": null, + "additions": 6871, + "deletions": 4155, + "timestamp": "2025-12-18T21:42:47+01:00" + }, + { + "hash": "7f35753", + "short": "🐛 fix(auth-migrations): make initial migration idempotent", + "type": null, + "scope": null, + "additions": 139, + "deletions": 139, + "timestamp": "2025-12-18T22:10:00+01:00" + }, + { + "hash": "5bb1abb", + "short": "🐛 fix(auth-migrations): add missing session columns migration", + "type": null, + "scope": null, + "additions": 74, + "deletions": 0, + "timestamp": "2025-12-18T22:28:28+01:00" + }, + { + "hash": "ffc41b2", + "short": "🐛 fix(auth-migrations): use native ADD COLUMN IF NOT EXISTS syntax", + "type": null, + "scope": null, + "additions": 40, + "deletions": 2, + "timestamp": "2025-12-18T23:25:07+01:00" + }, + { + "hash": "f834986", + "short": "🐛 fix(ci): add db:push fallback when migrations fail", + "type": null, + "scope": null, + "additions": 8, + "deletions": 3, + "timestamp": "2025-12-18T23:26:10+01:00" + }, + { + "hash": "5e1118b", + "short": "✨ feat(error-tracking): add shared error tracking package", + "type": null, + "scope": null, + "additions": 1033, + "deletions": 0, + "timestamp": "2025-12-19T02:17:36+01:00" + }, + { + "hash": "319ccd1", + "short": "✨ feat(auth): add error logs API and database schema", + "type": null, + "scope": null, + "additions": 527, + "deletions": 0, + "timestamp": "2025-12-19T02:17:55+01:00" + }, + { + "hash": "9e771c9", + "short": "🔧 chore(auth): improve migration safety and docker setup", + "type": null, + "scope": null, + "additions": 353, + "deletions": 5, + "timestamp": "2025-12-19T02:18:31+01:00" + }, + { + "hash": "2784143", + "short": "📝 docs: add error tracking and security documentation", + "type": null, + "scope": null, + "additions": 2287, + "deletions": 0, + "timestamp": "2025-12-19T02:18:42+01:00" + }, + { + "hash": "834b11d", + "short": "🐛 fix(staging): add missing PUBLIC_*_CLIENT env vars for runtime config", + "type": null, + "scope": null, + "additions": 27, + "deletions": 10, + "timestamp": "2025-12-19T03:26:59+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-18/macher.md b/devlog/2025-12-18/macher.md new file mode 100644 index 000000000..22b1ebf6a --- /dev/null +++ b/devlog/2025-12-18/macher.md @@ -0,0 +1,28 @@ +--- +date: 2025-12-18 +day: 24 +view: macher +weekday: Donnerstag +commits: 11 +review: written +--- + +# Donnerstag, 2025-12-18 — Tag 24 (Macher-Sicht) + +## Stats + +11 Commits, +11359 / −4314 LoC, 92 Files. Top-Dirs: `services/mana-core-auth/src` (34%), `packages/shared-error-tracking/src` (10%), `.github/workflows/cd-staging.yml` (2%), `docker-compose.staging.yml` (2%), `services/mana-core-auth/scripts` (2%). Tags: —. Session 16:03 → 02:26 (~48 aktive Min, längster Fokus 46 Min). + +## Commits + +- `1cd04a5` Merge branch 'dev' into till-dev (+0/-0) +- `4d15d9e` 🔒 security(auth): migrate to EdDSA JWT and add automated monitoring (+6871/-4155) +- `7f35753` 🐛 fix(auth-migrations): make initial migration idempotent (+139/-139) +- `5bb1abb` 🐛 fix(auth-migrations): add missing session columns migration (+74/-0) +- `ffc41b2` 🐛 fix(auth-migrations): use native ADD COLUMN IF NOT EXISTS syntax (+40/-2) +- `f834986` 🐛 fix(ci): add db:push fallback when migrations fail (+8/-3) +- `5e1118b` ✨ feat(error-tracking): add shared error tracking package (+1033/-0) +- `319ccd1` ✨ feat(auth): add error logs API and database schema (+527/-0) +- `9e771c9` 🔧 chore(auth): improve migration safety and docker setup (+353/-5) +- `2784143` 📝 docs: add error tracking and security documentation (+2287/-0) +- `834b11d` 🐛 fix(staging): add missing PUBLIC\_\*\_CLIENT env vars for runtime config (+27/-10) diff --git a/devlog/2025-12-18/spieler.md b/devlog/2025-12-18/spieler.md new file mode 100644 index 000000000..7a7757f23 --- /dev/null +++ b/devlog/2025-12-18/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-18 +day: 24 +view: spieler +weekday: Donnerstag +commits: 11 +review: written +--- + +# Donnerstag, 2025-12-18 — Tag 24 + +Dichter Tag in **services** und Umgebung. + +## Highlights + +- 🔒 security(auth): migrate to EdDSA JWT and add automated monitoring +- 🐛 fix(auth-migrations): make initial migration idempotent +- 🐛 fix(auth-migrations): add missing session columns migration +- 🐛 fix(auth-migrations): use native ADD COLUMN IF NOT EXISTS syntax +- 🐛 fix(ci): add db:push fallback when migrations fail diff --git a/devlog/2025-12-19/data.json b/devlog/2025-12-19/data.json new file mode 100644 index 000000000..c9b36340c --- /dev/null +++ b/devlog/2025-12-19/data.json @@ -0,0 +1,45 @@ +{ + "date": "2025-12-19", + "day_number": 25, + "weekday": "Freitag", + "commits": 1, + "authors": [ + { + "name": "Wuesteon", + "count": 1 + } + ], + "additions": 0, + "deletions": 0, + "net_lines": 0, + "files_changed": 0, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-19T18:29:29.000Z", + "last_commit_at": "2025-12-19T18:29:29.000Z", + "total_span_minutes": 0, + "active_minutes": 0, + "pauses": [], + "longest_focus_minutes": 0 + }, + "top_dirs": [], + "top_extensions": [], + "tags": [], + "commits_list": [ + { + "hash": "bb4189f", + "short": "Merge branch 'dev' into till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-19T19:29:29+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-19/macher.md b/devlog/2025-12-19/macher.md new file mode 100644 index 000000000..8ff1489d2 --- /dev/null +++ b/devlog/2025-12-19/macher.md @@ -0,0 +1,18 @@ +--- +date: 2025-12-19 +day: 25 +view: macher +weekday: Freitag +commits: 1 +review: written +--- + +# Freitag, 2025-12-19 — Tag 25 (Macher-Sicht) + +## Stats + +1 Commits, +0 / −0 LoC, 0 Files. Top-Dirs: —. Tags: —. Session 18:29 → 18:29 (~0 aktive Min, längster Fokus 0 Min). + +## Commits + +- `bb4189f` Merge branch 'dev' into till-dev (+0/-0) diff --git a/devlog/2025-12-19/spieler.md b/devlog/2025-12-19/spieler.md new file mode 100644 index 000000000..187f55973 --- /dev/null +++ b/devlog/2025-12-19/spieler.md @@ -0,0 +1,14 @@ +--- +date: 2025-12-19 +day: 25 +view: spieler +weekday: Freitag +commits: 1 +review: written +--- + +# Freitag, 2025-12-19 — Tag 25 + +Ein kleinerer Schritt in **managarten**. + +Hintergrund-Arbeit: Aufräumen, Refactor, Doku — nichts End-User-Sichtbares an diesem Tag. diff --git a/devlog/2025-12-24/data.json b/devlog/2025-12-24/data.json new file mode 100644 index 000000000..24f28d180 --- /dev/null +++ b/devlog/2025-12-24/data.json @@ -0,0 +1,45 @@ +{ + "date": "2025-12-24", + "day_number": 26, + "weekday": "Mittwoch", + "commits": 1, + "authors": [ + { + "name": "Wuesteon", + "count": 1 + } + ], + "additions": 0, + "deletions": 0, + "net_lines": 0, + "files_changed": 0, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-24T21:49:01.000Z", + "last_commit_at": "2025-12-24T21:49:01.000Z", + "total_span_minutes": 0, + "active_minutes": 0, + "pauses": [], + "longest_focus_minutes": 0 + }, + "top_dirs": [], + "top_extensions": [], + "tags": [], + "commits_list": [ + { + "hash": "42bb44b", + "short": "Merge branch 'till-dev' into dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-24T22:49:01+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-24/macher.md b/devlog/2025-12-24/macher.md new file mode 100644 index 000000000..c5f7ea546 --- /dev/null +++ b/devlog/2025-12-24/macher.md @@ -0,0 +1,18 @@ +--- +date: 2025-12-24 +day: 26 +view: macher +weekday: Mittwoch +commits: 1 +review: written +--- + +# Mittwoch, 2025-12-24 — Tag 26 (Macher-Sicht) + +## Stats + +1 Commits, +0 / −0 LoC, 0 Files. Top-Dirs: —. Tags: —. Session 21:49 → 21:49 (~0 aktive Min, längster Fokus 0 Min). + +## Commits + +- `42bb44b` Merge branch 'till-dev' into dev (+0/-0) diff --git a/devlog/2025-12-24/spieler.md b/devlog/2025-12-24/spieler.md new file mode 100644 index 000000000..2f433a3ce --- /dev/null +++ b/devlog/2025-12-24/spieler.md @@ -0,0 +1,14 @@ +--- +date: 2025-12-24 +day: 26 +view: spieler +weekday: Mittwoch +commits: 1 +review: written +--- + +# Mittwoch, 2025-12-24 — Tag 26 + +Ein kleinerer Schritt in **managarten**. + +Hintergrund-Arbeit: Aufräumen, Refactor, Doku — nichts End-User-Sichtbares an diesem Tag. diff --git a/devlog/2025-12-25/data.json b/devlog/2025-12-25/data.json new file mode 100644 index 000000000..c067c8708 --- /dev/null +++ b/devlog/2025-12-25/data.json @@ -0,0 +1,193 @@ +{ + "date": "2025-12-25", + "day_number": 27, + "weekday": "Donnerstag", + "commits": 10, + "authors": [ + { + "name": "Wuesteon", + "count": 10 + } + ], + "additions": 5662, + "deletions": 1295856, + "net_lines": -1290194, + "files_changed": 5022, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-25T16:07:55.000Z", + "last_commit_at": "2025-12-25T20:09:27.000Z", + "total_span_minutes": 242, + "active_minutes": 46, + "pauses": [ + { + "from": "17:23", + "to": "17:57", + "minutes": 34 + }, + { + "from": "17:58", + "to": "19:12", + "minutes": 74 + }, + { + "from": "19:12", + "to": "20:03", + "minutes": 51 + }, + { + "from": "20:07", + "to": "20:44", + "minutes": 37 + } + ], + "longest_focus_minutes": 25 + }, + "top_dirs": [ + { + "path": "apps-archived/memoro/apps", + "pct": 27 + }, + { + "path": "apps-archived/maerchenzauber/apps", + "pct": 10 + }, + { + "path": "apps-archived/uload/apps", + "pct": 6 + }, + { + "path": "apps-archived/bauntown/apps", + "pct": 5 + }, + { + "path": "apps/zitare/apps/mobile", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 1439 + }, + { + "ext": ".md", + "count": 665 + }, + { + "ext": ".svelte", + "count": 538 + }, + { + "ext": ".tsx", + "count": 534 + }, + { + "ext": ".json", + "count": 375 + }, + { + "ext": ".astro", + "count": 347 + } + ], + "tags": ["tests"], + "commits_list": [ + { + "hash": "9bba761", + "short": "fix todo backend docker file", + "type": null, + "scope": null, + "additions": 9, + "deletions": 7, + "timestamp": "2025-12-25T17:07:55+01:00" + }, + { + "hash": "079b55a", + "short": "delete old apps due to context pollution", + "type": null, + "scope": null, + "additions": 71, + "deletions": 1292371, + "timestamp": "2025-12-25T17:23:14+01:00" + }, + { + "hash": "5b7d3c6", + "short": "🔧 chore: enforce monorepo best practices with automated validation", + "type": null, + "scope": null, + "additions": 304, + "deletions": 25, + "timestamp": "2025-12-25T17:57:00+01:00" + }, + { + "hash": "9dbd6e6", + "short": "✨ feat(auth): implement sliding window refresh token expiration", + "type": null, + "scope": null, + "additions": 128, + "deletions": 2936, + "timestamp": "2025-12-25T17:58:20+01:00" + }, + { + "hash": "3048972", + "short": "✅ test: implement comprehensive automated testing system with daily CI/CD", + "type": null, + "scope": null, + "additions": 5017, + "deletions": 16, + "timestamp": "2025-12-25T19:12:27+01:00" + }, + { + "hash": "cfc5c10", + "short": "fix(tests): add missing service mocks to e2e integration tests", + "type": "fix", + "scope": "tests", + "additions": 28, + "deletions": 1, + "timestamp": "2025-12-25T20:03:14+01:00" + }, + { + "hash": "dfdd045", + "short": "🔧 refactor(ci): simplify daily tests to auth + integration only", + "type": null, + "scope": null, + "additions": 75, + "deletions": 488, + "timestamp": "2025-12-25T20:07:25+01:00" + }, + { + "hash": "2186cb3", + "short": "🐛 fix(ci): use db:migrate instead of db:push for test databases", + "type": null, + "scope": null, + "additions": 3, + "deletions": 7, + "timestamp": "2025-12-25T20:44:38+01:00" + }, + { + "hash": "111e7dd", + "short": "🐛 fix(docker): add missing build-shared-packages.sh script for Docker builds", + "type": null, + "scope": null, + "additions": 26, + "deletions": 0, + "timestamp": "2025-12-25T20:51:15+01:00" + }, + { + "hash": "7b365ed", + "short": "🐛 fix(docker): remove unnecessary build step for todo shared package", + "type": null, + "scope": null, + "additions": 1, + "deletions": 5, + "timestamp": "2025-12-25T21:09:27+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-25/macher.md b/devlog/2025-12-25/macher.md new file mode 100644 index 000000000..dbed46413 --- /dev/null +++ b/devlog/2025-12-25/macher.md @@ -0,0 +1,27 @@ +--- +date: 2025-12-25 +day: 27 +view: macher +weekday: Donnerstag +commits: 10 +review: written +--- + +# Donnerstag, 2025-12-25 — Tag 27 (Macher-Sicht) + +## Stats + +10 Commits, +5662 / −1295856 LoC, 5022 Files. Top-Dirs: `apps-archived/memoro/apps` (27%), `apps-archived/maerchenzauber/apps` (10%), `apps-archived/uload/apps` (6%), `apps-archived/bauntown/apps` (5%), `apps/zitare/apps/mobile` (4%). Tags: tests. Session 16:07 → 20:09 (~46 aktive Min, längster Fokus 25 Min). + +## Commits + +- `9bba761` fix todo backend docker file (+9/-7) +- `079b55a` delete old apps due to context pollution (+71/-1292371) +- `5b7d3c6` 🔧 chore: enforce monorepo best practices with automated validation (+304/-25) +- `9dbd6e6` ✨ feat(auth): implement sliding window refresh token expiration (+128/-2936) +- `3048972` ✅ test: implement comprehensive automated testing system with daily CI/CD (+5017/-16) +- `cfc5c10` fix(tests): add missing service mocks to e2e integration tests (+28/-1) +- `dfdd045` 🔧 refactor(ci): simplify daily tests to auth + integration only (+75/-488) +- `2186cb3` 🐛 fix(ci): use db:migrate instead of db:push for test databases (+3/-7) +- `111e7dd` 🐛 fix(docker): add missing build-shared-packages.sh script for Docker builds (+26/-0) +- `7b365ed` 🐛 fix(docker): remove unnecessary build step for todo shared package (+1/-5) diff --git a/devlog/2025-12-25/spieler.md b/devlog/2025-12-25/spieler.md new file mode 100644 index 000000000..712d42ebf --- /dev/null +++ b/devlog/2025-12-25/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2025-12-25 +day: 27 +view: spieler +weekday: Donnerstag +commits: 10 +review: written +--- + +# Donnerstag, 2025-12-25 — Tag 27 + +Dichter Tag in **apps-archived** und Umgebung. + +## Highlights + +- fix todo backend docker file +- delete old apps due to context pollution +- 🔧 chore: enforce monorepo best practices with automated validation +- ✨ feat(auth): implement sliding window refresh token expiration +- ✅ test: implement comprehensive automated testing system with daily CI/CD diff --git a/devlog/2025-12-29/data.json b/devlog/2025-12-29/data.json new file mode 100644 index 000000000..d9b05330e --- /dev/null +++ b/devlog/2025-12-29/data.json @@ -0,0 +1,45 @@ +{ + "date": "2025-12-29", + "day_number": 28, + "weekday": "Montag", + "commits": 1, + "authors": [ + { + "name": "Till-JS", + "count": 1 + } + ], + "additions": 0, + "deletions": 0, + "net_lines": 0, + "files_changed": 0, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2025-12-29T20:22:25.000Z", + "last_commit_at": "2025-12-29T20:22:25.000Z", + "total_span_minutes": 0, + "active_minutes": 0, + "pauses": [], + "longest_focus_minutes": 0 + }, + "top_dirs": [], + "top_extensions": [], + "tags": [], + "commits_list": [ + { + "hash": "b3b6bfa", + "short": "Merge branch 'till-dev' of https://github.com/Memo-2023/manacore-monorepo into till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2025-12-29T21:22:25+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2025-12-29/macher.md b/devlog/2025-12-29/macher.md new file mode 100644 index 000000000..56a4ced29 --- /dev/null +++ b/devlog/2025-12-29/macher.md @@ -0,0 +1,18 @@ +--- +date: 2025-12-29 +day: 28 +view: macher +weekday: Montag +commits: 1 +review: written +--- + +# Montag, 2025-12-29 — Tag 28 (Macher-Sicht) + +## Stats + +1 Commits, +0 / −0 LoC, 0 Files. Top-Dirs: —. Tags: —. Session 20:22 → 20:22 (~0 aktive Min, längster Fokus 0 Min). + +## Commits + +- `b3b6bfa` Merge branch 'till-dev' of https://github.com/Memo-2023/manacore-monorepo into till-dev (+0/-0) diff --git a/devlog/2025-12-29/spieler.md b/devlog/2025-12-29/spieler.md new file mode 100644 index 000000000..ce0ebbc1f --- /dev/null +++ b/devlog/2025-12-29/spieler.md @@ -0,0 +1,14 @@ +--- +date: 2025-12-29 +day: 28 +view: spieler +weekday: Montag +commits: 1 +review: written +--- + +# Montag, 2025-12-29 — Tag 28 + +Ein kleinerer Schritt in **managarten**. + +Hintergrund-Arbeit: Aufräumen, Refactor, Doku — nichts End-User-Sichtbares an diesem Tag. diff --git a/devlog/2026-01-15/data.json b/devlog/2026-01-15/data.json new file mode 100644 index 000000000..ff54c66cf --- /dev/null +++ b/devlog/2026-01-15/data.json @@ -0,0 +1,45 @@ +{ + "date": "2026-01-15", + "day_number": 29, + "weekday": "Donnerstag", + "commits": 1, + "authors": [ + { + "name": "Till-JS", + "count": 1 + } + ], + "additions": 0, + "deletions": 0, + "net_lines": 0, + "files_changed": 0, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-15T13:56:02.000Z", + "last_commit_at": "2026-01-15T13:56:02.000Z", + "total_span_minutes": 0, + "active_minutes": 0, + "pauses": [], + "longest_focus_minutes": 0 + }, + "top_dirs": [], + "top_extensions": [], + "tags": [], + "commits_list": [ + { + "hash": "9afae2e", + "short": "Merge branch 'till-dev' of https://github.com/Memo-2023/manacore-monorepo into till-dev", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2026-01-15T14:56:02+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-15/macher.md b/devlog/2026-01-15/macher.md new file mode 100644 index 000000000..c52886b61 --- /dev/null +++ b/devlog/2026-01-15/macher.md @@ -0,0 +1,18 @@ +--- +date: 2026-01-15 +day: 29 +view: macher +weekday: Donnerstag +commits: 1 +review: written +--- + +# Donnerstag, 2026-01-15 — Tag 29 (Macher-Sicht) + +## Stats + +1 Commits, +0 / −0 LoC, 0 Files. Top-Dirs: —. Tags: —. Session 13:56 → 13:56 (~0 aktive Min, längster Fokus 0 Min). + +## Commits + +- `9afae2e` Merge branch 'till-dev' of https://github.com/Memo-2023/manacore-monorepo into till-dev (+0/-0) diff --git a/devlog/2026-01-15/spieler.md b/devlog/2026-01-15/spieler.md new file mode 100644 index 000000000..32002b350 --- /dev/null +++ b/devlog/2026-01-15/spieler.md @@ -0,0 +1,14 @@ +--- +date: 2026-01-15 +day: 29 +view: spieler +weekday: Donnerstag +commits: 1 +review: written +--- + +# Donnerstag, 2026-01-15 — Tag 29 + +Ein kleinerer Schritt in **managarten**. + +Hintergrund-Arbeit: Aufräumen, Refactor, Doku — nichts End-User-Sichtbares an diesem Tag. diff --git a/devlog/2026-01-18/data.json b/devlog/2026-01-18/data.json new file mode 100644 index 000000000..4370b09de --- /dev/null +++ b/devlog/2026-01-18/data.json @@ -0,0 +1,115 @@ +{ + "date": "2026-01-18", + "day_number": 30, + "weekday": "Sonntag", + "commits": 3, + "authors": [ + { + "name": "Till-JS", + "count": 3 + } + ], + "additions": 4311, + "deletions": 2212, + "net_lines": 2099, + "files_changed": 74, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-18T13:57:16.000Z", + "last_commit_at": "2026-01-18T14:43:16.000Z", + "total_span_minutes": 46, + "active_minutes": 3, + "pauses": [ + { + "from": "14:57", + "to": "15:40", + "minutes": 43 + } + ], + "longest_focus_minutes": 3 + }, + "top_dirs": [ + { + "path": "apps/planta/apps/backend", + "pct": 41 + }, + { + "path": "apps/planta/apps/web", + "pct": 31 + }, + { + "path": "apps/clock/packages/shared", + "pct": 12 + }, + { + "path": "apps/planta/packages/shared", + "pct": 5 + }, + { + "path": "pnpm-lock.yaml", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 45 + }, + { + "ext": ".json", + "count": 11 + }, + { + "ext": ".svelte", + "count": 10 + }, + { + "ext": ".yaml", + "count": 2 + }, + { + "ext": ".development", + "count": 1 + }, + { + "ext": ".md", + "count": 1 + } + ], + "tags": [], + "commits_list": [ + { + "hash": "e22961e", + "short": "✨ feat(planta): add plant care tracking application", + "type": null, + "scope": null, + "additions": 3840, + "deletions": 3, + "timestamp": "2026-01-18T14:57:16+01:00" + }, + { + "hash": "49a8c65", + "short": "🔀 merge: integrate till-dev into main", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2026-01-18T15:40:43+01:00" + }, + { + "hash": "e02a94a", + "short": "🐛 fix: restore missing clock shared package", + "type": null, + "scope": null, + "additions": 471, + "deletions": 2209, + "timestamp": "2026-01-18T15:43:16+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-18/macher.md b/devlog/2026-01-18/macher.md new file mode 100644 index 000000000..a28ad0100 --- /dev/null +++ b/devlog/2026-01-18/macher.md @@ -0,0 +1,20 @@ +--- +date: 2026-01-18 +day: 30 +view: macher +weekday: Sonntag +commits: 3 +review: written +--- + +# Sonntag, 2026-01-18 — Tag 30 (Macher-Sicht) + +## Stats + +3 Commits, +4311 / −2212 LoC, 74 Files. Top-Dirs: `apps/planta/apps/backend` (41%), `apps/planta/apps/web` (31%), `apps/clock/packages/shared` (12%), `apps/planta/packages/shared` (5%), `pnpm-lock.yaml` (3%). Tags: —. Session 13:57 → 14:43 (~3 aktive Min, längster Fokus 3 Min). + +## Commits + +- `e22961e` ✨ feat(planta): add plant care tracking application (+3840/-3) +- `49a8c65` 🔀 merge: integrate till-dev into main (+0/-0) +- `e02a94a` 🐛 fix: restore missing clock shared package (+471/-2209) diff --git a/devlog/2026-01-18/spieler.md b/devlog/2026-01-18/spieler.md new file mode 100644 index 000000000..98a59e925 --- /dev/null +++ b/devlog/2026-01-18/spieler.md @@ -0,0 +1,18 @@ +--- +date: 2026-01-18 +day: 30 +view: spieler +weekday: Sonntag +commits: 3 +review: written +--- + +# Sonntag, 2026-01-18 — Tag 30 + +Kurzer Arbeitstag, Schwerpunkt **apps**. + +## Highlights + +- ✨ feat(planta): add plant care tracking application +- 🔀 merge: integrate till-dev into main +- 🐛 fix: restore missing clock shared package diff --git a/devlog/2026-01-22/data.json b/devlog/2026-01-22/data.json new file mode 100644 index 000000000..aceef3bf0 --- /dev/null +++ b/devlog/2026-01-22/data.json @@ -0,0 +1,228 @@ +{ + "date": "2026-01-22", + "day_number": 31, + "weekday": "Donnerstag", + "commits": 14, + "authors": [ + { + "name": "Till-JS", + "count": 13 + }, + { + "name": "Till JS", + "count": 1 + } + ], + "additions": 3143, + "deletions": 56, + "net_lines": 3087, + "files_changed": 49, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-22T18:17:37.000Z", + "last_commit_at": "2026-01-23T00:23:58.000Z", + "total_span_minutes": 366, + "active_minutes": 79, + "pauses": [ + { + "from": "19:49", + "to": "22:48", + "minutes": 180 + }, + { + "from": "22:51", + "to": "23:55", + "minutes": 64 + }, + { + "from": "00:30", + "to": "01:13", + "minutes": 43 + } + ], + "longest_focus_minutes": 35 + }, + "top_dirs": [ + { + "path": "apps/clock/apps/web", + "pct": 52 + }, + { + "path": "apps/calendar/apps/web", + "pct": 5 + }, + { + "path": "apps/todo/apps/web", + "pct": 5 + }, + { + "path": ".github/workflows/ci.yml", + "pct": 3 + }, + { + "path": "cloudflared-config.yml", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 18 + }, + { + "ext": "", + "count": 9 + }, + { + "ext": ".json", + "count": 8 + }, + { + "ext": ".yml", + "count": 6 + }, + { + "ext": ".svelte", + "count": 6 + }, + { + "ext": ".sh", + "count": 4 + } + ], + "tags": ["clock-web", "ci"], + "commits_list": [ + { + "hash": "4ebe3ec", + "short": "feat: add multi-arch Docker builds and Mac Mini deployment", + "type": null, + "scope": null, + "additions": 823, + "deletions": 0, + "timestamp": "2026-01-22T19:17:37+01:00" + }, + { + "hash": "4023390", + "short": "feat: add SSH access via Cloudflare Tunnel", + "type": null, + "scope": null, + "additions": 52, + "deletions": 0, + "timestamp": "2026-01-22T19:27:39+01:00" + }, + { + "hash": "346c28f", + "short": "Merge pull request #22 from Memo-2023/feat/mac-mini-arm64-deployment", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2026-01-22T19:49:27+01:00" + }, + { + "hash": "e29f521", + "short": "fix: resolve build errors for mana-core-auth and clock-backend", + "type": null, + "scope": null, + "additions": 30, + "deletions": 4, + "timestamp": "2026-01-22T22:48:58+01:00" + }, + { + "hash": "f3c1c8e", + "short": "docs: add Mac Mini setup checklist", + "type": null, + "scope": null, + "additions": 180, + "deletions": 0, + "timestamp": "2026-01-22T22:51:11+01:00" + }, + { + "hash": "a7783ca", + "short": "fix: add BETTER_AUTH_SECRET to mac mini compose", + "type": null, + "scope": null, + "additions": 1, + "deletions": 0, + "timestamp": "2026-01-22T23:55:10+01:00" + }, + { + "hash": "deb8bae", + "short": "fix: resolve Docker build errors for web apps", + "type": null, + "scope": null, + "additions": 17, + "deletions": 0, + "timestamp": "2026-01-23T00:03:00+01:00" + }, + { + "hash": "569629d", + "short": "feat(ci): implement selective builds for faster CI", + "type": "feat", + "scope": "ci", + "additions": 493, + "deletions": 52, + "timestamp": "2026-01-23T00:11:23+01:00" + }, + { + "hash": "438ee89", + "short": "fix: add prepare scripts to web apps for svelte-kit sync", + "type": null, + "scope": null, + "additions": 4, + "deletions": 0, + "timestamp": "2026-01-23T00:14:06+01:00" + }, + { + "hash": "800bcd8", + "short": "fix: add svelte-kit sync to Dockerfiles before build", + "type": null, + "scope": null, + "additions": 5, + "deletions": 0, + "timestamp": "2026-01-23T00:21:02+01:00" + }, + { + "hash": "9936a12", + "short": "fix(clock-web): add missing SvelteKit config files", + "type": "fix", + "scope": "clock-web", + "additions": 75, + "deletions": 0, + "timestamp": "2026-01-23T00:24:03+01:00" + }, + { + "hash": "42c75bd", + "short": "fix(clock-web): add missing source files for build", + "type": "fix", + "scope": "clock-web", + "additions": 326, + "deletions": 0, + "timestamp": "2026-01-23T00:30:10+01:00" + }, + { + "hash": "6d65f3b", + "short": "fix(clock-web): add all missing stores, APIs, and components", + "type": "fix", + "scope": "clock-web", + "additions": 1134, + "deletions": 0, + "timestamp": "2026-01-23T01:13:17+01:00" + }, + { + "hash": "2164d4a", + "short": "fix(clock-web): add toast export alias for compatibility", + "type": "fix", + "scope": "clock-web", + "additions": 3, + "deletions": 0, + "timestamp": "2026-01-23T01:23:58+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-22/macher.md b/devlog/2026-01-22/macher.md new file mode 100644 index 000000000..5afc9441f --- /dev/null +++ b/devlog/2026-01-22/macher.md @@ -0,0 +1,31 @@ +--- +date: 2026-01-22 +day: 31 +view: macher +weekday: Donnerstag +commits: 14 +review: written +--- + +# Donnerstag, 2026-01-22 — Tag 31 (Macher-Sicht) + +## Stats + +14 Commits, +3143 / −56 LoC, 49 Files. Top-Dirs: `apps/clock/apps/web` (52%), `apps/calendar/apps/web` (5%), `apps/todo/apps/web` (5%), `.github/workflows/ci.yml` (3%), `cloudflared-config.yml` (3%). Tags: clock-web, ci. Session 18:17 → 00:23 (~79 aktive Min, längster Fokus 35 Min). + +## Commits + +- `4ebe3ec` feat: add multi-arch Docker builds and Mac Mini deployment (+823/-0) +- `4023390` feat: add SSH access via Cloudflare Tunnel (+52/-0) +- `346c28f` Merge pull request #22 from Memo-2023/feat/mac-mini-arm64-deployment (+0/-0) +- `e29f521` fix: resolve build errors for mana-core-auth and clock-backend (+30/-4) +- `f3c1c8e` docs: add Mac Mini setup checklist (+180/-0) +- `a7783ca` fix: add BETTER_AUTH_SECRET to mac mini compose (+1/-0) +- `deb8bae` fix: resolve Docker build errors for web apps (+17/-0) +- `569629d` feat(ci): implement selective builds for faster CI (+493/-52) +- `438ee89` fix: add prepare scripts to web apps for svelte-kit sync (+4/-0) +- `800bcd8` fix: add svelte-kit sync to Dockerfiles before build (+5/-0) +- `9936a12` fix(clock-web): add missing SvelteKit config files (+75/-0) +- `42c75bd` fix(clock-web): add missing source files for build (+326/-0) +- `6d65f3b` fix(clock-web): add all missing stores, APIs, and components (+1134/-0) +- `2164d4a` fix(clock-web): add toast export alias for compatibility (+3/-0) diff --git a/devlog/2026-01-22/spieler.md b/devlog/2026-01-22/spieler.md new file mode 100644 index 000000000..7fd666e13 --- /dev/null +++ b/devlog/2026-01-22/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-01-22 +day: 31 +view: spieler +weekday: Donnerstag +commits: 14 +review: written +--- + +# Donnerstag, 2026-01-22 — Tag 31 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- add multi-arch Docker builds and Mac Mini deployment +- add SSH access via Cloudflare Tunnel +- resolve build errors for mana-core-auth and clock-backend +- add Mac Mini setup checklist +- add BETTER_AUTH_SECRET to mac mini compose diff --git a/devlog/2026-01-23/data.json b/devlog/2026-01-23/data.json new file mode 100644 index 000000000..20727caea --- /dev/null +++ b/devlog/2026-01-23/data.json @@ -0,0 +1,432 @@ +{ + "date": "2026-01-23", + "day_number": 32, + "weekday": "Freitag", + "commits": 36, + "authors": [ + { + "name": "Till-JS", + "count": 36 + } + ], + "additions": 19273, + "deletions": 985, + "net_lines": 18288, + "files_changed": 175, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-23T10:48:24.000Z", + "last_commit_at": "2026-01-23T20:16:20.000Z", + "total_span_minutes": 568, + "active_minutes": 257, + "pauses": [ + { + "from": "12:47", + "to": "13:18", + "minutes": 31 + }, + { + "from": "14:32", + "to": "15:31", + "minutes": 59 + }, + { + "from": "16:45", + "to": "17:46", + "minutes": 62 + }, + { + "from": "18:03", + "to": "20:08", + "minutes": 125 + }, + { + "from": "20:41", + "to": "21:15", + "minutes": 34 + } + ], + "longest_focus_minutes": 74 + }, + "top_dirs": [ + { + "path": "packages/shared-landing-ui/src", + "pct": 8 + }, + { + "path": "apps/clock/apps/landing", + "pct": 7 + }, + { + "path": "services/telegram-stats-bot/src", + "pct": 7 + }, + { + "path": "apps/manacore/apps/web", + "pct": 6 + }, + { + "path": "apps/clock/apps/web", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".astro", + "count": 48 + }, + { + "ext": ".ts", + "count": 42 + }, + { + "ext": ".svelte", + "count": 29 + }, + { + "ext": ".html", + "count": 21 + }, + { + "ext": ".sh", + "count": 20 + }, + { + "ext": ".yml", + "count": 14 + } + ], + "tags": ["infra", "mac-mini", "analytics", "landing", "devlog"], + "commits_list": [ + { + "hash": "93060dc", + "short": "feat(mac-mini): add auto-start and management scripts", + "type": "feat", + "scope": "mac-mini", + "additions": 843, + "deletions": 0, + "timestamp": "2026-01-23T11:48:24+01:00" + }, + { + "hash": "732aa79", + "short": "fix(mac-mini): add PATH export for Docker CLI in all scripts", + "type": "fix", + "scope": "mac-mini", + "additions": 18, + "deletions": 0, + "timestamp": "2026-01-23T12:17:24+01:00" + }, + { + "hash": "bff168e", + "short": "fix(docker): correct todo-backend health check path", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-23T12:18:26+01:00" + }, + { + "hash": "c512592", + "short": "fix(mac-mini): correct health check endpoints", + "type": "fix", + "scope": "mac-mini", + "additions": 6, + "deletions": 7, + "timestamp": "2026-01-23T12:21:40+01:00" + }, + { + "hash": "650b05b", + "short": "fix(clock-backend): specify drizzle config path in entrypoint", + "type": "fix", + "scope": "clock-backend", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-23T12:24:27+01:00" + }, + { + "hash": "515d603", + "short": "feat(clock-web): add dashboard page for root route", + "type": "feat", + "scope": "clock-web", + "additions": 118, + "deletions": 0, + "timestamp": "2026-01-23T12:47:14+01:00" + }, + { + "hash": "de6151a", + "short": "feat(mac-mini): add notification system for health checks", + "type": "feat", + "scope": "mac-mini", + "additions": 386, + "deletions": 16, + "timestamp": "2026-01-23T13:18:04+01:00" + }, + { + "hash": "2b7c665", + "short": "docs: add Mac Mini server documentation", + "type": null, + "scope": null, + "additions": 394, + "deletions": 0, + "timestamp": "2026-01-23T13:42:08+01:00" + }, + { + "hash": "c2010ce", + "short": "docs: add mail server planning documentation", + "type": null, + "scope": null, + "additions": 971, + "deletions": 0, + "timestamp": "2026-01-23T13:53:03+01:00" + }, + { + "hash": "294074f", + "short": "fix(calendar-web): add cross-app API URLs for todo and contacts", + "type": "fix", + "scope": "calendar-web", + "additions": 3, + "deletions": 0, + "timestamp": "2026-01-23T14:15:15+01:00" + }, + { + "hash": "bb5f145", + "short": "feat(contacts): add Docker deployment for Mac Mini", + "type": "feat", + "scope": "contacts", + "additions": 309, + "deletions": 1, + "timestamp": "2026-01-23T14:23:49+01:00" + }, + { + "hash": "ad7a84f", + "short": "fix(contacts-web): use adapter-node for Docker deployment", + "type": "fix", + "scope": "contacts-web", + "additions": 54, + "deletions": 6, + "timestamp": "2026-01-23T14:32:16+01:00" + }, + { + "hash": "6d86a08", + "short": "feat: add monitoring dashboard (Prometheus + Grafana + Umami + Admin)", + "type": null, + "scope": null, + "additions": 2751, + "deletions": 531, + "timestamp": "2026-01-23T15:31:39+01:00" + }, + { + "hash": "264149a", + "short": "✨ feat(shared-landing-ui): unify landing pages with shared components", + "type": null, + "scope": null, + "additions": 3589, + "deletions": 1, + "timestamp": "2026-01-23T15:45:47+01:00" + }, + { + "hash": "1868a7f", + "short": "refactor: change Umami analytics URL from analytics.mana.how to stats.mana.how", + "type": null, + "scope": null, + "additions": 18, + "deletions": 22, + "timestamp": "2026-01-23T16:11:24+01:00" + }, + { + "hash": "d03aaeb", + "short": "fix(contacts-backend): add missing multer dependency", + "type": "fix", + "scope": "contacts-backend", + "additions": 530, + "deletions": 154, + "timestamp": "2026-01-23T16:18:50+01:00" + }, + { + "hash": "639041a", + "short": "feat(analytics): add Umami website IDs for all landing pages", + "type": "feat", + "scope": "analytics", + "additions": 11, + "deletions": 7, + "timestamp": "2026-01-23T16:19:56+01:00" + }, + { + "hash": "44e6a63", + "short": "feat(analytics): add Umami website IDs for all web apps", + "type": "feat", + "scope": "analytics", + "additions": 6, + "deletions": 6, + "timestamp": "2026-01-23T16:29:43+01:00" + }, + { + "hash": "c399474", + "short": "feat(infra): add MinIO for object storage and configure contacts-backend", + "type": "feat", + "scope": "infra", + "additions": 29, + "deletions": 0, + "timestamp": "2026-01-23T16:45:10+01:00" + }, + { + "hash": "d3dd26b", + "short": "✨ feat(shared-landing-ui): add centralized Mana pricing system", + "type": null, + "scope": null, + "additions": 1469, + "deletions": 2, + "timestamp": "2026-01-23T17:46:41+01:00" + }, + { + "hash": "5e54bcc", + "short": "feat(analytics): add Umami tracking to remaining apps", + "type": "feat", + "scope": "analytics", + "additions": 20, + "deletions": 20, + "timestamp": "2026-01-23T17:49:18+01:00" + }, + { + "hash": "447dfe2", + "short": "docs: add production launch guide and URL schema", + "type": null, + "scope": null, + "additions": 446, + "deletions": 0, + "timestamp": "2026-01-23T17:50:21+01:00" + }, + { + "hash": "8f54a56", + "short": "feat(clock): add landing page with shared-landing-ui", + "type": "feat", + "scope": "clock", + "additions": 727, + "deletions": 0, + "timestamp": "2026-01-23T17:50:31+01:00" + }, + { + "hash": "87b09eb", + "short": "chore(calendar): add wrangler.toml for Cloudflare Pages deployment", + "type": "chore", + "scope": "calendar", + "additions": 7, + "deletions": 0, + "timestamp": "2026-01-23T17:50:42+01:00" + }, + { + "hash": "3e823ae", + "short": "feat(infra): add Mac Mini setup script and update production docker-compose", + "type": "feat", + "scope": "infra", + "additions": 321, + "deletions": 106, + "timestamp": "2026-01-23T17:50:51+01:00" + }, + { + "hash": "ead9680", + "short": "fix: correct Cloudflare Pages project name for clock landing", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-23T17:50:59+01:00" + }, + { + "hash": "634bb97", + "short": "docs: add daily report for 2026-01-23", + "type": null, + "scope": null, + "additions": 289, + "deletions": 0, + "timestamp": "2026-01-23T17:53:36+01:00" + }, + { + "hash": "b8a84ed", + "short": "feat(analytics): add Umami event tracking utilities", + "type": "feat", + "scope": "analytics", + "additions": 613, + "deletions": 0, + "timestamp": "2026-01-23T17:58:04+01:00" + }, + { + "hash": "2596cb7", + "short": "feat(landing): add devlog section to ManaCore landing page", + "type": "feat", + "scope": "landing", + "additions": 632, + "deletions": 0, + "timestamp": "2026-01-23T18:01:03+01:00" + }, + { + "hash": "9f00a36", + "short": "feat(landing): add devlog section to homepage", + "type": "feat", + "scope": "landing", + "additions": 388, + "deletions": 0, + "timestamp": "2026-01-23T18:03:19+01:00" + }, + { + "hash": "a1d491e", + "short": "feat(infra): add n8n workflow automation to Mac Mini", + "type": "feat", + "scope": "infra", + "additions": 79, + "deletions": 0, + "timestamp": "2026-01-23T20:08:34+01:00" + }, + { + "hash": "7a80a71", + "short": "feat(infra): add missing tunnel routes for contacts, monitoring, n8n", + "type": "feat", + "scope": "infra", + "additions": 14, + "deletions": 0, + "timestamp": "2026-01-23T20:36:23+01:00" + }, + { + "hash": "f29ef4a", + "short": "feat(infra): add Telegram Stats Bot for ManaCore analytics", + "type": "feat", + "scope": "infra", + "additions": 1273, + "deletions": 0, + "timestamp": "2026-01-23T20:39:04+01:00" + }, + { + "hash": "8248a70", + "short": "docs(devlog): update daily report with n8n, devlog system, stats bot", + "type": "docs", + "scope": "devlog", + "additions": 78, + "deletions": 14, + "timestamp": "2026-01-23T20:41:01+01:00" + }, + { + "hash": "3aeb88d", + "short": "✨ feat(web): add session-first guest mode to all live apps", + "type": null, + "scope": null, + "additions": 2830, + "deletions": 85, + "timestamp": "2026-01-23T21:15:08+01:00" + }, + { + "hash": "54a6ebc", + "short": "docs(devlog): add session-first guest mode feature", + "type": "docs", + "scope": "devlog", + "additions": 48, + "deletions": 4, + "timestamp": "2026-01-23T21:16:20+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-23/macher.md b/devlog/2026-01-23/macher.md new file mode 100644 index 000000000..e9d772675 --- /dev/null +++ b/devlog/2026-01-23/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-01-23 +day: 32 +view: macher +weekday: Freitag +commits: 36 +review: written +--- + +# Freitag, 2026-01-23 — Tag 32 (Macher-Sicht) + +## Stats + +36 Commits, +19273 / −985 LoC, 175 Files. Top-Dirs: `packages/shared-landing-ui/src` (8%), `apps/clock/apps/landing` (7%), `services/telegram-stats-bot/src` (7%), `apps/manacore/apps/web` (6%), `apps/clock/apps/web` (5%). Tags: infra, mac-mini, analytics, landing, devlog. Session 10:48 → 20:16 (~257 aktive Min, längster Fokus 74 Min). + +## Commits + +- `93060dc` feat(mac-mini): add auto-start and management scripts (+843/-0) +- `732aa79` fix(mac-mini): add PATH export for Docker CLI in all scripts (+18/-0) +- `bff168e` fix(docker): correct todo-backend health check path (+1/-1) +- `c512592` fix(mac-mini): correct health check endpoints (+6/-7) +- `650b05b` fix(clock-backend): specify drizzle config path in entrypoint (+1/-1) +- `515d603` feat(clock-web): add dashboard page for root route (+118/-0) +- `de6151a` feat(mac-mini): add notification system for health checks (+386/-16) +- `2b7c665` docs: add Mac Mini server documentation (+394/-0) +- `c2010ce` docs: add mail server planning documentation (+971/-0) +- `294074f` fix(calendar-web): add cross-app API URLs for todo and contacts (+3/-0) +- `bb5f145` feat(contacts): add Docker deployment for Mac Mini (+309/-1) +- `ad7a84f` fix(contacts-web): use adapter-node for Docker deployment (+54/-6) +- `6d86a08` feat: add monitoring dashboard (Prometheus + Grafana + Umami + Admin) (+2751/-531) +- `264149a` ✨ feat(shared-landing-ui): unify landing pages with shared components (+3589/-1) +- `1868a7f` refactor: change Umami analytics URL from analytics.mana.how to stats.mana.how (+18/-22) +- `d03aaeb` fix(contacts-backend): add missing multer dependency (+530/-154) +- `639041a` feat(analytics): add Umami website IDs for all landing pages (+11/-7) +- `44e6a63` feat(analytics): add Umami website IDs for all web apps (+6/-6) +- `c399474` feat(infra): add MinIO for object storage and configure contacts-backend (+29/-0) +- `d3dd26b` ✨ feat(shared-landing-ui): add centralized Mana pricing system (+1469/-2) + +_… plus 16 weitere Commits._ diff --git a/devlog/2026-01-23/spieler.md b/devlog/2026-01-23/spieler.md new file mode 100644 index 000000000..0bb06c5cf --- /dev/null +++ b/devlog/2026-01-23/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-01-23 +day: 32 +view: spieler +weekday: Freitag +commits: 36 +review: written +--- + +# Freitag, 2026-01-23 — Tag 32 + +Großer Sprint-Tag mit Schwerpunkt **packages** (36 Commits). + +## Highlights + +- add auto-start and management scripts +- add PATH export for Docker CLI in all scripts +- correct todo-backend health check path +- correct health check endpoints +- specify drizzle config path in entrypoint diff --git a/devlog/2026-01-24/data.json b/devlog/2026-01-24/data.json new file mode 100644 index 000000000..203eac825 --- /dev/null +++ b/devlog/2026-01-24/data.json @@ -0,0 +1,108 @@ +{ + "date": "2026-01-24", + "day_number": 33, + "weekday": "Samstag", + "commits": 4, + "authors": [ + { + "name": "Till-JS", + "count": 4 + } + ], + "additions": 591, + "deletions": 156, + "net_lines": 435, + "files_changed": 16, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-24T23:00:09.000Z", + "last_commit_at": "2026-01-25T02:07:08.000Z", + "total_span_minutes": 187, + "active_minutes": 9, + "pauses": [ + { + "from": "00:00", + "to": "02:58", + "minutes": 178 + } + ], + "longest_focus_minutes": 9 + }, + "top_dirs": [ + { + "path": "apps/contacts/apps/web", + "pct": 35 + }, + { + "path": "apps/clock/apps/web", + "pct": 29 + }, + { + "path": "apps/calendar/apps/web", + "pct": 6 + }, + { + "path": "apps/chat/apps/web", + "pct": 6 + }, + { + "path": "apps/manacore/apps/web", + "pct": 6 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 15 + }, + { + "ext": ".ts", + "count": 2 + } + ], + "tags": ["clock", "contacts", "web"], + "commits_list": [ + { + "hash": "753e6fd", + "short": "feat(contacts): add session-first guest mode", + "type": "feat", + "scope": "contacts", + "additions": 545, + "deletions": 28, + "timestamp": "2026-01-25T00:00:09+01:00" + }, + { + "hash": "6713919", + "short": "fix(web): fix userSettings.nav undefined error in guest mode", + "type": "fix", + "scope": "web", + "additions": 41, + "deletions": 118, + "timestamp": "2026-01-25T02:58:04+01:00" + }, + { + "hash": "1e7bfd4", + "short": "fix(clock): remove auth redirect from dashboard for guest mode", + "type": "fix", + "scope": "clock", + "additions": 1, + "deletions": 4, + "timestamp": "2026-01-25T03:00:40+01:00" + }, + { + "hash": "b095532", + "short": "fix(clock): load alarms/timers in guest mode", + "type": "fix", + "scope": "clock", + "additions": 4, + "deletions": 6, + "timestamp": "2026-01-25T03:07:08+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-24/macher.md b/devlog/2026-01-24/macher.md new file mode 100644 index 000000000..2f5228ec7 --- /dev/null +++ b/devlog/2026-01-24/macher.md @@ -0,0 +1,21 @@ +--- +date: 2026-01-24 +day: 33 +view: macher +weekday: Samstag +commits: 4 +review: written +--- + +# Samstag, 2026-01-24 — Tag 33 (Macher-Sicht) + +## Stats + +4 Commits, +591 / −156 LoC, 16 Files. Top-Dirs: `apps/contacts/apps/web` (35%), `apps/clock/apps/web` (29%), `apps/calendar/apps/web` (6%), `apps/chat/apps/web` (6%), `apps/manacore/apps/web` (6%). Tags: clock, contacts, web. Session 23:00 → 02:07 (~9 aktive Min, längster Fokus 9 Min). + +## Commits + +- `753e6fd` feat(contacts): add session-first guest mode (+545/-28) +- `6713919` fix(web): fix userSettings.nav undefined error in guest mode (+41/-118) +- `1e7bfd4` fix(clock): remove auth redirect from dashboard for guest mode (+1/-4) +- `b095532` fix(clock): load alarms/timers in guest mode (+4/-6) diff --git a/devlog/2026-01-24/spieler.md b/devlog/2026-01-24/spieler.md new file mode 100644 index 000000000..a2084b4a0 --- /dev/null +++ b/devlog/2026-01-24/spieler.md @@ -0,0 +1,19 @@ +--- +date: 2026-01-24 +day: 33 +view: spieler +weekday: Samstag +commits: 4 +review: written +--- + +# Samstag, 2026-01-24 — Tag 33 + +Kurzer Arbeitstag, Schwerpunkt **apps**. + +## Highlights + +- add session-first guest mode +- fix userSettings.nav undefined error in guest mode +- remove auth redirect from dashboard for guest mode +- load alarms/timers in guest mode diff --git a/devlog/2026-01-25/data.json b/devlog/2026-01-25/data.json new file mode 100644 index 000000000..787c971cc --- /dev/null +++ b/devlog/2026-01-25/data.json @@ -0,0 +1,232 @@ +{ + "date": "2026-01-25", + "day_number": 34, + "weekday": "Sonntag", + "commits": 16, + "authors": [ + { + "name": "Till-JS", + "count": 16 + } + ], + "additions": 28504, + "deletions": 16593, + "net_lines": 11911, + "files_changed": 356, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-25T12:15:02.000Z", + "last_commit_at": "2026-01-25T16:47:49.000Z", + "total_span_minutes": 273, + "active_minutes": 63, + "pauses": [ + { + "from": "14:17", + "to": "17:47", + "minutes": 210 + } + ], + "longest_focus_minutes": 63 + }, + "top_dirs": [ + { + "path": "apps/presi/apps/mobile", + "pct": 15 + }, + { + "path": "apps/storage/apps/web", + "pct": 12 + }, + { + "path": "apps/storage/apps/backend", + "pct": 12 + }, + { + "path": "apps/presi/apps/web", + "pct": 11 + }, + { + "path": "apps/presi/apps/backend", + "pct": 9 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 142 + }, + { + "ext": ".svelte", + "count": 56 + }, + { + "ext": ".json", + "count": 46 + }, + { + "ext": ".tsx", + "count": 30 + }, + { + "ext": ".md", + "count": 21 + }, + { + "ext": ".png", + "count": 12 + } + ], + "tags": ["todo", "watchtower", "deps", "infra", "docker"], + "commits_list": [ + { + "hash": "b77dd41", + "short": "fix(deps): update lockfile for telegram-stats-bot", + "type": "fix", + "scope": "deps", + "additions": 388, + "deletions": 0, + "timestamp": "2026-01-25T13:15:02+01:00" + }, + { + "hash": "b6af01e", + "short": "✨ feat(nutriphi): add AI-powered nutrition tracking app", + "type": null, + "scope": null, + "additions": 4256, + "deletions": 4, + "timestamp": "2026-01-25T13:19:51+01:00" + }, + { + "hash": "9472978", + "short": "🔧 chore(scripts): add nutriphi to database setup script", + "type": null, + "scope": null, + "additions": 7, + "deletions": 2, + "timestamp": "2026-01-25T13:24:48+01:00" + }, + { + "hash": "36a9e3a", + "short": "feat: restore presi and storage apps from archive", + "type": null, + "scope": null, + "additions": 21510, + "deletions": 26, + "timestamp": "2026-01-25T13:25:51+01:00" + }, + { + "hash": "0a4e7e0", + "short": "feat: add dev scripts for presi and storage apps", + "type": null, + "scope": null, + "additions": 29, + "deletions": 2, + "timestamp": "2026-01-25T13:27:55+01:00" + }, + { + "hash": "4a236a7", + "short": "feat(todo): add Prometheus metrics and update docs", + "type": "feat", + "scope": "todo", + "additions": 1128, + "deletions": 385, + "timestamp": "2026-01-25T13:31:44+01:00" + }, + { + "hash": "32c207e", + "short": "feat(infra): add presi and storage apps to Mac Mini deployment", + "type": "feat", + "scope": "infra", + "additions": 114, + "deletions": 1, + "timestamp": "2026-01-25T13:52:45+01:00" + }, + { + "hash": "a12c7e5", + "short": "feat(docker): add Dockerfiles for presi and storage apps", + "type": "feat", + "scope": "docker", + "additions": 332, + "deletions": 0, + "timestamp": "2026-01-25T13:55:23+01:00" + }, + { + "hash": "11411ff", + "short": "fix(todo): capture error responses in metrics interceptor", + "type": "fix", + "scope": "todo", + "additions": 15, + "deletions": 23, + "timestamp": "2026-01-25T13:56:25+01:00" + }, + { + "hash": "f47bf8e", + "short": "refactor(todo): use express middleware for HTTP metrics", + "type": "refactor", + "scope": "todo", + "additions": 41, + "deletions": 74, + "timestamp": "2026-01-25T14:00:06+01:00" + }, + { + "hash": "ac663a6", + "short": "chore: remove staging/Hetzner infra, add Watchtower auto-deploy", + "type": null, + "scope": null, + "additions": 103, + "deletions": 15581, + "timestamp": "2026-01-25T14:01:11+01:00" + }, + { + "hash": "62e9d0d", + "short": "fix(watchtower): set DOCKER_API_VERSION for compatibility", + "type": "fix", + "scope": "watchtower", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-25T14:03:05+01:00" + }, + { + "hash": "87724f8", + "short": "fix(watchtower): remove custom notification template", + "type": "fix", + "scope": "watchtower", + "additions": 1, + "deletions": 8, + "timestamp": "2026-01-25T14:03:43+01:00" + }, + { + "hash": "8ff8cd5", + "short": "test: update loading text to test Watchtower auto-deploy", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-25T14:16:03+01:00" + }, + { + "hash": "409f9a0", + "short": "feat(ci): add Docker build jobs for presi and storage apps", + "type": "feat", + "scope": "ci", + "additions": 164, + "deletions": 0, + "timestamp": "2026-01-25T14:17:48+01:00" + }, + { + "hash": "75ffd50", + "short": "fix(presi,storage): use adapter-node for Docker builds", + "type": "fix", + "scope": "presi,storage", + "additions": 414, + "deletions": 485, + "timestamp": "2026-01-25T17:47:49+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-25/macher.md b/devlog/2026-01-25/macher.md new file mode 100644 index 000000000..8f1b01e6e --- /dev/null +++ b/devlog/2026-01-25/macher.md @@ -0,0 +1,33 @@ +--- +date: 2026-01-25 +day: 34 +view: macher +weekday: Sonntag +commits: 16 +review: written +--- + +# Sonntag, 2026-01-25 — Tag 34 (Macher-Sicht) + +## Stats + +16 Commits, +28504 / −16593 LoC, 356 Files. Top-Dirs: `apps/presi/apps/mobile` (15%), `apps/storage/apps/web` (12%), `apps/storage/apps/backend` (12%), `apps/presi/apps/web` (11%), `apps/presi/apps/backend` (9%). Tags: todo, watchtower, deps, infra, docker. Session 12:15 → 16:47 (~63 aktive Min, längster Fokus 63 Min). + +## Commits + +- `b77dd41` fix(deps): update lockfile for telegram-stats-bot (+388/-0) +- `b6af01e` ✨ feat(nutriphi): add AI-powered nutrition tracking app (+4256/-4) +- `9472978` 🔧 chore(scripts): add nutriphi to database setup script (+7/-2) +- `36a9e3a` feat: restore presi and storage apps from archive (+21510/-26) +- `0a4e7e0` feat: add dev scripts for presi and storage apps (+29/-2) +- `4a236a7` feat(todo): add Prometheus metrics and update docs (+1128/-385) +- `32c207e` feat(infra): add presi and storage apps to Mac Mini deployment (+114/-1) +- `a12c7e5` feat(docker): add Dockerfiles for presi and storage apps (+332/-0) +- `11411ff` fix(todo): capture error responses in metrics interceptor (+15/-23) +- `f47bf8e` refactor(todo): use express middleware for HTTP metrics (+41/-74) +- `ac663a6` chore: remove staging/Hetzner infra, add Watchtower auto-deploy (+103/-15581) +- `62e9d0d` fix(watchtower): set DOCKER_API_VERSION for compatibility (+1/-1) +- `87724f8` fix(watchtower): remove custom notification template (+1/-8) +- `8ff8cd5` test: update loading text to test Watchtower auto-deploy (+1/-1) +- `409f9a0` feat(ci): add Docker build jobs for presi and storage apps (+164/-0) +- `75ffd50` fix(presi,storage): use adapter-node for Docker builds (+414/-485) diff --git a/devlog/2026-01-25/spieler.md b/devlog/2026-01-25/spieler.md new file mode 100644 index 000000000..50137eb5c --- /dev/null +++ b/devlog/2026-01-25/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-01-25 +day: 34 +view: spieler +weekday: Sonntag +commits: 16 +review: written +--- + +# Sonntag, 2026-01-25 — Tag 34 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- update lockfile for telegram-stats-bot +- ✨ feat(nutriphi): add AI-powered nutrition tracking app +- 🔧 chore(scripts): add nutriphi to database setup script +- restore presi and storage apps from archive +- add dev scripts for presi and storage apps diff --git a/devlog/2026-01-26/data.json b/devlog/2026-01-26/data.json new file mode 100644 index 000000000..7952c758e --- /dev/null +++ b/devlog/2026-01-26/data.json @@ -0,0 +1,631 @@ +{ + "date": "2026-01-26", + "day_number": 35, + "weekday": "Montag", + "commits": 57, + "authors": [ + { + "name": "Till-JS", + "count": 57 + } + ], + "additions": 16578, + "deletions": 3468, + "net_lines": 13110, + "files_changed": 184, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-26T08:35:01.000Z", + "last_commit_at": "2026-01-27T02:39:32.000Z", + "total_span_minutes": 1085, + "active_minutes": 268, + "pauses": [ + { + "from": "11:14", + "to": "12:14", + "minutes": 59 + }, + { + "from": "12:14", + "to": "14:07", + "minutes": 113 + }, + { + "from": "14:07", + "to": "14:54", + "minutes": 47 + }, + { + "from": "16:29", + "to": "20:28", + "minutes": 239 + }, + { + "from": "20:43", + "to": "21:20", + "minutes": 37 + }, + { + "from": "21:20", + "to": "01:31", + "minutes": 251 + }, + { + "from": "02:13", + "to": "03:24", + "minutes": 71 + } + ], + "longest_focus_minutes": 100 + }, + "top_dirs": [ + { + "path": "services/mana-core-auth/src", + "pct": 11 + }, + { + "path": "apps/todo/apps/web", + "pct": 8 + }, + { + "path": "docker-compose.macmini.yml", + "pct": 8 + }, + { + "path": "services/telegram-project-doc-bot/src", + "pct": 7 + }, + { + "path": "apps/chat/apps/backend", + "pct": 6 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 116 + }, + { + "ext": ".svelte", + "count": 33 + }, + { + "ext": ".yml", + "count": 26 + }, + { + "ext": ".json", + "count": 19 + }, + { + "ext": ".md", + "count": 15 + }, + { + "ext": ".py", + "count": 9 + } + ], + "tags": ["auth", "docker", "stt", "todo", "metrics"], + "commits_list": [ + { + "hash": "1c5a1b8", + "short": "feat(metrics): add Prometheus metrics to all backends", + "type": "feat", + "scope": "metrics", + "additions": 611, + "deletions": 14, + "timestamp": "2026-01-26T09:35:01+01:00" + }, + { + "hash": "b7d4893", + "short": "docs: add daily report for 2026-01-25", + "type": null, + "scope": null, + "additions": 299, + "deletions": 0, + "timestamp": "2026-01-26T09:38:57+01:00" + }, + { + "hash": "475246a", + "short": "fix(todo): correct health check endpoints", + "type": "fix", + "scope": "todo", + "additions": 11, + "deletions": 1, + "timestamp": "2026-01-26T09:44:17+01:00" + }, + { + "hash": "41dea77", + "short": "fix(watchtower): use existing TELEGRAM env vars for notifications", + "type": "fix", + "scope": "watchtower", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-26T09:45:39+01:00" + }, + { + "hash": "8c259a0", + "short": "feat(monitoring): add comprehensive Grafana dashboards and alerting", + "type": "feat", + "scope": "monitoring", + "additions": 2029, + "deletions": 0, + "timestamp": "2026-01-26T09:47:18+01:00" + }, + { + "hash": "8820532", + "short": "🔧 chore(watchtower): add debug logging for telegram notifications", + "type": null, + "scope": null, + "additions": 3, + "deletions": 1, + "timestamp": "2026-01-26T09:53:45+01:00" + }, + { + "hash": "cacebab", + "short": "🔧 chore(watchtower): switch to n8n webhook for notifications", + "type": null, + "scope": null, + "additions": 4, + "deletions": 3, + "timestamp": "2026-01-26T10:00:49+01:00" + }, + { + "hash": "d2b1a1c", + "short": "🔧 chore(watchtower): use URL-encoded telegram token from env", + "type": null, + "scope": null, + "additions": 3, + "deletions": 4, + "timestamp": "2026-01-26T10:01:43+01:00" + }, + { + "hash": "bbc536d", + "short": "fix(docker): correct todo-backend health check path in compose", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-26T10:02:24+01:00" + }, + { + "hash": "98c08fd", + "short": "🔧 chore(watchtower): disable broken telegram notifications", + "type": null, + "scope": null, + "additions": 2, + "deletions": 4, + "timestamp": "2026-01-26T10:02:48+01:00" + }, + { + "hash": "57a7a39", + "short": "fix(docker): use root path for todo-web health check", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-26T10:04:35+01:00" + }, + { + "hash": "0b35e71", + "short": "fix(docker): use 127.0.0.1 instead of localhost in health checks", + "type": "fix", + "scope": "docker", + "additions": 21, + "deletions": 21, + "timestamp": "2026-01-26T10:07:21+01:00" + }, + { + "hash": "2480d92", + "short": "🔧 chore(watchtower): try list format for telegram notification URL", + "type": null, + "scope": null, + "additions": 107, + "deletions": 7, + "timestamp": "2026-01-26T10:14:30+01:00" + }, + { + "hash": "4573f6e", + "short": "feat(web): add /health endpoints to all web apps", + "type": "feat", + "scope": "web", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-26T10:15:04+01:00" + }, + { + "hash": "ebd0e53", + "short": "🔧 chore(watchtower): switch to nickfedor fork with telegram notifications", + "type": null, + "scope": null, + "additions": 15, + "deletions": 1, + "timestamp": "2026-01-26T10:29:57+01:00" + }, + { + "hash": "618c58c", + "short": "feat(ci): add Telegram notifications and Grafana CI/CD dashboard", + "type": "feat", + "scope": "ci", + "additions": 1100, + "deletions": 0, + "timestamp": "2026-01-26T10:31:17+01:00" + }, + { + "hash": "5cf3c33", + "short": "fix(calendar): correct port to 3016", + "type": "fix", + "scope": "calendar", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-26T10:37:49+01:00" + }, + { + "hash": "412344e", + "short": "chore(infra): add pushgateway to Cloudflare tunnel", + "type": "chore", + "scope": "infra", + "additions": 2, + "deletions": 0, + "timestamp": "2026-01-26T10:38:19+01:00" + }, + { + "hash": "edf13b7", + "short": "revert: fix CI by reverting Telegram notifications", + "type": null, + "scope": null, + "additions": 0, + "deletions": 1100, + "timestamp": "2026-01-26T10:40:10+01:00" + }, + { + "hash": "9fedb7c", + "short": "fix(docker): correct health check paths for mana-core-auth and clock-backend", + "type": "fix", + "scope": "docker", + "additions": 2, + "deletions": 2, + "timestamp": "2026-01-26T10:49:58+01:00" + }, + { + "hash": "0cd2bc8", + "short": "✨ feat(stats): add user statistics to Prometheus metrics and Grafana", + "type": null, + "scope": null, + "additions": 798, + "deletions": 13, + "timestamp": "2026-01-26T10:53:57+01:00" + }, + { + "hash": "d49ff9a", + "short": "🩹 fix(docker): correct contacts-backend health check path", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-26T10:54:14+01:00" + }, + { + "hash": "bbc051d", + "short": "fix(docker): correct chat-backend health check path", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-26T11:03:11+01:00" + }, + { + "hash": "79e3c09", + "short": "fix(docker): correct calendar-backend health check path", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-26T11:13:58+01:00" + }, + { + "hash": "021c6e7", + "short": "🔧 fix(telegram-bot): improve database connection logging and error messages", + "type": null, + "scope": null, + "additions": 23, + "deletions": 9, + "timestamp": "2026-01-26T11:14:52+01:00" + }, + { + "hash": "85e8ff0", + "short": "fix(auth): reduce minimum password length to 8 characters", + "type": "fix", + "scope": "auth", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-26T12:14:10+01:00" + }, + { + "hash": "fafa550", + "short": "feat(auth): add Brevo SMTP email service for transactional emails", + "type": "feat", + "scope": "auth", + "additions": 1317, + "deletions": 518, + "timestamp": "2026-01-26T14:07:31+01:00" + }, + { + "hash": "f173a22", + "short": "fix(auth): fix inviter name access in sendInvitationEmail", + "type": "fix", + "scope": "auth", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-26T14:54:39+01:00" + }, + { + "hash": "8e1f443", + "short": "fix(auth): use correct Better Auth API method for password reset", + "type": "fix", + "scope": "auth", + "additions": 3, + "deletions": 2, + "timestamp": "2026-01-26T15:20:16+01:00" + }, + { + "hash": "4973cf8", + "short": "feat(todo): consolidate bars using ExpandableToolbar pattern from Calendar app", + "type": "feat", + "scope": "todo", + "additions": 524, + "deletions": 844, + "timestamp": "2026-01-26T15:33:24+01:00" + }, + { + "hash": "5098250", + "short": "feat(auth): enable email verification for new user registrations", + "type": "feat", + "scope": "auth", + "additions": 67, + "deletions": 5, + "timestamp": "2026-01-26T15:35:25+01:00" + }, + { + "hash": "2975e5d", + "short": "fix(auth): add explicit types to email handlers", + "type": "fix", + "scope": "auth", + "additions": 14, + "deletions": 2, + "timestamp": "2026-01-26T15:41:00+01:00" + }, + { + "hash": "3f64c74", + "short": "feat(telegram-ollama-bot): add Telegram bot for local LLM inference via Ollama", + "type": "feat", + "scope": "telegram-ollama-bot", + "additions": 1034, + "deletions": 94, + "timestamp": "2026-01-26T15:43:41+01:00" + }, + { + "hash": "aa7f5fb", + "short": "docs: add Telegram Ollama Bot documentation to MAC_MINI_SERVER.md", + "type": null, + "scope": null, + "additions": 102, + "deletions": 5, + "timestamp": "2026-01-26T15:53:18+01:00" + }, + { + "hash": "14aaf01", + "short": "fix(auth): move email verification config to correct location", + "type": "fix", + "scope": "auth", + "additions": 21, + "deletions": 17, + "timestamp": "2026-01-26T15:54:35+01:00" + }, + { + "hash": "6f51f1a", + "short": "feat(chat-backend): integrate Ollama for local LLM inference", + "type": "feat", + "scope": "chat-backend", + "additions": 280, + "deletions": 16, + "timestamp": "2026-01-26T16:03:03+01:00" + }, + { + "hash": "08ebdf5", + "short": "feat(docker): add Ollama configuration to chat-backend", + "type": "feat", + "scope": "docker", + "additions": 5, + "deletions": 0, + "timestamp": "2026-01-26T16:05:38+01:00" + }, + { + "hash": "def7249", + "short": "🚸 feat(todo): redesign homepage empty state and section visibility", + "type": null, + "scope": null, + "additions": 318, + "deletions": 96, + "timestamp": "2026-01-26T16:29:42+01:00" + }, + { + "hash": "ad4ae93", + "short": "feat(auth): add email verification endpoint for Better Auth", + "type": "feat", + "scope": "auth", + "additions": 103, + "deletions": 3, + "timestamp": "2026-01-26T20:28:30+01:00" + }, + { + "hash": "be365a0", + "short": "feat(manacore): add email verification result pages", + "type": "feat", + "scope": "manacore", + "additions": 117, + "deletions": 0, + "timestamp": "2026-01-26T20:43:02+01:00" + }, + { + "hash": "3df7157", + "short": "🐛 fix(calendar): fix app hanging and layout issues", + "type": null, + "scope": null, + "additions": 47, + "deletions": 61, + "timestamp": "2026-01-26T21:20:29+01:00" + }, + { + "hash": "2ccd063", + "short": "✨ feat(auth): redirect users to source app after email verification", + "type": null, + "scope": null, + "additions": 285, + "deletions": 30, + "timestamp": "2026-01-27T01:31:31+01:00" + }, + { + "hash": "09b8d7b", + "short": "✨ feat(auth-ui): show email verified banner on login pages", + "type": null, + "scope": null, + "additions": 162, + "deletions": 2, + "timestamp": "2026-01-27T01:31:55+01:00" + }, + { + "hash": "cb3c1ff", + "short": "♻️ refactor(todo): replace edit modal with inline task editing", + "type": null, + "scope": null, + "additions": 848, + "deletions": 263, + "timestamp": "2026-01-27T01:32:14+01:00" + }, + { + "hash": "d8b61d0", + "short": "📝 docs: add design UX guidelines and local model documentation", + "type": null, + "scope": null, + "additions": 1698, + "deletions": 0, + "timestamp": "2026-01-27T01:32:31+01:00" + }, + { + "hash": "aeabd21", + "short": "✨ feat(storage): add verified banner to login page", + "type": null, + "scope": null, + "additions": 7, + "deletions": 0, + "timestamp": "2026-01-27T01:32:59+01:00" + }, + { + "hash": "bf0fa04", + "short": "✨ feat(stt): add speech-to-text service for Mac Mini", + "type": null, + "scope": null, + "additions": 1206, + "deletions": 0, + "timestamp": "2026-01-27T01:33:10+01:00" + }, + { + "hash": "92a700a", + "short": "fix(stt): change default model to large-v3 (large-v3-turbo not supported by lightning-whisper-mlx)", + "type": "fix", + "scope": "stt", + "additions": 11, + "deletions": 16, + "timestamp": "2026-01-27T01:36:49+01:00" + }, + { + "hash": "9bd699a", + "short": "fix(stt): add Homebrew to PATH for ffmpeg", + "type": "fix", + "scope": "stt", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-27T01:52:09+01:00" + }, + { + "hash": "49255ac", + "short": "fix(stt): use correct AutoModel for Voxtral multimodal architecture", + "type": "fix", + "scope": "stt", + "additions": 58, + "deletions": 17, + "timestamp": "2026-01-27T01:58:32+01:00" + }, + { + "hash": "e7e3561", + "short": "📝 docs: add external services analysis and self-hosting guide", + "type": null, + "scope": null, + "additions": 543, + "deletions": 0, + "timestamp": "2026-01-27T02:04:31+01:00" + }, + { + "hash": "a2233dc", + "short": "fix(stt): properly encode audio as base64 for Voxtral", + "type": "fix", + "scope": "stt", + "additions": 24, + "deletions": 27, + "timestamp": "2026-01-27T02:13:34+01:00" + }, + { + "hash": "bff80b5", + "short": "fix(stt): remove unsupported add_generation_prompt kwarg", + "type": "fix", + "scope": "stt", + "additions": 0, + "deletions": 1, + "timestamp": "2026-01-27T03:24:43+01:00" + }, + { + "hash": "7c20d88", + "short": "✨ feat(services): add telegram-project-doc-bot service", + "type": null, + "scope": null, + "additions": 2432, + "deletions": 247, + "timestamp": "2026-01-27T03:29:08+01:00" + }, + { + "hash": "c4c00dc", + "short": "📝 docs: add devlog for 2026-01-26 monitoring, auth & AI updates", + "type": null, + "scope": null, + "additions": 285, + "deletions": 0, + "timestamp": "2026-01-27T03:37:59+01:00" + }, + { + "hash": "fe8cb3c", + "short": "🐛 fix(health-check): correct health endpoint paths", + "type": null, + "scope": null, + "additions": 25, + "deletions": 10, + "timestamp": "2026-01-27T03:39:16+01:00" + }, + { + "hash": "d1e9c87", + "short": "fix(todo): correct health check URL in startup log", + "type": "fix", + "scope": "todo", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-27T03:39:32+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-26/macher.md b/devlog/2026-01-26/macher.md new file mode 100644 index 000000000..070c0c90e --- /dev/null +++ b/devlog/2026-01-26/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-01-26 +day: 35 +view: macher +weekday: Montag +commits: 57 +review: written +--- + +# Montag, 2026-01-26 — Tag 35 (Macher-Sicht) + +## Stats + +57 Commits, +16578 / −3468 LoC, 184 Files. Top-Dirs: `services/mana-core-auth/src` (11%), `apps/todo/apps/web` (8%), `docker-compose.macmini.yml` (8%), `services/telegram-project-doc-bot/src` (7%), `apps/chat/apps/backend` (6%). Tags: auth, docker, stt, todo, metrics. Session 08:35 → 02:39 (~268 aktive Min, längster Fokus 100 Min). + +## Commits + +- `1c5a1b8` feat(metrics): add Prometheus metrics to all backends (+611/-14) +- `b7d4893` docs: add daily report for 2026-01-25 (+299/-0) +- `475246a` fix(todo): correct health check endpoints (+11/-1) +- `41dea77` fix(watchtower): use existing TELEGRAM env vars for notifications (+1/-1) +- `8c259a0` feat(monitoring): add comprehensive Grafana dashboards and alerting (+2029/-0) +- `8820532` 🔧 chore(watchtower): add debug logging for telegram notifications (+3/-1) +- `cacebab` 🔧 chore(watchtower): switch to n8n webhook for notifications (+4/-3) +- `d2b1a1c` 🔧 chore(watchtower): use URL-encoded telegram token from env (+3/-4) +- `bbc536d` fix(docker): correct todo-backend health check path in compose (+1/-1) +- `98c08fd` 🔧 chore(watchtower): disable broken telegram notifications (+2/-4) +- `57a7a39` fix(docker): use root path for todo-web health check (+1/-1) +- `0b35e71` fix(docker): use 127.0.0.1 instead of localhost in health checks (+21/-21) +- `2480d92` 🔧 chore(watchtower): try list format for telegram notification URL (+107/-7) +- `4573f6e` feat(web): add /health endpoints to all web apps (+1/-1) +- `ebd0e53` 🔧 chore(watchtower): switch to nickfedor fork with telegram notifications (+15/-1) +- `618c58c` feat(ci): add Telegram notifications and Grafana CI/CD dashboard (+1100/-0) +- `5cf3c33` fix(calendar): correct port to 3016 (+1/-1) +- `412344e` chore(infra): add pushgateway to Cloudflare tunnel (+2/-0) +- `edf13b7` revert: fix CI by reverting Telegram notifications (+0/-1100) +- `9fedb7c` fix(docker): correct health check paths for mana-core-auth and clock-backend (+2/-2) + +_… plus 37 weitere Commits._ diff --git a/devlog/2026-01-26/spieler.md b/devlog/2026-01-26/spieler.md new file mode 100644 index 000000000..2bfc24632 --- /dev/null +++ b/devlog/2026-01-26/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-01-26 +day: 35 +view: spieler +weekday: Montag +commits: 57 +review: written +--- + +# Montag, 2026-01-26 — Tag 35 + +Großer Sprint-Tag mit Schwerpunkt **services** (57 Commits). + +## Highlights + +- add Prometheus metrics to all backends +- add daily report for 2026-01-25 +- correct health check endpoints +- use existing TELEGRAM env vars for notifications +- add comprehensive Grafana dashboards and alerting diff --git a/devlog/2026-01-27/data.json b/devlog/2026-01-27/data.json new file mode 100644 index 000000000..5f7f33e0d --- /dev/null +++ b/devlog/2026-01-27/data.json @@ -0,0 +1,201 @@ +{ + "date": "2026-01-27", + "day_number": 36, + "weekday": "Dienstag", + "commits": 11, + "authors": [ + { + "name": "Till-JS", + "count": 7 + }, + { + "name": "Claude", + "count": 4 + } + ], + "additions": 7365, + "deletions": 257, + "net_lines": 7108, + "files_changed": 106, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-27T14:04:20.000Z", + "last_commit_at": "2026-01-28T00:44:28.000Z", + "total_span_minutes": 640, + "active_minutes": 37, + "pauses": [ + { + "from": "15:05", + "to": "15:57", + "minutes": 52 + }, + { + "from": "15:57", + "to": "16:51", + "minutes": 54 + }, + { + "from": "16:58", + "to": "01:14", + "minutes": 497 + } + ], + "longest_focus_minutes": 30 + }, + "top_dirs": [ + { + "path": "services/matrix-project-doc-bot/src", + "pct": 15 + }, + { + "path": "services/matrix-stats-bot/src", + "pct": 13 + }, + { + "path": "apps/chat/apps/web", + "pct": 7 + }, + { + "path": "services/matrix-ollama-bot/src", + "pct": 7 + }, + { + "path": "packages/shared-branding/src", + "pct": 6 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 55 + }, + { + "ext": ".svelte", + "count": 15 + }, + { + "ext": ".json", + "count": 14 + }, + { + "ext": ".md", + "count": 7 + }, + { + "ext": ".sh", + "count": 5 + }, + { + "ext": ".yml", + "count": 4 + } + ], + "tags": ["matrix", "docker", "health-check", "telegram-bot"], + "commits_list": [ + { + "hash": "ac164c6", + "short": "fix(docker): correct presi-backend health check path", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-27T15:04:20+01:00" + }, + { + "hash": "7252498", + "short": "fix(health-check): correct presi-backend health endpoint path", + "type": "fix", + "scope": "health-check", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-27T15:05:04+01:00" + }, + { + "hash": "876fd43", + "short": "🔥 chore: remove maerchenzauber from codebase", + "type": null, + "scope": null, + "additions": 1, + "deletions": 231, + "timestamp": "2026-01-27T15:57:19+01:00" + }, + { + "hash": "6402f28", + "short": "feat(telegram-bot): add local STT support and Prometheus metrics", + "type": "feat", + "scope": "telegram-bot", + "additions": 1433, + "deletions": 12, + "timestamp": "2026-01-27T16:51:09+01:00" + }, + { + "hash": "14c83cb", + "short": "✨ feat(shared-auth-ui): add GuestWelcomeModal for guest onboarding", + "type": null, + "scope": null, + "additions": 873, + "deletions": 7, + "timestamp": "2026-01-27T16:57:14+01:00" + }, + { + "hash": "ca00672", + "short": "✨ feat(chat): add model comparison feature", + "type": null, + "scope": null, + "additions": 716, + "deletions": 1, + "timestamp": "2026-01-27T16:57:56+01:00" + }, + { + "hash": "e72f3b7", + "short": "🧑‍💻 feat(dx): improve local development experience", + "type": null, + "scope": null, + "additions": 138, + "deletions": 4, + "timestamp": "2026-01-27T16:58:11+01:00" + }, + { + "hash": "28637df", + "short": "📝 docs: add Matrix self-hosting plan for GDPR-compliant bots", + "type": null, + "scope": null, + "additions": 674, + "deletions": 0, + "timestamp": "2026-01-28T00:14:54Z" + }, + { + "hash": "3aa9e86", + "short": "feat(matrix): add self-hosted Matrix infrastructure for GDPR compliance", + "type": "feat", + "scope": "matrix", + "additions": 490, + "deletions": 0, + "timestamp": "2026-01-28T00:20:12Z" + }, + { + "hash": "aabe328", + "short": "feat(matrix): add Matrix Ollama Bot service", + "type": "feat", + "scope": "matrix", + "additions": 823, + "deletions": 0, + "timestamp": "2026-01-28T00:35:35Z" + }, + { + "hash": "7c5e9e3", + "short": "feat(matrix): add Stats Bot and Project Doc Bot services", + "type": "feat", + "scope": "matrix", + "additions": 2215, + "deletions": 0, + "timestamp": "2026-01-28T00:44:28Z" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-27/macher.md b/devlog/2026-01-27/macher.md new file mode 100644 index 000000000..a9e794a22 --- /dev/null +++ b/devlog/2026-01-27/macher.md @@ -0,0 +1,28 @@ +--- +date: 2026-01-27 +day: 36 +view: macher +weekday: Dienstag +commits: 11 +review: written +--- + +# Dienstag, 2026-01-27 — Tag 36 (Macher-Sicht) + +## Stats + +11 Commits, +7365 / −257 LoC, 106 Files. Top-Dirs: `services/matrix-project-doc-bot/src` (15%), `services/matrix-stats-bot/src` (13%), `apps/chat/apps/web` (7%), `services/matrix-ollama-bot/src` (7%), `packages/shared-branding/src` (6%). Tags: matrix, docker, health-check, telegram-bot. Session 14:04 → 00:44 (~37 aktive Min, längster Fokus 30 Min). + +## Commits + +- `ac164c6` fix(docker): correct presi-backend health check path (+1/-1) +- `7252498` fix(health-check): correct presi-backend health endpoint path (+1/-1) +- `876fd43` 🔥 chore: remove maerchenzauber from codebase (+1/-231) +- `6402f28` feat(telegram-bot): add local STT support and Prometheus metrics (+1433/-12) +- `14c83cb` ✨ feat(shared-auth-ui): add GuestWelcomeModal for guest onboarding (+873/-7) +- `ca00672` ✨ feat(chat): add model comparison feature (+716/-1) +- `e72f3b7` 🧑‍💻 feat(dx): improve local development experience (+138/-4) +- `28637df` 📝 docs: add Matrix self-hosting plan for GDPR-compliant bots (+674/-0) +- `3aa9e86` feat(matrix): add self-hosted Matrix infrastructure for GDPR compliance (+490/-0) +- `aabe328` feat(matrix): add Matrix Ollama Bot service (+823/-0) +- `7c5e9e3` feat(matrix): add Stats Bot and Project Doc Bot services (+2215/-0) diff --git a/devlog/2026-01-27/spieler.md b/devlog/2026-01-27/spieler.md new file mode 100644 index 000000000..67e69dfc5 --- /dev/null +++ b/devlog/2026-01-27/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-01-27 +day: 36 +view: spieler +weekday: Dienstag +commits: 11 +review: written +--- + +# Dienstag, 2026-01-27 — Tag 36 + +Dichter Tag in **services** und Umgebung. + +## Highlights + +- correct presi-backend health check path +- correct presi-backend health endpoint path +- 🔥 chore: remove maerchenzauber from codebase +- add local STT support and Prometheus metrics +- ✨ feat(shared-auth-ui): add GuestWelcomeModal for guest onboarding diff --git a/devlog/2026-01-28/data.json b/devlog/2026-01-28/data.json new file mode 100644 index 000000000..ec3a878ce --- /dev/null +++ b/devlog/2026-01-28/data.json @@ -0,0 +1,764 @@ +{ + "date": "2026-01-28", + "day_number": 37, + "weekday": "Mittwoch", + "commits": 72, + "authors": [ + { + "name": "Till-JS", + "count": 54 + }, + { + "name": "Claude", + "count": 17 + }, + { + "name": "Till JS", + "count": 1 + } + ], + "additions": 56325, + "deletions": 11567, + "net_lines": 44758, + "files_changed": 651, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-28T10:43:48.000Z", + "last_commit_at": "2026-01-29T00:43:59.000Z", + "total_span_minutes": 840, + "active_minutes": 351, + "pauses": [ + { + "from": "11:43", + "to": "12:24", + "minutes": 41 + }, + { + "from": "14:23", + "to": "14:56", + "minutes": 33 + }, + { + "from": "17:13", + "to": "18:49", + "minutes": 96 + }, + { + "from": "18:49", + "to": "21:12", + "minutes": 143 + }, + { + "from": "21:41", + "to": "00:38", + "minutes": 176 + } + ], + "longest_focus_minutes": 137 + }, + "top_dirs": [ + { + "path": "apps/calendar/apps/web", + "pct": 6 + }, + { + "path": "apps/questions/apps/backend", + "pct": 6 + }, + { + "path": "apps/questions/apps/web", + "pct": 6 + }, + { + "path": "apps/matrix/apps/web", + "pct": 5 + }, + { + "path": "apps/calendar/apps/backend", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 403 + }, + { + "ext": ".svelte", + "count": 111 + }, + { + "ext": ".json", + "count": 88 + }, + { + "ext": ".md", + "count": 32 + }, + { + "ext": ".yml", + "count": 21 + }, + { + "ext": "", + "count": 18 + } + ], + "tags": ["matrix", "auth", "calendar", "matrix-bots", "matrix-ollama-bot"], + "commits_list": [ + { + "hash": "13754f2", + "short": "Merge pull request #23 from Memo-2023/claude/gdpr-bot-alternatives-VFgL1", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2026-01-28T11:43:48+01:00" + }, + { + "hash": "cb13019", + "short": "🔥 chore(picture): remove PostHog analytics for GDPR compliance", + "type": null, + "scope": null, + "additions": 2053, + "deletions": 1655, + "timestamp": "2026-01-28T12:24:22+01:00" + }, + { + "hash": "78ff102", + "short": "feat(calendar): add production launch features", + "type": "feat", + "scope": "calendar", + "additions": 2338, + "deletions": 31, + "timestamp": "2026-01-28T12:30:01+01:00" + }, + { + "hash": "2e73787", + "short": "🧹 chore(calendar): cleanup debug logs and stale comments", + "type": null, + "scope": null, + "additions": 7, + "deletions": 10, + "timestamp": "2026-01-28T12:31:43+01:00" + }, + { + "hash": "9dfad01", + "short": "📈 feat(monitoring): upgrade to VictoriaMetrics + DuckDB analytics", + "type": null, + "scope": null, + "additions": 2901, + "deletions": 18, + "timestamp": "2026-01-28T12:38:04+01:00" + }, + { + "hash": "b50376d", + "short": "fix(matrix-bots): update to matrix-bot-sdk v0.7 API", + "type": "fix", + "scope": "matrix-bots", + "additions": 94, + "deletions": 49, + "timestamp": "2026-01-28T12:40:28+01:00" + }, + { + "hash": "2e71b5f", + "short": "feat(calendar): add Google/Apple Calendar sync module", + "type": "feat", + "scope": "calendar", + "additions": 1858, + "deletions": 3, + "timestamp": "2026-01-28T12:41:32+01:00" + }, + { + "hash": "5365374", + "short": "fix(matrix-bots): add --ignore-scripts to Dockerfiles", + "type": "fix", + "scope": "matrix-bots", + "additions": 8, + "deletions": 8, + "timestamp": "2026-01-28T12:42:11+01:00" + }, + { + "hash": "f778e95", + "short": "🐛 fix(auth): use node:20-slim for DuckDB glibc compatibility", + "type": null, + "scope": null, + "additions": 7, + "deletions": 5, + "timestamp": "2026-01-28T12:44:04+01:00" + }, + { + "hash": "9ff709d", + "short": "fix(matrix): use local Docker images for Matrix bots", + "type": "fix", + "scope": "matrix", + "additions": 3, + "deletions": 3, + "timestamp": "2026-01-28T12:45:26+01:00" + }, + { + "hash": "b017534", + "short": "fix(matrix): use bind mount instead of named volume for Synapse data", + "type": "fix", + "scope": "matrix", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-28T12:47:51+01:00" + }, + { + "hash": "b1a8ca8", + "short": "fix(matrix): separate config and data mounts for Synapse", + "type": "fix", + "scope": "matrix", + "additions": 4, + "deletions": 4, + "timestamp": "2026-01-28T12:48:50+01:00" + }, + { + "hash": "d614587", + "short": "📝 docs: add comprehensive monitoring stack documentation", + "type": null, + "scope": null, + "additions": 308, + "deletions": 0, + "timestamp": "2026-01-28T12:49:39+01:00" + }, + { + "hash": "7f3842b", + "short": "fix(matrix): set session_lifetime >= refresh_token_lifetime", + "type": "fix", + "scope": "matrix", + "additions": 2, + "deletions": 2, + "timestamp": "2026-01-28T12:49:56+01:00" + }, + { + "hash": "8e6adfd", + "short": "feat(services): add Telegram bot services for NutriPhi, Todo, and Zitare", + "type": "feat", + "scope": "services", + "additions": 4390, + "deletions": 0, + "timestamp": "2026-01-28T12:52:01+01:00" + }, + { + "hash": "f488bd8", + "short": "fix(matrix): hardcode database password (env vars not expanded in YAML)", + "type": "fix", + "scope": "matrix", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-28T12:54:11+01:00" + }, + { + "hash": "96e64b2", + "short": "fix(matrix-bots): exclude crypto-nodejs module that fails on Alpine", + "type": "fix", + "scope": "matrix-bots", + "additions": 24, + "deletions": 0, + "timestamp": "2026-01-28T12:57:12+01:00" + }, + { + "hash": "8eac785", + "short": "fix(matrix-project-doc-bot): fix main.js path in Dockerfile", + "type": "fix", + "scope": "matrix-project-doc-bot", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-28T13:01:06+01:00" + }, + { + "hash": "2f3473b", + "short": "🔥 refactor(calendar): remove statistics and heatmap feature", + "type": null, + "scope": null, + "additions": 6, + "deletions": 1461, + "timestamp": "2026-01-28T13:10:58+01:00" + }, + { + "hash": "1919929", + "short": "fix(matrix): hide E2E encryption warnings in Element", + "type": "fix", + "scope": "matrix", + "additions": 52, + "deletions": 45, + "timestamp": "2026-01-28T13:13:44+01:00" + }, + { + "hash": "9a93ca0", + "short": "🔥 refactor(calendar): remove Network View feature", + "type": null, + "scope": null, + "additions": 1731, + "deletions": 1038, + "timestamp": "2026-01-28T13:31:13+01:00" + }, + { + "hash": "a44664c", + "short": "📝 docs(calendar): update cleanup plan after network view removal", + "type": null, + "scope": null, + "additions": 22, + "deletions": 17, + "timestamp": "2026-01-28T13:31:42+01:00" + }, + { + "hash": "cef8321", + "short": "♻️ refactor(calendar): replace session events with demo mode", + "type": null, + "scope": null, + "additions": 220, + "deletions": 307, + "timestamp": "2026-01-28T13:41:47+01:00" + }, + { + "hash": "54752d4", + "short": "📝 docs(calendar): update cleanup plan with session events commit hash", + "type": null, + "scope": null, + "additions": 2, + "deletions": 1, + "timestamp": "2026-01-28T13:42:08+01:00" + }, + { + "hash": "836b341", + "short": "feat(matrix-ollama-bot): add !all command for model comparison", + "type": "feat", + "scope": "matrix-ollama-bot", + "additions": 76, + "deletions": 1, + "timestamp": "2026-01-28T13:43:58+01:00" + }, + { + "hash": "99fdf1d", + "short": "♻️ refactor(todo): remove statistics, network view and session tasks; implement demo mode", + "type": null, + "scope": null, + "additions": 431, + "deletions": 2900, + "timestamp": "2026-01-28T13:57:59+01:00" + }, + { + "hash": "1dc4f58", + "short": "feat(todo): prepare for production deployment", + "type": "feat", + "scope": "todo", + "additions": 1511, + "deletions": 129, + "timestamp": "2026-01-28T14:04:27+01:00" + }, + { + "hash": "437d612", + "short": "♻️ refactor(contacts): remove statistics, network view and session storage; implement demo mode", + "type": null, + "scope": null, + "additions": 513, + "deletions": 2864, + "timestamp": "2026-01-28T14:12:19+01:00" + }, + { + "hash": "e414532", + "short": "feat(matrix-ollama-bot): add vision commands and filter non-chat models", + "type": "feat", + "scope": "matrix-ollama-bot", + "additions": 278, + "deletions": 26, + "timestamp": "2026-01-28T14:23:30+01:00" + }, + { + "hash": "ee63015", + "short": "feat(matrix-ollama-bot): add natural language commands and welcome messages", + "type": "feat", + "scope": "matrix-ollama-bot", + "additions": 170, + "deletions": 29, + "timestamp": "2026-01-28T14:56:32+01:00" + }, + { + "hash": "3ff8d38", + "short": "✨ feat(nutriphi): prepare for production release with tests and improved UX", + "type": null, + "scope": null, + "additions": 2470, + "deletions": 119, + "timestamp": "2026-01-28T15:23:35+01:00" + }, + { + "hash": "7138236", + "short": "feat(calendar): add runtime STT URL injection for production", + "type": "feat", + "scope": "calendar", + "additions": 78, + "deletions": 6, + "timestamp": "2026-01-28T15:25:39+01:00" + }, + { + "hash": "4399138", + "short": "feat(todo): add deploy:landing:todo script for Cloudflare Pages", + "type": "feat", + "scope": "todo", + "additions": 1, + "deletions": 0, + "timestamp": "2026-01-28T15:26:45+01:00" + }, + { + "hash": "c031540", + "short": "🚀 ci(nutriphi): add production deployment configuration", + "type": null, + "scope": null, + "additions": 312, + "deletions": 2, + "timestamp": "2026-01-28T15:29:43+01:00" + }, + { + "hash": "4fa8608", + "short": "🔧 chore: add nutriphi to cloudflare tunnel config", + "type": null, + "scope": null, + "additions": 4, + "deletions": 0, + "timestamp": "2026-01-28T15:31:39+01:00" + }, + { + "hash": "3389252", + "short": "fix(todo-web): remove localhost fallbacks triggering local network permission", + "type": "fix", + "scope": "todo-web", + "additions": 14, + "deletions": 7, + "timestamp": "2026-01-28T15:33:36+01:00" + }, + { + "hash": "2c341b5", + "short": "feat(matrix): add Matrix Todo Bot service", + "type": "feat", + "scope": "matrix", + "additions": 1257, + "deletions": 0, + "timestamp": "2026-01-28T15:47:33+01:00" + }, + { + "hash": "111fc47", + "short": "🐛 fix(auth): implement password reset email link handler", + "type": null, + "scope": null, + "additions": 427, + "deletions": 5, + "timestamp": "2026-01-28T15:49:33+01:00" + }, + { + "hash": "57b9d4c", + "short": "feat(matrix-nutriphi-bot): add Matrix bot for nutrition tracking", + "type": "feat", + "scope": "matrix-nutriphi-bot", + "additions": 3174, + "deletions": 396, + "timestamp": "2026-01-28T15:57:49+01:00" + }, + { + "hash": "3b9d99c", + "short": "✨ feat(matrix-bots): add voice note transcription via mana-stt", + "type": null, + "scope": null, + "additions": 339, + "deletions": 43, + "timestamp": "2026-01-28T16:10:20+01:00" + }, + { + "hash": "ff427b1", + "short": "📝 docs(todo): update commit hash in cleanup plan", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-28T16:13:15+01:00" + }, + { + "hash": "1e9169c", + "short": "📝 docs(landing): add devlog for telegram/matrix bots integration", + "type": null, + "scope": null, + "additions": 396, + "deletions": 0, + "timestamp": "2026-01-28T16:13:24+01:00" + }, + { + "hash": "1f5df44", + "short": "🙈 chore(matrix-nutriphi-bot): add dockerignore", + "type": null, + "scope": null, + "additions": 6, + "deletions": 0, + "timestamp": "2026-01-28T16:13:32+01:00" + }, + { + "hash": "bd10762", + "short": "🙈 chore: add Python and ML model files to gitignore", + "type": null, + "scope": null, + "additions": 13, + "deletions": 0, + "timestamp": "2026-01-28T16:15:01+01:00" + }, + { + "hash": "dbd14f7", + "short": "✨ feat(matrix-clock-bot): add Matrix bot for time tracking", + "type": null, + "scope": null, + "additions": 1437, + "deletions": 0, + "timestamp": "2026-01-28T16:27:49+01:00" + }, + { + "hash": "158aaf7", + "short": "feat(auth): add OIDC Provider for Matrix SSO integration", + "type": "feat", + "scope": "auth", + "additions": 258, + "deletions": 3, + "timestamp": "2026-01-28T16:40:33+01:00" + }, + { + "hash": "29595a9", + "short": "chore(matrix): add SYNAPSE_OIDC_CLIENT_SECRET env var", + "type": "chore", + "scope": "matrix", + "additions": 35, + "deletions": 0, + "timestamp": "2026-01-28T16:43:21+01:00" + }, + { + "hash": "a532790", + "short": "✨ feat(matrix-zitare-bot): add Matrix bot for daily inspiration quotes", + "type": null, + "scope": null, + "additions": 1834, + "deletions": 0, + "timestamp": "2026-01-28T16:45:11+01:00" + }, + { + "hash": "577b961", + "short": "🔧 chore: update pnpm-lock.yaml for matrix-zitare-bot", + "type": null, + "scope": null, + "additions": 464, + "deletions": 172, + "timestamp": "2026-01-28T16:46:58+01:00" + }, + { + "hash": "00d28bc", + "short": "feat(auth): add OIDC Controller for Matrix SSO endpoints", + "type": "feat", + "scope": "auth", + "additions": 196, + "deletions": 3, + "timestamp": "2026-01-28T16:49:26+01:00" + }, + { + "hash": "9a7afea", + "short": "fix(auth): use object syntax for global prefix excludes", + "type": "fix", + "scope": "auth", + "additions": 8, + "deletions": 2, + "timestamp": "2026-01-28T16:52:27+01:00" + }, + { + "hash": "e2a3277", + "short": "✨ feat(matrix-clock-bot): add Matrix bot for time tracking", + "type": null, + "scope": null, + "additions": 90, + "deletions": 19, + "timestamp": "2026-01-28T17:04:45+01:00" + }, + { + "hash": "ef7f906", + "short": "debug(auth): add OIDC request logging", + "type": "debug", + "scope": "auth", + "additions": 4, + "deletions": 0, + "timestamp": "2026-01-28T17:05:45+01:00" + }, + { + "hash": "f6382ea", + "short": "fix(auth): map OIDC routes to Better Auth's /api/auth/oauth2/* paths", + "type": "fix", + "scope": "auth", + "additions": 23, + "deletions": 1, + "timestamp": "2026-01-28T17:10:41+01:00" + }, + { + "hash": "bea066c", + "short": "fix(auth): correct JWKS route mapping for OIDC", + "type": "fix", + "scope": "auth", + "additions": 5, + "deletions": 1, + "timestamp": "2026-01-28T17:13:28+01:00" + }, + { + "hash": "9b8a564", + "short": "feat(planning): add comprehensive questions app design document", + "type": "feat", + "scope": "planning", + "additions": 1471, + "deletions": 0, + "timestamp": "2026-01-28T17:49:43Z" + }, + { + "hash": "c03f2e5", + "short": "docs: add comprehensive guide for recommended server services", + "type": null, + "scope": null, + "additions": 962, + "deletions": 0, + "timestamp": "2026-01-28T20:12:22Z" + }, + { + "hash": "4e622a6", + "short": "feat(matrix): add SvelteKit Matrix client (Phase 1)", + "type": "feat", + "scope": "matrix", + "additions": 2453, + "deletions": 0, + "timestamp": "2026-01-28T20:21:13Z" + }, + { + "hash": "590529c", + "short": "feat(planning): add mana-search microservice design document", + "type": "feat", + "scope": "planning", + "additions": 1597, + "deletions": 0, + "timestamp": "2026-01-28T20:27:36Z" + }, + { + "hash": "12ad8e8", + "short": "feat(skilltree): add SkillTree MVP - gamified skill tracking app", + "type": "feat", + "scope": "skilltree", + "additions": 1655, + "deletions": 0, + "timestamp": "2026-01-28T20:32:05Z" + }, + { + "hash": "5b291c1", + "short": "feat(skilltree): add edit, level-up celebration, templates, and tree view", + "type": "feat", + "scope": "skilltree", + "additions": 985, + "deletions": 26, + "timestamp": "2026-01-28T20:38:49Z" + }, + { + "hash": "bd72b4d", + "short": "feat(search): implement mana-search microservice", + "type": "feat", + "scope": "search", + "additions": 2219, + "deletions": 0, + "timestamp": "2026-01-28T20:41:59Z" + }, + { + "hash": "c0802af", + "short": "fix(search): fix TypeScript errors in extract service", + "type": "fix", + "scope": "search", + "additions": 8, + "deletions": 4, + "timestamp": "2026-01-28T23:38:00Z" + }, + { + "hash": "ec96d4e", + "short": "feat(questions): implement questions app NestJS backend", + "type": "feat", + "scope": "questions", + "additions": 2346, + "deletions": 2, + "timestamp": "2026-01-28T23:52:22Z" + }, + { + "hash": "c9f3d8a", + "short": "feat(matrix): add Phase 2 features", + "type": "feat", + "scope": "matrix", + "additions": 1304, + "deletions": 91, + "timestamp": "2026-01-28T23:54:24Z" + }, + { + "hash": "7a0b26e", + "short": "feat(skilltree): add NestJS backend with Docker deployment", + "type": "feat", + "scope": "skilltree", + "additions": 1255, + "deletions": 1, + "timestamp": "2026-01-28T23:59:50Z" + }, + { + "hash": "f93ca53", + "short": "feat(questions): implement SvelteKit web app", + "type": "feat", + "scope": "questions", + "additions": 2399, + "deletions": 9, + "timestamp": "2026-01-29T00:00:53Z" + }, + { + "hash": "68a6c7a", + "short": "feat(packages): add @manacore/bot-services shared package", + "type": "feat", + "scope": "packages", + "additions": 2492, + "deletions": 0, + "timestamp": "2026-01-29T00:07:32Z" + }, + { + "hash": "2d879b3", + "short": "feat(services): add matrix-mana-bot unified gateway", + "type": "feat", + "scope": "services", + "additions": 1859, + "deletions": 0, + "timestamp": "2026-01-29T00:23:46Z" + }, + { + "hash": "e96d76a", + "short": "feat(infra): integrate matrix-mana-bot into deployment", + "type": "feat", + "scope": "infra", + "additions": 476, + "deletions": 0, + "timestamp": "2026-01-29T00:37:38Z" + }, + { + "hash": "370b5d3", + "short": "fix(matrix-mana-bot): correct service method calls and add deploy script", + "type": "fix", + "scope": "matrix-mana-bot", + "additions": 141, + "deletions": 22, + "timestamp": "2026-01-29T00:42:50Z" + }, + { + "hash": "928cac6", + "short": "feat(questions): add production-ready pages and components", + "type": "feat", + "scope": "questions", + "additions": 845, + "deletions": 23, + "timestamp": "2026-01-29T00:43:59Z" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-28/macher.md b/devlog/2026-01-28/macher.md new file mode 100644 index 000000000..086936a82 --- /dev/null +++ b/devlog/2026-01-28/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-01-28 +day: 37 +view: macher +weekday: Mittwoch +commits: 72 +review: written +--- + +# Mittwoch, 2026-01-28 — Tag 37 (Macher-Sicht) + +## Stats + +72 Commits, +56325 / −11567 LoC, 651 Files. Top-Dirs: `apps/calendar/apps/web` (6%), `apps/questions/apps/backend` (6%), `apps/questions/apps/web` (6%), `apps/matrix/apps/web` (5%), `apps/calendar/apps/backend` (5%). Tags: matrix, auth, calendar, matrix-bots, matrix-ollama-bot. Session 10:43 → 00:43 (~351 aktive Min, längster Fokus 137 Min). + +## Commits + +- `13754f2` Merge pull request #23 from Memo-2023/claude/gdpr-bot-alternatives-VFgL1 (+0/-0) +- `cb13019` 🔥 chore(picture): remove PostHog analytics for GDPR compliance (+2053/-1655) +- `78ff102` feat(calendar): add production launch features (+2338/-31) +- `2e73787` 🧹 chore(calendar): cleanup debug logs and stale comments (+7/-10) +- `9dfad01` 📈 feat(monitoring): upgrade to VictoriaMetrics + DuckDB analytics (+2901/-18) +- `b50376d` fix(matrix-bots): update to matrix-bot-sdk v0.7 API (+94/-49) +- `2e71b5f` feat(calendar): add Google/Apple Calendar sync module (+1858/-3) +- `5365374` fix(matrix-bots): add --ignore-scripts to Dockerfiles (+8/-8) +- `f778e95` 🐛 fix(auth): use node:20-slim for DuckDB glibc compatibility (+7/-5) +- `9ff709d` fix(matrix): use local Docker images for Matrix bots (+3/-3) +- `b017534` fix(matrix): use bind mount instead of named volume for Synapse data (+1/-1) +- `b1a8ca8` fix(matrix): separate config and data mounts for Synapse (+4/-4) +- `d614587` 📝 docs: add comprehensive monitoring stack documentation (+308/-0) +- `7f3842b` fix(matrix): set session_lifetime >= refresh_token_lifetime (+2/-2) +- `8e6adfd` feat(services): add Telegram bot services for NutriPhi, Todo, and Zitare (+4390/-0) +- `f488bd8` fix(matrix): hardcode database password (env vars not expanded in YAML) (+1/-1) +- `96e64b2` fix(matrix-bots): exclude crypto-nodejs module that fails on Alpine (+24/-0) +- `8eac785` fix(matrix-project-doc-bot): fix main.js path in Dockerfile (+1/-1) +- `2f3473b` 🔥 refactor(calendar): remove statistics and heatmap feature (+6/-1461) +- `1919929` fix(matrix): hide E2E encryption warnings in Element (+52/-45) + +_… plus 52 weitere Commits._ diff --git a/devlog/2026-01-28/spieler.md b/devlog/2026-01-28/spieler.md new file mode 100644 index 000000000..e1a46b8f9 --- /dev/null +++ b/devlog/2026-01-28/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-01-28 +day: 37 +view: spieler +weekday: Mittwoch +commits: 72 +review: written +--- + +# Mittwoch, 2026-01-28 — Tag 37 + +Großer Sprint-Tag mit Schwerpunkt **apps** (72 Commits). + +## Highlights + +- 🔥 chore(picture): remove PostHog analytics for GDPR compliance +- add production launch features +- 🧹 chore(calendar): cleanup debug logs and stale comments +- 📈 feat(monitoring): upgrade to VictoriaMetrics + DuckDB analytics +- update to matrix-bot-sdk v0.7 API diff --git a/devlog/2026-01-29/data.json b/devlog/2026-01-29/data.json new file mode 100644 index 000000000..c89dacf2f --- /dev/null +++ b/devlog/2026-01-29/data.json @@ -0,0 +1,1133 @@ +{ + "date": "2026-01-29", + "day_number": 38, + "weekday": "Donnerstag", + "commits": 113, + "authors": [ + { + "name": "Till-JS", + "count": 107 + }, + { + "name": "Till JS", + "count": 5 + }, + { + "name": "Claude", + "count": 1 + } + ], + "additions": 51520, + "deletions": 12296, + "net_lines": 39224, + "files_changed": 792, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-29T11:05:32.000Z", + "last_commit_at": "2026-01-29T22:27:36.000Z", + "total_span_minutes": 682, + "active_minutes": 423, + "pauses": [ + { + "from": "15:24", + "to": "16:02", + "minutes": 38 + }, + { + "from": "18:51", + "to": "20:41", + "minutes": 110 + }, + { + "from": "20:45", + "to": "21:28", + "minutes": 43 + }, + { + "from": "21:28", + "to": "22:00", + "minutes": 32 + }, + { + "from": "22:17", + "to": "22:54", + "minutes": 36 + } + ], + "longest_focus_minutes": 199 + }, + "top_dirs": [ + { + "path": "apps/matrix/apps/web", + "pct": 12 + }, + { + "path": "services/mana-api-gateway/src", + "pct": 5 + }, + { + "path": "services/mana-notify/src", + "pct": 5 + }, + { + "path": "apps/skilltree/apps/web", + "pct": 4 + }, + { + "path": "apps/calendar/apps/web", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 467 + }, + { + "ext": ".svelte", + "count": 262 + }, + { + "ext": ".json", + "count": 153 + }, + { + "ext": ".md", + "count": 49 + }, + { + "ext": ".py", + "count": 29 + }, + { + "ext": ".mdx", + "count": 27 + } + ], + "tags": ["matrix", "matrix-web", "auth", "skilltree", "tts-bot"], + "commits_list": [ + { + "hash": "076e551", + "short": "feat(skilltree): connect web app to backend API", + "type": "feat", + "scope": "skilltree", + "additions": 637, + "deletions": 60, + "timestamp": "2026-01-29T11:05:32Z" + }, + { + "hash": "df5a9e2", + "short": "Merge pull request #24 from Memo-2023/claude/review-server-services-NrMEv", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2026-01-29T12:09:01+01:00" + }, + { + "hash": "f623c1f", + "short": "Merge pull request #25 from Memo-2023/claude/matrix-client-options-F0UhN", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2026-01-29T12:10:20+01:00" + }, + { + "hash": "8692690", + "short": "Merge pull request #26 from Memo-2023/claude/matrix-setup-documentation-Ketxw", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2026-01-29T12:12:02+01:00" + }, + { + "hash": "a930e28", + "short": "Merge pull request #27 from Memo-2023/claude/plan-questions-app-UKqD5", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2026-01-29T12:12:29+01:00" + }, + { + "hash": "5e92a52", + "short": "Merge pull request #28 from Memo-2023/claude/skill-tree-app-planning-CO4xH", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2026-01-29T12:13:20+01:00" + }, + { + "hash": "e145c64", + "short": "📝 docs(devlog): add 2026-01-28 massive feature sprint devlog", + "type": null, + "scope": null, + "additions": 596, + "deletions": 0, + "timestamp": "2026-01-29T12:19:38+01:00" + }, + { + "hash": "2021cf9", + "short": "feat(matrix): configure OIDC SSO with Mana Core Auth", + "type": "feat", + "scope": "matrix", + "additions": 2, + "deletions": 2, + "timestamp": "2026-01-29T12:20:44+01:00" + }, + { + "hash": "e46a4c9", + "short": "fix(auth): expose JWKS at /api/auth/jwks for OIDC discovery", + "type": "fix", + "scope": "auth", + "additions": 12, + "deletions": 1, + "timestamp": "2026-01-29T12:21:39+01:00" + }, + { + "hash": "42dafe5", + "short": "fix(auth): fix global prefix exclusion for OIDC routes", + "type": "fix", + "scope": "auth", + "additions": 6, + "deletions": 0, + "timestamp": "2026-01-29T12:31:25+01:00" + }, + { + "hash": "c3dd770", + "short": "✅ test(skilltree): add comprehensive test suite for web and backend", + "type": null, + "scope": null, + "additions": 925, + "deletions": 2, + "timestamp": "2026-01-29T12:43:19+01:00" + }, + { + "hash": "baea194", + "short": "fix(auth): add OAuth2 routes for OIDC discovery compatibility", + "type": "fix", + "scope": "auth", + "additions": 76, + "deletions": 33, + "timestamp": "2026-01-29T12:48:50+01:00" + }, + { + "hash": "ac976f2", + "short": "🔧 chore(skilltree): add dev commands and database setup", + "type": null, + "scope": null, + "additions": 39, + "deletions": 3, + "timestamp": "2026-01-29T12:50:43+01:00" + }, + { + "hash": "0c1008d", + "short": "debug(auth): add detailed logging for OIDC handler response", + "type": "debug", + "scope": "auth", + "additions": 18, + "deletions": 4, + "timestamp": "2026-01-29T12:51:56+01:00" + }, + { + "hash": "29c5d2b", + "short": "feat(auth): add OIDC login page for Matrix SSO", + "type": "feat", + "scope": "auth", + "additions": 257, + "deletions": 1, + "timestamp": "2026-01-29T12:55:02+01:00" + }, + { + "hash": "1fcd5de", + "short": "🔧 chore(skilltree): add environment configuration", + "type": null, + "scope": null, + "additions": 45, + "deletions": 14, + "timestamp": "2026-01-29T12:55:36+01:00" + }, + { + "hash": "b150a16", + "short": "docs(auth): add Matrix SSO integration documentation", + "type": "docs", + "scope": "auth", + "additions": 192, + "deletions": 15, + "timestamp": "2026-01-29T12:57:48+01:00" + }, + { + "hash": "fe8d816", + "short": "📝 docs: add mana-search service to monorepo documentation", + "type": null, + "scope": null, + "additions": 113, + "deletions": 1, + "timestamp": "2026-01-29T12:58:30+01:00" + }, + { + "hash": "176aa05", + "short": "feat(matrix-web): add SSO login button for Mana Core", + "type": "feat", + "scope": "matrix-web", + "additions": 31, + "deletions": 1, + "timestamp": "2026-01-29T13:02:58+01:00" + }, + { + "hash": "677eb82", + "short": "🐛 fix(mana-search): fix SearXNG docker config for local development", + "type": null, + "scope": null, + "additions": 1948, + "deletions": 181, + "timestamp": "2026-01-29T13:07:21+01:00" + }, + { + "hash": "c21f780", + "short": "📝 docs: add questions app and mana-search service to COMMANDS.md", + "type": null, + "scope": null, + "additions": 81, + "deletions": 3, + "timestamp": "2026-01-29T13:08:34+01:00" + }, + { + "hash": "b89749d", + "short": "♻️ refactor: migrate all web apps to Phosphor icons", + "type": null, + "scope": null, + "additions": 1829, + "deletions": 997, + "timestamp": "2026-01-29T13:15:13+01:00" + }, + { + "hash": "f5247b5", + "short": "💄 style(questions): fix class directive syntax for Phosphor icons", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-29T13:17:31+01:00" + }, + { + "hash": "da4b1e6", + "short": "📝 docs: add monorepo consistency report", + "type": null, + "scope": null, + "additions": 293, + "deletions": 0, + "timestamp": "2026-01-29T13:30:19+01:00" + }, + { + "hash": "91143a4", + "short": "✨ feat(questions): unify auth pages with shared components", + "type": null, + "scope": null, + "additions": 138, + "deletions": 257, + "timestamp": "2026-01-29T13:30:37+01:00" + }, + { + "hash": "1733580", + "short": "fix(types): resolve TypeScript errors across multiple packages", + "type": "fix", + "scope": "types", + "additions": 314, + "deletions": 37, + "timestamp": "2026-01-29T13:33:01+01:00" + }, + { + "hash": "3d15539", + "short": "feat(questions): add PillNavigation and QuickInputBar", + "type": "feat", + "scope": "questions", + "additions": 255, + "deletions": 129, + "timestamp": "2026-01-29T13:38:16+01:00" + }, + { + "hash": "52c4206", + "short": "⚡ perf: migrate Tailwind from PostCSS to Vite plugin", + "type": null, + "scope": null, + "additions": 427, + "deletions": 296, + "timestamp": "2026-01-29T13:45:42+01:00" + }, + { + "hash": "f3424c2", + "short": "⬆️ chore: standardize web app dependencies", + "type": null, + "scope": null, + "additions": 108, + "deletions": 108, + "timestamp": "2026-01-29T13:49:55+01:00" + }, + { + "hash": "51ec8f8", + "short": "feat(skilltree): add central auth pages with shared components", + "type": "feat", + "scope": "skilltree", + "additions": 182, + "deletions": 2, + "timestamp": "2026-01-29T13:55:22+01:00" + }, + { + "hash": "6d0d9d4", + "short": "✨ feat(questions): add demo mode for unauthenticated users", + "type": null, + "scope": null, + "additions": 397, + "deletions": 16, + "timestamp": "2026-01-29T13:57:20+01:00" + }, + { + "hash": "14ce457", + "short": "refactor(shared-ui): centralize toast system across all web apps", + "type": "refactor", + "scope": "shared-ui", + "additions": 487, + "deletions": 1249, + "timestamp": "2026-01-29T14:03:29+01:00" + }, + { + "hash": "aa5fc45", + "short": "♻️ refactor(shared-ui): remove lucide-svelte dependency", + "type": null, + "scope": null, + "additions": 4, + "deletions": 17, + "timestamp": "2026-01-29T14:05:46+01:00" + }, + { + "hash": "55afb39", + "short": "📝 docs: update consistency report with completed items", + "type": null, + "scope": null, + "additions": 48, + "deletions": 50, + "timestamp": "2026-01-29T14:07:31+01:00" + }, + { + "hash": "2b3210d", + "short": "chore(matrix): add Dockerfile and docker-compose config for web app", + "type": "chore", + "scope": "matrix", + "additions": 97, + "deletions": 0, + "timestamp": "2026-01-29T14:08:19+01:00" + }, + { + "hash": "e23d119", + "short": "✨ feat: add @manacore/shared-api-client package", + "type": null, + "scope": null, + "additions": 550, + "deletions": 280, + "timestamp": "2026-01-29T14:19:55+01:00" + }, + { + "hash": "fa78769", + "short": "📝 docs: update consistency report with API client progress", + "type": null, + "scope": null, + "additions": 9, + "deletions": 3, + "timestamp": "2026-01-29T14:20:55+01:00" + }, + { + "hash": "5322709", + "short": "♻️ refactor: migrate todo, contacts, storage to shared-api-client", + "type": null, + "scope": null, + "additions": 189, + "deletions": 183, + "timestamp": "2026-01-29T14:27:11+01:00" + }, + { + "hash": "75b5fb2", + "short": "feat(matrix): update web app design to match chat app", + "type": "feat", + "scope": "matrix", + "additions": 342, + "deletions": 210, + "timestamp": "2026-01-29T14:31:56+01:00" + }, + { + "hash": "1e5175e", + "short": "♻️ refactor: migrate calendar, picture, nutriphi, planta, questions, skilltree to shared-api-client", + "type": null, + "scope": null, + "additions": 357, + "deletions": 432, + "timestamp": "2026-01-29T14:32:47+01:00" + }, + { + "hash": "cc130cc", + "short": "feat(matrix): add PillNavigation and theming integration", + "type": "feat", + "scope": "matrix", + "additions": 349, + "deletions": 78, + "timestamp": "2026-01-29T14:41:59+01:00" + }, + { + "hash": "a938ed8", + "short": "fix(matrix): add shared-branding and shared-ui to Dockerfile", + "type": "fix", + "scope": "matrix", + "additions": 183, + "deletions": 396, + "timestamp": "2026-01-29T14:43:41+01:00" + }, + { + "hash": "5a08157", + "short": "🌐 feat: add i18n support to 6 web apps", + "type": null, + "scope": null, + "additions": 3444, + "deletions": 60, + "timestamp": "2026-01-29T14:47:58+01:00" + }, + { + "hash": "d492212", + "short": "fix(matrix): use valid theme variant 'lavender' instead of 'purple'", + "type": "fix", + "scope": "matrix", + "additions": 1, + "deletions": 1, + "timestamp": "2026-01-29T14:49:14+01:00" + }, + { + "hash": "f911243", + "short": "fix(matrix): use padding-bottom for bottom navigation", + "type": "fix", + "scope": "matrix", + "additions": 2, + "deletions": 2, + "timestamp": "2026-01-29T14:52:56+01:00" + }, + { + "hash": "0c150df", + "short": "✨ feat(auth): add resend verification email to all login pages", + "type": null, + "scope": null, + "additions": 690, + "deletions": 109, + "timestamp": "2026-01-29T14:55:49+01:00" + }, + { + "hash": "0d559c9", + "short": "feat(matrix): show DMs and rooms as sections instead of tabs", + "type": "feat", + "scope": "matrix", + "additions": 68, + "deletions": 55, + "timestamp": "2026-01-29T14:56:28+01:00" + }, + { + "hash": "69d405c", + "short": "♻️ refactor: centralize AuthGateModal in shared-auth-ui", + "type": null, + "scope": null, + "additions": 363, + "deletions": 698, + "timestamp": "2026-01-29T15:03:52+01:00" + }, + { + "hash": "aca66b2", + "short": "feat(matrix): add voice note recording and playback", + "type": "feat", + "scope": "matrix", + "additions": 259, + "deletions": 12, + "timestamp": "2026-01-29T15:12:44+01:00" + }, + { + "hash": "cdac341", + "short": "♻️ refactor: centralize global error handler in shared-ui", + "type": null, + "scope": null, + "additions": 307, + "deletions": 119, + "timestamp": "2026-01-29T15:17:17+01:00" + }, + { + "hash": "8804ab7", + "short": "♻️ refactor: centralize AppLoadingSkeleton in shared-ui", + "type": null, + "scope": null, + "additions": 494, + "deletions": 306, + "timestamp": "2026-01-29T15:24:29+01:00" + }, + { + "hash": "7442b09", + "short": "fix(matrix): wait for i18n to load before rendering", + "type": "fix", + "scope": "matrix", + "additions": 13, + "deletions": 6, + "timestamp": "2026-01-29T16:02:26+01:00" + }, + { + "hash": "58a0516", + "short": "feat(matrix): add TTS bot for text-to-speech conversion", + "type": "feat", + "scope": "matrix", + "additions": 1497, + "deletions": 172, + "timestamp": "2026-01-29T16:03:26+01:00" + }, + { + "hash": "41354d5", + "short": "fix(matrix-tts-bot): fix Dockerfile pnpm install", + "type": "fix", + "scope": "matrix-tts-bot", + "additions": 2, + "deletions": 2, + "timestamp": "2026-01-29T16:04:08+01:00" + }, + { + "hash": "56d49f8", + "short": "fix(matrix): handle invalid timestamps gracefully", + "type": "fix", + "scope": "matrix", + "additions": 8, + "deletions": 3, + "timestamp": "2026-01-29T16:04:50+01:00" + }, + { + "hash": "68a8ad6", + "short": "fix(tts-bot): change port to 3033 to avoid conflict with nutriphi", + "type": "fix", + "scope": "tts-bot", + "additions": 208, + "deletions": 7, + "timestamp": "2026-01-29T16:06:25+01:00" + }, + { + "hash": "d37f589", + "short": "fix(matrix): validate lastMessageTime before formatting in RoomItem", + "type": "fix", + "scope": "matrix", + "additions": 9, + "deletions": 8, + "timestamp": "2026-01-29T16:08:06+01:00" + }, + { + "hash": "33073ab", + "short": "feat(matrix): add room invitations UI with accept/decline", + "type": "feat", + "scope": "matrix", + "additions": 119, + "deletions": 5, + "timestamp": "2026-01-29T16:13:52+01:00" + }, + { + "hash": "0a6a1dc", + "short": "📝 docs: add consolidation opportunities analysis", + "type": null, + "scope": null, + "additions": 451, + "deletions": 0, + "timestamp": "2026-01-29T16:14:08+01:00" + }, + { + "hash": "1348fca", + "short": "♻️ refactor: remove duplicated code (Quick Wins)", + "type": null, + "scope": null, + "additions": 9, + "deletions": 78, + "timestamp": "2026-01-29T16:19:18+01:00" + }, + { + "hash": "ff56030", + "short": "fix(matrix): enable independent scrolling for panels", + "type": "fix", + "scope": "matrix", + "additions": 3, + "deletions": 1, + "timestamp": "2026-01-29T16:20:23+01:00" + }, + { + "hash": "f0adea0", + "short": "fix(tts-bot): use MP3 format and prevent duplicate messages", + "type": "fix", + "scope": "tts-bot", + "additions": 22, + "deletions": 5, + "timestamp": "2026-01-29T16:20:26+01:00" + }, + { + "hash": "a1ca002", + "short": "♻️ refactor: migrate 6 backends to shared-nestjs-metrics", + "type": null, + "scope": null, + "additions": 54, + "deletions": 709, + "timestamp": "2026-01-29T16:23:32+01:00" + }, + { + "hash": "3e73a7a", + "short": "📝 docs: update consolidation report with completed tasks", + "type": null, + "scope": null, + "additions": 18, + "deletions": 18, + "timestamp": "2026-01-29T16:24:05+01:00" + }, + { + "hash": "9f47131", + "short": "fix(matrix): improve sidebar and message input layout", + "type": "fix", + "scope": "matrix", + "additions": 115, + "deletions": 118, + "timestamp": "2026-01-29T16:25:05+01:00" + }, + { + "hash": "4681ba8", + "short": "♻️ refactor: create createAppSettingsStore factory and migrate 3 apps", + "type": null, + "scope": null, + "additions": 361, + "deletions": 544, + "timestamp": "2026-01-29T16:30:22+01:00" + }, + { + "hash": "86c40ec", + "short": "fix(matrix-web): fix sidebar gap and chat scrolling layout", + "type": "fix", + "scope": "matrix-web", + "additions": 76, + "deletions": 34, + "timestamp": "2026-01-29T16:36:24+01:00" + }, + { + "hash": "d0d2855", + "short": "🔧 chore: create @manacore/shared-tsconfig and migrate 13 backends", + "type": null, + "scope": null, + "additions": 113, + "deletions": 309, + "timestamp": "2026-01-29T16:38:57+01:00" + }, + { + "hash": "188290b", + "short": "♻️ refactor: migrate 15 web apps to @manacore/shared-vite-config", + "type": null, + "scope": null, + "additions": 224, + "deletions": 512, + "timestamp": "2026-01-29T16:47:55+01:00" + }, + { + "hash": "6807543", + "short": "🔧 chore: create @manacore/shared-drizzle-config and migrate 16 configs", + "type": null, + "scope": null, + "additions": 281, + "deletions": 177, + "timestamp": "2026-01-29T16:54:44+01:00" + }, + { + "hash": "017cb91", + "short": "feat(matrix-web): add emoji reactions support", + "type": "feat", + "scope": "matrix-web", + "additions": 134, + "deletions": 4, + "timestamp": "2026-01-29T16:56:10+01:00" + }, + { + "hash": "f652f28", + "short": "chore: switch matrix-web to local build in production compose", + "type": null, + "scope": null, + "additions": 4, + "deletions": 1, + "timestamp": "2026-01-29T16:59:13+01:00" + }, + { + "hash": "b5e6fd4", + "short": "fix(matrix-web): add missing shared packages to Dockerfile", + "type": "fix", + "scope": "matrix-web", + "additions": 3, + "deletions": 0, + "timestamp": "2026-01-29T17:00:00+01:00" + }, + { + "hash": "035c753", + "short": "fix(matrix-web): inline vite config for Docker build compatibility", + "type": "fix", + "scope": "matrix-web", + "additions": 74, + "deletions": 35, + "timestamp": "2026-01-29T17:01:10+01:00" + }, + { + "hash": "c14cd6c", + "short": "feat(matrix-web): add clickable links and link previews", + "type": "feat", + "scope": "matrix-web", + "additions": 63, + "deletions": 1, + "timestamp": "2026-01-29T17:03:46+01:00" + }, + { + "hash": "bf719f1", + "short": "♻️ refactor: create createSimpleNavigationStores and migrate 10 apps", + "type": null, + "scope": null, + "additions": 150, + "deletions": 82, + "timestamp": "2026-01-29T17:04:32+01:00" + }, + { + "hash": "5f07eb7", + "short": "feat(matrix-web): add markdown formatting support", + "type": "feat", + "scope": "matrix-web", + "additions": 32, + "deletions": 4, + "timestamp": "2026-01-29T17:05:26+01:00" + }, + { + "hash": "95cd142", + "short": "fix(matrix-web): add shared-stores to Dockerfile", + "type": "fix", + "scope": "matrix-web", + "additions": 1, + "deletions": 0, + "timestamp": "2026-01-29T17:06:29+01:00" + }, + { + "hash": "5663c3d", + "short": "fix(matrix-web): inline navigation stores to avoid shared-stores dependency", + "type": "fix", + "scope": "matrix-web", + "additions": 38, + "deletions": 4, + "timestamp": "2026-01-29T17:08:39+01:00" + }, + { + "hash": "2d16f7c", + "short": "🔧 chore: create @manacore/shared-logger and migrate 2 mobile apps", + "type": null, + "scope": null, + "additions": 254, + "deletions": 129, + "timestamp": "2026-01-29T17:12:48+01:00" + }, + { + "hash": "c4483e2", + "short": "🔥 remove: delete Picture Button/Card duplicates, use @manacore/shared-ui", + "type": null, + "scope": null, + "additions": 15, + "deletions": 92, + "timestamp": "2026-01-29T17:15:55+01:00" + }, + { + "hash": "84fca40", + "short": "feat(matrix-web): add online status indicators for DMs", + "type": "feat", + "scope": "matrix-web", + "additions": 128, + "deletions": 12, + "timestamp": "2026-01-29T17:16:02+01:00" + }, + { + "hash": "840f6d7", + "short": "feat(matrix-web): add read receipt indicators", + "type": "feat", + "scope": "matrix-web", + "additions": 85, + "deletions": 4, + "timestamp": "2026-01-29T17:24:03+01:00" + }, + { + "hash": "fbd315e", + "short": "🔧 chore: create @manacore/shared-nestjs-setup and migrate 8 backends", + "type": null, + "scope": null, + "additions": 280, + "deletions": 314, + "timestamp": "2026-01-29T17:25:51+01:00" + }, + { + "hash": "6f1b265", + "short": "✨ feat: add mana-api-gateway for monetizing core services", + "type": null, + "scope": null, + "additions": 2507, + "deletions": 0, + "timestamp": "2026-01-29T17:30:21+01:00" + }, + { + "hash": "f2cd862", + "short": "🚸 ux(matrix-web): improve mobile responsiveness", + "type": null, + "scope": null, + "additions": 1231, + "deletions": 85, + "timestamp": "2026-01-29T17:37:35+01:00" + }, + { + "hash": "dff153c", + "short": "💄 style(matrix-web): redesign login page to match central auth UI", + "type": null, + "scope": null, + "additions": 783, + "deletions": 469, + "timestamp": "2026-01-29T17:43:51+01:00" + }, + { + "hash": "4b322f5", + "short": "📝 docs: add Astro Starlight public documentation site", + "type": null, + "scope": null, + "additions": 7351, + "deletions": 88, + "timestamp": "2026-01-29T18:01:15+01:00" + }, + { + "hash": "fc0ed63", + "short": "✨ feat(api-gateway): add Swagger, admin endpoints, and scheduler", + "type": null, + "scope": null, + "additions": 1059, + "deletions": 1, + "timestamp": "2026-01-29T18:03:16+01:00" + }, + { + "hash": "4c1beb9", + "short": "🌙 feat(docs): set dark mode as default theme", + "type": null, + "scope": null, + "additions": 13, + "deletions": 0, + "timestamp": "2026-01-29T18:22:23+01:00" + }, + { + "hash": "271496b", + "short": "🚀 ci: add mana-search and api-gateway to Docker builds", + "type": null, + "scope": null, + "additions": 400, + "deletions": 277, + "timestamp": "2026-01-29T18:34:18+01:00" + }, + { + "hash": "59d5d20", + "short": "♻️ refactor: migrate 12 backends to shared-nestjs-health module", + "type": null, + "scope": null, + "additions": 4, + "deletions": 0, + "timestamp": "2026-01-29T18:35:10+01:00" + }, + { + "hash": "f651773", + "short": "🚸 ux(matrix-web): add settings access from chat sidebar", + "type": null, + "scope": null, + "additions": 17, + "deletions": 8, + "timestamp": "2026-01-29T18:36:18+01:00" + }, + { + "hash": "60b7cad", + "short": "🔧 chore: gitignore build artifacts and misc updates", + "type": null, + "scope": null, + "additions": 995, + "deletions": 531, + "timestamp": "2026-01-29T18:37:42+01:00" + }, + { + "hash": "4492273", + "short": "✨ feat(matrix-web): add browser notifications for new messages", + "type": null, + "scope": null, + "additions": 317, + "deletions": 3, + "timestamp": "2026-01-29T18:38:43+01:00" + }, + { + "hash": "9ffbf35", + "short": "🔧 fix(docker): update Dockerfiles for monorepo-aware builds", + "type": null, + "scope": null, + "additions": 44, + "deletions": 41, + "timestamp": "2026-01-29T18:39:05+01:00" + }, + { + "hash": "5777c76", + "short": "✨ feat(matrix-web): add message search functionality", + "type": null, + "scope": null, + "additions": 277, + "deletions": 2, + "timestamp": "2026-01-29T18:41:06+01:00" + }, + { + "hash": "b097d89", + "short": "✨ feat(matrix-web): add theme mode selector in settings", + "type": null, + "scope": null, + "additions": 143, + "deletions": 150, + "timestamp": "2026-01-29T18:50:27+01:00" + }, + { + "hash": "5a30826", + "short": "✨ feat(matrix-web): add keyboard shortcuts for quick actions", + "type": null, + "scope": null, + "additions": 14, + "deletions": 0, + "timestamp": "2026-01-29T18:51:12+01:00" + }, + { + "hash": "c3e340f", + "short": "🔧 chore: fix missing shared package dependencies", + "type": null, + "scope": null, + "additions": 10, + "deletions": 2, + "timestamp": "2026-01-29T20:41:39+01:00" + }, + { + "hash": "22a0fee", + "short": "📝 docs: complete consolidation opportunities analysis", + "type": null, + "scope": null, + "additions": 33, + "deletions": 8, + "timestamp": "2026-01-29T20:45:28+01:00" + }, + { + "hash": "c64b4d6", + "short": "✨ feat(matrix-web): add VoIP/video call support", + "type": null, + "scope": null, + "additions": 782, + "deletions": 10, + "timestamp": "2026-01-29T21:28:35+01:00" + }, + { + "hash": "4a3295d", + "short": "✨ feat(mana-crawler): add web crawler service", + "type": null, + "scope": null, + "additions": 2795, + "deletions": 0, + "timestamp": "2026-01-29T22:00:36+01:00" + }, + { + "hash": "1495dbe", + "short": "✨ feat(mana-llm): add central LLM abstraction service", + "type": null, + "scope": null, + "additions": 2270, + "deletions": 1, + "timestamp": "2026-01-29T22:01:00+01:00" + }, + { + "hash": "b5fa0f4", + "short": "✨ feat(mana-notify): add central notification service", + "type": null, + "scope": null, + "additions": 4824, + "deletions": 0, + "timestamp": "2026-01-29T22:07:38+01:00" + }, + { + "hash": "0023394", + "short": "✨ feat(matrix-web): add screen sharing, presence display, and extended emoji picker", + "type": null, + "scope": null, + "additions": 171, + "deletions": 25, + "timestamp": "2026-01-29T22:14:28+01:00" + }, + { + "hash": "60cc0be", + "short": "fix(docker): use node-based healthchecks for mana-core-auth and nutriphi-web", + "type": "fix", + "scope": "docker", + "additions": 3, + "deletions": 2, + "timestamp": "2026-01-29T22:17:43+01:00" + }, + { + "hash": "7b2ac78", + "short": "✨ feat(matrix-web): add @mention autocomplete, message forwarding, and improved typing indicator", + "type": null, + "scope": null, + "additions": 408, + "deletions": 14, + "timestamp": "2026-01-29T22:54:00+01:00" + }, + { + "hash": "384244f", + "short": "♻️ refactor: migrate bots and chat-backend to mana-llm", + "type": null, + "scope": null, + "additions": 275, + "deletions": 179, + "timestamp": "2026-01-29T22:56:26+01:00" + }, + { + "hash": "f4c49fe", + "short": "fix(mana-notify): resolve BullMQ circular import issue", + "type": "fix", + "scope": "mana-notify", + "additions": 1400, + "deletions": 8, + "timestamp": "2026-01-29T22:58:47+01:00" + }, + { + "hash": "971e269", + "short": "🔧 chore: update pnpm-lock and bot sync token", + "type": null, + "scope": null, + "additions": 683, + "deletions": 298, + "timestamp": "2026-01-29T22:59:41+01:00" + }, + { + "hash": "7ffee52", + "short": "fix(notify-client): don't send undefined emailOptions", + "type": "fix", + "scope": "notify-client", + "additions": 24, + "deletions": 12, + "timestamp": "2026-01-29T23:25:46+01:00" + }, + { + "hash": "aae5ef6", + "short": "📝 docs: replace devlog with comprehensive microservices & consolidation post", + "type": null, + "scope": null, + "additions": 678, + "deletions": 268, + "timestamp": "2026-01-29T23:27:36+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-29/macher.md b/devlog/2026-01-29/macher.md new file mode 100644 index 000000000..2c4183c56 --- /dev/null +++ b/devlog/2026-01-29/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-01-29 +day: 38 +view: macher +weekday: Donnerstag +commits: 113 +review: written +--- + +# Donnerstag, 2026-01-29 — Tag 38 (Macher-Sicht) + +## Stats + +113 Commits, +51520 / −12296 LoC, 792 Files. Top-Dirs: `apps/matrix/apps/web` (12%), `services/mana-api-gateway/src` (5%), `services/mana-notify/src` (5%), `apps/skilltree/apps/web` (4%), `apps/calendar/apps/web` (4%). Tags: matrix, matrix-web, auth, skilltree, tts-bot. Session 11:05 → 22:27 (~423 aktive Min, längster Fokus 199 Min). + +## Commits + +- `076e551` feat(skilltree): connect web app to backend API (+637/-60) +- `df5a9e2` Merge pull request #24 from Memo-2023/claude/review-server-services-NrMEv (+0/-0) +- `f623c1f` Merge pull request #25 from Memo-2023/claude/matrix-client-options-F0UhN (+0/-0) +- `8692690` Merge pull request #26 from Memo-2023/claude/matrix-setup-documentation-Ketxw (+0/-0) +- `a930e28` Merge pull request #27 from Memo-2023/claude/plan-questions-app-UKqD5 (+0/-0) +- `5e92a52` Merge pull request #28 from Memo-2023/claude/skill-tree-app-planning-CO4xH (+0/-0) +- `e145c64` 📝 docs(devlog): add 2026-01-28 massive feature sprint devlog (+596/-0) +- `2021cf9` feat(matrix): configure OIDC SSO with Mana Core Auth (+2/-2) +- `e46a4c9` fix(auth): expose JWKS at /api/auth/jwks for OIDC discovery (+12/-1) +- `42dafe5` fix(auth): fix global prefix exclusion for OIDC routes (+6/-0) +- `c3dd770` ✅ test(skilltree): add comprehensive test suite for web and backend (+925/-2) +- `baea194` fix(auth): add OAuth2 routes for OIDC discovery compatibility (+76/-33) +- `ac976f2` 🔧 chore(skilltree): add dev commands and database setup (+39/-3) +- `0c1008d` debug(auth): add detailed logging for OIDC handler response (+18/-4) +- `29c5d2b` feat(auth): add OIDC login page for Matrix SSO (+257/-1) +- `1fcd5de` 🔧 chore(skilltree): add environment configuration (+45/-14) +- `b150a16` docs(auth): add Matrix SSO integration documentation (+192/-15) +- `fe8d816` 📝 docs: add mana-search service to monorepo documentation (+113/-1) +- `176aa05` feat(matrix-web): add SSO login button for Mana Core (+31/-1) +- `677eb82` 🐛 fix(mana-search): fix SearXNG docker config for local development (+1948/-181) + +_… plus 93 weitere Commits._ diff --git a/devlog/2026-01-29/spieler.md b/devlog/2026-01-29/spieler.md new file mode 100644 index 000000000..3c4d4a896 --- /dev/null +++ b/devlog/2026-01-29/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-01-29 +day: 38 +view: spieler +weekday: Donnerstag +commits: 113 +review: written +--- + +# Donnerstag, 2026-01-29 — Tag 38 + +Großer Sprint-Tag mit Schwerpunkt **apps** (113 Commits). + +## Highlights + +- connect web app to backend API +- 📝 docs(devlog): add 2026-01-28 massive feature sprint devlog +- configure OIDC SSO with Mana Core Auth +- expose JWKS at /api/auth/jwks for OIDC discovery +- fix global prefix exclusion for OIDC routes diff --git a/devlog/2026-01-30/data.json b/devlog/2026-01-30/data.json new file mode 100644 index 000000000..94bf03d14 --- /dev/null +++ b/devlog/2026-01-30/data.json @@ -0,0 +1,466 @@ +{ + "date": "2026-01-30", + "day_number": 39, + "weekday": "Freitag", + "commits": 42, + "authors": [ + { + "name": "Till-JS", + "count": 42 + } + ], + "additions": 17857, + "deletions": 2113, + "net_lines": 15744, + "files_changed": 232, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-30T15:06:24.000Z", + "last_commit_at": "2026-01-30T19:00:24.000Z", + "total_span_minutes": 234, + "active_minutes": 172, + "pauses": [ + { + "from": "18:58", + "to": "20:00", + "minutes": 62 + } + ], + "longest_focus_minutes": 172 + }, + "top_dirs": [ + { + "path": "services/llm-playground/src", + "pct": 10 + }, + { + "path": "services/mana-core-auth/src", + "pct": 6 + }, + { + "path": "services/matrix-chat-bot/src", + "pct": 4 + }, + { + "path": "services/matrix-manadeck-bot/src", + "pct": 4 + }, + { + "path": "services/matrix-planta-bot/src", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 143 + }, + { + "ext": ".json", + "count": 49 + }, + { + "ext": ".svelte", + "count": 25 + }, + { + "ext": "", + "count": 21 + }, + { + "ext": ".md", + "count": 11 + }, + { + "ext": ".gitignore", + "count": 10 + } + ], + "tags": ["mana-core-auth", "matrix-bots", "llm-playground", "matrix-web", "matrix-picture-bot"], + "commits_list": [ + { + "hash": "b8ecdb8", + "short": "🔧 chore(mana-notify): disable email notifications by default", + "type": null, + "scope": null, + "additions": 2, + "deletions": 2, + "timestamp": "2026-01-30T16:06:24+01:00" + }, + { + "hash": "3b745cf", + "short": "fix(matrix-web): disable SSR for app routes to fix $state error", + "type": "fix", + "scope": "matrix-web", + "additions": 4, + "deletions": 0, + "timestamp": "2026-01-30T16:12:44+01:00" + }, + { + "hash": "8950692", + "short": "feat(matrix-picture-bot): add Matrix bot for AI image generation", + "type": "feat", + "scope": "matrix-picture-bot", + "additions": 1712, + "deletions": 126, + "timestamp": "2026-01-30T16:15:08+01:00" + }, + { + "hash": "6453537", + "short": "feat(matrix-contacts-bot): add Matrix bot for contact management", + "type": "feat", + "scope": "matrix-contacts-bot", + "additions": 1572, + "deletions": 0, + "timestamp": "2026-01-30T16:20:11+01:00" + }, + { + "hash": "8da676f", + "short": "🐛 fix(calendar-web): initialize auth store on mount", + "type": null, + "scope": null, + "additions": 3, + "deletions": 0, + "timestamp": "2026-01-30T16:24:43+01:00" + }, + { + "hash": "ad7f875", + "short": "feat(matrix-manadeck-bot): add Matrix bot for card/deck management", + "type": "feat", + "scope": "matrix-manadeck-bot", + "additions": 1461, + "deletions": 0, + "timestamp": "2026-01-30T16:29:12+01:00" + }, + { + "hash": "017891b", + "short": "🐛 fix(calendar-web): use client URL in browser for API calls", + "type": null, + "scope": null, + "additions": 27, + "deletions": 10, + "timestamp": "2026-01-30T16:34:39+01:00" + }, + { + "hash": "3d4402a", + "short": "fix(mana-core-auth): allow inline scripts in CSP for OIDC login page", + "type": "fix", + "scope": "mana-core-auth", + "additions": 13, + "deletions": 1, + "timestamp": "2026-01-30T16:35:42+01:00" + }, + { + "hash": "e5a5e96", + "short": "🐛 fix(calendar-web): add missing packages to Dockerfile", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2026-01-30T16:36:25+01:00" + }, + { + "hash": "3f336de", + "short": "feat(matrix-planta-bot): add Matrix bot for plant care management", + "type": "feat", + "scope": "matrix-planta-bot", + "additions": 1337, + "deletions": 0, + "timestamp": "2026-01-30T16:36:30+01:00" + }, + { + "hash": "eb475ac", + "short": "🔧 chore(calendar-web): add shared-vite-config to devDependencies", + "type": null, + "scope": null, + "additions": 106, + "deletions": 0, + "timestamp": "2026-01-30T16:40:02+01:00" + }, + { + "hash": "4a66341", + "short": "fix(mana-core-auth): extract client_id from returnUrl for OIDC login", + "type": "fix", + "scope": "mana-core-auth", + "additions": 20, + "deletions": 4, + "timestamp": "2026-01-30T16:41:39+01:00" + }, + { + "hash": "3694155", + "short": "🔧 chore(shared-vite-config): add build step for Docker compatibility", + "type": null, + "scope": null, + "additions": 1645, + "deletions": 0, + "timestamp": "2026-01-30T16:41:48+01:00" + }, + { + "hash": "90f9f2c", + "short": "🔧 chore(shared-vite-config): add build step for Docker compatibility", + "type": null, + "scope": null, + "additions": 10, + "deletions": 3, + "timestamp": "2026-01-30T16:41:58+01:00" + }, + { + "hash": "fc15366", + "short": "fix(mana-core-auth): fix TypeScript error in oidc-login controller", + "type": "fix", + "scope": "mana-core-auth", + "additions": 2, + "deletions": 2, + "timestamp": "2026-01-30T16:42:10+01:00" + }, + { + "hash": "8779d04", + "short": "🔧 chore(calendar-web): add shared-stores to Dockerfile", + "type": null, + "scope": null, + "additions": 1, + "deletions": 0, + "timestamp": "2026-01-30T16:42:54+01:00" + }, + { + "hash": "c547644", + "short": "feat(matrix-questions-bot): add Matrix bot for Q&A research management", + "type": "feat", + "scope": "matrix-questions-bot", + "additions": 1563, + "deletions": 0, + "timestamp": "2026-01-30T16:48:56+01:00" + }, + { + "hash": "e3cfafe", + "short": "feat(matrix-presi-bot): add Matrix bot for presentation management", + "type": "feat", + "scope": "matrix-presi-bot", + "additions": 1423, + "deletions": 0, + "timestamp": "2026-01-30T16:54:07+01:00" + }, + { + "hash": "edbe750", + "short": "fix(mana-core-auth): use Better Auth native sign-in for OIDC login", + "type": "fix", + "scope": "mana-core-auth", + "additions": 20, + "deletions": 7, + "timestamp": "2026-01-30T16:57:52+01:00" + }, + { + "hash": "3ed1453", + "short": "feat(matrix-skilltree-bot): add Matrix bot for skill tree and XP management", + "type": "feat", + "scope": "matrix-skilltree-bot", + "additions": 1272, + "deletions": 0, + "timestamp": "2026-01-30T17:00:01+01:00" + }, + { + "hash": "82da95b", + "short": "🔥 remove(calendar-web): remove demo mode, enforce login", + "type": null, + "scope": null, + "additions": 10, + "deletions": 329, + "timestamp": "2026-01-30T17:07:17+01:00" + }, + { + "hash": "68219a0", + "short": "feat(matrix-chat-bot): add Matrix bot for AI chat conversations", + "type": "feat", + "scope": "matrix-chat-bot", + "additions": 1591, + "deletions": 0, + "timestamp": "2026-01-30T17:18:21+01:00" + }, + { + "hash": "f07387d", + "short": "🔥 remove: demo mode from todo, contacts, clock, questions, chat apps", + "type": null, + "scope": null, + "additions": 75, + "deletions": 602, + "timestamp": "2026-01-30T17:21:22+01:00" + }, + { + "hash": "004fe85", + "short": "fix(matrix-bots): resolve TypeScript strict null check errors", + "type": "fix", + "scope": "matrix-bots", + "additions": 44, + "deletions": 44, + "timestamp": "2026-01-30T17:32:09+01:00" + }, + { + "hash": "5d5e42c", + "short": "feat(chat): add all Mac Mini Ollama models to playground", + "type": "feat", + "scope": "chat", + "additions": 239, + "deletions": 5, + "timestamp": "2026-01-30T17:48:40+01:00" + }, + { + "hash": "df47daf", + "short": "chore(matrix-bots): standardize package.json across all 9 bots", + "type": "chore", + "scope": "matrix-bots", + "additions": 143, + "deletions": 68, + "timestamp": "2026-01-30T17:49:15+01:00" + }, + { + "hash": "3edbd0c", + "short": "chore: update dependencies and mana-llm improvements", + "type": null, + "scope": null, + "additions": 203, + "deletions": 3, + "timestamp": "2026-01-30T17:50:58+01:00" + }, + { + "hash": "f880ef2", + "short": "feat(llm-playground): add SvelteKit LLM playground UI", + "type": "feat", + "scope": "llm-playground", + "additions": 1245, + "deletions": 0, + "timestamp": "2026-01-30T17:52:10+01:00" + }, + { + "hash": "f59b659", + "short": "fix(mana-core-auth): add dedicated Better Auth handler for sign-in", + "type": "fix", + "scope": "mana-core-auth", + "additions": 90, + "deletions": 1, + "timestamp": "2026-01-30T17:54:25+01:00" + }, + { + "hash": "359b870", + "short": "🔧 chore: add shared-vite-config to web Dockerfiles", + "type": null, + "scope": null, + "additions": 16, + "deletions": 0, + "timestamp": "2026-01-30T18:01:45+01:00" + }, + { + "hash": "78a5002", + "short": "debug: add logging to OIDC authorize endpoint", + "type": null, + "scope": null, + "additions": 3, + "deletions": 0, + "timestamp": "2026-01-30T18:02:56+01:00" + }, + { + "hash": "8207d38", + "short": "fix(mana-core-auth): use comma-separated redirect_urls for Better Auth OIDC", + "type": "fix", + "scope": "mana-core-auth", + "additions": 5, + "deletions": 3, + "timestamp": "2026-01-30T18:12:16+01:00" + }, + { + "hash": "fdba0e3", + "short": "feat(llm-playground): add production deployment with auth", + "type": "feat", + "scope": "llm-playground", + "additions": 993, + "deletions": 711, + "timestamp": "2026-01-30T18:15:02+01:00" + }, + { + "hash": "d09ea06", + "short": "🔧 chore: add shared-vite-config as devDependency to web apps", + "type": null, + "scope": null, + "additions": 424, + "deletions": 145, + "timestamp": "2026-01-30T18:15:36+01:00" + }, + { + "hash": "ee05b6c", + "short": "fix(mana-core-auth): use correct property name 'redirectUrls' for Better Auth", + "type": "fix", + "scope": "mana-core-auth", + "additions": 3, + "deletions": 3, + "timestamp": "2026-01-30T18:22:06+01:00" + }, + { + "hash": "bb428d4", + "short": "fix(mana-core-auth): add Matrix Synapse as trusted OIDC client", + "type": "fix", + "scope": "mana-core-auth", + "additions": 11, + "deletions": 0, + "timestamp": "2026-01-30T18:26:30+01:00" + }, + { + "hash": "4526123", + "short": "🔧 chore: add shared-stores and shared-api-client to web apps", + "type": null, + "scope": null, + "additions": 153, + "deletions": 28, + "timestamp": "2026-01-30T18:27:04+01:00" + }, + { + "hash": "01a2c78", + "short": "fix(mana-core-auth): add all required fields to trusted client config", + "type": "fix", + "scope": "mana-core-auth", + "additions": 5, + "deletions": 0, + "timestamp": "2026-01-30T18:27:33+01:00" + }, + { + "hash": "c949f5d", + "short": "fix(mana-core-auth): fix type compatibility for trusted client config", + "type": "fix", + "scope": "mana-core-auth", + "additions": 2, + "deletions": 2, + "timestamp": "2026-01-30T18:28:06+01:00" + }, + { + "hash": "744d0c9", + "short": "fix(mana-core-auth): remove non-existent id field from trusted client", + "type": "fix", + "scope": "mana-core-auth", + "additions": 1, + "deletions": 3, + "timestamp": "2026-01-30T18:28:51+01:00" + }, + { + "hash": "2daaee7", + "short": "🐛 fix: syntax error in contacts-web +layout.svelte", + "type": null, + "scope": null, + "additions": 9, + "deletions": 11, + "timestamp": "2026-01-30T18:58:38+01:00" + }, + { + "hash": "1d88387", + "short": "docs: add daily report for 2026-01-30", + "type": null, + "scope": null, + "additions": 397, + "deletions": 0, + "timestamp": "2026-01-30T20:00:24+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-30/macher.md b/devlog/2026-01-30/macher.md new file mode 100644 index 000000000..127f97aca --- /dev/null +++ b/devlog/2026-01-30/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-01-30 +day: 39 +view: macher +weekday: Freitag +commits: 42 +review: written +--- + +# Freitag, 2026-01-30 — Tag 39 (Macher-Sicht) + +## Stats + +42 Commits, +17857 / −2113 LoC, 232 Files. Top-Dirs: `services/llm-playground/src` (10%), `services/mana-core-auth/src` (6%), `services/matrix-chat-bot/src` (4%), `services/matrix-manadeck-bot/src` (4%), `services/matrix-planta-bot/src` (4%). Tags: mana-core-auth, matrix-bots, llm-playground, matrix-web, matrix-picture-bot. Session 15:06 → 19:00 (~172 aktive Min, längster Fokus 172 Min). + +## Commits + +- `b8ecdb8` 🔧 chore(mana-notify): disable email notifications by default (+2/-2) +- `3b745cf` fix(matrix-web): disable SSR for app routes to fix $state error (+4/-0) +- `8950692` feat(matrix-picture-bot): add Matrix bot for AI image generation (+1712/-126) +- `6453537` feat(matrix-contacts-bot): add Matrix bot for contact management (+1572/-0) +- `8da676f` 🐛 fix(calendar-web): initialize auth store on mount (+3/-0) +- `ad7f875` feat(matrix-manadeck-bot): add Matrix bot for card/deck management (+1461/-0) +- `017891b` 🐛 fix(calendar-web): use client URL in browser for API calls (+27/-10) +- `3d4402a` fix(mana-core-auth): allow inline scripts in CSP for OIDC login page (+13/-1) +- `e5a5e96` 🐛 fix(calendar-web): add missing packages to Dockerfile (+2/-0) +- `3f336de` feat(matrix-planta-bot): add Matrix bot for plant care management (+1337/-0) +- `eb475ac` 🔧 chore(calendar-web): add shared-vite-config to devDependencies (+106/-0) +- `4a66341` fix(mana-core-auth): extract client_id from returnUrl for OIDC login (+20/-4) +- `3694155` 🔧 chore(shared-vite-config): add build step for Docker compatibility (+1645/-0) +- `90f9f2c` 🔧 chore(shared-vite-config): add build step for Docker compatibility (+10/-3) +- `fc15366` fix(mana-core-auth): fix TypeScript error in oidc-login controller (+2/-2) +- `8779d04` 🔧 chore(calendar-web): add shared-stores to Dockerfile (+1/-0) +- `c547644` feat(matrix-questions-bot): add Matrix bot for Q&A research management (+1563/-0) +- `e3cfafe` feat(matrix-presi-bot): add Matrix bot for presentation management (+1423/-0) +- `edbe750` fix(mana-core-auth): use Better Auth native sign-in for OIDC login (+20/-7) +- `3ed1453` feat(matrix-skilltree-bot): add Matrix bot for skill tree and XP management (+1272/-0) + +_… plus 22 weitere Commits._ diff --git a/devlog/2026-01-30/spieler.md b/devlog/2026-01-30/spieler.md new file mode 100644 index 000000000..5ebdd4cc7 --- /dev/null +++ b/devlog/2026-01-30/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-01-30 +day: 39 +view: spieler +weekday: Freitag +commits: 42 +review: written +--- + +# Freitag, 2026-01-30 — Tag 39 + +Großer Sprint-Tag mit Schwerpunkt **services** (42 Commits). + +## Highlights + +- 🔧 chore(mana-notify): disable email notifications by default +- disable SSR for app routes to fix $state error +- add Matrix bot for AI image generation +- add Matrix bot for contact management +- 🐛 fix(calendar-web): initialize auth store on mount diff --git a/devlog/2026-01-31/data.json b/devlog/2026-01-31/data.json new file mode 100644 index 000000000..876d40317 --- /dev/null +++ b/devlog/2026-01-31/data.json @@ -0,0 +1,575 @@ +{ + "date": "2026-01-31", + "day_number": 40, + "weekday": "Samstag", + "commits": 53, + "authors": [ + { + "name": "Till-JS", + "count": 53 + } + ], + "additions": 24147, + "deletions": 19564, + "net_lines": 4583, + "files_changed": 433, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-01-31T22:30:16.000Z", + "last_commit_at": "2026-02-01T04:58:47.000Z", + "total_span_minutes": 389, + "active_minutes": 250, + "pauses": [ + { + "from": "23:30", + "to": "00:07", + "minutes": 37 + }, + { + "from": "01:17", + "to": "02:21", + "minutes": 64 + }, + { + "from": "04:18", + "to": "04:56", + "minutes": 38 + } + ], + "longest_focus_minutes": 118 + }, + "top_dirs": [ + { + "path": "services/matrix-mana-bot/src", + "pct": 5 + }, + { + "path": "packages/matrix-bot-common/src", + "pct": 4 + }, + { + "path": "apps/matrix/apps/web", + "pct": 3 + }, + { + "path": "services/mana-media/apps", + "pct": 3 + }, + { + "path": "services/telegram-project-doc-bot/src", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 374 + }, + { + "ext": ".json", + "count": 97 + }, + { + "ext": ".md", + "count": 26 + }, + { + "ext": ".svelte", + "count": 16 + }, + { + "ext": ".yaml", + "count": 15 + }, + { + "ext": ".yml", + "count": 14 + } + ], + "tags": ["matrix-mana-bot", "matrix-bot-common", "mana-voice-bot", "bot-services", "seed"], + "commits_list": [ + { + "hash": "d605366", + "short": "✨ feat(llm-playground): add model comparison feature", + "type": null, + "scope": null, + "additions": 695, + "deletions": 523, + "timestamp": "2026-01-31T23:30:16+01:00" + }, + { + "hash": "d2f00c1", + "short": "📝 docs(landing): add blueprints section for architecture decisions", + "type": null, + "scope": null, + "additions": 1856, + "deletions": 0, + "timestamp": "2026-02-01T00:07:34+01:00" + }, + { + "hash": "a341aa1", + "short": "🔥 remove: Telegram bots - Matrix-only strategy", + "type": null, + "scope": null, + "additions": 2093, + "deletions": 9379, + "timestamp": "2026-02-01T00:17:14+01:00" + }, + { + "hash": "2137404", + "short": "✨ feat(llm-playground): add model metadata system and SSD documentation", + "type": null, + "scope": null, + "additions": 310, + "deletions": 14, + "timestamp": "2026-02-01T00:24:34+01:00" + }, + { + "hash": "508ae12", + "short": "🏗️ refactor: restructure docker-compose with new port schema and naming", + "type": null, + "scope": null, + "additions": 688, + "deletions": 835, + "timestamp": "2026-02-01T00:37:12+01:00" + }, + { + "hash": "9b61831", + "short": "♻️ refactor: consolidate SessionService & TranscriptionService in @manacore/bot-services", + "type": null, + "scope": null, + "additions": 974, + "deletions": 863, + "timestamp": "2026-02-01T00:37:54+01:00" + }, + { + "hash": "2b979d5", + "short": "♻️ refactor: migrate all remaining bots to shared services", + "type": null, + "scope": null, + "additions": 600, + "deletions": 1353, + "timestamp": "2026-02-01T00:50:48+01:00" + }, + { + "hash": "145b0b6", + "short": "✨ feat: create @manacore/matrix-bot-common shared package", + "type": null, + "scope": null, + "additions": 1592, + "deletions": 438, + "timestamp": "2026-02-01T01:02:55+01:00" + }, + { + "hash": "83f2d63", + "short": "♻️ refactor: migrate 19 Matrix bots to shared HealthController", + "type": null, + "scope": null, + "additions": 483, + "deletions": 331, + "timestamp": "2026-02-01T01:17:01+01:00" + }, + { + "hash": "f4d8ed4", + "short": "feat(mana-voice-bot): add German voice-to-voice assistant service", + "type": "feat", + "scope": "mana-voice-bot", + "additions": 691, + "deletions": 0, + "timestamp": "2026-02-01T02:21:13+01:00" + }, + { + "hash": "2567ea6", + "short": "♻️ refactor: migrate all 18 Matrix bots to extend BaseMatrixService", + "type": null, + "scope": null, + "additions": 1478, + "deletions": 2727, + "timestamp": "2026-02-01T02:47:11+01:00" + }, + { + "hash": "4d8c7f1", + "short": "🔧 chore: temporarily disable OIDC in synapse config", + "type": null, + "scope": null, + "additions": 22, + "deletions": 25, + "timestamp": "2026-02-01T02:49:45+01:00" + }, + { + "hash": "f04c27f", + "short": "♻️ refactor: migrate 5 Matrix bots to shared utilities", + "type": null, + "scope": null, + "additions": 324, + "deletions": 245, + "timestamp": "2026-02-01T02:57:21+01:00" + }, + { + "hash": "db07b56", + "short": "feat(matrix-mana-bot): add voice input support (Phase 1)", + "type": "feat", + "scope": "matrix-mana-bot", + "additions": 833, + "deletions": 13, + "timestamp": "2026-02-01T02:59:13+01:00" + }, + { + "hash": "48dfcd1", + "short": "feat(matrix-mana-bot): add voice output/TTS support (Phase 2)", + "type": "feat", + "scope": "matrix-mana-bot", + "additions": 247, + "deletions": 4, + "timestamp": "2026-02-01T03:02:37+01:00" + }, + { + "hash": "7a2e037", + "short": "♻️ refactor: migrate 4 more bots to use UserListMapper", + "type": null, + "scope": null, + "additions": 89, + "deletions": 105, + "timestamp": "2026-02-01T03:03:10+01:00" + }, + { + "hash": "e892e8d", + "short": "feat(matrix-mana-bot): add smart voice formatting (Phase 3)", + "type": "feat", + "scope": "matrix-mana-bot", + "additions": 378, + "deletions": 67, + "timestamp": "2026-02-01T03:05:51+01:00" + }, + { + "hash": "462ef00", + "short": "feat(matrix-mana-bot): add persistent voice preferences (Phase 4)", + "type": "feat", + "scope": "matrix-mana-bot", + "additions": 240, + "deletions": 45, + "timestamp": "2026-02-01T03:08:52+01:00" + }, + { + "hash": "867a1a7", + "short": "♻️ refactor: migrate 5 bots to KeywordCommandDetector", + "type": null, + "scope": null, + "additions": 291, + "deletions": 168, + "timestamp": "2026-02-01T03:11:58+01:00" + }, + { + "hash": "5c8120f", + "short": "✨ feat(manalink): add PWA support and rebrand Matrix client", + "type": null, + "scope": null, + "additions": 340, + "deletions": 70, + "timestamp": "2026-02-01T03:25:45+01:00" + }, + { + "hash": "cd28a83", + "short": "✨ feat(mana-media): add unified media processing platform MVP", + "type": null, + "scope": null, + "additions": 5318, + "deletions": 0, + "timestamp": "2026-02-01T03:25:53+01:00" + }, + { + "hash": "c28410b", + "short": "🔧 chore: enable OIDC for Matrix Synapse", + "type": null, + "scope": null, + "additions": 23, + "deletions": 23, + "timestamp": "2026-02-01T03:25:59+01:00" + }, + { + "hash": "a23430f", + "short": "✨ feat: add KeywordCommandDetector to all 19 Matrix bots", + "type": null, + "scope": null, + "additions": 261, + "deletions": 36, + "timestamp": "2026-02-01T03:26:25+01:00" + }, + { + "hash": "6a675e5", + "short": "🐛 fix: resolve tsconfig and dependency errors", + "type": null, + "scope": null, + "additions": 792, + "deletions": 311, + "timestamp": "2026-02-01T03:32:46+01:00" + }, + { + "hash": "cfaf9f2", + "short": "fix(matrix-bot-common): use explicit ESM imports for Node.js v25 compatibility", + "type": "fix", + "scope": "matrix-bot-common", + "additions": 7, + "deletions": 7, + "timestamp": "2026-02-01T03:34:07+01:00" + }, + { + "hash": "12f1288", + "short": "build(matrix-bot-common): add build step for Node.js v25 compatibility", + "type": "build", + "scope": "matrix-bot-common", + "additions": 37, + "deletions": 11, + "timestamp": "2026-02-01T03:37:20+01:00" + }, + { + "hash": "c29939e", + "short": "✨ feat: add voice transcription support to Matrix bots", + "type": null, + "scope": null, + "additions": 894, + "deletions": 419, + "timestamp": "2026-02-01T03:37:30+01:00" + }, + { + "hash": "5b4b128", + "short": "build(bot-services): add build step for Node.js v25 compatibility", + "type": "build", + "scope": "bot-services", + "additions": 78, + "deletions": 40, + "timestamp": "2026-02-01T03:40:05+01:00" + }, + { + "hash": "2a03a7c", + "short": "fix(matrix-mana-bot): import service modules in OrchestrationModule", + "type": "fix", + "scope": "matrix-mana-bot", + "additions": 8, + "deletions": 1, + "timestamp": "2026-02-01T03:41:13+01:00" + }, + { + "hash": "8370005", + "short": "fix(matrix-mana-bot): make service modules global for DI", + "type": "fix", + "scope": "matrix-mana-bot", + "additions": 40, + "deletions": 35, + "timestamp": "2026-02-01T03:42:36+01:00" + }, + { + "hash": "0229b1c", + "short": "🐛 fix: resolve tsconfig issues across all NestJS backends", + "type": null, + "scope": null, + "additions": 407, + "deletions": 460, + "timestamp": "2026-02-01T03:47:17+01:00" + }, + { + "hash": "191c7b4", + "short": "🐛 fix(mana-core-auth): handle form-urlencoded token requests", + "type": null, + "scope": null, + "additions": 24, + "deletions": 1, + "timestamp": "2026-02-01T03:48:55+01:00" + }, + { + "hash": "5500832", + "short": "🐛 fix(mana-core-auth): add explicit urlencoded body parser for OAuth token endpoint", + "type": null, + "scope": null, + "additions": 581, + "deletions": 158, + "timestamp": "2026-02-01T03:56:17+01:00" + }, + { + "hash": "03abacc", + "short": "🐛 fix(web-apps): fix Vite type compatibility and Svelte 5 store issues", + "type": null, + "scope": null, + "additions": 185, + "deletions": 138, + "timestamp": "2026-02-01T04:00:29+01:00" + }, + { + "hash": "0d98647", + "short": "🐛 fix(mana-core-auth): use body-parser for urlencoded OAuth token requests", + "type": null, + "scope": null, + "additions": 220, + "deletions": 446, + "timestamp": "2026-02-01T04:00:44+01:00" + }, + { + "hash": "582f743", + "short": "🐛 fix(matrix-web): fix icon title prop type errors", + "type": null, + "scope": null, + "additions": 49, + "deletions": 13, + "timestamp": "2026-02-01T04:02:35+01:00" + }, + { + "hash": "793b6d8", + "short": "fix(matrix-bot-common): use authenticated media API for downloads", + "type": "fix", + "scope": "matrix-bot-common", + "additions": 33, + "deletions": 3, + "timestamp": "2026-02-01T04:07:38+01:00" + }, + { + "hash": "4599db5", + "short": "📝 docs(mana-core-auth): add comment explaining OAuth token form-urlencoded support", + "type": null, + "scope": null, + "additions": 3, + "deletions": 0, + "timestamp": "2026-02-01T04:12:16+01:00" + }, + { + "hash": "0653972", + "short": "📝 docs: add daily report for 2026-02-01", + "type": null, + "scope": null, + "additions": 574, + "deletions": 0, + "timestamp": "2026-02-01T04:18:55+01:00" + }, + { + "hash": "06c85ec", + "short": "🔧 fix: type errors in element.mana.how, mana-media, @todo/web, @calendar/web", + "type": null, + "scope": null, + "additions": 11, + "deletions": 10, + "timestamp": "2026-02-01T04:56:29+01:00" + }, + { + "hash": "c3044cb", + "short": "🚸 ux: simplify Manalink login - SSO primary, manual login hidden", + "type": null, + "scope": null, + "additions": 204, + "deletions": 132, + "timestamp": "2026-02-01T05:00:03+01:00" + }, + { + "hash": "fe96354", + "short": "🔧 fix(cloudflared): correct matrix.mana.how port (8008 → 4000)", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-01T05:01:20+01:00" + }, + { + "hash": "fd61692", + "short": "🌱 seed: add test user t@t.de to dev seed script", + "type": null, + "scope": null, + "additions": 58, + "deletions": 47, + "timestamp": "2026-02-01T05:07:39+01:00" + }, + { + "hash": "d4784e9", + "short": "🔧 fix(cloudflared): update all service ports to match Docker mappings", + "type": null, + "scope": null, + "additions": 44, + "deletions": 24, + "timestamp": "2026-02-01T05:07:58+01:00" + }, + { + "hash": "f35c05e", + "short": "🔧 feat(grafana): enable anonymous viewer access", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2026-02-01T05:10:39+01:00" + }, + { + "hash": "805477b", + "short": "fix(seed): use simple password for test user (encoding issues with special chars)", + "type": "fix", + "scope": "seed", + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-01T05:13:42+01:00" + }, + { + "hash": "9b7d8c3", + "short": "🐛 fix(grafana): correct VictoriaMetrics datasource port (8428 → 9090)", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-01T05:13:48+01:00" + }, + { + "hash": "23887c2", + "short": "📦 feat(grafana): install Infinity datasource plugin for Business Metrics", + "type": null, + "scope": null, + "additions": 1, + "deletions": 0, + "timestamp": "2026-02-01T05:18:02+01:00" + }, + { + "hash": "24c8a79", + "short": "🔧 fix(matrix-web): correct port config to match actual container (5180)", + "type": null, + "scope": null, + "additions": 3, + "deletions": 3, + "timestamp": "2026-02-01T05:19:18+01:00" + }, + { + "hash": "aafc693", + "short": "🏠 feat(grafana): set Master Overview as home dashboard", + "type": null, + "scope": null, + "additions": 1, + "deletions": 0, + "timestamp": "2026-02-01T05:29:33+01:00" + }, + { + "hash": "dac6a85", + "short": "🔧 fix(prometheus): correct backend ports and add missing services", + "type": null, + "scope": null, + "additions": 26, + "deletions": 5, + "timestamp": "2026-02-01T05:51:50+01:00" + }, + { + "hash": "1b39aa8", + "short": "🔧 fix(prometheus): disable non-existent scrape targets", + "type": null, + "scope": null, + "additions": 33, + "deletions": 33, + "timestamp": "2026-02-01T05:53:22+01:00" + }, + { + "hash": "b4493ce", + "short": "debug: add token endpoint logging", + "type": null, + "scope": null, + "additions": 3, + "deletions": 0, + "timestamp": "2026-02-01T05:58:47+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-01-31/macher.md b/devlog/2026-01-31/macher.md new file mode 100644 index 000000000..a15cdfe9b --- /dev/null +++ b/devlog/2026-01-31/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-01-31 +day: 40 +view: macher +weekday: Samstag +commits: 53 +review: written +--- + +# Samstag, 2026-01-31 — Tag 40 (Macher-Sicht) + +## Stats + +53 Commits, +24147 / −19564 LoC, 433 Files. Top-Dirs: `services/matrix-mana-bot/src` (5%), `packages/matrix-bot-common/src` (4%), `apps/matrix/apps/web` (3%), `services/mana-media/apps` (3%), `services/telegram-project-doc-bot/src` (3%). Tags: matrix-mana-bot, matrix-bot-common, mana-voice-bot, bot-services, seed. Session 22:30 → 04:58 (~250 aktive Min, längster Fokus 118 Min). + +## Commits + +- `d605366` ✨ feat(llm-playground): add model comparison feature (+695/-523) +- `d2f00c1` 📝 docs(landing): add blueprints section for architecture decisions (+1856/-0) +- `a341aa1` 🔥 remove: Telegram bots - Matrix-only strategy (+2093/-9379) +- `2137404` ✨ feat(llm-playground): add model metadata system and SSD documentation (+310/-14) +- `508ae12` 🏗️ refactor: restructure docker-compose with new port schema and naming (+688/-835) +- `9b61831` ♻️ refactor: consolidate SessionService & TranscriptionService in @manacore/bot-services (+974/-863) +- `2b979d5` ♻️ refactor: migrate all remaining bots to shared services (+600/-1353) +- `145b0b6` ✨ feat: create @manacore/matrix-bot-common shared package (+1592/-438) +- `83f2d63` ♻️ refactor: migrate 19 Matrix bots to shared HealthController (+483/-331) +- `f4d8ed4` feat(mana-voice-bot): add German voice-to-voice assistant service (+691/-0) +- `2567ea6` ♻️ refactor: migrate all 18 Matrix bots to extend BaseMatrixService (+1478/-2727) +- `4d8c7f1` 🔧 chore: temporarily disable OIDC in synapse config (+22/-25) +- `f04c27f` ♻️ refactor: migrate 5 Matrix bots to shared utilities (+324/-245) +- `db07b56` feat(matrix-mana-bot): add voice input support (Phase 1) (+833/-13) +- `48dfcd1` feat(matrix-mana-bot): add voice output/TTS support (Phase 2) (+247/-4) +- `7a2e037` ♻️ refactor: migrate 4 more bots to use UserListMapper (+89/-105) +- `e892e8d` feat(matrix-mana-bot): add smart voice formatting (Phase 3) (+378/-67) +- `462ef00` feat(matrix-mana-bot): add persistent voice preferences (Phase 4) (+240/-45) +- `867a1a7` ♻️ refactor: migrate 5 bots to KeywordCommandDetector (+291/-168) +- `5c8120f` ✨ feat(manalink): add PWA support and rebrand Matrix client (+340/-70) + +_… plus 33 weitere Commits._ diff --git a/devlog/2026-01-31/spieler.md b/devlog/2026-01-31/spieler.md new file mode 100644 index 000000000..9181be235 --- /dev/null +++ b/devlog/2026-01-31/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-01-31 +day: 40 +view: spieler +weekday: Samstag +commits: 53 +review: written +--- + +# Samstag, 2026-01-31 — Tag 40 + +Großer Sprint-Tag mit Schwerpunkt **services** (53 Commits). + +## Highlights + +- ✨ feat(llm-playground): add model comparison feature +- 📝 docs(landing): add blueprints section for architecture decisions +- 🔥 remove: Telegram bots - Matrix-only strategy +- ✨ feat(llm-playground): add model metadata system and SSD documentation +- 🏗️ refactor: restructure docker-compose with new port schema and naming diff --git a/devlog/2026-02-01/data.json b/devlog/2026-02-01/data.json new file mode 100644 index 000000000..c08b55836 --- /dev/null +++ b/devlog/2026-02-01/data.json @@ -0,0 +1,490 @@ +{ + "date": "2026-02-01", + "day_number": 41, + "weekday": "Sonntag", + "commits": 43, + "authors": [ + { + "name": "Till-JS", + "count": 43 + } + ], + "additions": 14533, + "deletions": 3808, + "net_lines": 10725, + "files_changed": 185, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-02-01T11:23:05.000Z", + "last_commit_at": "2026-02-02T03:09:07.000Z", + "total_span_minutes": 946, + "active_minutes": 176, + "pauses": [ + { + "from": "15:08", + "to": "17:19", + "minutes": 130 + }, + { + "from": "17:19", + "to": "23:01", + "minutes": 342 + }, + { + "from": "23:01", + "to": "03:26", + "minutes": 266 + }, + { + "from": "03:26", + "to": "03:58", + "minutes": 32 + } + ], + "longest_focus_minutes": 166 + }, + "top_dirs": [ + { + "path": "services/mana-core-auth/src", + "pct": 14 + }, + { + "path": "docker-compose.macmini.yml", + "pct": 4 + }, + { + "path": "docker/grafana/dashboards", + "pct": 2 + }, + { + "path": "apps/questions/apps/web", + "pct": 2 + }, + { + "path": "packages/shared-credit-ui/src", + "pct": 2 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 117 + }, + { + "ext": "", + "count": 62 + }, + { + "ext": ".svelte", + "count": 42 + }, + { + "ext": ".json", + "count": 29 + }, + { + "ext": ".yml", + "count": 19 + }, + { + "ext": ".md", + "count": 9 + } + ], + "tags": ["infra", "auth", "bots", "project-doc-bot", "calendar-web"], + "commits_list": [ + { + "hash": "4f90f28", + "short": "debug: add logging to handleOidcRequest for token exchange debugging", + "type": null, + "scope": null, + "additions": 8, + "deletions": 0, + "timestamp": "2026-02-01T12:23:05+01:00" + }, + { + "hash": "5a8e20e", + "short": "🔧 fix(auth): add all apps to CORS_ORIGINS", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-01T12:24:03+01:00" + }, + { + "hash": "f0cf1bc", + "short": "🐛 fix(mana-core-auth): OIDC token exchange now works with body-parser", + "type": null, + "scope": null, + "additions": 0, + "deletions": 11, + "timestamp": "2026-02-01T12:28:41+01:00" + }, + { + "hash": "e7719ee", + "short": "✨ feat(grafana): enhance Master Overview with Key Metrics on top", + "type": null, + "scope": null, + "additions": 164, + "deletions": 162, + "timestamp": "2026-02-01T12:28:53+01:00" + }, + { + "hash": "edbf775", + "short": "📊 feat(grafana): add Total Requests and Requests/sec to Key Metrics", + "type": null, + "scope": null, + "additions": 87, + "deletions": 7, + "timestamp": "2026-02-01T12:32:01+01:00" + }, + { + "hash": "84e9f86", + "short": "🔧 fix(grafana): rewrite System Overview with available metrics", + "type": null, + "scope": null, + "additions": 234, + "deletions": 185, + "timestamp": "2026-02-01T12:33:11+01:00" + }, + { + "hash": "7aa5115", + "short": "📊 feat(monitoring): add node-exporter for host system metrics", + "type": null, + "scope": null, + "additions": 472, + "deletions": 19, + "timestamp": "2026-02-01T12:38:44+01:00" + }, + { + "hash": "6a725a2", + "short": "🐛 fix(monitoring): remove duplicate node-exporter definition", + "type": null, + "scope": null, + "additions": 0, + "deletions": 16, + "timestamp": "2026-02-01T12:39:38+01:00" + }, + { + "hash": "816062b", + "short": "🐛 fix(monitoring): adjust node-exporter config for macOS Docker", + "type": null, + "scope": null, + "additions": 10, + "deletions": 3, + "timestamp": "2026-02-01T12:40:33+01:00" + }, + { + "hash": "1c65058", + "short": "fix(infra): use SSD volume for MinIO storage", + "type": "fix", + "scope": "infra", + "additions": 3, + "deletions": 3, + "timestamp": "2026-02-01T12:41:14+01:00" + }, + { + "hash": "d703ccf", + "short": "✨ feat(auth): add resend verification email to registration screen", + "type": null, + "scope": null, + "additions": 236, + "deletions": 18, + "timestamp": "2026-02-01T12:44:28+01:00" + }, + { + "hash": "fa94399", + "short": "🔧 refactor(clock): consolidate register page to standard pattern", + "type": null, + "scope": null, + "additions": 24, + "deletions": 24, + "timestamp": "2026-02-01T12:46:56+01:00" + }, + { + "hash": "fdaf6a9", + "short": "🔧 fix(dashboards): fix broken panels and metrics", + "type": null, + "scope": null, + "additions": 305, + "deletions": 124, + "timestamp": "2026-02-01T12:50:42+01:00" + }, + { + "hash": "ff22a29", + "short": "🌐 feat(i18n): make all auth pages multilingual", + "type": null, + "scope": null, + "additions": 99, + "deletions": 44, + "timestamp": "2026-02-01T12:54:52+01:00" + }, + { + "hash": "f016d5a", + "short": "🔧 fix(questions): use 'de' as fallback locale for consistency", + "type": null, + "scope": null, + "additions": 3, + "deletions": 3, + "timestamp": "2026-02-01T12:57:55+01:00" + }, + { + "hash": "45152ee", + "short": "🚀 feat(matrix-bots): add CI/CD pipeline for automated GHCR deployment", + "type": null, + "scope": null, + "additions": 917, + "deletions": 200, + "timestamp": "2026-02-01T13:02:09+01:00" + }, + { + "hash": "df2c518", + "short": "✨ feat(auth): add missing auth pages for zitare and planta", + "type": null, + "scope": null, + "additions": 180, + "deletions": 93, + "timestamp": "2026-02-01T13:09:42+01:00" + }, + { + "hash": "5c61a4e", + "short": "revert(infra): use standard Docker volume for MinIO", + "type": "revert", + "scope": "infra", + "additions": 3, + "deletions": 1, + "timestamp": "2026-02-01T13:16:26+01:00" + }, + { + "hash": "efb077b", + "short": "🐛 fix(mana-core-auth): use EdDSA for OIDC id_token signing", + "type": null, + "scope": null, + "additions": 1605, + "deletions": 142, + "timestamp": "2026-02-01T13:24:55+01:00" + }, + { + "hash": "c0117b2", + "short": "🐛 fix: add missing jwt import in better-auth.service", + "type": null, + "scope": null, + "additions": 149, + "deletions": 154, + "timestamp": "2026-02-01T13:26:11+01:00" + }, + { + "hash": "075051a", + "short": "➕ add-dep: add jsonwebtoken to mana-core-auth dependencies", + "type": null, + "scope": null, + "additions": 15, + "deletions": 13, + "timestamp": "2026-02-01T13:27:23+01:00" + }, + { + "hash": "8cd5021", + "short": "🐛 fix(mana-core-auth): use BASE_URL as JWT issuer for OIDC compatibility", + "type": null, + "scope": null, + "additions": 3306, + "deletions": 284, + "timestamp": "2026-02-01T13:55:05+01:00" + }, + { + "hash": "ab49be0", + "short": "🐛 fix(matrix-mana-bot): resolve QEMU emulation failure in CI", + "type": null, + "scope": null, + "additions": 1964, + "deletions": 382, + "timestamp": "2026-02-01T13:59:04+01:00" + }, + { + "hash": "27a26c5", + "short": "➕ add-dep: add jsonwebtoken to mana-core-auth for JWT signing", + "type": null, + "scope": null, + "additions": 436, + "deletions": 445, + "timestamp": "2026-02-01T13:59:58+01:00" + }, + { + "hash": "e3774ca", + "short": "🔧 chore: update pnpm lockfile for native dep overrides", + "type": null, + "scope": null, + "additions": 595, + "deletions": 395, + "timestamp": "2026-02-01T14:09:19+01:00" + }, + { + "hash": "fe33f4b", + "short": "✅ fix(mana-core-auth): complete production readiness with test fixes", + "type": null, + "scope": null, + "additions": 1282, + "deletions": 25, + "timestamp": "2026-02-01T14:18:58+01:00" + }, + { + "hash": "6ca2d3b", + "short": "feat(infra): use SSD for MinIO storage", + "type": "feat", + "scope": "infra", + "additions": 1, + "deletions": 4, + "timestamp": "2026-02-01T14:23:43+01:00" + }, + { + "hash": "a50d98c", + "short": "🐛 fix(matrix-bots): disable arm64 builds for all matrix bots", + "type": null, + "scope": null, + "additions": 20, + "deletions": 11, + "timestamp": "2026-02-01T14:25:05+01:00" + }, + { + "hash": "02604e6", + "short": "🔧 fix(docker): add platform linux/amd64 for matrix bots on arm64 hosts", + "type": null, + "scope": null, + "additions": 10, + "deletions": 0, + "timestamp": "2026-02-01T14:32:24+01:00" + }, + { + "hash": "a384bed", + "short": "🐛 fix(matrix-bots): switch to node:20-slim for native module support", + "type": null, + "scope": null, + "additions": 62, + "deletions": 62, + "timestamp": "2026-02-01T14:41:34+01:00" + }, + { + "hash": "6c937b6", + "short": "🐛 fix(matrix-bots): restore --ignore-scripts to skip root postinstall", + "type": null, + "scope": null, + "additions": 22, + "deletions": 22, + "timestamp": "2026-02-01T14:47:04+01:00" + }, + { + "hash": "7d7e31e", + "short": "feat(infra): migrate PostgreSQL to SSD storage", + "type": "feat", + "scope": "infra", + "additions": 1, + "deletions": 3, + "timestamp": "2026-02-01T14:56:42+01:00" + }, + { + "hash": "38101bc", + "short": "🐛 fix(matrix-bots): add pnpm rebuild for native crypto module", + "type": null, + "scope": null, + "additions": 60, + "deletions": 0, + "timestamp": "2026-02-01T14:58:05+01:00" + }, + { + "hash": "9e9db59", + "short": "📝 docs: update SSD documentation for ManaData volume", + "type": null, + "scope": null, + "additions": 60, + "deletions": 17, + "timestamp": "2026-02-01T15:01:42+01:00" + }, + { + "hash": "dc0d425", + "short": "🐛 fix(matrix-web): handle Matrix SSO loginToken callback", + "type": null, + "scope": null, + "additions": 1546, + "deletions": 226, + "timestamp": "2026-02-01T15:02:47+01:00" + }, + { + "hash": "3dba7d8", + "short": "🐛 fix(matrix-bots): explicitly install linux-x64-gnu crypto module", + "type": null, + "scope": null, + "additions": 0, + "deletions": 0, + "timestamp": "2026-02-01T15:04:42+01:00" + }, + { + "hash": "a8521d7", + "short": "🐛 fix(matrix-bots): disable E2EE crypto module via pnpm override", + "type": null, + "scope": null, + "additions": 404, + "deletions": 665, + "timestamp": "2026-02-01T15:08:28+01:00" + }, + { + "hash": "d9fe46a", + "short": "🧹 chore(bot-services): remove unused CreditConsumeResult import", + "type": null, + "scope": null, + "additions": 0, + "deletions": 1, + "timestamp": "2026-02-01T15:08:58+01:00" + }, + { + "hash": "ea0198c", + "short": "fix(bots): install wget for Docker health checks", + "type": "fix", + "scope": "bots", + "additions": 30, + "deletions": 20, + "timestamp": "2026-02-01T17:19:08+01:00" + }, + { + "hash": "a7c1908", + "short": "fix(project-doc-bot): add include/exclude to tsconfig for correct dist output", + "type": "fix", + "scope": "project-doc-bot", + "additions": 5, + "deletions": 2, + "timestamp": "2026-02-01T23:01:12+01:00" + }, + { + "hash": "9a22c89", + "short": "fix(calendar-web): inject cross-app API URLs for client-side", + "type": "fix", + "scope": "calendar-web", + "additions": 72, + "deletions": 16, + "timestamp": "2026-02-02T03:26:46+01:00" + }, + { + "hash": "f03c09f", + "short": "feat(auth): enable cross-domain SSO via shared cookies on .mana.how", + "type": "feat", + "scope": "auth", + "additions": 64, + "deletions": 3, + "timestamp": "2026-02-02T03:58:29+01:00" + }, + { + "hash": "352070f", + "short": "docs(auth): add SSO documentation and test credentials", + "type": "docs", + "scope": "auth", + "additions": 78, + "deletions": 2, + "timestamp": "2026-02-02T04:09:07+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-02-01/macher.md b/devlog/2026-02-01/macher.md new file mode 100644 index 000000000..9b2f5a3a5 --- /dev/null +++ b/devlog/2026-02-01/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-02-01 +day: 41 +view: macher +weekday: Sonntag +commits: 43 +review: written +--- + +# Sonntag, 2026-02-01 — Tag 41 (Macher-Sicht) + +## Stats + +43 Commits, +14533 / −3808 LoC, 185 Files. Top-Dirs: `services/mana-core-auth/src` (14%), `docker-compose.macmini.yml` (4%), `docker/grafana/dashboards` (2%), `apps/questions/apps/web` (2%), `packages/shared-credit-ui/src` (2%). Tags: infra, auth, bots, project-doc-bot, calendar-web. Session 11:23 → 03:09 (~176 aktive Min, längster Fokus 166 Min). + +## Commits + +- `4f90f28` debug: add logging to handleOidcRequest for token exchange debugging (+8/-0) +- `5a8e20e` 🔧 fix(auth): add all apps to CORS_ORIGINS (+1/-1) +- `f0cf1bc` 🐛 fix(mana-core-auth): OIDC token exchange now works with body-parser (+0/-11) +- `e7719ee` ✨ feat(grafana): enhance Master Overview with Key Metrics on top (+164/-162) +- `edbf775` 📊 feat(grafana): add Total Requests and Requests/sec to Key Metrics (+87/-7) +- `84e9f86` 🔧 fix(grafana): rewrite System Overview with available metrics (+234/-185) +- `7aa5115` 📊 feat(monitoring): add node-exporter for host system metrics (+472/-19) +- `6a725a2` 🐛 fix(monitoring): remove duplicate node-exporter definition (+0/-16) +- `816062b` 🐛 fix(monitoring): adjust node-exporter config for macOS Docker (+10/-3) +- `1c65058` fix(infra): use SSD volume for MinIO storage (+3/-3) +- `d703ccf` ✨ feat(auth): add resend verification email to registration screen (+236/-18) +- `fa94399` 🔧 refactor(clock): consolidate register page to standard pattern (+24/-24) +- `fdaf6a9` 🔧 fix(dashboards): fix broken panels and metrics (+305/-124) +- `ff22a29` 🌐 feat(i18n): make all auth pages multilingual (+99/-44) +- `f016d5a` 🔧 fix(questions): use 'de' as fallback locale for consistency (+3/-3) +- `45152ee` 🚀 feat(matrix-bots): add CI/CD pipeline for automated GHCR deployment (+917/-200) +- `df2c518` ✨ feat(auth): add missing auth pages for zitare and planta (+180/-93) +- `5c61a4e` revert(infra): use standard Docker volume for MinIO (+3/-1) +- `efb077b` 🐛 fix(mana-core-auth): use EdDSA for OIDC id_token signing (+1605/-142) +- `c0117b2` 🐛 fix: add missing jwt import in better-auth.service (+149/-154) + +_… plus 23 weitere Commits._ diff --git a/devlog/2026-02-01/spieler.md b/devlog/2026-02-01/spieler.md new file mode 100644 index 000000000..514480602 --- /dev/null +++ b/devlog/2026-02-01/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-02-01 +day: 41 +view: spieler +weekday: Sonntag +commits: 43 +review: written +--- + +# Sonntag, 2026-02-01 — Tag 41 + +Großer Sprint-Tag mit Schwerpunkt **services** (43 Commits). + +## Highlights + +- debug: add logging to handleOidcRequest for token exchange debugging +- 🔧 fix(auth): add all apps to CORS_ORIGINS +- 🐛 fix(mana-core-auth): OIDC token exchange now works with body-parser +- ✨ feat(grafana): enhance Master Overview with Key Metrics on top +- 📊 feat(grafana): add Total Requests and Requests/sec to Key Metrics diff --git a/devlog/2026-02-02/data.json b/devlog/2026-02-02/data.json new file mode 100644 index 000000000..cc12a9fff --- /dev/null +++ b/devlog/2026-02-02/data.json @@ -0,0 +1,462 @@ +{ + "date": "2026-02-02", + "day_number": 42, + "weekday": "Montag", + "commits": 41, + "authors": [ + { + "name": "Till-JS", + "count": 41 + } + ], + "additions": 9491, + "deletions": 6409, + "net_lines": 3082, + "files_changed": 170, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-02-02T12:17:04.000Z", + "last_commit_at": "2026-02-02T18:16:56.000Z", + "total_span_minutes": 360, + "active_minutes": 230, + "pauses": [ + { + "from": "13:43", + "to": "14:51", + "minutes": 68 + }, + { + "from": "17:30", + "to": "18:32", + "minutes": 62 + } + ], + "longest_focus_minutes": 159 + }, + "top_dirs": [ + { + "path": "services/mana-media/apps", + "pct": 10 + }, + { + "path": "packages/bot-services/src", + "pct": 9 + }, + { + "path": "services/mana-core-auth/src", + "pct": 8 + }, + { + "path": "apps/calendar/apps/web", + "pct": 7 + }, + { + "path": "services/matrix-nutriphi-bot/src", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 143 + }, + { + "ext": ".svelte", + "count": 26 + }, + { + "ext": ".json", + "count": 11 + }, + { + "ext": "", + "count": 8 + }, + { + "ext": ".yaml", + "count": 6 + }, + { + "ext": ".yml", + "count": 6 + } + ], + "tags": ["mana-core-auth", "mana-media", "nutriphi", "docker", "playground"], + "commits_list": [ + { + "hash": "feaf27d", + "short": "feat(auth): implement cross-subdomain SSO for all web apps", + "type": "feat", + "scope": "auth", + "additions": 491, + "deletions": 16, + "timestamp": "2026-02-02T13:17:04+01:00" + }, + { + "hash": "7bad849", + "short": "docs(server): document Docker on external SSD and Matrix Bots", + "type": "docs", + "scope": "server", + "additions": 65, + "deletions": 2, + "timestamp": "2026-02-02T13:43:39+01:00" + }, + { + "hash": "2777f60", + "short": "feat(bots): enable Redis SSO for todo-bot and calendar-bot", + "type": "feat", + "scope": "bots", + "additions": 2917, + "deletions": 758, + "timestamp": "2026-02-02T14:51:23+01:00" + }, + { + "hash": "8525020", + "short": "feat(playground): integrate shared auth UI for consistent login experience", + "type": "feat", + "scope": "playground", + "additions": 171, + "deletions": 228, + "timestamp": "2026-02-02T14:53:51+01:00" + }, + { + "hash": "a416dad", + "short": "fix(playground): add missing shared packages to Dockerfile", + "type": "fix", + "scope": "playground", + "additions": 4, + "deletions": 0, + "timestamp": "2026-02-02T14:55:02+01:00" + }, + { + "hash": "0b46d20", + "short": "feat(infra): add mana-llm service to production deployment", + "type": "feat", + "scope": "infra", + "additions": 34, + "deletions": 1, + "timestamp": "2026-02-02T14:58:44+01:00" + }, + { + "hash": "60d2f64", + "short": "fix(matrix-bots): update all bots for async SessionService methods", + "type": "fix", + "scope": "matrix-bots", + "additions": 551, + "deletions": 350, + "timestamp": "2026-02-02T15:04:30+01:00" + }, + { + "hash": "aba79f5", + "short": "fix(mana-llm): fix SSE double data prefix causing message parsing issues", + "type": "fix", + "scope": "mana-llm", + "additions": 8, + "deletions": 9, + "timestamp": "2026-02-02T15:29:11+01:00" + }, + { + "hash": "23852cf", + "short": "feat(matrix-web): add bots page with all 19 Matrix bots", + "type": "feat", + "scope": "matrix-web", + "additions": 793, + "deletions": 0, + "timestamp": "2026-02-02T15:36:49+01:00" + }, + { + "hash": "9d7e6c6", + "short": "fix(matrix-web): change bots page to single column layout", + "type": "fix", + "scope": "matrix-web", + "additions": 2, + "deletions": 2, + "timestamp": "2026-02-02T15:46:35+01:00" + }, + { + "hash": "5c688d7", + "short": "fix(mana-core-auth): return real refreshToken in SSO session-to-token exchange", + "type": "fix", + "scope": "mana-core-auth", + "additions": 41, + "deletions": 1, + "timestamp": "2026-02-02T16:05:44+01:00" + }, + { + "hash": "c2c80ef", + "short": "✨ feat(matrix-bots): add i18n system and direct message fallback", + "type": null, + "scope": null, + "additions": 1626, + "deletions": 18, + "timestamp": "2026-02-02T16:07:27+01:00" + }, + { + "hash": "b404ddc", + "short": "fix(nutriphi): increase body size limit to 50mb for image uploads", + "type": "fix", + "scope": "nutriphi", + "additions": 13, + "deletions": 2, + "timestamp": "2026-02-02T16:08:14+01:00" + }, + { + "hash": "509bbb9", + "short": "fix(nutriphi): add shared-nestjs-setup to Dockerfile", + "type": "fix", + "scope": "nutriphi", + "additions": 4, + "deletions": 0, + "timestamp": "2026-02-02T16:09:44+01:00" + }, + { + "hash": "ac477aa", + "short": "fix(nutriphi): add missing shared packages to Dockerfile", + "type": "fix", + "scope": "nutriphi", + "additions": 5, + "deletions": 0, + "timestamp": "2026-02-02T16:14:04+01:00" + }, + { + "hash": "0cafd4f", + "short": "chore: update pnpm-lock.yaml for express dependency", + "type": null, + "scope": null, + "additions": 12, + "deletions": 24, + "timestamp": "2026-02-02T16:14:51+01:00" + }, + { + "hash": "b6925e0", + "short": "feat(matrix-bots): enable cross-bot SSO via Redis sessions", + "type": "feat", + "scope": "matrix-bots", + "additions": 33, + "deletions": 17, + "timestamp": "2026-02-02T16:16:22+01:00" + }, + { + "hash": "ad22d26", + "short": "fix(nutriphi): add shared-drizzle-config and make db:push non-fatal", + "type": "fix", + "scope": "nutriphi", + "additions": 7, + "deletions": 3, + "timestamp": "2026-02-02T16:17:22+01:00" + }, + { + "hash": "f556665", + "short": "fix(shared-nestjs-setup): export compiled JS instead of TypeScript", + "type": "fix", + "scope": "shared-nestjs-setup", + "additions": 9, + "deletions": 3, + "timestamp": "2026-02-02T16:19:39+01:00" + }, + { + "hash": "9c45879", + "short": "feat(nutriphi-bot): auto-analyze images when received", + "type": "feat", + "scope": "nutriphi-bot", + "additions": 39, + "deletions": 13, + "timestamp": "2026-02-02T16:27:03+01:00" + }, + { + "hash": "95e9b37", + "short": "feat(mana-core-auth): add /api/auth/get-session endpoint for SSO", + "type": "feat", + "scope": "mana-core-auth", + "additions": 46, + "deletions": 2, + "timestamp": "2026-02-02T16:27:39+01:00" + }, + { + "hash": "d64016d", + "short": "fix(mana-core-auth): exclude /api/auth/get-session from global prefix", + "type": "fix", + "scope": "mana-core-auth", + "additions": 2, + "deletions": 1, + "timestamp": "2026-02-02T16:29:17+01:00" + }, + { + "hash": "c196144", + "short": "fix(mana-core-auth): return real refreshToken from signIn endpoint", + "type": "fix", + "scope": "mana-core-auth", + "additions": 42, + "deletions": 2, + "timestamp": "2026-02-02T16:37:54+01:00" + }, + { + "hash": "0538a6c", + "short": "fix(mana-core-auth): use Better Auth signJWT in refresh endpoint", + "type": "fix", + "scope": "mana-core-auth", + "additions": 25, + "deletions": 22, + "timestamp": "2026-02-02T16:40:37+01:00" + }, + { + "hash": "75937d6", + "short": "fix(mana-core-auth): align JWT issuer validation with Better Auth signing config", + "type": "fix", + "scope": "mana-core-auth", + "additions": 12, + "deletions": 5, + "timestamp": "2026-02-02T16:50:04+01:00" + }, + { + "hash": "85df234", + "short": "✨ feat(mana-core-auth): auto-link Matrix users on OIDC login", + "type": null, + "scope": null, + "additions": 143, + "deletions": 2, + "timestamp": "2026-02-02T16:50:28+01:00" + }, + { + "hash": "ce5f3b5", + "short": "chore(docker): build mana-auth locally instead of using GHCR image", + "type": "chore", + "scope": "docker", + "additions": 6, + "deletions": 1, + "timestamp": "2026-02-02T16:51:25+01:00" + }, + { + "hash": "5b3c87b", + "short": "fix(docker): use monorepo root as build context for mana-auth", + "type": "fix", + "scope": "docker", + "additions": 2, + "deletions": 2, + "timestamp": "2026-02-02T16:52:09+01:00" + }, + { + "hash": "49c5873", + "short": "chore(docker): build contacts-web locally instead of using GHCR image", + "type": "chore", + "scope": "docker", + "additions": 47, + "deletions": 1, + "timestamp": "2026-02-02T17:06:12+01:00" + }, + { + "hash": "1fe498e", + "short": "fix(shared-ui): export calculateFadeOpacity from index", + "type": "fix", + "scope": "shared-ui", + "additions": 2, + "deletions": 0, + "timestamp": "2026-02-02T17:07:49+01:00" + }, + { + "hash": "30f0dbe", + "short": "feat(contacts-web): add hooks.server.ts for runtime URL injection", + "type": "feat", + "scope": "contacts-web", + "additions": 31, + "deletions": 0, + "timestamp": "2026-02-02T17:14:03+01:00" + }, + { + "hash": "171cf7a", + "short": "fix(contacts-web): use runtime URLs instead of build-time baked values", + "type": "fix", + "scope": "contacts-web", + "additions": 35, + "deletions": 6, + "timestamp": "2026-02-02T17:22:59+01:00" + }, + { + "hash": "d4663b5", + "short": "feat(mana-media): add centralized media storage with NutriPhi integration", + "type": "feat", + "scope": "mana-media", + "additions": 1871, + "deletions": 4176, + "timestamp": "2026-02-02T17:30:14+01:00" + }, + { + "hash": "cee30ff", + "short": "✨ feat(matrix-todo-bot): improve UX with German commands without ! prefix", + "type": null, + "scope": null, + "additions": 162, + "deletions": 52, + "timestamp": "2026-02-02T18:32:00+01:00" + }, + { + "hash": "5c19500", + "short": "fix(mana-media): change userId from UUID to TEXT for Matrix user IDs", + "type": "fix", + "scope": "mana-media", + "additions": 2, + "deletions": 2, + "timestamp": "2026-02-02T18:45:40+01:00" + }, + { + "hash": "bd9bd55", + "short": "🚸 feat(calendar): hide tasks by default and scroll to midday on load", + "type": null, + "scope": null, + "additions": 132, + "deletions": 79, + "timestamp": "2026-02-02T18:54:05+01:00" + }, + { + "hash": "c965f7e", + "short": "fix(mana-media): simplify Dockerfile for pnpm hoisted dependencies", + "type": "fix", + "scope": "mana-media", + "additions": 0, + "deletions": 4, + "timestamp": "2026-02-02T18:55:49+01:00" + }, + { + "hash": "b3dd3c5", + "short": "fix(mana-media): fix Dockerfile build and health check paths", + "type": "fix", + "scope": "mana-media", + "additions": 4, + "deletions": 11, + "timestamp": "2026-02-02T18:57:50+01:00" + }, + { + "hash": "c475923", + "short": "fix(mana-media): simplify Dockerfile to single build stage", + "type": "fix", + "scope": "mana-media", + "additions": 13, + "deletions": 18, + "timestamp": "2026-02-02T19:03:05+01:00" + }, + { + "hash": "12a9003", + "short": "♻️ refactor(calendar): remove sidebar mode from PillNavigation", + "type": null, + "scope": null, + "additions": 23, + "deletions": 254, + "timestamp": "2026-02-02T19:06:32+01:00" + }, + { + "hash": "bf0e788", + "short": "♻️ refactor(todo,contacts): remove sidebar mode from PillNavigation", + "type": null, + "scope": null, + "additions": 66, + "deletions": 322, + "timestamp": "2026-02-02T19:16:56+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-02-02/macher.md b/devlog/2026-02-02/macher.md new file mode 100644 index 000000000..953e53a42 --- /dev/null +++ b/devlog/2026-02-02/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-02-02 +day: 42 +view: macher +weekday: Montag +commits: 41 +review: written +--- + +# Montag, 2026-02-02 — Tag 42 (Macher-Sicht) + +## Stats + +41 Commits, +9491 / −6409 LoC, 170 Files. Top-Dirs: `services/mana-media/apps` (10%), `packages/bot-services/src` (9%), `services/mana-core-auth/src` (8%), `apps/calendar/apps/web` (7%), `services/matrix-nutriphi-bot/src` (4%). Tags: mana-core-auth, mana-media, nutriphi, docker, playground. Session 12:17 → 18:16 (~230 aktive Min, längster Fokus 159 Min). + +## Commits + +- `feaf27d` feat(auth): implement cross-subdomain SSO for all web apps (+491/-16) +- `7bad849` docs(server): document Docker on external SSD and Matrix Bots (+65/-2) +- `2777f60` feat(bots): enable Redis SSO for todo-bot and calendar-bot (+2917/-758) +- `8525020` feat(playground): integrate shared auth UI for consistent login experience (+171/-228) +- `a416dad` fix(playground): add missing shared packages to Dockerfile (+4/-0) +- `0b46d20` feat(infra): add mana-llm service to production deployment (+34/-1) +- `60d2f64` fix(matrix-bots): update all bots for async SessionService methods (+551/-350) +- `aba79f5` fix(mana-llm): fix SSE double data prefix causing message parsing issues (+8/-9) +- `23852cf` feat(matrix-web): add bots page with all 19 Matrix bots (+793/-0) +- `9d7e6c6` fix(matrix-web): change bots page to single column layout (+2/-2) +- `5c688d7` fix(mana-core-auth): return real refreshToken in SSO session-to-token exchange (+41/-1) +- `c2c80ef` ✨ feat(matrix-bots): add i18n system and direct message fallback (+1626/-18) +- `b404ddc` fix(nutriphi): increase body size limit to 50mb for image uploads (+13/-2) +- `509bbb9` fix(nutriphi): add shared-nestjs-setup to Dockerfile (+4/-0) +- `ac477aa` fix(nutriphi): add missing shared packages to Dockerfile (+5/-0) +- `0cafd4f` chore: update pnpm-lock.yaml for express dependency (+12/-24) +- `b6925e0` feat(matrix-bots): enable cross-bot SSO via Redis sessions (+33/-17) +- `ad22d26` fix(nutriphi): add shared-drizzle-config and make db:push non-fatal (+7/-3) +- `f556665` fix(shared-nestjs-setup): export compiled JS instead of TypeScript (+9/-3) +- `9c45879` feat(nutriphi-bot): auto-analyze images when received (+39/-13) + +_… plus 21 weitere Commits._ diff --git a/devlog/2026-02-02/spieler.md b/devlog/2026-02-02/spieler.md new file mode 100644 index 000000000..4d49f48e2 --- /dev/null +++ b/devlog/2026-02-02/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-02-02 +day: 42 +view: spieler +weekday: Montag +commits: 41 +review: written +--- + +# Montag, 2026-02-02 — Tag 42 + +Großer Sprint-Tag mit Schwerpunkt **services** (41 Commits). + +## Highlights + +- implement cross-subdomain SSO for all web apps +- document Docker on external SSD and Matrix Bots +- enable Redis SSO for todo-bot and calendar-bot +- integrate shared auth UI for consistent login experience +- add missing shared packages to Dockerfile diff --git a/devlog/2026-02-10/data.json b/devlog/2026-02-10/data.json new file mode 100644 index 000000000..1eb8b1ae4 --- /dev/null +++ b/devlog/2026-02-10/data.json @@ -0,0 +1,59 @@ +{ + "date": "2026-02-10", + "day_number": 43, + "weekday": "Dienstag", + "commits": 1, + "authors": [ + { + "name": "Till-JS", + "count": 1 + } + ], + "additions": 59, + "deletions": 53, + "net_lines": 6, + "files_changed": 2, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-02-10T13:53:49.000Z", + "last_commit_at": "2026-02-10T13:53:49.000Z", + "total_span_minutes": 0, + "active_minutes": 0, + "pauses": [], + "longest_focus_minutes": 0 + }, + "top_dirs": [ + { + "path": "apps/matrix/apps/web", + "pct": 50 + }, + { + "path": "apps/todo/apps/web", + "pct": 50 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 2 + } + ], + "tags": [], + "commits_list": [ + { + "hash": "5b6f231", + "short": "🐛 fix(todo,matrix): improve click targets and type safety", + "type": null, + "scope": null, + "additions": 59, + "deletions": 53, + "timestamp": "2026-02-10T14:53:49+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-02-10/macher.md b/devlog/2026-02-10/macher.md new file mode 100644 index 000000000..8afac8ad9 --- /dev/null +++ b/devlog/2026-02-10/macher.md @@ -0,0 +1,18 @@ +--- +date: 2026-02-10 +day: 43 +view: macher +weekday: Dienstag +commits: 1 +review: written +--- + +# Dienstag, 2026-02-10 — Tag 43 (Macher-Sicht) + +## Stats + +1 Commits, +59 / −53 LoC, 2 Files. Top-Dirs: `apps/matrix/apps/web` (50%), `apps/todo/apps/web` (50%). Tags: —. Session 13:53 → 13:53 (~0 aktive Min, längster Fokus 0 Min). + +## Commits + +- `5b6f231` 🐛 fix(todo,matrix): improve click targets and type safety (+59/-53) diff --git a/devlog/2026-02-10/spieler.md b/devlog/2026-02-10/spieler.md new file mode 100644 index 000000000..e53b2644c --- /dev/null +++ b/devlog/2026-02-10/spieler.md @@ -0,0 +1,16 @@ +--- +date: 2026-02-10 +day: 43 +view: spieler +weekday: Dienstag +commits: 1 +review: written +--- + +# Dienstag, 2026-02-10 — Tag 43 + +Ein kleinerer Schritt in **apps**. + +## Highlights + +- 🐛 fix(todo,matrix): improve click targets and type safety diff --git a/devlog/2026-02-11/data.json b/devlog/2026-02-11/data.json new file mode 100644 index 000000000..ba0861149 --- /dev/null +++ b/devlog/2026-02-11/data.json @@ -0,0 +1,359 @@ +{ + "date": "2026-02-11", + "day_number": 44, + "weekday": "Mittwoch", + "commits": 29, + "authors": [ + { + "name": "Till-JS", + "count": 29 + } + ], + "additions": 14772, + "deletions": 1668, + "net_lines": 13104, + "files_changed": 190, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-02-11T13:59:18.000Z", + "last_commit_at": "2026-02-12T01:34:00.000Z", + "total_span_minutes": 695, + "active_minutes": 129, + "pauses": [ + { + "from": "14:59", + "to": "16:10", + "minutes": 71 + }, + { + "from": "16:47", + "to": "17:39", + "minutes": 53 + }, + { + "from": "18:21", + "to": "01:43", + "minutes": 442 + } + ], + "longest_focus_minutes": 50 + }, + "top_dirs": [ + { + "path": "apps/photos/apps/web", + "pct": 17 + }, + { + "path": "apps/photos/apps/backend", + "pct": 13 + }, + { + "path": "services/mana-core-auth/src", + "pct": 7 + }, + { + "path": "apps/presi/apps/backend", + "pct": 5 + }, + { + "path": "services/mana-media/apps", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 110 + }, + { + "ext": "", + "count": 40 + }, + { + "ext": ".svelte", + "count": 25 + }, + { + "ext": ".json", + "count": 16 + }, + { + "ext": ".py", + "count": 13 + }, + { + "ext": ".yml", + "count": 8 + } + ], + "tags": ["photos", "mana-media"], + "commits_list": [ + { + "hash": "a2e2a5b", + "short": "✨ feat(admin): add user data dashboard for cross-project data visualization", + "type": null, + "scope": null, + "additions": 3785, + "deletions": 403, + "timestamp": "2026-02-11T14:59:18+01:00" + }, + { + "hash": "6039407", + "short": "✨ feat(mana-stt): add vLLM integration for Voxtral transcription", + "type": null, + "scope": null, + "additions": 1060, + "deletions": 162, + "timestamp": "2026-02-11T16:10:00+01:00" + }, + { + "hash": "7c9c264", + "short": "🐛 fix(mana-stt): adjust vLLM config for CPU mode", + "type": null, + "scope": null, + "additions": 7, + "deletions": 2, + "timestamp": "2026-02-11T16:14:14+01:00" + }, + { + "hash": "21d50d1", + "short": "📝 docs(mana-stt): document Whisper + Mistral API architecture", + "type": null, + "scope": null, + "additions": 27, + "deletions": 7, + "timestamp": "2026-02-11T16:34:03+01:00" + }, + { + "hash": "e7e6281", + "short": "🔧 fix(docker): add missing shared packages to all backend Dockerfiles", + "type": null, + "scope": null, + "additions": 171, + "deletions": 31, + "timestamp": "2026-02-11T16:47:00+01:00" + }, + { + "hash": "99a23d0", + "short": "🚀 feat(infra): expose STT and TTS APIs externally", + "type": null, + "scope": null, + "additions": 6, + "deletions": 0, + "timestamp": "2026-02-11T17:39:59+01:00" + }, + { + "hash": "5cd8b63", + "short": "🐛 fix(infra): correct TTS API port to 3022", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-11T17:41:27+01:00" + }, + { + "hash": "d3392f6", + "short": "🔧 fix(ci): disable ARM64 for storage-backend due to QEMU issues", + "type": null, + "scope": null, + "additions": 2, + "deletions": 1, + "timestamp": "2026-02-11T17:51:26+01:00" + }, + { + "hash": "90c2f85", + "short": "✨ feat(photos): add Photos app with mana-media EXIF integration", + "type": null, + "scope": null, + "additions": 6829, + "deletions": 441, + "timestamp": "2026-02-11T17:58:44+01:00" + }, + { + "hash": "4f9d992", + "short": "🔧 fix(docker): add missing shared packages to storage-web Dockerfile", + "type": null, + "scope": null, + "additions": 2, + "deletions": 1, + "timestamp": "2026-02-11T18:00:51+01:00" + }, + { + "hash": "aab304f", + "short": "🔒️ feat(stt,tts): add API key authentication with rate limiting", + "type": null, + "scope": null, + "additions": 527, + "deletions": 8, + "timestamp": "2026-02-11T18:04:22+01:00" + }, + { + "hash": "8ddc4eb", + "short": "🔧 fix(docker): build shared-vite-config in storage-web Dockerfile", + "type": null, + "scope": null, + "additions": 3, + "deletions": 0, + "timestamp": "2026-02-11T18:05:07+01:00" + }, + { + "hash": "4130823", + "short": "🔧 fix(docker): add shared-stores and shared-types to storage-web", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2026-02-11T18:09:40+01:00" + }, + { + "hash": "91f175c", + "short": "🐛 fix(deps): add missing shared-stores dependency to web apps", + "type": null, + "scope": null, + "additions": 433, + "deletions": 508, + "timestamp": "2026-02-11T18:19:38+01:00" + }, + { + "hash": "5ce4e42", + "short": "🚀 feat(photos): add Docker deployment configuration", + "type": null, + "scope": null, + "additions": 278, + "deletions": 7, + "timestamp": "2026-02-11T18:21:19+01:00" + }, + { + "hash": "36563f4", + "short": "🔧 fix(photos): remove unused nestjs-integration dependency", + "type": null, + "scope": null, + "additions": 1, + "deletions": 16, + "timestamp": "2026-02-12T01:43:44+01:00" + }, + { + "hash": "898f5d2", + "short": "🔧 chore(stt,tts): update launchd plists to load .env files", + "type": null, + "scope": null, + "additions": 40, + "deletions": 3, + "timestamp": "2026-02-12T01:44:46+01:00" + }, + { + "hash": "16a7532", + "short": "🔧 chore: update lockfile after removing nestjs-integration", + "type": null, + "scope": null, + "additions": 265, + "deletions": 5, + "timestamp": "2026-02-12T01:45:26+01:00" + }, + { + "hash": "741c5bc", + "short": "🐛 fix(photos): use valid Svelte 5 event syntax", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-12T01:49:11+01:00" + }, + { + "hash": "4452d37", + "short": "🐛 fix(mana-media): correct path to main.js in Dockerfile", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-12T01:55:48+01:00" + }, + { + "hash": "aa56ec8", + "short": "🔧 fix(photos): temporarily disable mana-media dependency", + "type": null, + "scope": null, + "additions": 3, + "deletions": 2, + "timestamp": "2026-02-12T01:58:21+01:00" + }, + { + "hash": "fc2ee7a", + "short": "🐛 fix(photos-backend): correct path to main.js", + "type": null, + "scope": null, + "additions": 10, + "deletions": 1, + "timestamp": "2026-02-12T01:59:02+01:00" + }, + { + "hash": "3353ceb", + "short": "feat(photos): add Cloudflare Tunnel routes for photos app", + "type": "feat", + "scope": "photos", + "additions": 6, + "deletions": 0, + "timestamp": "2026-02-12T02:06:56+01:00" + }, + { + "hash": "552dc10", + "short": "🔧 fix(docker): add --ignore-scripts to pnpm install in all backend Dockerfiles", + "type": null, + "scope": null, + "additions": 24, + "deletions": 24, + "timestamp": "2026-02-12T02:10:45+01:00" + }, + { + "hash": "8b6ff0c", + "short": "✨ feat(auth): add API key management for STT/TTS services", + "type": null, + "scope": null, + "additions": 1238, + "deletions": 16, + "timestamp": "2026-02-12T02:12:05+01:00" + }, + { + "hash": "22a6a64", + "short": "fix(mana-media): fix Dockerfile pnpm symlinks for production", + "type": "fix", + "scope": "mana-media", + "additions": 16, + "deletions": 7, + "timestamp": "2026-02-12T02:19:19+01:00" + }, + { + "hash": "10502b5", + "short": "fix(photos): re-enable mana-media dependency", + "type": "fix", + "scope": "photos", + "additions": 2, + "deletions": 3, + "timestamp": "2026-02-12T02:21:39+01:00" + }, + { + "hash": "ba3d2a1", + "short": "🔧 chore(docker): build backends locally on Mac Mini", + "type": null, + "scope": null, + "additions": 20, + "deletions": 5, + "timestamp": "2026-02-12T02:23:52+01:00" + }, + { + "hash": "03c9267", + "short": "🐛 fix(admin): use PostgresJsDatabase instead of NodePgDatabase", + "type": null, + "scope": null, + "additions": 12, + "deletions": 12, + "timestamp": "2026-02-12T02:34:00+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-02-11/macher.md b/devlog/2026-02-11/macher.md new file mode 100644 index 000000000..3d0988853 --- /dev/null +++ b/devlog/2026-02-11/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-02-11 +day: 44 +view: macher +weekday: Mittwoch +commits: 29 +review: written +--- + +# Mittwoch, 2026-02-11 — Tag 44 (Macher-Sicht) + +## Stats + +29 Commits, +14772 / −1668 LoC, 190 Files. Top-Dirs: `apps/photos/apps/web` (17%), `apps/photos/apps/backend` (13%), `services/mana-core-auth/src` (7%), `apps/presi/apps/backend` (5%), `services/mana-media/apps` (5%). Tags: photos, mana-media. Session 13:59 → 01:34 (~129 aktive Min, längster Fokus 50 Min). + +## Commits + +- `a2e2a5b` ✨ feat(admin): add user data dashboard for cross-project data visualization (+3785/-403) +- `6039407` ✨ feat(mana-stt): add vLLM integration for Voxtral transcription (+1060/-162) +- `7c9c264` 🐛 fix(mana-stt): adjust vLLM config for CPU mode (+7/-2) +- `21d50d1` 📝 docs(mana-stt): document Whisper + Mistral API architecture (+27/-7) +- `e7e6281` 🔧 fix(docker): add missing shared packages to all backend Dockerfiles (+171/-31) +- `99a23d0` 🚀 feat(infra): expose STT and TTS APIs externally (+6/-0) +- `5cd8b63` 🐛 fix(infra): correct TTS API port to 3022 (+1/-1) +- `d3392f6` 🔧 fix(ci): disable ARM64 for storage-backend due to QEMU issues (+2/-1) +- `90c2f85` ✨ feat(photos): add Photos app with mana-media EXIF integration (+6829/-441) +- `4f9d992` 🔧 fix(docker): add missing shared packages to storage-web Dockerfile (+2/-1) +- `aab304f` 🔒️ feat(stt,tts): add API key authentication with rate limiting (+527/-8) +- `8ddc4eb` 🔧 fix(docker): build shared-vite-config in storage-web Dockerfile (+3/-0) +- `4130823` 🔧 fix(docker): add shared-stores and shared-types to storage-web (+2/-0) +- `91f175c` 🐛 fix(deps): add missing shared-stores dependency to web apps (+433/-508) +- `5ce4e42` 🚀 feat(photos): add Docker deployment configuration (+278/-7) +- `36563f4` 🔧 fix(photos): remove unused nestjs-integration dependency (+1/-16) +- `898f5d2` 🔧 chore(stt,tts): update launchd plists to load .env files (+40/-3) +- `16a7532` 🔧 chore: update lockfile after removing nestjs-integration (+265/-5) +- `741c5bc` 🐛 fix(photos): use valid Svelte 5 event syntax (+1/-1) +- `4452d37` 🐛 fix(mana-media): correct path to main.js in Dockerfile (+1/-1) + +_… plus 9 weitere Commits._ diff --git a/devlog/2026-02-11/spieler.md b/devlog/2026-02-11/spieler.md new file mode 100644 index 000000000..c4db749a6 --- /dev/null +++ b/devlog/2026-02-11/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-02-11 +day: 44 +view: spieler +weekday: Mittwoch +commits: 29 +review: written +--- + +# Mittwoch, 2026-02-11 — Tag 44 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- ✨ feat(admin): add user data dashboard for cross-project data visualization +- ✨ feat(mana-stt): add vLLM integration for Voxtral transcription +- 🐛 fix(mana-stt): adjust vLLM config for CPU mode +- 📝 docs(mana-stt): document Whisper + Mistral API architecture +- 🔧 fix(docker): add missing shared packages to all backend Dockerfiles diff --git a/devlog/2026-02-12/data.json b/devlog/2026-02-12/data.json new file mode 100644 index 000000000..862263385 --- /dev/null +++ b/devlog/2026-02-12/data.json @@ -0,0 +1,280 @@ +{ + "date": "2026-02-12", + "day_number": 45, + "weekday": "Donnerstag", + "commits": 22, + "authors": [ + { + "name": "Till-JS", + "count": 22 + } + ], + "additions": 9395, + "deletions": 126, + "net_lines": 9269, + "files_changed": 84, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-02-12T11:51:49.000Z", + "last_commit_at": "2026-02-12T13:35:34.000Z", + "total_span_minutes": 104, + "active_minutes": 104, + "pauses": [], + "longest_focus_minutes": 104 + }, + "top_dirs": [ + { + "path": "scripts/mac-mini/launchd", + "pct": 14 + }, + { + "path": "apps/storage/apps/backend", + "pct": 8 + }, + { + "path": "services/mana-core-auth/src", + "pct": 7 + }, + { + "path": "apps/clock/apps/backend", + "pct": 7 + }, + { + "path": "apps/photos/apps/backend", + "pct": 7 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 42 + }, + { + "ext": ".sh", + "count": 12 + }, + { + "ext": ".plist", + "count": 12 + }, + { + "ext": ".svelte", + "count": 10 + }, + { + "ext": ".md", + "count": 10 + }, + { + "ext": ".yml", + "count": 8 + } + ], + "tags": ["matrix", "admin", "docker", "auth", "monitoring"], + "commits_list": [ + { + "hash": "2fe7f84", + "short": "🔧 fix(mac-mini): add container recovery and update health check ports", + "type": null, + "scope": null, + "additions": 261, + "deletions": 33, + "timestamp": "2026-02-12T12:51:49+01:00" + }, + { + "hash": "759b227", + "short": "🔧 fix(mac-mini): correct user path in LaunchD plist", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-12T13:15:06+01:00" + }, + { + "hash": "9881e84", + "short": "✨ feat(auth): add GDPR self-service endpoints for user data", + "type": null, + "scope": null, + "additions": 928, + "deletions": 13, + "timestamp": "2026-02-12T13:20:08+01:00" + }, + { + "hash": "3e37003", + "short": "🔧 fix(docker): build mana-search and skilltree-web locally", + "type": null, + "scope": null, + "additions": 15, + "deletions": 2, + "timestamp": "2026-02-12T13:22:42+01:00" + }, + { + "hash": "bc8cd98", + "short": "fix(auth): correct MeController route prefix", + "type": "fix", + "scope": "auth", + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-12T13:22:58+01:00" + }, + { + "hash": "6548d83", + "short": "🐛 fix(mana-search): use pnpm deploy to fix symlink issue in Docker", + "type": null, + "scope": null, + "additions": 5, + "deletions": 4, + "timestamp": "2026-02-12T13:24:55+01:00" + }, + { + "hash": "177e4ee", + "short": "fix(docker): add missing shared packages to manacore-web Dockerfile", + "type": "fix", + "scope": "docker", + "additions": 5, + "deletions": 0, + "timestamp": "2026-02-12T13:26:45+01:00" + }, + { + "hash": "d5e18c9", + "short": "🔧 fix(mac-mini): update health checks and disable missing services", + "type": null, + "scope": null, + "additions": 3702, + "deletions": 10, + "timestamp": "2026-02-12T13:28:55+01:00" + }, + { + "hash": "7d40946", + "short": "fix(docker): add backend URLs to auth service for GDPR data aggregation", + "type": "fix", + "scope": "docker", + "additions": 8, + "deletions": 0, + "timestamp": "2026-02-12T13:33:33+01:00" + }, + { + "hash": "3de2f25", + "short": "✨ feat(mac-mini): add stability improvements", + "type": null, + "scope": null, + "additions": 615, + "deletions": 23, + "timestamp": "2026-02-12T13:33:44+01:00" + }, + { + "hash": "02a5172", + "short": "feat(admin): add GDPR user-data endpoints to photos, clock, storage backends", + "type": "feat", + "scope": "admin", + "additions": 830, + "deletions": 1, + "timestamp": "2026-02-12T13:43:16+01:00" + }, + { + "hash": "acc8de3", + "short": "feat(monitoring): add alerting stack and maintenance scripts", + "type": "feat", + "scope": "monitoring", + "additions": 996, + "deletions": 10, + "timestamp": "2026-02-12T13:46:57+01:00" + }, + { + "hash": "42c0069", + "short": "fix(admin): remove duplicate api/v1 prefix from controller routes", + "type": "fix", + "scope": "admin", + "additions": 3, + "deletions": 3, + "timestamp": "2026-02-12T13:49:52+01:00" + }, + { + "hash": "cdb6e25", + "short": "fix(admin): storage backend needs api/v1 prefix in controller", + "type": "fix", + "scope": "admin", + "additions": 1955, + "deletions": 11, + "timestamp": "2026-02-12T13:59:33+01:00" + }, + { + "hash": "650f4f6", + "short": "fix(matrix): add missing props to Message.svelte interface", + "type": "fix", + "scope": "matrix", + "additions": 4, + "deletions": 0, + "timestamp": "2026-02-12T14:02:09+01:00" + }, + { + "hash": "7a2acd4", + "short": "🐛 fix(admin): remove api/v1 prefix from admin controllers", + "type": null, + "scope": null, + "additions": 7, + "deletions": 7, + "timestamp": "2026-02-12T14:03:00+01:00" + }, + { + "hash": "027d3d2", + "short": "feat(matrix): restore last selected chat on app load", + "type": "feat", + "scope": "matrix", + "additions": 15, + "deletions": 0, + "timestamp": "2026-02-12T14:07:05+01:00" + }, + { + "hash": "cb08931", + "short": "🔧 chore(docker): build presi-backend locally on Mac Mini", + "type": null, + "scope": null, + "additions": 4, + "deletions": 1, + "timestamp": "2026-02-12T14:09:46+01:00" + }, + { + "hash": "aa13473", + "short": "🐛 fix(calendar): change user ID fields to text type", + "type": null, + "scope": null, + "additions": 3, + "deletions": 3, + "timestamp": "2026-02-12T14:12:24+01:00" + }, + { + "hash": "5cd067a", + "short": "fix(matrix): check _rooms array for last room restoration", + "type": "fix", + "scope": "matrix", + "additions": 6, + "deletions": 2, + "timestamp": "2026-02-12T14:28:57+01:00" + }, + { + "hash": "8768d62", + "short": "debug(matrix): add logging for room restoration", + "type": "debug", + "scope": "matrix", + "additions": 12, + "deletions": 0, + "timestamp": "2026-02-12T14:32:46+01:00" + }, + { + "hash": "49e619d", + "short": "feat(matrix): add FAB to open sidebar on mobile", + "type": "feat", + "scope": "matrix", + "additions": 19, + "deletions": 1, + "timestamp": "2026-02-12T14:35:34+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-02-12/macher.md b/devlog/2026-02-12/macher.md new file mode 100644 index 000000000..07e4bb88f --- /dev/null +++ b/devlog/2026-02-12/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-02-12 +day: 45 +view: macher +weekday: Donnerstag +commits: 22 +review: written +--- + +# Donnerstag, 2026-02-12 — Tag 45 (Macher-Sicht) + +## Stats + +22 Commits, +9395 / −126 LoC, 84 Files. Top-Dirs: `scripts/mac-mini/launchd` (14%), `apps/storage/apps/backend` (8%), `services/mana-core-auth/src` (7%), `apps/clock/apps/backend` (7%), `apps/photos/apps/backend` (7%). Tags: matrix, admin, docker, auth, monitoring. Session 11:51 → 13:35 (~104 aktive Min, längster Fokus 104 Min). + +## Commits + +- `2fe7f84` 🔧 fix(mac-mini): add container recovery and update health check ports (+261/-33) +- `759b227` 🔧 fix(mac-mini): correct user path in LaunchD plist (+1/-1) +- `9881e84` ✨ feat(auth): add GDPR self-service endpoints for user data (+928/-13) +- `3e37003` 🔧 fix(docker): build mana-search and skilltree-web locally (+15/-2) +- `bc8cd98` fix(auth): correct MeController route prefix (+1/-1) +- `6548d83` 🐛 fix(mana-search): use pnpm deploy to fix symlink issue in Docker (+5/-4) +- `177e4ee` fix(docker): add missing shared packages to manacore-web Dockerfile (+5/-0) +- `d5e18c9` 🔧 fix(mac-mini): update health checks and disable missing services (+3702/-10) +- `7d40946` fix(docker): add backend URLs to auth service for GDPR data aggregation (+8/-0) +- `3de2f25` ✨ feat(mac-mini): add stability improvements (+615/-23) +- `02a5172` feat(admin): add GDPR user-data endpoints to photos, clock, storage backends (+830/-1) +- `acc8de3` feat(monitoring): add alerting stack and maintenance scripts (+996/-10) +- `42c0069` fix(admin): remove duplicate api/v1 prefix from controller routes (+3/-3) +- `cdb6e25` fix(admin): storage backend needs api/v1 prefix in controller (+1955/-11) +- `650f4f6` fix(matrix): add missing props to Message.svelte interface (+4/-0) +- `7a2acd4` 🐛 fix(admin): remove api/v1 prefix from admin controllers (+7/-7) +- `027d3d2` feat(matrix): restore last selected chat on app load (+15/-0) +- `cb08931` 🔧 chore(docker): build presi-backend locally on Mac Mini (+4/-1) +- `aa13473` 🐛 fix(calendar): change user ID fields to text type (+3/-3) +- `5cd067a` fix(matrix): check \_rooms array for last room restoration (+6/-2) + +_… plus 2 weitere Commits._ diff --git a/devlog/2026-02-12/spieler.md b/devlog/2026-02-12/spieler.md new file mode 100644 index 000000000..7c9c793a9 --- /dev/null +++ b/devlog/2026-02-12/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-02-12 +day: 45 +view: spieler +weekday: Donnerstag +commits: 22 +review: written +--- + +# Donnerstag, 2026-02-12 — Tag 45 + +Dichter Tag in **scripts** und Umgebung. + +## Highlights + +- 🔧 fix(mac-mini): add container recovery and update health check ports +- 🔧 fix(mac-mini): correct user path in LaunchD plist +- ✨ feat(auth): add GDPR self-service endpoints for user data +- 🔧 fix(docker): build mana-search and skilltree-web locally +- correct MeController route prefix diff --git a/devlog/2026-02-13/data.json b/devlog/2026-02-13/data.json new file mode 100644 index 000000000..1b7049948 --- /dev/null +++ b/devlog/2026-02-13/data.json @@ -0,0 +1,607 @@ +{ + "date": "2026-02-13", + "day_number": 46, + "weekday": "Freitag", + "commits": 56, + "authors": [ + { + "name": "Till-JS", + "count": 56 + } + ], + "additions": 21645, + "deletions": 5752, + "net_lines": 15893, + "files_changed": 221, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-02-13T10:54:41.000Z", + "last_commit_at": "2026-02-13T23:02:53.000Z", + "total_span_minutes": 728, + "active_minutes": 216, + "pauses": [ + { + "from": "12:42", + "to": "13:40", + "minutes": 58 + }, + { + "from": "14:06", + "to": "14:49", + "minutes": 43 + }, + { + "from": "14:49", + "to": "19:27", + "minutes": 278 + }, + { + "from": "19:52", + "to": "22:05", + "minutes": 133 + } + ], + "longest_focus_minutes": 117 + }, + "top_dirs": [ + { + "path": "services/mana-core-auth/src", + "pct": 18 + }, + { + "path": "apps/zitare/apps/web", + "pct": 15 + }, + { + "path": "apps/manacore/apps/web", + "pct": 12 + }, + { + "path": "apps/calendar/apps/web", + "pct": 6 + }, + { + "path": "apps/manacore/apps/landing", + "pct": 6 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 142 + }, + { + "ext": ".svelte", + "count": 71 + }, + { + "ext": ".md", + "count": 22 + }, + { + "ext": ".json", + "count": 15 + }, + { + "ext": ".yml", + "count": 13 + }, + { + "ext": "", + "count": 9 + } + ], + "tags": ["matrix", "bot-services", "docker", "calendar", "nutriphi-bot"], + "commits_list": [ + { + "hash": "f5debee", + "short": "fix(matrix): increase FAB z-index and bottom position", + "type": "fix", + "scope": "matrix", + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-13T11:54:41+01:00" + }, + { + "hash": "210969a", + "short": "🔧 chore(docker): build mana-web locally on Mac Mini", + "type": null, + "scope": null, + "additions": 4, + "deletions": 1, + "timestamp": "2026-02-13T12:04:30+01:00" + }, + { + "hash": "f4c2663", + "short": "✨ feat(devlog): add activity grid page and extended stats", + "type": null, + "scope": null, + "additions": 496, + "deletions": 2, + "timestamp": "2026-02-13T12:07:23+01:00" + }, + { + "hash": "435d06a", + "short": "✨ feat(matrix): implement WhatsApp-style mobile navigation", + "type": null, + "scope": null, + "additions": 358, + "deletions": 168, + "timestamp": "2026-02-13T12:08:23+01:00" + }, + { + "hash": "b9f0d84", + "short": "♻️ refactor(matrix-bots): remove offline mode, require login for all operations", + "type": null, + "scope": null, + "additions": 441, + "deletions": 1115, + "timestamp": "2026-02-13T12:18:11+01:00" + }, + { + "hash": "a373784", + "short": "💄 style(devlog): improve activity page design", + "type": null, + "scope": null, + "additions": 508, + "deletions": 158, + "timestamp": "2026-02-13T12:21:01+01:00" + }, + { + "hash": "e06622a", + "short": "🩹 fix(matrix): add mobile-web-app-capable meta tag", + "type": null, + "scope": null, + "additions": 2, + "deletions": 1, + "timestamp": "2026-02-13T12:23:01+01:00" + }, + { + "hash": "9924eb5", + "short": "🔧 fix(docker): add backend URLs to matrix todo and calendar bots", + "type": null, + "scope": null, + "additions": 12, + "deletions": 0, + "timestamp": "2026-02-13T12:23:30+01:00" + }, + { + "hash": "74c1cfe", + "short": "✨ feat(zitare): add @zitare/content package for shared quotes", + "type": null, + "scope": null, + "additions": 989, + "deletions": 580, + "timestamp": "2026-02-13T12:30:41+01:00" + }, + { + "hash": "d961508", + "short": "🩹 fix(zitare): use proper German umlauts in quotes", + "type": null, + "scope": null, + "additions": 39, + "deletions": 39, + "timestamp": "2026-02-13T12:35:41+01:00" + }, + { + "hash": "742aa0e", + "short": "✨ feat(zitare): add multilingual support and expanded quote metadata", + "type": null, + "scope": null, + "additions": 987, + "deletions": 79, + "timestamp": "2026-02-13T12:42:50+01:00" + }, + { + "hash": "431957c", + "short": "📝 chore(zitare): complete metadata for all quotes", + "type": null, + "scope": null, + "additions": 490, + "deletions": 169, + "timestamp": "2026-02-13T13:40:36+01:00" + }, + { + "hash": "7d450aa", + "short": "✨ feat(bot-services): add Matrix-SSO-Link for persistent login", + "type": null, + "scope": null, + "additions": 40, + "deletions": 0, + "timestamp": "2026-02-13T13:42:07+01:00" + }, + { + "hash": "ab15c23", + "short": "✨ feat(gdpr): add DSGVO improvements for self-service data page", + "type": null, + "scope": null, + "additions": 306, + "deletions": 9, + "timestamp": "2026-02-13T13:43:23+01:00" + }, + { + "hash": "c54ff85", + "short": "🚀 feat(zitare): add Docker deployment infrastructure", + "type": null, + "scope": null, + "additions": 196, + "deletions": 0, + "timestamp": "2026-02-13T13:49:15+01:00" + }, + { + "hash": "7e1e8e9", + "short": "🐛 fix(bot-services): use correct double-prefix path for matrix-session API", + "type": null, + "scope": null, + "additions": 4, + "deletions": 2, + "timestamp": "2026-02-13T13:51:16+01:00" + }, + { + "hash": "ef9bd56", + "short": "🔧 debug(bot-services): add logging to getToken for SSO-Link debugging", + "type": null, + "scope": null, + "additions": 2324, + "deletions": 2133, + "timestamp": "2026-02-13T14:06:37+01:00" + }, + { + "hash": "533bd90", + "short": "🚀 feat(zitare-web): add Docker deployment infrastructure", + "type": null, + "scope": null, + "additions": 170, + "deletions": 0, + "timestamp": "2026-02-13T14:49:26+01:00" + }, + { + "hash": "dfe9419", + "short": "🔧 chore: update pnpm-lock.yaml for zitare-web deployment", + "type": null, + "scope": null, + "additions": 255, + "deletions": 436, + "timestamp": "2026-02-13T19:27:32+01:00" + }, + { + "hash": "09465fe", + "short": "🔧 chore(zitare): add drizzle.config.ts for backend", + "type": null, + "scope": null, + "additions": 6, + "deletions": 0, + "timestamp": "2026-02-13T19:31:25+01:00" + }, + { + "hash": "e62782f", + "short": "🐛 fix(zitare): correct health check endpoint path in Dockerfile", + "type": null, + "scope": null, + "additions": 2, + "deletions": 2, + "timestamp": "2026-02-13T19:35:08+01:00" + }, + { + "hash": "cdad7f5", + "short": "💄 fix(calendar): improve mobile UX - hide tasks by default, integrate mic in input bar", + "type": null, + "scope": null, + "additions": 48, + "deletions": 10, + "timestamp": "2026-02-13T19:35:37+01:00" + }, + { + "hash": "b5dde8e", + "short": "📝 docs(dsgvo): update privacy policy and fix datenschutz link", + "type": null, + "scope": null, + "additions": 21, + "deletions": 22, + "timestamp": "2026-02-13T19:37:04+01:00" + }, + { + "hash": "b6bd07b", + "short": "🐛 fix(docker): correct zitare-backend health check path", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-13T19:39:45+01:00" + }, + { + "hash": "ad8d5c3", + "short": "🔧 chore(zitare): change zitare-web port from 5012 to 5018", + "type": null, + "scope": null, + "additions": 6, + "deletions": 6, + "timestamp": "2026-02-13T19:40:50+01:00" + }, + { + "hash": "133615f", + "short": "✨ feat(matrix): add swipe-back gesture for iOS PWA navigation", + "type": null, + "scope": null, + "additions": 101, + "deletions": 2, + "timestamp": "2026-02-13T19:41:23+01:00" + }, + { + "hash": "a9942aa", + "short": "fix(bot-services): filter events client-side, backend doesn't support date params", + "type": "fix", + "scope": "bot-services", + "additions": 27, + "deletions": 4, + "timestamp": "2026-02-13T19:46:43+01:00" + }, + { + "hash": "bba696e", + "short": "chore(docker): use local build for matrix-calendar-bot", + "type": "chore", + "scope": "docker", + "additions": 2, + "deletions": 1, + "timestamp": "2026-02-13T19:52:54+01:00" + }, + { + "hash": "2200ed6", + "short": "🚸 feat(calendar): auto-scroll to current hour and hide tasks by default", + "type": null, + "scope": null, + "additions": 94, + "deletions": 3, + "timestamp": "2026-02-13T22:05:35+01:00" + }, + { + "hash": "c8b1e92", + "short": "💄 style(matrix-todo-bot): clean up task response messages", + "type": null, + "scope": null, + "additions": 31, + "deletions": 74, + "timestamp": "2026-02-13T22:09:31+01:00" + }, + { + "hash": "6e7080c", + "short": "💄 fix(calendar): add padding to calendar views for bottom UI visibility", + "type": null, + "scope": null, + "additions": 12, + "deletions": 0, + "timestamp": "2026-02-13T22:11:49+01:00" + }, + { + "hash": "0015bd0", + "short": "🔧 chore(docker): build matrix-todo-bot locally on Mac Mini", + "type": null, + "scope": null, + "additions": 4, + "deletions": 1, + "timestamp": "2026-02-13T22:14:06+01:00" + }, + { + "hash": "ae30ce3", + "short": "✨ feat(auth): add Stripe credit purchases and subscription management", + "type": null, + "scope": null, + "additions": 1495, + "deletions": 48, + "timestamp": "2026-02-13T22:21:23+01:00" + }, + { + "hash": "ce4e982", + "short": "✨ feat(auth): add profile management endpoints", + "type": null, + "scope": null, + "additions": 470, + "deletions": 81, + "timestamp": "2026-02-13T22:29:32+01:00" + }, + { + "hash": "7d1b4a4", + "short": "✨ feat(dashboard): add StorageUsageWidget", + "type": null, + "scope": null, + "additions": 310, + "deletions": 4, + "timestamp": "2026-02-13T22:34:10+01:00" + }, + { + "hash": "affcfe4", + "short": "✨ feat(calendar): integrate TagStrip into PillNavigation dropdown", + "type": null, + "scope": null, + "additions": 615, + "deletions": 139, + "timestamp": "2026-02-13T22:42:11+01:00" + }, + { + "hash": "d3b0f9f", + "short": "✨ feat(manacore): add profile, subscription, and credits frontend", + "type": null, + "scope": null, + "additions": 1732, + "deletions": 41, + "timestamp": "2026-02-13T22:46:25+01:00" + }, + { + "hash": "23a1c5e", + "short": "feat(calendar): add larger resize handles, live time preview, and drag-to-create", + "type": "feat", + "scope": "calendar", + "additions": 979, + "deletions": 151, + "timestamp": "2026-02-13T23:03:23+01:00" + }, + { + "hash": "1e025b7", + "short": "✨ feat(skilltree): enable web deployment", + "type": null, + "scope": null, + "additions": 29, + "deletions": 7, + "timestamp": "2026-02-13T23:05:08+01:00" + }, + { + "hash": "c2842e2", + "short": "✨ feat(auth): add avatar upload with S3/MinIO and subscription plans seed", + "type": null, + "scope": null, + "additions": 705, + "deletions": 51, + "timestamp": "2026-02-13T23:06:24+01:00" + }, + { + "hash": "d49d147", + "short": "🔧 chore(caddy): add skilltree reverse proxy config", + "type": null, + "scope": null, + "additions": 11, + "deletions": 0, + "timestamp": "2026-02-13T23:11:12+01:00" + }, + { + "hash": "405084b", + "short": "🔧 fix(skilltree): change web port to 5020 (5018 used by zitare)", + "type": null, + "scope": null, + "additions": 7, + "deletions": 7, + "timestamp": "2026-02-13T23:14:38+01:00" + }, + { + "hash": "5118235", + "short": "✨ feat(manacore): add avatar upload frontend and onboarding wizard", + "type": null, + "scope": null, + "additions": 1339, + "deletions": 39, + "timestamp": "2026-02-13T23:18:10+01:00" + }, + { + "hash": "92c6dc8", + "short": "fix(nutriphi-bot): remove missing media-client dependency", + "type": "fix", + "scope": "nutriphi-bot", + "additions": 24, + "deletions": 40, + "timestamp": "2026-02-13T23:22:29+01:00" + }, + { + "hash": "962b942", + "short": "✨ feat(bot-services): add credit and gift services for Matrix bots", + "type": null, + "scope": null, + "additions": 2057, + "deletions": 0, + "timestamp": "2026-02-13T23:29:21+01:00" + }, + { + "hash": "e8c3b97", + "short": "✨ feat(auth): add gift codes and enhanced credit system", + "type": null, + "scope": null, + "additions": 1456, + "deletions": 1, + "timestamp": "2026-02-13T23:29:30+01:00" + }, + { + "hash": "087d34c", + "short": "✨ feat(matrix-bots): enhance stats and todo bots", + "type": null, + "scope": null, + "additions": 151, + "deletions": 19, + "timestamp": "2026-02-13T23:29:36+01:00" + }, + { + "hash": "72ee715", + "short": "✨ feat(manacore): enhance API keys management UI", + "type": null, + "scope": null, + "additions": 90, + "deletions": 9, + "timestamp": "2026-02-13T23:29:41+01:00" + }, + { + "hash": "702a30b", + "short": "✨ feat(todo): add settings store and improve layout", + "type": null, + "scope": null, + "additions": 595, + "deletions": 52, + "timestamp": "2026-02-13T23:29:45+01:00" + }, + { + "hash": "ceebb5d", + "short": "✨ feat(zitare): add settings store and i18n updates", + "type": null, + "scope": null, + "additions": 119, + "deletions": 4, + "timestamp": "2026-02-13T23:29:50+01:00" + }, + { + "hash": "9bfc20b", + "short": "🎨 refactor(shared-ui): improve LoginPage and InputBar components", + "type": null, + "scope": null, + "additions": 37, + "deletions": 4, + "timestamp": "2026-02-13T23:29:56+01:00" + }, + { + "hash": "0701635", + "short": "🔧 fix(auth): update Dockerfile for workspace dependencies", + "type": null, + "scope": null, + "additions": 33, + "deletions": 22, + "timestamp": "2026-02-13T23:36:56+01:00" + }, + { + "hash": "9d77684", + "short": "🔧 fix(auth): add build tools for bcrypt native module", + "type": null, + "scope": null, + "additions": 5, + "deletions": 4, + "timestamp": "2026-02-13T23:41:35+01:00" + }, + { + "hash": "0485ce4", + "short": "🩹 fix(auth): correct healthcheck endpoint path", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-13T23:48:45+01:00" + }, + { + "hash": "284cd00", + "short": "🩹 fix(auth): fix gift code route prefix and JWT issuer validation", + "type": null, + "scope": null, + "additions": 263, + "deletions": 9, + "timestamp": "2026-02-13T23:54:36+01:00" + }, + { + "hash": "40a3c89", + "short": "📝 docs(devlog): add devlogs for Feb 12 and Feb 13", + "type": null, + "scope": null, + "additions": 1145, + "deletions": 0, + "timestamp": "2026-02-14T00:02:53+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-02-13/macher.md b/devlog/2026-02-13/macher.md new file mode 100644 index 000000000..7f88183ef --- /dev/null +++ b/devlog/2026-02-13/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-02-13 +day: 46 +view: macher +weekday: Freitag +commits: 56 +review: written +--- + +# Freitag, 2026-02-13 — Tag 46 (Macher-Sicht) + +## Stats + +56 Commits, +21645 / −5752 LoC, 221 Files. Top-Dirs: `services/mana-core-auth/src` (18%), `apps/zitare/apps/web` (15%), `apps/manacore/apps/web` (12%), `apps/calendar/apps/web` (6%), `apps/manacore/apps/landing` (6%). Tags: matrix, bot-services, docker, calendar, nutriphi-bot. Session 10:54 → 23:02 (~216 aktive Min, längster Fokus 117 Min). + +## Commits + +- `f5debee` fix(matrix): increase FAB z-index and bottom position (+1/-1) +- `210969a` 🔧 chore(docker): build mana-web locally on Mac Mini (+4/-1) +- `f4c2663` ✨ feat(devlog): add activity grid page and extended stats (+496/-2) +- `435d06a` ✨ feat(matrix): implement WhatsApp-style mobile navigation (+358/-168) +- `b9f0d84` ♻️ refactor(matrix-bots): remove offline mode, require login for all operations (+441/-1115) +- `a373784` 💄 style(devlog): improve activity page design (+508/-158) +- `e06622a` 🩹 fix(matrix): add mobile-web-app-capable meta tag (+2/-1) +- `9924eb5` 🔧 fix(docker): add backend URLs to matrix todo and calendar bots (+12/-0) +- `74c1cfe` ✨ feat(zitare): add @zitare/content package for shared quotes (+989/-580) +- `d961508` 🩹 fix(zitare): use proper German umlauts in quotes (+39/-39) +- `742aa0e` ✨ feat(zitare): add multilingual support and expanded quote metadata (+987/-79) +- `431957c` 📝 chore(zitare): complete metadata for all quotes (+490/-169) +- `7d450aa` ✨ feat(bot-services): add Matrix-SSO-Link for persistent login (+40/-0) +- `ab15c23` ✨ feat(gdpr): add DSGVO improvements for self-service data page (+306/-9) +- `c54ff85` 🚀 feat(zitare): add Docker deployment infrastructure (+196/-0) +- `7e1e8e9` 🐛 fix(bot-services): use correct double-prefix path for matrix-session API (+4/-2) +- `ef9bd56` 🔧 debug(bot-services): add logging to getToken for SSO-Link debugging (+2324/-2133) +- `533bd90` 🚀 feat(zitare-web): add Docker deployment infrastructure (+170/-0) +- `dfe9419` 🔧 chore: update pnpm-lock.yaml for zitare-web deployment (+255/-436) +- `09465fe` 🔧 chore(zitare): add drizzle.config.ts for backend (+6/-0) + +_… plus 36 weitere Commits._ diff --git a/devlog/2026-02-13/spieler.md b/devlog/2026-02-13/spieler.md new file mode 100644 index 000000000..ce65b2ea0 --- /dev/null +++ b/devlog/2026-02-13/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-02-13 +day: 46 +view: spieler +weekday: Freitag +commits: 56 +review: written +--- + +# Freitag, 2026-02-13 — Tag 46 + +Großer Sprint-Tag mit Schwerpunkt **services** (56 Commits). + +## Highlights + +- increase FAB z-index and bottom position +- 🔧 chore(docker): build mana-web locally on Mac Mini +- ✨ feat(devlog): add activity grid page and extended stats +- ✨ feat(matrix): implement WhatsApp-style mobile navigation +- ♻️ refactor(matrix-bots): remove offline mode, require login for all operations diff --git a/devlog/2026-02-14/data.json b/devlog/2026-02-14/data.json new file mode 100644 index 000000000..2b936bf25 --- /dev/null +++ b/devlog/2026-02-14/data.json @@ -0,0 +1,610 @@ +{ + "date": "2026-02-14", + "day_number": 47, + "weekday": "Samstag", + "commits": 58, + "authors": [ + { + "name": "Till-JS", + "count": 58 + } + ], + "additions": 9314, + "deletions": 2460, + "net_lines": 6854, + "files_changed": 146, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-02-14T09:55:13.000Z", + "last_commit_at": "2026-02-14T13:34:14.000Z", + "total_span_minutes": 219, + "active_minutes": 176, + "pauses": [ + { + "from": "12:50", + "to": "13:32", + "minutes": 43 + } + ], + "longest_focus_minutes": 115 + }, + "top_dirs": [ + { + "path": "apps/manacore/apps/web", + "pct": 7 + }, + { + "path": "services/matrix-stats-bot/src", + "pct": 7 + }, + { + "path": "services/matrix-clock-bot/src", + "pct": 7 + }, + { + "path": "apps/matrix/apps/web", + "pct": 5 + }, + { + "path": "docker-compose.macmini.yml", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 118 + }, + { + "ext": ".svelte", + "count": 15 + }, + { + "ext": ".html", + "count": 15 + }, + { + "ext": ".md", + "count": 13 + }, + { + "ext": ".yml", + "count": 10 + }, + { + "ext": ".json", + "count": 8 + } + ], + "tags": ["matrix-tts-bot", "clock-bot", "matrix-stt-bot", "docker", "stats-bot"], + "commits_list": [ + { + "hash": "7c0bc73", + "short": "✨ feat(matrix): add drag & drop file upload to chat", + "type": null, + "scope": null, + "additions": 131, + "deletions": 3, + "timestamp": "2026-02-14T10:55:13+01:00" + }, + { + "hash": "1c9c230", + "short": "fix(matrix-tts-bot): add API key authentication for mana-tts service", + "type": "fix", + "scope": "matrix-tts-bot", + "additions": 18, + "deletions": 2, + "timestamp": "2026-02-14T10:59:08+01:00" + }, + { + "hash": "5e01c83", + "short": "✨ feat(matrix): improve chat UI with WhatsApp-style input and emoji picker", + "type": null, + "scope": null, + "additions": 199, + "deletions": 40, + "timestamp": "2026-02-14T11:02:36+01:00" + }, + { + "hash": "70e45ed", + "short": "fix(matrix-stats-bot): adapt to Umami v2 API response format", + "type": "fix", + "scope": "matrix-stats-bot", + "additions": 121, + "deletions": 40, + "timestamp": "2026-02-14T11:03:03+01:00" + }, + { + "hash": "fa7fb3c", + "short": "🩹 fix(matrix-bots): use authenticated media download for all bots", + "type": null, + "scope": null, + "additions": 44, + "deletions": 61, + "timestamp": "2026-02-14T11:04:13+01:00" + }, + { + "hash": "e013384", + "short": "chore(docker): build matrix-tts-bot locally instead of from registry", + "type": "chore", + "scope": "docker", + "additions": 4, + "deletions": 1, + "timestamp": "2026-02-14T11:04:44+01:00" + }, + { + "hash": "aff2db9", + "short": "✨ feat(matrix): add recently used emojis section in emoji picker", + "type": null, + "scope": null, + "additions": 71, + "deletions": 97, + "timestamp": "2026-02-14T11:08:31+01:00" + }, + { + "hash": "0f234a0", + "short": "fix(matrix-tts-bot): use WAV format for better Matrix compatibility", + "type": "fix", + "scope": "matrix-tts-bot", + "additions": 5, + "deletions": 5, + "timestamp": "2026-02-14T11:09:56+01:00" + }, + { + "hash": "c843531", + "short": "feat(analytics): update Umami tracking IDs for all web apps", + "type": "feat", + "scope": "analytics", + "additions": 21, + "deletions": 9, + "timestamp": "2026-02-14T11:14:16+01:00" + }, + { + "hash": "ff1affb", + "short": "🩹 fix(nutriphi-bot): add automatic token refresh on JWT expiration", + "type": null, + "scope": null, + "additions": 199, + "deletions": 77, + "timestamp": "2026-02-14T11:18:19+01:00" + }, + { + "hash": "4a26926", + "short": "🩹 fix(bot-services): export LOGIN_MESSAGES and auth error helpers", + "type": null, + "scope": null, + "additions": 244, + "deletions": 12, + "timestamp": "2026-02-14T11:19:55+01:00" + }, + { + "hash": "e88597c", + "short": "✨ feat(gifts): add gift code creation script and initial codes", + "type": null, + "scope": null, + "additions": 199, + "deletions": 0, + "timestamp": "2026-02-14T11:23:08+01:00" + }, + { + "hash": "bd7f197", + "short": "feat(stats-bot): add infrastructure monitoring commands", + "type": "feat", + "scope": "stats-bot", + "additions": 446, + "deletions": 48, + "timestamp": "2026-02-14T11:24:31+01:00" + }, + { + "hash": "c698318", + "short": "chore(deploy): add PROMETHEUS_URL to stats-bot config", + "type": "chore", + "scope": "deploy", + "additions": 3, + "deletions": 0, + "timestamp": "2026-02-14T11:25:18+01:00" + }, + { + "hash": "d81b8ae", + "short": "🔒 refactor(bots): remove !login command and enforce OIDC-only auth", + "type": null, + "scope": null, + "additions": 158, + "deletions": 786, + "timestamp": "2026-02-14T11:26:58+01:00" + }, + { + "hash": "83c75ce", + "short": "🩹 fix(nutriphi-bot): use correct API field name for image analysis", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-14T11:28:46+01:00" + }, + { + "hash": "2521a1e", + "short": "feat(matrix): sync recent emojis across apps via mana-core-auth", + "type": "feat", + "scope": "matrix", + "additions": 256, + "deletions": 42, + "timestamp": "2026-02-14T11:30:17+01:00" + }, + { + "hash": "67f3d30", + "short": "fix(matrix-tts-bot): use /synthesize/auto endpoint for German voices", + "type": "fix", + "scope": "matrix-tts-bot", + "additions": 5, + "deletions": 8, + "timestamp": "2026-02-14T11:30:37+01:00" + }, + { + "hash": "0099e1e", + "short": "chore(matrix-tts-bot): set German (de_thorsten) as default voice", + "type": "chore", + "scope": "matrix-tts-bot", + "additions": 2, + "deletions": 2, + "timestamp": "2026-02-14T11:55:47+01:00" + }, + { + "hash": "acd8d02", + "short": "🔧 fix(clock-bot): use local build with SSO-Link auth", + "type": null, + "scope": null, + "additions": 13, + "deletions": 2, + "timestamp": "2026-02-14T11:57:53+01:00" + }, + { + "hash": "a4ef703", + "short": "✨ feat(manacore): add gift code web UI", + "type": null, + "scope": null, + "additions": 1693, + "deletions": 0, + "timestamp": "2026-02-14T12:01:24+01:00" + }, + { + "hash": "c221f92", + "short": "🩹 fix(nutriphi): update Gemini model from expired gemini-2.0-flash-exp to gemini-2.5-flash", + "type": null, + "scope": null, + "additions": 2, + "deletions": 2, + "timestamp": "2026-02-14T12:06:40+01:00" + }, + { + "hash": "5af965e", + "short": "feat(clock-bot): add live timer progress with message editing", + "type": "feat", + "scope": "clock-bot", + "additions": 255, + "deletions": 8, + "timestamp": "2026-02-14T12:07:28+01:00" + }, + { + "hash": "01b0112", + "short": "🩹 fix(mana-tts): add Piper/German voice support to /synthesize/auto endpoint", + "type": null, + "scope": null, + "additions": 40, + "deletions": 0, + "timestamp": "2026-02-14T12:08:17+01:00" + }, + { + "hash": "4b950b7", + "short": "✨ feat(tts): add de_kerstin female German voice and set as default", + "type": null, + "scope": null, + "additions": 54, + "deletions": 31, + "timestamp": "2026-02-14T12:16:58+01:00" + }, + { + "hash": "acf4512", + "short": "fix(session): add auto-refresh for expired JWT tokens", + "type": "fix", + "scope": "session", + "additions": 335, + "deletions": 11, + "timestamp": "2026-02-14T12:19:08+01:00" + }, + { + "hash": "209a474", + "short": "🩹 fix(gifts): add duplicate claim check to first_come type", + "type": null, + "scope": null, + "additions": 18, + "deletions": 11, + "timestamp": "2026-02-14T12:19:43+01:00" + }, + { + "hash": "1245109", + "short": "📝 docs(tts): document German voice support (Piper/Kerstin)", + "type": null, + "scope": null, + "additions": 66, + "deletions": 13, + "timestamp": "2026-02-14T12:21:40+01:00" + }, + { + "hash": "139c040", + "short": "refactor(stats-bot): swap commands - !stats for personal, !global for global", + "type": "refactor", + "scope": "stats-bot", + "additions": 15, + "deletions": 15, + "timestamp": "2026-02-14T12:26:52+01:00" + }, + { + "hash": "07ac2e8", + "short": "🔧 fix(stats-bot): add Redis and Matrix-SSO-Link for auto-login", + "type": null, + "scope": null, + "additions": 10, + "deletions": 2, + "timestamp": "2026-02-14T12:31:35+01:00" + }, + { + "hash": "b1eaa88", + "short": "📝 docs(stats-bot): add Redis and Matrix-SSO-Link environment variables", + "type": null, + "scope": null, + "additions": 20, + "deletions": 3, + "timestamp": "2026-02-14T12:35:15+01:00" + }, + { + "hash": "c13c313", + "short": "🐛 fix(gifts): reorder controller routes to fix 'me/*' matching", + "type": null, + "scope": null, + "additions": 642, + "deletions": 26, + "timestamp": "2026-02-14T12:38:23+01:00" + }, + { + "hash": "e4ac539", + "short": "chore: update pnpm-lock.yaml for clock-bot @types/express", + "type": null, + "scope": null, + "additions": 456, + "deletions": 435, + "timestamp": "2026-02-14T12:39:16+01:00" + }, + { + "hash": "531ed3e", + "short": "📝 docs(nutriphi): update Gemini model version to 2.5 Flash", + "type": null, + "scope": null, + "additions": 4, + "deletions": 2, + "timestamp": "2026-02-14T12:41:32+01:00" + }, + { + "hash": "a6fc1cb", + "short": "feat(onboarding): add Matrix onboarding bot for profile setup", + "type": "feat", + "scope": "onboarding", + "additions": 1456, + "deletions": 0, + "timestamp": "2026-02-14T12:42:41+01:00" + }, + { + "hash": "0a41640", + "short": "chore(onboarding-bot): add bot user creation script", + "type": "chore", + "scope": "onboarding-bot", + "additions": 110, + "deletions": 0, + "timestamp": "2026-02-14T12:43:29+01:00" + }, + { + "hash": "5025bfa", + "short": "fix(clock-bot): optimize widget styling for Element info panel", + "type": "fix", + "scope": "clock-bot", + "additions": 89, + "deletions": 44, + "timestamp": "2026-02-14T12:46:19+01:00" + }, + { + "hash": "8dad8a8", + "short": "🐛 fix(manacore-web): use runtime auth URL instead of hardcoded localhost", + "type": null, + "scope": null, + "additions": 39, + "deletions": 22, + "timestamp": "2026-02-14T12:47:40+01:00" + }, + { + "hash": "1052dca", + "short": "🐛 fix(nutriphi-web): add missing shared packages to Dockerfile", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2026-02-14T12:50:01+01:00" + }, + { + "hash": "db7f2df", + "short": "🐛 fix(nutriphi-web): add shared-api-client to Dockerfile", + "type": null, + "scope": null, + "additions": 1, + "deletions": 0, + "timestamp": "2026-02-14T13:32:52+01:00" + }, + { + "hash": "992181c", + "short": "✨ feat(clock-bot): add timer status to room topic (Phase 3)", + "type": null, + "scope": null, + "additions": 125, + "deletions": 4, + "timestamp": "2026-02-14T13:36:08+01:00" + }, + { + "hash": "c8ab4bb", + "short": "🐛 fix(nutriphi-web): fix i18n hydration error", + "type": null, + "scope": null, + "additions": 18, + "deletions": 7, + "timestamp": "2026-02-14T13:39:35+01:00" + }, + { + "hash": "2e8b3b9", + "short": "fix(matrix-bot-common): ignore messages from other bots", + "type": "fix", + "scope": "matrix-bot-common", + "additions": 15, + "deletions": 0, + "timestamp": "2026-02-14T13:40:59+01:00" + }, + { + "hash": "5ef04ea", + "short": "🐛 fix(nutriphi-backend): change user_id from uuid to text", + "type": null, + "scope": null, + "additions": 4, + "deletions": 4, + "timestamp": "2026-02-14T13:44:05+01:00" + }, + { + "hash": "ba818ef", + "short": "fix(clock-bot): improve room topic error logging", + "type": "fix", + "scope": "clock-bot", + "additions": 4, + "deletions": 2, + "timestamp": "2026-02-14T13:47:15+01:00" + }, + { + "hash": "72b1625", + "short": "🐛 fix(gifts): convert undefined sourceAppId to null for Drizzle", + "type": null, + "scope": null, + "additions": 3, + "deletions": 3, + "timestamp": "2026-02-14T13:50:01+01:00" + }, + { + "hash": "102f0df", + "short": "🔧 chore(clock-bot): improve room topic error logging", + "type": null, + "scope": null, + "additions": 9, + "deletions": 2, + "timestamp": "2026-02-14T13:52:20+01:00" + }, + { + "hash": "ab677b2", + "short": "🐛 fix(gifts): explicitly set nullable fields to null in DB inserts", + "type": null, + "scope": null, + "additions": 6, + "deletions": 0, + "timestamp": "2026-02-14T14:02:46+01:00" + }, + { + "hash": "97264cd", + "short": "🔧 chore(clock-bot): add detailed topic update logging", + "type": null, + "scope": null, + "additions": 4, + "deletions": 1, + "timestamp": "2026-02-14T14:03:04+01:00" + }, + { + "hash": "43ac782", + "short": "docs(matrix-bot-common): document bot-to-bot loop prevention", + "type": "docs", + "scope": "matrix-bot-common", + "additions": 5, + "deletions": 0, + "timestamp": "2026-02-14T14:05:34+01:00" + }, + { + "hash": "79f1155", + "short": "✨ feat(nutriphi-bot): auto-analyze text meal descriptions", + "type": null, + "scope": null, + "additions": 139, + "deletions": 0, + "timestamp": "2026-02-14T14:18:10+01:00" + }, + { + "hash": "d7236d6", + "short": "debug: add detailed logging for gift redemption", + "type": null, + "scope": null, + "additions": 65, + "deletions": 30, + "timestamp": "2026-02-14T14:28:37+01:00" + }, + { + "hash": "e357f9f", + "short": "feat(matrix-stt-bot): add speech-to-text Matrix bot", + "type": "feat", + "scope": "matrix-stt-bot", + "additions": 1375, + "deletions": 508, + "timestamp": "2026-02-14T14:29:34+01:00" + }, + { + "hash": "69f2eaf", + "short": "🐛 fix(matrix-bot-common): ignore edit events to prevent bot duplicate responses", + "type": null, + "scope": null, + "additions": 10, + "deletions": 0, + "timestamp": "2026-02-14T14:30:49+01:00" + }, + { + "hash": "c703935", + "short": "feat(docker): add matrix-stt-bot to Mac Mini deployment", + "type": "feat", + "scope": "docker", + "additions": 33, + "deletions": 0, + "timestamp": "2026-02-14T14:31:01+01:00" + }, + { + "hash": "aabc4a6", + "short": "🔧 chore: build matrix-mana-bot locally for quick fixes", + "type": null, + "scope": null, + "additions": 5, + "deletions": 2, + "timestamp": "2026-02-14T14:31:45+01:00" + }, + { + "hash": "0a439bb", + "short": "fix(matrix-stt-bot): fix Dockerfile build order and port", + "type": "fix", + "scope": "matrix-stt-bot", + "additions": 5, + "deletions": 5, + "timestamp": "2026-02-14T14:32:23+01:00" + }, + { + "hash": "ec83958", + "short": "fix(matrix-stt-bot): use same Dockerfile pattern as TTS bot", + "type": "fix", + "scope": "matrix-stt-bot", + "additions": 42, + "deletions": 31, + "timestamp": "2026-02-14T14:34:14+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-02-14/macher.md b/devlog/2026-02-14/macher.md new file mode 100644 index 000000000..235028906 --- /dev/null +++ b/devlog/2026-02-14/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-02-14 +day: 47 +view: macher +weekday: Samstag +commits: 58 +review: written +--- + +# Samstag, 2026-02-14 — Tag 47 (Macher-Sicht) + +## Stats + +58 Commits, +9314 / −2460 LoC, 146 Files. Top-Dirs: `apps/manacore/apps/web` (7%), `services/matrix-stats-bot/src` (7%), `services/matrix-clock-bot/src` (7%), `apps/matrix/apps/web` (5%), `docker-compose.macmini.yml` (5%). Tags: matrix-tts-bot, clock-bot, matrix-stt-bot, docker, stats-bot. Session 09:55 → 13:34 (~176 aktive Min, längster Fokus 115 Min). + +## Commits + +- `7c0bc73` ✨ feat(matrix): add drag & drop file upload to chat (+131/-3) +- `1c9c230` fix(matrix-tts-bot): add API key authentication for mana-tts service (+18/-2) +- `5e01c83` ✨ feat(matrix): improve chat UI with WhatsApp-style input and emoji picker (+199/-40) +- `70e45ed` fix(matrix-stats-bot): adapt to Umami v2 API response format (+121/-40) +- `fa7fb3c` 🩹 fix(matrix-bots): use authenticated media download for all bots (+44/-61) +- `e013384` chore(docker): build matrix-tts-bot locally instead of from registry (+4/-1) +- `aff2db9` ✨ feat(matrix): add recently used emojis section in emoji picker (+71/-97) +- `0f234a0` fix(matrix-tts-bot): use WAV format for better Matrix compatibility (+5/-5) +- `c843531` feat(analytics): update Umami tracking IDs for all web apps (+21/-9) +- `ff1affb` 🩹 fix(nutriphi-bot): add automatic token refresh on JWT expiration (+199/-77) +- `4a26926` 🩹 fix(bot-services): export LOGIN_MESSAGES and auth error helpers (+244/-12) +- `e88597c` ✨ feat(gifts): add gift code creation script and initial codes (+199/-0) +- `bd7f197` feat(stats-bot): add infrastructure monitoring commands (+446/-48) +- `c698318` chore(deploy): add PROMETHEUS_URL to stats-bot config (+3/-0) +- `d81b8ae` 🔒 refactor(bots): remove !login command and enforce OIDC-only auth (+158/-786) +- `83c75ce` 🩹 fix(nutriphi-bot): use correct API field name for image analysis (+1/-1) +- `2521a1e` feat(matrix): sync recent emojis across apps via mana-core-auth (+256/-42) +- `67f3d30` fix(matrix-tts-bot): use /synthesize/auto endpoint for German voices (+5/-8) +- `0099e1e` chore(matrix-tts-bot): set German (de_thorsten) as default voice (+2/-2) +- `acd8d02` 🔧 fix(clock-bot): use local build with SSO-Link auth (+13/-2) + +_… plus 38 weitere Commits._ diff --git a/devlog/2026-02-14/spieler.md b/devlog/2026-02-14/spieler.md new file mode 100644 index 000000000..c80930256 --- /dev/null +++ b/devlog/2026-02-14/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-02-14 +day: 47 +view: spieler +weekday: Samstag +commits: 58 +review: written +--- + +# Samstag, 2026-02-14 — Tag 47 + +Großer Sprint-Tag mit Schwerpunkt **apps** (58 Commits). + +## Highlights + +- ✨ feat(matrix): add drag & drop file upload to chat +- add API key authentication for mana-tts service +- ✨ feat(matrix): improve chat UI with WhatsApp-style input and emoji picker +- adapt to Umami v2 API response format +- 🩹 fix(matrix-bots): use authenticated media download for all bots diff --git a/devlog/2026-02-15/data.json b/devlog/2026-02-15/data.json new file mode 100644 index 000000000..278381e6f --- /dev/null +++ b/devlog/2026-02-15/data.json @@ -0,0 +1,119 @@ +{ + "date": "2026-02-15", + "day_number": 48, + "weekday": "Sonntag", + "commits": 5, + "authors": [ + { + "name": "Till-JS", + "count": 5 + } + ], + "additions": 303, + "deletions": 239, + "net_lines": 64, + "files_changed": 10, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-02-15T22:55:42.000Z", + "last_commit_at": "2026-02-15T23:12:09.000Z", + "total_span_minutes": 16, + "active_minutes": 16, + "pauses": [], + "longest_focus_minutes": 16 + }, + "top_dirs": [ + { + "path": "apps/calendar/apps/web", + "pct": 40 + }, + { + "path": "services/mana-core-auth/src", + "pct": 20 + }, + { + "path": "packages/bot-services/src", + "pct": 20 + }, + { + "path": "packages/bot-services/CLAUDE.md", + "pct": 10 + }, + { + "path": "docker-compose.macmini.yml", + "pct": 10 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 4 + }, + { + "ext": ".svelte", + "count": 4 + }, + { + "ext": ".md", + "count": 1 + }, + { + "ext": ".yml", + "count": 1 + } + ], + "tags": [], + "commits_list": [ + { + "hash": "670073e", + "short": "🐛 fix(gifts): fix userId undefined - guard used userId but controller expected sub", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2026-02-15T23:55:42+01:00" + }, + { + "hash": "9bb8d3a", + "short": "🔥 chore(gifts): remove debug logging after fixing userId undefined", + "type": null, + "scope": null, + "additions": 30, + "deletions": 65, + "timestamp": "2026-02-16T00:02:49+01:00" + }, + { + "hash": "32f8467", + "short": "✨ feat(calendar): unify view switcher into new ViewsBar component", + "type": null, + "scope": null, + "additions": 229, + "deletions": 170, + "timestamp": "2026-02-16T00:07:49+01:00" + }, + { + "hash": "0f24e08", + "short": "✨ feat(bot-services): add API key support to TranscriptionService", + "type": null, + "scope": null, + "additions": 38, + "deletions": 2, + "timestamp": "2026-02-16T00:11:24+01:00" + }, + { + "hash": "2e37925", + "short": "🔧 chore: add STT_API_KEY to all Matrix bots using STT", + "type": null, + "scope": null, + "additions": 4, + "deletions": 2, + "timestamp": "2026-02-16T00:12:09+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-02-15/macher.md b/devlog/2026-02-15/macher.md new file mode 100644 index 000000000..5711fde85 --- /dev/null +++ b/devlog/2026-02-15/macher.md @@ -0,0 +1,22 @@ +--- +date: 2026-02-15 +day: 48 +view: macher +weekday: Sonntag +commits: 5 +review: written +--- + +# Sonntag, 2026-02-15 — Tag 48 (Macher-Sicht) + +## Stats + +5 Commits, +303 / −239 LoC, 10 Files. Top-Dirs: `apps/calendar/apps/web` (40%), `services/mana-core-auth/src` (20%), `packages/bot-services/src` (20%), `packages/bot-services/CLAUDE.md` (10%), `docker-compose.macmini.yml` (10%). Tags: —. Session 22:55 → 23:12 (~16 aktive Min, längster Fokus 16 Min). + +## Commits + +- `670073e` 🐛 fix(gifts): fix userId undefined - guard used userId but controller expected sub (+2/-0) +- `9bb8d3a` 🔥 chore(gifts): remove debug logging after fixing userId undefined (+30/-65) +- `32f8467` ✨ feat(calendar): unify view switcher into new ViewsBar component (+229/-170) +- `0f24e08` ✨ feat(bot-services): add API key support to TranscriptionService (+38/-2) +- `2e37925` 🔧 chore: add STT_API_KEY to all Matrix bots using STT (+4/-2) diff --git a/devlog/2026-02-15/spieler.md b/devlog/2026-02-15/spieler.md new file mode 100644 index 000000000..015e8d6da --- /dev/null +++ b/devlog/2026-02-15/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-02-15 +day: 48 +view: spieler +weekday: Sonntag +commits: 5 +review: written +--- + +# Sonntag, 2026-02-15 — Tag 48 + +Kurzer Arbeitstag, Schwerpunkt **apps**. + +## Highlights + +- 🐛 fix(gifts): fix userId undefined - guard used userId but controller expected sub +- 🔥 chore(gifts): remove debug logging after fixing userId undefined +- ✨ feat(calendar): unify view switcher into new ViewsBar component +- ✨ feat(bot-services): add API key support to TranscriptionService +- 🔧 chore: add STT_API_KEY to all Matrix bots using STT diff --git a/devlog/2026-02-16/data.json b/devlog/2026-02-16/data.json new file mode 100644 index 000000000..5cba25781 --- /dev/null +++ b/devlog/2026-02-16/data.json @@ -0,0 +1,372 @@ +{ + "date": "2026-02-16", + "day_number": 49, + "weekday": "Montag", + "commits": 31, + "authors": [ + { + "name": "Till-JS", + "count": 31 + } + ], + "additions": 16919, + "deletions": 4512, + "net_lines": 12407, + "files_changed": 234, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-02-16T09:41:44.000Z", + "last_commit_at": "2026-02-16T14:35:18.000Z", + "total_span_minutes": 294, + "active_minutes": 213, + "pauses": [ + { + "from": "13:58", + "to": "14:30", + "minutes": 32 + }, + { + "from": "14:30", + "to": "15:19", + "minutes": 49 + } + ], + "longest_focus_minutes": 196 + }, + "top_dirs": [ + { + "path": "apps/lightwrite/apps/backend", + "pct": 18 + }, + { + "path": "apps/lightwrite/apps/web", + "pct": 18 + }, + { + "path": "services/mana-core-auth/src", + "pct": 10 + }, + { + "path": "apps/matrix/apps/web", + "pct": 8 + }, + { + "path": "apps/manacore/apps/web", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 136 + }, + { + "ext": ".svelte", + "count": 65 + }, + { + "ext": ".json", + "count": 34 + }, + { + "ext": ".md", + "count": 15 + }, + { + "ext": ".yml", + "count": 4 + }, + { + "ext": "", + "count": 4 + } + ], + "tags": ["auth", "storage"], + "commits_list": [ + { + "hash": "d7ce615", + "short": "💄 style(onboarding): convert fullscreen to compact modal", + "type": null, + "scope": null, + "additions": 72, + "deletions": 68, + "timestamp": "2026-02-16T10:41:44+01:00" + }, + { + "hash": "7b2ae94", + "short": "💄 fix(onboarding): use correct elevation layer colors for modal", + "type": null, + "scope": null, + "additions": 7, + "deletions": 7, + "timestamp": "2026-02-16T10:48:01+01:00" + }, + { + "hash": "78c7383", + "short": "✨ feat(lightwrite): add Beat/Lyrics Editor app", + "type": null, + "scope": null, + "additions": 5244, + "deletions": 34, + "timestamp": "2026-02-16T11:13:08+01:00" + }, + { + "hash": "376ba82", + "short": "✨ feat(matrix): add widget support to Manalink client", + "type": null, + "scope": null, + "additions": 132, + "deletions": 1, + "timestamp": "2026-02-16T11:16:27+01:00" + }, + { + "hash": "6797195", + "short": "🔧 chore(infra): add lightwrite subdomain configuration", + "type": null, + "scope": null, + "additions": 23, + "deletions": 0, + "timestamp": "2026-02-16T11:19:54+01:00" + }, + { + "hash": "52f88af", + "short": "🐛 fix(clock-bot): enable Redis session storage for widget", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-16T11:20:54+01:00" + }, + { + "hash": "ea0bf67", + "short": "🎨 style(matrix): fix RoomSettingsPanel styling to match app theme", + "type": null, + "scope": null, + "additions": 437, + "deletions": 102, + "timestamp": "2026-02-16T11:25:54+01:00" + }, + { + "hash": "bba3d97", + "short": "🔒 chore: update pnpm-lock.yaml for lightwrite shared package", + "type": null, + "scope": null, + "additions": 251, + "deletions": 0, + "timestamp": "2026-02-16T11:30:02+01:00" + }, + { + "hash": "f77edbd", + "short": "🐳 fix(lightwrite): add shared-nestjs-setup to Dockerfile", + "type": null, + "scope": null, + "additions": 4, + "deletions": 0, + "timestamp": "2026-02-16T11:31:38+01:00" + }, + { + "hash": "7747ca6", + "short": "📝 docs(devlog): add missing devlogs for Jan 24-27 and Feb 14-15", + "type": null, + "scope": null, + "additions": 1548, + "deletions": 0, + "timestamp": "2026-02-16T11:40:37+01:00" + }, + { + "hash": "2e66039", + "short": "💳 feat(stripe): add ManaCore unified subscription plans", + "type": null, + "scope": null, + "additions": 103, + "deletions": 55, + "timestamp": "2026-02-16T11:43:04+01:00" + }, + { + "hash": "b9669c3", + "short": "🎨 refactor(matrix): use elevation system for RoomSettingsPanel", + "type": null, + "scope": null, + "additions": 16, + "deletions": 29, + "timestamp": "2026-02-16T11:45:39+01:00" + }, + { + "hash": "bfc2737", + "short": "♻️ refactor(credits): simplify credit system by removing free credits and B2B", + "type": null, + "scope": null, + "additions": 272, + "deletions": 2416, + "timestamp": "2026-02-16T11:54:32+01:00" + }, + { + "hash": "d86e903", + "short": "🐛 fix(auth): skip body parser for Stripe webhooks", + "type": null, + "scope": null, + "additions": 238, + "deletions": 191, + "timestamp": "2026-02-16T12:01:24+01:00" + }, + { + "hash": "0e8f6f1", + "short": "📝 docs(credits): update documentation for simplified credit system", + "type": null, + "scope": null, + "additions": 208, + "deletions": 401, + "timestamp": "2026-02-16T12:03:35+01:00" + }, + { + "hash": "b5d7524", + "short": "💳 feat(stripe): add SEPA Direct Debit payment option", + "type": null, + "scope": null, + "additions": 543, + "deletions": 3, + "timestamp": "2026-02-16T12:05:19+01:00" + }, + { + "hash": "6e7b671", + "short": "✨ feat(lightwrite): add UX improvements and beat library", + "type": null, + "scope": null, + "additions": 993, + "deletions": 204, + "timestamp": "2026-02-16T12:14:13+01:00" + }, + { + "hash": "9d618b1", + "short": "📝 docs: add SEPA activation checklist with TODOs and test cases", + "type": null, + "scope": null, + "additions": 259, + "deletions": 0, + "timestamp": "2026-02-16T12:42:02+01:00" + }, + { + "hash": "5fe16b5", + "short": "✨ feat(auth): add organization management endpoints", + "type": null, + "scope": null, + "additions": 1163, + "deletions": 0, + "timestamp": "2026-02-16T12:43:38+01:00" + }, + { + "hash": "b92b9bd", + "short": "✨ feat(onboarding): add app-specific mini-onboarding system", + "type": null, + "scope": null, + "additions": 809, + "deletions": 0, + "timestamp": "2026-02-16T12:50:04+01:00" + }, + { + "hash": "67a2d63", + "short": "📝 docs: add app-specific mini-onboarding documentation", + "type": null, + "scope": null, + "additions": 312, + "deletions": 0, + "timestamp": "2026-02-16T12:52:44+01:00" + }, + { + "hash": "14da5a2", + "short": "📝 docs(auth): update organization endpoint documentation", + "type": null, + "scope": null, + "additions": 1668, + "deletions": 20, + "timestamp": "2026-02-16T12:57:29+01:00" + }, + { + "hash": "31f3d80", + "short": "✈️ feat(pwa): add PWA dependencies to all 18 web apps", + "type": null, + "scope": null, + "additions": 798, + "deletions": 439, + "timestamp": "2026-02-16T13:13:40+01:00" + }, + { + "hash": "46b9861", + "short": "🐛 fix(lightwrite): add missing Tailwind CSS vite plugin", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2026-02-16T13:38:04+01:00" + }, + { + "hash": "711db9e", + "short": "🐛 fix(lightwrite): add missing shared packages to Dockerfile", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2026-02-16T13:42:32+01:00" + }, + { + "hash": "2236f83", + "short": "📝 docs: add Mana earning system documentation", + "type": null, + "scope": null, + "additions": 1425, + "deletions": 512, + "timestamp": "2026-02-16T13:52:22+01:00" + }, + { + "hash": "1328d92", + "short": "🐛 fix(lightwrite): add LightWriteLogo to shared-branding", + "type": null, + "scope": null, + "additions": 32, + "deletions": 11, + "timestamp": "2026-02-16T13:56:10+01:00" + }, + { + "hash": "f5a6fda", + "short": "🔧 chore(auth): add missing apps to CORS origins", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-16T13:58:07+01:00" + }, + { + "hash": "20db016", + "short": "fix(auth): remove conflicting JSON body parser middleware", + "type": "fix", + "scope": "auth", + "additions": 4, + "deletions": 9, + "timestamp": "2026-02-16T14:30:06+01:00" + }, + { + "hash": "9dc6c11", + "short": "✨ feat(lightwrite): add STT lyrics transcription integration", + "type": null, + "scope": null, + "additions": 319, + "deletions": 4, + "timestamp": "2026-02-16T15:19:14+01:00" + }, + { + "hash": "d6303e4", + "short": "feat(storage): add public endpoint support for presigned URLs", + "type": "feat", + "scope": "storage", + "additions": 33, + "deletions": 4, + "timestamp": "2026-02-16T15:35:18+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-02-16/macher.md b/devlog/2026-02-16/macher.md new file mode 100644 index 000000000..0ad9c0832 --- /dev/null +++ b/devlog/2026-02-16/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-02-16 +day: 49 +view: macher +weekday: Montag +commits: 31 +review: written +--- + +# Montag, 2026-02-16 — Tag 49 (Macher-Sicht) + +## Stats + +31 Commits, +16919 / −4512 LoC, 234 Files. Top-Dirs: `apps/lightwrite/apps/backend` (18%), `apps/lightwrite/apps/web` (18%), `services/mana-core-auth/src` (10%), `apps/matrix/apps/web` (8%), `apps/manacore/apps/web` (4%). Tags: auth, storage. Session 09:41 → 14:35 (~213 aktive Min, längster Fokus 196 Min). + +## Commits + +- `d7ce615` 💄 style(onboarding): convert fullscreen to compact modal (+72/-68) +- `7b2ae94` 💄 fix(onboarding): use correct elevation layer colors for modal (+7/-7) +- `78c7383` ✨ feat(lightwrite): add Beat/Lyrics Editor app (+5244/-34) +- `376ba82` ✨ feat(matrix): add widget support to Manalink client (+132/-1) +- `6797195` 🔧 chore(infra): add lightwrite subdomain configuration (+23/-0) +- `52f88af` 🐛 fix(clock-bot): enable Redis session storage for widget (+1/-1) +- `ea0bf67` 🎨 style(matrix): fix RoomSettingsPanel styling to match app theme (+437/-102) +- `bba3d97` 🔒 chore: update pnpm-lock.yaml for lightwrite shared package (+251/-0) +- `f77edbd` 🐳 fix(lightwrite): add shared-nestjs-setup to Dockerfile (+4/-0) +- `7747ca6` 📝 docs(devlog): add missing devlogs for Jan 24-27 and Feb 14-15 (+1548/-0) +- `2e66039` 💳 feat(stripe): add ManaCore unified subscription plans (+103/-55) +- `b9669c3` 🎨 refactor(matrix): use elevation system for RoomSettingsPanel (+16/-29) +- `bfc2737` ♻️ refactor(credits): simplify credit system by removing free credits and B2B (+272/-2416) +- `d86e903` 🐛 fix(auth): skip body parser for Stripe webhooks (+238/-191) +- `0e8f6f1` 📝 docs(credits): update documentation for simplified credit system (+208/-401) +- `b5d7524` 💳 feat(stripe): add SEPA Direct Debit payment option (+543/-3) +- `6e7b671` ✨ feat(lightwrite): add UX improvements and beat library (+993/-204) +- `9d618b1` 📝 docs: add SEPA activation checklist with TODOs and test cases (+259/-0) +- `5fe16b5` ✨ feat(auth): add organization management endpoints (+1163/-0) +- `b92b9bd` ✨ feat(onboarding): add app-specific mini-onboarding system (+809/-0) + +_… plus 11 weitere Commits._ diff --git a/devlog/2026-02-16/spieler.md b/devlog/2026-02-16/spieler.md new file mode 100644 index 000000000..ca66b7f38 --- /dev/null +++ b/devlog/2026-02-16/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-02-16 +day: 49 +view: spieler +weekday: Montag +commits: 31 +review: written +--- + +# Montag, 2026-02-16 — Tag 49 + +Großer Sprint-Tag mit Schwerpunkt **apps** (31 Commits). + +## Highlights + +- 💄 style(onboarding): convert fullscreen to compact modal +- 💄 fix(onboarding): use correct elevation layer colors for modal +- ✨ feat(lightwrite): add Beat/Lyrics Editor app +- ✨ feat(matrix): add widget support to Manalink client +- 🔧 chore(infra): add lightwrite subdomain configuration diff --git a/devlog/2026-02-17/data.json b/devlog/2026-02-17/data.json new file mode 100644 index 000000000..eba09ab1b --- /dev/null +++ b/devlog/2026-02-17/data.json @@ -0,0 +1,322 @@ +{ + "date": "2026-02-17", + "day_number": 50, + "weekday": "Dienstag", + "commits": 26, + "authors": [ + { + "name": "Till-JS", + "count": 26 + } + ], + "additions": 15891, + "deletions": 8613, + "net_lines": 7278, + "files_changed": 161, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-02-17T09:40:08.000Z", + "last_commit_at": "2026-02-17T13:19:31.000Z", + "total_span_minutes": 219, + "active_minutes": 129, + "pauses": [ + { + "from": "11:08", + "to": "12:38", + "minutes": 90 + } + ], + "longest_focus_minutes": 101 + }, + "top_dirs": [ + { + "path": "packages/bot-services/src", + "pct": 12 + }, + { + "path": "apps/manacore/apps/web", + "pct": 10 + }, + { + "path": "services/mana-core-auth/src", + "pct": 9 + }, + { + "path": "packages/wallpaper-generator/src", + "pct": 9 + }, + { + "path": "packages/spiral-db/src", + "pct": 6 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 114 + }, + { + "ext": ".svelte", + "count": 29 + }, + { + "ext": ".json", + "count": 14 + }, + { + "ext": ".md", + "count": 8 + }, + { + "ext": "", + "count": 6 + }, + { + "ext": ".yml", + "count": 3 + } + ], + "tags": ["manacore", "planta-bot", "planta-backend", "bot-services", "manacore-web"], + "commits_list": [ + { + "hash": "9704e88", + "short": "✨ feat(planta-bot): add AI plant identification via image upload", + "type": null, + "scope": null, + "additions": 299, + "deletions": 7, + "timestamp": "2026-02-17T10:40:08+01:00" + }, + { + "hash": "f1518e8", + "short": "✨ feat(spiral-db): add pixel-based spiral database package", + "type": null, + "scope": null, + "additions": 3046, + "deletions": 0, + "timestamp": "2026-02-17T10:42:09+01:00" + }, + { + "hash": "c999999", + "short": "feat(planta): add Docker deployment for planta-backend and matrix-planta-bot", + "type": "feat", + "scope": "planta", + "additions": 181, + "deletions": 0, + "timestamp": "2026-02-17T10:45:35+01:00" + }, + { + "hash": "d9c5554", + "short": "feat(manacore): add QR code export to my-data page", + "type": "feat", + "scope": "manacore", + "additions": 1924, + "deletions": 908, + "timestamp": "2026-02-17T10:47:24+01:00" + }, + { + "hash": "ceac544", + "short": "fix(planta-bot): rewrite Dockerfile to use pnpm workspace pattern", + "type": "fix", + "scope": "planta-bot", + "additions": 51, + "deletions": 21, + "timestamp": "2026-02-17T10:48:55+01:00" + }, + { + "hash": "c5c8907", + "short": "fix(planta-backend): add shared-drizzle-config to Dockerfile", + "type": "fix", + "scope": "planta-backend", + "additions": 1, + "deletions": 0, + "timestamp": "2026-02-17T10:51:16+01:00" + }, + { + "hash": "4c3ca3b", + "short": "✨ feat(todo): integrate spiral-db visualization", + "type": null, + "scope": null, + "additions": 1522, + "deletions": 508, + "timestamp": "2026-02-17T10:55:29+01:00" + }, + { + "hash": "3b00303", + "short": "fix(planta-backend): correct health check endpoint to /api/v1/health", + "type": "fix", + "scope": "planta-backend", + "additions": 3, + "deletions": 3, + "timestamp": "2026-02-17T10:55:40+01:00" + }, + { + "hash": "dcf4438", + "short": "✨ feat(mana-bot): add daily morning summary feature", + "type": null, + "scope": null, + "additions": 2781, + "deletions": 7, + "timestamp": "2026-02-17T11:01:47+01:00" + }, + { + "hash": "352388b", + "short": "docs(manacore): add comprehensive Mana Values manifest", + "type": "docs", + "scope": "manacore", + "additions": 429, + "deletions": 34, + "timestamp": "2026-02-17T11:08:11+01:00" + }, + { + "hash": "07a4c1c", + "short": "debug: add message handler logging for planta-bot investigation", + "type": null, + "scope": null, + "additions": 7, + "deletions": 1, + "timestamp": "2026-02-17T12:38:27+01:00" + }, + { + "hash": "9faa1fc", + "short": "debug: add detailed logging to planta bot handleTextMessage", + "type": null, + "scope": null, + "additions": 51, + "deletions": 4, + "timestamp": "2026-02-17T12:40:57+01:00" + }, + { + "hash": "9b01c09", + "short": "fix(bot-services): remove SessionModule import from I18nModule to prevent DI conflicts", + "type": "fix", + "scope": "bot-services", + "additions": 12, + "deletions": 6, + "timestamp": "2026-02-17T12:46:33+01:00" + }, + { + "hash": "fd30fdc", + "short": "fix(bot-services): add global: true to I18nModule dynamic module config", + "type": "fix", + "scope": "bot-services", + "additions": 3, + "deletions": 2, + "timestamp": "2026-02-17T12:48:28+01:00" + }, + { + "hash": "c480231", + "short": "fix(planta-bot): make I18nService optional to diagnose DI issue", + "type": "fix", + "scope": "planta-bot", + "additions": 7, + "deletions": 5, + "timestamp": "2026-02-17T12:51:04+01:00" + }, + { + "hash": "e5109da", + "short": "feat(wallpaper-generator): add device wallpaper generation package", + "type": "feat", + "scope": "wallpaper-generator", + "additions": 5151, + "deletions": 434, + "timestamp": "2026-02-17T12:57:43+01:00" + }, + { + "hash": "497b12c", + "short": "♻️ refactor(shared-ui): simplify PillNavigation - remove sidebar mode", + "type": null, + "scope": null, + "additions": 77, + "deletions": 1104, + "timestamp": "2026-02-17T13:27:23+01:00" + }, + { + "hash": "03d90f2", + "short": "fix(lightwrite): add /api/v1 prefix to backend API calls", + "type": "fix", + "scope": "lightwrite", + "additions": 5, + "deletions": 4, + "timestamp": "2026-02-17T13:41:12+01:00" + }, + { + "hash": "1d44f91", + "short": "fix(manacore-web): add missing packages to Dockerfile", + "type": "fix", + "scope": "manacore-web", + "additions": 19, + "deletions": 5538, + "timestamp": "2026-02-17T13:43:08+01:00" + }, + { + "hash": "9517e1e", + "short": "🐛 fix(todo): add missing packages to Dockerfile for spiral-db", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2026-02-17T13:48:05+01:00" + }, + { + "hash": "bf5df28", + "short": "🔧 chore(todo): switch todo-web to local build for spiral-db", + "type": null, + "scope": null, + "additions": 4, + "deletions": 1, + "timestamp": "2026-02-17T13:49:29+01:00" + }, + { + "hash": "212f499", + "short": "fix(manacore-web): handle contacts API response format", + "type": "fix", + "scope": "manacore-web", + "additions": 25, + "deletions": 10, + "timestamp": "2026-02-17T13:56:47+01:00" + }, + { + "hash": "5c630c3", + "short": "feat(nutriphi-bot): add smart meal feedback with positive aspects and improvement suggestions", + "type": "feat", + "scope": "nutriphi-bot", + "additions": 219, + "deletions": 10, + "timestamp": "2026-02-17T14:09:33+01:00" + }, + { + "hash": "845859c", + "short": "✨ feat(todo): add PNG import functionality to spiral page", + "type": null, + "scope": null, + "additions": 64, + "deletions": 0, + "timestamp": "2026-02-17T14:11:50+01:00" + }, + { + "hash": "a336cc2", + "short": "fix(nutriphi-bot): make I18nService optional to fix DI error", + "type": "fix", + "scope": "nutriphi-bot", + "additions": 7, + "deletions": 5, + "timestamp": "2026-02-17T14:14:07+01:00" + }, + { + "hash": "216a868", + "short": "🐛 fix(todo): await async importFromPngBytes call", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-02-17T14:19:31+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-02-17/macher.md b/devlog/2026-02-17/macher.md new file mode 100644 index 000000000..c82c44627 --- /dev/null +++ b/devlog/2026-02-17/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-02-17 +day: 50 +view: macher +weekday: Dienstag +commits: 26 +review: written +--- + +# Dienstag, 2026-02-17 — Tag 50 (Macher-Sicht) + +## Stats + +26 Commits, +15891 / −8613 LoC, 161 Files. Top-Dirs: `packages/bot-services/src` (12%), `apps/manacore/apps/web` (10%), `services/mana-core-auth/src` (9%), `packages/wallpaper-generator/src` (9%), `packages/spiral-db/src` (6%). Tags: manacore, planta-bot, planta-backend, bot-services, manacore-web. Session 09:40 → 13:19 (~129 aktive Min, längster Fokus 101 Min). + +## Commits + +- `9704e88` ✨ feat(planta-bot): add AI plant identification via image upload (+299/-7) +- `f1518e8` ✨ feat(spiral-db): add pixel-based spiral database package (+3046/-0) +- `c999999` feat(planta): add Docker deployment for planta-backend and matrix-planta-bot (+181/-0) +- `d9c5554` feat(manacore): add QR code export to my-data page (+1924/-908) +- `ceac544` fix(planta-bot): rewrite Dockerfile to use pnpm workspace pattern (+51/-21) +- `c5c8907` fix(planta-backend): add shared-drizzle-config to Dockerfile (+1/-0) +- `4c3ca3b` ✨ feat(todo): integrate spiral-db visualization (+1522/-508) +- `3b00303` fix(planta-backend): correct health check endpoint to /api/v1/health (+3/-3) +- `dcf4438` ✨ feat(mana-bot): add daily morning summary feature (+2781/-7) +- `352388b` docs(manacore): add comprehensive Mana Values manifest (+429/-34) +- `07a4c1c` debug: add message handler logging for planta-bot investigation (+7/-1) +- `9faa1fc` debug: add detailed logging to planta bot handleTextMessage (+51/-4) +- `9b01c09` fix(bot-services): remove SessionModule import from I18nModule to prevent DI conflicts (+12/-6) +- `fd30fdc` fix(bot-services): add global: true to I18nModule dynamic module config (+3/-2) +- `c480231` fix(planta-bot): make I18nService optional to diagnose DI issue (+7/-5) +- `e5109da` feat(wallpaper-generator): add device wallpaper generation package (+5151/-434) +- `497b12c` ♻️ refactor(shared-ui): simplify PillNavigation - remove sidebar mode (+77/-1104) +- `03d90f2` fix(lightwrite): add /api/v1 prefix to backend API calls (+5/-4) +- `1d44f91` fix(manacore-web): add missing packages to Dockerfile (+19/-5538) +- `9517e1e` 🐛 fix(todo): add missing packages to Dockerfile for spiral-db (+2/-0) + +_… plus 6 weitere Commits._ diff --git a/devlog/2026-02-17/spieler.md b/devlog/2026-02-17/spieler.md new file mode 100644 index 000000000..4c1f92171 --- /dev/null +++ b/devlog/2026-02-17/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-02-17 +day: 50 +view: spieler +weekday: Dienstag +commits: 26 +review: written +--- + +# Dienstag, 2026-02-17 — Tag 50 + +Dichter Tag in **packages** und Umgebung. + +## Highlights + +- ✨ feat(planta-bot): add AI plant identification via image upload +- ✨ feat(spiral-db): add pixel-based spiral database package +- add Docker deployment for planta-backend and matrix-planta-bot +- add QR code export to my-data page +- rewrite Dockerfile to use pnpm workspace pattern diff --git a/devlog/2026-03-06/data.json b/devlog/2026-03-06/data.json new file mode 100644 index 000000000..d7c782f98 --- /dev/null +++ b/devlog/2026-03-06/data.json @@ -0,0 +1,151 @@ +{ + "date": "2026-03-06", + "day_number": 51, + "weekday": "Freitag", + "commits": 7, + "authors": [ + { + "name": "Till JS", + "count": 7 + } + ], + "additions": 6946, + "deletions": 612, + "net_lines": 6334, + "files_changed": 56, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-06T11:28:45.000Z", + "last_commit_at": "2026-03-06T18:54:43.000Z", + "total_span_minutes": 446, + "active_minutes": 27, + "pauses": [ + { + "from": "12:37", + "to": "19:36", + "minutes": 419 + } + ], + "longest_focus_minutes": 18 + }, + "top_dirs": [ + { + "path": "apps/matrix/apps/mobile", + "pct": 90 + }, + { + "path": "package.json", + "pct": 4 + }, + { + "path": "apps/matrix/package.json", + "pct": 1 + }, + { + "path": "packages/qr-export/tsconfig.json", + "pct": 1 + }, + { + "path": "packages/wallpaper-generator/tsconfig.json", + "pct": 1 + } + ], + "top_extensions": [ + { + "ext": ".tsx", + "count": 29 + }, + { + "ext": ".json", + "count": 14 + }, + { + "ext": ".ts", + "count": 14 + }, + { + "ext": ".js", + "count": 5 + }, + { + "ext": ".png", + "count": 5 + }, + { + "ext": ".gitignore", + "count": 1 + } + ], + "tags": ["matrix-mobile", "matrix", "monorepo"], + "commits_list": [ + { + "hash": "fdf44ea", + "short": "✨ feat(matrix): add Expo React Native mobile client (Manalink)", + "type": null, + "scope": null, + "additions": 4246, + "deletions": 0, + "timestamp": "2026-03-06T12:28:45+01:00" + }, + { + "hash": "449605c", + "short": "chore(matrix): add dev:web and dev:mobile scripts to parent package", + "type": "chore", + "scope": "matrix", + "additions": 3, + "deletions": 1, + "timestamp": "2026-03-06T12:29:24+01:00" + }, + { + "hash": "a4a7032", + "short": "chore: add matrix dev scripts to root package.json", + "type": null, + "scope": null, + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-06T12:29:35+01:00" + }, + { + "hash": "a9c05ca", + "short": "✨ feat(matrix-mobile): add reactions, read receipts, forward & fix DM encryption", + "type": null, + "scope": null, + "additions": 243, + "deletions": 20, + "timestamp": "2026-03-06T12:37:22+01:00" + }, + { + "hash": "bc3a527", + "short": "chore(matrix-mobile): configure EAS Build for TestFlight and fix type errors", + "type": "chore", + "scope": "matrix-mobile", + "additions": 2448, + "deletions": 587, + "timestamp": "2026-03-06T19:36:39+01:00" + }, + { + "hash": "a7acffd", + "short": "fix(matrix-mobile): use string format for pnpm version in eas.json", + "type": "fix", + "scope": "matrix-mobile", + "additions": 1, + "deletions": 3, + "timestamp": "2026-03-06T19:50:54+01:00" + }, + { + "hash": "1976c26", + "short": "fix(monorepo): add sharp to neverBuiltDependencies for EAS builds", + "type": "fix", + "scope": "monorepo", + "additions": 2, + "deletions": 1, + "timestamp": "2026-03-06T19:54:43+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-06/macher.md b/devlog/2026-03-06/macher.md new file mode 100644 index 000000000..05349a7c4 --- /dev/null +++ b/devlog/2026-03-06/macher.md @@ -0,0 +1,24 @@ +--- +date: 2026-03-06 +day: 51 +view: macher +weekday: Freitag +commits: 7 +review: written +--- + +# Freitag, 2026-03-06 — Tag 51 (Macher-Sicht) + +## Stats + +7 Commits, +6946 / −612 LoC, 56 Files. Top-Dirs: `apps/matrix/apps/mobile` (90%), `package.json` (4%), `apps/matrix/package.json` (1%), `packages/qr-export/tsconfig.json` (1%), `packages/wallpaper-generator/tsconfig.json` (1%). Tags: matrix-mobile, matrix, monorepo. Session 11:28 → 18:54 (~27 aktive Min, längster Fokus 18 Min). + +## Commits + +- `fdf44ea` ✨ feat(matrix): add Expo React Native mobile client (Manalink) (+4246/-0) +- `449605c` chore(matrix): add dev:web and dev:mobile scripts to parent package (+3/-1) +- `a4a7032` chore: add matrix dev scripts to root package.json (+3/-0) +- `a9c05ca` ✨ feat(matrix-mobile): add reactions, read receipts, forward & fix DM encryption (+243/-20) +- `bc3a527` chore(matrix-mobile): configure EAS Build for TestFlight and fix type errors (+2448/-587) +- `a7acffd` fix(matrix-mobile): use string format for pnpm version in eas.json (+1/-3) +- `1976c26` fix(monorepo): add sharp to neverBuiltDependencies for EAS builds (+2/-1) diff --git a/devlog/2026-03-06/spieler.md b/devlog/2026-03-06/spieler.md new file mode 100644 index 000000000..13d9379ba --- /dev/null +++ b/devlog/2026-03-06/spieler.md @@ -0,0 +1,19 @@ +--- +date: 2026-03-06 +day: 51 +view: spieler +weekday: Freitag +commits: 7 +review: written +--- + +# Freitag, 2026-03-06 — Tag 51 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- ✨ feat(matrix): add Expo React Native mobile client (Manalink) +- ✨ feat(matrix-mobile): add reactions, read receipts, forward & fix DM encryption +- use string format for pnpm version in eas.json +- add sharp to neverBuiltDependencies for EAS builds diff --git a/devlog/2026-03-07/data.json b/devlog/2026-03-07/data.json new file mode 100644 index 000000000..e875dfb68 --- /dev/null +++ b/devlog/2026-03-07/data.json @@ -0,0 +1,130 @@ +{ + "date": "2026-03-07", + "day_number": 52, + "weekday": "Samstag", + "commits": 5, + "authors": [ + { + "name": "Till JS", + "count": 5 + } + ], + "additions": 3828, + "deletions": 2574, + "net_lines": 1254, + "files_changed": 8, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-07T07:23:56.000Z", + "last_commit_at": "2026-03-07T09:30:53.000Z", + "total_span_minutes": 127, + "active_minutes": 29, + "pauses": [ + { + "from": "08:23", + "to": "08:55", + "minutes": 32 + }, + { + "from": "08:55", + "to": "10:01", + "minutes": 66 + } + ], + "longest_focus_minutes": 30 + }, + "top_dirs": [ + { + "path": "apps/matrix/apps/mobile", + "pct": 58 + }, + { + "path": "pnpm-lock.yaml", + "pct": 25 + }, + { + "path": "apps/matrix/apps/web", + "pct": 17 + } + ], + "top_extensions": [ + { + "ext": ".json", + "count": 3 + }, + { + "ext": ".yaml", + "count": 3 + }, + { + "ext": ".tsx", + "count": 2 + }, + { + "ext": ".svelte", + "count": 2 + }, + { + "ext": ".ts", + "count": 1 + }, + { + "ext": ".js", + "count": 1 + } + ], + "tags": ["matrix-mobile", "matrix-web"], + "commits_list": [ + { + "hash": "10b880b", + "short": "feat(matrix-mobile): upgrade to Expo SDK 55", + "type": "feat", + "scope": "matrix-mobile", + "additions": 3592, + "deletions": 2399, + "timestamp": "2026-03-07T08:23:56+01:00" + }, + { + "hash": "538833a", + "short": "fix(matrix-mobile): add react-native-worklets for Reanimated 4.2 compatibility", + "type": "fix", + "scope": "matrix-mobile", + "additions": 215, + "deletions": 173, + "timestamp": "2026-03-07T08:55:42+01:00" + }, + { + "hash": "d9b3775", + "short": "fix(matrix-mobile): add react-native-css-interop as explicit dependency", + "type": "fix", + "scope": "matrix-mobile", + "additions": 4, + "deletions": 0, + "timestamp": "2026-03-07T10:01:19+01:00" + }, + { + "hash": "b840a21", + "short": "fix(matrix-mobile): block matrix-sdk-crypto-wasm in Metro resolver", + "type": "fix", + "scope": "matrix-mobile", + "additions": 8, + "deletions": 0, + "timestamp": "2026-03-07T10:24:08+01:00" + }, + { + "hash": "f784612", + "short": "fix(matrix-web): prevent chat input bar from being hidden behind PillNavigation", + "type": "fix", + "scope": "matrix-web", + "additions": 9, + "deletions": 2, + "timestamp": "2026-03-07T10:30:53+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-07/macher.md b/devlog/2026-03-07/macher.md new file mode 100644 index 000000000..cef8987db --- /dev/null +++ b/devlog/2026-03-07/macher.md @@ -0,0 +1,22 @@ +--- +date: 2026-03-07 +day: 52 +view: macher +weekday: Samstag +commits: 5 +review: written +--- + +# Samstag, 2026-03-07 — Tag 52 (Macher-Sicht) + +## Stats + +5 Commits, +3828 / −2574 LoC, 8 Files. Top-Dirs: `apps/matrix/apps/mobile` (58%), `pnpm-lock.yaml` (25%), `apps/matrix/apps/web` (17%). Tags: matrix-mobile, matrix-web. Session 07:23 → 09:30 (~29 aktive Min, längster Fokus 30 Min). + +## Commits + +- `10b880b` feat(matrix-mobile): upgrade to Expo SDK 55 (+3592/-2399) +- `538833a` fix(matrix-mobile): add react-native-worklets for Reanimated 4.2 compatibility (+215/-173) +- `d9b3775` fix(matrix-mobile): add react-native-css-interop as explicit dependency (+4/-0) +- `b840a21` fix(matrix-mobile): block matrix-sdk-crypto-wasm in Metro resolver (+8/-0) +- `f784612` fix(matrix-web): prevent chat input bar from being hidden behind PillNavigation (+9/-2) diff --git a/devlog/2026-03-07/spieler.md b/devlog/2026-03-07/spieler.md new file mode 100644 index 000000000..e205f5f1b --- /dev/null +++ b/devlog/2026-03-07/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-07 +day: 52 +view: spieler +weekday: Samstag +commits: 5 +review: written +--- + +# Samstag, 2026-03-07 — Tag 52 + +Kurzer Arbeitstag, Schwerpunkt **apps**. + +## Highlights + +- upgrade to Expo SDK 55 +- add react-native-worklets for Reanimated 4.2 compatibility +- add react-native-css-interop as explicit dependency +- block matrix-sdk-crypto-wasm in Metro resolver +- prevent chat input bar from being hidden behind PillNavigation diff --git a/devlog/2026-03-11/data.json b/devlog/2026-03-11/data.json new file mode 100644 index 000000000..1261e87d5 --- /dev/null +++ b/devlog/2026-03-11/data.json @@ -0,0 +1,120 @@ +{ + "date": "2026-03-11", + "day_number": 53, + "weekday": "Mittwoch", + "commits": 6, + "authors": [ + { + "name": "Till JS", + "count": 6 + } + ], + "additions": 499, + "deletions": 69, + "net_lines": 430, + "files_changed": 4, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-11T10:36:23.000Z", + "last_commit_at": "2026-03-11T11:13:25.000Z", + "total_span_minutes": 37, + "active_minutes": 37, + "pauses": [], + "longest_focus_minutes": 37 + }, + "top_dirs": [ + { + "path": "docs/MAC_MINI_RUNNER_SETUP.md", + "pct": 44 + }, + { + "path": ".github/workflows/cd-macmini.yml", + "pct": 33 + }, + { + "path": "apps/matrix/apps/web", + "pct": 11 + }, + { + "path": "docs/MAC_MINI_SERVER.md", + "pct": 11 + } + ], + "top_extensions": [ + { + "ext": ".md", + "count": 5 + }, + { + "ext": ".yml", + "count": 3 + }, + { + "ext": "", + "count": 1 + } + ], + "tags": ["ci", "matrix-web"], + "commits_list": [ + { + "hash": "e926a39", + "short": "feat(ci): add CD pipeline with self-hosted runner for Mac Mini auto-deploy", + "type": "feat", + "scope": "ci", + "additions": 366, + "deletions": 0, + "timestamp": "2026-03-11T11:36:23+01:00" + }, + { + "hash": "2059411", + "short": "docs: add SSH setup instructions to Mac Mini runner guide", + "type": null, + "scope": null, + "additions": 74, + "deletions": 2, + "timestamp": "2026-03-11T11:44:39+01:00" + }, + { + "hash": "3096378", + "short": "fix(ci): correct Mac Mini username from till to mana", + "type": "fix", + "scope": "ci", + "additions": 4, + "deletions": 4, + "timestamp": "2026-03-11T11:57:56+01:00" + }, + { + "hash": "67843b6", + "short": "fix(matrix-web): add missing shared-pwa package to Dockerfile", + "type": "fix", + "scope": "matrix-web", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-11T11:58:51+01:00" + }, + { + "hash": "3308a78", + "short": "docs: update Mac Mini docs with active runner status and correct SSH config", + "type": null, + "scope": null, + "additions": 53, + "deletions": 63, + "timestamp": "2026-03-11T12:10:43+01:00" + }, + { + "hash": "37fe02e", + "short": "fix(ci): add PATH env to CD workflow for docker access on Mac Mini runner", + "type": "fix", + "scope": "ci", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-11T12:13:25+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-11/macher.md b/devlog/2026-03-11/macher.md new file mode 100644 index 000000000..ce27aeaba --- /dev/null +++ b/devlog/2026-03-11/macher.md @@ -0,0 +1,23 @@ +--- +date: 2026-03-11 +day: 53 +view: macher +weekday: Mittwoch +commits: 6 +review: written +--- + +# Mittwoch, 2026-03-11 — Tag 53 (Macher-Sicht) + +## Stats + +6 Commits, +499 / −69 LoC, 4 Files. Top-Dirs: `docs/MAC_MINI_RUNNER_SETUP.md` (44%), `.github/workflows/cd-macmini.yml` (33%), `apps/matrix/apps/web` (11%), `docs/MAC_MINI_SERVER.md` (11%). Tags: ci, matrix-web. Session 10:36 → 11:13 (~37 aktive Min, längster Fokus 37 Min). + +## Commits + +- `e926a39` feat(ci): add CD pipeline with self-hosted runner for Mac Mini auto-deploy (+366/-0) +- `2059411` docs: add SSH setup instructions to Mac Mini runner guide (+74/-2) +- `3096378` fix(ci): correct Mac Mini username from till to mana (+4/-4) +- `67843b6` fix(matrix-web): add missing shared-pwa package to Dockerfile (+1/-0) +- `3308a78` docs: update Mac Mini docs with active runner status and correct SSH config (+53/-63) +- `37fe02e` fix(ci): add PATH env to CD workflow for docker access on Mac Mini runner (+1/-0) diff --git a/devlog/2026-03-11/spieler.md b/devlog/2026-03-11/spieler.md new file mode 100644 index 000000000..5aab8f1e5 --- /dev/null +++ b/devlog/2026-03-11/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-11 +day: 53 +view: spieler +weekday: Mittwoch +commits: 6 +review: written +--- + +# Mittwoch, 2026-03-11 — Tag 53 + +Dichter Tag in **docs** und Umgebung. + +## Highlights + +- add CD pipeline with self-hosted runner for Mac Mini auto-deploy +- add SSH setup instructions to Mac Mini runner guide +- correct Mac Mini username from till to mana +- add missing shared-pwa package to Dockerfile +- update Mac Mini docs with active runner status and correct SSH config diff --git a/devlog/2026-03-12/data.json b/devlog/2026-03-12/data.json new file mode 100644 index 000000000..16bfc4bce --- /dev/null +++ b/devlog/2026-03-12/data.json @@ -0,0 +1,117 @@ +{ + "date": "2026-03-12", + "day_number": 54, + "weekday": "Donnerstag", + "commits": 5, + "authors": [ + { + "name": "Till JS", + "count": 5 + } + ], + "additions": 2145, + "deletions": 814, + "net_lines": 1331, + "files_changed": 8, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-12T09:26:12.000Z", + "last_commit_at": "2026-03-12T18:08:52.000Z", + "total_span_minutes": 523, + "active_minutes": 51, + "pauses": [ + { + "from": "11:16", + "to": "19:08", + "minutes": 472 + } + ], + "longest_focus_minutes": 50 + }, + "top_dirs": [ + { + "path": "apps/matrix/apps/mobile", + "pct": 77 + }, + { + "path": "pnpm-lock.yaml", + "pct": 23 + } + ], + "top_extensions": [ + { + "ext": ".json", + "count": 6 + }, + { + "ext": ".yaml", + "count": 3 + }, + { + "ext": ".tsx", + "count": 2 + }, + { + "ext": ".sh", + "count": 1 + }, + { + "ext": ".js", + "count": 1 + } + ], + "tags": ["matrix-mobile"], + "commits_list": [ + { + "hash": "b35b9fd", + "short": "fix(matrix-mobile): align dependency versions with Expo SDK 55", + "type": "fix", + "scope": "matrix-mobile", + "additions": 2060, + "deletions": 723, + "timestamp": "2026-03-12T10:26:12+01:00" + }, + { + "hash": "2491440", + "short": "fix(matrix-mobile): migrate from expo-av to expo-audio for SDK 55 compatibility", + "type": "fix", + "scope": "matrix-mobile", + "additions": 67, + "deletions": 81, + "timestamp": "2026-03-12T10:48:20+01:00" + }, + { + "hash": "50b1a07", + "short": "fix(matrix-mobile): use sdk-55 build image instead of deprecated default", + "type": "fix", + "scope": "matrix-mobile", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-12T10:49:03+01:00" + }, + { + "hash": "713f4f7", + "short": "fix(matrix-mobile): add babel-preset-expo as explicit dependency for EAS Build", + "type": "fix", + "scope": "matrix-mobile", + "additions": 4, + "deletions": 0, + "timestamp": "2026-03-12T11:16:38+01:00" + }, + { + "hash": "402e135", + "short": "fix(matrix-mobile): add EAS Build pre-install hook for pnpm hoisted mode", + "type": "fix", + "scope": "matrix-mobile", + "additions": 13, + "deletions": 9, + "timestamp": "2026-03-12T19:08:52+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-12/macher.md b/devlog/2026-03-12/macher.md new file mode 100644 index 000000000..66d3207e9 --- /dev/null +++ b/devlog/2026-03-12/macher.md @@ -0,0 +1,22 @@ +--- +date: 2026-03-12 +day: 54 +view: macher +weekday: Donnerstag +commits: 5 +review: written +--- + +# Donnerstag, 2026-03-12 — Tag 54 (Macher-Sicht) + +## Stats + +5 Commits, +2145 / −814 LoC, 8 Files. Top-Dirs: `apps/matrix/apps/mobile` (77%), `pnpm-lock.yaml` (23%). Tags: matrix-mobile. Session 09:26 → 18:08 (~51 aktive Min, längster Fokus 50 Min). + +## Commits + +- `b35b9fd` fix(matrix-mobile): align dependency versions with Expo SDK 55 (+2060/-723) +- `2491440` fix(matrix-mobile): migrate from expo-av to expo-audio for SDK 55 compatibility (+67/-81) +- `50b1a07` fix(matrix-mobile): use sdk-55 build image instead of deprecated default (+1/-1) +- `713f4f7` fix(matrix-mobile): add babel-preset-expo as explicit dependency for EAS Build (+4/-0) +- `402e135` fix(matrix-mobile): add EAS Build pre-install hook for pnpm hoisted mode (+13/-9) diff --git a/devlog/2026-03-12/spieler.md b/devlog/2026-03-12/spieler.md new file mode 100644 index 000000000..bbb939777 --- /dev/null +++ b/devlog/2026-03-12/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-12 +day: 54 +view: spieler +weekday: Donnerstag +commits: 5 +review: written +--- + +# Donnerstag, 2026-03-12 — Tag 54 + +Kurzer Arbeitstag, Schwerpunkt **apps**. + +## Highlights + +- align dependency versions with Expo SDK 55 +- migrate from expo-av to expo-audio for SDK 55 compatibility +- use sdk-55 build image instead of deprecated default +- add babel-preset-expo as explicit dependency for EAS Build +- add EAS Build pre-install hook for pnpm hoisted mode diff --git a/devlog/2026-03-15/data.json b/devlog/2026-03-15/data.json new file mode 100644 index 000000000..14a0a748d --- /dev/null +++ b/devlog/2026-03-15/data.json @@ -0,0 +1,160 @@ +{ + "date": "2026-03-15", + "day_number": 55, + "weekday": "Sonntag", + "commits": 8, + "authors": [ + { + "name": "Till JS", + "count": 8 + } + ], + "additions": 17780, + "deletions": 8006, + "net_lines": 9774, + "files_changed": 185, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-15T07:12:42.000Z", + "last_commit_at": "2026-03-15T11:43:36.000Z", + "total_span_minutes": 271, + "active_minutes": 55, + "pauses": [ + { + "from": "09:07", + "to": "12:43", + "minutes": 216 + } + ], + "longest_focus_minutes": 55 + }, + "top_dirs": [ + { + "path": "apps/traces/apps/mobile", + "pct": 37 + }, + { + "path": "apps/calendar/apps/web", + "pct": 24 + }, + { + "path": "apps/traces/apps/backend", + "pct": 13 + }, + { + "path": "apps/calendar/apps/backend", + "pct": 6 + }, + { + "path": "pnpm-lock.yaml", + "pct": 2 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 76 + }, + { + "ext": ".tsx", + "count": 39 + }, + { + "ext": ".svelte", + "count": 25 + }, + { + "ext": ".json", + "count": 21 + }, + { + "ext": ".png", + "count": 4 + }, + { + "ext": ".js", + "count": 4 + } + ], + "tags": ["calendar", "traces", "monorepo", "picture-mobile", "ci"], + "commits_list": [ + { + "hash": "bd1178e", + "short": "feat(traces): integrate traces app into monorepo with NestJS backend and AI city guides", + "type": "feat", + "scope": "traces", + "additions": 14503, + "deletions": 708, + "timestamp": "2026-03-15T08:12:42+01:00" + }, + { + "hash": "32c6f09", + "short": "feat(calendar): add critical production security and performance fixes", + "type": "feat", + "scope": "calendar", + "additions": 239, + "deletions": 114, + "timestamp": "2026-03-15T08:36:45+01:00" + }, + { + "hash": "a39e4ca", + "short": "fix(calendar): fix Dockerfile healthcheck ports and add ENCRYPTION_KEY to prod", + "type": "fix", + "scope": "calendar", + "additions": 11, + "deletions": 10, + "timestamp": "2026-03-15T08:41:04+01:00" + }, + { + "hash": "a2569eb", + "short": "fix(monorepo): add .npmrc with node-linker=hoisted for EAS Build compatibility", + "type": "fix", + "scope": "monorepo", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-15T08:50:18+01:00" + }, + { + "hash": "d72dfa2", + "short": "fix(calendar): add @nestjs/throttler as explicit dependency", + "type": "fix", + "scope": "calendar", + "additions": 545, + "deletions": 443, + "timestamp": "2026-03-15T08:55:32+01:00" + }, + { + "hash": "2ac05ef", + "short": "fix(picture-mobile): make patch-package non-fatal in postinstall", + "type": "fix", + "scope": "picture-mobile", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-15T09:01:21+01:00" + }, + { + "hash": "7bb4b1d", + "short": "fix(ci): auto-generate CALENDAR_ENCRYPTION_KEY in prod env", + "type": "fix", + "scope": "ci", + "additions": 9, + "deletions": 0, + "timestamp": "2026-03-15T09:07:52+01:00" + }, + { + "hash": "7f5c70c", + "short": "feat(calendar): production hardening - cleanup, tests, a11y, error handling", + "type": "feat", + "scope": "calendar", + "additions": 2471, + "deletions": 6730, + "timestamp": "2026-03-15T12:43:36+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-15/macher.md b/devlog/2026-03-15/macher.md new file mode 100644 index 000000000..f7b29a45c --- /dev/null +++ b/devlog/2026-03-15/macher.md @@ -0,0 +1,25 @@ +--- +date: 2026-03-15 +day: 55 +view: macher +weekday: Sonntag +commits: 8 +review: written +--- + +# Sonntag, 2026-03-15 — Tag 55 (Macher-Sicht) + +## Stats + +8 Commits, +17780 / −8006 LoC, 185 Files. Top-Dirs: `apps/traces/apps/mobile` (37%), `apps/calendar/apps/web` (24%), `apps/traces/apps/backend` (13%), `apps/calendar/apps/backend` (6%), `pnpm-lock.yaml` (2%). Tags: calendar, traces, monorepo, picture-mobile, ci. Session 07:12 → 11:43 (~55 aktive Min, längster Fokus 55 Min). + +## Commits + +- `bd1178e` feat(traces): integrate traces app into monorepo with NestJS backend and AI city guides (+14503/-708) +- `32c6f09` feat(calendar): add critical production security and performance fixes (+239/-114) +- `a39e4ca` fix(calendar): fix Dockerfile healthcheck ports and add ENCRYPTION_KEY to prod (+11/-10) +- `a2569eb` fix(monorepo): add .npmrc with node-linker=hoisted for EAS Build compatibility (+1/-0) +- `d72dfa2` fix(calendar): add @nestjs/throttler as explicit dependency (+545/-443) +- `2ac05ef` fix(picture-mobile): make patch-package non-fatal in postinstall (+1/-1) +- `7bb4b1d` fix(ci): auto-generate CALENDAR_ENCRYPTION_KEY in prod env (+9/-0) +- `7f5c70c` feat(calendar): production hardening - cleanup, tests, a11y, error handling (+2471/-6730) diff --git a/devlog/2026-03-15/spieler.md b/devlog/2026-03-15/spieler.md new file mode 100644 index 000000000..6fdc45f4b --- /dev/null +++ b/devlog/2026-03-15/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-15 +day: 55 +view: spieler +weekday: Sonntag +commits: 8 +review: written +--- + +# Sonntag, 2026-03-15 — Tag 55 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- integrate traces app into monorepo with NestJS backend and AI city guides +- add critical production security and performance fixes +- fix Dockerfile healthcheck ports and add ENCRYPTION_KEY to prod +- add .npmrc with node-linker=hoisted for EAS Build compatibility +- add @nestjs/throttler as explicit dependency diff --git a/devlog/2026-03-17/data.json b/devlog/2026-03-17/data.json new file mode 100644 index 000000000..441136cf1 --- /dev/null +++ b/devlog/2026-03-17/data.json @@ -0,0 +1,169 @@ +{ + "date": "2026-03-17", + "day_number": 56, + "weekday": "Dienstag", + "commits": 9, + "authors": [ + { + "name": "Till JS", + "count": 9 + } + ], + "additions": 8218, + "deletions": 2875, + "net_lines": 5343, + "files_changed": 105, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-17T11:22:56.000Z", + "last_commit_at": "2026-03-17T12:26:17.000Z", + "total_span_minutes": 63, + "active_minutes": 28, + "pauses": [ + { + "from": "12:33", + "to": "13:08", + "minutes": 35 + } + ], + "longest_focus_minutes": 18 + }, + "top_dirs": [ + { + "path": "apps/mukke/apps/mobile", + "pct": 52 + }, + { + "path": "apps/matrix/apps/mobile", + "pct": 18 + }, + { + "path": "apps/calendar/apps/web", + "pct": 8 + }, + { + "path": "apps/traces/apps/mobile", + "pct": 4 + }, + { + "path": "services/mana-core-auth/src", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".tsx", + "count": 47 + }, + { + "ext": ".ts", + "count": 26 + }, + { + "ext": ".json", + "count": 14 + }, + { + "ext": ".js", + "count": 6 + }, + { + "ext": ".png", + "count": 4 + }, + { + "ext": ".gitignore", + "count": 3 + } + ], + "tags": ["auth", "calendar", "devtools", "traces", "mukke"], + "commits_list": [ + { + "hash": "14ca0ae", + "short": "fix(auth): align reset-password min length to 8 characters", + "type": "fix", + "scope": "auth", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-17T12:22:56+01:00" + }, + { + "hash": "f922d2c", + "short": "fix(auth): return proper 403 for unverified email on login", + "type": "fix", + "scope": "auth", + "additions": 9, + "deletions": 0, + "timestamp": "2026-03-17T12:33:27+01:00" + }, + { + "hash": "6e1af0d", + "short": "feat(calendar): add Playwright E2E tests for web app", + "type": "feat", + "scope": "calendar", + "additions": 2925, + "deletions": 1017, + "timestamp": "2026-03-17T13:08:09+01:00" + }, + { + "hash": "77b82c5", + "short": "fix(devtools): fix pre-commit hook - add eslint-config dep, remove type-check", + "type": "fix", + "scope": "devtools", + "additions": 0, + "deletions": 1, + "timestamp": "2026-03-17T13:08:51+01:00" + }, + { + "hash": "abbe12e", + "short": "test: verify pre-commit hook works", + "type": null, + "scope": null, + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-17T13:11:24+01:00" + }, + { + "hash": "d4c1192", + "short": "Revert \"test: verify pre-commit hook works\"", + "type": null, + "scope": null, + "additions": 0, + "deletions": 1, + "timestamp": "2026-03-17T13:11:31+01:00" + }, + { + "hash": "3dc6ec1", + "short": "fix(traces): configure EAS Build for TestFlight and fix bot-services build", + "type": "fix", + "scope": "traces", + "additions": 1028, + "deletions": 1614, + "timestamp": "2026-03-17T13:16:38+01:00" + }, + { + "hash": "6c91805", + "short": "feat(mukke): add offline-first iOS music player app", + "type": "feat", + "scope": "mukke", + "additions": 4035, + "deletions": 241, + "timestamp": "2026-03-17T13:23:58+01:00" + }, + { + "hash": "ee6e9ec", + "short": "docs(calendar): add settings audit documentation", + "type": "docs", + "scope": "calendar", + "additions": 219, + "deletions": 0, + "timestamp": "2026-03-17T13:26:17+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-17/macher.md b/devlog/2026-03-17/macher.md new file mode 100644 index 000000000..584f04aa7 --- /dev/null +++ b/devlog/2026-03-17/macher.md @@ -0,0 +1,26 @@ +--- +date: 2026-03-17 +day: 56 +view: macher +weekday: Dienstag +commits: 9 +review: written +--- + +# Dienstag, 2026-03-17 — Tag 56 (Macher-Sicht) + +## Stats + +9 Commits, +8218 / −2875 LoC, 105 Files. Top-Dirs: `apps/mukke/apps/mobile` (52%), `apps/matrix/apps/mobile` (18%), `apps/calendar/apps/web` (8%), `apps/traces/apps/mobile` (4%), `services/mana-core-auth/src` (3%). Tags: auth, calendar, devtools, traces, mukke. Session 11:22 → 12:26 (~28 aktive Min, längster Fokus 18 Min). + +## Commits + +- `14ca0ae` fix(auth): align reset-password min length to 8 characters (+1/-1) +- `f922d2c` fix(auth): return proper 403 for unverified email on login (+9/-0) +- `6e1af0d` feat(calendar): add Playwright E2E tests for web app (+2925/-1017) +- `77b82c5` fix(devtools): fix pre-commit hook - add eslint-config dep, remove type-check (+0/-1) +- `abbe12e` test: verify pre-commit hook works (+1/-0) +- `d4c1192` Revert "test: verify pre-commit hook works" (+0/-1) +- `3dc6ec1` fix(traces): configure EAS Build for TestFlight and fix bot-services build (+1028/-1614) +- `6c91805` feat(mukke): add offline-first iOS music player app (+4035/-241) +- `ee6e9ec` docs(calendar): add settings audit documentation (+219/-0) diff --git a/devlog/2026-03-17/spieler.md b/devlog/2026-03-17/spieler.md new file mode 100644 index 000000000..a0ef6df4d --- /dev/null +++ b/devlog/2026-03-17/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-17 +day: 56 +view: spieler +weekday: Dienstag +commits: 9 +review: written +--- + +# Dienstag, 2026-03-17 — Tag 56 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- align reset-password min length to 8 characters +- return proper 403 for unverified email on login +- add Playwright E2E tests for web app +- fix pre-commit hook - add eslint-config dep, remove type-check +- Revert "test: verify pre-commit hook works" diff --git a/devlog/2026-03-18/data.json b/devlog/2026-03-18/data.json new file mode 100644 index 000000000..882841b71 --- /dev/null +++ b/devlog/2026-03-18/data.json @@ -0,0 +1,127 @@ +{ + "date": "2026-03-18", + "day_number": 57, + "weekday": "Mittwoch", + "commits": 5, + "authors": [ + { + "name": "Till JS", + "count": 5 + } + ], + "additions": 4111, + "deletions": 1739, + "net_lines": 2372, + "files_changed": 30, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-18T15:55:52.000Z", + "last_commit_at": "2026-03-18T16:41:53.000Z", + "total_span_minutes": 46, + "active_minutes": 46, + "pauses": [], + "longest_focus_minutes": 46 + }, + "top_dirs": [ + { + "path": "apps/contacts/apps/web", + "pct": 42 + }, + { + "path": "apps/todo/apps/web", + "pct": 21 + }, + { + "path": "pnpm-lock.yaml", + "pct": 9 + }, + { + "path": "apps/calendar/apps/web", + "pct": 9 + }, + { + "path": "apps/contacts/apps/backend", + "pct": 9 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 19 + }, + { + "ext": ".json", + "count": 4 + }, + { + "ext": ".svelte", + "count": 3 + }, + { + "ext": ".yaml", + "count": 3 + }, + { + "ext": ".html", + "count": 2 + }, + { + "ext": ".yml", + "count": 1 + } + ], + "tags": ["contacts", "todo"], + "commits_list": [ + { + "hash": "5d86753", + "short": "fix(contacts): add missing PUBLIC_TODO_BACKEND_URL to contacts-web production config", + "type": "fix", + "scope": "contacts", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-18T16:55:52+01:00" + }, + { + "hash": "a5d2701", + "short": "fix(contacts): add default title and remove unused network view remnants", + "type": "fix", + "scope": "contacts", + "additions": 601, + "deletions": 545, + "timestamp": "2026-03-18T17:05:45+01:00" + }, + { + "hash": "8debd2b", + "short": "test(contacts): add unit tests for web app (62 tests)", + "type": "test", + "scope": "contacts", + "additions": 626, + "deletions": 1, + "timestamp": "2026-03-18T17:14:19+01:00" + }, + { + "hash": "8f71ed1", + "short": "fix(todo): add default title, remove unused d3-force, add unit tests (39 tests)", + "type": "fix", + "scope": "todo", + "additions": 410, + "deletions": 526, + "timestamp": "2026-03-18T17:28:52+01:00" + }, + { + "hash": "37a6991", + "short": "test: expand test coverage across calendar, contacts, and todo apps", + "type": null, + "scope": null, + "additions": 2473, + "deletions": 667, + "timestamp": "2026-03-18T17:41:53+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-18/macher.md b/devlog/2026-03-18/macher.md new file mode 100644 index 000000000..c797c25dc --- /dev/null +++ b/devlog/2026-03-18/macher.md @@ -0,0 +1,22 @@ +--- +date: 2026-03-18 +day: 57 +view: macher +weekday: Mittwoch +commits: 5 +review: written +--- + +# Mittwoch, 2026-03-18 — Tag 57 (Macher-Sicht) + +## Stats + +5 Commits, +4111 / −1739 LoC, 30 Files. Top-Dirs: `apps/contacts/apps/web` (42%), `apps/todo/apps/web` (21%), `pnpm-lock.yaml` (9%), `apps/calendar/apps/web` (9%), `apps/contacts/apps/backend` (9%). Tags: contacts, todo. Session 15:55 → 16:41 (~46 aktive Min, längster Fokus 46 Min). + +## Commits + +- `5d86753` fix(contacts): add missing PUBLIC_TODO_BACKEND_URL to contacts-web production config (+1/-0) +- `a5d2701` fix(contacts): add default title and remove unused network view remnants (+601/-545) +- `8debd2b` test(contacts): add unit tests for web app (62 tests) (+626/-1) +- `8f71ed1` fix(todo): add default title, remove unused d3-force, add unit tests (39 tests) (+410/-526) +- `37a6991` test: expand test coverage across calendar, contacts, and todo apps (+2473/-667) diff --git a/devlog/2026-03-18/spieler.md b/devlog/2026-03-18/spieler.md new file mode 100644 index 000000000..3169a58a4 --- /dev/null +++ b/devlog/2026-03-18/spieler.md @@ -0,0 +1,18 @@ +--- +date: 2026-03-18 +day: 57 +view: spieler +weekday: Mittwoch +commits: 5 +review: written +--- + +# Mittwoch, 2026-03-18 — Tag 57 + +Kurzer Arbeitstag, Schwerpunkt **apps**. + +## Highlights + +- add missing PUBLIC_TODO_BACKEND_URL to contacts-web production config +- add default title and remove unused network view remnants +- add default title, remove unused d3-force, add unit tests (39 tests) diff --git a/devlog/2026-03-19/data.json b/devlog/2026-03-19/data.json new file mode 100644 index 000000000..f8258acdd --- /dev/null +++ b/devlog/2026-03-19/data.json @@ -0,0 +1,783 @@ +{ + "date": "2026-03-19", + "day_number": 58, + "weekday": "Donnerstag", + "commits": 75, + "authors": [ + { + "name": "Till JS", + "count": 75 + } + ], + "additions": 49268, + "deletions": 9876, + "net_lines": 39392, + "files_changed": 833, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-19T08:02:35.000Z", + "last_commit_at": "2026-03-19T21:39:50.000Z", + "total_span_minutes": 817, + "active_minutes": 382, + "pauses": [ + { + "from": "10:35", + "to": "11:12", + "minutes": 37 + }, + { + "from": "11:27", + "to": "12:09", + "minutes": 42 + }, + { + "from": "12:54", + "to": "13:30", + "minutes": 35 + }, + { + "from": "13:30", + "to": "14:41", + "minutes": 71 + }, + { + "from": "16:38", + "to": "20:48", + "minutes": 250 + } + ], + "longest_focus_minutes": 117 + }, + "top_dirs": [ + { + "path": "apps/mukke/apps/backend", + "pct": 9 + }, + { + "path": "apps/mukke/apps/web", + "pct": 9 + }, + { + "path": "apps/manacore/apps/landing", + "pct": 8 + }, + { + "path": "apps/context/apps/web", + "pct": 6 + }, + { + "path": "{apps => apps-archived}/mukke/apps", + "pct": 6 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 477 + }, + { + "ext": ".svelte", + "count": 167 + }, + { + "ext": ".json", + "count": 148 + }, + { + "ext": ".md", + "count": 86 + }, + { + "ext": "", + "count": 36 + }, + { + "ext": ".tsx", + "count": 31 + } + ], + "tags": ["mukke", "audits", "auth", "docker", "manacore"], + "commits_list": [ + { + "hash": "7f4edb3", + "short": "fix: upgrade calendar jest to v30 and add rate limiting to contacts/todo backends", + "type": null, + "scope": null, + "additions": 165, + "deletions": 13, + "timestamp": "2026-03-19T09:02:35+01:00" + }, + { + "hash": "ea4b585", + "short": "feat(context): add NestJS backend, PostgreSQL database, and migrate web app from Supabase to API", + "type": "feat", + "scope": "context", + "additions": 4018, + "deletions": 338, + "timestamp": "2026-03-19T09:28:01+01:00" + }, + { + "hash": "7a56699", + "short": "feat(mukke): rename LightWrite to Mukke and add music library, player, playlists", + "type": "feat", + "scope": "mukke", + "additions": 12397, + "deletions": 66, + "timestamp": "2026-03-19T09:55:56+01:00" + }, + { + "hash": "8e4b331", + "short": "fix(calendar,contacts,todo): pre-launch architecture audit fixes", + "type": "fix", + "scope": "calendar,contacts,todo", + "additions": 795, + "deletions": 425, + "timestamp": "2026-03-19T10:00:08+01:00" + }, + { + "hash": "0e496f7", + "short": "fix(auth): add missing reset-password page to 13 apps", + "type": "fix", + "scope": "auth", + "additions": 2797, + "deletions": 0, + "timestamp": "2026-03-19T10:13:18+01:00" + }, + { + "hash": "313db76", + "short": "chore: remove old lightwrite directory (renamed to mukke)", + "type": null, + "scope": null, + "additions": 0, + "deletions": 6766, + "timestamp": "2026-03-19T10:15:11+01:00" + }, + { + "hash": "8c9d01a", + "short": "feat(audits): add production readiness scoring system with 19 app audits", + "type": "feat", + "scope": "audits", + "additions": 2123, + "deletions": 0, + "timestamp": "2026-03-19T10:20:18+01:00" + }, + { + "hash": "83d0b64", + "short": "docs(devlog): add 9 missing devlogs from Feb 16 to Mar 18", + "type": "docs", + "scope": "devlog", + "additions": 2105, + "deletions": 0, + "timestamp": "2026-03-19T10:35:46+01:00" + }, + { + "hash": "135c636", + "short": "fix(calendar,contacts,todo): second round of pre-launch audit fixes", + "type": "fix", + "scope": "calendar,contacts,todo", + "additions": 134, + "deletions": 45, + "timestamp": "2026-03-19T11:12:20+01:00" + }, + { + "hash": "30ee708", + "short": "feat(branding): add Context and Mukke app branding", + "type": "feat", + "scope": "branding", + "additions": 37, + "deletions": 1, + "timestamp": "2026-03-19T11:15:09+01:00" + }, + { + "hash": "2ea7bb7", + "short": "feat(context): add SvelteKit web app with Svelte 5 runes", + "type": "feat", + "scope": "context", + "additions": 3904, + "deletions": 0, + "timestamp": "2026-03-19T11:15:20+01:00" + }, + { + "hash": "f53e460", + "short": "test(calendar): add 69 backend unit tests for event-tags, sync, and notifications", + "type": "test", + "scope": "calendar", + "additions": 1201, + "deletions": 0, + "timestamp": "2026-03-19T11:26:21+01:00" + }, + { + "hash": "5345e19", + "short": "test(contacts): add 34 backend unit tests for tags, notes, activities, duplicates", + "type": "test", + "scope": "contacts", + "additions": 833, + "deletions": 0, + "timestamp": "2026-03-19T11:26:24+01:00" + }, + { + "hash": "42c266b", + "short": "test(todo): add 54 backend unit tests for kanban boards and reminders", + "type": "test", + "scope": "todo", + "additions": 905, + "deletions": 0, + "timestamp": "2026-03-19T11:26:26+01:00" + }, + { + "hash": "eda1bd7", + "short": "feat(ux): add error boundaries and expand i18n to 5 languages", + "type": "feat", + "scope": "ux", + "additions": 988, + "deletions": 1, + "timestamp": "2026-03-19T11:26:30+01:00" + }, + { + "hash": "66e2cdc", + "short": "docs(audits): update calendar, contacts, todo scores to 90", + "type": "docs", + "scope": "audits", + "additions": 25, + "deletions": 25, + "timestamp": "2026-03-19T11:27:07+01:00" + }, + { + "hash": "c15bd05", + "short": "test(calendar,contacts,todo): add controller unit tests for all 3 apps", + "type": "test", + "scope": "calendar,contacts,todo", + "additions": 702, + "deletions": 0, + "timestamp": "2026-03-19T12:09:01+01:00" + }, + { + "hash": "24a6efa", + "short": "fix(mukke): add patches dir to Dockerfiles for pnpm install", + "type": "fix", + "scope": "mukke", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-19T12:11:50+01:00" + }, + { + "hash": "7d0b2db", + "short": "docs(audits): update scores after controller tests and i18n expansion", + "type": "docs", + "scope": "audits", + "additions": 15, + "deletions": 15, + "timestamp": "2026-03-19T12:13:13+01:00" + }, + { + "hash": "271836d", + "short": "test(contacts,todo): add Playwright E2E test suites", + "type": "test", + "scope": "contacts,todo", + "additions": 1003, + "deletions": 2, + "timestamp": "2026-03-19T12:24:50+01:00" + }, + { + "hash": "4c342a5", + "short": "docs(audits): update contacts and todo scores after E2E tests", + "type": "docs", + "scope": "audits", + "additions": 10, + "deletions": 10, + "timestamp": "2026-03-19T12:25:23+01:00" + }, + { + "hash": "217c486", + "short": "feat(swagger): add OpenAPI documentation to calendar, contacts, and todo backends", + "type": "feat", + "scope": "swagger", + "additions": 94, + "deletions": 69, + "timestamp": "2026-03-19T12:38:28+01:00" + }, + { + "hash": "9fc237d", + "short": "feat(a11y): add skip-to-content links and ARIA labels to calendar, contacts, todo", + "type": "feat", + "scope": "a11y", + "additions": 40, + "deletions": 2, + "timestamp": "2026-03-19T12:41:23+01:00" + }, + { + "hash": "212ec16", + "short": "docs(audits): update scores after Swagger and accessibility improvements", + "type": "docs", + "scope": "audits", + "additions": 15, + "deletions": 15, + "timestamp": "2026-03-19T12:42:12+01:00" + }, + { + "hash": "54c1326", + "short": "fix(mukke): lint fixes, rate limiting, DB indexes, and prod config", + "type": "fix", + "scope": "mukke", + "additions": 327, + "deletions": 142, + "timestamp": "2026-03-19T12:54:49+01:00" + }, + { + "hash": "b11e128", + "short": "feat(error-tracking): add GlitchTip integration with shared error-tracking package", + "type": "feat", + "scope": "error-tracking", + "additions": 1337, + "deletions": 297, + "timestamp": "2026-03-19T13:30:13+01:00" + }, + { + "hash": "34c6b9c", + "short": "feat(mukke): add ID3 tag extraction, editor UI, and tag writing", + "type": "feat", + "scope": "mukke", + "additions": 512, + "deletions": 16, + "timestamp": "2026-03-19T14:41:18+01:00" + }, + { + "hash": "3da6cf2", + "short": "docs(mukke): add ID3 tag endpoints to CLAUDE.md", + "type": "docs", + "scope": "mukke", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-19T14:42:44+01:00" + }, + { + "hash": "8f0c747", + "short": "fix(chat,picture,mukke): production readiness audit fixes and tests", + "type": "fix", + "scope": "chat,picture,mukke", + "additions": 4240, + "deletions": 325, + "timestamp": "2026-03-19T14:46:29+01:00" + }, + { + "hash": "87c61f4", + "short": "fix(glitchtip): add REDIS_URL with auth to GlitchTip containers", + "type": "fix", + "scope": "glitchtip", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-19T14:57:50+01:00" + }, + { + "hash": "b34e787", + "short": "fix(mukke): wire up resend verification email on login and register pages", + "type": "fix", + "scope": "mukke", + "additions": 2, + "deletions": 4, + "timestamp": "2026-03-19T14:57:56+01:00" + }, + { + "hash": "a35014a", + "short": "docs: add GlitchTip error tracking documentation", + "type": null, + "scope": null, + "additions": 173, + "deletions": 0, + "timestamp": "2026-03-19T15:01:08+01:00" + }, + { + "hash": "08d19ab", + "short": "feat(error-tracking): add GLITCHTIP_DSN to calendar, contacts, todo backends", + "type": "feat", + "scope": "error-tracking", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-19T15:03:24+01:00" + }, + { + "hash": "817ccfe", + "short": "fix(auth): improve email verification error detection in signIn", + "type": "fix", + "scope": "auth", + "additions": 31, + "deletions": 1, + "timestamp": "2026-03-19T15:05:04+01:00" + }, + { + "hash": "2c21f6c", + "short": "fix(auth): use --no-frozen-lockfile in Dockerfile", + "type": "fix", + "scope": "auth", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-19T15:08:15+01:00" + }, + { + "hash": "baf96cb", + "short": "fix(auth): copy patches dir in Dockerfile to fix pnpm install", + "type": "fix", + "scope": "auth", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-19T15:09:03+01:00" + }, + { + "hash": "3b89310", + "short": "fix(auth): scope pnpm install to auth service in Dockerfile", + "type": "fix", + "scope": "auth", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-19T15:10:08+01:00" + }, + { + "hash": "01cd7e9", + "short": "docs(audits): update chat, picture, mukke audit reports with improved scores", + "type": "docs", + "scope": "audits", + "additions": 125, + "deletions": 62, + "timestamp": "2026-03-19T15:24:05+01:00" + }, + { + "hash": "dcaa3c5", + "short": "fix(docker): add shared-error-tracking and shared-nestjs-setup to backend Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 12, + "deletions": 4, + "timestamp": "2026-03-19T15:28:30+01:00" + }, + { + "hash": "8a88838", + "short": "fix(docker): add patches directory to backend Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 3, + "deletions": 3, + "timestamp": "2026-03-19T15:30:34+01:00" + }, + { + "hash": "c1f6326", + "short": "feat(mukke): add month/day fields and auto-set date from file timestamp", + "type": "feat", + "scope": "mukke", + "additions": 119, + "deletions": 24, + "timestamp": "2026-03-19T15:31:50+01:00" + }, + { + "hash": "0077041", + "short": "fix(docker): correct build order for shared packages in backend Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 7, + "deletions": 10, + "timestamp": "2026-03-19T15:41:16+01:00" + }, + { + "hash": "3e7fd8f", + "short": "fix(todo): add shared-nestjs-setup dependency to todo backend", + "type": "fix", + "scope": "todo", + "additions": 143, + "deletions": 147, + "timestamp": "2026-03-19T15:45:41+01:00" + }, + { + "hash": "1d14892", + "short": "refactor(mukke): replace custom sidebar with shared PillNavigation", + "type": "refactor", + "scope": "mukke", + "additions": 295, + "deletions": 356, + "timestamp": "2026-03-19T15:49:59+01:00" + }, + { + "hash": "08cc1ee", + "short": "fix(mukke): add shared-splitscreen to web Dockerfile", + "type": "fix", + "scope": "mukke", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-19T15:51:30+01:00" + }, + { + "hash": "bd7129a", + "short": "fix(glitchtip): use correct DSN format without hyphens in keys", + "type": "fix", + "scope": "glitchtip", + "additions": 6, + "deletions": 6, + "timestamp": "2026-03-19T15:51:54+01:00" + }, + { + "hash": "97d5b13", + "short": "feat(versioning): add semantic versioning and changesets to all apps", + "type": "feat", + "scope": "versioning", + "additions": 267, + "deletions": 78, + "timestamp": "2026-03-19T16:20:18+01:00" + }, + { + "hash": "442a584", + "short": "feat(mukke): add settings, themes, feedback, and help pages", + "type": "feat", + "scope": "mukke", + "additions": 174, + "deletions": 0, + "timestamp": "2026-03-19T16:26:21+01:00" + }, + { + "hash": "4faa0e2", + "short": "fix(mukke): add feedback packages to web Dockerfile", + "type": "fix", + "scope": "mukke", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-19T16:26:49+01:00" + }, + { + "hash": "47b9e41", + "short": "feat(error-tracking): add GlitchTip integration to all 15 remaining backends", + "type": "feat", + "scope": "error-tracking", + "additions": 120, + "deletions": 0, + "timestamp": "2026-03-19T16:38:03+01:00" + }, + { + "hash": "789ce0a", + "short": "feat(glitchtip): enable open user registration", + "type": "feat", + "scope": "glitchtip", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-19T20:48:05+01:00" + }, + { + "hash": "e848fa5", + "short": "feat(mukke): display album cover art in library, playlists, and song lists", + "type": "feat", + "scope": "mukke", + "additions": 376, + "deletions": 58, + "timestamp": "2026-03-19T20:59:45+01:00" + }, + { + "hash": "ac9ce55", + "short": "refactor(nav): move feedback pill into user dropdown across all apps", + "type": "refactor", + "scope": "nav", + "additions": 18, + "deletions": 17, + "timestamp": "2026-03-19T21:00:38+01:00" + }, + { + "hash": "bc5b468", + "short": "feat(audits): add monitoring tools section with GlitchTip guest credentials", + "type": "feat", + "scope": "audits", + "additions": 51, + "deletions": 0, + "timestamp": "2026-03-19T21:04:13+01:00" + }, + { + "hash": "47f4f89", + "short": "fix: update GlitchTip guest password to meet 8-char minimum", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-19T21:06:56+01:00" + }, + { + "hash": "afbf5ef", + "short": "fix(nav): add missing Phosphor icons for Mukke, Context, Todo, and Storage", + "type": "fix", + "scope": "nav", + "additions": 17, + "deletions": 0, + "timestamp": "2026-03-19T21:07:54+01:00" + }, + { + "hash": "f264e9f", + "short": "feat(grafana): add GlitchTip error tracking dashboard", + "type": "feat", + "scope": "grafana", + "additions": 189, + "deletions": 0, + "timestamp": "2026-03-19T21:14:09+01:00" + }, + { + "hash": "1486277", + "short": "feat(audits): add login credentials for all monitoring tools", + "type": "feat", + "scope": "audits", + "additions": 4, + "deletions": 2, + "timestamp": "2026-03-19T21:17:07+01:00" + }, + { + "hash": "bb69f78", + "short": "fix(auth): add missing trusted origins for cross-app SSO", + "type": "fix", + "scope": "auth", + "additions": 319, + "deletions": 12, + "timestamp": "2026-03-19T21:17:34+01:00" + }, + { + "hash": "764f451", + "short": "feat(audits): use Umami public share link instead of login credentials", + "type": "feat", + "scope": "audits", + "additions": 2, + "deletions": 2, + "timestamp": "2026-03-19T21:21:25+01:00" + }, + { + "hash": "aa8197b", + "short": "docs(audit): update ManaCore production readiness audit from 65 to 80", + "type": "docs", + "scope": "audit", + "additions": 142, + "deletions": 34, + "timestamp": "2026-03-19T21:21:35+01:00" + }, + { + "hash": "32fba2b", + "short": "docs: update monitoring and error tracking documentation", + "type": null, + "scope": null, + "additions": 45, + "deletions": 1, + "timestamp": "2026-03-19T21:25:02+01:00" + }, + { + "hash": "135b65b", + "short": "test(manacore): add 48 unit tests for dashboard, API client, and credits", + "type": "test", + "scope": "manacore", + "additions": 579, + "deletions": 11, + "timestamp": "2026-03-19T21:26:51+01:00" + }, + { + "hash": "322f551", + "short": "docs(auth): document SSO checklist for adding new apps", + "type": "docs", + "scope": "auth", + "additions": 15, + "deletions": 0, + "timestamp": "2026-03-19T21:32:35+01:00" + }, + { + "hash": "a536439", + "short": "feat(manacore): add error boundary and 10 more unit tests (score 82→84)", + "type": "feat", + "scope": "manacore", + "additions": 302, + "deletions": 12, + "timestamp": "2026-03-19T21:34:06+01:00" + }, + { + "hash": "64c9d49", + "short": "test(manacore): add widget service tests for contacts, storage, todo (score 84→86)", + "type": "test", + "scope": "manacore", + "additions": 424, + "deletions": 8, + "timestamp": "2026-03-19T21:36:29+01:00" + }, + { + "hash": "77995f2", + "short": "test(manacore): add calendar, chat, zitare service tests (score 86→88)", + "type": "test", + "scope": "manacore", + "additions": 429, + "deletions": 8, + "timestamp": "2026-03-19T21:43:59+01:00" + }, + { + "hash": "2d22d14", + "short": "feat(error-tracking): complete GlitchTip integration for all backends", + "type": "feat", + "scope": "error-tracking", + "additions": 26, + "deletions": 1, + "timestamp": "2026-03-19T21:47:27+01:00" + }, + { + "hash": "14b6a89", + "short": "fix(docker): add patches, shared-error-tracking, shared-nestjs-setup to all Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 118, + "deletions": 0, + "timestamp": "2026-03-19T21:58:29+01:00" + }, + { + "hash": "effa57f", + "short": "feat(manacore): add Mukke, Presi, Context dashboard widgets", + "type": "feat", + "scope": "manacore", + "additions": 734, + "deletions": 3, + "timestamp": "2026-03-19T21:59:47+01:00" + }, + { + "hash": "f7df8e9", + "short": "feat(auth): add audit logging, account lockout, and API key rate limiting", + "type": "feat", + "scope": "auth", + "additions": 700, + "deletions": 68, + "timestamp": "2026-03-19T22:09:58+01:00" + }, + { + "hash": "e84e163", + "short": "test(presi): add 72 tests, rate limiting, error boundary (score 55→81)", + "type": "test", + "scope": "presi", + "additions": 1947, + "deletions": 279, + "timestamp": "2026-03-19T22:24:38+01:00" + }, + { + "hash": "4104bf1", + "short": "refactor(docker): switch nutriphi and skilltree to local builds", + "type": "refactor", + "scope": "docker", + "additions": 8, + "deletions": 2, + "timestamp": "2026-03-19T22:29:59+01:00" + }, + { + "hash": "fd0516f", + "short": "feat(presi): add DB indexes, Swagger docs, hardened validation (score 81→86)", + "type": "feat", + "scope": "presi", + "additions": 223, + "deletions": 86, + "timestamp": "2026-03-19T22:35:11+01:00" + }, + { + "hash": "482bef7", + "short": "docs(devlog): add 2026-03-19 security hardening & error tracking", + "type": "docs", + "scope": "devlog", + "additions": 382, + "deletions": 0, + "timestamp": "2026-03-19T22:39:50+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-19/macher.md b/devlog/2026-03-19/macher.md new file mode 100644 index 000000000..cb5255adc --- /dev/null +++ b/devlog/2026-03-19/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-19 +day: 58 +view: macher +weekday: Donnerstag +commits: 75 +review: written +--- + +# Donnerstag, 2026-03-19 — Tag 58 (Macher-Sicht) + +## Stats + +75 Commits, +49268 / −9876 LoC, 833 Files. Top-Dirs: `apps/mukke/apps/backend` (9%), `apps/mukke/apps/web` (9%), `apps/manacore/apps/landing` (8%), `apps/context/apps/web` (6%), `{apps => apps-archived}/mukke/apps` (6%). Tags: mukke, audits, auth, docker, manacore. Session 08:02 → 21:39 (~382 aktive Min, längster Fokus 117 Min). + +## Commits + +- `7f4edb3` fix: upgrade calendar jest to v30 and add rate limiting to contacts/todo backends (+165/-13) +- `ea4b585` feat(context): add NestJS backend, PostgreSQL database, and migrate web app from Supabase to API (+4018/-338) +- `7a56699` feat(mukke): rename LightWrite to Mukke and add music library, player, playlists (+12397/-66) +- `8e4b331` fix(calendar,contacts,todo): pre-launch architecture audit fixes (+795/-425) +- `0e496f7` fix(auth): add missing reset-password page to 13 apps (+2797/-0) +- `313db76` chore: remove old lightwrite directory (renamed to mukke) (+0/-6766) +- `8c9d01a` feat(audits): add production readiness scoring system with 19 app audits (+2123/-0) +- `83d0b64` docs(devlog): add 9 missing devlogs from Feb 16 to Mar 18 (+2105/-0) +- `135c636` fix(calendar,contacts,todo): second round of pre-launch audit fixes (+134/-45) +- `30ee708` feat(branding): add Context and Mukke app branding (+37/-1) +- `2ea7bb7` feat(context): add SvelteKit web app with Svelte 5 runes (+3904/-0) +- `f53e460` test(calendar): add 69 backend unit tests for event-tags, sync, and notifications (+1201/-0) +- `5345e19` test(contacts): add 34 backend unit tests for tags, notes, activities, duplicates (+833/-0) +- `42c266b` test(todo): add 54 backend unit tests for kanban boards and reminders (+905/-0) +- `eda1bd7` feat(ux): add error boundaries and expand i18n to 5 languages (+988/-1) +- `66e2cdc` docs(audits): update calendar, contacts, todo scores to 90 (+25/-25) +- `c15bd05` test(calendar,contacts,todo): add controller unit tests for all 3 apps (+702/-0) +- `24a6efa` fix(mukke): add patches dir to Dockerfiles for pnpm install (+2/-0) +- `7d0b2db` docs(audits): update scores after controller tests and i18n expansion (+15/-15) +- `271836d` test(contacts,todo): add Playwright E2E test suites (+1003/-2) + +_… plus 55 weitere Commits._ diff --git a/devlog/2026-03-19/spieler.md b/devlog/2026-03-19/spieler.md new file mode 100644 index 000000000..d0426c462 --- /dev/null +++ b/devlog/2026-03-19/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-19 +day: 58 +view: spieler +weekday: Donnerstag +commits: 75 +review: written +--- + +# Donnerstag, 2026-03-19 — Tag 58 + +Großer Sprint-Tag mit Schwerpunkt **apps** (75 Commits). + +## Highlights + +- upgrade calendar jest to v30 and add rate limiting to contacts/todo backends +- add NestJS backend, PostgreSQL database, and migrate web app from Supabase to API +- rename LightWrite to Mukke and add music library, player, playlists +- pre-launch architecture audit fixes +- add missing reset-password page to 13 apps diff --git a/devlog/2026-03-20/data.json b/devlog/2026-03-20/data.json new file mode 100644 index 000000000..ebab95465 --- /dev/null +++ b/devlog/2026-03-20/data.json @@ -0,0 +1,561 @@ +{ + "date": "2026-03-20", + "day_number": 59, + "weekday": "Freitag", + "commits": 52, + "authors": [ + { + "name": "Till JS", + "count": 52 + } + ], + "additions": 13375, + "deletions": 5388, + "net_lines": 7987, + "files_changed": 201, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-20T15:38:05.000Z", + "last_commit_at": "2026-03-20T20:13:03.000Z", + "total_span_minutes": 275, + "active_minutes": 163, + "pauses": [ + { + "from": "17:41", + "to": "18:46", + "minutes": 65 + }, + { + "from": "20:01", + "to": "20:48", + "minutes": 47 + } + ], + "longest_focus_minutes": 75 + }, + "top_dirs": [ + { + "path": "apps/calendar/apps/web", + "pct": 22 + }, + { + "path": "packages/shared-storage/src", + "pct": 11 + }, + { + "path": "apps/mukke/apps/web", + "pct": 6 + }, + { + "path": "apps/contacts/apps/backend", + "pct": 3 + }, + { + "path": "apps/picture/apps/web", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 92 + }, + { + "ext": "", + "count": 80 + }, + { + "ext": ".svelte", + "count": 36 + }, + { + "ext": ".yml", + "count": 16 + }, + { + "ext": ".js", + "count": 11 + }, + { + "ext": ".json", + "count": 9 + } + ], + "tags": ["calendar", "storage", "picture", "auth", "docker"], + "commits_list": [ + { + "hash": "a183640", + "short": "refactor(docker): switch calendar-web to local build", + "type": "refactor", + "scope": "docker", + "additions": 4, + "deletions": 1, + "timestamp": "2026-03-20T16:38:05+01:00" + }, + { + "hash": "58bdf98", + "short": "fix(calendar): add patches dir to web Dockerfile", + "type": "fix", + "scope": "calendar", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-20T16:38:47+01:00" + }, + { + "hash": "98d1d1c", + "short": "fix(calendar): add shared-pwa package to web Dockerfile", + "type": "fix", + "scope": "calendar", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-20T16:40:24+01:00" + }, + { + "hash": "93e1c7d", + "short": "refactor(calendar): simplify settings from 41 to 18 persisted preferences", + "type": "refactor", + "scope": "calendar", + "additions": 303, + "deletions": 478, + "timestamp": "2026-03-20T16:40:47+01:00" + }, + { + "hash": "26d8eb0", + "short": "fix(calendar): add shared-app-onboarding to web Dockerfile", + "type": "fix", + "scope": "calendar", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-20T16:45:55+01:00" + }, + { + "hash": "a5940ab", + "short": "feat(mukke): clickable songs in library, player error handling & cover fallbacks", + "type": "feat", + "scope": "mukke", + "additions": 125, + "deletions": 9, + "timestamp": "2026-03-20T17:05:07+01:00" + }, + { + "hash": "3f91c46", + "short": "feat(infra): add deploy tracking with PostgreSQL, Pushgateway & Grafana dashboard", + "type": "feat", + "scope": "infra", + "additions": 928, + "deletions": 33, + "timestamp": "2026-03-20T17:08:03+01:00" + }, + { + "hash": "dea632c", + "short": "fix(caddy): update all reverse proxy ports to match docker containers", + "type": "fix", + "scope": "caddy", + "additions": 13, + "deletions": 13, + "timestamp": "2026-03-20T17:09:09+01:00" + }, + { + "hash": "67326b7", + "short": "fix(shared-api-client): add useRuntimeUrl flag for cross-app clients", + "type": "fix", + "scope": "shared-api-client", + "additions": 7, + "deletions": 1, + "timestamp": "2026-03-20T17:11:31+01:00" + }, + { + "hash": "70b1c44", + "short": "test(mukke): add vitest setup and 34 frontend tests for player & library stores", + "type": "test", + "scope": "mukke", + "additions": 658, + "deletions": 2, + "timestamp": "2026-03-20T17:16:47+01:00" + }, + { + "hash": "e124869", + "short": "fix(infra): make deploy tracking Bash 3.x compatible (macOS runner)", + "type": "fix", + "scope": "infra", + "additions": 42, + "deletions": 46, + "timestamp": "2026-03-20T17:27:31+01:00" + }, + { + "hash": "e7fb207", + "short": "fix(docker): add cross-app CORS origins to todo-backend", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-20T17:30:45+01:00" + }, + { + "hash": "d3a3bc7", + "short": "refactor(calendar): remove tag groups hierarchy and legacy drag-drop composables", + "type": "refactor", + "scope": "calendar", + "additions": 213, + "deletions": 2281, + "timestamp": "2026-03-20T17:33:57+01:00" + }, + { + "hash": "42fe39c", + "short": "fix(infra): fix deploy tracking dashboard datasource UIDs and instant queries", + "type": "fix", + "scope": "infra", + "additions": 6, + "deletions": 0, + "timestamp": "2026-03-20T17:35:41+01:00" + }, + { + "hash": "1057d69", + "short": "ci(cd): add mukke-backend and mukke-web to CD pipeline", + "type": "ci", + "scope": "cd", + "additions": 9, + "deletions": 1, + "timestamp": "2026-03-20T17:39:49+01:00" + }, + { + "hash": "43a2226", + "short": "perf(auth): optimize Dockerfile from ~740MB to ~350MB", + "type": "perf", + "scope": "auth", + "additions": 18, + "deletions": 19, + "timestamp": "2026-03-20T17:41:05+01:00" + }, + { + "hash": "ab42c26", + "short": "feat(calendar): add CalDAV/iCal sync UI and recurring events support", + "type": "feat", + "scope": "calendar", + "additions": 1720, + "deletions": 2, + "timestamp": "2026-03-20T18:46:33+01:00" + }, + { + "hash": "41fbd2f", + "short": "feat(storage): improve shared-storage robustness, scalability, and DX", + "type": "feat", + "scope": "storage", + "additions": 1315, + "deletions": 648, + "timestamp": "2026-03-20T18:52:34+01:00" + }, + { + "hash": "9858723", + "short": "perf(auth): optimize Dockerfile from ~740MB to ~320MB", + "type": "perf", + "scope": "auth", + "additions": 10, + "deletions": 3, + "timestamp": "2026-03-20T18:55:24+01:00" + }, + { + "hash": "eb859c1", + "short": "fix(auth): use SameSite=None for cross-subdomain SSO", + "type": "fix", + "scope": "auth", + "additions": 4, + "deletions": 2, + "timestamp": "2026-03-20T18:55:34+01:00" + }, + { + "hash": "5c9e16f", + "short": "fix(calendar): integrate recurrence dialog and external calendars into UI", + "type": "fix", + "scope": "calendar", + "additions": 142, + "deletions": 6, + "timestamp": "2026-03-20T19:22:28+01:00" + }, + { + "hash": "7206023", + "short": "fix(shared-auth): set SSO session cookie on login", + "type": "fix", + "scope": "shared-auth", + "additions": 13, + "deletions": 0, + "timestamp": "2026-03-20T19:27:33+01:00" + }, + { + "hash": "01c4d3a", + "short": "feat(storage): cleanup buckets, add file-size validation and bulk delete", + "type": "feat", + "scope": "storage", + "additions": 106, + "deletions": 8, + "timestamp": "2026-03-20T19:27:42+01:00" + }, + { + "hash": "511b51e", + "short": "test(calendar): add tests for CalDAV sync API, external calendars store, and recurrence", + "type": "test", + "scope": "calendar", + "additions": 73, + "deletions": 43, + "timestamp": "2026-03-20T19:31:34+01:00" + }, + { + "hash": "822e753", + "short": "feat(shared): add DevBuildBadge component and getBuildDefines() helper", + "type": "feat", + "scope": "shared", + "additions": 105, + "deletions": 2, + "timestamp": "2026-03-20T19:34:21+01:00" + }, + { + "hash": "b0e5a9c", + "short": "feat(storage): add upload hooks, metrics integration, and presigned multipart", + "type": "feat", + "scope": "storage", + "additions": 708, + "deletions": 28, + "timestamp": "2026-03-20T19:36:46+01:00" + }, + { + "hash": "152fa5f", + "short": "feat(storage): add deleteByPrefix, copy, getMetadata and prod lifecycle rules", + "type": "feat", + "scope": "storage", + "additions": 191, + "deletions": 0, + "timestamp": "2026-03-20T19:40:17+01:00" + }, + { + "hash": "70671e2", + "short": "perf(docker): prune devDeps and cleanup node_modules in all backend Dockerfiles", + "type": "perf", + "scope": "docker", + "additions": 35, + "deletions": 0, + "timestamp": "2026-03-20T19:42:01+01:00" + }, + { + "hash": "aeabdca", + "short": "refactor(calendar): extract WeekView inline logic into composables (1600→903 LOC)", + "type": "refactor", + "scope": "calendar", + "additions": 339, + "deletions": 797, + "timestamp": "2026-03-20T19:43:19+01:00" + }, + { + "hash": "8c2aa26", + "short": "perf(auth): replace bcrypt with bcryptjs (pure JS, no native build tools)", + "type": "perf", + "scope": "auth", + "additions": 314, + "deletions": 146, + "timestamp": "2026-03-20T19:46:16+01:00" + }, + { + "hash": "8511c2c", + "short": "feat(cd): add Matrix notification on deploy failure", + "type": "feat", + "scope": "cd", + "additions": 2684, + "deletions": 0, + "timestamp": "2026-03-20T19:47:53+01:00" + }, + { + "hash": "5832326", + "short": "docs(storage): update README with complete API documentation", + "type": "docs", + "scope": "storage", + "additions": 189, + "deletions": 95, + "timestamp": "2026-03-20T19:49:16+01:00" + }, + { + "hash": "2eb280c", + "short": "test(calendar): add composable unit tests and WeekView E2E interaction tests", + "type": "test", + "scope": "calendar", + "additions": 591, + "deletions": 0, + "timestamp": "2026-03-20T19:51:23+01:00" + }, + { + "hash": "d9ccb5e", + "short": "feat(games): add whopixels hosting at whopxl.mana.how", + "type": "feat", + "scope": "games", + "additions": 348, + "deletions": 77, + "timestamp": "2026-03-20T19:57:50+01:00" + }, + { + "hash": "ecec3d5", + "short": "fix(contacts): optimize storage usage and fix photo orphan bug", + "type": "fix", + "scope": "contacts", + "additions": 68, + "deletions": 45, + "timestamp": "2026-03-20T20:01:43+01:00" + }, + { + "hash": "6806ef8", + "short": "feat(calendar): add reminder UI for creating and managing event reminders", + "type": "feat", + "scope": "calendar", + "additions": 443, + "deletions": 3, + "timestamp": "2026-03-20T20:48:26+01:00" + }, + { + "hash": "1ffcfa0", + "short": "docs(calendar): mark reminders as implemented in complexity audit", + "type": "docs", + "scope": "calendar", + "additions": 8, + "deletions": 3, + "timestamp": "2026-03-20T20:48:44+01:00" + }, + { + "hash": "3ac976f", + "short": "feat(picture): migrate web app from Netlify to Docker/Mac Mini deployment", + "type": "feat", + "scope": "picture", + "additions": 77, + "deletions": 37, + "timestamp": "2026-03-20T20:50:12+01:00" + }, + { + "hash": "b38e5ae", + "short": "fix(contacts): clean up orphaned photos on duplicate merge", + "type": "fix", + "scope": "contacts", + "additions": 19, + "deletions": 2, + "timestamp": "2026-03-20T20:50:44+01:00" + }, + { + "hash": "56c3086", + "short": "test(calendar): add reminders API client tests", + "type": "test", + "scope": "calendar", + "additions": 83, + "deletions": 0, + "timestamp": "2026-03-20T20:52:23+01:00" + }, + { + "hash": "15cde62", + "short": "refactor(mukke): optimize storage usage in song and beat services", + "type": "refactor", + "scope": "mukke", + "additions": 41, + "deletions": 37, + "timestamp": "2026-03-20T20:53:23+01:00" + }, + { + "hash": "887b60c", + "short": "fix(picture): fix health endpoint and port consistency for Docker deployment", + "type": "fix", + "scope": "picture", + "additions": 9, + "deletions": 7, + "timestamp": "2026-03-20T20:54:27+01:00" + }, + { + "hash": "69eac20", + "short": "refactor(picture): optimize storage service", + "type": "refactor", + "scope": "picture", + "additions": 30, + "deletions": 37, + "timestamp": "2026-03-20T20:56:44+01:00" + }, + { + "hash": "e5ba591", + "short": "refactor(storage): optimize cloud drive storage service", + "type": "refactor", + "scope": "storage", + "additions": 22, + "deletions": 9, + "timestamp": "2026-03-20T20:57:18+01:00" + }, + { + "hash": "6476521", + "short": "fix(picture): add patches directory to web Dockerfile", + "type": "fix", + "scope": "picture", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-20T20:57:38+01:00" + }, + { + "hash": "e64c298", + "short": "refactor(auth,planta): optimize storage usage", + "type": "refactor", + "scope": "auth,planta", + "additions": 61, + "deletions": 107, + "timestamp": "2026-03-20T20:59:14+01:00" + }, + { + "hash": "e57b645", + "short": "fix(picture): add missing PUBLIC_GOOGLE/APPLE_CLIENT_ID build args to Dockerfile", + "type": "fix", + "scope": "picture", + "additions": 4, + "deletions": 0, + "timestamp": "2026-03-20T20:59:34+01:00" + }, + { + "hash": "9df908d", + "short": "refactor(calendar): simplify UnifiedBar and extract ViewCarousel gestures", + "type": "refactor", + "scope": "calendar", + "additions": 292, + "deletions": 338, + "timestamp": "2026-03-20T21:04:25+01:00" + }, + { + "hash": "3bace08", + "short": "feat(calendar): add calendar sharing UI and service error boundaries", + "type": "feat", + "scope": "calendar", + "additions": 818, + "deletions": 2, + "timestamp": "2026-03-20T21:11:15+01:00" + }, + { + "hash": "72ee82e", + "short": "docs(calendar): update complexity audit — all items resolved", + "type": "docs", + "scope": "calendar", + "additions": 18, + "deletions": 12, + "timestamp": "2026-03-20T21:11:55+01:00" + }, + { + "hash": "1f9714d", + "short": "docs(devlog): add 2026-03-20 cross-app SSO & infrastructure fixes", + "type": "docs", + "scope": "devlog", + "additions": 150, + "deletions": 0, + "timestamp": "2026-03-20T21:12:33+01:00" + }, + { + "hash": "df2bf9e", + "short": "fix(deploy): fix image size measurement in deploy metrics", + "type": "fix", + "scope": "deploy", + "additions": 12, + "deletions": 7, + "timestamp": "2026-03-20T21:13:03+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-20/macher.md b/devlog/2026-03-20/macher.md new file mode 100644 index 000000000..4a7c1d7f9 --- /dev/null +++ b/devlog/2026-03-20/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-20 +day: 59 +view: macher +weekday: Freitag +commits: 52 +review: written +--- + +# Freitag, 2026-03-20 — Tag 59 (Macher-Sicht) + +## Stats + +52 Commits, +13375 / −5388 LoC, 201 Files. Top-Dirs: `apps/calendar/apps/web` (22%), `packages/shared-storage/src` (11%), `apps/mukke/apps/web` (6%), `apps/contacts/apps/backend` (3%), `apps/picture/apps/web` (3%). Tags: calendar, storage, picture, auth, docker. Session 15:38 → 20:13 (~163 aktive Min, längster Fokus 75 Min). + +## Commits + +- `a183640` refactor(docker): switch calendar-web to local build (+4/-1) +- `58bdf98` fix(calendar): add patches dir to web Dockerfile (+3/-0) +- `98d1d1c` fix(calendar): add shared-pwa package to web Dockerfile (+1/-0) +- `93e1c7d` refactor(calendar): simplify settings from 41 to 18 persisted preferences (+303/-478) +- `26d8eb0` fix(calendar): add shared-app-onboarding to web Dockerfile (+1/-0) +- `a5940ab` feat(mukke): clickable songs in library, player error handling & cover fallbacks (+125/-9) +- `3f91c46` feat(infra): add deploy tracking with PostgreSQL, Pushgateway & Grafana dashboard (+928/-33) +- `dea632c` fix(caddy): update all reverse proxy ports to match docker containers (+13/-13) +- `67326b7` fix(shared-api-client): add useRuntimeUrl flag for cross-app clients (+7/-1) +- `70b1c44` test(mukke): add vitest setup and 34 frontend tests for player & library stores (+658/-2) +- `e124869` fix(infra): make deploy tracking Bash 3.x compatible (macOS runner) (+42/-46) +- `e7fb207` fix(docker): add cross-app CORS origins to todo-backend (+1/-1) +- `d3a3bc7` refactor(calendar): remove tag groups hierarchy and legacy drag-drop composables (+213/-2281) +- `42fe39c` fix(infra): fix deploy tracking dashboard datasource UIDs and instant queries (+6/-0) +- `1057d69` ci(cd): add mukke-backend and mukke-web to CD pipeline (+9/-1) +- `43a2226` perf(auth): optimize Dockerfile from ~740MB to ~350MB (+18/-19) +- `ab42c26` feat(calendar): add CalDAV/iCal sync UI and recurring events support (+1720/-2) +- `41fbd2f` feat(storage): improve shared-storage robustness, scalability, and DX (+1315/-648) +- `9858723` perf(auth): optimize Dockerfile from ~740MB to ~320MB (+10/-3) +- `eb859c1` fix(auth): use SameSite=None for cross-subdomain SSO (+4/-2) + +_… plus 32 weitere Commits._ diff --git a/devlog/2026-03-20/spieler.md b/devlog/2026-03-20/spieler.md new file mode 100644 index 000000000..5a2491292 --- /dev/null +++ b/devlog/2026-03-20/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-20 +day: 59 +view: spieler +weekday: Freitag +commits: 52 +review: written +--- + +# Freitag, 2026-03-20 — Tag 59 + +Großer Sprint-Tag mit Schwerpunkt **apps** (52 Commits). + +## Highlights + +- add patches dir to web Dockerfile +- add shared-pwa package to web Dockerfile +- add shared-app-onboarding to web Dockerfile +- clickable songs in library, player error handling & cover fallbacks +- add deploy tracking with PostgreSQL, Pushgateway & Grafana dashboard diff --git a/devlog/2026-03-21/data.json b/devlog/2026-03-21/data.json new file mode 100644 index 000000000..bb90905ab --- /dev/null +++ b/devlog/2026-03-21/data.json @@ -0,0 +1,440 @@ +{ + "date": "2026-03-21", + "day_number": 60, + "weekday": "Samstag", + "commits": 38, + "authors": [ + { + "name": "Till JS", + "count": 38 + } + ], + "additions": 13207, + "deletions": 4844, + "net_lines": 8363, + "files_changed": 229, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-21T09:48:31.000Z", + "last_commit_at": "2026-03-21T20:26:05.000Z", + "total_span_minutes": 638, + "active_minutes": 118, + "pauses": [ + { + "from": "11:31", + "to": "12:15", + "minutes": 44 + }, + { + "from": "13:17", + "to": "15:26", + "minutes": 129 + }, + { + "from": "15:30", + "to": "21:17", + "minutes": 347 + } + ], + "longest_focus_minutes": 62 + }, + "top_dirs": [ + { + "path": "apps/storage/apps/web", + "pct": 20 + }, + { + "path": "apps/picture/apps/web", + "pct": 9 + }, + { + "path": "apps/storage/apps/backend", + "pct": 9 + }, + { + "path": "apps/contacts/apps/web", + "pct": 6 + }, + { + "path": "games/whopixels/js", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 123 + }, + { + "ext": ".svelte", + "count": 70 + }, + { + "ext": ".json", + "count": 19 + }, + { + "ext": ".js", + "count": 17 + }, + { + "ext": ".md", + "count": 12 + }, + { + "ext": "", + "count": 10 + } + ], + "tags": ["storage", "calendar", "mukke", "contacts", "whopixels"], + "commits_list": [ + { + "hash": "683a4c5", + "short": "feat(docker): add shared NestJS builder base image", + "type": "feat", + "scope": "docker", + "additions": 112, + "deletions": 317, + "timestamp": "2026-03-21T10:48:31+01:00" + }, + { + "hash": "5b4da89", + "short": "feat(ci): add format check and tests to PR validation pipeline", + "type": "feat", + "scope": "ci", + "additions": 7, + "deletions": 1, + "timestamp": "2026-03-21T10:51:11+01:00" + }, + { + "hash": "8a0ab38", + "short": "chore: fix wallpaper-generator test script and update CLAUDE.md test count", + "type": null, + "scope": null, + "additions": 5, + "deletions": 5, + "timestamp": "2026-03-21T10:54:21+01:00" + }, + { + "hash": "4770e15", + "short": "fix(calendar): improve onboarding UX — clearer progress, better selection, apply preferences", + "type": "fix", + "scope": "calendar", + "additions": 66, + "deletions": 75, + "timestamp": "2026-03-21T11:00:28+01:00" + }, + { + "hash": "b51f18a", + "short": "feat(mukke): add right-click context menu to library songs", + "type": "feat", + "scope": "mukke", + "additions": 70, + "deletions": 0, + "timestamp": "2026-03-21T11:05:12+01:00" + }, + { + "hash": "c3927c8", + "short": "fix(calendar): use 1-hour default duration for grid click instead of 15 minutes", + "type": "fix", + "scope": "calendar", + "additions": 5, + "deletions": 2, + "timestamp": "2026-03-21T11:05:15+01:00" + }, + { + "hash": "7a1ae12", + "short": "feat(mukke): support all common audio formats for upload and playback", + "type": "feat", + "scope": "mukke", + "additions": 38, + "deletions": 6, + "timestamp": "2026-03-21T11:09:25+01:00" + }, + { + "hash": "99091ec", + "short": "docs+test: add audio format docs and shared-storage utils tests", + "type": null, + "scope": null, + "additions": 95, + "deletions": 0, + "timestamp": "2026-03-21T11:12:58+01:00" + }, + { + "hash": "afa9f99", + "short": "feat(contacts): add \"My Card\" self-contact — auto-created on first load", + "type": "feat", + "scope": "contacts", + "additions": 185, + "deletions": 21, + "timestamp": "2026-03-21T11:14:44+01:00" + }, + { + "hash": "a336728", + "short": "feat(calendar): add recurrence selector to quick event overlay", + "type": "feat", + "scope": "calendar", + "additions": 37, + "deletions": 0, + "timestamp": "2026-03-21T11:19:04+01:00" + }, + { + "hash": "debd55f", + "short": "feat(calendar): implement UnifiedBar — replace standalone bottom bars with layered system", + "type": "feat", + "scope": "calendar", + "additions": 491, + "deletions": 726, + "timestamp": "2026-03-21T11:19:37+01:00" + }, + { + "hash": "bbc5919", + "short": "fix(mukke): redirect root page to login instead of showing landing page", + "type": "fix", + "scope": "mukke", + "additions": 6, + "deletions": 113, + "timestamp": "2026-03-21T11:19:52+01:00" + }, + { + "hash": "78526f1", + "short": "fix(storage): improve SEO, accessibility, and best practices for higher audit score", + "type": "fix", + "scope": "storage", + "additions": 182, + "deletions": 73, + "timestamp": "2026-03-21T11:22:29+01:00" + }, + { + "hash": "16fe3aa", + "short": "feat(contacts): add onboarding wizard — sort preference, import option, tips", + "type": "feat", + "scope": "contacts", + "additions": 572, + "deletions": 446, + "timestamp": "2026-03-21T11:31:38+01:00" + }, + { + "hash": "481a88d", + "short": "feat(todo): add onboarding wizard — default view, display mode, tips", + "type": "feat", + "scope": "todo", + "additions": 282, + "deletions": 4, + "timestamp": "2026-03-21T12:15:08+01:00" + }, + { + "hash": "a17a3a7", + "short": "feat(storage): add tests, file preview modal, and fix Dockerfile ports", + "type": "feat", + "scope": "storage", + "additions": 2093, + "deletions": 8, + "timestamp": "2026-03-21T12:16:28+01:00" + }, + { + "hash": "ec8847c", + "short": "fix(search): correct health check URL to /api/v1/health", + "type": "fix", + "scope": "search", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-21T12:32:08+01:00" + }, + { + "hash": "62a13d2", + "short": "fix(contacts): stop pruning 'docs' dirs — breaks googleapis sub-modules", + "type": "fix", + "scope": "contacts", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-21T12:35:17+01:00" + }, + { + "hash": "a6a5265", + "short": "docs(storage): update audit score 55 → 70 after tests, preview, and a11y improvements", + "type": "docs", + "scope": "storage", + "additions": 47, + "deletions": 23, + "timestamp": "2026-03-21T12:39:43+01:00" + }, + { + "hash": "fc5dfe2", + "short": "feat: show build date/time on login screen across all apps", + "type": null, + "scope": null, + "additions": 210, + "deletions": 34, + "timestamp": "2026-03-21T12:40:57+01:00" + }, + { + "hash": "403b1c7", + "short": "feat(storage): add controller tests, Caddy config, and PWA improvements", + "type": "feat", + "scope": "storage", + "additions": 944, + "deletions": 18, + "timestamp": "2026-03-21T12:48:11+01:00" + }, + { + "hash": "a12cbeb", + "short": "docs(storage): update audit score 70 → 73, status beta → production", + "type": "docs", + "scope": "storage", + "additions": 30, + "deletions": 28, + "timestamp": "2026-03-21T12:48:54+01:00" + }, + { + "hash": "4bbe4a2", + "short": "feat(storage): add drag & drop file moving and Playwright E2E tests", + "type": "feat", + "scope": "storage", + "additions": 534, + "deletions": 6, + "timestamp": "2026-03-21T13:16:29+01:00" + }, + { + "hash": "161f105", + "short": "docs(storage): update audit score 73 → 75 with drag & drop and E2E tests", + "type": "docs", + "scope": "storage", + "additions": 23, + "deletions": 23, + "timestamp": "2026-03-21T13:17:22+01:00" + }, + { + "hash": "c0c11c3", + "short": "feat(whopixels): major refactor with 20 improvements across architecture, gameplay, UX, security, and i18n", + "type": "feat", + "scope": "whopixels", + "additions": 2888, + "deletions": 1451, + "timestamp": "2026-03-21T15:26:40+01:00" + }, + { + "hash": "c26a48e", + "short": "fix(picture): resolve critical issues — dead stores, type-check, test coverage", + "type": "fix", + "scope": "picture", + "additions": 1073, + "deletions": 1315, + "timestamp": "2026-03-21T15:27:58+01:00" + }, + { + "hash": "9dc5570", + "short": "feat(whopixels): update Phaser from 3.55.2 to 3.80.1", + "type": "feat", + "scope": "whopixels", + "additions": 13, + "deletions": 17, + "timestamp": "2026-03-21T15:29:24+01:00" + }, + { + "hash": "2ffd259", + "short": "feat(storage): add animations, drag feedback, integration tests, and optimize Dockerfile", + "type": "feat", + "scope": "storage", + "additions": 753, + "deletions": 61, + "timestamp": "2026-03-21T15:30:10+01:00" + }, + { + "hash": "512627b", + "short": "docs(storage): update audit score 75 → 78 with animations and integration tests", + "type": "docs", + "scope": "storage", + "additions": 12, + "deletions": 12, + "timestamp": "2026-03-21T15:30:50+01:00" + }, + { + "hash": "b735f14", + "short": "feat(picture): PWA support, API timeouts, batch fix, credit/history endpoints", + "type": "feat", + "scope": "picture", + "additions": 225, + "deletions": 39, + "timestamp": "2026-03-21T21:17:44+01:00" + }, + { + "hash": "190b64c", + "short": "fix(glitchtip): use python3 for health check — wget not in image", + "type": "fix", + "scope": "glitchtip", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-21T21:18:12+01:00" + }, + { + "hash": "c7b105b", + "short": "docs: add devlog for 2026-03-21 — WhoPixels refactor, Storage animations, Picture hardening", + "type": null, + "scope": null, + "additions": 241, + "deletions": 0, + "timestamp": "2026-03-21T21:22:20+01:00" + }, + { + "hash": "9085ddd", + "short": "feat(storage): add rate limiting, file versioning endpoints, and version tests", + "type": "feat", + "scope": "storage", + "additions": 387, + "deletions": 4, + "timestamp": "2026-03-21T21:23:28+01:00" + }, + { + "hash": "05a595d", + "short": "feat(storage): add file version history modal with upload support", + "type": "feat", + "scope": "storage", + "additions": 423, + "deletions": 0, + "timestamp": "2026-03-21T21:23:57+01:00" + }, + { + "hash": "7641035", + "short": "docs(storage): update audit score 78 → 82 with versioning and rate limiting", + "type": "docs", + "scope": "storage", + "additions": 13, + "deletions": 13, + "timestamp": "2026-03-21T21:24:35+01:00" + }, + { + "hash": "7d2eb33", + "short": "feat(infra): add Picture/Storage to Caddyfile and Windows GPU server setup plan", + "type": "feat", + "scope": "infra", + "additions": 709, + "deletions": 0, + "timestamp": "2026-03-21T21:25:33+01:00" + }, + { + "hash": "8537d7c", + "short": "test(calendar): add tests for sync API, recurrence store, and external calendars", + "type": "test", + "scope": "calendar", + "additions": 430, + "deletions": 0, + "timestamp": "2026-03-21T21:25:38+01:00" + }, + { + "hash": "ac3269b", + "short": "chore: update pnpm-lock.yaml", + "type": null, + "scope": null, + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-21T21:26:05+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-21/macher.md b/devlog/2026-03-21/macher.md new file mode 100644 index 000000000..53a1a89d3 --- /dev/null +++ b/devlog/2026-03-21/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-21 +day: 60 +view: macher +weekday: Samstag +commits: 38 +review: written +--- + +# Samstag, 2026-03-21 — Tag 60 (Macher-Sicht) + +## Stats + +38 Commits, +13207 / −4844 LoC, 229 Files. Top-Dirs: `apps/storage/apps/web` (20%), `apps/picture/apps/web` (9%), `apps/storage/apps/backend` (9%), `apps/contacts/apps/web` (6%), `games/whopixels/js` (5%). Tags: storage, calendar, mukke, contacts, whopixels. Session 09:48 → 20:26 (~118 aktive Min, längster Fokus 62 Min). + +## Commits + +- `683a4c5` feat(docker): add shared NestJS builder base image (+112/-317) +- `5b4da89` feat(ci): add format check and tests to PR validation pipeline (+7/-1) +- `8a0ab38` chore: fix wallpaper-generator test script and update CLAUDE.md test count (+5/-5) +- `4770e15` fix(calendar): improve onboarding UX — clearer progress, better selection, apply preferences (+66/-75) +- `b51f18a` feat(mukke): add right-click context menu to library songs (+70/-0) +- `c3927c8` fix(calendar): use 1-hour default duration for grid click instead of 15 minutes (+5/-2) +- `7a1ae12` feat(mukke): support all common audio formats for upload and playback (+38/-6) +- `99091ec` docs+test: add audio format docs and shared-storage utils tests (+95/-0) +- `afa9f99` feat(contacts): add "My Card" self-contact — auto-created on first load (+185/-21) +- `a336728` feat(calendar): add recurrence selector to quick event overlay (+37/-0) +- `debd55f` feat(calendar): implement UnifiedBar — replace standalone bottom bars with layered system (+491/-726) +- `bbc5919` fix(mukke): redirect root page to login instead of showing landing page (+6/-113) +- `78526f1` fix(storage): improve SEO, accessibility, and best practices for higher audit score (+182/-73) +- `16fe3aa` feat(contacts): add onboarding wizard — sort preference, import option, tips (+572/-446) +- `481a88d` feat(todo): add onboarding wizard — default view, display mode, tips (+282/-4) +- `a17a3a7` feat(storage): add tests, file preview modal, and fix Dockerfile ports (+2093/-8) +- `ec8847c` fix(search): correct health check URL to /api/v1/health (+1/-1) +- `62a13d2` fix(contacts): stop pruning 'docs' dirs — breaks googleapis sub-modules (+1/-1) +- `a6a5265` docs(storage): update audit score 55 → 70 after tests, preview, and a11y improvements (+47/-23) +- `fc5dfe2` feat: show build date/time on login screen across all apps (+210/-34) + +_… plus 18 weitere Commits._ diff --git a/devlog/2026-03-21/spieler.md b/devlog/2026-03-21/spieler.md new file mode 100644 index 000000000..370d90831 --- /dev/null +++ b/devlog/2026-03-21/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-21 +day: 60 +view: spieler +weekday: Samstag +commits: 38 +review: written +--- + +# Samstag, 2026-03-21 — Tag 60 + +Großer Sprint-Tag mit Schwerpunkt **apps** (38 Commits). + +## Highlights + +- add shared NestJS builder base image +- add format check and tests to PR validation pipeline +- improve onboarding UX — clearer progress, better selection, apply preferences +- add right-click context menu to library songs +- use 1-hour default duration for grid click instead of 15 minutes diff --git a/devlog/2026-03-22/data.json b/devlog/2026-03-22/data.json new file mode 100644 index 000000000..a1a1a7dbf --- /dev/null +++ b/devlog/2026-03-22/data.json @@ -0,0 +1,325 @@ +{ + "date": "2026-03-22", + "day_number": 61, + "weekday": "Sonntag", + "commits": 27, + "authors": [ + { + "name": "Till JS", + "count": 27 + } + ], + "additions": 5493, + "deletions": 2856, + "net_lines": 2637, + "files_changed": 191, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-22T16:40:45.000Z", + "last_commit_at": "2026-03-22T18:16:47.000Z", + "total_span_minutes": 96, + "active_minutes": 96, + "pauses": [], + "longest_focus_minutes": 96 + }, + "top_dirs": [ + { + "path": "apps/mukke/apps/web", + "pct": 8 + }, + { + "path": "apps/storage/apps/web", + "pct": 6 + }, + { + "path": "apps/todo/apps/web", + "pct": 6 + }, + { + "path": "apps/manacore/apps/web", + "pct": 5 + }, + { + "path": "apps/calendar/apps/web", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 83 + }, + { + "ext": ".svelte", + "count": 36 + }, + { + "ext": ".json", + "count": 32 + }, + { + "ext": ".astro", + "count": 27 + }, + { + "ext": ".md", + "count": 20 + }, + { + "ext": ".html", + "count": 19 + } + ], + "tags": ["analytics", "storage", "mukke", "manacore", "calendar"], + "commits_list": [ + { + "hash": "fa116df", + "short": "feat(manacore): add App Hub as new default home page", + "type": "feat", + "scope": "manacore", + "additions": 508, + "deletions": 3, + "timestamp": "2026-03-22T17:40:45+01:00" + }, + { + "hash": "28d8cfc", + "short": "fix(manacore): copy patches directory in Dockerfile for pnpm install", + "type": "fix", + "scope": "manacore", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-22T17:43:17+01:00" + }, + { + "hash": "79becc9", + "short": "fix(calendar): add auth gate to prevent 401 errors and fix CSP for analytics", + "type": "fix", + "scope": "calendar", + "additions": 118, + "deletions": 106, + "timestamp": "2026-03-22T17:49:07+01:00" + }, + { + "hash": "6b2b703", + "short": "fix(calendar): scroll to current time and show time label on indicator", + "type": "fix", + "scope": "calendar", + "additions": 24, + "deletions": 9, + "timestamp": "2026-03-22T17:52:32+01:00" + }, + { + "hash": "97b6100", + "short": "fix(storage): use runtime env vars instead of hardcoded localhost URLs", + "type": "fix", + "scope": "storage", + "additions": 80, + "deletions": 2, + "timestamp": "2026-03-22T17:59:36+01:00" + }, + { + "hash": "93a7c90", + "short": "feat(storage): add storage to CD pipeline and fix Docker config", + "type": "feat", + "scope": "storage", + "additions": 21, + "deletions": 13, + "timestamp": "2026-03-22T18:02:40+01:00" + }, + { + "hash": "9bdb997", + "short": "refactor(pwa): replace custom service workers with Vite PWA plugin and centralize offline page", + "type": "refactor", + "scope": "pwa", + "additions": 262, + "deletions": 2023, + "timestamp": "2026-03-22T18:16:43+01:00" + }, + { + "hash": "50d084b", + "short": "fix(todo): add missing patches directory to web Dockerfile", + "type": "fix", + "scope": "todo", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-22T18:24:10+01:00" + }, + { + "hash": "db2a0e6", + "short": "fix(storage): copy patches directory in Dockerfile for pnpm install", + "type": "fix", + "scope": "storage", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-22T18:24:59+01:00" + }, + { + "hash": "87516bb", + "short": "fix(storage): add Umami analytics injection to hooks.server.ts", + "type": "fix", + "scope": "storage", + "additions": 2, + "deletions": 1, + "timestamp": "2026-03-22T18:25:10+01:00" + }, + { + "hash": "e01b740", + "short": "refactor(analytics): centralize Umami tracking via env vars and shared utility", + "type": "refactor", + "scope": "analytics", + "additions": 319, + "deletions": 52, + "timestamp": "2026-03-22T18:27:31+01:00" + }, + { + "hash": "0786e6b", + "short": "feat(mukke): add real-time frequency bars visualizer", + "type": "feat", + "scope": "mukke", + "additions": 284, + "deletions": 3, + "timestamp": "2026-03-22T18:30:33+01:00" + }, + { + "hash": "2d7ca7e", + "short": "docs(mukke): add comprehensive visualizer system concept", + "type": "docs", + "scope": "mukke", + "additions": 490, + "deletions": 0, + "timestamp": "2026-03-22T18:34:42+01:00" + }, + { + "hash": "2c26fce", + "short": "fix: replace all manacore.app URLs with mana.how", + "type": null, + "scope": null, + "additions": 100, + "deletions": 103, + "timestamp": "2026-03-22T18:40:37+01:00" + }, + { + "hash": "f043db2", + "short": "feat(analytics): add automatic auth event tracking via shared-auth", + "type": "feat", + "scope": "analytics", + "additions": 44, + "deletions": 2, + "timestamp": "2026-03-22T18:44:03+01:00" + }, + { + "hash": "6c140c1", + "short": "docs(mukke): add visualizer alternatives and technology comparison", + "type": "docs", + "scope": "mukke", + "additions": 417, + "deletions": 0, + "timestamp": "2026-03-22T18:46:58+01:00" + }, + { + "hash": "7954416", + "short": "feat(analytics): add key action tracking to todo, calendar, chat, contacts", + "type": "feat", + "scope": "analytics", + "additions": 12, + "deletions": 0, + "timestamp": "2026-03-22T18:48:18+01:00" + }, + { + "hash": "f5ee3aa", + "short": "feat(security): add unified CSP headers to all 17 web apps", + "type": "feat", + "scope": "security", + "additions": 246, + "deletions": 58, + "timestamp": "2026-03-22T18:53:40+01:00" + }, + { + "hash": "cc9679d", + "short": "refactor(analytics): centralize landing page Umami tracking via env vars", + "type": "refactor", + "scope": "analytics", + "additions": 216, + "deletions": 25, + "timestamp": "2026-03-22T19:03:02+01:00" + }, + { + "hash": "45c11a1", + "short": "feat(analytics): add event tracking to picture, storage, clock, mukke, planta", + "type": "feat", + "scope": "analytics", + "additions": 12, + "deletions": 0, + "timestamp": "2026-03-22T19:07:06+01:00" + }, + { + "hash": "420926a", + "short": "fix(infra): add no-cache headers for PWA files in Caddyfile", + "type": "fix", + "scope": "infra", + "additions": 17, + "deletions": 0, + "timestamp": "2026-03-22T19:10:49+01:00" + }, + { + "hash": "287bbed", + "short": "feat(analytics): add automatic CTA tracking to all 10 landing pages", + "type": "feat", + "scope": "analytics", + "additions": 155, + "deletions": 0, + "timestamp": "2026-03-22T19:13:24+01:00" + }, + { + "hash": "a4e41ee", + "short": "fix(storage): add shared-pwa package to web Dockerfile", + "type": "fix", + "scope": "storage", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-22T19:14:07+01:00" + }, + { + "hash": "7cad407", + "short": "feat(error-tracking): add browser error tracking to all 19 SvelteKit web apps", + "type": "feat", + "scope": "error-tracking", + "additions": 443, + "deletions": 5, + "timestamp": "2026-03-22T19:16:21+01:00" + }, + { + "hash": "42b32cb", + "short": "feat(mukke): add pluggable visualizer system with Butterchurn and Particle modes", + "type": "feat", + "scope": "mukke", + "additions": 577, + "deletions": 3, + "timestamp": "2026-03-22T19:16:34+01:00" + }, + { + "hash": "04487ba", + "short": "docs(observability): add observability gaps analysis document", + "type": "docs", + "scope": "observability", + "additions": 468, + "deletions": 0, + "timestamp": "2026-03-22T19:16:42+01:00" + }, + { + "hash": "c438583", + "short": "chore: update pnpm-lock.yaml", + "type": null, + "scope": null, + "additions": 672, + "deletions": 448, + "timestamp": "2026-03-22T19:16:47+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-22/macher.md b/devlog/2026-03-22/macher.md new file mode 100644 index 000000000..6663e6a6d --- /dev/null +++ b/devlog/2026-03-22/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-22 +day: 61 +view: macher +weekday: Sonntag +commits: 27 +review: written +--- + +# Sonntag, 2026-03-22 — Tag 61 (Macher-Sicht) + +## Stats + +27 Commits, +5493 / −2856 LoC, 191 Files. Top-Dirs: `apps/mukke/apps/web` (8%), `apps/storage/apps/web` (6%), `apps/todo/apps/web` (6%), `apps/manacore/apps/web` (5%), `apps/calendar/apps/web` (5%). Tags: analytics, storage, mukke, manacore, calendar. Session 16:40 → 18:16 (~96 aktive Min, längster Fokus 96 Min). + +## Commits + +- `fa116df` feat(manacore): add App Hub as new default home page (+508/-3) +- `28d8cfc` fix(manacore): copy patches directory in Dockerfile for pnpm install (+1/-0) +- `79becc9` fix(calendar): add auth gate to prevent 401 errors and fix CSP for analytics (+118/-106) +- `6b2b703` fix(calendar): scroll to current time and show time label on indicator (+24/-9) +- `97b6100` fix(storage): use runtime env vars instead of hardcoded localhost URLs (+80/-2) +- `93a7c90` feat(storage): add storage to CD pipeline and fix Docker config (+21/-13) +- `9bdb997` refactor(pwa): replace custom service workers with Vite PWA plugin and centralize offline page (+262/-2023) +- `50d084b` fix(todo): add missing patches directory to web Dockerfile (+3/-0) +- `db2a0e6` fix(storage): copy patches directory in Dockerfile for pnpm install (+1/-0) +- `87516bb` fix(storage): add Umami analytics injection to hooks.server.ts (+2/-1) +- `e01b740` refactor(analytics): centralize Umami tracking via env vars and shared utility (+319/-52) +- `0786e6b` feat(mukke): add real-time frequency bars visualizer (+284/-3) +- `2d7ca7e` docs(mukke): add comprehensive visualizer system concept (+490/-0) +- `2c26fce` fix: replace all manacore.app URLs with mana.how (+100/-103) +- `f043db2` feat(analytics): add automatic auth event tracking via shared-auth (+44/-2) +- `6c140c1` docs(mukke): add visualizer alternatives and technology comparison (+417/-0) +- `7954416` feat(analytics): add key action tracking to todo, calendar, chat, contacts (+12/-0) +- `f5ee3aa` feat(security): add unified CSP headers to all 17 web apps (+246/-58) +- `cc9679d` refactor(analytics): centralize landing page Umami tracking via env vars (+216/-25) +- `45c11a1` feat(analytics): add event tracking to picture, storage, clock, mukke, planta (+12/-0) + +_… plus 7 weitere Commits._ diff --git a/devlog/2026-03-22/spieler.md b/devlog/2026-03-22/spieler.md new file mode 100644 index 000000000..aa17fe122 --- /dev/null +++ b/devlog/2026-03-22/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-22 +day: 61 +view: spieler +weekday: Sonntag +commits: 27 +review: written +--- + +# Sonntag, 2026-03-22 — Tag 61 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- add App Hub as new default home page +- copy patches directory in Dockerfile for pnpm install +- add auth gate to prevent 401 errors and fix CSP for analytics +- scroll to current time and show time label on indicator +- use runtime env vars instead of hardcoded localhost URLs diff --git a/devlog/2026-03-23/data.json b/devlog/2026-03-23/data.json new file mode 100644 index 000000000..53ff9d380 --- /dev/null +++ b/devlog/2026-03-23/data.json @@ -0,0 +1,925 @@ +{ + "date": "2026-03-23", + "day_number": 62, + "weekday": "Montag", + "commits": 93, + "authors": [ + { + "name": "Till JS", + "count": 93 + } + ], + "additions": 31154, + "deletions": 66808, + "net_lines": -35654, + "files_changed": 738, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-23T07:44:47.000Z", + "last_commit_at": "2026-03-23T21:51:07.000Z", + "total_span_minutes": 846, + "active_minutes": 461, + "pauses": [ + { + "from": "13:51", + "to": "20:16", + "minutes": 385 + } + ], + "longest_focus_minutes": 307 + }, + "top_dirs": [ + { + "path": "apps/citycorners/apps/web", + "pct": 7 + }, + { + "path": "apps/presi/apps/mobile", + "pct": 6 + }, + { + "path": "apps-archived/mukke/apps", + "pct": 6 + }, + { + "path": "apps/todo/apps/web", + "pct": 5 + }, + { + "path": "{services/llm-playground => apps/playground", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 258 + }, + { + "ext": ".svelte", + "count": 150 + }, + { + "ext": ".md", + "count": 111 + }, + { + "ext": ".tsx", + "count": 97 + }, + { + "ext": ".json", + "count": 92 + }, + { + "ext": "", + "count": 40 + } + ], + "tags": ["citycorners", "todo-web", "todo", "matrix", "mukke"], + "commits_list": [ + { + "hash": "bae5bb9", + "short": "fix(error-tracking): switch to ESM output for SvelteKit compatibility", + "type": "fix", + "scope": "error-tracking", + "additions": 2, + "deletions": 2, + "timestamp": "2026-03-23T08:44:47+01:00" + }, + { + "hash": "b37d5f0", + "short": "docs(devlog): add devlog for 2026-03-22", + "type": "docs", + "scope": "devlog", + "additions": 281, + "deletions": 0, + "timestamp": "2026-03-23T08:53:20+01:00" + }, + { + "hash": "abc7f95", + "short": "fix(todo): fix FAB close button hidden behind PillNav and move settings/mana to account dropdown", + "type": "fix", + "scope": "todo", + "additions": 14, + "deletions": 19, + "timestamp": "2026-03-23T08:57:15+01:00" + }, + { + "hash": "20b3669", + "short": "fix(mukke): position MiniPlayer above PillNav to prevent overlap", + "type": "fix", + "scope": "mukke", + "additions": 11, + "deletions": 3, + "timestamp": "2026-03-23T08:59:12+01:00" + }, + { + "hash": "a4a7f6e", + "short": "fix(todo): rename 'Aufgaben' to 'Liste' in PillNav for clarity", + "type": "fix", + "scope": "todo", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-23T09:06:31+01:00" + }, + { + "hash": "31b84bb", + "short": "fix(todo): use Spiral icon for Spiral nav item instead of Sparkle", + "type": "fix", + "scope": "todo", + "additions": 3, + "deletions": 1, + "timestamp": "2026-03-23T09:07:51+01:00" + }, + { + "hash": "073c216", + "short": "fix(docker): add shared-error-tracking package to all 15 web Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 60, + "deletions": 0, + "timestamp": "2026-03-23T09:08:33+01:00" + }, + { + "hash": "6fa6509", + "short": "feat(observability): add metrics and monitoring for all 15 backends", + "type": "feat", + "scope": "observability", + "additions": 692, + "deletions": 474, + "timestamp": "2026-03-23T09:09:04+01:00" + }, + { + "hash": "c1ef55f", + "short": "fix(infra): rename LightWrite to Mukke in Caddyfile production config", + "type": "fix", + "scope": "infra", + "additions": 3, + "deletions": 3, + "timestamp": "2026-03-23T09:26:54+01:00" + }, + { + "hash": "dd477d5", + "short": "feat(analytics): expand umami tracking in todo, calendar, and contacts apps", + "type": "feat", + "scope": "analytics", + "additions": 39, + "deletions": 5, + "timestamp": "2026-03-23T09:27:30+01:00" + }, + { + "hash": "a12ec68", + "short": "fix(docker): add shared-nestjs-metrics to 5 backend Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 20, + "deletions": 0, + "timestamp": "2026-03-23T09:31:21+01:00" + }, + { + "hash": "c8de944", + "short": "feat(monitoring): add GlitchTip health check and disk space monitoring", + "type": "feat", + "scope": "monitoring", + "additions": 81, + "deletions": 7, + "timestamp": "2026-03-23T09:33:09+01:00" + }, + { + "hash": "761421f", + "short": "docs(analytics): update ANALYTICS.md with new tracking events", + "type": "docs", + "scope": "analytics", + "additions": 11, + "deletions": 2, + "timestamp": "2026-03-23T09:33:25+01:00" + }, + { + "hash": "c0c64aa", + "short": "docs(analytics): fix outdated information in ANALYTICS.md", + "type": "docs", + "scope": "analytics", + "additions": 43, + "deletions": 35, + "timestamp": "2026-03-23T09:37:42+01:00" + }, + { + "hash": "55e4f7b", + "short": "fix(shared-ui): fix transparent context menu background", + "type": "fix", + "scope": "shared-ui", + "additions": 4, + "deletions": 1, + "timestamp": "2026-03-23T09:37:53+01:00" + }, + { + "hash": "ae0ba94", + "short": "docs(analytics): fix Umami admin URL from umami.mana.how to stats.mana.how", + "type": "docs", + "scope": "analytics", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-23T09:38:54+01:00" + }, + { + "hash": "807c5da", + "short": "fix(mukke): add media-src to CSP for audio playback from MinIO", + "type": "fix", + "scope": "mukke", + "additions": 42, + "deletions": 2, + "timestamp": "2026-03-23T09:40:56+01:00" + }, + { + "hash": "3f5c17a", + "short": "fix(mukke): fix audio CORS for MinIO presigned URLs", + "type": "fix", + "scope": "mukke", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-23T09:51:17+01:00" + }, + { + "hash": "d4d08cc", + "short": "fix(spiral-db): add test suite and fix critical bugs", + "type": "fix", + "scope": "spiral-db", + "additions": 2227, + "deletions": 163, + "timestamp": "2026-03-23T09:52:18+01:00" + }, + { + "hash": "376cfe8", + "short": "docs: add tech stack independence analysis and improvement roadmap", + "type": null, + "scope": null, + "additions": 223, + "deletions": 0, + "timestamp": "2026-03-23T10:01:14+01:00" + }, + { + "hash": "94fead0", + "short": "fix(mukke): add unsafe-eval to CSP for Butterchurn shader compilation", + "type": "fix", + "scope": "mukke", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-23T10:04:25+01:00" + }, + { + "hash": "cc5ba3b", + "short": "chore: remove Hetzner legacy artifacts and update docs for Mac Mini self-hosting", + "type": null, + "scope": null, + "additions": 19, + "deletions": 8863, + "timestamp": "2026-03-23T10:12:24+01:00" + }, + { + "hash": "7c1e2ac", + "short": "chore: remove remaining Hetzner references across codebase", + "type": null, + "scope": null, + "additions": 53, + "deletions": 1163, + "timestamp": "2026-03-23T10:30:26+01:00" + }, + { + "hash": "67a181b", + "short": "chore: major cleanup of legacy docs, reports, and unused configs", + "type": null, + "scope": null, + "additions": 0, + "deletions": 25923, + "timestamp": "2026-03-23T10:43:11+01:00" + }, + { + "hash": "5bcbb4b", + "short": "feat(zitare): integrate spiral-db for visual quote storage", + "type": "feat", + "scope": "zitare", + "additions": 1018, + "deletions": 1, + "timestamp": "2026-03-23T10:44:39+01:00" + }, + { + "hash": "143112f", + "short": "feat(observability): add mana-search, mana-media, and Synapse to monitoring", + "type": "feat", + "scope": "observability", + "additions": 1147, + "deletions": 297, + "timestamp": "2026-03-23T10:46:59+01:00" + }, + { + "hash": "734ab80", + "short": "fix(docker): add patches directory to mana-media Dockerfile", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-23T10:50:52+01:00" + }, + { + "hash": "cf37d92", + "short": "feat(mukke): redesign FullPlayer as immersive fullscreen experience", + "type": "feat", + "scope": "mukke", + "additions": 251, + "deletions": 164, + "timestamp": "2026-03-23T10:52:10+01:00" + }, + { + "hash": "1c5c244", + "short": "feat(citycorners): add city guide app for Konstanz with full monorepo integration", + "type": "feat", + "scope": "citycorners", + "additions": 3663, + "deletions": 3, + "timestamp": "2026-03-23T10:56:26+01:00" + }, + { + "hash": "512cf41", + "short": "feat(citycorners): add location search with QuickInputBar integration", + "type": "feat", + "scope": "citycorners", + "additions": 81, + "deletions": 3, + "timestamp": "2026-03-23T11:00:10+01:00" + }, + { + "hash": "677a499", + "short": "feat(contacts): integrate spiral-db for visual contact network", + "type": "feat", + "scope": "contacts", + "additions": 959, + "deletions": 1, + "timestamp": "2026-03-23T11:02:19+01:00" + }, + { + "hash": "7910737", + "short": "fix(mana-media): use prom-client directly instead of shared metrics package", + "type": "fix", + "scope": "mana-media", + "additions": 247, + "deletions": 241, + "timestamp": "2026-03-23T11:06:09+01:00" + }, + { + "hash": "ea79625", + "short": "chore: fix config conflicts, update README, clean up apps-archived", + "type": null, + "scope": null, + "additions": 41, + "deletions": 3825, + "timestamp": "2026-03-23T11:06:40+01:00" + }, + { + "hash": "7691f66", + "short": "refactor(todo): move Feedback, Themes, Spiral to profile dropdown", + "type": "refactor", + "scope": "todo", + "additions": 34, + "deletions": 1, + "timestamp": "2026-03-23T11:10:41+01:00" + }, + { + "hash": "a2f8c32", + "short": "feat(citycorners): add PWA, i18n (DE/EN), and migrate landing to Tailwind", + "type": "feat", + "scope": "citycorners", + "additions": 1087, + "deletions": 972, + "timestamp": "2026-03-23T11:11:51+01:00" + }, + { + "hash": "fae139e", + "short": "fix(context): remove cloud API keys from mobile app, route through backend", + "type": "fix", + "scope": "context", + "additions": 156, + "deletions": 278, + "timestamp": "2026-03-23T11:13:55+01:00" + }, + { + "hash": "07365c3", + "short": "chore: remove stale docs and outdated design plans", + "type": null, + "scope": null, + "additions": 0, + "deletions": 4095, + "timestamp": "2026-03-23T11:15:29+01:00" + }, + { + "hash": "40718a7", + "short": "chore: remove dead Supabase keys and leaked API keys from env config", + "type": null, + "scope": null, + "additions": 0, + "deletions": 60, + "timestamp": "2026-03-23T11:25:24+01:00" + }, + { + "hash": "71b9339", + "short": "refactor: move llm-playground from services/ to apps/playground/", + "type": null, + "scope": null, + "additions": 527, + "deletions": 530, + "timestamp": "2026-03-23T11:25:54+01:00" + }, + { + "hash": "9747e10", + "short": "fix(todo): add missing shared-app-onboarding to Dockerfile", + "type": "fix", + "scope": "todo", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-23T11:37:49+01:00" + }, + { + "hash": "99d1667", + "short": "fix(citycorners): add missing shared packages and patches to web Dockerfile", + "type": "fix", + "scope": "citycorners", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-23T11:38:45+01:00" + }, + { + "hash": "343f30e", + "short": "refactor(manacore-mobile): migrate from Supabase to mana-core-auth", + "type": "refactor", + "scope": "manacore-mobile", + "additions": 907, + "deletions": 3480, + "timestamp": "2026-03-23T11:41:48+01:00" + }, + { + "hash": "0e8d202", + "short": "fix(citycorners): change backend port to 3041 (3025 used by mana-llm)", + "type": "fix", + "scope": "citycorners", + "additions": 6, + "deletions": 5, + "timestamp": "2026-03-23T11:46:01+01:00" + }, + { + "hash": "c6d5d48", + "short": "fix(matrix): prod-readiness fixes for Manalink web app", + "type": "fix", + "scope": "matrix", + "additions": 77, + "deletions": 43, + "timestamp": "2026-03-23T12:01:22+01:00" + }, + { + "hash": "5bd9679", + "short": "refactor(context-mobile): migrate from Supabase to backend API + mana-core-auth", + "type": "refactor", + "scope": "context-mobile", + "additions": 895, + "deletions": 2470, + "timestamp": "2026-03-23T12:01:58+01:00" + }, + { + "hash": "b767462", + "short": "chore: remove @manacore/shared-supabase package", + "type": null, + "scope": null, + "additions": 0, + "deletions": 128, + "timestamp": "2026-03-23T12:07:14+01:00" + }, + { + "hash": "f71e7d3", + "short": "docs: add TODO for rotating leaked API keys from git history", + "type": null, + "scope": null, + "additions": 43, + "deletions": 0, + "timestamp": "2026-03-23T12:10:53+01:00" + }, + { + "hash": "241cb33", + "short": "refactor(auth): standardize URL resolution and token handling across all web auth stores", + "type": "refactor", + "scope": "auth", + "additions": 530, + "deletions": 302, + "timestamp": "2026-03-23T12:11:52+01:00" + }, + { + "hash": "a4f52df", + "short": "fix(citycorners): add /api/v1/ prefix to all API calls and add location submission form", + "type": "fix", + "scope": "citycorners", + "additions": 226, + "deletions": 40, + "timestamp": "2026-03-23T12:12:56+01:00" + }, + { + "hash": "416e031", + "short": "feat(matrix): add tests, E2EE warning, and dynamic homeserver config", + "type": "feat", + "scope": "matrix", + "additions": 726, + "deletions": 603, + "timestamp": "2026-03-23T12:18:07+01:00" + }, + { + "hash": "0f93496", + "short": "feat(citycorners): add web lookup for new locations via mana-search", + "type": "feat", + "scope": "citycorners", + "additions": 323, + "deletions": 10, + "timestamp": "2026-03-23T12:23:24+01:00" + }, + { + "hash": "c1d390b", + "short": "fix(matrix): add patches dir to Dockerfile for pnpm install", + "type": "fix", + "scope": "matrix", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-23T12:27:23+01:00" + }, + { + "hash": "e0f7e32", + "short": "fix(matrix): copy all packages dir in Dockerfile to fix workspace resolution", + "type": "fix", + "scope": "matrix", + "additions": 2, + "deletions": 13, + "timestamp": "2026-03-23T12:31:42+01:00" + }, + { + "hash": "34adf50", + "short": "fix(matrix): add eslint-config to Dockerfile, revert to explicit package copies", + "type": "fix", + "scope": "matrix", + "additions": 14, + "deletions": 2, + "timestamp": "2026-03-23T12:32:38+01:00" + }, + { + "hash": "79207bf", + "short": "fix(matrix): strip react-native patches in Dockerfile before pnpm install", + "type": "fix", + "scope": "matrix", + "additions": 2, + "deletions": 1, + "timestamp": "2026-03-23T12:33:36+01:00" + }, + { + "hash": "c59eba7", + "short": "test(citycorners): add backend test suite (31 tests) and update documentation", + "type": "test", + "scope": "citycorners", + "additions": 655, + "deletions": 15, + "timestamp": "2026-03-23T12:44:46+01:00" + }, + { + "hash": "71277ba", + "short": "refactor(manadeck-mobile): migrate from custom auth to @manacore/shared-auth", + "type": "refactor", + "scope": "manadeck-mobile", + "additions": 820, + "deletions": 3014, + "timestamp": "2026-03-23T12:55:28+01:00" + }, + { + "hash": "efcb18a", + "short": "refactor(auth): standardize mobile auth return format to { success, error }", + "type": "refactor", + "scope": "auth", + "additions": 79, + "deletions": 67, + "timestamp": "2026-03-23T12:59:13+01:00" + }, + { + "hash": "da6dd4e", + "short": "chore: remove presi mobile app, update outdated mobile docs", + "type": null, + "scope": null, + "additions": 21, + "deletions": 6528, + "timestamp": "2026-03-23T13:16:29+01:00" + }, + { + "hash": "df0b849", + "short": "feat: add org landing page builder service", + "type": null, + "scope": null, + "additions": 2171, + "deletions": 4, + "timestamp": "2026-03-23T13:20:10+01:00" + }, + { + "hash": "d29348d", + "short": "docs: add devlog for morning session + update guidelines to session-based", + "type": null, + "scope": null, + "additions": 190, + "deletions": 7, + "timestamp": "2026-03-23T13:20:40+01:00" + }, + { + "hash": "994f03c", + "short": "fix(landing-builder): add patches dir to Dockerfile for pnpm install", + "type": "fix", + "scope": "landing-builder", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-23T13:21:21+01:00" + }, + { + "hash": "060eb01", + "short": "fix(landing-builder): simplify Dockerfile COPY steps", + "type": "fix", + "scope": "landing-builder", + "additions": 0, + "deletions": 2, + "timestamp": "2026-03-23T13:22:00+01:00" + }, + { + "hash": "9d4b59f", + "short": "docs(devlog): rewrite morning session devlog with all 61 commits", + "type": "docs", + "scope": "devlog", + "additions": 331, + "deletions": 89, + "timestamp": "2026-03-23T13:29:38+01:00" + }, + { + "hash": "c788098", + "short": "fix(landing-builder): rework Dockerfile to copy workspace directly", + "type": "fix", + "scope": "landing-builder", + "additions": 17, + "deletions": 13, + "timestamp": "2026-03-23T13:50:22+01:00" + }, + { + "hash": "4313198", + "short": "fix(landing-builder): change prod port to 3050 (3030 used by chat)", + "type": "fix", + "scope": "landing-builder", + "additions": 3, + "deletions": 3, + "timestamp": "2026-03-23T13:51:51+01:00" + }, + { + "hash": "97d6787", + "short": "feat(todo-web): redesign task list as physical notepad", + "type": "feat", + "scope": "todo-web", + "additions": 226, + "deletions": 127, + "timestamp": "2026-03-23T20:16:40+01:00" + }, + { + "hash": "1075e81", + "short": "feat(todo-web): show QuickInputBar only on list and kanban views", + "type": "feat", + "scope": "todo-web", + "additions": 71, + "deletions": 24, + "timestamp": "2026-03-23T20:39:26+01:00" + }, + { + "hash": "92adabc", + "short": "feat(todo,contacts): add TagStrip above PillNav, unified with Calendar design", + "type": "feat", + "scope": "todo,contacts", + "additions": 2423, + "deletions": 93, + "timestamp": "2026-03-23T20:47:41+01:00" + }, + { + "hash": "e00e6ee", + "short": "feat(shared-ui): add deferred search mode to QuickInputBar", + "type": "feat", + "scope": "shared-ui", + "additions": 87, + "deletions": 5, + "timestamp": "2026-03-23T20:48:01+01:00" + }, + { + "hash": "f5842ea", + "short": "refactor(todo-web): unify FilterStrip and KanbanFilters into TaskFilters", + "type": "refactor", + "scope": "todo-web", + "additions": 841, + "deletions": 761, + "timestamp": "2026-03-23T20:48:34+01:00" + }, + { + "hash": "45db427", + "short": "fix(todo): pixel-perfect skeleton loaders, PillNav tab group, and SSR head fix", + "type": "fix", + "scope": "todo", + "additions": 311, + "deletions": 112, + "timestamp": "2026-03-23T20:51:41+01:00" + }, + { + "hash": "9edd1c6", + "short": "feat(shared-ui): locale-aware highlighting + success feedback for InputBar", + "type": "feat", + "scope": "shared-ui", + "additions": 227, + "deletions": 62, + "timestamp": "2026-03-23T20:55:31+01:00" + }, + { + "hash": "c1ca93b", + "short": "fix(contacts-web): add patches dir to Dockerfile for pnpm install", + "type": "fix", + "scope": "contacts-web", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-23T21:04:06+01:00" + }, + { + "hash": "534b55b", + "short": "test(todo-web): add tests for unified TaskFilters and viewStore filter state", + "type": "test", + "scope": "todo-web", + "additions": 371, + "deletions": 20, + "timestamp": "2026-03-23T21:04:21+01:00" + }, + { + "hash": "436e92c", + "short": "feat: unify QuickInputBar across all apps with locale + deferSearch", + "type": null, + "scope": null, + "additions": 15, + "deletions": 0, + "timestamp": "2026-03-23T21:06:58+01:00" + }, + { + "hash": "dc372ee", + "short": "fix(contacts-web): add shared-pwa package to Dockerfile", + "type": "fix", + "scope": "contacts-web", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-23T21:07:20+01:00" + }, + { + "hash": "08a7d2a", + "short": "fix(todo-web): clean up list design and make onboarding tip dismissable", + "type": "fix", + "scope": "todo-web", + "additions": 54, + "deletions": 67, + "timestamp": "2026-03-23T21:19:14+01:00" + }, + { + "hash": "ee3e815", + "short": "fix(contacts-web): add shared-app-onboarding to Dockerfile", + "type": "fix", + "scope": "contacts-web", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-23T21:19:20+01:00" + }, + { + "hash": "49457c3", + "short": "feat(todo-web): auto-save task edits, remove save/cancel buttons", + "type": "feat", + "scope": "todo-web", + "additions": 42, + "deletions": 70, + "timestamp": "2026-03-23T21:24:00+01:00" + }, + { + "hash": "ff419f0", + "short": "feat: add QuickInputBar to 6 more apps (mukke, matrix, manadeck, planta, photos, presi)", + "type": null, + "scope": null, + "additions": 200, + "deletions": 13, + "timestamp": "2026-03-23T21:25:51+01:00" + }, + { + "hash": "cb18384", + "short": "fix(contacts-web): add spiral-db to Dockerfile", + "type": "fix", + "scope": "contacts-web", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-23T21:28:23+01:00" + }, + { + "hash": "3b883af", + "short": "feat(manacore): improve todo dashboard widgets and fix port mismatch", + "type": "feat", + "scope": "manacore", + "additions": 166, + "deletions": 50, + "timestamp": "2026-03-23T21:48:29+01:00" + }, + { + "hash": "0893e47", + "short": "feat(todo-web): add right-click context menu to task list", + "type": "feat", + "scope": "todo-web", + "additions": 133, + "deletions": 22, + "timestamp": "2026-03-23T21:56:58+01:00" + }, + { + "hash": "89ca3b0", + "short": "fix(manacore): update todo service test mock to match new Task type", + "type": "fix", + "scope": "manacore", + "additions": 2, + "deletions": 1, + "timestamp": "2026-03-23T21:57:52+01:00" + }, + { + "hash": "250e0b2", + "short": "feat: add onboarding to 6 new apps and feature intro step to all 16 apps", + "type": null, + "scope": null, + "additions": 872, + "deletions": 0, + "timestamp": "2026-03-23T21:58:14+01:00" + }, + { + "hash": "e7bf58c", + "short": "feat(calendar-web): add right-click context menu to events in week view", + "type": "feat", + "scope": "calendar-web", + "additions": 105, + "deletions": 5, + "timestamp": "2026-03-23T22:02:46+01:00" + }, + { + "hash": "e2f1449", + "short": "feat: add unified @manacore/shared-llm package and migrate all backends", + "type": null, + "scope": null, + "additions": 2477, + "deletions": 1298, + "timestamp": "2026-03-23T22:06:30+01:00" + }, + { + "hash": "7f7c6e6", + "short": "fix(manacore): replace hardcoded localhost URLs with APP_URLS in all widgets", + "type": "fix", + "scope": "manacore", + "additions": 36, + "deletions": 12, + "timestamp": "2026-03-23T22:09:24+01:00" + }, + { + "hash": "421ef55", + "short": "feat(manacore): implement mukke, presi, and context dashboard widgets", + "type": "feat", + "scope": "manacore", + "additions": 425, + "deletions": 0, + "timestamp": "2026-03-23T22:34:56+01:00" + }, + { + "hash": "28286d1", + "short": "feat: add right-click context menus to presi, manadeck, photos, and zitare", + "type": null, + "scope": null, + "additions": 316, + "deletions": 7, + "timestamp": "2026-03-23T22:34:57+01:00" + }, + { + "hash": "45063b8", + "short": "feat(mana-llm): add Google Gemini fallback provider with auto-routing", + "type": "feat", + "scope": "mana-llm", + "additions": 430, + "deletions": 19, + "timestamp": "2026-03-23T22:44:09+01:00" + }, + { + "hash": "ecda453", + "short": "feat: add right-click context menus to calendar agenda, chat, contacts, and storage", + "type": null, + "scope": null, + "additions": 230, + "deletions": 62, + "timestamp": "2026-03-23T22:51:07+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-23/macher.md b/devlog/2026-03-23/macher.md new file mode 100644 index 000000000..6da80548a --- /dev/null +++ b/devlog/2026-03-23/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-23 +day: 62 +view: macher +weekday: Montag +commits: 93 +review: written +--- + +# Montag, 2026-03-23 — Tag 62 (Macher-Sicht) + +## Stats + +93 Commits, +31154 / −66808 LoC, 738 Files. Top-Dirs: `apps/citycorners/apps/web` (7%), `apps/presi/apps/mobile` (6%), `apps-archived/mukke/apps` (6%), `apps/todo/apps/web` (5%), `{services/llm-playground => apps/playground` (4%). Tags: citycorners, todo-web, todo, matrix, mukke. Session 07:44 → 21:51 (~461 aktive Min, längster Fokus 307 Min). + +## Commits + +- `bae5bb9` fix(error-tracking): switch to ESM output for SvelteKit compatibility (+2/-2) +- `b37d5f0` docs(devlog): add devlog for 2026-03-22 (+281/-0) +- `abc7f95` fix(todo): fix FAB close button hidden behind PillNav and move settings/mana to account dropdown (+14/-19) +- `20b3669` fix(mukke): position MiniPlayer above PillNav to prevent overlap (+11/-3) +- `a4a7f6e` fix(todo): rename 'Aufgaben' to 'Liste' in PillNav for clarity (+1/-1) +- `31b84bb` fix(todo): use Spiral icon for Spiral nav item instead of Sparkle (+3/-1) +- `073c216` fix(docker): add shared-error-tracking package to all 15 web Dockerfiles (+60/-0) +- `6fa6509` feat(observability): add metrics and monitoring for all 15 backends (+692/-474) +- `c1ef55f` fix(infra): rename LightWrite to Mukke in Caddyfile production config (+3/-3) +- `dd477d5` feat(analytics): expand umami tracking in todo, calendar, and contacts apps (+39/-5) +- `a12ec68` fix(docker): add shared-nestjs-metrics to 5 backend Dockerfiles (+20/-0) +- `c8de944` feat(monitoring): add GlitchTip health check and disk space monitoring (+81/-7) +- `761421f` docs(analytics): update ANALYTICS.md with new tracking events (+11/-2) +- `c0c64aa` docs(analytics): fix outdated information in ANALYTICS.md (+43/-35) +- `55e4f7b` fix(shared-ui): fix transparent context menu background (+4/-1) +- `ae0ba94` docs(analytics): fix Umami admin URL from umami.mana.how to stats.mana.how (+1/-1) +- `807c5da` fix(mukke): add media-src to CSP for audio playback from MinIO (+42/-2) +- `3f5c17a` fix(mukke): fix audio CORS for MinIO presigned URLs (+2/-0) +- `d4d08cc` fix(spiral-db): add test suite and fix critical bugs (+2227/-163) +- `376cfe8` docs: add tech stack independence analysis and improvement roadmap (+223/-0) + +_… plus 73 weitere Commits._ diff --git a/devlog/2026-03-23/spieler.md b/devlog/2026-03-23/spieler.md new file mode 100644 index 000000000..9f60e3709 --- /dev/null +++ b/devlog/2026-03-23/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-23 +day: 62 +view: spieler +weekday: Montag +commits: 93 +review: written +--- + +# Montag, 2026-03-23 — Tag 62 + +Großer Sprint-Tag mit Schwerpunkt **apps** (93 Commits). + +## Highlights + +- switch to ESM output for SvelteKit compatibility +- add devlog for 2026-03-22 +- fix FAB close button hidden behind PillNav and move settings/mana to account dropdown +- position MiniPlayer above PillNav to prevent overlap +- rename 'Aufgaben' to 'Liste' in PillNav for clarity diff --git a/devlog/2026-03-24/data.json b/devlog/2026-03-24/data.json new file mode 100644 index 000000000..4c8054e80 --- /dev/null +++ b/devlog/2026-03-24/data.json @@ -0,0 +1,809 @@ +{ + "date": "2026-03-24", + "day_number": 63, + "weekday": "Dienstag", + "commits": 79, + "authors": [ + { + "name": "Till JS", + "count": 79 + } + ], + "additions": 24763, + "deletions": 4636, + "net_lines": 20127, + "files_changed": 364, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-24T08:41:33.000Z", + "last_commit_at": "2026-03-24T21:38:46.000Z", + "total_span_minutes": 777, + "active_minutes": 285, + "pauses": [ + { + "from": "12:42", + "to": "19:18", + "minutes": 396 + }, + { + "from": "20:26", + "to": "21:13", + "minutes": 47 + }, + { + "from": "21:28", + "to": "22:18", + "minutes": 49 + } + ], + "longest_focus_minutes": 181 + }, + "top_dirs": [ + { + "path": "apps/manacore/apps/landing", + "pct": 10 + }, + { + "path": "apps/manacore/apps/web", + "pct": 10 + }, + { + "path": "apps/calendar/apps/web", + "pct": 9 + }, + { + "path": "apps/todo/apps/web", + "pct": 6 + }, + { + "path": "apps/citycorners/apps/web", + "pct": 6 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 163 + }, + { + "ext": ".svelte", + "count": 115 + }, + { + "ext": ".json", + "count": 53 + }, + { + "ext": ".md", + "count": 51 + }, + { + "ext": "", + "count": 41 + }, + { + "ext": ".astro", + "count": 21 + } + ], + "tags": ["manacore", "infra", "todo", "citycorners", "manascore"], + "commits_list": [ + { + "hash": "56ffcba", + "short": "feat: add Ollama memory optimization, LLM metrics, and chat streaming", + "type": null, + "scope": null, + "additions": 463, + "deletions": 30, + "timestamp": "2026-03-24T09:41:33+01:00" + }, + { + "hash": "52e9aa5", + "short": "docs: add devlog for evening session 2026-03-23", + "type": null, + "scope": null, + "additions": 270, + "deletions": 0, + "timestamp": "2026-03-24T09:47:54+01:00" + }, + { + "hash": "8bc52f4", + "short": "fix(calendar,todo): production readiness improvements", + "type": "fix", + "scope": "calendar,todo", + "additions": 172, + "deletions": 8, + "timestamp": "2026-03-24T09:57:24+01:00" + }, + { + "hash": "c27f6f8", + "short": "feat(shared-ui): add focusTrap action and apply to shared Modal", + "type": "feat", + "scope": "shared-ui", + "additions": 75, + "deletions": 0, + "timestamp": "2026-03-24T10:04:04+01:00" + }, + { + "hash": "fea6a8e", + "short": "feat: add it.mana.how landing page for European tech sovereignty", + "type": null, + "scope": null, + "additions": 1209, + "deletions": 0, + "timestamp": "2026-03-24T10:04:59+01:00" + }, + { + "hash": "5b77369", + "short": "feat(calendar,todo): add focus trapping to all modals", + "type": "feat", + "scope": "calendar,todo", + "additions": 32, + "deletions": 11, + "timestamp": "2026-03-24T10:06:32+01:00" + }, + { + "hash": "d7cef38", + "short": "feat(calendar): localize all toast messages with i18n", + "type": "feat", + "scope": "calendar", + "additions": 144, + "deletions": 29, + "timestamp": "2026-03-24T10:06:41+01:00" + }, + { + "hash": "44a9e02", + "short": "feat(manacore): add costs overview tab to credits page", + "type": "feat", + "scope": "manacore", + "additions": 200, + "deletions": 192, + "timestamp": "2026-03-24T10:10:44+01:00" + }, + { + "hash": "51f80f4", + "short": "docs: add Cloudflare Pages domain configuration guide", + "type": null, + "scope": null, + "additions": 109, + "deletions": 0, + "timestamp": "2026-03-24T10:15:41+01:00" + }, + { + "hash": "1a91bd7", + "short": "test(calendar-web): add E2E test for 404 error page", + "type": "test", + "scope": "calendar-web", + "additions": 19, + "deletions": 0, + "timestamp": "2026-03-24T10:22:56+01:00" + }, + { + "hash": "0110bff", + "short": "feat(calendar): localize sync and sharing settings pages", + "type": "feat", + "scope": "calendar", + "additions": 784, + "deletions": 88, + "timestamp": "2026-03-24T10:28:02+01:00" + }, + { + "hash": "c4bdc6a", + "short": "feat(calendar): localize main settings page with i18n", + "type": "feat", + "scope": "calendar", + "additions": 155, + "deletions": 95, + "timestamp": "2026-03-24T10:30:13+01:00" + }, + { + "hash": "490f822", + "short": "docs(calendar,todo): add production readiness audit to CLAUDE.md", + "type": "docs", + "scope": "calendar,todo", + "additions": 95, + "deletions": 2, + "timestamp": "2026-03-24T10:34:15+01:00" + }, + { + "hash": "6cab9a3", + "short": "fix(infra): remove n8n and increase health check intervals to fix port exhaustion", + "type": "fix", + "scope": "infra", + "additions": 237, + "deletions": 129, + "timestamp": "2026-03-24T10:35:45+01:00" + }, + { + "hash": "124b4f7", + "short": "fix(infra): route GlitchTip DSNs internally to avoid Cloudflare roundtrip", + "type": "fix", + "scope": "infra", + "additions": 13, + "deletions": 13, + "timestamp": "2026-03-24T10:36:59+01:00" + }, + { + "hash": "0ddbad9", + "short": "docs: update calendar and todo production readiness audits", + "type": null, + "scope": null, + "additions": 202, + "deletions": 65, + "timestamp": "2026-03-24T10:37:07+01:00" + }, + { + "hash": "fc7d294", + "short": "feat(picture): add local image generation via mana-image-gen", + "type": "feat", + "scope": "picture", + "additions": 169, + "deletions": 4, + "timestamp": "2026-03-24T10:38:30+01:00" + }, + { + "hash": "357fbb3", + "short": "feat(manacore): rename audits to ManaScore + add methodology page", + "type": "feat", + "scope": "manacore", + "additions": 205, + "deletions": 13, + "timestamp": "2026-03-24T10:43:07+01:00" + }, + { + "hash": "62c5ddd", + "short": "feat(project-doc-bot): migrate to shared-llm, remove OpenAI dependency", + "type": "feat", + "scope": "project-doc-bot", + "additions": 136, + "deletions": 91, + "timestamp": "2026-03-24T10:44:56+01:00" + }, + { + "hash": "5611f38", + "short": "feat(citycorners): UX quick wins for web app", + "type": "feat", + "scope": "citycorners", + "additions": 279, + "deletions": 63, + "timestamp": "2026-03-24T11:07:38+01:00" + }, + { + "hash": "cc55ca5", + "short": "fix(mana-core-auth): add shared-llm package to Dockerfile", + "type": "fix", + "scope": "mana-core-auth", + "additions": 6, + "deletions": 2, + "timestamp": "2026-03-24T11:13:28+01:00" + }, + { + "hash": "57a2841", + "short": "fix(manacore): fix syntax error in LandingEditor bind:value", + "type": "fix", + "scope": "manacore", + "additions": 2, + "deletions": 2, + "timestamp": "2026-03-24T11:15:39+01:00" + }, + { + "hash": "169821d", + "short": "feat(monitoring): add LLM Grafana dashboard, Prometheus scraping, and alerts", + "type": "feat", + "scope": "monitoring", + "additions": 477, + "deletions": 1, + "timestamp": "2026-03-24T11:16:27+01:00" + }, + { + "hash": "9795645", + "short": "fix(manacore): fix @const syntax error in ContextDocsWidget", + "type": "fix", + "scope": "manacore", + "additions": 2, + "deletions": 3, + "timestamp": "2026-03-24T11:17:45+01:00" + }, + { + "hash": "3952691", + "short": "feat(infra): add pgBackRest for PostgreSQL Point-in-Time Recovery", + "type": "feat", + "scope": "infra", + "additions": 251, + "deletions": 0, + "timestamp": "2026-03-24T11:18:33+01:00" + }, + { + "hash": "58fb3e8", + "short": "feat(citycorners): add owner tracking, edit/delete UI, and pagination", + "type": "feat", + "scope": "citycorners", + "additions": 651, + "deletions": 58, + "timestamp": "2026-03-24T11:19:15+01:00" + }, + { + "hash": "c4cc852", + "short": "fix(manacore): add credit-operations package to web Dockerfile", + "type": "fix", + "scope": "manacore", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-24T11:21:31+01:00" + }, + { + "hash": "8e39039", + "short": "feat(citycorners): add photo gallery, nearby locations, and search history", + "type": "feat", + "scope": "citycorners", + "additions": 379, + "deletions": 23, + "timestamp": "2026-03-24T11:25:17+01:00" + }, + { + "hash": "817ad84", + "short": "fix(manacore): build credit-operations package in web Dockerfile", + "type": "fix", + "scope": "manacore", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-24T11:26:31+01:00" + }, + { + "hash": "3c6253a", + "short": "fix(manacore): use --ignore-scripts in Dockerfile install step", + "type": "fix", + "scope": "manacore", + "additions": 2, + "deletions": 2, + "timestamp": "2026-03-24T11:28:42+01:00" + }, + { + "hash": "c213473", + "short": "fix(credit-operations): export TypeScript source directly", + "type": "fix", + "scope": "credit-operations", + "additions": 7, + "deletions": 10, + "timestamp": "2026-03-24T11:31:20+01:00" + }, + { + "hash": "7813e3b", + "short": "fix(infra): use correct pgbackrest Docker image (woblerr/pgbackrest)", + "type": "fix", + "scope": "infra", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-24T11:34:44+01:00" + }, + { + "hash": "d3ae384", + "short": "feat(manascore): add score trend visualization with sparkline charts", + "type": "feat", + "scope": "manascore", + "additions": 167, + "deletions": 20, + "timestamp": "2026-03-24T11:35:12+01:00" + }, + { + "hash": "fcd7c82", + "short": "fix(infra): simplify PostgreSQL backup to pg_dumpall + pg_basebackup", + "type": "fix", + "scope": "infra", + "additions": 114, + "deletions": 169, + "timestamp": "2026-03-24T11:39:20+01:00" + }, + { + "hash": "e06e8cc", + "short": "fix(infra): use postgres -c flags instead of config_file override", + "type": "fix", + "scope": "infra", + "additions": 11, + "deletions": 2, + "timestamp": "2026-03-24T11:42:42+01:00" + }, + { + "hash": "986f168", + "short": "feat(manascore): add Lighthouse score integration", + "type": "feat", + "scope": "manascore", + "additions": 98, + "deletions": 0, + "timestamp": "2026-03-24T11:46:16+01:00" + }, + { + "hash": "e060884", + "short": "fix(infra): add healthcheck start_period, restore shared-llm dep in project-doc-bot", + "type": "fix", + "scope": "infra", + "additions": 36, + "deletions": 35, + "timestamp": "2026-03-24T11:48:13+01:00" + }, + { + "hash": "954b204", + "short": "fix(manacore): fix dashboard grid layout - widgets were col-span-1", + "type": "fix", + "scope": "manacore", + "additions": 4, + "deletions": 4, + "timestamp": "2026-03-24T11:49:12+01:00" + }, + { + "hash": "e3115b3", + "short": "feat(infra): add Cloudflare fallback plan + self-hosted landing pages", + "type": "feat", + "scope": "infra", + "additions": 733, + "deletions": 27, + "timestamp": "2026-03-24T12:07:40+01:00" + }, + { + "hash": "000b74a", + "short": "fix(web): add appReady gate to prevent auth race condition in all apps", + "type": "fix", + "scope": "web", + "additions": 503, + "deletions": 437, + "timestamp": "2026-03-24T12:15:35+01:00" + }, + { + "hash": "02215df", + "short": "feat(skilltree): add achievement system with 26 achievements + monetization report", + "type": "feat", + "scope": "skilltree", + "additions": 2266, + "deletions": 38, + "timestamp": "2026-03-24T12:17:43+01:00" + }, + { + "hash": "61c23d5", + "short": "fix(manacore): improve dashboard layout polish", + "type": "fix", + "scope": "manacore", + "additions": 185, + "deletions": 100, + "timestamp": "2026-03-24T12:21:51+01:00" + }, + { + "hash": "06694ea", + "short": "feat(manascore): add API conformity and cross-app consistency checks", + "type": "feat", + "scope": "manascore", + "additions": 206, + "deletions": 0, + "timestamp": "2026-03-24T12:24:45+01:00" + }, + { + "hash": "94d7e2b", + "short": "feat(citycorners): add slugs, contacts, collections, clustering, rate limiting, soft deletes", + "type": "feat", + "scope": "citycorners", + "additions": 1731, + "deletions": 553, + "timestamp": "2026-03-24T12:27:29+01:00" + }, + { + "hash": "6d231ee", + "short": "docs: document ManaScore extended metrics and add to root CLAUDE.md", + "type": null, + "scope": null, + "additions": 93, + "deletions": 0, + "timestamp": "2026-03-24T12:30:58+01:00" + }, + { + "hash": "9139b01", + "short": "fix(infra): use 127.0.0.1 in nginx healthcheck (alpine resolves localhost to IPv6)", + "type": "fix", + "scope": "infra", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-24T12:38:10+01:00" + }, + { + "hash": "46925de", + "short": "fix(project-doc-bot): restore shared-llm dependency in package.json", + "type": "fix", + "scope": "project-doc-bot", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-24T12:40:58+01:00" + }, + { + "hash": "1f35206", + "short": "docs: update Cloudflare domains guide and tech independence roadmap", + "type": null, + "scope": null, + "additions": 132, + "deletions": 88, + "timestamp": "2026-03-24T12:42:55+01:00" + }, + { + "hash": "9431af6", + "short": "docs(manascore): update scores for storage, todo, and calendar", + "type": "docs", + "scope": "manascore", + "additions": 34, + "deletions": 25, + "timestamp": "2026-03-24T19:18:53+01:00" + }, + { + "hash": "994abf3", + "short": "fix(zitare): add missing patches/ COPY to web Dockerfile", + "type": "fix", + "scope": "zitare", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-24T19:20:44+01:00" + }, + { + "hash": "91daba0", + "short": "fix(storage): add PWA icons and meta tags to fix build and enable install", + "type": "fix", + "scope": "storage", + "additions": 63, + "deletions": 4, + "timestamp": "2026-03-24T19:22:16+01:00" + }, + { + "hash": "c868650", + "short": "fix(zitare): add shared-pwa to web Dockerfile", + "type": "fix", + "scope": "zitare", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-24T19:22:43+01:00" + }, + { + "hash": "233a3c0", + "short": "docs: add devlog for morning session 2026-03-24", + "type": null, + "scope": null, + "additions": 246, + "deletions": 0, + "timestamp": "2026-03-24T19:28:31+01:00" + }, + { + "hash": "c964479", + "short": "fix(todo): improve drag-and-drop handles and fix reorder persistence", + "type": "fix", + "scope": "todo", + "additions": 22, + "deletions": 9, + "timestamp": "2026-03-24T19:43:30+01:00" + }, + { + "hash": "f42f9ce", + "short": "fix(todo): swap checkbox/priority order, enlarge priority dot, remove chevron", + "type": "fix", + "scope": "todo", + "additions": 8, + "deletions": 25, + "timestamp": "2026-03-24T19:46:33+01:00" + }, + { + "hash": "4b4cdd8", + "short": "feat(todo): inline title editing on click", + "type": "feat", + "scope": "todo", + "additions": 78, + "deletions": 12, + "timestamp": "2026-03-24T19:49:39+01:00" + }, + { + "hash": "ea37288", + "short": "feat(todo): long press to open expanded edit form on mobile", + "type": "feat", + "scope": "todo", + "additions": 34, + "deletions": 1, + "timestamp": "2026-03-24T19:56:04+01:00" + }, + { + "hash": "caa126f", + "short": "fix(zitare): add missing shared-utils dependency to web package", + "type": "fix", + "scope": "zitare", + "additions": 627, + "deletions": 547, + "timestamp": "2026-03-24T20:01:34+01:00" + }, + { + "hash": "7648437", + "short": "feat(manacore): add Seenplatte ecosystem observatory visualization", + "type": "feat", + "scope": "manacore", + "additions": 1638, + "deletions": 0, + "timestamp": "2026-03-24T20:01:49+01:00" + }, + { + "hash": "6c4fd39", + "short": "fix(zitare): add spiral-db to web Dockerfile", + "type": "fix", + "scope": "zitare", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-24T20:04:21+01:00" + }, + { + "hash": "10df359", + "short": "fix(todo): simplify section headers - remove chevron, count, and collapse", + "type": "fix", + "scope": "todo", + "additions": 14, + "deletions": 57, + "timestamp": "2026-03-24T20:05:06+01:00" + }, + { + "hash": "a2605e8", + "short": "feat(infra): add Dockerfile dependency validator + fix 16 missing COPYs", + "type": "feat", + "scope": "infra", + "additions": 286, + "deletions": 7, + "timestamp": "2026-03-24T20:25:54+01:00" + }, + { + "hash": "d080236", + "short": "refactor(shared-auth): single fetch interceptor for multiple URLs", + "type": "refactor", + "scope": "shared-auth", + "additions": 35, + "deletions": 17, + "timestamp": "2026-03-24T20:26:03+01:00" + }, + { + "hash": "5b5849e", + "short": "perf(auth): cache JWKS locally instead of HTTP self-call", + "type": "perf", + "scope": "auth", + "additions": 158, + "deletions": 38, + "timestamp": "2026-03-24T20:26:16+01:00" + }, + { + "hash": "d6eacc1", + "short": "fix(todo): add ReorderTasksDto to fix validation error on task reorder", + "type": "fix", + "scope": "todo", + "additions": 4, + "deletions": 4, + "timestamp": "2026-03-24T20:26:30+01:00" + }, + { + "hash": "04f5afe", + "short": "feat(landing): replace simple footer with rich mega footer", + "type": "feat", + "scope": "landing", + "additions": 371, + "deletions": 39, + "timestamp": "2026-03-24T21:13:46+01:00" + }, + { + "hash": "47dbe00", + "short": "fix(manacore): show all open tasks in dashboard widget, not just today", + "type": "fix", + "scope": "manacore", + "additions": 65, + "deletions": 14, + "timestamp": "2026-03-24T21:22:36+01:00" + }, + { + "hash": "decd79d", + "short": "ci: add Docker build validation workflow for PRs", + "type": null, + "scope": null, + "additions": 123, + "deletions": 0, + "timestamp": "2026-03-24T21:23:59+01:00" + }, + { + "hash": "02db491", + "short": "fix(observatory): use inline styles to ensure SVG renders correctly", + "type": "fix", + "scope": "observatory", + "additions": 9, + "deletions": 5, + "timestamp": "2026-03-24T21:24:25+01:00" + }, + { + "hash": "d644066", + "short": "feat(auth): add session expired banner when token refresh fails", + "type": "feat", + "scope": "auth", + "additions": 376, + "deletions": 0, + "timestamp": "2026-03-24T21:24:28+01:00" + }, + { + "hash": "db077aa", + "short": "fix(manacore): add missing date-fns dependency for Docker build", + "type": "fix", + "scope": "manacore", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-24T21:27:01+01:00" + }, + { + "hash": "5c2a8d0", + "short": "fix(manacore): add date-fns to package.json for Docker build", + "type": "fix", + "scope": "manacore", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-24T21:28:54+01:00" + }, + { + "hash": "5286404", + "short": "feat(parsers): add intelligent quick-create parsers for 6 apps with multilingual support", + "type": "feat", + "scope": "parsers", + "additions": 3291, + "deletions": 94, + "timestamp": "2026-03-24T22:18:05+01:00" + }, + { + "hash": "23dac32", + "short": "feat(observatory): add tooltips, detail panel, radar chart, and atmosphere", + "type": "feat", + "scope": "observatory", + "additions": 906, + "deletions": 50, + "timestamp": "2026-03-24T22:21:04+01:00" + }, + { + "hash": "90c438e", + "short": "feat(infra): auto-generate Dockerfile COPY statements from package.json", + "type": "feat", + "scope": "infra", + "additions": 591, + "deletions": 218, + "timestamp": "2026-03-24T22:33:07+01:00" + }, + { + "hash": "bf7517d", + "short": "feat(auth): add SessionExpiredBanner to all remaining web apps", + "type": "feat", + "scope": "auth", + "additions": 842, + "deletions": 19, + "timestamp": "2026-03-24T22:35:13+01:00" + }, + { + "hash": "f2488f8", + "short": "feat(infra): add workspace dependency audit script", + "type": "feat", + "scope": "infra", + "additions": 696, + "deletions": 231, + "timestamp": "2026-03-24T22:36:11+01:00" + }, + { + "hash": "8356ac6", + "short": "test(auth): add unit tests for local JWKS cache", + "type": "test", + "scope": "auth", + "additions": 353, + "deletions": 0, + "timestamp": "2026-03-24T22:36:22+01:00" + }, + { + "hash": "42dd7d2", + "short": "fix(shared-help): harden help system with XSS protection, i18n, type safety, and reference implementation", + "type": "fix", + "scope": "shared-help", + "additions": 855, + "deletions": 811, + "timestamp": "2026-03-24T22:38:46+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-24/macher.md b/devlog/2026-03-24/macher.md new file mode 100644 index 000000000..acb29aed4 --- /dev/null +++ b/devlog/2026-03-24/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-24 +day: 63 +view: macher +weekday: Dienstag +commits: 79 +review: written +--- + +# Dienstag, 2026-03-24 — Tag 63 (Macher-Sicht) + +## Stats + +79 Commits, +24763 / −4636 LoC, 364 Files. Top-Dirs: `apps/manacore/apps/landing` (10%), `apps/manacore/apps/web` (10%), `apps/calendar/apps/web` (9%), `apps/todo/apps/web` (6%), `apps/citycorners/apps/web` (6%). Tags: manacore, infra, todo, citycorners, manascore. Session 08:41 → 21:38 (~285 aktive Min, längster Fokus 181 Min). + +## Commits + +- `56ffcba` feat: add Ollama memory optimization, LLM metrics, and chat streaming (+463/-30) +- `52e9aa5` docs: add devlog for evening session 2026-03-23 (+270/-0) +- `8bc52f4` fix(calendar,todo): production readiness improvements (+172/-8) +- `c27f6f8` feat(shared-ui): add focusTrap action and apply to shared Modal (+75/-0) +- `fea6a8e` feat: add it.mana.how landing page for European tech sovereignty (+1209/-0) +- `5b77369` feat(calendar,todo): add focus trapping to all modals (+32/-11) +- `d7cef38` feat(calendar): localize all toast messages with i18n (+144/-29) +- `44a9e02` feat(manacore): add costs overview tab to credits page (+200/-192) +- `51f80f4` docs: add Cloudflare Pages domain configuration guide (+109/-0) +- `1a91bd7` test(calendar-web): add E2E test for 404 error page (+19/-0) +- `0110bff` feat(calendar): localize sync and sharing settings pages (+784/-88) +- `c4bdc6a` feat(calendar): localize main settings page with i18n (+155/-95) +- `490f822` docs(calendar,todo): add production readiness audit to CLAUDE.md (+95/-2) +- `6cab9a3` fix(infra): remove n8n and increase health check intervals to fix port exhaustion (+237/-129) +- `124b4f7` fix(infra): route GlitchTip DSNs internally to avoid Cloudflare roundtrip (+13/-13) +- `0ddbad9` docs: update calendar and todo production readiness audits (+202/-65) +- `fc7d294` feat(picture): add local image generation via mana-image-gen (+169/-4) +- `357fbb3` feat(manacore): rename audits to ManaScore + add methodology page (+205/-13) +- `62c5ddd` feat(project-doc-bot): migrate to shared-llm, remove OpenAI dependency (+136/-91) +- `5611f38` feat(citycorners): UX quick wins for web app (+279/-63) + +_… plus 59 weitere Commits._ diff --git a/devlog/2026-03-24/spieler.md b/devlog/2026-03-24/spieler.md new file mode 100644 index 000000000..37ff0667c --- /dev/null +++ b/devlog/2026-03-24/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-24 +day: 63 +view: spieler +weekday: Dienstag +commits: 79 +review: written +--- + +# Dienstag, 2026-03-24 — Tag 63 + +Großer Sprint-Tag mit Schwerpunkt **apps** (79 Commits). + +## Highlights + +- add Ollama memory optimization, LLM metrics, and chat streaming +- add devlog for evening session 2026-03-23 +- production readiness improvements +- add focusTrap action and apply to shared Modal +- add it.mana.how landing page for European tech sovereignty diff --git a/devlog/2026-03-25/data.json b/devlog/2026-03-25/data.json new file mode 100644 index 000000000..87bf2c486 --- /dev/null +++ b/devlog/2026-03-25/data.json @@ -0,0 +1,518 @@ +{ + "date": "2026-03-25", + "day_number": 64, + "weekday": "Mittwoch", + "commits": 45, + "authors": [ + { + "name": "Till JS", + "count": 45 + } + ], + "additions": 12544, + "deletions": 3480, + "net_lines": 9064, + "files_changed": 264, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-25T07:20:44.000Z", + "last_commit_at": "2026-03-25T23:51:26.000Z", + "total_span_minutes": 991, + "active_minutes": 213, + "pauses": [ + { + "from": "10:36", + "to": "11:55", + "minutes": 79 + }, + { + "from": "13:07", + "to": "15:08", + "minutes": 121 + }, + { + "from": "15:13", + "to": "16:05", + "minutes": 52 + }, + { + "from": "16:05", + "to": "18:48", + "minutes": 163 + }, + { + "from": "18:48", + "to": "20:28", + "minutes": 100 + }, + { + "from": "20:28", + "to": "00:51", + "minutes": 263 + } + ], + "longest_focus_minutes": 136 + }, + "top_dirs": [ + { + "path": "apps/manacore/apps/landing", + "pct": 15 + }, + { + "path": "apps/manacore/apps/web", + "pct": 15 + }, + { + "path": "apps/citycorners/apps/web", + "pct": 6 + }, + { + "path": "apps/matrix/apps/web", + "pct": 4 + }, + { + "path": "apps/citycorners/apps/backend", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 129 + }, + { + "ext": ".ts", + "count": 81 + }, + { + "ext": ".md", + "count": 51 + }, + { + "ext": "", + "count": 32 + }, + { + "ext": ".json", + "count": 29 + }, + { + "ext": ".yml", + "count": 5 + } + ], + "tags": ["citycorners", "manacore", "analytics", "infra", "observatory"], + "commits_list": [ + { + "hash": "a432c77", + "short": "docs: add devlog for evening session 2026-03-24", + "type": null, + "scope": null, + "additions": 214, + "deletions": 0, + "timestamp": "2026-03-25T08:20:44+01:00" + }, + { + "hash": "80beef2", + "short": "feat(observatory): add tabbed gallery views for plants and lakes", + "type": "feat", + "scope": "observatory", + "additions": 647, + "deletions": 3, + "timestamp": "2026-03-25T08:24:29+01:00" + }, + { + "hash": "31af413", + "short": "fix(manacore): add missing shared packages to Dockerfile", + "type": "fix", + "scope": "manacore", + "additions": 4, + "deletions": 0, + "timestamp": "2026-03-25T08:26:48+01:00" + }, + { + "hash": "336cfed", + "short": "refactor(auth): centralize appReady pattern into AuthGate component", + "type": "refactor", + "scope": "auth", + "additions": 270, + "deletions": 407, + "timestamp": "2026-03-25T08:30:31+01:00" + }, + { + "hash": "37b061f", + "short": "perf(infra): stagger Docker health check start periods", + "type": "perf", + "scope": "infra", + "additions": 57, + "deletions": 57, + "timestamp": "2026-03-25T08:31:00+01:00" + }, + { + "hash": "dd5c0d5", + "short": "feat(calendar, todo): add shared help pages", + "type": "feat", + "scope": "calendar, todo", + "additions": 1261, + "deletions": 486, + "timestamp": "2026-03-25T08:47:12+01:00" + }, + { + "hash": "1052469", + "short": "feat(infra): extend Dockerfile validator to backends and services", + "type": "feat", + "scope": "infra", + "additions": 345, + "deletions": 117, + "timestamp": "2026-03-25T08:57:10+01:00" + }, + { + "hash": "cacf8d7", + "short": "perf(shared-nestjs-auth): local JWKS verification instead of HTTP call", + "type": "perf", + "scope": "shared-nestjs-auth", + "additions": 63, + "deletions": 25, + "timestamp": "2026-03-25T08:57:24+01:00" + }, + { + "hash": "858b7f6", + "short": "ci: add audit:deps and generate:dockerfiles --check to PR workflow", + "type": null, + "scope": null, + "additions": 6, + "deletions": 0, + "timestamp": "2026-03-25T08:57:35+01:00" + }, + { + "hash": "aeca35e", + "short": "feat(observatory): add rivers, leaderboard, compare, and trends tabs", + "type": "feat", + "scope": "observatory", + "additions": 1103, + "deletions": 2, + "timestamp": "2026-03-25T09:02:42+01:00" + }, + { + "hash": "3631cc7", + "short": "docs: add Windows GPU server to project documentation", + "type": null, + "scope": null, + "additions": 61, + "deletions": 12, + "timestamp": "2026-03-25T09:04:08+01:00" + }, + { + "hash": "979103b", + "short": "fix(manacore): re-add missing shared packages to Dockerfile", + "type": "fix", + "scope": "manacore", + "additions": 4, + "deletions": 0, + "timestamp": "2026-03-25T09:09:11+01:00" + }, + { + "hash": "f0233b8", + "short": "feat(storage, chat, picture): add shared help pages", + "type": "feat", + "scope": "storage, chat, picture", + "additions": 1009, + "deletions": 0, + "timestamp": "2026-03-25T09:19:06+01:00" + }, + { + "hash": "d2264f5", + "short": "feat(analytics): add Analytics Maturity metric to ManaScore and custom event tracking to 4 apps", + "type": "feat", + "scope": "analytics", + "additions": 314, + "deletions": 4, + "timestamp": "2026-03-25T09:20:59+01:00" + }, + { + "hash": "23261aa", + "short": "fix(manacore): address critical production readiness issues", + "type": "fix", + "scope": "manacore", + "additions": 111, + "deletions": 56, + "timestamp": "2026-03-25T09:25:47+01:00" + }, + { + "hash": "bdab272", + "short": "refactor(shared-help): extract shared translations, add Zitare + Mukke help pages", + "type": "refactor", + "scope": "shared-help", + "additions": 581, + "deletions": 923, + "timestamp": "2026-03-25T09:26:26+01:00" + }, + { + "hash": "bade0a1", + "short": "feat(analytics): add custom event tracking to Storage app", + "type": "feat", + "scope": "analytics", + "additions": 34, + "deletions": 2, + "timestamp": "2026-03-25T09:34:07+01:00" + }, + { + "hash": "3075e51", + "short": "feat(analytics): add custom event tracking to Photos app", + "type": "feat", + "scope": "analytics", + "additions": 26, + "deletions": 1, + "timestamp": "2026-03-25T09:59:42+01:00" + }, + { + "hash": "623ce1f", + "short": "feat(manacore): add UX improvements across dashboard", + "type": "feat", + "scope": "manacore", + "additions": 392, + "deletions": 30, + "timestamp": "2026-03-25T10:00:27+01:00" + }, + { + "hash": "12b3c4f", + "short": "feat(analytics): add custom event tracking to Context, SkillTree, Planta, Questions", + "type": "feat", + "scope": "analytics", + "additions": 75, + "deletions": 4, + "timestamp": "2026-03-25T10:13:05+01:00" + }, + { + "hash": "7da67fe", + "short": "feat(manacore): nice-to-have UX polish", + "type": "feat", + "scope": "manacore", + "additions": 151, + "deletions": 27, + "timestamp": "2026-03-25T10:20:12+01:00" + }, + { + "hash": "73d5529", + "short": "fix(manacore): fix white screen when toggling todo completion in dashboard", + "type": "fix", + "scope": "manacore", + "additions": 30, + "deletions": 2, + "timestamp": "2026-03-25T10:21:44+01:00" + }, + { + "hash": "422b4f9", + "short": "fix(monitoring): add missing prom-client dependency to 4 backends", + "type": "fix", + "scope": "monitoring", + "additions": 745, + "deletions": 508, + "timestamp": "2026-03-25T10:22:25+01:00" + }, + { + "hash": "7077c0a", + "short": "feat(help): add help pages to 10 remaining web apps", + "type": "feat", + "scope": "help", + "additions": 1937, + "deletions": 0, + "timestamp": "2026-03-25T10:36:22+01:00" + }, + { + "hash": "0519440", + "short": "refactor(manacore): centralize localStorage keys in storage-keys config", + "type": "refactor", + "scope": "manacore", + "additions": 19, + "deletions": 2, + "timestamp": "2026-03-25T10:36:40+01:00" + }, + { + "hash": "59c8974", + "short": "refactor(manacore): use STORAGE_KEYS in all remaining localStorage calls", + "type": "refactor", + "scope": "manacore", + "additions": 10, + "deletions": 6, + "timestamp": "2026-03-25T11:55:49+01:00" + }, + { + "hash": "1fe8f89", + "short": "feat(analytics): add custom event tracking to NutriPhi and ManaDeck", + "type": "feat", + "scope": "analytics", + "additions": 25, + "deletions": 0, + "timestamp": "2026-03-25T12:12:01+01:00" + }, + { + "hash": "3376b04", + "short": "fix(auth): resolve hardcoded localhost in user-settings across all web apps", + "type": "fix", + "scope": "auth", + "additions": 92, + "deletions": 50, + "timestamp": "2026-03-25T12:40:30+01:00" + }, + { + "hash": "8b96b82", + "short": "feat(citycorners): add 7 new location categories with 35 seed entries", + "type": "feat", + "scope": "citycorners", + "additions": 702, + "deletions": 25, + "timestamp": "2026-03-25T12:53:04+01:00" + }, + { + "hash": "d888634", + "short": "fix(infra): add missing Zitare, SkillTree, Planta routes to Cloudflare tunnel", + "type": "fix", + "scope": "infra", + "additions": 18, + "deletions": 0, + "timestamp": "2026-03-25T12:54:11+01:00" + }, + { + "hash": "5833b05", + "short": "fix(citycorners): build shared-pwa package in web Dockerfile", + "type": "fix", + "scope": "citycorners", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-25T12:54:34+01:00" + }, + { + "hash": "c7f2f91", + "short": "fix(citycorners): add missing leaflet.markercluster dependency", + "type": "fix", + "scope": "citycorners", + "additions": 335, + "deletions": 480, + "timestamp": "2026-03-25T12:57:46+01:00" + }, + { + "hash": "68ce6e7", + "short": "fix(citycorners): add missing favicon.png for web app", + "type": "fix", + "scope": "citycorners", + "additions": 0, + "deletions": 0, + "timestamp": "2026-03-25T13:00:34+01:00" + }, + { + "hash": "6464a01", + "short": "fix(storage): add shared-pwa build step and help packages to web Dockerfile", + "type": "fix", + "scope": "storage", + "additions": 6, + "deletions": 0, + "timestamp": "2026-03-25T13:01:17+01:00" + }, + { + "hash": "06bf150", + "short": "refactor(manalink): improve chat layout with message grouping, hover actions, and command palette", + "type": "refactor", + "scope": "manalink", + "additions": 219, + "deletions": 82, + "timestamp": "2026-03-25T13:02:35+01:00" + }, + { + "hash": "9aa5169", + "short": "fix(storage): move onboarding modal outside flex layout container", + "type": "fix", + "scope": "storage", + "additions": 6, + "deletions": 5, + "timestamp": "2026-03-25T13:07:29+01:00" + }, + { + "hash": "491c71e", + "short": "fix(onboarding): move modal outside flex layout containers in 8 apps", + "type": "fix", + "scope": "onboarding", + "additions": 45, + "deletions": 39, + "timestamp": "2026-03-25T15:08:34+01:00" + }, + { + "hash": "89e32d4", + "short": "feat(citycorners): add open/closed badges, map category filter, opening hours", + "type": "feat", + "scope": "citycorners", + "additions": 310, + "deletions": 39, + "timestamp": "2026-03-25T15:09:09+01:00" + }, + { + "hash": "b9a9052", + "short": "feat(manascore): add extended codebase metrics to all app audits", + "type": "feat", + "scope": "manascore", + "additions": 326, + "deletions": 4, + "timestamp": "2026-03-25T15:12:15+01:00" + }, + { + "hash": "6c1b472", + "short": "feat(manadeck): add Docker deployment for backend and web", + "type": "feat", + "scope": "manadeck", + "additions": 160, + "deletions": 2, + "timestamp": "2026-03-25T15:13:45+01:00" + }, + { + "hash": "8e3af23", + "short": "fix(citycorners): add shared-types to web Dockerfile", + "type": "fix", + "scope": "citycorners", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-25T15:13:48+01:00" + }, + { + "hash": "3500ac5", + "short": "fix(citycorners): replace @const with direct function calls in templates", + "type": "fix", + "scope": "citycorners", + "additions": 46, + "deletions": 6, + "timestamp": "2026-03-25T16:05:37+01:00" + }, + { + "hash": "1edbc19", + "short": "feat(manalink): optimize mobile layout with bottom sheets, compact header, and touch interactions", + "type": "feat", + "scope": "manalink", + "additions": 289, + "deletions": 70, + "timestamp": "2026-03-25T18:48:49+01:00" + }, + { + "hash": "7303709", + "short": "feat(citycorners): add review and rating system", + "type": "feat", + "scope": "citycorners", + "additions": 486, + "deletions": 3, + "timestamp": "2026-03-25T20:28:23+01:00" + }, + { + "hash": "23ea63a", + "short": "fix(citycorners): update controller spec for ReviewService dependency", + "type": "fix", + "scope": "citycorners", + "additions": 6, + "deletions": 1, + "timestamp": "2026-03-26T00:51:26+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-25/macher.md b/devlog/2026-03-25/macher.md new file mode 100644 index 000000000..e737b0488 --- /dev/null +++ b/devlog/2026-03-25/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-25 +day: 64 +view: macher +weekday: Mittwoch +commits: 45 +review: written +--- + +# Mittwoch, 2026-03-25 — Tag 64 (Macher-Sicht) + +## Stats + +45 Commits, +12544 / −3480 LoC, 264 Files. Top-Dirs: `apps/manacore/apps/landing` (15%), `apps/manacore/apps/web` (15%), `apps/citycorners/apps/web` (6%), `apps/matrix/apps/web` (4%), `apps/citycorners/apps/backend` (4%). Tags: citycorners, manacore, analytics, infra, observatory. Session 07:20 → 23:51 (~213 aktive Min, längster Fokus 136 Min). + +## Commits + +- `a432c77` docs: add devlog for evening session 2026-03-24 (+214/-0) +- `80beef2` feat(observatory): add tabbed gallery views for plants and lakes (+647/-3) +- `31af413` fix(manacore): add missing shared packages to Dockerfile (+4/-0) +- `336cfed` refactor(auth): centralize appReady pattern into AuthGate component (+270/-407) +- `37b061f` perf(infra): stagger Docker health check start periods (+57/-57) +- `dd5c0d5` feat(calendar, todo): add shared help pages (+1261/-486) +- `1052469` feat(infra): extend Dockerfile validator to backends and services (+345/-117) +- `cacf8d7` perf(shared-nestjs-auth): local JWKS verification instead of HTTP call (+63/-25) +- `858b7f6` ci: add audit:deps and generate:dockerfiles --check to PR workflow (+6/-0) +- `aeca35e` feat(observatory): add rivers, leaderboard, compare, and trends tabs (+1103/-2) +- `3631cc7` docs: add Windows GPU server to project documentation (+61/-12) +- `979103b` fix(manacore): re-add missing shared packages to Dockerfile (+4/-0) +- `f0233b8` feat(storage, chat, picture): add shared help pages (+1009/-0) +- `d2264f5` feat(analytics): add Analytics Maturity metric to ManaScore and custom event tracking to 4 apps (+314/-4) +- `23261aa` fix(manacore): address critical production readiness issues (+111/-56) +- `bdab272` refactor(shared-help): extract shared translations, add Zitare + Mukke help pages (+581/-923) +- `bade0a1` feat(analytics): add custom event tracking to Storage app (+34/-2) +- `3075e51` feat(analytics): add custom event tracking to Photos app (+26/-1) +- `623ce1f` feat(manacore): add UX improvements across dashboard (+392/-30) +- `12b3c4f` feat(analytics): add custom event tracking to Context, SkillTree, Planta, Questions (+75/-4) + +_… plus 25 weitere Commits._ diff --git a/devlog/2026-03-25/spieler.md b/devlog/2026-03-25/spieler.md new file mode 100644 index 000000000..39c5517ff --- /dev/null +++ b/devlog/2026-03-25/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-25 +day: 64 +view: spieler +weekday: Mittwoch +commits: 45 +review: written +--- + +# Mittwoch, 2026-03-25 — Tag 64 + +Großer Sprint-Tag mit Schwerpunkt **apps** (45 Commits). + +## Highlights + +- add devlog for evening session 2026-03-24 +- add tabbed gallery views for plants and lakes +- add missing shared packages to Dockerfile +- stagger Docker health check start periods +- add shared help pages diff --git a/devlog/2026-03-26/data.json b/devlog/2026-03-26/data.json new file mode 100644 index 000000000..3c3852bcf --- /dev/null +++ b/devlog/2026-03-26/data.json @@ -0,0 +1,648 @@ +{ + "date": "2026-03-26", + "day_number": 65, + "weekday": "Donnerstag", + "commits": 60, + "authors": [ + { + "name": "Till JS", + "count": 60 + } + ], + "additions": 20994, + "deletions": 4284, + "net_lines": 16710, + "files_changed": 328, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-26T07:51:06.000Z", + "last_commit_at": "2026-03-26T21:00:12.000Z", + "total_span_minutes": 789, + "active_minutes": 343, + "pauses": [ + { + "from": "09:38", + "to": "10:30", + "minutes": 51 + }, + { + "from": "11:00", + "to": "11:35", + "minutes": 34 + }, + { + "from": "13:43", + "to": "14:23", + "minutes": 40 + }, + { + "from": "14:33", + "to": "16:18", + "minutes": 104 + }, + { + "from": "16:18", + "to": "19:55", + "minutes": 217 + } + ], + "longest_focus_minutes": 128 + }, + "top_dirs": [ + { + "path": "apps/storage/apps/web", + "pct": 12 + }, + { + "path": "apps/zitare/apps/web", + "pct": 9 + }, + { + "path": "services/mana-core-auth/src", + "pct": 9 + }, + { + "path": "apps/citycorners/apps/web", + "pct": 4 + }, + { + "path": "packages/shared-auth-ui/src", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 206 + }, + { + "ext": ".svelte", + "count": 203 + }, + { + "ext": ".json", + "count": 44 + }, + { + "ext": "", + "count": 12 + }, + { + "ext": ".md", + "count": 6 + }, + { + "ext": ".yaml", + "count": 5 + } + ], + "tags": ["zitare", "storage", "auth", "todo", "tags"], + "commits_list": [ + { + "hash": "5a3ee5c", + "short": "feat(todo): improve task UI with priority checkboxes, drag styling, and route fix", + "type": "feat", + "scope": "todo", + "additions": 77, + "deletions": 39, + "timestamp": "2026-03-26T08:51:06+01:00" + }, + { + "hash": "cccf1a2", + "short": "fix(todo): add shared-help-content to web Dockerfile", + "type": "fix", + "scope": "todo", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-26T08:57:31+01:00" + }, + { + "hash": "3efa2d5", + "short": "fix(todo): add shared-feedback-types to web Dockerfile", + "type": "fix", + "scope": "todo", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-26T09:00:51+01:00" + }, + { + "hash": "30a0a65", + "short": "fix(zitare): add missing Tailwind CSS v4 vite plugin", + "type": "fix", + "scope": "zitare", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-26T09:05:29+01:00" + }, + { + "hash": "2d11ba6", + "short": "refactor(auth): remove all Google/Apple social login code", + "type": "refactor", + "scope": "auth", + "additions": 500, + "deletions": 2254, + "timestamp": "2026-03-26T09:12:30+01:00" + }, + { + "hash": "2150452", + "short": "feat(storage): add audio player with frequency visualizer", + "type": "feat", + "scope": "storage", + "additions": 1226, + "deletions": 1, + "timestamp": "2026-03-26T09:16:27+01:00" + }, + { + "hash": "2ebb8a0", + "short": "fix(zitare): add shared-help-types and shared-help-ui to web Dockerfile", + "type": "fix", + "scope": "zitare", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-26T09:20:43+01:00" + }, + { + "hash": "5989652", + "short": "feat(storage): add video, PDF, text/code, and markdown preview", + "type": "feat", + "scope": "storage", + "additions": 244, + "deletions": 6, + "timestamp": "2026-03-26T09:29:12+01:00" + }, + { + "hash": "c7cf251", + "short": "docs(storage): document file preview system and audio player architecture", + "type": "docs", + "scope": "storage", + "additions": 38, + "deletions": 0, + "timestamp": "2026-03-26T09:33:11+01:00" + }, + { + "hash": "1095202", + "short": "fix(todo): increase Node heap size for web Docker build", + "type": "fix", + "scope": "todo", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-26T09:38:51+01:00" + }, + { + "hash": "3091da9", + "short": "feat(auth): add WebAuthn/Passkey support across all apps", + "type": "feat", + "scope": "auth", + "additions": 1849, + "deletions": 4, + "timestamp": "2026-03-26T10:30:03+01:00" + }, + { + "hash": "c4d5520", + "short": "feat(auth): add PasskeyManager component and production config", + "type": "feat", + "scope": "auth", + "additions": 864, + "deletions": 0, + "timestamp": "2026-03-26T10:49:57+01:00" + }, + { + "hash": "ac4baca", + "short": "feat(manacore): integrate PasskeyManager in settings page", + "type": "feat", + "scope": "manacore", + "additions": 44, + "deletions": 0, + "timestamp": "2026-03-26T11:00:59+01:00" + }, + { + "hash": "4e3b920", + "short": "fix(storage): add shared-types to web Dockerfile", + "type": "fix", + "scope": "storage", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-26T11:35:22+01:00" + }, + { + "hash": "46eaea6", + "short": "fix(zitare): add shared-help-content to web Dockerfile", + "type": "fix", + "scope": "zitare", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-26T11:43:53+01:00" + }, + { + "hash": "259a5c9", + "short": "fix(zitare): add spiral-db build step to web Dockerfile", + "type": "fix", + "scope": "zitare", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-26T11:46:48+01:00" + }, + { + "hash": "7f27f86", + "short": "fix(zitare): add all missing transitive dependencies to web Dockerfile", + "type": "fix", + "scope": "zitare", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-26T11:50:07+01:00" + }, + { + "hash": "099d12d", + "short": "fix(zitare): increase Node memory limit for web build", + "type": "fix", + "scope": "zitare", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-26T11:52:30+01:00" + }, + { + "hash": "52991a8", + "short": "fix(storage): increase Node heap size for web Docker build", + "type": "fix", + "scope": "storage", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-26T12:00:50+01:00" + }, + { + "hash": "08629b8", + "short": "refactor(zitare): move settings, spiral, themes to account dropdown", + "type": "refactor", + "scope": "zitare", + "additions": 4, + "deletions": 3, + "timestamp": "2026-03-26T12:12:42+01:00" + }, + { + "hash": "c681a5d", + "short": "docs(manascore): update Storage score to 87 — rich previews, audio player, live deployed", + "type": "docs", + "scope": "manascore", + "additions": 63, + "deletions": 41, + "timestamp": "2026-03-26T12:14:59+01:00" + }, + { + "hash": "cdfbfcd", + "short": "feat(infra): add sveltekit-base image and build-app script for Mac Mini", + "type": "feat", + "scope": "infra", + "additions": 233, + "deletions": 61, + "timestamp": "2026-03-26T12:17:48+01:00" + }, + { + "hash": "ba6b953", + "short": "fix(infra): use container names in build-app.sh for reliability", + "type": "fix", + "scope": "infra", + "additions": 35, + "deletions": 21, + "timestamp": "2026-03-26T12:36:10+01:00" + }, + { + "hash": "9f66800", + "short": "feat(storage): replace loading spinners with skeleton shimmer screens", + "type": "feat", + "scope": "storage", + "additions": 182, + "deletions": 16, + "timestamp": "2026-03-26T12:58:36+01:00" + }, + { + "hash": "56307a3", + "short": "feat(storage): add SVG empty state illustrations for all pages", + "type": "feat", + "scope": "storage", + "additions": 371, + "deletions": 39, + "timestamp": "2026-03-26T13:01:02+01:00" + }, + { + "hash": "5668387", + "short": "feat(storage): add ShareModal for creating share links", + "type": "feat", + "scope": "storage", + "additions": 410, + "deletions": 6, + "timestamp": "2026-03-26T13:04:20+01:00" + }, + { + "hash": "a439d5d", + "short": "feat(storage): add French, Spanish, and Italian translations", + "type": "feat", + "scope": "storage", + "additions": 234, + "deletions": 0, + "timestamp": "2026-03-26T13:05:09+01:00" + }, + { + "hash": "8b5889e", + "short": "feat(storage): add Swagger/OpenAPI documentation", + "type": "feat", + "scope": "storage", + "additions": 506, + "deletions": 481, + "timestamp": "2026-03-26T13:10:44+01:00" + }, + { + "hash": "1c844f4", + "short": "fix(manacore): increase Node heap size for Docker build", + "type": "fix", + "scope": "manacore", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-26T13:13:53+01:00" + }, + { + "hash": "8692b08", + "short": "feat(storage): add structured logging with Pino", + "type": "feat", + "scope": "storage", + "additions": 393, + "deletions": 109, + "timestamp": "2026-03-26T13:18:58+01:00" + }, + { + "hash": "9611544", + "short": "feat(storage): show real storage usage stats in settings", + "type": "feat", + "scope": "storage", + "additions": 38, + "deletions": 3, + "timestamp": "2026-03-26T13:20:54+01:00" + }, + { + "hash": "5c69dc7", + "short": "feat(storage): add file tagging UI with TagPicker component", + "type": "feat", + "scope": "storage", + "additions": 339, + "deletions": 0, + "timestamp": "2026-03-26T13:39:44+01:00" + }, + { + "hash": "a85682d", + "short": "feat(storage): add bulk file operations with multi-select", + "type": "feat", + "scope": "storage", + "additions": 275, + "deletions": 2, + "timestamp": "2026-03-26T13:42:45+01:00" + }, + { + "hash": "8a1cb2d", + "short": "feat(storage): add integration E2E tests with real backend", + "type": "feat", + "scope": "storage", + "additions": 181, + "deletions": 0, + "timestamp": "2026-03-26T13:43:51+01:00" + }, + { + "hash": "e676ba6", + "short": "fix(web): use JSON.stringify for env var injection in all hooks.server.ts", + "type": "fix", + "scope": "web", + "additions": 101, + "deletions": 63, + "timestamp": "2026-03-26T14:23:29+01:00" + }, + { + "hash": "6efeadb", + "short": "docs: add base images and build-app.sh documentation", + "type": null, + "scope": null, + "additions": 56, + "deletions": 0, + "timestamp": "2026-03-26T14:26:26+01:00" + }, + { + "hash": "13681df", + "short": "feat(shared): add helpHref/themesHref to PillNav, shared Mana & Privacy FAQs", + "type": "feat", + "scope": "shared", + "additions": 242, + "deletions": 11, + "timestamp": "2026-03-26T14:28:38+01:00" + }, + { + "hash": "40ace53", + "short": "feat(help): improve help content across all 18 apps, add shared Mana & Privacy FAQs", + "type": "feat", + "scope": "help", + "additions": 1439, + "deletions": 189, + "timestamp": "2026-03-26T14:32:23+01:00" + }, + { + "hash": "cf9cbeb", + "short": "feat(apps): add missing help, feedback, profile, themes, auth pages for cross-app consistency", + "type": "feat", + "scope": "apps", + "additions": 953, + "deletions": 0, + "timestamp": "2026-03-26T14:33:34+01:00" + }, + { + "hash": "90e6135", + "short": "feat(zitare): complete i18n coverage for all pages", + "type": "feat", + "scope": "zitare", + "additions": 209, + "deletions": 72, + "timestamp": "2026-03-26T16:18:00+01:00" + }, + { + "hash": "f5a9edc", + "short": "feat(auth): add TOTP two-factor authentication across all apps", + "type": "feat", + "scope": "auth", + "additions": 1794, + "deletions": 163, + "timestamp": "2026-03-26T19:55:09+01:00" + }, + { + "hash": "96ff16b", + "short": "feat(zitare): add loading states to list operations", + "type": "feat", + "scope": "zitare", + "additions": 82, + "deletions": 29, + "timestamp": "2026-03-26T19:57:26+01:00" + }, + { + "hash": "326acf0", + "short": "fix(zitare): add error feedback for silent API failures", + "type": "fix", + "scope": "zitare", + "additions": 20, + "deletions": 5, + "timestamp": "2026-03-26T20:03:07+01:00" + }, + { + "hash": "2b0b902", + "short": "fix(credit-operations): point package exports to compiled dist/ instead of raw src/", + "type": "fix", + "scope": "credit-operations", + "additions": 4, + "deletions": 5, + "timestamp": "2026-03-26T20:03:22+01:00" + }, + { + "hash": "5bb96db", + "short": "feat(zitare): add maxlength validation to list create form", + "type": "feat", + "scope": "zitare", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-26T20:10:03+01:00" + }, + { + "hash": "6107d57", + "short": "feat(zitare): expand settings with display options", + "type": "feat", + "scope": "zitare", + "additions": 120, + "deletions": 1, + "timestamp": "2026-03-26T20:28:22+01:00" + }, + { + "hash": "b7d1d2e", + "short": "feat(zitare): add category filter chips to search results", + "type": "feat", + "scope": "zitare", + "additions": 81, + "deletions": 11, + "timestamp": "2026-03-26T20:30:04+01:00" + }, + { + "hash": "e0e9ede", + "short": "test(auth): add passkey and 2FA controller tests (35 tests)", + "type": "test", + "scope": "auth", + "additions": 1092, + "deletions": 0, + "timestamp": "2026-03-26T20:35:06+01:00" + }, + { + "hash": "7c7e5eb", + "short": "feat(zitare): add favorites count badge and respect display settings", + "type": "feat", + "scope": "zitare", + "additions": 14, + "deletions": 2, + "timestamp": "2026-03-26T20:43:31+01:00" + }, + { + "hash": "0c479b3", + "short": "feat(tags): implement cross-app tag system with groups and entity links", + "type": "feat", + "scope": "tags", + "additions": 1412, + "deletions": 5, + "timestamp": "2026-03-26T20:43:34+01:00" + }, + { + "hash": "40b55eb", + "short": "feat(zitare): add search and sort to category detail page", + "type": "feat", + "scope": "zitare", + "additions": 88, + "deletions": 11, + "timestamp": "2026-03-26T20:47:35+01:00" + }, + { + "hash": "1316ef5", + "short": "feat(zitare): show author bio on quote cards", + "type": "feat", + "scope": "zitare", + "additions": 30, + "deletions": 1, + "timestamp": "2026-03-26T20:48:33+01:00" + }, + { + "hash": "ce900d5", + "short": "feat(todo): integrate shared TagStrip and createTagStore", + "type": "feat", + "scope": "todo", + "additions": 333, + "deletions": 103, + "timestamp": "2026-03-26T20:51:55+01:00" + }, + { + "hash": "69aa837", + "short": "feat(contacts,calendar): integrate shared TagStrip and createTagStore", + "type": "feat", + "scope": "contacts,calendar", + "additions": 154, + "deletions": 175, + "timestamp": "2026-03-26T21:05:50+01:00" + }, + { + "hash": "7073756", + "short": "feat(auth): UX improvements for passkeys, 2FA, and password management", + "type": "feat", + "scope": "auth", + "additions": 903, + "deletions": 208, + "timestamp": "2026-03-26T21:15:09+01:00" + }, + { + "hash": "9c8bae3", + "short": "fix(shared-nestjs-auth): accept multiple JWT issuers for Docker/public URL mismatch", + "type": "fix", + "scope": "shared-nestjs-auth", + "additions": 12, + "deletions": 3, + "timestamp": "2026-03-26T21:18:03+01:00" + }, + { + "hash": "91116bf", + "short": "feat(apps): integrate shared TagStrip into all 15 remaining apps", + "type": "feat", + "scope": "apps", + "additions": 1852, + "deletions": 93, + "timestamp": "2026-03-26T21:41:14+01:00" + }, + { + "hash": "11ab265", + "short": "fix(tags): add FK constraint, token validation, input validation", + "type": "fix", + "scope": "tags", + "additions": 46, + "deletions": 8, + "timestamp": "2026-03-26T21:49:21+01:00" + }, + { + "hash": "0dfd603", + "short": "feat(auth): rate limit feedback, audit log UI, and E2E tests", + "type": "feat", + "scope": "auth", + "additions": 1061, + "deletions": 2, + "timestamp": "2026-03-26T21:58:56+01:00" + }, + { + "hash": "4ddff84", + "short": "fix(tags): transaction on sync, scroll indicator, backend tests (37 tests)", + "type": "fix", + "scope": "tags", + "additions": 770, + "deletions": 37, + "timestamp": "2026-03-26T22:00:12+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-26/macher.md b/devlog/2026-03-26/macher.md new file mode 100644 index 000000000..4d3763954 --- /dev/null +++ b/devlog/2026-03-26/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-26 +day: 65 +view: macher +weekday: Donnerstag +commits: 60 +review: written +--- + +# Donnerstag, 2026-03-26 — Tag 65 (Macher-Sicht) + +## Stats + +60 Commits, +20994 / −4284 LoC, 328 Files. Top-Dirs: `apps/storage/apps/web` (12%), `apps/zitare/apps/web` (9%), `services/mana-core-auth/src` (9%), `apps/citycorners/apps/web` (4%), `packages/shared-auth-ui/src` (4%). Tags: zitare, storage, auth, todo, tags. Session 07:51 → 21:00 (~343 aktive Min, längster Fokus 128 Min). + +## Commits + +- `5a3ee5c` feat(todo): improve task UI with priority checkboxes, drag styling, and route fix (+77/-39) +- `cccf1a2` fix(todo): add shared-help-content to web Dockerfile (+1/-0) +- `3efa2d5` fix(todo): add shared-feedback-types to web Dockerfile (+1/-0) +- `30a0a65` fix(zitare): add missing Tailwind CSS v4 vite plugin (+2/-0) +- `2d11ba6` refactor(auth): remove all Google/Apple social login code (+500/-2254) +- `2150452` feat(storage): add audio player with frequency visualizer (+1226/-1) +- `2ebb8a0` fix(zitare): add shared-help-types and shared-help-ui to web Dockerfile (+2/-0) +- `5989652` feat(storage): add video, PDF, text/code, and markdown preview (+244/-6) +- `c7cf251` docs(storage): document file preview system and audio player architecture (+38/-0) +- `1095202` fix(todo): increase Node heap size for web Docker build (+1/-1) +- `3091da9` feat(auth): add WebAuthn/Passkey support across all apps (+1849/-4) +- `c4d5520` feat(auth): add PasskeyManager component and production config (+864/-0) +- `ac4baca` feat(manacore): integrate PasskeyManager in settings page (+44/-0) +- `4e3b920` fix(storage): add shared-types to web Dockerfile (+1/-0) +- `46eaea6` fix(zitare): add shared-help-content to web Dockerfile (+1/-0) +- `259a5c9` fix(zitare): add spiral-db build step to web Dockerfile (+3/-0) +- `7f27f86` fix(zitare): add all missing transitive dependencies to web Dockerfile (+3/-0) +- `099d12d` fix(zitare): increase Node memory limit for web build (+1/-0) +- `52991a8` fix(storage): increase Node heap size for web Docker build (+1/-0) +- `08629b8` refactor(zitare): move settings, spiral, themes to account dropdown (+4/-3) + +_… plus 40 weitere Commits._ diff --git a/devlog/2026-03-26/spieler.md b/devlog/2026-03-26/spieler.md new file mode 100644 index 000000000..c3f200947 --- /dev/null +++ b/devlog/2026-03-26/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-26 +day: 65 +view: spieler +weekday: Donnerstag +commits: 60 +review: written +--- + +# Donnerstag, 2026-03-26 — Tag 65 + +Großer Sprint-Tag mit Schwerpunkt **apps** (60 Commits). + +## Highlights + +- improve task UI with priority checkboxes, drag styling, and route fix +- add shared-help-content to web Dockerfile +- add shared-feedback-types to web Dockerfile +- add missing Tailwind CSS v4 vite plugin +- add audio player with frequency visualizer diff --git a/devlog/2026-03-27/data.json b/devlog/2026-03-27/data.json new file mode 100644 index 000000000..129b9d56a --- /dev/null +++ b/devlog/2026-03-27/data.json @@ -0,0 +1,697 @@ +{ + "date": "2026-03-27", + "day_number": 66, + "weekday": "Freitag", + "commits": 66, + "authors": [ + { + "name": "Till JS", + "count": 66 + } + ], + "additions": 57251, + "deletions": 126214, + "net_lines": -68963, + "files_changed": 1709, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-27T10:17:58.000Z", + "last_commit_at": "2026-03-28T02:15:29.000Z", + "total_span_minutes": 958, + "active_minutes": 287, + "pauses": [ + { + "from": "13:10", + "to": "16:48", + "minutes": 218 + }, + { + "from": "16:48", + "to": "17:35", + "minutes": 47 + }, + { + "from": "17:35", + "to": "21:03", + "minutes": 207 + }, + { + "from": "22:43", + "to": "02:02", + "minutes": 199 + } + ], + "longest_focus_minutes": 112 + }, + "top_dirs": [ + { + "path": "services/mana-core-auth/src", + "pct": 11 + }, + { + "path": "packages/bot-services/src", + "pct": 3 + }, + { + "path": "apps/todo/apps/web", + "pct": 3 + }, + { + "path": "apps/inventar/apps/web", + "pct": 3 + }, + { + "path": "apps/presi/apps/backend", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 1100 + }, + { + "ext": ".svelte", + "count": 245 + }, + { + "ext": ".json", + "count": 161 + }, + { + "ext": ".go", + "count": 125 + }, + { + "ext": ".md", + "count": 85 + }, + { + "ext": "", + "count": 43 + } + ], + "tags": ["infra", "auth", "apps", "local-first", "services"], + "commits_list": [ + { + "hash": "2e4bb9b", + "short": "feat(local-first): add local-first architecture with Dexie.js, Go sync server, and Todo pilot", + "type": "feat", + "scope": "local-first", + "additions": 4388, + "deletions": 340, + "timestamp": "2026-03-27T11:17:58+01:00" + }, + { + "hash": "86d1da3", + "short": "feat(inventar): add configurable inventory management app", + "type": "feat", + "scope": "inventar", + "additions": 5050, + "deletions": 0, + "timestamp": "2026-03-27T11:21:36+01:00" + }, + { + "hash": "cc50c0c", + "short": "feat(auth): add password strength indicator and magic links", + "type": "feat", + "scope": "auth", + "additions": 430, + "deletions": 1, + "timestamp": "2026-03-27T11:23:09+01:00" + }, + { + "hash": "c6b1f83", + "short": "test(auth): add tests for audit log, magic links, and security events", + "type": "test", + "scope": "auth", + "additions": 547, + "deletions": 0, + "timestamp": "2026-03-27T11:29:24+01:00" + }, + { + "hash": "63376c1", + "short": "fix(mana-sync): correct JWKS URL to /api/auth/jwks", + "type": "fix", + "scope": "mana-sync", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-27T11:38:00+01:00" + }, + { + "hash": "17df7b3", + "short": "feat(auth): add Gilden (guilds) shared Mana pool system", + "type": "feat", + "scope": "auth", + "additions": 1900, + "deletions": 969, + "timestamp": "2026-03-27T11:38:19+01:00" + }, + { + "hash": "2624e5a", + "short": "feat(pricing): migrate to Mana Quelle S-XXL subscription tiers with new Stripe products", + "type": "feat", + "scope": "pricing", + "additions": 834, + "deletions": 440, + "timestamp": "2026-03-27T11:43:43+01:00" + }, + { + "hash": "8f56feb", + "short": "feat(auth): session management UI and improved account lockout feedback", + "type": "feat", + "scope": "auth", + "additions": 898, + "deletions": 4, + "timestamp": "2026-03-27T11:49:17+01:00" + }, + { + "hash": "b85c32f", + "short": "feat(todo): wire up browser sync with Go server", + "type": "feat", + "scope": "todo", + "additions": 62, + "deletions": 1, + "timestamp": "2026-03-27T11:50:43+01:00" + }, + { + "hash": "bac0a82", + "short": "docs(auth): document Gilden endpoints and architecture in CLAUDE.md", + "type": "docs", + "scope": "auth", + "additions": 71, + "deletions": 0, + "timestamp": "2026-03-27T11:50:56+01:00" + }, + { + "hash": "fe8f0a2", + "short": "fix(pricing): update remaining content pages to Mana Quelle naming and new prices", + "type": "fix", + "scope": "pricing", + "additions": 42, + "deletions": 46, + "timestamp": "2026-03-27T11:52:59+01:00" + }, + { + "hash": "b16e245", + "short": "feat(zitare): migrate to local-first with Dexie.js", + "type": "feat", + "scope": "zitare", + "additions": 649, + "deletions": 671, + "timestamp": "2026-03-27T12:05:01+01:00" + }, + { + "hash": "3a13355", + "short": "fix(auth): add GuildPoolService mock to credits unit tests", + "type": "fix", + "scope": "auth", + "additions": 27, + "deletions": 12, + "timestamp": "2026-03-27T12:21:37+01:00" + }, + { + "hash": "d4c6f25", + "short": "docs: add devlog for 2026-03-25 and update 2026-03-26", + "type": null, + "scope": null, + "additions": 332, + "deletions": 217, + "timestamp": "2026-03-27T12:33:06+01:00" + }, + { + "hash": "427195d", + "short": "feat(todo): add Hono + Bun server for compute-only endpoints", + "type": "feat", + "scope": "todo", + "additions": 543, + "deletions": 0, + "timestamp": "2026-03-27T12:40:28+01:00" + }, + { + "hash": "2c9a368", + "short": "feat(apps): migrate Calendar, Clock, Contacts, ManaDeck to local-first", + "type": "feat", + "scope": "apps", + "additions": 1594, + "deletions": 764, + "timestamp": "2026-03-27T13:10:07+01:00" + }, + { + "hash": "8f40de2", + "short": "docs: update CLAUDE.md and migration plan for local-first architecture", + "type": null, + "scope": null, + "additions": 62, + "deletions": 4, + "timestamp": "2026-03-27T16:48:19+01:00" + }, + { + "hash": "ce51fd5", + "short": "feat(apps): migrate Presi, Picture, Inventar, NutriPhi, Planta, Storage to local-first", + "type": "feat", + "scope": "apps", + "additions": 1621, + "deletions": 209, + "timestamp": "2026-03-27T17:35:38+01:00" + }, + { + "hash": "819568c", + "short": "feat(infra): consolidate 21 Matrix bots into Go binary + add Go API gateway", + "type": "feat", + "scope": "infra", + "additions": 9927, + "deletions": 47044, + "timestamp": "2026-03-27T21:03:00+01:00" + }, + { + "hash": "3589558", + "short": "fix(gateway): change api-gateway port to 3030 (3010 used by mukke-backend)", + "type": "fix", + "scope": "gateway", + "additions": 3, + "deletions": 3, + "timestamp": "2026-03-27T21:05:00+01:00" + }, + { + "hash": "7d1842e", + "short": "fix(gateway): use port 3060 (3010 = mukke, 3030 = chat)", + "type": "fix", + "scope": "gateway", + "additions": 3, + "deletions": 3, + "timestamp": "2026-03-27T21:07:55+01:00" + }, + { + "hash": "a70359d", + "short": "fix(gateway): use correct database name 'mana' + sslmode=disable", + "type": "fix", + "scope": "gateway", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-27T21:09:27+01:00" + }, + { + "hash": "8d880f1", + "short": "feat(apps): migrate Chat, Questions, Mukke, Context, Photos to local-first", + "type": "feat", + "scope": "apps", + "additions": 826, + "deletions": 173, + "timestamp": "2026-03-27T21:17:56+01:00" + }, + { + "hash": "c81527c", + "short": "fix(matrix-bot): remove port 4000 host mapping (conflicts with synapse)", + "type": "fix", + "scope": "matrix-bot", + "additions": 20, + "deletions": 2, + "timestamp": "2026-03-27T21:25:19+01:00" + }, + { + "hash": "a31ccc6", + "short": "feat(infra): add api.mana.how route + Prometheus scrape targets for Go services", + "type": "feat", + "scope": "infra", + "additions": 434, + "deletions": 95, + "timestamp": "2026-03-27T21:27:04+01:00" + }, + { + "hash": "7754cf6", + "short": "refactor(skilltree): replace custom idb storage with @manacore/local-store", + "type": "refactor", + "scope": "skilltree", + "additions": 217, + "deletions": 471, + "timestamp": "2026-03-27T21:32:47+01:00" + }, + { + "hash": "16e0d99", + "short": "feat(gpu-server): complete GPU server setup with AI services, monitoring, and public access", + "type": "feat", + "scope": "gpu-server", + "additions": 1245, + "deletions": 7, + "timestamp": "2026-03-27T21:35:30+01:00" + }, + { + "hash": "97ef728", + "short": "docs: update local-first migration plan and CLAUDE.md to reflect 19/19 completion", + "type": null, + "scope": null, + "additions": 38, + "deletions": 21, + "timestamp": "2026-03-27T21:36:02+01:00" + }, + { + "hash": "c67ed0d", + "short": "feat(gpu-server): add API key auth, VRAM management, and Piper TTS voices", + "type": "feat", + "scope": "gpu-server", + "additions": 65, + "deletions": 6, + "timestamp": "2026-03-27T21:54:35+01:00" + }, + { + "hash": "4b0f5a2", + "short": "feat(mana-search): rewrite search service from NestJS to Go", + "type": "feat", + "scope": "mana-search", + "additions": 1607, + "deletions": 3594, + "timestamp": "2026-03-27T21:58:40+01:00" + }, + { + "hash": "02bd9d3", + "short": "feat(apps): integrate GPU services into Picture and Chat apps", + "type": "feat", + "scope": "apps", + "additions": 239, + "deletions": 3, + "timestamp": "2026-03-27T21:59:46+01:00" + }, + { + "hash": "15deaf4", + "short": "feat(services): create mana-credits service (Hono + Bun)", + "type": "feat", + "scope": "services", + "additions": 2373, + "deletions": 0, + "timestamp": "2026-03-27T22:08:43+01:00" + }, + { + "hash": "28bbd7b", + "short": "fix(mana-search): Go best practices hardening", + "type": "fix", + "scope": "mana-search", + "additions": 41, + "deletions": 19, + "timestamp": "2026-03-27T22:09:31+01:00" + }, + { + "hash": "64f7f76", + "short": "feat(infra): add Go web crawler (mana-crawler-go)", + "type": "feat", + "scope": "infra", + "additions": 1599, + "deletions": 0, + "timestamp": "2026-03-27T22:10:45+01:00" + }, + { + "hash": "b0009c2", + "short": "refactor(credits): route credit calls to mana-credits service", + "type": "refactor", + "scope": "credits", + "additions": 59, + "deletions": 33, + "timestamp": "2026-03-27T22:13:21+01:00" + }, + { + "hash": "3e2558a", + "short": "fix(crawler): use background context for crawl jobs (outlive HTTP request)", + "type": "fix", + "scope": "crawler", + "additions": 3, + "deletions": 2, + "timestamp": "2026-03-27T22:15:36+01:00" + }, + { + "hash": "c079871", + "short": "refactor(auth): remove credits, gifts, and credit-webhooks from mana-core-auth", + "type": "refactor", + "scope": "auth", + "additions": 63, + "deletions": 4185, + "timestamp": "2026-03-27T22:19:42+01:00" + }, + { + "hash": "fa16f1f", + "short": "feat(apps): add GPU server fallback to all LLM-using apps", + "type": "feat", + "scope": "apps", + "additions": 13, + "deletions": 7, + "timestamp": "2026-03-27T22:21:20+01:00" + }, + { + "hash": "feeebfb", + "short": "feat(infra): add mana-credits to docker-compose, fix port to 3061", + "type": "feat", + "scope": "infra", + "additions": 48, + "deletions": 9, + "timestamp": "2026-03-27T22:21:54+01:00" + }, + { + "hash": "68004aa", + "short": "feat(infra): add mana-crawler Go service to docker-compose", + "type": "feat", + "scope": "infra", + "additions": 30, + "deletions": 0, + "timestamp": "2026-03-27T22:23:37+01:00" + }, + { + "hash": "d0ef667", + "short": "fix(crawler): set SSL_CERT_FILE for HTTPS in Alpine container", + "type": "fix", + "scope": "crawler", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-27T22:24:56+01:00" + }, + { + "hash": "585cdc1", + "short": "feat(mana-notify): rewrite notification service from NestJS to Go", + "type": "feat", + "scope": "mana-notify", + "additions": 2853, + "deletions": 1, + "timestamp": "2026-03-27T22:28:19+01:00" + }, + { + "hash": "313779f", + "short": "fix(crawler): skip TLS verification for outgoing crawl requests", + "type": "fix", + "scope": "crawler", + "additions": 13, + "deletions": 1, + "timestamp": "2026-03-27T22:31:03+01:00" + }, + { + "hash": "ef19018", + "short": "feat(infra): add mana-sync and mana-notify-go to docker-compose", + "type": "feat", + "scope": "infra", + "additions": 908, + "deletions": 2876, + "timestamp": "2026-03-27T22:35:05+01:00" + }, + { + "hash": "21a5f87", + "short": "docs: add comprehensive overview of local-first migration and service extraction", + "type": null, + "scope": null, + "additions": 154, + "deletions": 0, + "timestamp": "2026-03-27T22:38:13+01:00" + }, + { + "hash": "d56737f", + "short": "fix(infra): remove clock-backend references from docker-compose", + "type": "fix", + "scope": "infra", + "additions": 3, + "deletions": 5, + "timestamp": "2026-03-27T22:38:21+01:00" + }, + { + "hash": "0bf5a90", + "short": "fix(infra): change mana-notify port to 3041 (3040 used by picture-backend)", + "type": "fix", + "scope": "infra", + "additions": 3, + "deletions": 3, + "timestamp": "2026-03-27T22:39:36+01:00" + }, + { + "hash": "82de694", + "short": "fix(infra): change mana-notify port to 3042 (3041 used by citycorners)", + "type": "fix", + "scope": "infra", + "additions": 8, + "deletions": 8, + "timestamp": "2026-03-27T22:40:06+01:00" + }, + { + "hash": "32939fb", + "short": "refactor(infra): remove zitare + clock NestJS backends, add shared-hono package", + "type": "refactor", + "scope": "infra", + "additions": 1237, + "deletions": 2728, + "timestamp": "2026-03-27T22:43:46+01:00" + }, + { + "hash": "5c33962", + "short": "feat(local-first): migrate tags + task stores to reactive liveQuery across all apps", + "type": "feat", + "scope": "local-first", + "additions": 2348, + "deletions": 4389, + "timestamp": "2026-03-28T02:02:52+01:00" + }, + { + "hash": "dd2f814", + "short": "refactor(presi): replace NestJS backend with lightweight Hono server", + "type": "refactor", + "scope": "presi", + "additions": 393, + "deletions": 3038, + "timestamp": "2026-03-28T02:08:40+01:00" + }, + { + "hash": "e7a8567", + "short": "feat(services): create mana-subscriptions, remove from mana-core-auth", + "type": "feat", + "scope": "services", + "additions": 14, + "deletions": 8727, + "timestamp": "2026-03-28T02:11:42+01:00" + }, + { + "hash": "d7799ec", + "short": "refactor(photos): remove NestJS backend, use local-first + direct mana-media", + "type": "refactor", + "scope": "photos", + "additions": 243, + "deletions": 1816, + "timestamp": "2026-03-28T02:18:03+01:00" + }, + { + "hash": "ced7dd7", + "short": "feat(monitoring): add mana-sync, mana-notify, mana-crawler to Prometheus", + "type": "feat", + "scope": "monitoring", + "additions": 21, + "deletions": 0, + "timestamp": "2026-03-28T02:18:21+01:00" + }, + { + "hash": "30e124e", + "short": "feat(local-first): migrate 9 apps to reactive useLiveQuery reads", + "type": "feat", + "scope": "local-first", + "additions": 2514, + "deletions": 3122, + "timestamp": "2026-03-28T02:27:46+01:00" + }, + { + "hash": "753c685", + "short": "feat(services): create mana-analytics, remove feedback/analytics/ai from auth", + "type": "feat", + "scope": "services", + "additions": 562, + "deletions": 83, + "timestamp": "2026-03-28T02:29:24+01:00" + }, + { + "hash": "d0848ea", + "short": "test(go-services): add unit tests for mana-search-go and mana-notify-go", + "type": "test", + "scope": "go-services", + "additions": 1376, + "deletions": 0, + "timestamp": "2026-03-28T02:33:59+01:00" + }, + { + "hash": "4ff3ceb", + "short": "harden(mana-sync): fix WebSocket auth, add validation, tests, and docs", + "type": "harden", + "scope": "mana-sync", + "additions": 760, + "deletions": 32, + "timestamp": "2026-03-28T02:41:56+01:00" + }, + { + "hash": "924c152", + "short": "feat(local-first): migrate remaining 6 apps to reactive useLiveQuery reads", + "type": "feat", + "scope": "local-first", + "additions": 1818, + "deletions": 1540, + "timestamp": "2026-03-28T02:42:13+01:00" + }, + { + "hash": "61ee1ae", + "short": "feat(services): create mana-auth (Hono + Bun) — Phase 5 auth rewrite", + "type": "feat", + "scope": "services", + "additions": 1518, + "deletions": 0, + "timestamp": "2026-03-28T02:43:44+01:00" + }, + { + "hash": "4318948", + "short": "feat(mana-auth): add guilds, api-keys, me, security, auth routes", + "type": "feat", + "scope": "mana-auth", + "additions": 681, + "deletions": 125, + "timestamp": "2026-03-28T02:57:22+01:00" + }, + { + "hash": "8d36aba", + "short": "feat(infra): add Forgejo for self-hosted Git + CI/CD", + "type": "feat", + "scope": "infra", + "additions": 298, + "deletions": 97, + "timestamp": "2026-03-28T03:00:50+01:00" + }, + { + "hash": "14099cc", + "short": "docs(infra): add PORT_SCHEMA.md + update Prometheus scrape targets", + "type": "docs", + "scope": "infra", + "additions": 169, + "deletions": 14, + "timestamp": "2026-03-28T03:02:12+01:00" + }, + { + "hash": "5b67328", + "short": "feat(infra): delete mana-core-auth (NestJS), replace with mana-auth (Hono+Bun)", + "type": "feat", + "scope": "infra", + "additions": 43, + "deletions": 36123, + "timestamp": "2026-03-28T03:04:01+01:00" + }, + { + "hash": "b37a451", + "short": "refactor(stores): rewrite NutriPhi + Mukke stores to use IndexedDB", + "type": "refactor", + "scope": "stores", + "additions": 1327, + "deletions": 2126, + "timestamp": "2026-03-28T03:12:37+01:00" + }, + { + "hash": "28bf9e5", + "short": "fix(shared-auth): add explicit AuthServiceInterface to fix TS inference truncation", + "type": "fix", + "scope": "shared-auth", + "additions": 79, + "deletions": 3, + "timestamp": "2026-03-28T03:15:29+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-27/macher.md b/devlog/2026-03-27/macher.md new file mode 100644 index 000000000..5f632a6cb --- /dev/null +++ b/devlog/2026-03-27/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-27 +day: 66 +view: macher +weekday: Freitag +commits: 66 +review: written +--- + +# Freitag, 2026-03-27 — Tag 66 (Macher-Sicht) + +## Stats + +66 Commits, +57251 / −126214 LoC, 1709 Files. Top-Dirs: `services/mana-core-auth/src` (11%), `packages/bot-services/src` (3%), `apps/todo/apps/web` (3%), `apps/inventar/apps/web` (3%), `apps/presi/apps/backend` (3%). Tags: infra, auth, apps, local-first, services. Session 10:17 → 02:15 (~287 aktive Min, längster Fokus 112 Min). + +## Commits + +- `2e4bb9b` feat(local-first): add local-first architecture with Dexie.js, Go sync server, and Todo pilot (+4388/-340) +- `86d1da3` feat(inventar): add configurable inventory management app (+5050/-0) +- `cc50c0c` feat(auth): add password strength indicator and magic links (+430/-1) +- `c6b1f83` test(auth): add tests for audit log, magic links, and security events (+547/-0) +- `63376c1` fix(mana-sync): correct JWKS URL to /api/auth/jwks (+1/-1) +- `17df7b3` feat(auth): add Gilden (guilds) shared Mana pool system (+1900/-969) +- `2624e5a` feat(pricing): migrate to Mana Quelle S-XXL subscription tiers with new Stripe products (+834/-440) +- `8f56feb` feat(auth): session management UI and improved account lockout feedback (+898/-4) +- `b85c32f` feat(todo): wire up browser sync with Go server (+62/-1) +- `bac0a82` docs(auth): document Gilden endpoints and architecture in CLAUDE.md (+71/-0) +- `fe8f0a2` fix(pricing): update remaining content pages to Mana Quelle naming and new prices (+42/-46) +- `b16e245` feat(zitare): migrate to local-first with Dexie.js (+649/-671) +- `3a13355` fix(auth): add GuildPoolService mock to credits unit tests (+27/-12) +- `d4c6f25` docs: add devlog for 2026-03-25 and update 2026-03-26 (+332/-217) +- `427195d` feat(todo): add Hono + Bun server for compute-only endpoints (+543/-0) +- `2c9a368` feat(apps): migrate Calendar, Clock, Contacts, ManaDeck to local-first (+1594/-764) +- `8f40de2` docs: update CLAUDE.md and migration plan for local-first architecture (+62/-4) +- `ce51fd5` feat(apps): migrate Presi, Picture, Inventar, NutriPhi, Planta, Storage to local-first (+1621/-209) +- `819568c` feat(infra): consolidate 21 Matrix bots into Go binary + add Go API gateway (+9927/-47044) +- `3589558` fix(gateway): change api-gateway port to 3030 (3010 used by mukke-backend) (+3/-3) + +_… plus 46 weitere Commits._ diff --git a/devlog/2026-03-27/spieler.md b/devlog/2026-03-27/spieler.md new file mode 100644 index 000000000..0d18875ee --- /dev/null +++ b/devlog/2026-03-27/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-27 +day: 66 +view: spieler +weekday: Freitag +commits: 66 +review: written +--- + +# Freitag, 2026-03-27 — Tag 66 + +Großer Sprint-Tag mit Schwerpunkt **services** (66 Commits). + +## Highlights + +- add local-first architecture with Dexie.js, Go sync server, and Todo pilot +- add configurable inventory management app +- add password strength indicator and magic links +- correct JWKS URL to /api/auth/jwks +- add Gilden (guilds) shared Mana pool system diff --git a/devlog/2026-03-28/data.json b/devlog/2026-03-28/data.json new file mode 100644 index 000000000..b9398653f --- /dev/null +++ b/devlog/2026-03-28/data.json @@ -0,0 +1,882 @@ +{ + "date": "2026-03-28", + "day_number": 67, + "weekday": "Samstag", + "commits": 86, + "authors": [ + { + "name": "Till JS", + "count": 86 + } + ], + "additions": 185513, + "deletions": 109083, + "net_lines": 76430, + "files_changed": 2585, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-28T09:11:28.000Z", + "last_commit_at": "2026-03-29T00:08:51.000Z", + "total_span_minutes": 897, + "active_minutes": 247, + "pauses": [ + { + "from": "10:27", + "to": "16:03", + "minutes": 336 + }, + { + "from": "16:34", + "to": "17:35", + "minutes": 61 + }, + { + "from": "18:33", + "to": "20:28", + "minutes": 115 + }, + { + "from": "22:45", + "to": "23:28", + "minutes": 43 + }, + { + "from": "23:33", + "to": "01:08", + "minutes": 95 + } + ], + "longest_focus_minutes": 137 + }, + "top_dirs": [ + { + "path": "apps-archived/uload/apps", + "pct": 11 + }, + { + "path": "apps-archived/bauntown/apps", + "pct": 9 + }, + { + "path": "apps-archived/uload/docs", + "pct": 4 + }, + { + "path": "apps-archived/wisekeep/apps", + "pct": 4 + }, + { + "path": "apps/calendar/apps/backend", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 1197 + }, + { + "ext": ".md", + "count": 309 + }, + { + "ext": ".svelte", + "count": 303 + }, + { + "ext": ".json", + "count": 286 + }, + { + "ext": "", + "count": 125 + }, + { + "ext": ".astro", + "count": 112 + } + ], + "tags": ["docker", "landing", "infra", "packages", "apps"], + "commits_list": [ + { + "hash": "87d7966", + "short": "feat(infra): add Forgejo runner registration script", + "type": "feat", + "scope": "infra", + "additions": 49, + "deletions": 0, + "timestamp": "2026-03-28T10:11:28+01:00" + }, + { + "hash": "3fca0de", + "short": "feat(shared-hono): add credit client for Hono backends", + "type": "feat", + "scope": "shared-hono", + "additions": 129, + "deletions": 1, + "timestamp": "2026-03-28T10:13:34+01:00" + }, + { + "hash": "5a9949f", + "short": "docs: update overview — shared-hono credits done, sync is generic, assess backends", + "type": null, + "scope": null, + "additions": 8, + "deletions": 5, + "timestamp": "2026-03-28T10:15:04+01:00" + }, + { + "hash": "79080d6", + "short": "fix(apps): use explicit AuthServiceInterface in all 21 auth stores, re-enable type-check", + "type": "fix", + "scope": "apps", + "additions": 37, + "deletions": 37, + "timestamp": "2026-03-28T10:15:23+01:00" + }, + { + "hash": "7e931b1", + "short": "refactor(services): rename Go services, remove -go suffix", + "type": "refactor", + "scope": "services", + "additions": 41, + "deletions": 38, + "timestamp": "2026-03-28T10:18:40+01:00" + }, + { + "hash": "4c5e945", + "short": "docs: update CLAUDE.md with current project state", + "type": null, + "scope": null, + "additions": 44, + "deletions": 26, + "timestamp": "2026-03-28T10:21:54+01:00" + }, + { + "hash": "b60877e", + "short": "feat(packages): add shared-go package with httputil and envutil", + "type": "feat", + "scope": "packages", + "additions": 214, + "deletions": 0, + "timestamp": "2026-03-28T10:24:01+01:00" + }, + { + "hash": "5d02b04", + "short": "refactor(infra): remove citycorners + skilltree NestJS backends, clean up CI/CD", + "type": "refactor", + "scope": "infra", + "additions": 13, + "deletions": 5355, + "timestamp": "2026-03-28T10:24:23+01:00" + }, + { + "hash": "8ccf8ff", + "short": "chore: misc fixes, new services, lockfile cleanup", + "type": null, + "scope": null, + "additions": 1668, + "deletions": 3445, + "timestamp": "2026-03-28T10:27:35+01:00" + }, + { + "hash": "f628026", + "short": "fix(build): add handleHttpError for missing favicon.png in 4 apps", + "type": "fix", + "scope": "build", + "additions": 24, + "deletions": 0, + "timestamp": "2026-03-28T16:03:19+01:00" + }, + { + "hash": "4d26196", + "short": "fix(tests): update calendar event tests for pure function API, delete orphaned todo tests", + "type": "fix", + "scope": "tests", + "additions": 170, + "deletions": 672, + "timestamp": "2026-03-28T16:11:08+01:00" + }, + { + "hash": "d3d11e6", + "short": "feat(apps): create Hono compute servers for Traces, Planta, NutriPhi", + "type": "feat", + "scope": "apps", + "additions": 1161, + "deletions": 221, + "timestamp": "2026-03-28T16:16:57+01:00" + }, + { + "hash": "9c1d16f", + "short": "chore(packages): delete unused packages shared-gpu and nutriphi-database", + "type": "chore", + "scope": "packages", + "additions": 0, + "deletions": 867, + "timestamp": "2026-03-28T16:19:19+01:00" + }, + { + "hash": "ba6dbf1", + "short": "feat(apps): create Hono compute servers for Context, ManaDeck, Questions", + "type": "feat", + "scope": "apps", + "additions": 431, + "deletions": 0, + "timestamp": "2026-03-28T16:23:00+01:00" + }, + { + "hash": "bf4d9cb", + "short": "refactor(go-services): integrate shared-go into crawler + gateway, fix Dockerfiles", + "type": "refactor", + "scope": "go-services", + "additions": 1313, + "deletions": 1379, + "timestamp": "2026-03-28T16:25:30+01:00" + }, + { + "hash": "1aeb987", + "short": "refactor(packages): consolidate 3 feedback packages into @manacore/feedback", + "type": "refactor", + "scope": "packages", + "additions": 617, + "deletions": 317, + "timestamp": "2026-03-28T16:27:11+01:00" + }, + { + "hash": "0181d3f", + "short": "feat(apps): create Hono compute servers for Chat, Mukke, Picture", + "type": "feat", + "scope": "apps", + "additions": 4, + "deletions": 7, + "timestamp": "2026-03-28T16:28:14+01:00" + }, + { + "hash": "9d3c1cb", + "short": "fix: calendar test failures + storage lint error", + "type": null, + "scope": null, + "additions": 422, + "deletions": 1540, + "timestamp": "2026-03-28T16:30:46+01:00" + }, + { + "hash": "22fe807", + "short": "fix(docker): add shared-go COPY to all Go service Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 16, + "deletions": 8, + "timestamp": "2026-03-28T16:34:40+01:00" + }, + { + "hash": "1104c04", + "short": "feat(todo): add Board View Editor UI for creating and editing views", + "type": "feat", + "scope": "todo", + "additions": 1423, + "deletions": 5, + "timestamp": "2026-03-28T17:35:43+01:00" + }, + { + "hash": "d70ab97", + "short": "refactor(packages): consolidate 4 help packages into @manacore/help", + "type": "refactor", + "scope": "packages", + "additions": 368, + "deletions": 69099, + "timestamp": "2026-03-28T17:36:32+01:00" + }, + { + "hash": "1f32083", + "short": "refactor(packages): consolidate 2 subscription packages into @manacore/subscriptions", + "type": "refactor", + "scope": "packages", + "additions": 115, + "deletions": 211, + "timestamp": "2026-03-28T17:40:47+01:00" + }, + { + "hash": "edd42e4", + "short": "docs: add comprehensive architecture migration report", + "type": null, + "scope": null, + "additions": 373, + "deletions": 0, + "timestamp": "2026-03-28T17:42:12+01:00" + }, + { + "hash": "b7e67ae", + "short": "docs: add devlog for Local-First + NestJS elimination migration", + "type": null, + "scope": null, + "additions": 332, + "deletions": 0, + "timestamp": "2026-03-28T17:45:46+01:00" + }, + { + "hash": "11db6c6", + "short": "refactor(packages): consolidate 3 credit packages into @manacore/credits", + "type": "refactor", + "scope": "packages", + "additions": 100, + "deletions": 293, + "timestamp": "2026-03-28T17:46:26+01:00" + }, + { + "hash": "7e5167c", + "short": "fix(infra): fix Forgejo runner image, command, and permissions", + "type": "fix", + "scope": "infra", + "additions": 3, + "deletions": 1, + "timestamp": "2026-03-28T17:46:51+01:00" + }, + { + "hash": "cbd19c2", + "short": "docs: update local-first migration plan to reflect completed phases 4+5", + "type": null, + "scope": null, + "additions": 84, + "deletions": 32, + "timestamp": "2026-03-28T17:50:25+01:00" + }, + { + "hash": "5e05c53", + "short": "fix(packages): fix type errors in consolidated packages + add missing files", + "type": "fix", + "scope": "packages", + "additions": 3761, + "deletions": 6185, + "timestamp": "2026-03-28T17:53:34+01:00" + }, + { + "hash": "18fae3b", + "short": "feat(infra): add docker-compose for new Hono services + DB init", + "type": "feat", + "scope": "infra", + "additions": 124, + "deletions": 303, + "timestamp": "2026-03-28T17:54:24+01:00" + }, + { + "hash": "4aa8d87", + "short": "chore: commit remaining changes from recent sessions", + "type": null, + "scope": null, + "additions": 288, + "deletions": 38, + "timestamp": "2026-03-28T17:54:51+01:00" + }, + { + "hash": "7dd8fa8", + "short": "test(mana-sync): add E2E sync flow test script", + "type": "test", + "scope": "mana-sync", + "additions": 179, + "deletions": 0, + "timestamp": "2026-03-28T17:56:47+01:00" + }, + { + "hash": "899f615", + "short": "feat(infra+ui): deploy script v2, schema push, SyncIndicator component", + "type": "feat", + "scope": "infra+ui", + "additions": 302, + "deletions": 0, + "timestamp": "2026-03-28T18:02:06+01:00" + }, + { + "hash": "82fee01", + "short": "docs(manascore): update scores after Local-First + Hono migration", + "type": "docs", + "scope": "manascore", + "additions": 64, + "deletions": 0, + "timestamp": "2026-03-28T18:03:08+01:00" + }, + { + "hash": "e35bbcd", + "short": "fix(infra): remove depends_on references to deleted backend services", + "type": "fix", + "scope": "infra", + "additions": 2, + "deletions": 26, + "timestamp": "2026-03-28T18:03:20+01:00" + }, + { + "hash": "e7bcb23", + "short": "refactor(auth): centralize auth stores — 21 apps use createManaAuthStore factory", + "type": "refactor", + "scope": "auth", + "additions": 430, + "deletions": 6802, + "timestamp": "2026-03-28T18:04:27+01:00" + }, + { + "hash": "099a40b", + "short": "chore: replace all mana-core-auth references with mana-auth", + "type": null, + "scope": null, + "additions": 70, + "deletions": 97, + "timestamp": "2026-03-28T18:05:31+01:00" + }, + { + "hash": "79a53cf", + "short": "fix(infra): sync Prometheus + cloudflared ports with current deployment", + "type": "fix", + "scope": "infra", + "additions": 3, + "deletions": 3, + "timestamp": "2026-03-28T18:07:12+01:00" + }, + { + "hash": "456f99b", + "short": "feat(ci): add smoke tests workflow + Lighthouse audit script", + "type": "feat", + "scope": "ci", + "additions": 151, + "deletions": 0, + "timestamp": "2026-03-28T18:09:37+01:00" + }, + { + "hash": "27b70e8", + "short": "chore(mobile): align all 7 Expo apps to SDK 55", + "type": "chore", + "scope": "mobile", + "additions": 195, + "deletions": 110, + "timestamp": "2026-03-28T18:10:14+01:00" + }, + { + "hash": "73181ab", + "short": "refactor(mana-media): migrate from NestJS to Hono/Bun", + "type": "refactor", + "scope": "mana-media", + "additions": 624, + "deletions": 1238, + "timestamp": "2026-03-28T18:12:42+01:00" + }, + { + "hash": "7201dd4", + "short": "docs: update migration plan and CLAUDE.md for NestJS elimination", + "type": null, + "scope": null, + "additions": 11, + "deletions": 7, + "timestamp": "2026-03-28T18:13:51+01:00" + }, + { + "hash": "e18ac29", + "short": "docs: update architecture migration report with Phase 2 results", + "type": null, + "scope": null, + "additions": 167, + "deletions": 15, + "timestamp": "2026-03-28T18:13:58+01:00" + }, + { + "hash": "a81a153", + "short": "perf(web): disable SSR for all local-first apps", + "type": "perf", + "scope": "web", + "additions": 31, + "deletions": 0, + "timestamp": "2026-03-28T18:14:57+01:00" + }, + { + "hash": "d9e2aef", + "short": "fix(todo): homepage loading state + completed date on task items", + "type": "fix", + "scope": "todo", + "additions": 89, + "deletions": 35, + "timestamp": "2026-03-28T18:15:26+01:00" + }, + { + "hash": "38c192b", + "short": "chore: update pnpm-lock.yaml", + "type": null, + "scope": null, + "additions": 2006, + "deletions": 7419, + "timestamp": "2026-03-28T18:17:31+01:00" + }, + { + "hash": "09ccf32", + "short": "fix(mana-auth): fix schema import paths (.schema → .ts)", + "type": "fix", + "scope": "mana-auth", + "additions": 2, + "deletions": 2, + "timestamp": "2026-03-28T18:17:57+01:00" + }, + { + "hash": "1cb48b7", + "short": "docs: update devlog + migration report with Phase 2 results", + "type": null, + "scope": null, + "additions": 58, + "deletions": 5, + "timestamp": "2026-03-28T18:18:54+01:00" + }, + { + "hash": "92557ee", + "short": "feat(infra): add load testing + finalize CI/CD for Go and Hono services", + "type": "feat", + "scope": "infra", + "additions": 642, + "deletions": 8, + "timestamp": "2026-03-28T18:22:33+01:00" + }, + { + "hash": "9ba0553", + "short": "fix(docker): update sveltekit-base with renamed/new packages", + "type": "fix", + "scope": "docker", + "additions": 4, + "deletions": 6, + "timestamp": "2026-03-28T18:23:44+01:00" + }, + { + "hash": "b91d4fb", + "short": "fix(help): add missing marked dependency", + "type": "fix", + "scope": "help", + "additions": 152, + "deletions": 233, + "timestamp": "2026-03-28T18:27:17+01:00" + }, + { + "hash": "bda77cb", + "short": "feat(ui): add SyncIndicator to all 19 app layouts", + "type": "feat", + "scope": "ui", + "additions": 83, + "deletions": 87, + "timestamp": "2026-03-28T18:27:30+01:00" + }, + { + "hash": "be0e5c6", + "short": "docs: update devlog with Phase 3 — mana-media migration, load testing, CI/CD", + "type": null, + "scope": null, + "additions": 129, + "deletions": 11, + "timestamp": "2026-03-28T18:28:05+01:00" + }, + { + "hash": "2ce95d6", + "short": "chore: sync pnpm-lock.yaml with help package deps", + "type": null, + "scope": null, + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-28T18:28:19+01:00" + }, + { + "hash": "353f284", + "short": "refactor(landing): simplify apps page to responsive grid with real app URLs", + "type": "refactor", + "scope": "landing", + "additions": 95, + "deletions": 286, + "timestamp": "2026-03-28T18:33:05+01:00" + }, + { + "hash": "83a51d0", + "short": "fix(landing): fix content schema errors for manascore and devlog entries", + "type": "fix", + "scope": "landing", + "additions": 13, + "deletions": 2, + "timestamp": "2026-03-28T20:28:14+01:00" + }, + { + "hash": "105a7b0", + "short": "fix(docker): add missing packages to sveltekit-base Dockerfile", + "type": "fix", + "scope": "docker", + "additions": 9, + "deletions": 0, + "timestamp": "2026-03-28T20:46:07+01:00" + }, + { + "hash": "9ff2e91", + "short": "fix(help): re-export schemas from content.ts for loader.ts compatibility", + "type": "fix", + "scope": "help", + "additions": 16, + "deletions": 0, + "timestamp": "2026-03-28T20:52:07+01:00" + }, + { + "hash": "abf2353", + "short": "fix(help): fix createSearcher import path in HelpSearch.svelte", + "type": "fix", + "scope": "help", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-28T20:55:33+01:00" + }, + { + "hash": "9643c9b", + "short": "fix(docker): regenerate Dockerfiles for consolidated packages", + "type": "fix", + "scope": "docker", + "additions": 90, + "deletions": 68, + "timestamp": "2026-03-28T21:09:44+01:00" + }, + { + "hash": "dbf7121", + "short": "fix(landing): remove gaps, rounded corners, and heading from apps grid", + "type": "fix", + "scope": "landing", + "additions": 14, + "deletions": 32, + "timestamp": "2026-03-28T21:11:53+01:00" + }, + { + "hash": "1636738", + "short": "fix(docker): use --no-frozen-lockfile in all web Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 20, + "deletions": 20, + "timestamp": "2026-03-28T21:12:03+01:00" + }, + { + "hash": "9276d9a", + "short": "feat: GPU offload, signup limit, load tests & capacity planning", + "type": null, + "scope": null, + "additions": 683, + "deletions": 14, + "timestamp": "2026-03-28T21:14:24+01:00" + }, + { + "hash": "3575211", + "short": "feat(landing): add thematic cluster headings to apps grid", + "type": "feat", + "scope": "landing", + "additions": 81, + "deletions": 44, + "timestamp": "2026-03-28T21:15:28+01:00" + }, + { + "hash": "3f4a100", + "short": "fix(docker): remove backend-only packages from sveltekit-base", + "type": "fix", + "scope": "docker", + "additions": 3, + "deletions": 4, + "timestamp": "2026-03-28T21:17:46+01:00" + }, + { + "hash": "466f7f3", + "short": "fix(landing): heading tiles span only 1 cell like app tiles", + "type": "fix", + "scope": "landing", + "additions": 0, + "deletions": 16, + "timestamp": "2026-03-28T21:19:27+01:00" + }, + { + "hash": "0aeb046", + "short": "fix: remove stale react-native-reanimated patch (upgraded to 4.2.1)", + "type": null, + "scope": null, + "additions": 1, + "deletions": 3, + "timestamp": "2026-03-28T21:20:17+01:00" + }, + { + "hash": "b34ca93", + "short": "fix(docker): strip mobile-only patchedDependencies before pnpm install", + "type": "fix", + "scope": "docker", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-28T21:20:19+01:00" + }, + { + "hash": "99f1595", + "short": "fix(docker): remove broken sed that corrupted package.json", + "type": "fix", + "scope": "docker", + "additions": 0, + "deletions": 2, + "timestamp": "2026-03-28T21:21:42+01:00" + }, + { + "hash": "b45ddbb", + "short": "refactor: remove local AI services from Mac Mini, GPU-only architecture", + "type": null, + "scope": null, + "additions": 109, + "deletions": 369, + "timestamp": "2026-03-28T21:23:37+01:00" + }, + { + "hash": "a60e5f8", + "short": "fix(ui): remove duplicate SyncIndicator imports from 9 layouts", + "type": "fix", + "scope": "ui", + "additions": 0, + "deletions": 10, + "timestamp": "2026-03-28T21:29:05+01:00" + }, + { + "hash": "e94a413", + "short": "fix(docker): remove picture-backend from compose (replaced by Hono server)", + "type": "fix", + "scope": "docker", + "additions": 3, + "deletions": 43, + "timestamp": "2026-03-28T21:31:48+01:00" + }, + { + "hash": "8e7fe45", + "short": "fix(docker): add NODE_OPTIONS to calendar-web Dockerfile (OOM fix)", + "type": "fix", + "scope": "docker", + "additions": 4, + "deletions": 4, + "timestamp": "2026-03-28T21:34:38+01:00" + }, + { + "hash": "f4cbbcc", + "short": "feat(landing): replace emojis with Phosphor icons on apps page", + "type": "feat", + "scope": "landing", + "additions": 380, + "deletions": 352, + "timestamp": "2026-03-28T21:35:33+01:00" + }, + { + "hash": "5477e6e", + "short": "fix(docker): add eslint-config + remove stale patches from all web Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 37, + "deletions": 33, + "timestamp": "2026-03-28T21:42:06+01:00" + }, + { + "hash": "0f0cca9", + "short": "fix(docker): ensure eslint-config in all web Dockerfiles, deduplicate", + "type": "fix", + "scope": "docker", + "additions": 0, + "deletions": 20, + "timestamp": "2026-03-28T21:42:35+01:00" + }, + { + "hash": "de54af6", + "short": "fix(landing): full-width category headings above app grid rows", + "type": "fix", + "scope": "landing", + "additions": 91, + "deletions": 67, + "timestamp": "2026-03-28T21:42:41+01:00" + }, + { + "hash": "fb25900", + "short": "fix(docker): fix broken COPY line concatenation in all web Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 30, + "deletions": 15, + "timestamp": "2026-03-28T21:47:12+01:00" + }, + { + "hash": "bb85a8d", + "short": "fix(landing): vertical columns layout - each category as a column", + "type": "fix", + "scope": "landing", + "additions": 13, + "deletions": 19, + "timestamp": "2026-03-28T21:48:38+01:00" + }, + { + "hash": "45ebfea", + "short": "refactor(docker): standardize all web Dockerfiles to use sveltekit-base", + "type": "refactor", + "scope": "docker", + "additions": 160, + "deletions": 1339, + "timestamp": "2026-03-28T21:56:44+01:00" + }, + { + "hash": "53f90ce", + "short": "fix(docker): add content package build step in zitare Dockerfile", + "type": "fix", + "scope": "docker", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-28T22:18:28+01:00" + }, + { + "hash": "559025b", + "short": "feat: Colima migration script, devlog & capacity docs update", + "type": null, + "scope": null, + "additions": 618, + "deletions": 1, + "timestamp": "2026-03-28T22:18:59+01:00" + }, + { + "hash": "d935e07", + "short": "fix: make colima migration resilient to TSDB file changes", + "type": null, + "scope": null, + "additions": 3, + "deletions": 2, + "timestamp": "2026-03-28T22:25:34+01:00" + }, + { + "hash": "3f0e330", + "short": "feat: add Taktik time tracking app with full MVP", + "type": null, + "scope": null, + "additions": 4632, + "deletions": 68, + "timestamp": "2026-03-28T22:45:19+01:00" + }, + { + "hash": "4a91fd7", + "short": "feat(taktik): add timer indicator, settings, templates, CSV export, keyboard shortcuts", + "type": "feat", + "scope": "taktik", + "additions": 693, + "deletions": 25, + "timestamp": "2026-03-28T23:28:18+01:00" + }, + { + "hash": "79a270a", + "short": "test(taktik): add unit tests and comprehensive documentation", + "type": "test", + "scope": "taktik", + "additions": 769, + "deletions": 35, + "timestamp": "2026-03-28T23:33:43+01:00" + }, + { + "hash": "076e0c8", + "short": "chore: restore archived apps (bauntown, news, reader, uload, wisekeep)", + "type": null, + "scope": null, + "additions": 158214, + "deletions": 0, + "timestamp": "2026-03-29T01:08:51+01:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-28/macher.md b/devlog/2026-03-28/macher.md new file mode 100644 index 000000000..016d07b28 --- /dev/null +++ b/devlog/2026-03-28/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-28 +day: 67 +view: macher +weekday: Samstag +commits: 86 +review: written +--- + +# Samstag, 2026-03-28 — Tag 67 (Macher-Sicht) + +## Stats + +86 Commits, +185513 / −109083 LoC, 2585 Files. Top-Dirs: `apps-archived/uload/apps` (11%), `apps-archived/bauntown/apps` (9%), `apps-archived/uload/docs` (4%), `apps-archived/wisekeep/apps` (4%), `apps/calendar/apps/backend` (4%). Tags: docker, landing, infra, packages, apps. Session 09:11 → 00:08 (~247 aktive Min, längster Fokus 137 Min). + +## Commits + +- `87d7966` feat(infra): add Forgejo runner registration script (+49/-0) +- `3fca0de` feat(shared-hono): add credit client for Hono backends (+129/-1) +- `5a9949f` docs: update overview — shared-hono credits done, sync is generic, assess backends (+8/-5) +- `79080d6` fix(apps): use explicit AuthServiceInterface in all 21 auth stores, re-enable type-check (+37/-37) +- `7e931b1` refactor(services): rename Go services, remove -go suffix (+41/-38) +- `4c5e945` docs: update CLAUDE.md with current project state (+44/-26) +- `b60877e` feat(packages): add shared-go package with httputil and envutil (+214/-0) +- `5d02b04` refactor(infra): remove citycorners + skilltree NestJS backends, clean up CI/CD (+13/-5355) +- `8ccf8ff` chore: misc fixes, new services, lockfile cleanup (+1668/-3445) +- `f628026` fix(build): add handleHttpError for missing favicon.png in 4 apps (+24/-0) +- `4d26196` fix(tests): update calendar event tests for pure function API, delete orphaned todo tests (+170/-672) +- `d3d11e6` feat(apps): create Hono compute servers for Traces, Planta, NutriPhi (+1161/-221) +- `9c1d16f` chore(packages): delete unused packages shared-gpu and nutriphi-database (+0/-867) +- `ba6dbf1` feat(apps): create Hono compute servers for Context, ManaDeck, Questions (+431/-0) +- `bf4d9cb` refactor(go-services): integrate shared-go into crawler + gateway, fix Dockerfiles (+1313/-1379) +- `1aeb987` refactor(packages): consolidate 3 feedback packages into @manacore/feedback (+617/-317) +- `0181d3f` feat(apps): create Hono compute servers for Chat, Mukke, Picture (+4/-7) +- `9d3c1cb` fix: calendar test failures + storage lint error (+422/-1540) +- `22fe807` fix(docker): add shared-go COPY to all Go service Dockerfiles (+16/-8) +- `1104c04` feat(todo): add Board View Editor UI for creating and editing views (+1423/-5) + +_… plus 66 weitere Commits._ diff --git a/devlog/2026-03-28/spieler.md b/devlog/2026-03-28/spieler.md new file mode 100644 index 000000000..ff2ae5cbd --- /dev/null +++ b/devlog/2026-03-28/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-28 +day: 67 +view: spieler +weekday: Samstag +commits: 86 +review: written +--- + +# Samstag, 2026-03-28 — Tag 67 + +Großer Sprint-Tag mit Schwerpunkt **apps-archived** (86 Commits). + +## Highlights + +- add Forgejo runner registration script +- add credit client for Hono backends +- update overview — shared-hono credits done, sync is generic, assess backends +- use explicit AuthServiceInterface in all 21 auth stores, re-enable type-check +- update CLAUDE.md with current project state diff --git a/devlog/2026-03-29/data.json b/devlog/2026-03-29/data.json new file mode 100644 index 000000000..74d74ab48 --- /dev/null +++ b/devlog/2026-03-29/data.json @@ -0,0 +1,544 @@ +{ + "date": "2026-03-29", + "day_number": 68, + "weekday": "Sonntag", + "commits": 49, + "authors": [ + { + "name": "Till JS", + "count": 49 + } + ], + "additions": 113304, + "deletions": 174589, + "net_lines": -61285, + "files_changed": 1842, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-29T06:40:34.000Z", + "last_commit_at": "2026-03-29T23:21:32.000Z", + "total_span_minutes": 1001, + "active_minutes": 198, + "pauses": [ + { + "from": "09:24", + "to": "14:07", + "minutes": 283 + }, + { + "from": "15:15", + "to": "18:31", + "minutes": 196 + }, + { + "from": "18:31", + "to": "19:02", + "minutes": 31 + }, + { + "from": "20:03", + "to": "00:56", + "minutes": 293 + } + ], + "longest_focus_minutes": 68 + }, + "top_dirs": [ + { + "path": "apps/uload/apps/web", + "pct": 19 + }, + { + "path": "apps-archived/uload/apps", + "pct": 14 + }, + { + "path": "{apps-archived => apps}/bauntown/apps", + "pct": 11 + }, + { + "path": "games/mana-games/apps", + "pct": 11 + }, + { + "path": "apps-archived/uload/docs", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 573 + }, + { + "ext": ".svelte", + "count": 488 + }, + { + "ext": ".md", + "count": 300 + }, + { + "ext": ".astro", + "count": 168 + }, + { + "ext": ".json", + "count": 141 + }, + { + "ext": ".png", + "count": 92 + } + ], + "tags": ["manavoxel", "uload", "mana-games", "citycorners", "calc"], + "commits_list": [ + { + "hash": "7552c35", + "short": "feat: add Calc app with 8 calculator modes and 5 retro skins", + "type": null, + "scope": null, + "additions": 7848, + "deletions": 845, + "timestamp": "2026-03-29T08:40:34+02:00" + }, + { + "hash": "49df3ea", + "short": "feat(taktik): add detail pages, duration rounding, confirmation dialogs", + "type": "feat", + "scope": "taktik", + "additions": 1874, + "deletions": 18, + "timestamp": "2026-03-29T08:44:59+02:00" + }, + { + "hash": "0841f6b", + "short": "feat(calc): add copy-to-clipboard, skins in scientific, Dockerfile, settings", + "type": "feat", + "scope": "calc", + "additions": 709, + "deletions": 97, + "timestamp": "2026-03-29T08:48:21+02:00" + }, + { + "hash": "cb54977", + "short": "deploy(calc): add docker-compose, cloudflared tunnel, SSO config", + "type": "deploy", + "scope": "calc", + "additions": 38, + "deletions": 8, + "timestamp": "2026-03-29T08:53:41+02:00" + }, + { + "hash": "bc42872", + "short": "deploy(taktik): add Dockerfile, docker-compose, SSO config", + "type": "deploy", + "scope": "taktik", + "additions": 80, + "deletions": 1, + "timestamp": "2026-03-29T08:55:30+02:00" + }, + { + "hash": "f4599d1", + "short": "fix(calc): rename FlaskConical to Flask (phosphor-svelte export)", + "type": "fix", + "scope": "calc", + "additions": 2, + "deletions": 2, + "timestamp": "2026-03-29T08:56:10+02:00" + }, + { + "hash": "5589765", + "short": "feat(manavoxel): scaffold 2D pixel platform MVP (Phase 0)", + "type": "feat", + "scope": "manavoxel", + "additions": 8969, + "deletions": 0, + "timestamp": "2026-03-29T08:57:08+02:00" + }, + { + "hash": "47a0692", + "short": "feat(manavoxel): add portal system, interiors, and floor switching", + "type": "feat", + "scope": "manavoxel", + "additions": 527, + "deletions": 15, + "timestamp": "2026-03-29T09:03:00+02:00" + }, + { + "hash": "939bdbe", + "short": "feat(manavoxel): add in-game sprite editor for items and characters", + "type": "feat", + "scope": "manavoxel", + "additions": 474, + "deletions": 0, + "timestamp": "2026-03-29T09:05:30+02:00" + }, + { + "hash": "5f18770", + "short": "feat(manavoxel): add inventory system with item creation from sprite editor", + "type": "feat", + "scope": "manavoxel", + "additions": 181, + "deletions": 2, + "timestamp": "2026-03-29T09:09:52+02:00" + }, + { + "hash": "d847eb4", + "short": "feat(uload): rewrite to local-first + Hono architecture", + "type": "feat", + "scope": "uload", + "additions": 44701, + "deletions": 1973, + "timestamp": "2026-03-29T09:16:04+02:00" + }, + { + "hash": "a4184f1", + "short": "restore(mana-games): bring back AI browser games platform", + "type": "restore", + "scope": "mana-games", + "additions": 29526, + "deletions": 0, + "timestamp": "2026-03-29T09:16:58+02:00" + }, + { + "hash": "9675520", + "short": "feat(uload): integrate mana-core-auth with guest mode", + "type": "feat", + "scope": "uload", + "additions": 506, + "deletions": 157, + "timestamp": "2026-03-29T09:23:39+02:00" + }, + { + "hash": "d71eade", + "short": "feat(manavoxel): add item programming system (Phase 2)", + "type": "feat", + "scope": "manavoxel", + "additions": 829, + "deletions": 2, + "timestamp": "2026-03-29T09:24:20+02:00" + }, + { + "hash": "3925019", + "short": "feat(manavoxel): add local persistence and world templates", + "type": "feat", + "scope": "manavoxel", + "additions": 1075, + "deletions": 15, + "timestamp": "2026-03-29T14:07:46+02:00" + }, + { + "hash": "82a4cb4", + "short": "feat(citycorners): transform into multi-city platform", + "type": "feat", + "scope": "citycorners", + "additions": 2953, + "deletions": 332, + "timestamp": "2026-03-29T14:09:29+02:00" + }, + { + "hash": "3686926", + "short": "refactor(uload): clean up migration, add Stripe/Email stubs, fix 497 type errors", + "type": "refactor", + "scope": "uload", + "additions": 533, + "deletions": 38350, + "timestamp": "2026-03-29T14:14:17+02:00" + }, + { + "hash": "e73d64c", + "short": "refactor(citycorners): switch city pages to local-first data layer", + "type": "refactor", + "scope": "citycorners", + "additions": 110, + "deletions": 364, + "timestamp": "2026-03-29T14:27:15+02:00" + }, + { + "hash": "89e6a20", + "short": "docs(citycorners): update CLAUDE.md for multi-city platform", + "type": "docs", + "scope": "citycorners", + "additions": 50, + "deletions": 73, + "timestamp": "2026-03-29T14:28:02+02:00" + }, + { + "hash": "29f2c99", + "short": "refactor(mana-games): migrate web app from Astro to SvelteKit", + "type": "refactor", + "scope": "mana-games", + "additions": 1740, + "deletions": 14628, + "timestamp": "2026-03-29T14:44:02+02:00" + }, + { + "hash": "9942a21", + "short": "refactor(citycorners): redirect old routes + update landing page", + "type": "refactor", + "scope": "citycorners", + "additions": 153, + "deletions": 2549, + "timestamp": "2026-03-29T14:46:03+02:00" + }, + { + "hash": "9d2c7ad", + "short": "chore(uload): fix vite compat, clean deps, add DB setup", + "type": "chore", + "scope": "uload", + "additions": 37, + "deletions": 958, + "timestamp": "2026-03-29T14:50:14+02:00" + }, + { + "hash": "732f2b8", + "short": "feat(citycorners): add city and platform statistics", + "type": "feat", + "scope": "citycorners", + "additions": 283, + "deletions": 8, + "timestamp": "2026-03-29T14:50:26+02:00" + }, + { + "hash": "0806600", + "short": "feat(mana-games): add auth, settings, themes, help, submit, and onboarding pages", + "type": "feat", + "scope": "mana-games", + "additions": 602, + "deletions": 0, + "timestamp": "2026-03-29T14:54:31+02:00" + }, + { + "hash": "35ec9ae", + "short": "deploy(manavoxel): add Dockerfile, docker-compose, and deploy config", + "type": "deploy", + "scope": "manavoxel", + "additions": 82, + "deletions": 14, + "timestamp": "2026-03-29T14:56:32+02:00" + }, + { + "hash": "ecd7770", + "short": "feat(mana-games): add Dockerfile, server hooks, error tracking, and feedback page", + "type": "feat", + "scope": "mana-games", + "additions": 88, + "deletions": 0, + "timestamp": "2026-03-29T15:02:15+02:00" + }, + { + "hash": "cfe3fc4", + "short": "feat(uload): add QR codes, link editing, UTM params, analytics, i18n, PWA", + "type": "feat", + "scope": "uload", + "additions": 940, + "deletions": 523, + "timestamp": "2026-03-29T15:03:04+02:00" + }, + { + "hash": "2b44841", + "short": "docs(mana-games): add to root CLAUDE.md and docker-compose.macmini.yml", + "type": "docs", + "scope": "mana-games", + "additions": 112, + "deletions": 5, + "timestamp": "2026-03-29T15:05:45+02:00" + }, + { + "hash": "f5cd77b", + "short": "feat(infra): smart build memory check and baseline monitoring script", + "type": "feat", + "scope": "infra", + "additions": 550, + "deletions": 14, + "timestamp": "2026-03-29T15:07:20+02:00" + }, + { + "hash": "08744cd", + "short": "fix: Colima file-mount issues, mana-llm port, web app build errors", + "type": null, + "scope": null, + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-29T15:07:37+02:00" + }, + { + "hash": "13cbdf0", + "short": "fix(manavoxel): rename inventory.ts to .svelte.ts for $state runes support", + "type": "fix", + "scope": "manavoxel", + "additions": 4, + "deletions": 4, + "timestamp": "2026-03-29T15:08:59+02:00" + }, + { + "hash": "9a468f1", + "short": "fix: alertmanager file-mount for Colima compatibility", + "type": null, + "scope": null, + "additions": 55, + "deletions": 1, + "timestamp": "2026-03-29T15:10:00+02:00" + }, + { + "hash": "36c5278", + "short": "fix(infra): use DOCKER_CMD variable in memory-baseline.sh", + "type": "fix", + "scope": "infra", + "additions": 8, + "deletions": 6, + "timestamp": "2026-03-29T15:12:44+02:00" + }, + { + "hash": "4ccbdbc", + "short": "fix(manavoxel): improve demo world with full ground coverage and better spawn", + "type": "fix", + "scope": "manavoxel", + "additions": 115, + "deletions": 44, + "timestamp": "2026-03-29T15:14:32+02:00" + }, + { + "hash": "0c7a080", + "short": "feat(uload): Docker setup, CLAUDE.md rewrite, bulk actions, link expiry & passwords", + "type": "feat", + "scope": "uload", + "additions": 427, + "deletions": 141, + "timestamp": "2026-03-29T15:14:45+02:00" + }, + { + "hash": "2874e20", + "short": "fix: use entrypoint copy pattern for all Colima file-mount issues", + "type": null, + "scope": null, + "additions": 6, + "deletions": 2, + "timestamp": "2026-03-29T15:15:19+02:00" + }, + { + "hash": "9e82e40", + "short": "rename(mana-games): rebrand to Arcade", + "type": "rename", + "scope": "mana-games", + "additions": 86, + "deletions": 80, + "timestamp": "2026-03-29T18:31:37+02:00" + }, + { + "hash": "d02428f", + "short": "feat(uload): sync_changes integration, Stripe checkout, docs update", + "type": "feat", + "scope": "uload", + "additions": 254, + "deletions": 140, + "timestamp": "2026-03-29T19:02:11+02:00" + }, + { + "hash": "58bef0a", + "short": "fix: rewrite startup.sh for Colima (auto-start after reboot)", + "type": null, + "scope": null, + "additions": 76, + "deletions": 33, + "timestamp": "2026-03-29T19:16:49+02:00" + }, + { + "hash": "4a48182", + "short": "feat(monitoring): integrate Promtail for centralized log collection via Loki", + "type": "feat", + "scope": "monitoring", + "additions": 471, + "deletions": 0, + "timestamp": "2026-03-29T19:22:44+02:00" + }, + { + "hash": "4d390be", + "short": "feat(news): migrate from archive to local-first + Hono architecture", + "type": "feat", + "scope": "news", + "additions": 1385, + "deletions": 100253, + "timestamp": "2026-03-29T19:28:11+02:00" + }, + { + "hash": "62e1353", + "short": "feat(manacore): migrate settings, dashboard, and tags to local-first", + "type": "feat", + "scope": "manacore", + "additions": 256, + "deletions": 75, + "timestamp": "2026-03-29T19:36:08+02:00" + }, + { + "hash": "f06c987", + "short": "feat(todo): add duration extraction, multi-task splitting, and time estimation", + "type": "feat", + "scope": "todo", + "additions": 861, + "deletions": 11, + "timestamp": "2026-03-29T19:59:02+02:00" + }, + { + "hash": "d7b4042", + "short": "feat(wisekeep): migrate from archive to local-first + Hono architecture", + "type": "feat", + "scope": "wisekeep", + "additions": 1490, + "deletions": 11980, + "timestamp": "2026-03-29T20:03:55+02:00" + }, + { + "hash": "3590641", + "short": "feat(reader): restore from archive, register in monorepo", + "type": "feat", + "scope": "reader", + "additions": 591, + "deletions": 570, + "timestamp": "2026-03-30T00:56:57+02:00" + }, + { + "hash": "928d88a", + "short": "feat(bauntown): restore from archive, register in monorepo", + "type": "feat", + "scope": "bauntown", + "additions": 30, + "deletions": 29, + "timestamp": "2026-03-30T01:02:21+02:00" + }, + { + "hash": "2222ce2", + "short": "feat: add @manacore/shared-links for cross-app record linking", + "type": null, + "scope": null, + "additions": 614, + "deletions": 1, + "timestamp": "2026-03-30T01:02:42+02:00" + }, + { + "hash": "31faa5b", + "short": "feat(calendar): add multi-event splitting, duration estimation, and conflict detection", + "type": "feat", + "scope": "calendar", + "additions": 650, + "deletions": 1, + "timestamp": "2026-03-30T01:04:55+02:00" + }, + { + "hash": "80ea301", + "short": "feat(manacore): cross-app IndexedDB readers for dashboard widgets", + "type": "feat", + "scope": "manacore", + "additions": 352, + "deletions": 265, + "timestamp": "2026-03-30T01:21:32+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-29/macher.md b/devlog/2026-03-29/macher.md new file mode 100644 index 000000000..1af7136a6 --- /dev/null +++ b/devlog/2026-03-29/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-29 +day: 68 +view: macher +weekday: Sonntag +commits: 49 +review: written +--- + +# Sonntag, 2026-03-29 — Tag 68 (Macher-Sicht) + +## Stats + +49 Commits, +113304 / −174589 LoC, 1842 Files. Top-Dirs: `apps/uload/apps/web` (19%), `apps-archived/uload/apps` (14%), `{apps-archived => apps}/bauntown/apps` (11%), `games/mana-games/apps` (11%), `apps-archived/uload/docs` (5%). Tags: manavoxel, uload, mana-games, citycorners, calc. Session 06:40 → 23:21 (~198 aktive Min, längster Fokus 68 Min). + +## Commits + +- `7552c35` feat: add Calc app with 8 calculator modes and 5 retro skins (+7848/-845) +- `49df3ea` feat(taktik): add detail pages, duration rounding, confirmation dialogs (+1874/-18) +- `0841f6b` feat(calc): add copy-to-clipboard, skins in scientific, Dockerfile, settings (+709/-97) +- `cb54977` deploy(calc): add docker-compose, cloudflared tunnel, SSO config (+38/-8) +- `bc42872` deploy(taktik): add Dockerfile, docker-compose, SSO config (+80/-1) +- `f4599d1` fix(calc): rename FlaskConical to Flask (phosphor-svelte export) (+2/-2) +- `5589765` feat(manavoxel): scaffold 2D pixel platform MVP (Phase 0) (+8969/-0) +- `47a0692` feat(manavoxel): add portal system, interiors, and floor switching (+527/-15) +- `939bdbe` feat(manavoxel): add in-game sprite editor for items and characters (+474/-0) +- `5f18770` feat(manavoxel): add inventory system with item creation from sprite editor (+181/-2) +- `d847eb4` feat(uload): rewrite to local-first + Hono architecture (+44701/-1973) +- `a4184f1` restore(mana-games): bring back AI browser games platform (+29526/-0) +- `9675520` feat(uload): integrate mana-core-auth with guest mode (+506/-157) +- `d71eade` feat(manavoxel): add item programming system (Phase 2) (+829/-2) +- `3925019` feat(manavoxel): add local persistence and world templates (+1075/-15) +- `82a4cb4` feat(citycorners): transform into multi-city platform (+2953/-332) +- `3686926` refactor(uload): clean up migration, add Stripe/Email stubs, fix 497 type errors (+533/-38350) +- `e73d64c` refactor(citycorners): switch city pages to local-first data layer (+110/-364) +- `89e6a20` docs(citycorners): update CLAUDE.md for multi-city platform (+50/-73) +- `29f2c99` refactor(mana-games): migrate web app from Astro to SvelteKit (+1740/-14628) + +_… plus 29 weitere Commits._ diff --git a/devlog/2026-03-29/spieler.md b/devlog/2026-03-29/spieler.md new file mode 100644 index 000000000..2f1e26b88 --- /dev/null +++ b/devlog/2026-03-29/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-29 +day: 68 +view: spieler +weekday: Sonntag +commits: 49 +review: written +--- + +# Sonntag, 2026-03-29 — Tag 68 + +Großer Sprint-Tag mit Schwerpunkt **apps** (49 Commits). + +## Highlights + +- add Calc app with 8 calculator modes and 5 retro skins +- add detail pages, duration rounding, confirmation dialogs +- add copy-to-clipboard, skins in scientific, Dockerfile, settings +- deploy(calc): add docker-compose, cloudflared tunnel, SSO config +- deploy(taktik): add Dockerfile, docker-compose, SSO config diff --git a/devlog/2026-03-30/data.json b/devlog/2026-03-30/data.json new file mode 100644 index 000000000..09dc43e0f --- /dev/null +++ b/devlog/2026-03-30/data.json @@ -0,0 +1,531 @@ +{ + "date": "2026-03-30", + "day_number": 69, + "weekday": "Montag", + "commits": 47, + "authors": [ + { + "name": "Till JS", + "count": 47 + } + ], + "additions": 26473, + "deletions": 10152, + "net_lines": 16321, + "files_changed": 400, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-30T08:40:24.000Z", + "last_commit_at": "2026-03-30T20:39:46.000Z", + "total_span_minutes": 719, + "active_minutes": 234, + "pauses": [ + { + "from": "10:56", + "to": "12:14", + "minutes": 78 + }, + { + "from": "12:14", + "to": "15:02", + "minutes": 168 + }, + { + "from": "15:48", + "to": "18:29", + "minutes": 161 + }, + { + "from": "20:44", + "to": "21:31", + "minutes": 47 + }, + { + "from": "22:09", + "to": "22:39", + "minutes": 31 + } + ], + "longest_focus_minutes": 135 + }, + "top_dirs": [ + { + "path": "apps-archived/moodlit/apps", + "pct": 35 + }, + { + "path": "apps/{taktik => times}/apps/web", + "pct": 10 + }, + { + "path": "apps/manacore/apps/web", + "pct": 5 + }, + { + "path": "{apps-archived => apps}/moodlit/apps", + "pct": 5 + }, + { + "path": "apps/todo/apps/web", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 171 + }, + { + "ext": ".svelte", + "count": 162 + }, + { + "ext": ".json", + "count": 53 + }, + { + "ext": ".tsx", + "count": 42 + }, + { + "ext": ".md", + "count": 30 + }, + { + "ext": ".yml", + "count": 17 + } + ], + "tags": ["docker", "monitoring", "infra", "startup", "inventar"], + "commits_list": [ + { + "hash": "de6af12", + "short": "feat(calendar): integrate NL parser into QuickEventOverlay", + "type": "feat", + "scope": "calendar", + "additions": 8284, + "deletions": 1, + "timestamp": "2026-03-30T10:40:24+02:00" + }, + { + "hash": "aee0934", + "short": "feat(manacore): migrate all remaining widgets to local-first IndexedDB", + "type": "feat", + "scope": "manacore", + "additions": 779, + "deletions": 956, + "timestamp": "2026-03-30T10:45:30+02:00" + }, + { + "hash": "06e5d9e", + "short": "feat(todo,calendar): auto-apply smart duration, add settings toggle", + "type": "feat", + "scope": "todo,calendar", + "additions": 146, + "deletions": 72, + "timestamp": "2026-03-30T10:52:51+02:00" + }, + { + "hash": "1bbf0ef", + "short": "feat: integrate shared-links into Calendar, Contacts, and ManaCore", + "type": null, + "scope": null, + "additions": 66, + "deletions": 2, + "timestamp": "2026-03-30T10:53:44+02:00" + }, + { + "hash": "fbe3c95", + "short": "feat(shared-links): add ManaLinkPicker for cross-app search and linking", + "type": "feat", + "scope": "shared-links", + "additions": 479, + "deletions": 2, + "timestamp": "2026-03-30T10:56:44+02:00" + }, + { + "hash": "4cee74e", + "short": "feat(shared-links): deep-link navigation to target app detail views", + "type": "feat", + "scope": "shared-links", + "additions": 114, + "deletions": 11, + "timestamp": "2026-03-30T12:14:29+02:00" + }, + { + "hash": "7f2b9f8", + "short": "docs(todo,calendar): document smart duration settings", + "type": "docs", + "scope": "todo,calendar", + "additions": 981, + "deletions": 4, + "timestamp": "2026-03-30T15:02:53+02:00" + }, + { + "hash": "72da55d", + "short": "feat(moodlit): restore from git history, migrate to local-first + Hono", + "type": "feat", + "scope": "moodlit", + "additions": 5607, + "deletions": 5877, + "timestamp": "2026-03-30T15:03:19+02:00" + }, + { + "hash": "45a1718", + "short": "feat(manavoxel): complete game engine with behavior system, NPCs, lighting, and dialog", + "type": "feat", + "scope": "manavoxel", + "additions": 2486, + "deletions": 110, + "timestamp": "2026-03-30T15:04:07+02:00" + }, + { + "hash": "ad82a83", + "short": "feat(manavoxel): add merchant trading UI and NPC loot drops", + "type": "feat", + "scope": "manavoxel", + "additions": 308, + "deletions": 3, + "timestamp": "2026-03-30T15:06:51+02:00" + }, + { + "hash": "451ab03", + "short": "feat(contacts): add NL quick-input and live duplicate detection", + "type": "feat", + "scope": "contacts", + "additions": 425, + "deletions": 0, + "timestamp": "2026-03-30T15:15:11+02:00" + }, + { + "hash": "5f9c2a6", + "short": "docs(contacts): document NL quick-input and duplicate detection", + "type": "docs", + "scope": "contacts", + "additions": 28, + "deletions": 0, + "timestamp": "2026-03-30T15:15:33+02:00" + }, + { + "hash": "1eb370e", + "short": "feat(manacore): tiling layout — resizable, splittable dashboard panels", + "type": "feat", + "scope": "manacore", + "additions": 996, + "deletions": 83, + "timestamp": "2026-03-30T15:43:19+02:00" + }, + { + "hash": "c33339b", + "short": "rename(taktik): rebrand to Times", + "type": "rename", + "scope": "taktik", + "additions": 970, + "deletions": 1263, + "timestamp": "2026-03-30T15:44:18+02:00" + }, + { + "hash": "ff19c7f", + "short": "feat(times): add NL time entry parser with multi-entry and quick-input", + "type": "feat", + "scope": "times", + "additions": 649, + "deletions": 0, + "timestamp": "2026-03-30T15:48:17+02:00" + }, + { + "hash": "d0c2302", + "short": "fix(docker): fix multiline entrypoint YAML bug + searxng entrypoint path", + "type": "fix", + "scope": "docker", + "additions": 6, + "deletions": 42, + "timestamp": "2026-03-30T18:29:44+02:00" + }, + { + "hash": "e21e09b", + "short": "fix(docker): fix vmalert rules scope + disable synapse OIDC", + "type": "fix", + "scope": "docker", + "additions": 11, + "deletions": 22, + "timestamp": "2026-03-30T18:33:56+02:00" + }, + { + "hash": "667d8cf", + "short": "fix(infra): simplify alertmanager config mount (direct file mount)", + "type": "fix", + "scope": "infra", + "additions": 2, + "deletions": 2, + "timestamp": "2026-03-30T18:36:10+02:00" + }, + { + "hash": "aeef352", + "short": "fix(startup): force-recreate synapse on boot to avoid stale config cache", + "type": "fix", + "scope": "startup", + "additions": 5, + "deletions": 0, + "timestamp": "2026-03-30T18:37:00+02:00" + }, + { + "hash": "c866c42", + "short": "fix(startup): add /Users/mana mount to colima start (root cause fix)", + "type": "fix", + "scope": "startup", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-30T18:42:33+02:00" + }, + { + "hash": "dee4480", + "short": "fix(docker): add shared-links package to sveltekit-base image", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-30T18:51:15+02:00" + }, + { + "hash": "b46cbe4", + "short": "fix(startup): remove colima delete --force to prevent image loss on reboot", + "type": "fix", + "scope": "startup", + "additions": 1, + "deletions": 2, + "timestamp": "2026-03-30T19:12:51+02:00" + }, + { + "hash": "abb7712", + "short": "fix(forgejo): fix SSH port mapping + add Forgejo CD pipeline", + "type": "fix", + "scope": "forgejo", + "additions": 416, + "deletions": 1, + "timestamp": "2026-03-30T19:31:18+02:00" + }, + { + "hash": "0968c84", + "short": "feat(ci): GitHub→Forgejo mirror + Forgejo CD pulls from forgejo remote", + "type": "feat", + "scope": "ci", + "additions": 30, + "deletions": 1, + "timestamp": "2026-03-30T19:32:16+02:00" + }, + { + "hash": "222094d", + "short": "fix(monitoring): promtail depends_on service_started instead of healthy", + "type": "fix", + "scope": "monitoring", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-30T19:33:48+02:00" + }, + { + "hash": "961cdfb", + "short": "fix(promtail): add default tier label to prevent empty label stream errors", + "type": "fix", + "scope": "promtail", + "additions": 6, + "deletions": 0, + "timestamp": "2026-03-30T19:35:28+02:00" + }, + { + "hash": "79c6ab1", + "short": "fix(citycorners): move @const outside HTML element to satisfy Svelte 5 rules", + "type": "fix", + "scope": "citycorners", + "additions": 2, + "deletions": 2, + "timestamp": "2026-03-30T19:35:33+02:00" + }, + { + "hash": "8049a53", + "short": "fix(todo): fix DnD reorder flicker and remove project dot indicator", + "type": "fix", + "scope": "todo", + "additions": 58, + "deletions": 48, + "timestamp": "2026-03-30T19:37:42+02:00" + }, + { + "hash": "9de71c4", + "short": "fix(citycorners): declare searchQuery and searching as $state", + "type": "fix", + "scope": "citycorners", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-30T19:39:14+02:00" + }, + { + "hash": "aa26ae1", + "short": "fix(manadeck): switch web adapter from adapter-auto to adapter-node", + "type": "fix", + "scope": "manadeck", + "additions": 267, + "deletions": 235, + "timestamp": "2026-03-30T19:48:39+02:00" + }, + { + "hash": "5fc34da", + "short": "fix(promtail): move monitoring drop from relabel to pipeline_stages", + "type": "fix", + "scope": "promtail", + "additions": 4, + "deletions": 5, + "timestamp": "2026-03-30T19:50:04+02:00" + }, + { + "hash": "be1096e", + "short": "fix(monitoring): update disk alerts to use mac_disk_used_percent metrics", + "type": "fix", + "scope": "monitoring", + "additions": 21, + "deletions": 11, + "timestamp": "2026-03-30T20:01:46+02:00" + }, + { + "hash": "4e37091", + "short": "feat(monitoring): disk metrics via Pushgateway, Loki in Master Overview, Colima move script", + "type": "feat", + "scope": "monitoring", + "additions": 244, + "deletions": 4, + "timestamp": "2026-03-30T20:03:33+02:00" + }, + { + "hash": "7ff72d6", + "short": "feat(monitoring): auto-prune Docker + node_modules, 15-min disk check interval", + "type": "feat", + "scope": "monitoring", + "additions": 46, + "deletions": 13, + "timestamp": "2026-03-30T20:14:13+02:00" + }, + { + "hash": "81ae60d", + "short": "refactor(infra): remove Forgejo CD, keep as mirror-only", + "type": "refactor", + "scope": "infra", + "additions": 6, + "deletions": 435, + "timestamp": "2026-03-30T20:17:41+02:00" + }, + { + "hash": "b44bd44", + "short": "fix(ci): stash local changes before mirror pull to prevent merge conflicts", + "type": "fix", + "scope": "ci", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-30T20:33:21+02:00" + }, + { + "hash": "dffb5eb", + "short": "docs(infra): update Forgejo docs to mirror-only, remove obsolete workflows", + "type": "docs", + "scope": "infra", + "additions": 26, + "deletions": 225, + "timestamp": "2026-03-30T20:44:54+02:00" + }, + { + "hash": "df19d3a", + "short": "fix: Docker build failures for mana-media and inventar-web", + "type": null, + "scope": null, + "additions": 9, + "deletions": 4, + "timestamp": "2026-03-30T21:31:52+02:00" + }, + { + "hash": "b923243", + "short": "fix: nested button in inventar list view, uload-server port 3041→3070", + "type": null, + "scope": null, + "additions": 10, + "deletions": 7, + "timestamp": "2026-03-30T21:37:18+02:00" + }, + { + "hash": "4a5fe3b", + "short": "feat(ux): notepad design, keyboard navigation, contenteditable across todo/calendar/contacts", + "type": "feat", + "scope": "ux", + "additions": 1151, + "deletions": 366, + "timestamp": "2026-03-30T21:37:56+02:00" + }, + { + "hash": "4f68215", + "short": "fix(docker): symlink all @manacore packages in sveltekit-base image", + "type": "fix", + "scope": "docker", + "additions": 13, + "deletions": 0, + "timestamp": "2026-03-30T21:49:46+02:00" + }, + { + "hash": "b737240", + "short": "feat(auth): add access tier system for phased app releases", + "type": "feat", + "scope": "auth", + "additions": 494, + "deletions": 39, + "timestamp": "2026-03-30T21:50:06+02:00" + }, + { + "hash": "0d6005d", + "short": "fix(inventar): import FeedbackPage from @manacore/feedback, not shared-ui", + "type": "fix", + "scope": "inventar", + "additions": 213, + "deletions": 42, + "timestamp": "2026-03-30T21:56:19+02:00" + }, + { + "hash": "8ffd2ce", + "short": "fix(mana-auth): add session-to-token endpoint and return JWT from login", + "type": "fix", + "scope": "mana-auth", + "additions": 85, + "deletions": 3, + "timestamp": "2026-03-30T21:56:35+02:00" + }, + { + "hash": "9df8b59", + "short": "fix(inventar): import HelpPage from @manacore/help, not shared-ui", + "type": "fix", + "scope": "inventar", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-30T22:05:42+02:00" + }, + { + "hash": "2783cc3", + "short": "fix(inventar): import ThemePage from @manacore/shared-theme-ui", + "type": "fix", + "scope": "inventar", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-30T22:09:11+02:00" + }, + { + "hash": "69915a7", + "short": "feat(todo): horizontal paper pages with inline edit mode", + "type": "feat", + "scope": "todo", + "additions": 1020, + "deletions": 256, + "timestamp": "2026-03-30T22:39:46+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-30/macher.md b/devlog/2026-03-30/macher.md new file mode 100644 index 000000000..8cfca5cfe --- /dev/null +++ b/devlog/2026-03-30/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-30 +day: 69 +view: macher +weekday: Montag +commits: 47 +review: written +--- + +# Montag, 2026-03-30 — Tag 69 (Macher-Sicht) + +## Stats + +47 Commits, +26473 / −10152 LoC, 400 Files. Top-Dirs: `apps-archived/moodlit/apps` (35%), `apps/{taktik => times}/apps/web` (10%), `apps/manacore/apps/web` (5%), `{apps-archived => apps}/moodlit/apps` (5%), `apps/todo/apps/web` (4%). Tags: docker, monitoring, infra, startup, inventar. Session 08:40 → 20:39 (~234 aktive Min, längster Fokus 135 Min). + +## Commits + +- `de6af12` feat(calendar): integrate NL parser into QuickEventOverlay (+8284/-1) +- `aee0934` feat(manacore): migrate all remaining widgets to local-first IndexedDB (+779/-956) +- `06e5d9e` feat(todo,calendar): auto-apply smart duration, add settings toggle (+146/-72) +- `1bbf0ef` feat: integrate shared-links into Calendar, Contacts, and ManaCore (+66/-2) +- `fbe3c95` feat(shared-links): add ManaLinkPicker for cross-app search and linking (+479/-2) +- `4cee74e` feat(shared-links): deep-link navigation to target app detail views (+114/-11) +- `7f2b9f8` docs(todo,calendar): document smart duration settings (+981/-4) +- `72da55d` feat(moodlit): restore from git history, migrate to local-first + Hono (+5607/-5877) +- `45a1718` feat(manavoxel): complete game engine with behavior system, NPCs, lighting, and dialog (+2486/-110) +- `ad82a83` feat(manavoxel): add merchant trading UI and NPC loot drops (+308/-3) +- `451ab03` feat(contacts): add NL quick-input and live duplicate detection (+425/-0) +- `5f9c2a6` docs(contacts): document NL quick-input and duplicate detection (+28/-0) +- `1eb370e` feat(manacore): tiling layout — resizable, splittable dashboard panels (+996/-83) +- `c33339b` rename(taktik): rebrand to Times (+970/-1263) +- `ff19c7f` feat(times): add NL time entry parser with multi-entry and quick-input (+649/-0) +- `d0c2302` fix(docker): fix multiline entrypoint YAML bug + searxng entrypoint path (+6/-42) +- `e21e09b` fix(docker): fix vmalert rules scope + disable synapse OIDC (+11/-22) +- `667d8cf` fix(infra): simplify alertmanager config mount (direct file mount) (+2/-2) +- `aeef352` fix(startup): force-recreate synapse on boot to avoid stale config cache (+5/-0) +- `c866c42` fix(startup): add /Users/mana mount to colima start (root cause fix) (+1/-0) + +_… plus 27 weitere Commits._ diff --git a/devlog/2026-03-30/spieler.md b/devlog/2026-03-30/spieler.md new file mode 100644 index 000000000..eba373d47 --- /dev/null +++ b/devlog/2026-03-30/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-30 +day: 69 +view: spieler +weekday: Montag +commits: 47 +review: written +--- + +# Montag, 2026-03-30 — Tag 69 + +Großer Sprint-Tag mit Schwerpunkt **apps-archived** (47 Commits). + +## Highlights + +- integrate NL parser into QuickEventOverlay +- migrate all remaining widgets to local-first IndexedDB +- auto-apply smart duration, add settings toggle +- integrate shared-links into Calendar, Contacts, and ManaCore +- add ManaLinkPicker for cross-app search and linking diff --git a/devlog/2026-03-31/data.json b/devlog/2026-03-31/data.json new file mode 100644 index 000000000..54bd23bac --- /dev/null +++ b/devlog/2026-03-31/data.json @@ -0,0 +1,1129 @@ +{ + "date": "2026-03-31", + "day_number": 70, + "weekday": "Dienstag", + "commits": 114, + "authors": [ + { + "name": "Till JS", + "count": 114 + } + ], + "additions": 343823, + "deletions": 27132, + "net_lines": 316691, + "files_changed": 2066, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-03-31T09:02:19.000Z", + "last_commit_at": "2026-03-31T20:23:31.000Z", + "total_span_minutes": 681, + "active_minutes": 387, + "pauses": [ + { + "from": "11:11", + "to": "12:01", + "minutes": 49 + }, + { + "from": "14:25", + "to": "16:29", + "minutes": 124 + }, + { + "from": "19:10", + "to": "20:12", + "minutes": 62 + }, + { + "from": "20:16", + "to": "21:16", + "minutes": 59 + } + ], + "longest_focus_minutes": 162 + }, + "top_dirs": [ + { + "path": "apps/memoro/apps/landing", + "pct": 28 + }, + { + "path": "apps/memoro/apps/mobile", + "pct": 24 + }, + { + "path": "apps/memoro/apps/web", + "pct": 9 + }, + { + "path": "apps/todo/apps/web", + "pct": 6 + }, + { + "path": "apps/memoro/apps/backend", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 542 + }, + { + "ext": ".ts", + "count": 496 + }, + { + "ext": ".mdx", + "count": 247 + }, + { + "ext": ".md", + "count": 244 + }, + { + "ext": ".tsx", + "count": 216 + }, + { + "ext": ".astro", + "count": 147 + } + ], + "tags": ["todo", "guides", "auth", "contacts", "auth-ui"], + "commits_list": [ + { + "hash": "a545bb6", + "short": "refactor(todo): move edit button from FAB to PillNav, share state via context", + "type": "refactor", + "scope": "todo", + "additions": 47, + "deletions": 74, + "timestamp": "2026-03-31T11:02:19+02:00" + }, + { + "hash": "e68e5c6", + "short": "refactor(shared-ui): unify icon system to Phosphor, remove SVG path fallbacks", + "type": "refactor", + "scope": "shared-ui", + "additions": 134, + "deletions": 330, + "timestamp": "2026-03-31T11:11:51+02:00" + }, + { + "hash": "9f6e463", + "short": "refactor(calendar,contacts): replace inline SVGs with Phosphor icons", + "type": "refactor", + "scope": "calendar,contacts", + "additions": 365, + "deletions": 1717, + "timestamp": "2026-03-31T12:01:18+02:00" + }, + { + "hash": "3f2e6a3", + "short": "feat(todo): unify view modes into single route with Fokus/Übersicht/Matrix layouts", + "type": "feat", + "scope": "todo", + "additions": 709, + "deletions": 1803, + "timestamp": "2026-03-31T12:03:58+02:00" + }, + { + "hash": "f58d58f", + "short": "refactor(apps): replace inline SVGs with Phosphor icons across 19 apps", + "type": "refactor", + "scope": "apps", + "additions": 179, + "deletions": 687, + "timestamp": "2026-03-31T12:18:20+02:00" + }, + { + "hash": "504e775", + "short": "refactor(apps): automated SVG-to-Phosphor migration across all apps", + "type": "refactor", + "scope": "apps", + "additions": 780, + "deletions": 3083, + "timestamp": "2026-03-31T12:35:17+02:00" + }, + { + "hash": "59e535a", + "short": "refactor(todo): move ViewSelector behind Layout pill, simplify homepage", + "type": "refactor", + "scope": "todo", + "additions": 135, + "deletions": 451, + "timestamp": "2026-03-31T12:41:28+02:00" + }, + { + "hash": "25e3962", + "short": "refactor(apps): final SVG-to-Phosphor pass for photos, clock, mukke, inventar", + "type": "refactor", + "scope": "apps", + "additions": 65, + "deletions": 350, + "timestamp": "2026-03-31T12:41:43+02:00" + }, + { + "hash": "47f981f", + "short": "refactor(shared-ui): replace remaining inline SVGs with Phosphor icons", + "type": "refactor", + "scope": "shared-ui", + "additions": 119, + "deletions": 477, + "timestamp": "2026-03-31T12:44:50+02:00" + }, + { + "hash": "14df2cd", + "short": "fix(auth): declare accessTier as additionalField so Better Auth includes it in user object", + "type": "fix", + "scope": "auth", + "additions": 11, + "deletions": 0, + "timestamp": "2026-03-31T12:46:29+02:00" + }, + { + "hash": "c02e264", + "short": "docs: add Phosphor icon guidelines to code-style.md", + "type": null, + "scope": null, + "additions": 32, + "deletions": 0, + "timestamp": "2026-03-31T12:46:39+02:00" + }, + { + "hash": "56f89b8", + "short": "fix(shared-ui): resolve Tag identifier collision in TagList", + "type": "fix", + "scope": "shared-ui", + "additions": 2, + "deletions": 2, + "timestamp": "2026-03-31T12:47:03+02:00" + }, + { + "hash": "74ff066", + "short": "simplify(todo): single view with edit mode, remove ViewSelector", + "type": "simplify", + "scope": "todo", + "additions": 12, + "deletions": 88, + "timestamp": "2026-03-31T12:51:44+02:00" + }, + { + "hash": "101f20e", + "short": "refactor(todo,calendar): extract duplicated constants and utilities", + "type": "refactor", + "scope": "todo,calendar", + "additions": 438, + "deletions": 371, + "timestamp": "2026-03-31T13:01:00+02:00" + }, + { + "hash": "52e09e4", + "short": "refactor(todo): merge TagStrip into unified filter strip", + "type": "refactor", + "scope": "todo", + "additions": 53, + "deletions": 55, + "timestamp": "2026-03-31T13:07:34+02:00" + }, + { + "hash": "bc17889", + "short": "refactor(contacts,todo): extract shared utilities, eliminate duplication", + "type": "refactor", + "scope": "contacts,todo", + "additions": 67, + "deletions": 106, + "timestamp": "2026-03-31T13:10:55+02:00" + }, + { + "hash": "3211878", + "short": "feat(todo): add clickable Tags label pill linking to /tags management", + "type": "feat", + "scope": "todo", + "additions": 41, + "deletions": 13, + "timestamp": "2026-03-31T13:11:57+02:00" + }, + { + "hash": "4872bc0", + "short": "refactor(contacts): extract error helper, field labels, match type labels", + "type": "refactor", + "scope": "contacts", + "additions": 60, + "deletions": 40, + "timestamp": "2026-03-31T13:14:18+02:00" + }, + { + "hash": "8465383", + "short": "refactor(todo): replace Mehr dropdown with inline project pills, add Filter label", + "type": "refactor", + "scope": "todo", + "additions": 46, + "deletions": 121, + "timestamp": "2026-03-31T13:14:57+02:00" + }, + { + "hash": "b354195", + "short": "refactor(contacts): apply getErrorMessage helper to remaining files", + "type": "refactor", + "scope": "contacts", + "additions": 11, + "deletions": 9, + "timestamp": "2026-03-31T13:15:31+02:00" + }, + { + "hash": "97798e5", + "short": "refactor(auth-ui): rewrite LoginPage + RegisterPage to use Tailwind CSS", + "type": "refactor", + "scope": "auth-ui", + "additions": 525, + "deletions": 980, + "timestamp": "2026-03-31T13:16:14+02:00" + }, + { + "hash": "8d07123", + "short": "fix(shared-ui): rename Tag type to TagType to avoid collision with Svelte internals", + "type": "fix", + "scope": "shared-ui", + "additions": 6, + "deletions": 6, + "timestamp": "2026-03-31T13:21:21+02:00" + }, + { + "hash": "d8b6178", + "short": "refactor(calendar): extract CalendarManagement into shared component", + "type": "refactor", + "scope": "calendar", + "additions": 506, + "deletions": 1007, + "timestamp": "2026-03-31T13:27:34+02:00" + }, + { + "hash": "27cd84c", + "short": "feat(todo): inline layout editor replacing ViewEditorModal", + "type": "feat", + "scope": "todo", + "additions": 4, + "deletions": 26, + "timestamp": "2026-03-31T13:31:33+02:00" + }, + { + "hash": "4f8209f", + "short": "feat(todo): add inline layout editor to homepage", + "type": "feat", + "scope": "todo", + "additions": 417, + "deletions": 4, + "timestamp": "2026-03-31T13:33:30+02:00" + }, + { + "hash": "c3bee26", + "short": "refactor(todo): extract shared useTaskForm composable", + "type": "refactor", + "scope": "todo", + "additions": 373, + "deletions": 266, + "timestamp": "2026-03-31T13:34:52+02:00" + }, + { + "hash": "3b54d4d", + "short": "refactor(auth-ui): i18n, security fixes, type safety across auth components", + "type": "refactor", + "scope": "auth-ui", + "additions": 514, + "deletions": 360, + "timestamp": "2026-03-31T13:41:53+02:00" + }, + { + "hash": "1926c6b", + "short": "feat(todo): inline column editing in board headers, remove separate editor", + "type": "feat", + "scope": "todo", + "additions": 338, + "deletions": 188, + "timestamp": "2026-03-31T13:43:47+02:00" + }, + { + "hash": "dc4ba0a", + "short": "feat(todo): color picker popup on column dot instead of inline swatches", + "type": "feat", + "scope": "todo", + "additions": 189, + "deletions": 80, + "timestamp": "2026-03-31T13:49:16+02:00" + }, + { + "hash": "41ca11e", + "short": "feat(todo): inline \"Neues Board\" card as last column in all layouts", + "type": "feat", + "scope": "todo", + "additions": 679, + "deletions": 46, + "timestamp": "2026-03-31T13:58:01+02:00" + }, + { + "hash": "e6e8d42", + "short": "feat(manascore): add ecosystem-audit script", + "type": "feat", + "scope": "manascore", + "additions": 404, + "deletions": 0, + "timestamp": "2026-03-31T13:59:09+02:00" + }, + { + "hash": "8437a41", + "short": "refactor: replace stale NestJS backend scripts with Hono server scripts", + "type": null, + "scope": null, + "additions": 64, + "deletions": 94, + "timestamp": "2026-03-31T14:03:40+02:00" + }, + { + "hash": "5fa773d", + "short": "refactor(auth-ui): unify dark mode to CSS variables + .dark class pattern", + "type": "refactor", + "scope": "auth-ui", + "additions": 180, + "deletions": 451, + "timestamp": "2026-03-31T14:06:25+02:00" + }, + { + "hash": "0c89400", + "short": "feat(manascore): add 5 new ecosystem metrics", + "type": "feat", + "scope": "manascore", + "additions": 514, + "deletions": 41, + "timestamp": "2026-03-31T14:06:29+02:00" + }, + { + "hash": "f58a6d1", + "short": "docs: document Ecosystem Health Score in about.md and CLAUDE.md", + "type": null, + "scope": null, + "additions": 61, + "deletions": 0, + "timestamp": "2026-03-31T14:09:14+02:00" + }, + { + "hash": "3fb1edd", + "short": "feat(manascore): add security headers, skeleton loading, TODO count metrics", + "type": "feat", + "scope": "manascore", + "additions": 180, + "deletions": 18, + "timestamp": "2026-03-31T14:13:04+02:00" + }, + { + "hash": "3b7b6c9", + "short": "refactor(auth-ui): SessionManager i18n, shared userAgent util, a11y fixes", + "type": "refactor", + "scope": "auth-ui", + "additions": 126, + "deletions": 67, + "timestamp": "2026-03-31T14:14:16+02:00" + }, + { + "hash": "2018192", + "short": "feat(manascore): add Tier 2 ecosystem metrics", + "type": "feat", + "scope": "manascore", + "additions": 248, + "deletions": 9, + "timestamp": "2026-03-31T14:20:20+02:00" + }, + { + "hash": "e5c63f6", + "short": "fix(auth-ui): add focus traps to modals + aria-disabled on all buttons", + "type": "fix", + "scope": "auth-ui", + "additions": 98, + "deletions": 0, + "timestamp": "2026-03-31T14:22:25+02:00" + }, + { + "hash": "750a0c7", + "short": "refactor(calendar): remove todo integration entirely", + "type": "refactor", + "scope": "calendar", + "additions": 38, + "deletions": 4555, + "timestamp": "2026-03-31T14:25:34+02:00" + }, + { + "hash": "cea0c97", + "short": "fix(contacts): fix CSP blocking auth, broken contact detail modal, and missing click handler", + "type": "fix", + "scope": "contacts", + "additions": 40, + "deletions": 38, + "timestamp": "2026-03-31T16:29:18+02:00" + }, + { + "hash": "df1cd4b", + "short": "chore(calendar): remove showTasksInCalendar from localStorage migration", + "type": "chore", + "scope": "calendar", + "additions": 0, + "deletions": 1, + "timestamp": "2026-03-31T16:30:53+02:00" + }, + { + "hash": "d460c9e", + "short": "feat(ecosystem-audit): add Tier 3 metrics (git activity, a11y, auth guard, docker)", + "type": "feat", + "scope": "ecosystem-audit", + "additions": 303, + "deletions": 68, + "timestamp": "2026-03-31T16:32:56+02:00" + }, + { + "hash": "ed9672e", + "short": "refactor(todo): remove projects concept, unify views with Fokus/Übersicht/Matrix", + "type": "refactor", + "scope": "todo", + "additions": 74, + "deletions": 866, + "timestamp": "2026-03-31T16:34:51+02:00" + }, + { + "hash": "4fb8519", + "short": "test(auth): add 68 unit tests for auth-ui, shared-auth, and shared-branding", + "type": "test", + "scope": "auth", + "additions": 555, + "deletions": 5, + "timestamp": "2026-03-31T16:35:16+02:00" + }, + { + "hash": "708299b", + "short": "fix(startup): add Colima datadisk symlink safety check on boot", + "type": "fix", + "scope": "startup", + "additions": 22, + "deletions": 0, + "timestamp": "2026-03-31T16:39:51+02:00" + }, + { + "hash": "ab387b9", + "short": "chore: remove all NestJS backend references, replace with Hono/Bun", + "type": null, + "scope": null, + "additions": 603, + "deletions": 2403, + "timestamp": "2026-03-31T16:52:25+02:00" + }, + { + "hash": "e5ca208", + "short": "feat(contacts): add context menu to alphabet/grid views with icons, add icons to todo context menu", + "type": "feat", + "scope": "contacts", + "additions": 121, + "deletions": 4, + "timestamp": "2026-03-31T16:55:29+02:00" + }, + { + "hash": "7bc4db7", + "short": "fix(builds): repair inventar settings import and add skilltree storage service", + "type": "fix", + "scope": "builds", + "additions": 43, + "deletions": 2, + "timestamp": "2026-03-31T16:56:37+02:00" + }, + { + "hash": "6e75718", + "short": "feat(arcade): migrate backend from NestJS to Hono/Bun", + "type": "feat", + "scope": "arcade", + "additions": 4606, + "deletions": 2014, + "timestamp": "2026-03-31T17:02:14+02:00" + }, + { + "hash": "1b0c46e", + "short": "fix(inventar-web): suppress prerender 404 for missing favicon.png", + "type": "fix", + "scope": "inventar-web", + "additions": 7, + "deletions": 0, + "timestamp": "2026-03-31T17:04:49+02:00" + }, + { + "hash": "019ad55", + "short": "fix(shared-pwa): remove favicon.png from default include assets", + "type": "fix", + "scope": "shared-pwa", + "additions": 1, + "deletions": 8, + "timestamp": "2026-03-31T17:15:07+02:00" + }, + { + "hash": "09d5576", + "short": "feat(memoro): integrate memoro web app into monorepo (phases 1-6)", + "type": "feat", + "scope": "memoro", + "additions": 33941, + "deletions": 0, + "timestamp": "2026-03-31T17:05:24+02:00" + }, + { + "hash": "d8a2b37", + "short": "chore(memoro): import legacy backend, mobile, and landing apps", + "type": "chore", + "scope": "memoro", + "additions": 280653, + "deletions": 2, + "timestamp": "2026-03-31T17:08:45+02:00" + }, + { + "hash": "b37df6f", + "short": "feat(todo): redesign task detail modal + add inline subtasks", + "type": "feat", + "scope": "todo", + "additions": 597, + "deletions": 393, + "timestamp": "2026-03-31T17:13:59+02:00" + }, + { + "hash": "111a7e8", + "short": "fix(contacts): use elevated surface background for contact detail modal", + "type": "fix", + "scope": "contacts", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-31T17:14:11+02:00" + }, + { + "hash": "6496d90", + "short": "feat(todo): add inline subtasks to KanbanTaskCard (Fokus layout)", + "type": "feat", + "scope": "todo", + "additions": 114, + "deletions": 0, + "timestamp": "2026-03-31T17:17:51+02:00" + }, + { + "hash": "0398997", + "short": "fix(compose): change calc-web port from 5026 to 5031 (port conflict with zitare-web)", + "type": "fix", + "scope": "compose", + "additions": 3, + "deletions": 3, + "timestamp": "2026-03-31T17:23:56+02:00" + }, + { + "hash": "cbe877c", + "short": "fix(todo): prevent DnD from blocking subtask clicks in KanbanTaskCard", + "type": "fix", + "scope": "todo", + "additions": 2, + "deletions": 1, + "timestamp": "2026-03-31T17:27:38+02:00" + }, + { + "hash": "2a00310", + "short": "fix(todo): use \\$state.snapshot() for subtask toggle to avoid DataCloneError", + "type": "fix", + "scope": "todo", + "additions": 4, + "deletions": 2, + "timestamp": "2026-03-31T17:31:35+02:00" + }, + { + "hash": "adfcc7d", + "short": "design(todo): paper-style task cards — no border/bg, text-proportional checkboxes", + "type": "design", + "scope": "todo", + "additions": 55, + "deletions": 69, + "timestamp": "2026-03-31T17:34:21+02:00" + }, + { + "hash": "420bf07", + "short": "design(todo): wrap task and subtask titles instead of truncating", + "type": "design", + "scope": "todo", + "additions": 9, + "deletions": 10, + "timestamp": "2026-03-31T17:36:31+02:00" + }, + { + "hash": "bce533c", + "short": "fix(uload-web): add missing svelte-i18n dependency", + "type": "fix", + "scope": "uload-web", + "additions": 4, + "deletions": 0, + "timestamp": "2026-03-31T17:38:12+02:00" + }, + { + "hash": "402baf7", + "short": "feat(monitoring): add uptime monitoring via Blackbox Exporter", + "type": "feat", + "scope": "monitoring", + "additions": 984, + "deletions": 0, + "timestamp": "2026-03-31T17:43:25+02:00" + }, + { + "hash": "a22f1de", + "short": "feat(todo): complete animation + \"Heute erledigt\" section on focus pages", + "type": "feat", + "scope": "todo", + "additions": 111, + "deletions": 5, + "timestamp": "2026-03-31T17:45:22+02:00" + }, + { + "hash": "31d661c", + "short": "docs(mac-mini): document uptime monitoring tools and Grafana dashboard", + "type": "docs", + "scope": "mac-mini", + "additions": 9, + "deletions": 0, + "timestamp": "2026-03-31T17:46:10+02:00" + }, + { + "hash": "23aa5e2", + "short": "fix(uload-web): add missing @tailwindcss/forms dependency", + "type": "fix", + "scope": "uload-web", + "additions": 4, + "deletions": 0, + "timestamp": "2026-03-31T17:48:43+02:00" + }, + { + "hash": "999c54a", + "short": "fix(todo): scrollable sheet body + subtasks animate complete with parent", + "type": "fix", + "scope": "todo", + "additions": 59, + "deletions": 47, + "timestamp": "2026-03-31T17:50:22+02:00" + }, + { + "hash": "b1af506", + "short": "fix(auth): surface email-not-verified error and detect needsVerification on signup", + "type": "fix", + "scope": "auth", + "additions": 15, + "deletions": 5, + "timestamp": "2026-03-31T17:52:47+02:00" + }, + { + "hash": "38135ca", + "short": "fix(uload-web): add missing @tailwindcss/typography dependency", + "type": "fix", + "scope": "uload-web", + "additions": 1, + "deletions": 0, + "timestamp": "2026-03-31T17:59:59+02:00" + }, + { + "hash": "36922cc", + "short": "fix(mana-auth): robust email-not-verified detection", + "type": "fix", + "scope": "mana-auth", + "additions": 6, + "deletions": 3, + "timestamp": "2026-03-31T18:01:24+02:00" + }, + { + "hash": "504f77a", + "short": "debug: log login error shape", + "type": null, + "scope": null, + "additions": 9, + "deletions": 0, + "timestamp": "2026-03-31T18:05:41+02:00" + }, + { + "hash": "d044afe", + "short": "feat(status-page): add public status page at status.mana.how", + "type": "feat", + "scope": "status-page", + "additions": 421, + "deletions": 0, + "timestamp": "2026-03-31T18:07:07+02:00" + }, + { + "hash": "bdf76cb", + "short": "fix(mana-auth): remove debug log, finalize EMAIL_NOT_VERIFIED detection", + "type": "fix", + "scope": "mana-auth", + "additions": 2, + "deletions": 14, + "timestamp": "2026-03-31T18:07:57+02:00" + }, + { + "hash": "f4713ec", + "short": "fix(status-page): use host network so container reaches VictoriaMetrics on localhost:9090", + "type": "fix", + "scope": "status-page", + "additions": 6, + "deletions": 6, + "timestamp": "2026-03-31T18:11:30+02:00" + }, + { + "hash": "0500fb7", + "short": "fix(prerender): suppress favicon.png 404 during prerender in skilltree and nutriphi", + "type": "fix", + "scope": "prerender", + "additions": 12, + "deletions": 0, + "timestamp": "2026-03-31T18:11:53+02:00" + }, + { + "hash": "6801ba9", + "short": "fix(status-page): increase mem_limit to 64m for apk add", + "type": "fix", + "scope": "status-page", + "additions": 2, + "deletions": 2, + "timestamp": "2026-03-31T18:12:46+02:00" + }, + { + "hash": "cc242d9", + "short": "fix(inventar-web): use browser error tracking import in hooks.client.ts", + "type": "fix", + "scope": "inventar-web", + "additions": 3, + "deletions": 5, + "timestamp": "2026-03-31T18:15:12+02:00" + }, + { + "hash": "86c2abb", + "short": "fix(landings-nginx): mkdir snippets before copy, add status.mana.how vhost", + "type": "fix", + "scope": "landings-nginx", + "additions": 3, + "deletions": 2, + "timestamp": "2026-03-31T18:17:22+02:00" + }, + { + "hash": "5b11f4b", + "short": "fix(uload-web): add health endpoint for Docker healthcheck", + "type": "fix", + "scope": "uload-web", + "additions": 3, + "deletions": 0, + "timestamp": "2026-03-31T18:20:42+02:00" + }, + { + "hash": "58e03e7", + "short": "docs: warn about dual cloudflared config (repo vs server file)", + "type": null, + "scope": null, + "additions": 7, + "deletions": 0, + "timestamp": "2026-03-31T18:22:59+02:00" + }, + { + "hash": "fa8b2cd", + "short": "feat(infra): migrate chat-web, clock-web, presi-web, nutriphi-web from GHCR to local builds", + "type": "feat", + "scope": "infra", + "additions": 16, + "deletions": 4, + "timestamp": "2026-03-31T18:28:31+02:00" + }, + { + "hash": "f79ad17", + "short": "refactor(todo): simplify to single Fokus view, remove Übersicht/Matrix tabs", + "type": "refactor", + "scope": "todo", + "additions": 4, + "deletions": 37, + "timestamp": "2026-03-31T18:29:24+02:00" + }, + { + "hash": "5871283", + "short": "docs: add Mana Bundle Format plan", + "type": null, + "scope": null, + "additions": 240, + "deletions": 0, + "timestamp": "2026-03-31T18:31:45+02:00" + }, + { + "hash": "8e16010", + "short": "fix(presi-web): export auth alias from auth store for existing imports", + "type": "fix", + "scope": "presi-web", + "additions": 2, + "deletions": 0, + "timestamp": "2026-03-31T18:32:03+02:00" + }, + { + "hash": "d23ef52", + "short": "fix(mana-auth): set callbackURL instead of redirectTo for email verification redirect", + "type": "fix", + "scope": "mana-auth", + "additions": 3, + "deletions": 2, + "timestamp": "2026-03-31T18:34:56+02:00" + }, + { + "hash": "af33b1c", + "short": "fix(cloudflared): sync config with actual container ports and add missing apps", + "type": "fix", + "scope": "cloudflared", + "additions": 32, + "deletions": 16, + "timestamp": "2026-03-31T18:40:26+02:00" + }, + { + "hash": "c736dd5", + "short": "docs: add Memoro backend Hono/Bun migration plan", + "type": null, + "scope": null, + "additions": 499, + "deletions": 0, + "timestamp": "2026-03-31T18:43:44+02:00" + }, + { + "hash": "259253e", + "short": "feat(auth): show resend verification panel when registering with existing unverified email", + "type": "feat", + "scope": "auth", + "additions": 129, + "deletions": 43, + "timestamp": "2026-03-31T18:44:01+02:00" + }, + { + "hash": "08032c0", + "short": "feat(manascore): add live uptime badges from status.mana.how", + "type": "feat", + "scope": "manascore", + "additions": 62, + "deletions": 0, + "timestamp": "2026-03-31T18:47:55+02:00" + }, + { + "hash": "bf49b95", + "short": "fix(clock-web): fix mangled import in stopwatch page", + "type": "fix", + "scope": "clock-web", + "additions": 1, + "deletions": 1, + "timestamp": "2026-03-31T18:49:04+02:00" + }, + { + "hash": "a6560a3", + "short": "fix(status-json): strip /health path before .mana.how suffix for correct service keys", + "type": "fix", + "scope": "status-json", + "additions": 3, + "deletions": 1, + "timestamp": "2026-03-31T18:49:18+02:00" + }, + { + "hash": "e335519", + "short": "docs(auth): add Auth UX Patterns section with email verification rules", + "type": "docs", + "scope": "auth", + "additions": 35, + "deletions": 0, + "timestamp": "2026-03-31T18:51:04+02:00" + }, + { + "hash": "838b4c1", + "short": "refactor(ui): apply elevation system across todo, contacts, calendar, clock apps", + "type": "refactor", + "scope": "ui", + "additions": 245, + "deletions": 755, + "timestamp": "2026-03-31T19:00:24+02:00" + }, + { + "hash": "a0caa1f", + "short": "fix(manacore-web): fix login redirect flow", + "type": "fix", + "scope": "manacore-web", + "additions": 10, + "deletions": 19, + "timestamp": "2026-03-31T19:02:04+02:00" + }, + { + "hash": "29515e7", + "short": "feat(memoro): add Hono/Bun server + audio-server (replaces NestJS)", + "type": "feat", + "scope": "memoro", + "additions": 3903, + "deletions": 0, + "timestamp": "2026-03-31T19:03:31+02:00" + }, + { + "hash": "3ea2c03", + "short": "feat(todo): inline title editing + detail modal button on task items", + "type": "feat", + "scope": "todo", + "additions": 109, + "deletions": 111, + "timestamp": "2026-03-31T19:06:55+02:00" + }, + { + "hash": "5e4518b", + "short": "refactor(ui): unify LanguageSelector, ConfirmDialog, and AppSlider across apps", + "type": "refactor", + "scope": "ui", + "additions": 62, + "deletions": 228, + "timestamp": "2026-03-31T19:10:55+02:00" + }, + { + "hash": "0a9c381", + "short": "feat(guides): add mana guides app — step-by-step playbook app", + "type": "feat", + "scope": "guides", + "additions": 2460, + "deletions": 0, + "timestamp": "2026-03-31T20:12:36+02:00" + }, + { + "hash": "6e0dd0c", + "short": "docs(devlog): add 2026-03-31 entry — Memoro, status.mana.how, Todo polish, infra", + "type": "docs", + "scope": "devlog", + "additions": 351, + "deletions": 0, + "timestamp": "2026-03-31T20:15:56+02:00" + }, + { + "hash": "6d2509c", + "short": "feat(memoro): add deployment infrastructure and migrate web services to new Hono server", + "type": "feat", + "scope": "memoro", + "additions": 322, + "deletions": 752, + "timestamp": "2026-03-31T20:16:54+02:00" + }, + { + "hash": "a893b07", + "short": "feat(guides): complete Phase 1 — auth routes, i18n, collection detail, import fixes", + "type": "feat", + "scope": "guides", + "additions": 480, + "deletions": 13, + "timestamp": "2026-03-31T21:16:16+02:00" + }, + { + "hash": "8e496ff", + "short": "fix(memoro): migrate web services + add credits balance endpoint", + "type": "fix", + "scope": "memoro", + "additions": 94, + "deletions": 333, + "timestamp": "2026-03-31T21:20:52+02:00" + }, + { + "hash": "1a999f8", + "short": "feat(guides): Phase 2 — step editor, edit mode, collection management", + "type": "feat", + "scope": "guides", + "additions": 687, + "deletions": 110, + "timestamp": "2026-03-31T21:23:47+02:00" + }, + { + "hash": "7f1c83f", + "short": "feat(guides): collection selector in guide modal, quick inline step add", + "type": "feat", + "scope": "guides", + "additions": 96, + "deletions": 16, + "timestamp": "2026-03-31T21:26:07+02:00" + }, + { + "hash": "e624756", + "short": "feat(guides): Phase 3 — Hono/Bun server for web import and guide sharing", + "type": "feat", + "scope": "guides", + "additions": 306, + "deletions": 0, + "timestamp": "2026-03-31T21:29:59+02:00" + }, + { + "hash": "c6448a6", + "short": "fix(mana-auth): avoid error.body access in login catch — triggers async stream read", + "type": "fix", + "scope": "mana-auth", + "additions": 4, + "deletions": 4, + "timestamp": "2026-03-31T21:41:06+02:00" + }, + { + "hash": "ec0af64", + "short": "fix(memoro/web): fix broken authService.forgotPassword reference + add auth URL to env example", + "type": "fix", + "scope": "memoro/web", + "additions": 6, + "deletions": 2, + "timestamp": "2026-03-31T21:41:25+02:00" + }, + { + "hash": "a02dceb", + "short": "feat(guides): ImportModal, share button, CLAUDE.md, server dev scripts", + "type": "feat", + "scope": "guides", + "additions": 543, + "deletions": 11, + "timestamp": "2026-03-31T21:42:26+02:00" + }, + { + "hash": "6259770", + "short": "fix(memoro/server): resolve all TypeScript strict mode errors", + "type": "fix", + "scope": "memoro/server", + "additions": 28, + "deletions": 27, + "timestamp": "2026-03-31T21:59:31+02:00" + }, + { + "hash": "8a7efdd", + "short": "fix(memoro/audio-server): resolve TypeScript errors", + "type": "fix", + "scope": "memoro/audio-server", + "additions": 2, + "deletions": 1, + "timestamp": "2026-03-31T22:00:16+02:00" + }, + { + "hash": "71db334", + "short": "feat(guides): PillNavigation + public shared guide route", + "type": "feat", + "scope": "guides", + "additions": 376, + "deletions": 79, + "timestamp": "2026-03-31T22:00:31+02:00" + }, + { + "hash": "1605796", + "short": "fix(memoro/web): declare new env vars in app.d.ts", + "type": "fix", + "scope": "memoro/web", + "additions": 5, + "deletions": 0, + "timestamp": "2026-03-31T22:03:19+02:00" + }, + { + "hash": "3f08110", + "short": "feat(todo): refactor inline title editing + kanban subtask DnD", + "type": "feat", + "scope": "todo", + "additions": 523, + "deletions": 613, + "timestamp": "2026-03-31T22:23:31+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-03-31/macher.md b/devlog/2026-03-31/macher.md new file mode 100644 index 000000000..031020718 --- /dev/null +++ b/devlog/2026-03-31/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-03-31 +day: 70 +view: macher +weekday: Dienstag +commits: 114 +review: written +--- + +# Dienstag, 2026-03-31 — Tag 70 (Macher-Sicht) + +## Stats + +114 Commits, +343823 / −27132 LoC, 2066 Files. Top-Dirs: `apps/memoro/apps/landing` (28%), `apps/memoro/apps/mobile` (24%), `apps/memoro/apps/web` (9%), `apps/todo/apps/web` (6%), `apps/memoro/apps/backend` (5%). Tags: todo, guides, auth, contacts, auth-ui. Session 09:02 → 20:23 (~387 aktive Min, längster Fokus 162 Min). + +## Commits + +- `a545bb6` refactor(todo): move edit button from FAB to PillNav, share state via context (+47/-74) +- `e68e5c6` refactor(shared-ui): unify icon system to Phosphor, remove SVG path fallbacks (+134/-330) +- `9f6e463` refactor(calendar,contacts): replace inline SVGs with Phosphor icons (+365/-1717) +- `3f2e6a3` feat(todo): unify view modes into single route with Fokus/Übersicht/Matrix layouts (+709/-1803) +- `f58d58f` refactor(apps): replace inline SVGs with Phosphor icons across 19 apps (+179/-687) +- `504e775` refactor(apps): automated SVG-to-Phosphor migration across all apps (+780/-3083) +- `59e535a` refactor(todo): move ViewSelector behind Layout pill, simplify homepage (+135/-451) +- `25e3962` refactor(apps): final SVG-to-Phosphor pass for photos, clock, mukke, inventar (+65/-350) +- `47f981f` refactor(shared-ui): replace remaining inline SVGs with Phosphor icons (+119/-477) +- `14df2cd` fix(auth): declare accessTier as additionalField so Better Auth includes it in user object (+11/-0) +- `c02e264` docs: add Phosphor icon guidelines to code-style.md (+32/-0) +- `56f89b8` fix(shared-ui): resolve Tag identifier collision in TagList (+2/-2) +- `74ff066` simplify(todo): single view with edit mode, remove ViewSelector (+12/-88) +- `101f20e` refactor(todo,calendar): extract duplicated constants and utilities (+438/-371) +- `52e09e4` refactor(todo): merge TagStrip into unified filter strip (+53/-55) +- `bc17889` refactor(contacts,todo): extract shared utilities, eliminate duplication (+67/-106) +- `3211878` feat(todo): add clickable Tags label pill linking to /tags management (+41/-13) +- `4872bc0` refactor(contacts): extract error helper, field labels, match type labels (+60/-40) +- `8465383` refactor(todo): replace Mehr dropdown with inline project pills, add Filter label (+46/-121) +- `b354195` refactor(contacts): apply getErrorMessage helper to remaining files (+11/-9) + +_… plus 94 weitere Commits._ diff --git a/devlog/2026-03-31/spieler.md b/devlog/2026-03-31/spieler.md new file mode 100644 index 000000000..325eac4f1 --- /dev/null +++ b/devlog/2026-03-31/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-03-31 +day: 70 +view: spieler +weekday: Dienstag +commits: 114 +review: written +--- + +# Dienstag, 2026-03-31 — Tag 70 + +Großer Sprint-Tag mit Schwerpunkt **apps** (114 Commits). + +## Highlights + +- unify view modes into single route with Fokus/Übersicht/Matrix layouts +- declare accessTier as additionalField so Better Auth includes it in user object +- add Phosphor icon guidelines to code-style.md +- resolve Tag identifier collision in TagList +- simplify(todo): single view with edit mode, remove ViewSelector diff --git a/devlog/2026-04-01/data.json b/devlog/2026-04-01/data.json new file mode 100644 index 000000000..14de41ae0 --- /dev/null +++ b/devlog/2026-04-01/data.json @@ -0,0 +1,891 @@ +{ + "date": "2026-04-01", + "day_number": 71, + "weekday": "Mittwoch", + "commits": 87, + "authors": [ + { + "name": "Till JS", + "count": 87 + } + ], + "additions": 84704, + "deletions": 45921, + "net_lines": 38783, + "files_changed": 1354, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-01T08:55:03.000Z", + "last_commit_at": "2026-04-01T23:53:54.000Z", + "total_span_minutes": 899, + "active_minutes": 404, + "pauses": [ + { + "from": "12:22", + "to": "14:19", + "minutes": 117 + }, + { + "from": "14:19", + "to": "14:55", + "minutes": 36 + }, + { + "from": "17:24", + "to": "20:18", + "minutes": 174 + }, + { + "from": "23:05", + "to": "01:17", + "minutes": 132 + }, + { + "from": "01:17", + "to": "01:53", + "minutes": 36 + } + ], + "longest_focus_minutes": 167 + }, + "top_dirs": [ + { + "path": "apps/manacore/apps/web", + "pct": 31 + }, + { + "path": "apps/{manadeck => cards}/apps/mobile", + "pct": 9 + }, + { + "path": "apps/memoro/apps/backend", + "pct": 8 + }, + { + "path": "apps/todo/apps/web", + "pct": 6 + }, + { + "path": "apps/{manadeck => cards}/apps/web", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 588 + }, + { + "ext": ".svelte", + "count": 394 + }, + { + "ext": ".md", + "count": 144 + }, + { + "ext": ".json", + "count": 105 + }, + { + "ext": ".tsx", + "count": 64 + }, + { + "ext": ".astro", + "count": 36 + } + ], + "tags": ["manacore/web", "manacore", "memoro/server", "todo/web", "memoro"], + "commits_list": [ + { + "hash": "aa645c2", + "short": "feat(memoro/server): port meetings module to Hono/Bun (Phase 7)", + "type": "feat", + "scope": "memoro/server", + "additions": 607, + "deletions": 0, + "timestamp": "2026-04-01T10:55:03+02:00" + }, + { + "hash": "d097a9d", + "short": "fix(manacore/web): add sync server URL build arg to Dockerfile", + "type": "fix", + "scope": "manacore/web", + "additions": 4, + "deletions": 0, + "timestamp": "2026-04-01T10:56:17+02:00" + }, + { + "hash": "3fa218c", + "short": "chore(memoro): remove old NestJS backends (Phase 8+9)", + "type": "chore", + "scope": "memoro", + "additions": 1102, + "deletions": 34960, + "timestamp": "2026-04-01T11:21:03+02:00" + }, + { + "hash": "57db32f", + "short": "feat(status-page): add app release tier section to status.mana.how", + "type": "feat", + "scope": "status-page", + "additions": 171, + "deletions": 13, + "timestamp": "2026-04-01T11:32:27+02:00" + }, + { + "hash": "9d77f12", + "short": "feat(memoro/web): add Dockerfile + docker-compose for production deployment", + "type": "feat", + "scope": "memoro/web", + "additions": 108, + "deletions": 828, + "timestamp": "2026-04-01T11:42:41+02:00" + }, + { + "hash": "29b77f2", + "short": "refactor(status-page): show tier badges inline instead of separate section", + "type": "refactor", + "scope": "status-page", + "additions": 32, + "deletions": 101, + "timestamp": "2026-04-01T11:44:38+02:00" + }, + { + "hash": "75a3ea2", + "short": "refactor: rename ManaDeck to Cards across entire monorepo", + "type": null, + "scope": null, + "additions": 899, + "deletions": 916, + "timestamp": "2026-04-01T11:45:21+02:00" + }, + { + "hash": "9987847", + "short": "feat(shared-branding): add missing apps to registry + fix manadeck alias", + "type": "feat", + "scope": "shared-branding", + "additions": 124, + "deletions": 0, + "timestamp": "2026-04-01T11:51:49+02:00" + }, + { + "hash": "6d5d528", + "short": "fix(memoro/web): replace $user with authStore.user (Svelte 5 runes)", + "type": "fix", + "scope": "memoro/web", + "additions": 23, + "deletions": 19, + "timestamp": "2026-04-01T11:52:47+02:00" + }, + { + "hash": "f9514de", + "short": "feat(status-page): add ManaCore to app registry + fix mana.how badge", + "type": "feat", + "scope": "status-page", + "additions": 23, + "deletions": 4, + "timestamp": "2026-04-01T11:59:16+02:00" + }, + { + "hash": "d1992f6", + "short": "feat(shared-auth-ui): redesign GuestWelcomeModal for better UX", + "type": "feat", + "scope": "shared-auth-ui", + "additions": 84, + "deletions": 91, + "timestamp": "2026-04-01T11:59:28+02:00" + }, + { + "hash": "4dfa2cc", + "short": "update(manacore/landing): sync footer with actual production deployment", + "type": "update", + "scope": "manacore/landing", + "additions": 30, + "deletions": 25, + "timestamp": "2026-04-01T11:59:33+02:00" + }, + { + "hash": "ffd608c", + "short": "feat(shared-ui, manacore/web): cross-app navigation enhancement (3 phases)", + "type": "feat", + "scope": "shared-ui, manacore/web", + "additions": 1990, + "deletions": 138, + "timestamp": "2026-04-01T11:59:36+02:00" + }, + { + "hash": "075e204", + "short": "fix(manacore/landing): improve footer layout and readability", + "type": "fix", + "scope": "manacore/landing", + "additions": 68, + "deletions": 37, + "timestamp": "2026-04-01T12:09:28+02:00" + }, + { + "hash": "4d0e9a6", + "short": "feat: add Cmd+K spotlight actions to all 23 apps", + "type": null, + "scope": null, + "additions": 602, + "deletions": 27, + "timestamp": "2026-04-01T12:11:34+02:00" + }, + { + "hash": "1570cc0", + "short": "feat(shared-auth-ui): add GuestRegistrationNudge + complete feature texts + improve seed data", + "type": "feat", + "scope": "shared-auth-ui", + "additions": 439, + "deletions": 20, + "timestamp": "2026-04-01T12:16:55+02:00" + }, + { + "hash": "5c66492", + "short": "update(shared-branding): update app statuses and availability flags", + "type": "update", + "scope": "shared-branding", + "additions": 504, + "deletions": 577, + "timestamp": "2026-04-01T12:22:31+02:00" + }, + { + "hash": "cb85fba", + "short": "feat(todo/web, shared-i18n): complete i18n for Todo web app + add missing common translations", + "type": "feat", + "scope": "todo/web, shared-i18n", + "additions": 2147, + "deletions": 250, + "timestamp": "2026-04-01T14:19:48+02:00" + }, + { + "hash": "408762e", + "short": "feat(shared-hono): add rate limiting middleware", + "type": "feat", + "scope": "shared-hono", + "additions": 73, + "deletions": 1, + "timestamp": "2026-04-01T14:55:22+02:00" + }, + { + "hash": "3e99d86", + "short": "update(shared-branding, shared-utils): set memoro to published + extend analytics events", + "type": "update", + "scope": "shared-branding, shared-utils", + "additions": 13, + "deletions": 7, + "timestamp": "2026-04-01T14:55:30+02:00" + }, + { + "hash": "bee8bcb", + "short": "feat(todo): add reminders with background worker and notification dispatch", + "type": "feat", + "scope": "todo", + "additions": 417, + "deletions": 40, + "timestamp": "2026-04-01T14:55:42+02:00" + }, + { + "hash": "90f6c0d", + "short": "feat(memoro): add transcription fallback chain, AI provider fallbacks, and error tracking", + "type": "feat", + "scope": "memoro", + "additions": 879, + "deletions": 482, + "timestamp": "2026-04-01T14:55:52+02:00" + }, + { + "hash": "7b7a00a", + "short": "feat(contacts): add landing page + avatar upload and vCard import on server", + "type": "feat", + "scope": "contacts", + "additions": 949, + "deletions": 3, + "timestamp": "2026-04-01T14:56:08+02:00" + }, + { + "hash": "a03de84", + "short": "update(calendar/server): integrate shared-hono middleware and rate limiting", + "type": "update", + "scope": "calendar/server", + "additions": 23, + "deletions": 4, + "timestamp": "2026-04-01T14:56:15+02:00" + }, + { + "hash": "da3a140", + "short": "update(infra): mana-stt WhisperX + diarization, mana-notify templates, CD pipeline updates", + "type": "update", + "scope": "infra", + "additions": 1245, + "deletions": 428, + "timestamp": "2026-04-01T14:56:26+02:00" + }, + { + "hash": "3c47997", + "short": "docs(manascore): add Memoro audit report (58/100 Beta)", + "type": "docs", + "scope": "manascore", + "additions": 227, + "deletions": 0, + "timestamp": "2026-04-01T14:56:41+02:00" + }, + { + "hash": "304c1e8", + "short": "feat(memoro/server): add Zod validation, consistent ApiResult responses, and pagination", + "type": "feat", + "scope": "memoro/server", + "additions": 986, + "deletions": 858, + "timestamp": "2026-04-01T15:18:07+02:00" + }, + { + "hash": "1bc134e", + "short": "feat(memoro/web, shared-utils): add MemoroEvents analytics tracking", + "type": "feat", + "scope": "memoro/web, shared-utils", + "additions": 54, + "deletions": 0, + "timestamp": "2026-04-01T15:18:30+02:00" + }, + { + "hash": "293fd7b", + "short": "update(manascore): bump Memoro from 58 to 72 (Beta → Production)", + "type": "update", + "scope": "manascore", + "additions": 40, + "deletions": 33, + "timestamp": "2026-04-01T15:18:55+02:00" + }, + { + "hash": "b684dde", + "short": "feat(calendar, contacts, todo): add server API tests with vitest", + "type": "feat", + "scope": "calendar, contacts, todo", + "additions": 1490, + "deletions": 290, + "timestamp": "2026-04-01T15:27:58+02:00" + }, + { + "hash": "1007c1e", + "short": "style: apply prettier formatting to manascore docs, todo web, and auth-ui pages", + "type": null, + "scope": null, + "additions": 1330, + "deletions": 1144, + "timestamp": "2026-04-01T15:28:30+02:00" + }, + { + "hash": "bdf166a", + "short": "feat(memoro/server): add Zod schema validation tests with vitest", + "type": "feat", + "scope": "memoro/server", + "additions": 992, + "deletions": 535, + "timestamp": "2026-04-01T15:43:05+02:00" + }, + { + "hash": "d5bb20c", + "short": "style: add shared-auth-ui as Tailwind @source across 11 web apps", + "type": null, + "scope": null, + "additions": 11, + "deletions": 0, + "timestamp": "2026-04-01T15:43:21+02:00" + }, + { + "hash": "f6cbba9", + "short": "fix(todo): refine kanban quick-add row styling", + "type": "fix", + "scope": "todo", + "additions": 17, + "deletions": 10, + "timestamp": "2026-04-01T15:43:34+02:00" + }, + { + "hash": "32e8edf", + "short": "feat(memoro/server): add comprehensive API route tests", + "type": "feat", + "scope": "memoro/server", + "additions": 1771, + "deletions": 2, + "timestamp": "2026-04-01T16:07:03+02:00" + }, + { + "hash": "3413689", + "short": "feat(memoro/server): implement invite email, health checks, and update ManaScore", + "type": "feat", + "scope": "memoro/server", + "additions": 243, + "deletions": 30, + "timestamp": "2026-04-01T16:18:28+02:00" + }, + { + "hash": "cb0e67d", + "short": "docs: add unified same-origin app migration plan", + "type": null, + "scope": null, + "additions": 1242, + "deletions": 0, + "timestamp": "2026-04-01T16:22:44+02:00" + }, + { + "hash": "c582f16", + "short": "feat(memoro/audio-server): add vitest setup and 25 API + config tests", + "type": "feat", + "scope": "memoro/audio-server", + "additions": 562, + "deletions": 52, + "timestamp": "2026-04-01T16:31:28+02:00" + }, + { + "hash": "9aedc89", + "short": "docs(memoro/server): add OpenAPI 3.1 spec and update ManaScore to 79", + "type": "docs", + "scope": "memoro/server", + "additions": 943, + "deletions": 19, + "timestamp": "2026-04-01T16:31:44+02:00" + }, + { + "hash": "d3807b4", + "short": "feat(manacore): start unified same-origin app — database schema + calc module", + "type": "feat", + "scope": "manacore", + "additions": 2179, + "deletions": 0, + "timestamp": "2026-04-01T16:35:54+02:00" + }, + { + "hash": "8525721", + "short": "feat(todo/web): add secondary pages system with centered layout", + "type": "feat", + "scope": "todo/web", + "additions": 697, + "deletions": 20, + "timestamp": "2026-04-01T16:37:16+02:00" + }, + { + "hash": "11a2db8", + "short": "fix(memoro): unify error responses, add offline page, align i18n defaults", + "type": "fix", + "scope": "memoro", + "additions": 19, + "deletions": 13, + "timestamp": "2026-04-01T16:39:11+02:00" + }, + { + "hash": "aadd1c7", + "short": "feat(todo/web): add \"To Do\" page, remove scroll-snap, allow closing last column", + "type": "feat", + "scope": "todo/web", + "additions": 14, + "deletions": 9, + "timestamp": "2026-04-01T16:54:12+02:00" + }, + { + "hash": "e449172", + "short": "feat(manacore): add clock, zitare, moodlit, skilltree, inventar modules + routes", + "type": "feat", + "scope": "manacore", + "additions": 9883, + "deletions": 2, + "timestamp": "2026-04-01T16:56:42+02:00" + }, + { + "hash": "6d51d3e", + "short": "feat(todo/web): add page minimize/restore tabs, inline task creation, i18n completed times", + "type": "feat", + "scope": "todo/web", + "additions": 401, + "deletions": 33, + "timestamp": "2026-04-01T17:19:24+02:00" + }, + { + "hash": "e7999fb", + "short": "feat(manacore): migrate skilltree, inventar, times, planta, citycorners, photos to unified app", + "type": "feat", + "scope": "manacore", + "additions": 14322, + "deletions": 0, + "timestamp": "2026-04-01T17:21:20+02:00" + }, + { + "hash": "c6ed652", + "short": "docs: update unified app migration plan — 12/25 modules done", + "type": null, + "scope": null, + "additions": 25, + "deletions": 7, + "timestamp": "2026-04-01T17:21:59+02:00" + }, + { + "hash": "ce3ed10", + "short": "feat(todo/web): replace dead filter system with working tag filtering", + "type": "feat", + "scope": "todo/web", + "additions": 67, + "deletions": 1022, + "timestamp": "2026-04-01T17:24:33+02:00" + }, + { + "hash": "1022d2f", + "short": "feat(manacore): migrate presi, uload, context, questions, nutriphi to unified app", + "type": "feat", + "scope": "manacore", + "additions": 7201, + "deletions": 0, + "timestamp": "2026-04-01T20:18:09+02:00" + }, + { + "hash": "7def9c9", + "short": "docs: update unified app migration plan — 17/25 modules done", + "type": null, + "scope": null, + "additions": 8, + "deletions": 9, + "timestamp": "2026-04-01T20:18:40+02:00" + }, + { + "hash": "990ade3", + "short": "feat(manacore): migrate storage, cards, playground, guides to unified app", + "type": "feat", + "scope": "manacore", + "additions": 3284, + "deletions": 0, + "timestamp": "2026-04-01T20:28:00+02:00" + }, + { + "hash": "933715c", + "short": "refactor(todo/web): remove edit mode, rename pages, add inline editing & drag reorder", + "type": "refactor", + "scope": "todo/web", + "additions": 592, + "deletions": 629, + "timestamp": "2026-04-01T20:31:36+02:00" + }, + { + "hash": "9b614cd", + "short": "feat(manacore): migrate contacts, todo, calendar, picture, chat, mukke, memoro — Phase 2 complete", + "type": "feat", + "scope": "manacore", + "additions": 10802, + "deletions": 0, + "timestamp": "2026-04-01T20:48:30+02:00" + }, + { + "hash": "9a6aa12", + "short": "docs: Phase 2 complete — all 26 modules migrated to unified app", + "type": null, + "scope": null, + "additions": 20, + "deletions": 14, + "timestamp": "2026-04-01T20:49:06+02:00" + }, + { + "hash": "6dc259d", + "short": "feat(manacore): Phase 3 — component-based split-screen system", + "type": "feat", + "scope": "manacore", + "additions": 2548, + "deletions": 0, + "timestamp": "2026-04-01T20:58:34+02:00" + }, + { + "hash": "8409f8a", + "short": "feat(shared-ui, todo): add cross-type drag & drop system with tag enrichment", + "type": "feat", + "scope": "shared-ui, todo", + "additions": 1343, + "deletions": 297, + "timestamp": "2026-04-01T21:00:25+02:00" + }, + { + "hash": "e94775d", + "short": "fix(todo): persist labelIds on task creation and merge metadata on label update", + "type": "fix", + "scope": "todo", + "additions": 4, + "deletions": 1, + "timestamp": "2026-04-01T21:03:56+02:00" + }, + { + "hash": "9549233", + "short": "feat(manavoxel): clean up dead code, add portal keys, fix triggers, implement gold economy", + "type": "feat", + "scope": "manavoxel", + "additions": 107, + "deletions": 91, + "timestamp": "2026-04-01T21:04:25+02:00" + }, + { + "hash": "fe052cc", + "short": "feat(manacore): Phase 4 — cross-app dashboard widgets", + "type": "feat", + "scope": "manacore", + "additions": 1315, + "deletions": 1, + "timestamp": "2026-04-01T21:08:03+02:00" + }, + { + "hash": "0b460c5", + "short": "docs: update plan — Phase 3 + 4 complete (split-screen + widgets)", + "type": null, + "scope": null, + "additions": 8, + "deletions": 2, + "timestamp": "2026-04-01T21:08:21+02:00" + }, + { + "hash": "8fe16b2", + "short": "feat(infra): Phase 5 — consolidate to single web container", + "type": "feat", + "scope": "infra", + "additions": 44, + "deletions": 671, + "timestamp": "2026-04-01T21:17:38+02:00" + }, + { + "hash": "59e1e8e", + "short": "feat(shared): Phase 6 — update app URLs and navigation for unified app", + "type": "feat", + "scope": "shared", + "additions": 72, + "deletions": 88, + "timestamp": "2026-04-01T21:19:14+02:00" + }, + { + "hash": "a3a472c", + "short": "feat(manacore): Phase 7 — unified sync manager for multi-app DB", + "type": "feat", + "scope": "manacore", + "additions": 461, + "deletions": 0, + "timestamp": "2026-04-01T21:21:01+02:00" + }, + { + "hash": "3bf40fc", + "short": "docs: migration plan complete — all 7 phases done", + "type": null, + "scope": null, + "additions": 10, + "deletions": 4, + "timestamp": "2026-04-01T21:21:20+02:00" + }, + { + "hash": "bd67e8d", + "short": "feat(manacore, shared-ui): integrate cross-type DnD into unified app", + "type": "feat", + "scope": "manacore, shared-ui", + "additions": 174, + "deletions": 2, + "timestamp": "2026-04-01T21:30:40+02:00" + }, + { + "hash": "c81b636", + "short": "feat(todo/web): add page maximize/minimize/close controls and default todo page", + "type": "feat", + "scope": "todo/web", + "additions": 809, + "deletions": 87, + "timestamp": "2026-04-01T21:31:04+02:00" + }, + { + "hash": "4f8c3d6", + "short": "feat(shared-ui, todo): BottomStack notification system + PillNav bottomOffset", + "type": "feat", + "scope": "shared-ui, todo", + "additions": 4, + "deletions": 16, + "timestamp": "2026-04-01T21:32:35+02:00" + }, + { + "hash": "709e781", + "short": "feat(manacore): add DnD tag support to calendar and contacts modules", + "type": "feat", + "scope": "manacore", + "additions": 206, + "deletions": 3, + "timestamp": "2026-04-01T21:38:33+02:00" + }, + { + "hash": "76ae64a", + "short": "fix(manacore/web): build fixes for unified app — toast store, Svelte 5 syntax, icon imports", + "type": "fix", + "scope": "manacore/web", + "additions": 67, + "deletions": 154, + "timestamp": "2026-04-01T21:52:16+02:00" + }, + { + "hash": "7fe4662", + "short": "fix(manacore/web): add app-specific packages to Dockerfile for production build", + "type": "fix", + "scope": "manacore/web", + "additions": 3, + "deletions": 0, + "timestamp": "2026-04-01T21:55:20+02:00" + }, + { + "hash": "6ac7153", + "short": "fix(manacore/web): replace svelte-sonner with local toast store", + "type": "fix", + "scope": "manacore/web", + "additions": 4, + "deletions": 4, + "timestamp": "2026-04-01T22:03:13+02:00" + }, + { + "hash": "d51ee49", + "short": "fix(manacore/web): add dexie as direct dependency for Docker build", + "type": "fix", + "scope": "manacore/web", + "additions": 407, + "deletions": 281, + "timestamp": "2026-04-01T22:19:49+02:00" + }, + { + "hash": "f797d70", + "short": "feat(shared-ui): add content search support to GlobalSpotlight", + "type": "feat", + "scope": "shared-ui", + "additions": 197, + "deletions": 6, + "timestamp": "2026-04-01T22:29:51+02:00" + }, + { + "hash": "98ca01f", + "short": "feat(manacore/web): add cross-app search engine with IndexedDB providers", + "type": "feat", + "scope": "manacore/web", + "additions": 729, + "deletions": 1, + "timestamp": "2026-04-01T22:29:59+02:00" + }, + { + "hash": "8050da3", + "short": "feat(shared-uload): add shared package with ShareModal and cross-app link creation", + "type": "feat", + "scope": "shared-uload", + "additions": 506, + "deletions": 0, + "timestamp": "2026-04-01T22:33:25+02:00" + }, + { + "hash": "23b5b8b", + "short": "feat(uload/web): add source field tracking and filter for cross-app links", + "type": "feat", + "scope": "uload/web", + "additions": 30, + "deletions": 0, + "timestamp": "2026-04-01T22:33:34+02:00" + }, + { + "hash": "2105cc6", + "short": "feat(manacore/web): add share via uLoad to calendar events and contacts", + "type": "feat", + "scope": "manacore/web", + "additions": 60, + "deletions": 1, + "timestamp": "2026-04-01T22:33:40+02:00" + }, + { + "hash": "eeb3827", + "short": "feat(manacore/web): add share via uLoad to todo, cards, and chat", + "type": "feat", + "scope": "manacore/web", + "additions": 75, + "deletions": 1, + "timestamp": "2026-04-01T22:58:06+02:00" + }, + { + "hash": "ae73f70", + "short": "feat(manacore/web): add share via uLoad to mukke playlists and presi decks", + "type": "feat", + "scope": "manacore/web", + "additions": 43, + "deletions": 0, + "timestamp": "2026-04-01T22:59:29+02:00" + }, + { + "hash": "14701a9", + "short": "feat(shared-uload): add password protection and expiration to ShareModal", + "type": "feat", + "scope": "shared-uload", + "additions": 85, + "deletions": 5, + "timestamp": "2026-04-01T23:03:49+02:00" + }, + { + "hash": "28b9532", + "short": "feat(manacore/web): add search providers for picture, presi, mukke, zitare, clock", + "type": "feat", + "scope": "manacore/web", + "additions": 414, + "deletions": 0, + "timestamp": "2026-04-01T23:05:25+02:00" + }, + { + "hash": "06107f6", + "short": "feat(mana-video-gen): add AI video generation service with LTX-Video", + "type": "feat", + "scope": "mana-video-gen", + "additions": 1017, + "deletions": 0, + "timestamp": "2026-04-02T01:17:47+02:00" + }, + { + "hash": "c4b8a16", + "short": "fix(manacore/web): fix Docker build and healthchecks", + "type": "fix", + "scope": "manacore/web", + "additions": 7, + "deletions": 2, + "timestamp": "2026-04-02T01:53:31+02:00" + }, + { + "hash": "982629f", + "short": "feat(manacore/web): add subdomain-to-path routing for all apps", + "type": "feat", + "scope": "manacore/web", + "additions": 39, + "deletions": 0, + "timestamp": "2026-04-02T01:53:36+02:00" + }, + { + "hash": "970dc8b", + "short": "feat(manacore/web): add leaflet dependency for map views", + "type": "feat", + "scope": "manacore/web", + "additions": 432, + "deletions": 501, + "timestamp": "2026-04-02T01:53:42+02:00" + }, + { + "hash": "4116715", + "short": "feat(manacore/web): add todo kanban board components and view grouping", + "type": "feat", + "scope": "manacore/web", + "additions": 1005, + "deletions": 0, + "timestamp": "2026-04-02T01:53:48+02:00" + }, + { + "hash": "ef53824", + "short": "feat(local-llm): add client-side LLM inference package with WebLLM", + "type": "feat", + "scope": "local-llm", + "additions": 501, + "deletions": 0, + "timestamp": "2026-04-02T01:53:54+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-01/macher.md b/devlog/2026-04-01/macher.md new file mode 100644 index 000000000..d542829f6 --- /dev/null +++ b/devlog/2026-04-01/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-01 +day: 71 +view: macher +weekday: Mittwoch +commits: 87 +review: written +--- + +# Mittwoch, 2026-04-01 — Tag 71 (Macher-Sicht) + +## Stats + +87 Commits, +84704 / −45921 LoC, 1354 Files. Top-Dirs: `apps/manacore/apps/web` (31%), `apps/{manadeck => cards}/apps/mobile` (9%), `apps/memoro/apps/backend` (8%), `apps/todo/apps/web` (6%), `apps/{manadeck => cards}/apps/web` (5%). Tags: manacore/web, manacore, memoro/server, todo/web, memoro. Session 08:55 → 23:53 (~404 aktive Min, längster Fokus 167 Min). + +## Commits + +- `aa645c2` feat(memoro/server): port meetings module to Hono/Bun (Phase 7) (+607/-0) +- `d097a9d` fix(manacore/web): add sync server URL build arg to Dockerfile (+4/-0) +- `3fa218c` chore(memoro): remove old NestJS backends (Phase 8+9) (+1102/-34960) +- `57db32f` feat(status-page): add app release tier section to status.mana.how (+171/-13) +- `9d77f12` feat(memoro/web): add Dockerfile + docker-compose for production deployment (+108/-828) +- `29b77f2` refactor(status-page): show tier badges inline instead of separate section (+32/-101) +- `75a3ea2` refactor: rename ManaDeck to Cards across entire monorepo (+899/-916) +- `9987847` feat(shared-branding): add missing apps to registry + fix manadeck alias (+124/-0) +- `6d5d528` fix(memoro/web): replace $user with authStore.user (Svelte 5 runes) (+23/-19) +- `f9514de` feat(status-page): add ManaCore to app registry + fix mana.how badge (+23/-4) +- `d1992f6` feat(shared-auth-ui): redesign GuestWelcomeModal for better UX (+84/-91) +- `4dfa2cc` update(manacore/landing): sync footer with actual production deployment (+30/-25) +- `ffd608c` feat(shared-ui, manacore/web): cross-app navigation enhancement (3 phases) (+1990/-138) +- `075e204` fix(manacore/landing): improve footer layout and readability (+68/-37) +- `4d0e9a6` feat: add Cmd+K spotlight actions to all 23 apps (+602/-27) +- `1570cc0` feat(shared-auth-ui): add GuestRegistrationNudge + complete feature texts + improve seed data (+439/-20) +- `5c66492` update(shared-branding): update app statuses and availability flags (+504/-577) +- `cb85fba` feat(todo/web, shared-i18n): complete i18n for Todo web app + add missing common translations (+2147/-250) +- `408762e` feat(shared-hono): add rate limiting middleware (+73/-1) +- `3e99d86` update(shared-branding, shared-utils): set memoro to published + extend analytics events (+13/-7) + +_… plus 67 weitere Commits._ diff --git a/devlog/2026-04-01/spieler.md b/devlog/2026-04-01/spieler.md new file mode 100644 index 000000000..7cb680c89 --- /dev/null +++ b/devlog/2026-04-01/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-01 +day: 71 +view: spieler +weekday: Mittwoch +commits: 87 +review: written +--- + +# Mittwoch, 2026-04-01 — Tag 71 + +Großer Sprint-Tag mit Schwerpunkt **apps** (87 Commits). + +## Highlights + +- port meetings module to Hono/Bun (Phase 7) +- add sync server URL build arg to Dockerfile +- add app release tier section to status.mana.how +- add Dockerfile + docker-compose for production deployment +- add missing apps to registry + fix manadeck alias diff --git a/devlog/2026-04-02/data.json b/devlog/2026-04-02/data.json new file mode 100644 index 000000000..e7f623152 --- /dev/null +++ b/devlog/2026-04-02/data.json @@ -0,0 +1,1076 @@ +{ + "date": "2026-04-02", + "day_number": 72, + "weekday": "Donnerstag", + "commits": 107, + "authors": [ + { + "name": "Till JS", + "count": 107 + } + ], + "additions": 67522, + "deletions": 68285, + "net_lines": -763, + "files_changed": 3408, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-02T08:45:14.000Z", + "last_commit_at": "2026-04-02T22:30:44.000Z", + "total_span_minutes": 826, + "active_minutes": 504, + "pauses": [ + { + "from": "13:27", + "to": "13:59", + "minutes": 32 + }, + { + "from": "14:33", + "to": "15:33", + "minutes": 60 + }, + { + "from": "15:34", + "to": "16:10", + "minutes": 35 + }, + { + "from": "18:12", + "to": "20:14", + "minutes": 122 + }, + { + "from": "20:16", + "to": "20:55", + "minutes": 39 + }, + { + "from": "21:43", + "to": "22:17", + "minutes": 34 + } + ], + "longest_focus_minutes": 163 + }, + "top_dirs": [ + { + "path": "apps/manacore/apps/web", + "pct": 19 + }, + { + "path": "apps/bauntown/apps/landing", + "pct": 7 + }, + { + "path": "apps/memoro/apps/{web => web-archived}", + "pct": 5 + }, + { + "path": "apps/calendar/apps/{web => web-archived}", + "pct": 5 + }, + { + "path": "apps/todo/apps/{web => web-archived}", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 1323 + }, + { + "ext": ".svelte", + "count": 1215 + }, + { + "ext": ".json", + "count": 404 + }, + { + "ext": ".md", + "count": 153 + }, + { + "ext": ".astro", + "count": 98 + }, + { + "ext": ".png", + "count": 88 + } + ], + "tags": ["manacore/web", "ui", "shared-stores", "analytics", "i18n"], + "commits_list": [ + { + "hash": "82abde6", + "short": "fix(wisekeep/landing): add missing TalkGrid and QuoteCollection components", + "type": "fix", + "scope": "wisekeep/landing", + "additions": 159, + "deletions": 0, + "timestamp": "2026-04-02T10:45:14+02:00" + }, + { + "hash": "071d217", + "short": "fix(guides/web): add missing supportedLocales export to i18n", + "type": "fix", + "scope": "guides/web", + "additions": 4, + "deletions": 1, + "timestamp": "2026-04-02T10:45:19+02:00" + }, + { + "hash": "3b5f77d", + "short": "feat(manacore/web): port calendar UI components from standalone app", + "type": "feat", + "scope": "manacore/web", + "additions": 3438, + "deletions": 501, + "timestamp": "2026-04-02T11:05:49+02:00" + }, + { + "hash": "f408d70", + "short": "feat(manacore/web): refactor todo page into modular components with i18n", + "type": "feat", + "scope": "manacore/web", + "additions": 4168, + "deletions": 375, + "timestamp": "2026-04-02T11:12:57+02:00" + }, + { + "hash": "1cbd9a2", + "short": "feat(spiral-db): add mana activity schema for cross-app unified spiral", + "type": "feat", + "scope": "spiral-db", + "additions": 79, + "deletions": 0, + "timestamp": "2026-04-02T11:13:06+02:00" + }, + { + "hash": "9c0613d", + "short": "feat(manacore/web): add spiral module with activity collection and page", + "type": "feat", + "scope": "manacore/web", + "additions": 1657, + "deletions": 281, + "timestamp": "2026-04-02T11:13:15+02:00" + }, + { + "hash": "249cbc9", + "short": "feat(manacore/web): add calendar event parser/estimator and LLM test page", + "type": "feat", + "scope": "manacore/web", + "additions": 1049, + "deletions": 0, + "timestamp": "2026-04-02T11:13:22+02:00" + }, + { + "hash": "a658822", + "short": "fix(manacore/web): fix LLM test page derived rune, unused import, and auto-scroll", + "type": "fix", + "scope": "manacore/web", + "additions": 16, + "deletions": 4, + "timestamp": "2026-04-02T11:17:06+02:00" + }, + { + "hash": "e5a6946", + "short": "feat(manacore/web): add model comparison tab to LLM test page", + "type": "feat", + "scope": "manacore/web", + "additions": 329, + "deletions": 77, + "timestamp": "2026-04-02T11:25:44+02:00" + }, + { + "hash": "348b6ff", + "short": "chore: remove playground, reader, bauntown, voxelava, and worldream apps", + "type": null, + "scope": null, + "additions": 13, + "deletions": 11273, + "timestamp": "2026-04-02T11:47:54+02:00" + }, + { + "hash": "c3c02c6", + "short": "feat(manacore/web): add benchmark, compare history, markdown & cache status to LLM test", + "type": "feat", + "scope": "manacore/web", + "additions": 523, + "deletions": 114, + "timestamp": "2026-04-02T11:50:23+02:00" + }, + { + "hash": "91d61e5", + "short": "refactor: remove leaflet dependency, replace with OSM embeds", + "type": null, + "scope": null, + "additions": 197, + "deletions": 35400, + "timestamp": "2026-04-02T11:56:26+02:00" + }, + { + "hash": "3bef29b", + "short": "feat(local-llm): add generate utilities and reactive Svelte status", + "type": "feat", + "scope": "local-llm", + "additions": 134, + "deletions": 0, + "timestamp": "2026-04-02T11:57:50+02:00" + }, + { + "hash": "82516e9", + "short": "fix(manacore/web): fix build errors for production deployment", + "type": "fix", + "scope": "manacore/web", + "additions": 19, + "deletions": 9, + "timestamp": "2026-04-02T12:05:49+02:00" + }, + { + "hash": "78e726c", + "short": "fix(docker): add local-llm package to Docker build context", + "type": "fix", + "scope": "docker", + "additions": 2, + "deletions": 0, + "timestamp": "2026-04-02T12:07:36+02:00" + }, + { + "hash": "f625c7b", + "short": "fix(manacore/web): disable SSR for llm-test page", + "type": "fix", + "scope": "manacore/web", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-02T12:14:50+02:00" + }, + { + "hash": "d574dda", + "short": "fix(manacore/web): externalize @mlc-ai/web-llm from SSR build", + "type": "fix", + "scope": "manacore/web", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-02T12:17:30+02:00" + }, + { + "hash": "919cb4b", + "short": "fix(local-llm): wrap @mlc-ai/web-llm in dynamic import for Docker builds", + "type": "fix", + "scope": "local-llm", + "additions": 17, + "deletions": 1, + "timestamp": "2026-04-02T12:22:20+02:00" + }, + { + "hash": "88864fd", + "short": "fix(shared-ui): open AppDrawer above PillNav instead of below", + "type": "fix", + "scope": "shared-ui", + "additions": 4, + "deletions": 4, + "timestamp": "2026-04-02T12:31:56+02:00" + }, + { + "hash": "05e5e95", + "short": "feat(manacore/web): unified IndexedDB sync via Dexie hooks, eliminate cross-app readers", + "type": "feat", + "scope": "manacore/web", + "additions": 783, + "deletions": 854, + "timestamp": "2026-04-02T12:40:31+02:00" + }, + { + "hash": "4c9b458", + "short": "chore: uncommitted WIP from previous session", + "type": null, + "scope": null, + "additions": 1007, + "deletions": 53, + "timestamp": "2026-04-02T12:40:37+02:00" + }, + { + "hash": "1cd89af", + "short": "feat(todo/web): add custom pages with inline visual editor", + "type": "feat", + "scope": "todo/web", + "additions": 259, + "deletions": 10, + "timestamp": "2026-04-02T12:44:14+02:00" + }, + { + "hash": "6756760", + "short": "feat(manacore/web): add DateStrip to calendar module", + "type": "feat", + "scope": "manacore/web", + "additions": 533, + "deletions": 0, + "timestamp": "2026-04-02T12:46:37+02:00" + }, + { + "hash": "35f4bd4", + "short": "fix: resolve port conflict (mana-image-gen 3025→3026) and replace APP_URLS with internal routes", + "type": null, + "scope": null, + "additions": 48, + "deletions": 137, + "timestamp": "2026-04-02T12:56:37+02:00" + }, + { + "hash": "e870270", + "short": "refactor: consolidate Clock app into Times", + "type": null, + "scope": null, + "additions": 1524, + "deletions": 5969, + "timestamp": "2026-04-02T13:04:07+02:00" + }, + { + "hash": "99d0dc6", + "short": "fix(manacore/web): float DateStrip at bottom, remove sidebar", + "type": "fix", + "scope": "manacore/web", + "additions": 380, + "deletions": 122, + "timestamp": "2026-04-02T13:06:55+02:00" + }, + { + "hash": "df7395e", + "short": "chore: add archived clock app to apps-archived/", + "type": null, + "scope": null, + "additions": 6683, + "deletions": 0, + "timestamp": "2026-04-02T13:07:38+02:00" + }, + { + "hash": "ee83199", + "short": "feat(mana-sync): unified WebSocket — one connection per user instead of 27", + "type": "feat", + "scope": "mana-sync", + "additions": 64, + "deletions": 39, + "timestamp": "2026-04-02T13:09:10+02:00" + }, + { + "hash": "a4a8ff0", + "short": "feat(manacore/web): add custom pages system to unified todo module", + "type": "feat", + "scope": "manacore/web", + "additions": 1774, + "deletions": 274, + "timestamp": "2026-04-02T13:15:18+02:00" + }, + { + "hash": "97730cd", + "short": "feat(manacore/web): port full contact creation modal from standalone app", + "type": "feat", + "scope": "manacore/web", + "additions": 231, + "deletions": 56, + "timestamp": "2026-04-02T13:19:01+02:00" + }, + { + "hash": "509a541", + "short": "feat(manacore/web): add minimized tabs bar to todo pages", + "type": "feat", + "scope": "manacore/web", + "additions": 194, + "deletions": 1, + "timestamp": "2026-04-02T13:25:08+02:00" + }, + { + "hash": "4f70e1c", + "short": "refactor(shared-go): extract shared auth package from 3 Go services", + "type": "refactor", + "scope": "shared-go", + "additions": 466, + "deletions": 385, + "timestamp": "2026-04-02T13:27:44+02:00" + }, + { + "hash": "e11aa50", + "short": "chore: remove unused Supabase auth store, archive stub services", + "type": null, + "scope": null, + "additions": 6, + "deletions": 291, + "timestamp": "2026-04-02T13:59:53+02:00" + }, + { + "hash": "996ec81", + "short": "refactor(shared-python): extract shared auth package from mana-stt and mana-tts", + "type": "refactor", + "scope": "shared-python", + "additions": 524, + "deletions": 790, + "timestamp": "2026-04-02T14:09:32+02:00" + }, + { + "hash": "983da85", + "short": "chore: remove orphaned jest.config.js, raise vitest coverage to 70%", + "type": null, + "scope": null, + "additions": 4, + "deletions": 76, + "timestamp": "2026-04-02T14:11:03+02:00" + }, + { + "hash": "3d124f0", + "short": "feat(manacore/web): add inline QuickEventPopover for calendar", + "type": "feat", + "scope": "manacore/web", + "additions": 378, + "deletions": 7, + "timestamp": "2026-04-02T14:12:01+02:00" + }, + { + "hash": "f2af192", + "short": "feat(manacore/web): workbench with app pages carousel on home", + "type": "feat", + "scope": "manacore/web", + "additions": 1234, + "deletions": 413, + "timestamp": "2026-04-02T14:13:28+02:00" + }, + { + "hash": "04fcbd1", + "short": "feat(shared-ui): add TagChip component and tag component tests", + "type": "feat", + "scope": "shared-ui", + "additions": 1823, + "deletions": 910, + "timestamp": "2026-04-02T14:24:19+02:00" + }, + { + "hash": "de83352", + "short": "refactor(todo,photos): use shared TagChip and TagSelector components", + "type": "refactor", + "scope": "todo,photos", + "additions": 23, + "deletions": 87, + "timestamp": "2026-04-02T14:24:34+02:00" + }, + { + "hash": "934f333", + "short": "feat(shared-stores): add createViewStore factory for view/filter/sort", + "type": "feat", + "scope": "shared-stores", + "additions": 548, + "deletions": 3, + "timestamp": "2026-04-02T14:25:31+02:00" + }, + { + "hash": "b1a5c95", + "short": "refactor(inventar,times): use shared createViewStore factory", + "type": "refactor", + "scope": "inventar,times", + "additions": 35, + "deletions": 219, + "timestamp": "2026-04-02T14:25:48+02:00" + }, + { + "hash": "3ea28b9", + "short": "refactor(db): consolidate ~20+ databases into 2 (mana_platform + mana_sync)", + "type": "refactor", + "scope": "db", + "additions": 311, + "deletions": 346, + "timestamp": "2026-04-02T14:31:28+02:00" + }, + { + "hash": "eabd920", + "short": "feat(manacore/web): theme-aware AppViews with inline creation", + "type": "feat", + "scope": "manacore/web", + "additions": 709, + "deletions": 83, + "timestamp": "2026-04-02T14:33:22+02:00" + }, + { + "hash": "48aac82", + "short": "feat(shared-stores): add createTagLinkOps factory for junction tables", + "type": "feat", + "scope": "shared-stores", + "additions": 273, + "deletions": 3, + "timestamp": "2026-04-02T15:33:18+02:00" + }, + { + "hash": "8c98dd8", + "short": "refactor(manacore/web): unify all module tags into shared globalTags", + "type": "refactor", + "scope": "manacore/web", + "additions": 151, + "deletions": 625, + "timestamp": "2026-04-02T15:34:55+02:00" + }, + { + "hash": "be20de2", + "short": "feat(manacore/web): uload feature parity — tags, analytics, settings", + "type": "feat", + "scope": "manacore/web", + "additions": 567, + "deletions": 93, + "timestamp": "2026-04-02T16:10:10+02:00" + }, + { + "hash": "d49a3d7", + "short": "feat(manacore/web): add tag junction tables and stores for all 23 modules", + "type": "feat", + "scope": "manacore/web", + "additions": 314, + "deletions": 3, + "timestamp": "2026-04-02T16:10:49+02:00" + }, + { + "hash": "ead4e71", + "short": "feat(shared-ui,shared-stores): add FavoriteButton component and toggleField utility", + "type": "feat", + "scope": "shared-ui,shared-stores", + "additions": 219, + "deletions": 1, + "timestamp": "2026-04-02T16:16:23+02:00" + }, + { + "hash": "4667d5d", + "short": "feat: unified guest mode with AuthGate + createGuestMode composable", + "type": null, + "scope": null, + "additions": 264, + "deletions": 101, + "timestamp": "2026-04-02T16:22:43+02:00" + }, + { + "hash": "d5c40a4", + "short": "feat(shared-ui): add generic ColorPicker with standard palettes", + "type": "feat", + "scope": "shared-ui", + "additions": 222, + "deletions": 65, + "timestamp": "2026-04-02T16:23:26+02:00" + }, + { + "hash": "475ed87", + "short": "refactor(uload): remove unused schema tables, keep only clicks", + "type": "refactor", + "scope": "uload", + "additions": 15, + "deletions": 202, + "timestamp": "2026-04-02T16:23:33+02:00" + }, + { + "hash": "3bd717b", + "short": "feat(manacore/web): add unified QuickInputBar with context-aware adapters", + "type": "feat", + "scope": "manacore/web", + "additions": 576, + "deletions": 0, + "timestamp": "2026-04-02T16:24:17+02:00" + }, + { + "hash": "51da1f8", + "short": "fix(uload): add input validation, migrate clicks to dedicated table", + "type": "fix", + "scope": "uload", + "additions": 107, + "deletions": 57, + "timestamp": "2026-04-02T16:30:17+02:00" + }, + { + "hash": "7d3114d", + "short": "fix(manacore/web): add svelte-sonner dependency for uload settings", + "type": "fix", + "scope": "manacore/web", + "additions": 106, + "deletions": 181, + "timestamp": "2026-04-02T16:31:17+02:00" + }, + { + "hash": "779a8ba", + "short": "feat(shared-stores): add createArchiveOps factory + unify archive pattern", + "type": "feat", + "scope": "shared-stores", + "additions": 324, + "deletions": 112, + "timestamp": "2026-04-02T16:33:07+02:00" + }, + { + "hash": "5280cc6", + "short": "refactor(analytics): add module context to all Umami events", + "type": "refactor", + "scope": "analytics", + "additions": 260, + "deletions": 224, + "timestamp": "2026-04-02T16:35:27+02:00" + }, + { + "hash": "bc0ffb4", + "short": "fix(manacore/web): restore guest mode imports via local re-export", + "type": "fix", + "scope": "manacore/web", + "additions": 32, + "deletions": 2, + "timestamp": "2026-04-02T16:38:58+02:00" + }, + { + "hash": "86d31c9", + "short": "feat(manacore/web): expand contact detail page with all fields", + "type": "feat", + "scope": "manacore/web", + "additions": 422, + "deletions": 96, + "timestamp": "2026-04-02T16:49:10+02:00" + }, + { + "hash": "b995d52", + "short": "refactor(analytics): consolidate Umami tracking to unified app only", + "type": "refactor", + "scope": "analytics", + "additions": 27, + "deletions": 80, + "timestamp": "2026-04-02T16:52:31+02:00" + }, + { + "hash": "4fa0961", + "short": "feat(shared-stores,shared-ui): add shared reminder system", + "type": "feat", + "scope": "shared-stores,shared-ui", + "additions": 624, + "deletions": 26, + "timestamp": "2026-04-02T16:54:15+02:00" + }, + { + "hash": "198720c", + "short": "feat(shared-stores): add generic data export/import utilities", + "type": "feat", + "scope": "shared-stores", + "additions": 323, + "deletions": 0, + "timestamp": "2026-04-02T17:01:53+02:00" + }, + { + "hash": "f2d6573", + "short": "feat(analytics): add Web Vitals tracking, GlitchTip user context, and funnel events", + "type": "feat", + "scope": "analytics", + "additions": 188, + "deletions": 3, + "timestamp": "2026-04-02T17:03:06+02:00" + }, + { + "hash": "8495a0d", + "short": "feat(shared-stores): add centralized keyboard shortcuts registry", + "type": "feat", + "scope": "shared-stores", + "additions": 236, + "deletions": 0, + "timestamp": "2026-04-02T17:03:38+02:00" + }, + { + "hash": "e152098", + "short": "refactor(i18n): split monolithic locale files into per-module structure", + "type": "refactor", + "scope": "i18n", + "additions": 1977, + "deletions": 1160, + "timestamp": "2026-04-02T17:05:14+02:00" + }, + { + "hash": "bfe11d9", + "short": "feat(i18n): wire user settings locale, add nav translations", + "type": "feat", + "scope": "i18n", + "additions": 114, + "deletions": 20, + "timestamp": "2026-04-02T17:08:11+02:00" + }, + { + "hash": "8ece7d3", + "short": "feat(analytics): add event tracking to 7 core module stores", + "type": "feat", + "scope": "analytics", + "additions": 35, + "deletions": 1, + "timestamp": "2026-04-02T17:10:30+02:00" + }, + { + "hash": "5a7bc5e", + "short": "feat(manacore/web): expand EventDetailModal with full feature set", + "type": "feat", + "scope": "manacore/web", + "additions": 300, + "deletions": 72, + "timestamp": "2026-04-02T17:15:49+02:00" + }, + { + "hash": "e7ae444", + "short": "feat(analytics): add event tracking to remaining 12 module stores", + "type": "feat", + "scope": "analytics", + "additions": 116, + "deletions": 3, + "timestamp": "2026-04-02T17:17:07+02:00" + }, + { + "hash": "39af8f8", + "short": "chore(manacore/web): remove dead code from todo module refactor", + "type": "chore", + "scope": "manacore/web", + "additions": 0, + "deletions": 759, + "timestamp": "2026-04-02T17:18:18+02:00" + }, + { + "hash": "7ba8247", + "short": "feat(manacore/web): wire TagField, FavoriteButton, ColorPicker into module UIs", + "type": "feat", + "scope": "manacore/web", + "additions": 10396, + "deletions": 593, + "timestamp": "2026-04-02T17:20:46+02:00" + }, + { + "hash": "7908995", + "short": "feat(monitoring): structured logging, Promtail alignment, GlitchTip config, status page", + "type": "feat", + "scope": "monitoring", + "additions": 493, + "deletions": 249, + "timestamp": "2026-04-02T17:23:52+02:00" + }, + { + "hash": "034b678", + "short": "fix(manacore/web): fix TagField prop name (selectedIds, not selectedTagIds)", + "type": "fix", + "scope": "manacore/web", + "additions": 7, + "deletions": 3, + "timestamp": "2026-04-02T17:24:24+02:00" + }, + { + "hash": "7650a83", + "short": "feat(manacore/web): wire reminder scheduler into app layout", + "type": "feat", + "scope": "manacore/web", + "additions": 10, + "deletions": 0, + "timestamp": "2026-04-02T17:25:31+02:00" + }, + { + "hash": "2e44a71", + "short": "feat(i18n): consolidate all 22 module translations (Phase 3)", + "type": "feat", + "scope": "i18n", + "additions": 3930, + "deletions": 336, + "timestamp": "2026-04-02T17:53:00+02:00" + }, + { + "hash": "033d070", + "short": "feat(i18n): replace 126 hardcoded German strings with $_() calls (Phase 4)", + "type": "feat", + "scope": "i18n", + "additions": 209, + "deletions": 82, + "timestamp": "2026-04-02T18:09:10+02:00" + }, + { + "hash": "373976a", + "short": "feat(i18n): migrate help content to locale files (Phase 5)", + "type": "feat", + "scope": "i18n", + "additions": 304, + "deletions": 72, + "timestamp": "2026-04-02T18:12:45+02:00" + }, + { + "hash": "2eb1a0c", + "short": "chore: archive 25 standalone web apps, move wisekeep to apps-archived", + "type": null, + "scope": null, + "additions": 294, + "deletions": 1326, + "timestamp": "2026-04-02T20:14:29+02:00" + }, + { + "hash": "4fba777", + "short": "chore: add web-archived to eslint ignore pattern in lint-staged", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-02T20:14:49+02:00" + }, + { + "hash": "9e07849", + "short": "docs: update CLAUDE.md for unified app architecture", + "type": null, + "scope": null, + "additions": 54, + "deletions": 34, + "timestamp": "2026-04-02T20:16:27+02:00" + }, + { + "hash": "079015a", + "short": "refactor(manacore/web): unify page carousel system, remove edit mode", + "type": "refactor", + "scope": "manacore/web", + "additions": 927, + "deletions": 1493, + "timestamp": "2026-04-02T20:55:54+02:00" + }, + { + "hash": "aa93c54", + "short": "feat(api): create unified API server with first 3 modules", + "type": "feat", + "scope": "api", + "additions": 368, + "deletions": 0, + "timestamp": "2026-04-02T21:12:15+02:00" + }, + { + "hash": "eb97378", + "short": "feat(manacore/web): add page carousel to contacts module", + "type": "feat", + "scope": "manacore/web", + "additions": 928, + "deletions": 276, + "timestamp": "2026-04-02T21:21:07+02:00" + }, + { + "hash": "9363063", + "short": "feat(api): port remaining 12 modules to unified API server", + "type": "feat", + "scope": "api", + "additions": 2014, + "deletions": 0, + "timestamp": "2026-04-02T21:34:08+02:00" + }, + { + "hash": "3556fc1", + "short": "chore: archive 17 standalone app servers (replaced by unified API)", + "type": null, + "scope": null, + "additions": 153, + "deletions": 65, + "timestamp": "2026-04-02T21:37:45+02:00" + }, + { + "hash": "31d168c", + "short": "feat(contacts): add self-contact with profile sync and \"Mein Profil\" page", + "type": "feat", + "scope": "contacts", + "additions": 146, + "deletions": 2, + "timestamp": "2026-04-02T21:39:54+02:00" + }, + { + "hash": "baca701", + "short": "fix(contacts): create self-contact in guest mode too", + "type": "fix", + "scope": "contacts", + "additions": 17, + "deletions": 12, + "timestamp": "2026-04-02T21:42:46+02:00" + }, + { + "hash": "03434c2", + "short": "refactor(auth): absorb shared-auth-stores into shared-auth-ui", + "type": "refactor", + "scope": "auth", + "additions": 612, + "deletions": 4, + "timestamp": "2026-04-02T21:43:42+02:00" + }, + { + "hash": "f7f5c9e", + "short": "feat(sync): add pull pagination with hasMore flag", + "type": "feat", + "scope": "sync", + "additions": 51, + "deletions": 26, + "timestamp": "2026-04-02T22:17:20+02:00" + }, + { + "hash": "8ba3c4c", + "short": "feat(sync): partial sync — lazy collection loading on module visit", + "type": "feat", + "scope": "sync", + "additions": 39, + "deletions": 14, + "timestamp": "2026-04-02T22:19:20+02:00" + }, + { + "hash": "068a64b", + "short": "feat(sync): add SSE streaming endpoint for real-time sync", + "type": "feat", + "scope": "sync", + "additions": 216, + "deletions": 6, + "timestamp": "2026-04-02T22:24:10+02:00" + }, + { + "hash": "c8daa44", + "short": "feat(sync): replace WebSocket with SSE client for real-time sync", + "type": "feat", + "scope": "sync", + "additions": 108, + "deletions": 62, + "timestamp": "2026-04-02T22:27:30+02:00" + }, + { + "hash": "a08f150", + "short": "feat(manacore/web): add overlay detail views with inline editing, consolidate routes", + "type": "feat", + "scope": "manacore/web", + "additions": 1899, + "deletions": 184, + "timestamp": "2026-04-02T22:43:05+02:00" + }, + { + "hash": "650dea5", + "short": "feat(manacore/web): add overlay detail views for 8 more modules", + "type": "feat", + "scope": "manacore/web", + "additions": 3361, + "deletions": 24, + "timestamp": "2026-04-02T22:57:09+02:00" + }, + { + "hash": "4cb1bda", + "short": "feat(manacore/web): add overlay detail views for cards, storage, presi", + "type": "feat", + "scope": "manacore/web", + "additions": 1041, + "deletions": 9, + "timestamp": "2026-04-02T23:26:57+02:00" + }, + { + "hash": "fed38ef", + "short": "fix(sync): fix SSE live updates — 2 bugs found during E2E testing", + "type": "fix", + "scope": "sync", + "additions": 41, + "deletions": 38, + "timestamp": "2026-04-02T23:39:46+02:00" + }, + { + "hash": "9ea7e48", + "short": "refactor(manacore/web): rename AppView → ListView across all 24 modules", + "type": "refactor", + "scope": "manacore/web", + "additions": 86, + "deletions": 86, + "timestamp": "2026-04-02T23:45:11+02:00" + }, + { + "hash": "ef0c834", + "short": "feat(ui): add PillNav toggle button next to QuickInputBar", + "type": "feat", + "scope": "ui", + "additions": 49, + "deletions": 0, + "timestamp": "2026-04-02T23:45:43+02:00" + }, + { + "hash": "b66a268", + "short": "feat(manacore/web): add 2D resize (width + height) to workbench pages", + "type": "feat", + "scope": "manacore/web", + "additions": 55, + "deletions": 19, + "timestamp": "2026-04-02T23:49:39+02:00" + }, + { + "hash": "bed2060", + "short": "fix(manacore/web): fix height resize using element's current height as start value", + "type": "fix", + "scope": "manacore/web", + "additions": 8, + "deletions": 10, + "timestamp": "2026-04-02T23:51:54+02:00" + }, + { + "hash": "b415567", + "short": "refactor(ui): unified bottom-stack container for PillNav, QuickInput, TagStrip", + "type": "refactor", + "scope": "ui", + "additions": 155, + "deletions": 86, + "timestamp": "2026-04-02T23:52:40+02:00" + }, + { + "hash": "b3dd8cd", + "short": "fix(ui): dynamic bottom-chrome-height for tabs, notifications, main content", + "type": "fix", + "scope": "ui", + "additions": 24, + "deletions": 4, + "timestamp": "2026-04-02T23:59:16+02:00" + }, + { + "hash": "81f781c", + "short": "fix(ui): move Tags to leftmost in PillNav, match toggle button to InputBar style", + "type": "fix", + "scope": "ui", + "additions": 25, + "deletions": 21, + "timestamp": "2026-04-03T00:08:24+02:00" + }, + { + "hash": "fb5271a", + "short": "fix(ui): move PillNav toggle inside QuickInputBar via leftAction snippet", + "type": "fix", + "scope": "ui", + "additions": 41, + "deletions": 62, + "timestamp": "2026-04-03T00:15:29+02:00" + }, + { + "hash": "06ebc62", + "short": "feat(manacore/web): add tag drag-and-drop to workbench pages", + "type": "feat", + "scope": "manacore/web", + "additions": 219, + "deletions": 4, + "timestamp": "2026-04-03T00:20:54+02:00" + }, + { + "hash": "976fb5f", + "short": "fix(ui): move nav toggle to right side of InputBar, make it larger", + "type": "fix", + "scope": "ui", + "additions": 15, + "deletions": 4, + "timestamp": "2026-04-03T00:21:47+02:00" + }, + { + "hash": "e9d4cbf", + "short": "fix(manacore/web): fix tag drag-and-drop — use reactive .value instead of .subscribe()", + "type": "fix", + "scope": "manacore/web", + "additions": 17, + "deletions": 15, + "timestamp": "2026-04-03T00:26:22+02:00" + }, + { + "hash": "0d142ef", + "short": "feat(manacore/web): show tags as labeled pills instead of dots", + "type": "feat", + "scope": "manacore/web", + "additions": 66, + "deletions": 9, + "timestamp": "2026-04-03T00:30:44+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-02/macher.md b/devlog/2026-04-02/macher.md new file mode 100644 index 000000000..ad4332e18 --- /dev/null +++ b/devlog/2026-04-02/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-02 +day: 72 +view: macher +weekday: Donnerstag +commits: 107 +review: written +--- + +# Donnerstag, 2026-04-02 — Tag 72 (Macher-Sicht) + +## Stats + +107 Commits, +67522 / −68285 LoC, 3408 Files. Top-Dirs: `apps/manacore/apps/web` (19%), `apps/bauntown/apps/landing` (7%), `apps/memoro/apps/{web => web-archived}` (5%), `apps/calendar/apps/{web => web-archived}` (5%), `apps/todo/apps/{web => web-archived}` (4%). Tags: manacore/web, ui, shared-stores, analytics, i18n. Session 08:45 → 22:30 (~504 aktive Min, längster Fokus 163 Min). + +## Commits + +- `82abde6` fix(wisekeep/landing): add missing TalkGrid and QuoteCollection components (+159/-0) +- `071d217` fix(guides/web): add missing supportedLocales export to i18n (+4/-1) +- `3b5f77d` feat(manacore/web): port calendar UI components from standalone app (+3438/-501) +- `f408d70` feat(manacore/web): refactor todo page into modular components with i18n (+4168/-375) +- `1cbd9a2` feat(spiral-db): add mana activity schema for cross-app unified spiral (+79/-0) +- `9c0613d` feat(manacore/web): add spiral module with activity collection and page (+1657/-281) +- `249cbc9` feat(manacore/web): add calendar event parser/estimator and LLM test page (+1049/-0) +- `a658822` fix(manacore/web): fix LLM test page derived rune, unused import, and auto-scroll (+16/-4) +- `e5a6946` feat(manacore/web): add model comparison tab to LLM test page (+329/-77) +- `348b6ff` chore: remove playground, reader, bauntown, voxelava, and worldream apps (+13/-11273) +- `c3c02c6` feat(manacore/web): add benchmark, compare history, markdown & cache status to LLM test (+523/-114) +- `91d61e5` refactor: remove leaflet dependency, replace with OSM embeds (+197/-35400) +- `3bef29b` feat(local-llm): add generate utilities and reactive Svelte status (+134/-0) +- `82516e9` fix(manacore/web): fix build errors for production deployment (+19/-9) +- `78e726c` fix(docker): add local-llm package to Docker build context (+2/-0) +- `f625c7b` fix(manacore/web): disable SSR for llm-test page (+1/-0) +- `d574dda` fix(manacore/web): externalize @mlc-ai/web-llm from SSR build (+1/-0) +- `919cb4b` fix(local-llm): wrap @mlc-ai/web-llm in dynamic import for Docker builds (+17/-1) +- `88864fd` fix(shared-ui): open AppDrawer above PillNav instead of below (+4/-4) +- `05e5e95` feat(manacore/web): unified IndexedDB sync via Dexie hooks, eliminate cross-app readers (+783/-854) + +_… plus 87 weitere Commits._ diff --git a/devlog/2026-04-02/spieler.md b/devlog/2026-04-02/spieler.md new file mode 100644 index 000000000..bd723abbd --- /dev/null +++ b/devlog/2026-04-02/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-02 +day: 72 +view: spieler +weekday: Donnerstag +commits: 107 +review: written +--- + +# Donnerstag, 2026-04-02 — Tag 72 + +Großer Sprint-Tag mit Schwerpunkt **apps** (107 Commits). + +## Highlights + +- add missing TalkGrid and QuoteCollection components +- add missing supportedLocales export to i18n +- port calendar UI components from standalone app +- refactor todo page into modular components with i18n +- add mana activity schema for cross-app unified spiral diff --git a/devlog/2026-04-03/data.json b/devlog/2026-04-03/data.json new file mode 100644 index 000000000..f122e67ed --- /dev/null +++ b/devlog/2026-04-03/data.json @@ -0,0 +1,764 @@ +{ + "date": "2026-04-03", + "day_number": 73, + "weekday": "Freitag", + "commits": 74, + "authors": [ + { + "name": "Till JS", + "count": 74 + } + ], + "additions": 16622, + "deletions": 248970, + "net_lines": -232348, + "files_changed": 2443, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-03T09:36:26.000Z", + "last_commit_at": "2026-04-03T19:39:31.000Z", + "total_span_minutes": 603, + "active_minutes": 345, + "pauses": [ + { + "from": "15:23", + "to": "16:06", + "minutes": 43 + }, + { + "from": "17:03", + "to": "20:04", + "minutes": 180 + }, + { + "from": "20:04", + "to": "20:38", + "minutes": 35 + } + ], + "longest_focus_minutes": 227 + }, + "top_dirs": [ + { + "path": "apps/manacore/apps/web", + "pct": 11 + }, + { + "path": "apps/memoro/apps/web-archived", + "pct": 7 + }, + { + "path": "apps/calendar/apps/web-archived", + "pct": 6 + }, + { + "path": "apps/todo/apps/web-archived", + "pct": 5 + }, + { + "path": "apps/contacts/apps/web-archived", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 1071 + }, + { + "ext": ".ts", + "count": 1024 + }, + { + "ext": ".json", + "count": 197 + }, + { + "ext": ".js", + "count": 35 + }, + { + "ext": ".png", + "count": 34 + }, + { + "ext": ".css", + "count": 30 + } + ], + "tags": ["manacore/web", "ui", "docker", "infra", "mana-notify"], + "commits_list": [ + { + "hash": "794424d", + "short": "fix(ui): open all AppDrawer apps in new tab", + "type": "fix", + "scope": "ui", + "additions": 2, + "deletions": 18, + "timestamp": "2026-04-03T11:36:26+02:00" + }, + { + "hash": "019f3eb", + "short": "feat(manacore/web): show tags in detail views with click-to-remove", + "type": "feat", + "scope": "manacore/web", + "additions": 215, + "deletions": 2, + "timestamp": "2026-04-03T11:37:41+02:00" + }, + { + "hash": "f7ee9ea", + "short": "fix(branding): rename ManaContacts to Kontakte", + "type": "fix", + "scope": "branding", + "additions": 3, + "deletions": 3, + "timestamp": "2026-04-03T11:38:53+02:00" + }, + { + "hash": "9966e9e", + "short": "fix(ui): remove Observatory, API Keys, Gifts from PillNav", + "type": "fix", + "scope": "ui", + "additions": 0, + "deletions": 3, + "timestamp": "2026-04-03T11:40:32+02:00" + }, + { + "hash": "c5906e4", + "short": "fix: update all dev scripts to use unified API server", + "type": null, + "scope": null, + "additions": 49, + "deletions": 70, + "timestamp": "2026-04-03T11:51:46+02:00" + }, + { + "hash": "1245fdc", + "short": "feat(manacore/web): enhance Times & Zitare pages, add DetailViews, clean up homepage", + "type": "feat", + "scope": "manacore/web", + "additions": 981, + "deletions": 127, + "timestamp": "2026-04-03T11:52:27+02:00" + }, + { + "hash": "2bd8f0b", + "short": "fix: change unified API default port from 3050 to 3060", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-03T11:54:07+02:00" + }, + { + "hash": "c21793b", + "short": "fix: resolve all 40 Svelte dev warnings for clean startup", + "type": null, + "scope": null, + "additions": 55, + "deletions": 133, + "timestamp": "2026-04-03T12:01:17+02:00" + }, + { + "hash": "81d5e83", + "short": "fix: revert @const to svelte:component (invalid placement in div)", + "type": null, + "scope": null, + "additions": 3, + "deletions": 5, + "timestamp": "2026-04-03T12:04:18+02:00" + }, + { + "hash": "9534d29", + "short": "fix: revert client sync from per-app SSE to HTTP polling", + "type": null, + "scope": null, + "additions": 14, + "deletions": 17, + "timestamp": "2026-04-03T12:31:53+02:00" + }, + { + "hash": "d368bd3", + "short": "fix: replace bind:clientHeight with calculated bottom chrome height", + "type": null, + "scope": null, + "additions": 5, + "deletions": 14, + "timestamp": "2026-04-03T12:34:42+02:00" + }, + { + "hash": "f0d5ba2", + "short": "fix: allow localhost in CSP connect-src during development", + "type": null, + "scope": null, + "additions": 3, + "deletions": 0, + "timestamp": "2026-04-03T12:37:13+02:00" + }, + { + "hash": "d735918", + "short": "fix: move bottomChromeHeight after isTagStripVisible declaration", + "type": null, + "scope": null, + "additions": 3, + "deletions": 2, + "timestamp": "2026-04-03T12:39:14+02:00" + }, + { + "hash": "7ee57b7", + "short": "feat(manacore/web): add entity descriptor system with cross-module drag-and-drop", + "type": "feat", + "scope": "manacore/web", + "additions": 450, + "deletions": 4, + "timestamp": "2026-04-03T12:42:38+02:00" + }, + { + "hash": "d8ce4ea", + "short": "refactor: consolidate codebase — remove archived code, deduplicate packages, standardize middleware", + "type": null, + "scope": null, + "additions": 172, + "deletions": 21667, + "timestamp": "2026-04-03T12:55:58+02:00" + }, + { + "hash": "e1077e2", + "short": "fix(manacore/web): fix entity registration hang + registry type errors", + "type": "fix", + "scope": "manacore/web", + "additions": 25, + "deletions": 10, + "timestamp": "2026-04-03T12:57:59+02:00" + }, + { + "hash": "6ced238", + "short": "chore: delete 25 web-archived directories, remove stale stubs, clean workspace config", + "type": null, + "scope": null, + "additions": 41, + "deletions": 223288, + "timestamp": "2026-04-03T13:03:49+02:00" + }, + { + "hash": "f819b24", + "short": "fix: revert guestMode $state() — caused effect_update_depth_exceeded", + "type": null, + "scope": null, + "additions": 0, + "deletions": 19, + "timestamp": "2026-04-03T13:10:21+02:00" + }, + { + "hash": "1bd001e", + "short": "fix(manacore/web): restrict page drag to handle only, allow item DnD", + "type": "fix", + "scope": "manacore/web", + "additions": 7, + "deletions": 2, + "timestamp": "2026-04-03T13:11:58+02:00" + }, + { + "hash": "9b8814e", + "short": "fix(ui): make homepage PageCarousel full-width (no side padding)", + "type": "fix", + "scope": "ui", + "additions": 17, + "deletions": 0, + "timestamp": "2026-04-03T13:14:08+02:00" + }, + { + "hash": "a15b027", + "short": "fix(shared-ui): block click event after drag to prevent detail view opening", + "type": "fix", + "scope": "shared-ui", + "additions": 9, + "deletions": 0, + "timestamp": "2026-04-03T13:15:53+02:00" + }, + { + "hash": "ec7c563", + "short": "fix: remove stale references to deleted packages (shared-auth-stores, shared-profile-ui, shared-app-onboarding)", + "type": null, + "scope": null, + "additions": 10, + "deletions": 18, + "timestamp": "2026-04-03T13:15:58+02:00" + }, + { + "hash": "cf03743", + "short": "fix(ui): add left scroll offset to PageCarousel", + "type": "fix", + "scope": "ui", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-03T13:16:20+02:00" + }, + { + "hash": "d7b146a", + "short": "fix(ui): add top padding to workbench on desktop", + "type": "fix", + "scope": "ui", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-03T13:17:20+02:00" + }, + { + "hash": "e8a4b98", + "short": "fix(ui): full-width draggable header bar on PageShell", + "type": "fix", + "scope": "ui", + "additions": 30, + "deletions": 14, + "timestamp": "2026-04-03T13:20:53+02:00" + }, + { + "hash": "a60799d", + "short": "fix(ui): reduce drag handle bar height", + "type": "fix", + "scope": "ui", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-03T13:21:46+02:00" + }, + { + "hash": "2529c91", + "short": "feat(manacore/web): show item title + app color in drag preview", + "type": "feat", + "scope": "manacore/web", + "additions": 69, + "deletions": 14, + "timestamp": "2026-04-03T13:24:58+02:00" + }, + { + "hash": "ad9bbec", + "short": "feat(ui): add left/right arrow buttons to PageShell drag bar", + "type": "feat", + "scope": "ui", + "additions": 107, + "deletions": 1, + "timestamp": "2026-04-03T13:25:51+02:00" + }, + { + "hash": "339e3d3", + "short": "feat(ui): move window controls (minimize, maximize, close) into drag bar", + "type": "feat", + "scope": "ui", + "additions": 71, + "deletions": 32, + "timestamp": "2026-04-03T13:28:37+02:00" + }, + { + "hash": "0af8c7c", + "short": "fix(ui): make all drag bar icons always visible (not hover-only)", + "type": "fix", + "scope": "ui", + "additions": 0, + "deletions": 11, + "timestamp": "2026-04-03T13:30:20+02:00" + }, + { + "hash": "5828f60", + "short": "feat(manacore/web): add habits module with tally board, inline create, and detail view", + "type": "feat", + "scope": "manacore/web", + "additions": 2455, + "deletions": 1, + "timestamp": "2026-04-03T13:34:07+02:00" + }, + { + "hash": "18a94b9", + "short": "feat(manacore/web): clickable cross-module links with overlay stacking", + "type": "feat", + "scope": "manacore/web", + "additions": 143, + "deletions": 39, + "timestamp": "2026-04-03T13:36:40+02:00" + }, + { + "hash": "66d6196", + "short": "fix: add missing closing brace in PageShell CSS (.move-btn)", + "type": null, + "scope": null, + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-03T13:38:12+02:00" + }, + { + "hash": "df74029", + "short": "fix(manacore/web): fix cross-module drop — sync entity registration, lazy store imports", + "type": "fix", + "scope": "manacore/web", + "additions": 13, + "deletions": 10, + "timestamp": "2026-04-03T13:42:31+02:00" + }, + { + "hash": "a8480f6", + "short": "fix(ui): allow multiple detail views open across AppPages", + "type": "fix", + "scope": "ui", + "additions": 11, + "deletions": 2, + "timestamp": "2026-04-03T13:48:25+02:00" + }, + { + "hash": "9abbf9c", + "short": "feat(manacore/web): add notes and finance modules", + "type": "feat", + "scope": "manacore/web", + "additions": 2962, + "deletions": 12, + "timestamp": "2026-04-03T13:57:37+02:00" + }, + { + "hash": "c01eccb", + "short": "refactor(manacore/web): merge entity + app registries into unified AppDescriptor", + "type": "refactor", + "scope": "manacore/web", + "additions": 617, + "deletions": 699, + "timestamp": "2026-04-03T14:01:27+02:00" + }, + { + "hash": "4ec4694", + "short": "fix(manacore/web): make notes and finance workbench panels directly usable", + "type": "fix", + "scope": "manacore/web", + "additions": 316, + "deletions": 379, + "timestamp": "2026-04-03T14:02:00+02:00" + }, + { + "hash": "b63829a", + "short": "fix(manacore/web): redesign notes workbench — compact input, click-to-edit", + "type": "fix", + "scope": "manacore/web", + "additions": 174, + "deletions": 204, + "timestamp": "2026-04-03T14:04:24+02:00" + }, + { + "hash": "09eef96", + "short": "fix(manacore/web): align notes and finance ListViews with workbench design system", + "type": "fix", + "scope": "manacore/web", + "additions": 363, + "deletions": 265, + "timestamp": "2026-04-03T14:08:01+02:00" + }, + { + "hash": "e17d622", + "short": "fix(manacore/web): fix getTagsByIds missing allTags param in zitare, fix TagDragData cast", + "type": "fix", + "scope": "manacore/web", + "additions": 7, + "deletions": 3, + "timestamp": "2026-04-03T14:20:34+02:00" + }, + { + "hash": "8f5727f", + "short": "feat(manacore/web): add places module with GPS location tracking", + "type": "feat", + "scope": "manacore/web", + "additions": 1656, + "deletions": 2, + "timestamp": "2026-04-03T14:33:56+02:00" + }, + { + "hash": "3fa7073", + "short": "fix(docker): remove stale clock/packages/shared COPY from mana-web Dockerfile", + "type": "fix", + "scope": "docker", + "additions": 0, + "deletions": 1, + "timestamp": "2026-04-03T14:36:11+02:00" + }, + { + "hash": "4e5709a", + "short": "fix(docker): add shared-logger to sveltekit-base Dockerfile", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-03T14:41:17+02:00" + }, + { + "hash": "a673a69", + "short": "feat(manacore/web): add overlay close animation + Escape key support", + "type": "feat", + "scope": "manacore/web", + "additions": 65, + "deletions": 22, + "timestamp": "2026-04-03T14:42:02+02:00" + }, + { + "hash": "8171672", + "short": "feat(manacore/web): add undo toasts for delete and tag removal", + "type": "feat", + "scope": "manacore/web", + "additions": 92, + "deletions": 18, + "timestamp": "2026-04-03T14:50:32+02:00" + }, + { + "hash": "543e705", + "short": "feat(manacore/web): add undo toasts to all 14 DetailViews + task completion", + "type": "feat", + "scope": "manacore/web", + "additions": 84, + "deletions": 11, + "timestamp": "2026-04-03T14:55:30+02:00" + }, + { + "hash": "62d9eb1", + "short": "fix(infra): update status page, prometheus, and cloudflared for unified app", + "type": "fix", + "scope": "infra", + "additions": 106, + "deletions": 158, + "timestamp": "2026-04-03T14:59:15+02:00" + }, + { + "hash": "b2adaaa", + "short": "refactor(mana-auth): route emails through mana-notify instead of Nodemailer", + "type": "refactor", + "scope": "mana-auth", + "additions": 26, + "deletions": 48, + "timestamp": "2026-04-03T15:01:27+02:00" + }, + { + "hash": "0bac7e1", + "short": "fix(docker): align mana-notify service key with mana-auth", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-03T15:05:03+02:00" + }, + { + "hash": "c7908e9", + "short": "fix(infra): prevent race condition in status-page-gen script execution", + "type": "fix", + "scope": "infra", + "additions": 2, + "deletions": 1, + "timestamp": "2026-04-03T15:06:13+02:00" + }, + { + "hash": "18d4f84", + "short": "fix(docker): add Brevo SMTP_USER default for mana-notify", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-03T15:07:24+02:00" + }, + { + "hash": "0a6fe57", + "short": "feat(infra): add Stalwart mail server, route mana-notify SMTP through it", + "type": "feat", + "scope": "infra", + "additions": 26, + "deletions": 2, + "timestamp": "2026-04-03T15:20:23+02:00" + }, + { + "hash": "ed78c34", + "short": "fix(docker): correct Stalwart image name to stalwartlabs/stalwart", + "type": "fix", + "scope": "docker", + "additions": 7, + "deletions": 4, + "timestamp": "2026-04-03T15:21:55+02:00" + }, + { + "hash": "f070d02", + "short": "fix(docker): correct Stalwart port mapping and healthcheck", + "type": "fix", + "scope": "docker", + "additions": 2, + "deletions": 2, + "timestamp": "2026-04-03T15:23:16+02:00" + }, + { + "hash": "4825aef", + "short": "feat(mana-auth): add /api/v1/settings endpoint for user settings sync", + "type": "feat", + "scope": "mana-auth", + "additions": 225, + "deletions": 0, + "timestamp": "2026-04-03T16:06:11+02:00" + }, + { + "hash": "d5b76bd", + "short": "feat(docker): connect mana-notify to Stalwart SMTP", + "type": "feat", + "scope": "docker", + "additions": 3, + "deletions": 1, + "timestamp": "2026-04-03T16:08:33+02:00" + }, + { + "hash": "3714b3a", + "short": "fix(mana-notify): support insecure TLS for internal SMTP (Stalwart)", + "type": "fix", + "scope": "mana-notify", + "additions": 58, + "deletions": 19, + "timestamp": "2026-04-03T16:17:57+02:00" + }, + { + "hash": "6a75f3f", + "short": "fix(workbench): make page width responsive on mobile", + "type": "fix", + "scope": "workbench", + "additions": 19, + "deletions": 2, + "timestamp": "2026-04-03T16:18:08+02:00" + }, + { + "hash": "f592464", + "short": "fix(analytics): update Umami website ID after database reset", + "type": "fix", + "scope": "analytics", + "additions": 2, + "deletions": 2, + "timestamp": "2026-04-03T16:23:09+02:00" + }, + { + "hash": "7ac4e09", + "short": "fix(mana-notify): rewrite SMTP sender with LOGIN auth and better error logging", + "type": "fix", + "scope": "mana-notify", + "additions": 88, + "deletions": 53, + "timestamp": "2026-04-03T16:27:26+02:00" + }, + { + "hash": "de91094", + "short": "chore(manacore): remove legacy per-app IndexedDB migration", + "type": "chore", + "scope": "manacore", + "additions": 0, + "deletions": 175, + "timestamp": "2026-04-03T16:29:59+02:00" + }, + { + "hash": "504a686", + "short": "fix(docker): use Stalwart admin account for SMTP sending", + "type": "fix", + "scope": "docker", + "additions": 2, + "deletions": 2, + "timestamp": "2026-04-03T16:33:04+02:00" + }, + { + "hash": "7efe542", + "short": "chore: remove legacy migration and compat code (no users yet)", + "type": null, + "scope": null, + "additions": 4, + "deletions": 119, + "timestamp": "2026-04-03T16:45:49+02:00" + }, + { + "hash": "3b4dfb1", + "short": "fix(docker): use noreply account with user role for Stalwart SMTP", + "type": "fix", + "scope": "docker", + "additions": 2, + "deletions": 2, + "timestamp": "2026-04-03T16:59:45+02:00" + }, + { + "hash": "7797930", + "short": "fix(mana-notify): add Message-ID and Date headers to outgoing emails", + "type": "fix", + "scope": "mana-notify", + "additions": 4, + "deletions": 0, + "timestamp": "2026-04-03T17:03:46+02:00" + }, + { + "hash": "2241663", + "short": "docs: add Stalwart mail server documentation", + "type": null, + "scope": null, + "additions": 215, + "deletions": 0, + "timestamp": "2026-04-03T20:04:09+02:00" + }, + { + "hash": "ee03782", + "short": "feat(manacore/web): add cross-module trigger registry for automations", + "type": "feat", + "scope": "manacore/web", + "additions": 236, + "deletions": 1, + "timestamp": "2026-04-03T20:38:41+02:00" + }, + { + "hash": "0f38a56", + "short": "feat(manacore/web): add automations module with UI for trigger rules", + "type": "feat", + "scope": "manacore/web", + "additions": 764, + "deletions": 0, + "timestamp": "2026-04-03T20:44:20+02:00" + }, + { + "hash": "2dd0812", + "short": "feat(manacore/web): proactive automation suggestions (discovery + inline)", + "type": "feat", + "scope": "manacore/web", + "additions": 589, + "deletions": 3, + "timestamp": "2026-04-03T21:00:23+02:00" + }, + { + "hash": "2f87cf9", + "short": "feat(manacore/web): add unified context menu system for workbench and app pages", + "type": "feat", + "scope": "manacore/web", + "additions": 920, + "deletions": 178, + "timestamp": "2026-04-03T21:18:05+02:00" + }, + { + "hash": "ebfc2fa", + "short": "fix(manacore/web): redesign automations ListView for better readability", + "type": "fix", + "scope": "manacore/web", + "additions": 393, + "deletions": 375, + "timestamp": "2026-04-03T21:22:28+02:00" + }, + { + "hash": "8218037", + "short": "feat: add shared Phosphor IconPicker, migrate habits from emoji to icons, add photos upload", + "type": null, + "scope": null, + "additions": 1440, + "deletions": 672, + "timestamp": "2026-04-03T21:37:01+02:00" + }, + { + "hash": "46dae20", + "short": "feat(manacore/web): localize app names with i18n (5 languages)", + "type": "feat", + "scope": "manacore/web", + "additions": 182, + "deletions": 4, + "timestamp": "2026-04-03T21:39:31+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-03/macher.md b/devlog/2026-04-03/macher.md new file mode 100644 index 000000000..a6055f4b3 --- /dev/null +++ b/devlog/2026-04-03/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-03 +day: 73 +view: macher +weekday: Freitag +commits: 74 +review: written +--- + +# Freitag, 2026-04-03 — Tag 73 (Macher-Sicht) + +## Stats + +74 Commits, +16622 / −248970 LoC, 2443 Files. Top-Dirs: `apps/manacore/apps/web` (11%), `apps/memoro/apps/web-archived` (7%), `apps/calendar/apps/web-archived` (6%), `apps/todo/apps/web-archived` (5%), `apps/contacts/apps/web-archived` (5%). Tags: manacore/web, ui, docker, infra, mana-notify. Session 09:36 → 19:39 (~345 aktive Min, längster Fokus 227 Min). + +## Commits + +- `794424d` fix(ui): open all AppDrawer apps in new tab (+2/-18) +- `019f3eb` feat(manacore/web): show tags in detail views with click-to-remove (+215/-2) +- `f7ee9ea` fix(branding): rename ManaContacts to Kontakte (+3/-3) +- `9966e9e` fix(ui): remove Observatory, API Keys, Gifts from PillNav (+0/-3) +- `c5906e4` fix: update all dev scripts to use unified API server (+49/-70) +- `1245fdc` feat(manacore/web): enhance Times & Zitare pages, add DetailViews, clean up homepage (+981/-127) +- `2bd8f0b` fix: change unified API default port from 3050 to 3060 (+1/-1) +- `c21793b` fix: resolve all 40 Svelte dev warnings for clean startup (+55/-133) +- `81d5e83` fix: revert @const to svelte:component (invalid placement in div) (+3/-5) +- `9534d29` fix: revert client sync from per-app SSE to HTTP polling (+14/-17) +- `d368bd3` fix: replace bind:clientHeight with calculated bottom chrome height (+5/-14) +- `f0d5ba2` fix: allow localhost in CSP connect-src during development (+3/-0) +- `d735918` fix: move bottomChromeHeight after isTagStripVisible declaration (+3/-2) +- `7ee57b7` feat(manacore/web): add entity descriptor system with cross-module drag-and-drop (+450/-4) +- `d8ce4ea` refactor: consolidate codebase — remove archived code, deduplicate packages, standardize middleware (+172/-21667) +- `e1077e2` fix(manacore/web): fix entity registration hang + registry type errors (+25/-10) +- `6ced238` chore: delete 25 web-archived directories, remove stale stubs, clean workspace config (+41/-223288) +- `f819b24` fix: revert guestMode $state() — caused effect_update_depth_exceeded (+0/-19) +- `1bd001e` fix(manacore/web): restrict page drag to handle only, allow item DnD (+7/-2) +- `9b8814e` fix(ui): make homepage PageCarousel full-width (no side padding) (+17/-0) + +_… plus 54 weitere Commits._ diff --git a/devlog/2026-04-03/spieler.md b/devlog/2026-04-03/spieler.md new file mode 100644 index 000000000..20047ba11 --- /dev/null +++ b/devlog/2026-04-03/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-03 +day: 73 +view: spieler +weekday: Freitag +commits: 74 +review: written +--- + +# Freitag, 2026-04-03 — Tag 73 + +Großer Sprint-Tag mit Schwerpunkt **apps** (74 Commits). + +## Highlights + +- open all AppDrawer apps in new tab +- show tags in detail views with click-to-remove +- rename ManaContacts to Kontakte +- remove Observatory, API Keys, Gifts from PillNav +- update all dev scripts to use unified API server diff --git a/devlog/2026-04-04/data.json b/devlog/2026-04-04/data.json new file mode 100644 index 000000000..7b6284fdc --- /dev/null +++ b/devlog/2026-04-04/data.json @@ -0,0 +1,96 @@ +{ + "date": "2026-04-04", + "day_number": 74, + "weekday": "Samstag", + "commits": 2, + "authors": [ + { + "name": "Till JS", + "count": 2 + } + ], + "additions": 299, + "deletions": 318, + "net_lines": -19, + "files_changed": 23, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-04T08:38:30.000Z", + "last_commit_at": "2026-04-04T08:38:57.000Z", + "total_span_minutes": 0, + "active_minutes": 0, + "pauses": [], + "longest_focus_minutes": 0 + }, + "top_dirs": [ + { + "path": "apps/manacore/apps/web", + "pct": 57 + }, + { + "path": "apps/api/src/modules", + "pct": 22 + }, + { + "path": ".env.development", + "pct": 4 + }, + { + "path": "apps/api/package.json", + "pct": 4 + }, + { + "path": "apps/api/src/lib", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 13 + }, + { + "ext": ".svelte", + "count": 7 + }, + { + "ext": ".development", + "count": 1 + }, + { + "ext": ".json", + "count": 1 + }, + { + "ext": ".yaml", + "count": 1 + } + ], + "tags": ["api", "manacore/web"], + "commits_list": [ + { + "hash": "502813f", + "short": "feat(api): route all image uploads through mana-media for CAS, thumbnails & Photos gallery", + "type": "feat", + "scope": "api", + "additions": 238, + "deletions": 213, + "timestamp": "2026-04-04T10:38:30+02:00" + }, + { + "hash": "5fd9c1d", + "short": "fix(manacore/web): resolve effect_update_depth_exceeded and Dexie transaction errors", + "type": "fix", + "scope": "manacore/web", + "additions": 61, + "deletions": 105, + "timestamp": "2026-04-04T10:38:57+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-04/macher.md b/devlog/2026-04-04/macher.md new file mode 100644 index 000000000..779cf479a --- /dev/null +++ b/devlog/2026-04-04/macher.md @@ -0,0 +1,19 @@ +--- +date: 2026-04-04 +day: 74 +view: macher +weekday: Samstag +commits: 2 +review: written +--- + +# Samstag, 2026-04-04 — Tag 74 (Macher-Sicht) + +## Stats + +2 Commits, +299 / −318 LoC, 23 Files. Top-Dirs: `apps/manacore/apps/web` (57%), `apps/api/src/modules` (22%), `.env.development` (4%), `apps/api/package.json` (4%), `apps/api/src/lib` (4%). Tags: api, manacore/web. Session 08:38 → 08:38 (~0 aktive Min, längster Fokus 0 Min). + +## Commits + +- `502813f` feat(api): route all image uploads through mana-media for CAS, thumbnails & Photos gallery (+238/-213) +- `5fd9c1d` fix(manacore/web): resolve effect_update_depth_exceeded and Dexie transaction errors (+61/-105) diff --git a/devlog/2026-04-04/spieler.md b/devlog/2026-04-04/spieler.md new file mode 100644 index 000000000..c3e3e21b1 --- /dev/null +++ b/devlog/2026-04-04/spieler.md @@ -0,0 +1,17 @@ +--- +date: 2026-04-04 +day: 74 +view: spieler +weekday: Samstag +commits: 2 +review: written +--- + +# Samstag, 2026-04-04 — Tag 74 + +Kurzer Arbeitstag, Schwerpunkt **apps**. + +## Highlights + +- route all image uploads through mana-media for CAS, thumbnails & Photos gallery +- resolve effect_update_depth_exceeded and Dexie transaction errors diff --git a/devlog/2026-04-05/data.json b/devlog/2026-04-05/data.json new file mode 100644 index 000000000..f783e27d7 --- /dev/null +++ b/devlog/2026-04-05/data.json @@ -0,0 +1,274 @@ +{ + "date": "2026-04-05", + "day_number": 75, + "weekday": "Sonntag", + "commits": 19, + "authors": [ + { + "name": "Till JS", + "count": 19 + } + ], + "additions": 15083, + "deletions": 11360, + "net_lines": 3723, + "files_changed": 2161, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-05T12:39:00.000Z", + "last_commit_at": "2026-04-05T19:14:45.000Z", + "total_span_minutes": 396, + "active_minutes": 133, + "pauses": [ + { + "from": "14:47", + "to": "15:19", + "minutes": 33 + }, + { + "from": "15:28", + "to": "16:47", + "minutes": 79 + }, + { + "from": "18:33", + "to": "19:49", + "minutes": 76 + }, + { + "from": "20:00", + "to": "21:14", + "minutes": 75 + } + ], + "longest_focus_minutes": 106 + }, + "top_dirs": [ + { + "path": "apps/{manacore => mana}/apps/web", + "pct": 43 + }, + { + "path": "apps/manacore/apps/web", + "pct": 11 + }, + { + "path": "apps/{manacore => mana}/apps/landing", + "pct": 9 + }, + { + "path": "packages/shared-ui/src", + "pct": 3 + }, + { + "path": "apps/{manacore => mana}/apps/mobile", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 699 + }, + { + "ext": ".svelte", + "count": 661 + }, + { + "ext": ".json", + "count": 292 + }, + { + "ext": ".md", + "count": 203 + }, + { + "ext": ".astro", + "count": 95 + }, + { + "ext": ".go", + "count": 69 + } + ], + "tags": ["timeblocks", "manacore/web", "calendar", "dashboard", "habits+todo"], + "commits_list": [ + { + "hash": "0aa0d7b", + "short": "feat(manacore/web): unified time model — timeBlocks for all time data", + "type": "feat", + "scope": "manacore/web", + "additions": 1333, + "deletions": 330, + "timestamp": "2026-04-05T14:39:00+02:00" + }, + { + "hash": "8c8b3f8", + "short": "fix(calendar): remove duplicate calendarViewStore import in WeekView", + "type": "fix", + "scope": "calendar", + "additions": 0, + "deletions": 1, + "timestamp": "2026-04-05T14:40:41+02:00" + }, + { + "hash": "2502d62", + "short": "feat(calendar): type-specific styling, filter UI, cross-module navigation", + "type": "feat", + "scope": "calendar", + "additions": 205, + "deletions": 3, + "timestamp": "2026-04-05T14:47:12+02:00" + }, + { + "hash": "ee7ff7d", + "short": "feat(dashboard): add \"Mein Tag\" timeline widget using timeBlocks", + "type": "feat", + "scope": "dashboard", + "additions": 197, + "deletions": 9, + "timestamp": "2026-04-05T15:19:53+02:00" + }, + { + "hash": "d4700a0", + "short": "feat: rename mukke to music, add cover art upload via mana-media", + "type": null, + "scope": null, + "additions": 259, + "deletions": 215, + "timestamp": "2026-04-05T15:25:34+02:00" + }, + { + "hash": "7afc162", + "short": "feat(dashboard): update CalendarEventsWidget for timeBlocks, add i18n for day-timeline", + "type": "feat", + "scope": "dashboard", + "additions": 25, + "deletions": 0, + "timestamp": "2026-04-05T15:28:54+02:00" + }, + { + "hash": "47d8937", + "short": "chore: rename mukke to music in infra, scripts, and CI/CD", + "type": null, + "scope": null, + "additions": 47, + "deletions": 47, + "timestamp": "2026-04-05T16:47:57+02:00" + }, + { + "hash": "ec96b1b", + "short": "feat(habits+todo): duration field for habits, calendar scheduling for tasks", + "type": "feat", + "scope": "habits+todo", + "additions": 150, + "deletions": 9, + "timestamp": "2026-04-05T16:52:44+02:00" + }, + { + "hash": "a1c3e99", + "short": "feat(timeblocks): drag external items, conflict detection, plan vs reality, timeline view", + "type": "feat", + "scope": "timeblocks", + "additions": 689, + "deletions": 1, + "timestamp": "2026-04-05T17:10:04+02:00" + }, + { + "hash": "22e06ef", + "short": "feat(manacore/web): add PWA support with offline UX, update prompt, and icons", + "type": "feat", + "scope": "manacore/web", + "additions": 1352, + "deletions": 3, + "timestamp": "2026-04-05T17:15:36+02:00" + }, + { + "hash": "63d3ba7", + "short": "feat(timeblocks): focus mode, habit scheduling, smart slots, multi-type quick-create", + "type": "feat", + "scope": "timeblocks", + "additions": 1095, + "deletions": 11, + "timestamp": "2026-04-05T17:21:37+02:00" + }, + { + "hash": "98dbcef", + "short": "feat(manacore/web): add responsive mobile styles for PWA readiness", + "type": "feat", + "scope": "manacore/web", + "additions": 135, + "deletions": 6, + "timestamp": "2026-04-05T17:23:24+02:00" + }, + { + "hash": "105f994", + "short": "feat(timeblocks): analytics dashboard + iCal export", + "type": "feat", + "scope": "timeblocks", + "additions": 822, + "deletions": 0, + "timestamp": "2026-04-05T17:28:25+02:00" + }, + { + "hash": "a5f5c8b", + "short": "feat(timeblocks): cross-module drag & drop + activity feed widget", + "type": "feat", + "scope": "timeblocks", + "additions": 195, + "deletions": 2, + "timestamp": "2026-04-05T17:55:12+02:00" + }, + { + "hash": "92d8275", + "short": "feat(manacore/web): complete mobile responsiveness for all modules and shared components", + "type": "feat", + "scope": "manacore/web", + "additions": 499, + "deletions": 81, + "timestamp": "2026-04-05T18:24:07+02:00" + }, + { + "hash": "98ec6c3", + "short": "docs: mark PWA phase as completed in Tauri v2 plan", + "type": null, + "scope": null, + "additions": 56, + "deletions": 57, + "timestamp": "2026-04-05T18:33:48+02:00" + }, + { + "hash": "a787a27", + "short": "feat(timeblocks): unified recurrence engine with rrule.js", + "type": "feat", + "scope": "timeblocks", + "additions": 3263, + "deletions": 683, + "timestamp": "2026-04-05T19:49:57+02:00" + }, + { + "hash": "878424c", + "short": "feat: rename ManaCore to Mana across entire codebase", + "type": null, + "scope": null, + "additions": 3987, + "deletions": 9841, + "timestamp": "2026-04-05T20:00:13+02:00" + }, + { + "hash": "6f4667c", + "short": "feat(timeblocks): custom recurrence UI, recurring edit/delete prompts, habits migration", + "type": "feat", + "scope": "timeblocks", + "additions": 774, + "deletions": 61, + "timestamp": "2026-04-05T21:14:45+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-05/macher.md b/devlog/2026-04-05/macher.md new file mode 100644 index 000000000..515961499 --- /dev/null +++ b/devlog/2026-04-05/macher.md @@ -0,0 +1,36 @@ +--- +date: 2026-04-05 +day: 75 +view: macher +weekday: Sonntag +commits: 19 +review: written +--- + +# Sonntag, 2026-04-05 — Tag 75 (Macher-Sicht) + +## Stats + +19 Commits, +15083 / −11360 LoC, 2161 Files. Top-Dirs: `apps/{manacore => mana}/apps/web` (43%), `apps/manacore/apps/web` (11%), `apps/{manacore => mana}/apps/landing` (9%), `packages/shared-ui/src` (3%), `apps/{manacore => mana}/apps/mobile` (3%). Tags: timeblocks, manacore/web, calendar, dashboard, habits+todo. Session 12:39 → 19:14 (~133 aktive Min, längster Fokus 106 Min). + +## Commits + +- `0aa0d7b` feat(manacore/web): unified time model — timeBlocks for all time data (+1333/-330) +- `8c8b3f8` fix(calendar): remove duplicate calendarViewStore import in WeekView (+0/-1) +- `2502d62` feat(calendar): type-specific styling, filter UI, cross-module navigation (+205/-3) +- `ee7ff7d` feat(dashboard): add "Mein Tag" timeline widget using timeBlocks (+197/-9) +- `d4700a0` feat: rename mukke to music, add cover art upload via mana-media (+259/-215) +- `7afc162` feat(dashboard): update CalendarEventsWidget for timeBlocks, add i18n for day-timeline (+25/-0) +- `47d8937` chore: rename mukke to music in infra, scripts, and CI/CD (+47/-47) +- `ec96b1b` feat(habits+todo): duration field for habits, calendar scheduling for tasks (+150/-9) +- `a1c3e99` feat(timeblocks): drag external items, conflict detection, plan vs reality, timeline view (+689/-1) +- `22e06ef` feat(manacore/web): add PWA support with offline UX, update prompt, and icons (+1352/-3) +- `63d3ba7` feat(timeblocks): focus mode, habit scheduling, smart slots, multi-type quick-create (+1095/-11) +- `98dbcef` feat(manacore/web): add responsive mobile styles for PWA readiness (+135/-6) +- `105f994` feat(timeblocks): analytics dashboard + iCal export (+822/-0) +- `a5f5c8b` feat(timeblocks): cross-module drag & drop + activity feed widget (+195/-2) +- `92d8275` feat(manacore/web): complete mobile responsiveness for all modules and shared components (+499/-81) +- `98ec6c3` docs: mark PWA phase as completed in Tauri v2 plan (+56/-57) +- `a787a27` feat(timeblocks): unified recurrence engine with rrule.js (+3263/-683) +- `878424c` feat: rename ManaCore to Mana across entire codebase (+3987/-9841) +- `6f4667c` feat(timeblocks): custom recurrence UI, recurring edit/delete prompts, habits migration (+774/-61) diff --git a/devlog/2026-04-05/spieler.md b/devlog/2026-04-05/spieler.md new file mode 100644 index 000000000..160f29b76 --- /dev/null +++ b/devlog/2026-04-05/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-05 +day: 75 +view: spieler +weekday: Sonntag +commits: 19 +review: written +--- + +# Sonntag, 2026-04-05 — Tag 75 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- unified time model — timeBlocks for all time data +- remove duplicate calendarViewStore import in WeekView +- type-specific styling, filter UI, cross-module navigation +- add "Mein Tag" timeline widget using timeBlocks +- rename mukke to music, add cover art upload via mana-media diff --git a/devlog/2026-04-07/data.json b/devlog/2026-04-07/data.json new file mode 100644 index 000000000..c69d5ecc6 --- /dev/null +++ b/devlog/2026-04-07/data.json @@ -0,0 +1,909 @@ +{ + "date": "2026-04-07", + "day_number": 76, + "weekday": "Dienstag", + "commits": 89, + "authors": [ + { + "name": "Till JS", + "count": 89 + } + ], + "additions": 38365, + "deletions": 22177, + "net_lines": 16188, + "files_changed": 679, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-07T10:26:10.000Z", + "last_commit_at": "2026-04-07T22:00:52.000Z", + "total_span_minutes": 695, + "active_minutes": 483, + "pauses": [ + { + "from": "14:57", + "to": "15:36", + "minutes": 39 + }, + { + "from": "16:20", + "to": "17:05", + "minutes": 45 + }, + { + "from": "17:37", + "to": "18:19", + "minutes": 42 + }, + { + "from": "20:03", + "to": "20:37", + "minutes": 34 + }, + { + "from": "20:37", + "to": "21:29", + "minutes": 52 + } + ], + "longest_focus_minutes": 151 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 55 + }, + { + "path": "apps/mana/apps/landing", + "pct": 5 + }, + { + "path": "apps/docs/src/content", + "pct": 3 + }, + { + "path": "services/mana-events/src", + "pct": 3 + }, + { + "path": "services/mana-auth/src", + "pct": 2 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 403 + }, + { + "ext": ".md", + "count": 157 + }, + { + "ext": ".svelte", + "count": 119 + }, + { + "ext": ".json", + "count": 62 + }, + { + "ext": ".mdx", + "count": 27 + }, + { + "ext": ".astro", + "count": 17 + } + ], + "tags": ["mana/web", "cycles", "dreams", "events", "crypto"], + "commits_list": [ + { + "hash": "22a7394", + "short": "chore: complete ManaCore → Mana rename (docs, go modules, plists, images)", + "type": null, + "scope": null, + "additions": 2288, + "deletions": 4417, + "timestamp": "2026-04-07T12:26:10+02:00" + }, + { + "hash": "b900df5", + "short": "docs(mana/web): add data layer audit report", + "type": "docs", + "scope": "mana/web", + "additions": 169, + "deletions": 0, + "timestamp": "2026-04-07T12:50:56+02:00" + }, + { + "hash": "0909538", + "short": "fix(mana/web): sprint 1 data integrity (LWW, retry, atomic cascades)", + "type": "fix", + "scope": "mana/web", + "additions": 228, + "deletions": 61, + "timestamp": "2026-04-07T12:51:10+02:00" + }, + { + "hash": "28942ab", + "short": "fix(mana/web): sprint 2 — auth-aware data layer + guest migration", + "type": "fix", + "scope": "mana/web", + "additions": 182, + "deletions": 47, + "timestamp": "2026-04-07T13:07:12+02:00" + }, + { + "hash": "a9529bc", + "short": "fix(mana-sync): enable row-level security on sync_changes", + "type": "fix", + "scope": "mana-sync", + "additions": 124, + "deletions": 75, + "timestamp": "2026-04-07T13:07:26+02:00" + }, + { + "hash": "af9b1f9", + "short": "fix(mac-mini): make startup.sh idempotent and non-destructive", + "type": "fix", + "scope": "mac-mini", + "additions": 29, + "deletions": 9, + "timestamp": "2026-04-07T13:19:46+02:00" + }, + { + "hash": "ce04f43", + "short": "fix(timeblocks): type errors from recurrence migration", + "type": "fix", + "scope": "timeblocks", + "additions": 26, + "deletions": 11, + "timestamp": "2026-04-07T13:22:59+02:00" + }, + { + "hash": "9e0ade4", + "short": "fix(mana/web): sprint 3 — type-safe sync protocol + tests", + "type": "fix", + "scope": "mana/web", + "additions": 671, + "deletions": 219, + "timestamp": "2026-04-07T13:38:23+02:00" + }, + { + "hash": "3ffbf37", + "short": "fix(shared-branding): dedupe duplicate manaSvg from rename collision", + "type": "fix", + "scope": "shared-branding", + "additions": 0, + "deletions": 4, + "timestamp": "2026-04-07T13:39:40+02:00" + }, + { + "hash": "fc743a4", + "short": "fix: type errors from ManaCore→Mana rename and stale templates", + "type": null, + "scope": null, + "additions": 10, + "deletions": 69, + "timestamp": "2026-04-07T13:42:17+02:00" + }, + { + "hash": "440f650", + "short": "fix: extract types from .svelte files for proper named re-exports", + "type": null, + "scope": null, + "additions": 143, + "deletions": 135, + "timestamp": "2026-04-07T13:53:13+02:00" + }, + { + "hash": "21681a2", + "short": "chore(mana/web): raise eslint heap to 8GB to prevent OOM", + "type": "chore", + "scope": "mana/web", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-07T13:53:33+02:00" + }, + { + "hash": "e974761", + "short": "chore(workspace): unify vitest to ^4.1.2 across all packages", + "type": "chore", + "scope": "workspace", + "additions": 7182, + "deletions": 11701, + "timestamp": "2026-04-07T13:58:29+02:00" + }, + { + "hash": "b9fdf08", + "short": "fix(cards-database): add .js extensions to relative imports for NodeNext", + "type": "fix", + "scope": "cards-database", + "additions": 30, + "deletions": 30, + "timestamp": "2026-04-07T14:01:44+02:00" + }, + { + "hash": "8e71096", + "short": "feat(dreams): scaffold Traumtagebuch module", + "type": "feat", + "scope": "dreams", + "additions": 1287, + "deletions": 4, + "timestamp": "2026-04-07T14:07:12+02:00" + }, + { + "hash": "22d3d2b", + "short": "feat(dreams): quick wins — date/time picker, filter tabs, symbol filtering", + "type": "feat", + "scope": "dreams", + "additions": 303, + "deletions": 12, + "timestamp": "2026-04-07T14:12:12+02:00" + }, + { + "hash": "30022e8", + "short": "feat(events): scaffold social events module (Phase 1a, local-only)", + "type": "feat", + "scope": "events", + "additions": 1717, + "deletions": 5, + "timestamp": "2026-04-07T14:12:41+02:00" + }, + { + "hash": "733dca4", + "short": "fix(mana/web): sprint 4 — perf, quota, telemetry, indexed queries", + "type": "fix", + "scope": "mana/web", + "additions": 458, + "deletions": 155, + "timestamp": "2026-04-07T14:18:22+02:00" + }, + { + "hash": "feb1674", + "short": "docs(mana/web): mark sprints 1-4 complete in data layer audit", + "type": "docs", + "scope": "mana/web", + "additions": 118, + "deletions": 97, + "timestamp": "2026-04-07T14:22:05+02:00" + }, + { + "hash": "980a5e9", + "short": "feat(dreams): symbol library with detail view, meaning, mood stats", + "type": "feat", + "scope": "dreams", + "additions": 1018, + "deletions": 223, + "timestamp": "2026-04-07T14:22:17+02:00" + }, + { + "hash": "2167467", + "short": "feat(events): add mana-events service + public RSVP flow (Phase 1b)", + "type": "feat", + "scope": "events", + "additions": 1764, + "deletions": 11, + "timestamp": "2026-04-07T14:27:48+02:00" + }, + { + "hash": "771721c", + "short": "feat(dreams): polish symbol library — sort, auto-save, merge, navigation", + "type": "feat", + "scope": "dreams", + "additions": 420, + "deletions": 65, + "timestamp": "2026-04-07T14:28:05+02:00" + }, + { + "hash": "575c5c3", + "short": "feat(mana/web): subscribe data layer events to toasts + Sentry + scheduler", + "type": "feat", + "scope": "mana/web", + "additions": 151, + "deletions": 9, + "timestamp": "2026-04-07T14:34:18+02:00" + }, + { + "hash": "fbab96c", + "short": "feat(cycles): add menstrual cycle tracking module", + "type": "feat", + "scope": "cycles", + "additions": 1780, + "deletions": 0, + "timestamp": "2026-04-07T14:35:33+02:00" + }, + { + "hash": "836c969", + "short": "fix(events): tech debt — self-heal snapshots, tombstones, polling cleanup, RSVP i18n", + "type": "fix", + "scope": "events", + "additions": 283, + "deletions": 59, + "timestamp": "2026-04-07T14:36:11+02:00" + }, + { + "hash": "578c9f3", + "short": "feat(dreams): voice capture via mana-stt", + "type": "feat", + "scope": "dreams", + "additions": 632, + "deletions": 1, + "timestamp": "2026-04-07T14:39:11+02:00" + }, + { + "hash": "ae64865", + "short": "test(mana/web): unbreak three pre-existing test files", + "type": "test", + "scope": "mana/web", + "additions": 30, + "deletions": 6, + "timestamp": "2026-04-07T14:48:30+02:00" + }, + { + "hash": "85fda7b", + "short": "fix(mana/web): three runtime regressions from sprint 1-3 data layer rewrite", + "type": "fix", + "scope": "mana/web", + "additions": 49, + "deletions": 13, + "timestamp": "2026-04-07T14:50:19+02:00" + }, + { + "hash": "473b8c0", + "short": "feat(cycles): auto-detect period start and end", + "type": "feat", + "scope": "cycles", + "additions": 315, + "deletions": 20, + "timestamp": "2026-04-07T14:52:06+02:00" + }, + { + "hash": "42c9eb1", + "short": "perf(mana/web): index updatedAt for recent-X dashboard widgets", + "type": "perf", + "scope": "mana/web", + "additions": 56, + "deletions": 16, + "timestamp": "2026-04-07T14:55:11+02:00" + }, + { + "hash": "333855c", + "short": "feat(cycles): edit and delete past day entries", + "type": "feat", + "scope": "cycles", + "additions": 130, + "deletions": 20, + "timestamp": "2026-04-07T14:55:17+02:00" + }, + { + "hash": "ad02158", + "short": "perf(mana/web): pipeline SSE reads against sequential apply", + "type": "perf", + "scope": "mana/web", + "additions": 61, + "deletions": 31, + "timestamp": "2026-04-07T14:57:21+02:00" + }, + { + "hash": "82559f6", + "short": "feat(mana/web): local activity log + periodic prune", + "type": "feat", + "scope": "mana/web", + "additions": 448, + "deletions": 149, + "timestamp": "2026-04-07T15:36:37+02:00" + }, + { + "hash": "984c516", + "short": "feat(cycles): extract UI strings to svelte-i18n", + "type": "feat", + "scope": "cycles", + "additions": 369, + "deletions": 48, + "timestamp": "2026-04-07T15:45:27+02:00" + }, + { + "hash": "63a6f62", + "short": "fix(dreams): proxy tolerates octet-stream + invalid form bodies", + "type": "fix", + "scope": "dreams", + "additions": 13, + "deletions": 3, + "timestamp": "2026-04-07T15:48:36+02:00" + }, + { + "hash": "a6828a1", + "short": "fix(dreams): explain why the mic prompt isn't appearing", + "type": "fix", + "scope": "dreams", + "additions": 63, + "deletions": 4, + "timestamp": "2026-04-07T15:55:05+02:00" + }, + { + "hash": "f7a5bb8", + "short": "fix(dreams): macOS-aware mic deny message + force-retry escape hatch", + "type": "fix", + "scope": "dreams", + "additions": 72, + "deletions": 12, + "timestamp": "2026-04-07T16:10:44+02:00" + }, + { + "hash": "b97e2b5", + "short": "test(cycles): integration tests with fake-indexeddb", + "type": "test", + "scope": "cycles", + "additions": 297, + "deletions": 0, + "timestamp": "2026-04-07T16:11:04+02:00" + }, + { + "hash": "59a9c05", + "short": "feat(cycles): symptom management UI", + "type": "feat", + "scope": "cycles", + "additions": 444, + "deletions": 9, + "timestamp": "2026-04-07T16:19:29+02:00" + }, + { + "hash": "e7585fb", + "short": "fix(mana-events): cascade rate buckets when an event is unpublished", + "type": "fix", + "scope": "mana-events", + "additions": 3, + "deletions": 1, + "timestamp": "2026-04-07T16:20:05+02:00" + }, + { + "hash": "b0a9dfe", + "short": "feat(cycles): month calendar view with phase coloring", + "type": "feat", + "scope": "cycles", + "additions": 347, + "deletions": 0, + "timestamp": "2026-04-07T17:05:20+02:00" + }, + { + "hash": "0896b1a", + "short": "test(cycles): i18n key parity across all 5 locales", + "type": "test", + "scope": "cycles", + "additions": 72, + "deletions": 0, + "timestamp": "2026-04-07T17:12:17+02:00" + }, + { + "hash": "9e802b1", + "short": "feat(cycles): dashboard widget with phase + countdown", + "type": "feat", + "scope": "cycles", + "additions": 179, + "deletions": 1, + "timestamp": "2026-04-07T17:37:27+02:00" + }, + { + "hash": "1ba5948", + "short": "feat(mana/web): encryption foundation — phase 1 (no-op)", + "type": "feat", + "scope": "mana/web", + "additions": 816, + "deletions": 0, + "timestamp": "2026-04-07T18:19:41+02:00" + }, + { + "hash": "343804b", + "short": "refactor(cycles): make date formatting locale-aware", + "type": "refactor", + "scope": "cycles", + "additions": 79, + "deletions": 15, + "timestamp": "2026-04-07T18:23:58+02:00" + }, + { + "hash": "4d46cbb", + "short": "i18n(cycles): real translations for it/fr/es", + "type": "i18n", + "scope": "cycles", + "additions": 180, + "deletions": 180, + "timestamp": "2026-04-07T18:28:31+02:00" + }, + { + "hash": "3a4c665", + "short": "test(events): playwright e2e specs + flake-resistant config", + "type": "test", + "scope": "events", + "additions": 328, + "deletions": 0, + "timestamp": "2026-04-07T18:36:45+02:00" + }, + { + "hash": "e991542", + "short": "feat(mana-auth): encryption vault — phase 2 (server-side master key custody)", + "type": "feat", + "scope": "mana-auth", + "additions": 913, + "deletions": 5, + "timestamp": "2026-04-07T18:38:09+02:00" + }, + { + "hash": "4d9bf78", + "short": "docs(cycles): add ROADMAP with future feature ideas", + "type": "docs", + "scope": "cycles", + "additions": 194, + "deletions": 0, + "timestamp": "2026-04-07T18:39:38+02:00" + }, + { + "hash": "c5aeaf5", + "short": "feat(memoro): voice recording → mana-stt transcription pipeline", + "type": "feat", + "scope": "memoro", + "additions": 568, + "deletions": 8, + "timestamp": "2026-04-07T18:48:41+02:00" + }, + { + "hash": "354cbcb", + "short": "feat(mana/web): encryption phase 3 — vault client + record helpers + layout wire-up", + "type": "feat", + "scope": "mana/web", + "additions": 840, + "deletions": 0, + "timestamp": "2026-04-07T18:49:22+02:00" + }, + { + "hash": "6402425", + "short": "fix(events): production wiring + polling resilience (quick wins)", + "type": "fix", + "scope": "events", + "additions": 116, + "deletions": 5, + "timestamp": "2026-04-07T18:53:29+02:00" + }, + { + "hash": "bed08a1", + "short": "feat(mana/web): encryption phase 4 — notes pilot live", + "type": "feat", + "scope": "mana/web", + "additions": 298, + "deletions": 30, + "timestamp": "2026-04-07T19:00:11+02:00" + }, + { + "hash": "897256c", + "short": "test(mana-events): 35 server tests covering routes + sweeper", + "type": "test", + "scope": "mana-events", + "additions": 794, + "deletions": 29, + "timestamp": "2026-04-07T19:02:54+02:00" + }, + { + "hash": "3eabbc5", + "short": "i18n(events): RSVP page in it/fr/es + extract e2e helper", + "type": "i18n", + "scope": "events", + "additions": 143, + "deletions": 24, + "timestamp": "2026-04-07T19:11:59+02:00" + }, + { + "hash": "af92720", + "short": "feat(mana/web): encryption phase 5 — rollout to chat/dreams/memoro/contacts/cycles/finance", + "type": "feat", + "scope": "mana/web", + "additions": 537, + "deletions": 131, + "timestamp": "2026-04-07T19:28:26+02:00" + }, + { + "hash": "6a60e22", + "short": "feat(events): bring list (wer bringt was?) — Phase 2", + "type": "feat", + "scope": "events", + "additions": 1296, + "deletions": 16, + "timestamp": "2026-04-07T19:31:39+02:00" + }, + { + "hash": "b2bddfe", + "short": "docs(events): roadmap of remaining Phase 2 work + tech debt", + "type": "docs", + "scope": "events", + "additions": 139, + "deletions": 0, + "timestamp": "2026-04-07T19:35:16+02:00" + }, + { + "hash": "73f294b", + "short": "feat(mana/web): encryption phase 6.1 — cards, presi, inventar, planta", + "type": "feat", + "scope": "mana/web", + "additions": 106, + "deletions": 43, + "timestamp": "2026-04-07T19:44:38+02:00" + }, + { + "hash": "42bd2a3", + "short": "chore(deploy): wire MANA_STT_URL/API_KEY into mana-web container", + "type": "chore", + "scope": "deploy", + "additions": 5, + "deletions": 0, + "timestamp": "2026-04-07T19:47:42+02:00" + }, + { + "hash": "5d4123d", + "short": "fix(mana/web): commit module-registry + module.config.ts files (build-critical)", + "type": "fix", + "scope": "mana/web", + "additions": 526, + "deletions": 1, + "timestamp": "2026-04-07T19:49:58+02:00" + }, + { + "hash": "de33ed8", + "short": "fix(mana/web): disable prerender on /offline (FIXME)", + "type": "fix", + "scope": "mana/web", + "additions": 10, + "deletions": 1, + "timestamp": "2026-04-07T19:50:32+02:00" + }, + { + "hash": "6b8e2c7", + "short": "feat(mana/web): encryption phase 6.2/6.3 — settings page + onboarding banner", + "type": "feat", + "scope": "mana/web", + "additions": 659, + "deletions": 9, + "timestamp": "2026-04-07T19:54:09+02:00" + }, + { + "hash": "28395b3", + "short": "docs: GPU tunnel setup, STT env wiring, and 2026-04-07 postmortem", + "type": null, + "scope": null, + "additions": 411, + "deletions": 14, + "timestamp": "2026-04-07T19:59:04+02:00" + }, + { + "hash": "4bdf423", + "short": "docs(mana/web): roundup data layer audit through encryption phase 6", + "type": "docs", + "scope": "mana/web", + "additions": 211, + "deletions": 60, + "timestamp": "2026-04-07T20:03:43+02:00" + }, + { + "hash": "c875b4e", + "short": "feat(crypto): phase 7.1 — encrypt timeBlocks-coupled tasks + calendar events", + "type": "feat", + "scope": "crypto", + "additions": 360, + "deletions": 174, + "timestamp": "2026-04-07T20:37:59+02:00" + }, + { + "hash": "40b7069", + "short": "feat(crypto): phase 7.2 — encrypt storeless modules (questions, links, documents, meals)", + "type": "feat", + "scope": "crypto", + "additions": 152, + "deletions": 73, + "timestamp": "2026-04-07T21:29:32+02:00" + }, + { + "hash": "be611cd", + "short": "feat(crypto): phase 8 — encrypt remaining tables (storage, picture, music, events, guests)", + "type": "feat", + "scope": "crypto", + "additions": 194, + "deletions": 74, + "timestamp": "2026-04-07T21:44:18+02:00" + }, + { + "hash": "25aabc3", + "short": "docs(audit): roll up Phase 7 + 8 in DATA_LAYER_AUDIT.md", + "type": "docs", + "scope": "audit", + "additions": 79, + "deletions": 43, + "timestamp": "2026-04-07T21:55:04+02:00" + }, + { + "hash": "2f48f86", + "short": "feat(crypto): phase 9 milestone 1 — recovery code primitives", + "type": "feat", + "scope": "crypto", + "additions": 542, + "deletions": 0, + "timestamp": "2026-04-07T22:00:43+02:00" + }, + { + "hash": "f46d132", + "short": "feat(mana-auth): phase 9 milestone 2 — vault recovery wrap + zero-knowledge", + "type": "feat", + "scope": "mana-auth", + "additions": 647, + "deletions": 39, + "timestamp": "2026-04-07T22:05:49+02:00" + }, + { + "hash": "c27cb84", + "short": "fix(mana/web): bundle rrule into SSR build to fix /calendar 500", + "type": "fix", + "scope": "mana/web", + "additions": 7, + "deletions": 1, + "timestamp": "2026-04-07T22:29:55+02:00" + }, + { + "hash": "3a47389", + "short": "chore(mana/web): pre-launch cleanup — remove ghost backend API clients", + "type": "chore", + "scope": "mana/web", + "additions": 42, + "deletions": 2758, + "timestamp": "2026-04-07T22:30:24+02:00" + }, + { + "hash": "171fbd1", + "short": "chore(mana/web): pre-launch module cleanup — schema collapse, dead code, lazy search", + "type": "chore", + "scope": "mana/web", + "additions": 162, + "deletions": 451, + "timestamp": "2026-04-07T22:31:08+02:00" + }, + { + "hash": "a94abd3", + "short": "chore(macmini): pin COMPOSE_PROJECT_NAME=manacore-monorepo", + "type": "chore", + "scope": "macmini", + "additions": 12, + "deletions": 0, + "timestamp": "2026-04-07T22:31:25+02:00" + }, + { + "hash": "85e3817", + "short": "chore(macmini/scripts): runbook hardening — status diff + ingress walk", + "type": "chore", + "scope": "macmini/scripts", + "additions": 147, + "deletions": 85, + "timestamp": "2026-04-07T22:31:53+02:00" + }, + { + "hash": "4cfa869", + "short": "docs: PRE_LAUNCH_CLEANUP.md — what we removed before launch and why", + "type": null, + "scope": null, + "additions": 630, + "deletions": 0, + "timestamp": "2026-04-07T22:32:14+02:00" + }, + { + "hash": "a55aae6", + "short": "chore(macmini): infra cleanup — compose env, blackbox mem, prometheus gpu probes", + "type": "chore", + "scope": "macmini", + "additions": 31, + "deletions": 25, + "timestamp": "2026-04-07T22:59:38+02:00" + }, + { + "hash": "6de0193", + "short": "feat(vault-client): phase 9 milestone 3 — recovery + zero-knowledge flows", + "type": "feat", + "scope": "vault-client", + "additions": 396, + "deletions": 13, + "timestamp": "2026-04-07T23:01:16+02:00" + }, + { + "hash": "56312ff", + "short": "feat(settings): phase 9 milestone 4 — zero-knowledge UI section", + "type": "feat", + "scope": "settings", + "additions": 363, + "deletions": 0, + "timestamp": "2026-04-07T23:03:35+02:00" + }, + { + "hash": "78d949d", + "short": "feat(crypto): vault status endpoint + settings page hydration", + "type": "feat", + "scope": "crypto", + "additions": 205, + "deletions": 10, + "timestamp": "2026-04-07T23:19:49+02:00" + }, + { + "hash": "a48b2d5", + "short": "feat(layout): lock-screen recovery code unlock modal", + "type": "feat", + "scope": "layout", + "additions": 258, + "deletions": 2, + "timestamp": "2026-04-07T23:24:32+02:00" + }, + { + "hash": "ea165c8", + "short": "docs(audit): roll up Phase 9 in DATA_LAYER_AUDIT.md", + "type": "docs", + "scope": "audit", + "additions": 145, + "deletions": 35, + "timestamp": "2026-04-07T23:28:06+02:00" + }, + { + "hash": "c2c9601", + "short": "test(mana-auth): vault service integration tests against real postgres", + "type": "test", + "scope": "mana-auth", + "additions": 501, + "deletions": 5, + "timestamp": "2026-04-07T23:39:48+02:00" + }, + { + "hash": "24001e9", + "short": "feat(vault): rotate recovery code while zero-knowledge is active", + "type": "feat", + "scope": "vault", + "additions": 166, + "deletions": 1, + "timestamp": "2026-04-07T23:43:10+02:00" + }, + { + "hash": "05ae348", + "short": "fix(macmini): blackbox-exporter uses 1.1.1.1/8.8.8.8 directly for DNS", + "type": "fix", + "scope": "macmini", + "additions": 11, + "deletions": 0, + "timestamp": "2026-04-07T23:47:57+02:00" + }, + { + "hash": "109de61", + "short": "feat(picture,storage): pre-wired insert helpers for future generate/upload flows", + "type": "feat", + "scope": "picture,storage", + "additions": 62, + "deletions": 0, + "timestamp": "2026-04-07T23:52:20+02:00" + }, + { + "hash": "a7e5b39", + "short": "feat(picture): encrypt boards + boardItems", + "type": "feat", + "scope": "picture", + "additions": 59, + "deletions": 16, + "timestamp": "2026-04-07T23:57:54+02:00" + }, + { + "hash": "b961453", + "short": "docs(audit): roll up Phase 9 backlog sweep", + "type": "docs", + "scope": "audit", + "additions": 63, + "deletions": 48, + "timestamp": "2026-04-08T00:00:52+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-07/macher.md b/devlog/2026-04-07/macher.md new file mode 100644 index 000000000..ae060c33f --- /dev/null +++ b/devlog/2026-04-07/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-07 +day: 76 +view: macher +weekday: Dienstag +commits: 89 +review: written +--- + +# Dienstag, 2026-04-07 — Tag 76 (Macher-Sicht) + +## Stats + +89 Commits, +38365 / −22177 LoC, 679 Files. Top-Dirs: `apps/mana/apps/web` (55%), `apps/mana/apps/landing` (5%), `apps/docs/src/content` (3%), `services/mana-events/src` (3%), `services/mana-auth/src` (2%). Tags: mana/web, cycles, dreams, events, crypto. Session 10:26 → 22:00 (~483 aktive Min, längster Fokus 151 Min). + +## Commits + +- `22a7394` chore: complete ManaCore → Mana rename (docs, go modules, plists, images) (+2288/-4417) +- `b900df5` docs(mana/web): add data layer audit report (+169/-0) +- `0909538` fix(mana/web): sprint 1 data integrity (LWW, retry, atomic cascades) (+228/-61) +- `28942ab` fix(mana/web): sprint 2 — auth-aware data layer + guest migration (+182/-47) +- `a9529bc` fix(mana-sync): enable row-level security on sync_changes (+124/-75) +- `af9b1f9` fix(mac-mini): make startup.sh idempotent and non-destructive (+29/-9) +- `ce04f43` fix(timeblocks): type errors from recurrence migration (+26/-11) +- `9e0ade4` fix(mana/web): sprint 3 — type-safe sync protocol + tests (+671/-219) +- `3ffbf37` fix(shared-branding): dedupe duplicate manaSvg from rename collision (+0/-4) +- `fc743a4` fix: type errors from ManaCore→Mana rename and stale templates (+10/-69) +- `440f650` fix: extract types from .svelte files for proper named re-exports (+143/-135) +- `21681a2` chore(mana/web): raise eslint heap to 8GB to prevent OOM (+1/-1) +- `e974761` chore(workspace): unify vitest to ^4.1.2 across all packages (+7182/-11701) +- `b9fdf08` fix(cards-database): add .js extensions to relative imports for NodeNext (+30/-30) +- `8e71096` feat(dreams): scaffold Traumtagebuch module (+1287/-4) +- `22d3d2b` feat(dreams): quick wins — date/time picker, filter tabs, symbol filtering (+303/-12) +- `30022e8` feat(events): scaffold social events module (Phase 1a, local-only) (+1717/-5) +- `733dca4` fix(mana/web): sprint 4 — perf, quota, telemetry, indexed queries (+458/-155) +- `feb1674` docs(mana/web): mark sprints 1-4 complete in data layer audit (+118/-97) +- `980a5e9` feat(dreams): symbol library with detail view, meaning, mood stats (+1018/-223) + +_… plus 69 weitere Commits._ diff --git a/devlog/2026-04-07/spieler.md b/devlog/2026-04-07/spieler.md new file mode 100644 index 000000000..4731d4074 --- /dev/null +++ b/devlog/2026-04-07/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-07 +day: 76 +view: spieler +weekday: Dienstag +commits: 89 +review: written +--- + +# Dienstag, 2026-04-07 — Tag 76 + +Großer Sprint-Tag mit Schwerpunkt **apps** (89 Commits). + +## Highlights + +- add data layer audit report +- sprint 1 data integrity (LWW, retry, atomic cascades) +- sprint 2 — auth-aware data layer + guest migration +- enable row-level security on sync_changes +- make startup.sh idempotent and non-destructive diff --git a/devlog/2026-04-08/data.json b/devlog/2026-04-08/data.json new file mode 100644 index 000000000..196463b51 --- /dev/null +++ b/devlog/2026-04-08/data.json @@ -0,0 +1,971 @@ +{ + "date": "2026-04-08", + "day_number": 77, + "weekday": "Mittwoch", + "commits": 97, + "authors": [ + { + "name": "Till JS", + "count": 97 + } + ], + "additions": 25634, + "deletions": 54194, + "net_lines": -28560, + "files_changed": 631, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-08T09:47:59.000Z", + "last_commit_at": "2026-04-09T00:06:10.000Z", + "total_span_minutes": 858, + "active_minutes": 445, + "pauses": [ + { + "from": "13:14", + "to": "15:36", + "minutes": 141 + }, + { + "from": "18:40", + "to": "22:10", + "minutes": 210 + }, + { + "from": "23:27", + "to": "00:29", + "minutes": 62 + } + ], + "longest_focus_minutes": 185 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 30 + }, + { + "path": "apps/matrix/apps/web", + "pct": 10 + }, + { + "path": "apps/matrix/apps/mobile", + "pct": 7 + }, + { + "path": "services/mana-matrix-bot/internal", + "pct": 6 + }, + { + "path": "packages/shared-llm/src", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 241 + }, + { + "ext": ".svelte", + "count": 166 + }, + { + "ext": ".md", + "count": 75 + }, + { + "ext": ".go", + "count": 52 + }, + { + "ext": ".json", + "count": 51 + }, + { + "ext": ".sh", + "count": 33 + } + ], + "tags": ["mana/web", "local-llm", "csp", "mana-auth", "todo"], + "commits_list": [ + { + "hash": "142a65a", + "short": "docs: Phase 9 documentation roundup — close encryption-shaped doc gaps", + "type": null, + "scope": null, + "additions": 481, + "deletions": 130, + "timestamp": "2026-04-08T11:47:59+02:00" + }, + { + "hash": "b6486a8", + "short": "fix(mana-video-gen): typo in get_model_info — total_mem → total_memory", + "type": "fix", + "scope": "mana-video-gen", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-08T11:59:40+02:00" + }, + { + "hash": "fe3fc9e", + "short": "docs: trim CLAUDE.md files — remove stale + duplicated guidance", + "type": null, + "scope": null, + "additions": 182, + "deletions": 1234, + "timestamp": "2026-04-08T11:59:51+02:00" + }, + { + "hash": "ed8ab44", + "short": "feat(sync): conflict visualization with restore-my-version toast", + "type": "feat", + "scope": "sync", + "additions": 771, + "deletions": 0, + "timestamp": "2026-04-08T12:01:17+02:00" + }, + { + "hash": "b3523f8", + "short": "chore: cleanup leftover dirs from ManaCore→Mana rename + document apps/api", + "type": null, + "scope": null, + "additions": 13, + "deletions": 442, + "timestamp": "2026-04-08T12:12:02+02:00" + }, + { + "hash": "c8ed58b", + "short": "fix(mana,ui): integrate guest nudge into bottom stack + theme it", + "type": "fix", + "scope": "mana,ui", + "additions": 47, + "deletions": 35, + "timestamp": "2026-04-08T12:13:05+02:00" + }, + { + "hash": "5581295", + "short": "chore: tidy root files + reorganize a few stale docs", + "type": null, + "scope": null, + "additions": 1, + "deletions": 557, + "timestamp": "2026-04-08T12:15:27+02:00" + }, + { + "hash": "a3a4745", + "short": "docs(audit): file-bytes encryption implementation plan + audit roll-up", + "type": "docs", + "scope": "audit", + "additions": 387, + "deletions": 10, + "timestamp": "2026-04-08T12:17:15+02:00" + }, + { + "hash": "b0a08ce", + "short": "docs(services): add CLAUDE.md for stt + events, fix stale entries, flag port collisions", + "type": "docs", + "scope": "services", + "additions": 198, + "deletions": 9, + "timestamp": "2026-04-08T12:23:48+02:00" + }, + { + "hash": "3c91691", + "short": "fix(mana-image-gen): align source default port with production reality", + "type": "fix", + "scope": "mana-image-gen", + "additions": 58, + "deletions": 30, + "timestamp": "2026-04-08T12:30:33+02:00" + }, + { + "hash": "ff7dc5d", + "short": "feat(auth): structured error codes + conditional passkey UI", + "type": "feat", + "scope": "auth", + "additions": 35, + "deletions": 7, + "timestamp": "2026-04-08T12:40:51+02:00" + }, + { + "hash": "abe0a21", + "short": "refactor(auth-ui): tighten LoginPage UX, a11y, and dead code", + "type": "refactor", + "scope": "auth-ui", + "additions": 203, + "deletions": 185, + "timestamp": "2026-04-08T12:41:19+02:00" + }, + { + "hash": "b8e18b7", + "short": "chore(ai-services): adopt Windows GPU as source of truth for llm/stt/tts", + "type": "chore", + "scope": "ai-services", + "additions": 1619, + "deletions": 1257, + "timestamp": "2026-04-08T12:46:03+02:00" + }, + { + "hash": "c7b4388", + "short": "feat(mana-image-gen): replace Mac flux2.c implementation with Windows GPU diffusers", + "type": "feat", + "scope": "mana-image-gen", + "additions": 547, + "deletions": 592, + "timestamp": "2026-04-08T13:02:42+02:00" + }, + { + "hash": "f434703", + "short": "chore(mac-mini): remove all AI service infrastructure (moved to Windows GPU)", + "type": "chore", + "scope": "mac-mini", + "additions": 232, + "deletions": 1920, + "timestamp": "2026-04-08T13:06:40+02:00" + }, + { + "hash": "4cb1bc1", + "short": "fix(mana-voice-bot): move default port 3050 → 3024 + Windows GPU deployment notes", + "type": "fix", + "scope": "mana-voice-bot", + "additions": 137, + "deletions": 133, + "timestamp": "2026-04-08T13:14:57+02:00" + }, + { + "hash": "2b44946", + "short": "fix(mana/web): unblock voice capture — permissions policy, notification mount, dev SW", + "type": "fix", + "scope": "mana/web", + "additions": 32, + "deletions": 3, + "timestamp": "2026-04-08T15:36:03+02:00" + }, + { + "hash": "45958ad", + "short": "feat(mana/web): global requireAuth() gate for guest-blocked features", + "type": "feat", + "scope": "mana/web", + "additions": 356, + "deletions": 2, + "timestamp": "2026-04-08T15:36:38+02:00" + }, + { + "hash": "f567826", + "short": "chore(deps): reconcile pnpm-lock with package.json drift", + "type": "chore", + "scope": "deps", + "additions": 180, + "deletions": 282, + "timestamp": "2026-04-08T15:41:14+02:00" + }, + { + "hash": "0d1d3b9", + "short": "fix(mana-auth): declare missing nanoid dependency", + "type": "fix", + "scope": "mana-auth", + "additions": 13, + "deletions": 2, + "timestamp": "2026-04-08T15:50:14+02:00" + }, + { + "hash": "079cc39", + "short": "refactor(mana/web): extract shared for module voice capture", + "type": "refactor", + "scope": "mana/web", + "additions": 334, + "deletions": 568, + "timestamp": "2026-04-08T15:51:22+02:00" + }, + { + "hash": "e0e8019", + "short": "fix(mac-mini): pass MANA_AUTH_KEK through to mana-auth container", + "type": "fix", + "scope": "mac-mini", + "additions": 4, + "deletions": 2, + "timestamp": "2026-04-08T15:58:19+02:00" + }, + { + "hash": "9b3d7c7", + "short": "feat(notes): voice capture in workbench ListView via shared ", + "type": "feat", + "scope": "notes", + "additions": 193, + "deletions": 1, + "timestamp": "2026-04-08T15:59:42+02:00" + }, + { + "hash": "b841a24", + "short": "feat(todo): voice quick-add in workbench ListView via shared ", + "type": "feat", + "scope": "todo", + "additions": 60, + "deletions": 0, + "timestamp": "2026-04-08T16:01:50+02:00" + }, + { + "hash": "b48c9ff", + "short": "refactor(mana/web): migrate dreams + memoro to /api/v1/voice/transcribe", + "type": "refactor", + "scope": "mana/web", + "additions": 10, + "deletions": 216, + "timestamp": "2026-04-08T16:05:49+02:00" + }, + { + "hash": "c32a5a5", + "short": "feat(todo): LLM-parse spoken tasks into title + dueDate + priority", + "type": "feat", + "scope": "todo", + "additions": 193, + "deletions": 17, + "timestamp": "2026-04-08T16:08:09+02:00" + }, + { + "hash": "d8da11a", + "short": "feat(todo): typed quick-add gets the same LLM enrichment as voice", + "type": "feat", + "scope": "todo", + "additions": 70, + "deletions": 18, + "timestamp": "2026-04-08T16:12:17+02:00" + }, + { + "hash": "55cc75e", + "short": "fix(mana-auth): /api/v1/auth/login uses wrong cookie name in production", + "type": "fix", + "scope": "mana-auth", + "additions": 11, + "deletions": 2, + "timestamp": "2026-04-08T16:20:18+02:00" + }, + { + "hash": "d37483a", + "short": "feat(todo): map LLM topic hints to existing workspace tags", + "type": "feat", + "scope": "todo", + "additions": 70, + "deletions": 7, + "timestamp": "2026-04-08T16:21:32+02:00" + }, + { + "hash": "4eb5dfe", + "short": "feat(mana/web): named workbench scenes (Home, Deep Work, …)", + "type": "feat", + "scope": "mana/web", + "additions": 1413, + "deletions": 106, + "timestamp": "2026-04-08T16:25:13+02:00" + }, + { + "hash": "8e8b6ac", + "short": "fix(mana-auth) + chore: rewrite /api/v1/auth/login JWT mint, remove Matrix stack", + "type": null, + "scope": null, + "additions": 88, + "deletions": 29437, + "timestamp": "2026-04-08T16:25:55+02:00" + }, + { + "hash": "e337243", + "short": "test(mana/web): unit tests for voice quick-add matchers + fix habit ranking", + "type": "test", + "scope": "mana/web", + "additions": 262, + "deletions": 24, + "timestamp": "2026-04-08T16:37:11+02:00" + }, + { + "hash": "2514831", + "short": "chore(matrix): scrub final matrix references after subsystem removal", + "type": "chore", + "scope": "matrix", + "additions": 1, + "deletions": 31, + "timestamp": "2026-04-08T16:37:40+02:00" + }, + { + "hash": "029c797", + "short": "feat(mana/web): pass MANA_LLM_API_KEY from voice parse proxies", + "type": "feat", + "scope": "mana/web", + "additions": 41, + "deletions": 2, + "timestamp": "2026-04-08T16:40:26+02:00" + }, + { + "hash": "da6e2f3", + "short": "chore(deps): update pnpm-lock after Matrix stack removal", + "type": "chore", + "scope": "deps", + "additions": 269, + "deletions": 634, + "timestamp": "2026-04-08T16:41:15+02:00" + }, + { + "hash": "7f38213", + "short": "fix(mana-llm): route Ollama through gpu-proxy instead of LAN IP", + "type": "fix", + "scope": "mana-llm", + "additions": 15, + "deletions": 1, + "timestamp": "2026-04-08T16:46:14+02:00" + }, + { + "hash": "bfeeef7", + "short": "chore(matrix): final scrub of stale matrix references", + "type": "chore", + "scope": "matrix", + "additions": 1259, + "deletions": 734, + "timestamp": "2026-04-08T16:47:54+02:00" + }, + { + "hash": "b505024", + "short": "fix(voice/parse-task): guard against gemma3:4b hallucinating dueDate + priority", + "type": "fix", + "scope": "voice/parse-task", + "additions": 136, + "deletions": 11, + "timestamp": "2026-04-08T16:50:19+02:00" + }, + { + "hash": "68e8897", + "short": "chore(env): default MANA_LLM_URL to llm.mana.how", + "type": "chore", + "scope": "env", + "additions": 6, + "deletions": 2, + "timestamp": "2026-04-08T16:55:01+02:00" + }, + { + "hash": "7007140", + "short": "fix(voice): switch to gemma3:12b + few-shot prompt for parse-task", + "type": "fix", + "scope": "voice", + "additions": 47, + "deletions": 31, + "timestamp": "2026-04-08T16:59:32+02:00" + }, + { + "hash": "0119e48", + "short": "test(voice/parse-task): unit tests for coerce + transcriptMentions guards", + "type": "test", + "scope": "voice/parse-task", + "additions": 197, + "deletions": 2, + "timestamp": "2026-04-08T17:04:52+02:00" + }, + { + "hash": "4f6609a", + "short": "docs(devlog): backfill daily devlogs for 2026-04-01 through 2026-04-07", + "type": "docs", + "scope": "devlog", + "additions": 1801, + "deletions": 0, + "timestamp": "2026-04-08T17:11:10+02:00" + }, + { + "hash": "3b41b39", + "short": "fix(voice/parse-task): extract helpers to coerce.ts so prod build passes", + "type": "fix", + "scope": "voice/parse-task", + "additions": 181, + "deletions": 157, + "timestamp": "2026-04-08T17:12:26+02:00" + }, + { + "hash": "5af4dda", + "short": "test(integration): end-to-end auth flow test with Mailpit + CI gating", + "type": "test", + "scope": "integration", + "additions": 612, + "deletions": 0, + "timestamp": "2026-04-08T17:14:02+02:00" + }, + { + "hash": "a7f3577", + "short": "fix(voice): set MANA_LLM_URL on mana-web — $env/dynamic/private hides PUBLIC_", + "type": "fix", + "scope": "voice", + "additions": 19, + "deletions": 5, + "timestamp": "2026-04-08T17:20:03+02:00" + }, + { + "hash": "e8de377", + "short": "fix(macmini): mount prometheus config directly so /-/reload picks up edits", + "type": "fix", + "scope": "macmini", + "additions": 23, + "deletions": 4, + "timestamp": "2026-04-08T17:25:48+02:00" + }, + { + "hash": "d3a1f00", + "short": "feat(crypto): roll places + locationLogs into the encryption registry", + "type": "feat", + "scope": "crypto", + "additions": 51, + "deletions": 7, + "timestamp": "2026-04-08T17:41:00+02:00" + }, + { + "hash": "93748c0", + "short": "feat(playground): real LLM playground module backed by mana-llm + saved snippets", + "type": "feat", + "scope": "playground", + "additions": 670, + "deletions": 78, + "timestamp": "2026-04-08T17:41:18+02:00" + }, + { + "hash": "4fce6a3", + "short": "feat(env): persistent dev secrets via .env.secrets override", + "type": "feat", + "scope": "env", + "additions": 333, + "deletions": 6, + "timestamp": "2026-04-08T17:50:37+02:00" + }, + { + "hash": "ed74629", + "short": "fix(mana-auth): security_events INSERT crashed on undefined optional fields", + "type": "fix", + "scope": "mana-auth", + "additions": 17, + "deletions": 2, + "timestamp": "2026-04-08T17:59:23+02:00" + }, + { + "hash": "4fd5ff3", + "short": "feat(local-llm): add Gemma 2 + allow HF/MLC hosts in CSP", + "type": "feat", + "scope": "local-llm", + "additions": 22, + "deletions": 0, + "timestamp": "2026-04-08T18:00:57+02:00" + }, + { + "hash": "01632df", + "short": "docs(devlog): voice quick-add pipeline + LLM parsing live in prod", + "type": "docs", + "scope": "devlog", + "additions": 358, + "deletions": 0, + "timestamp": "2026-04-08T18:01:21+02:00" + }, + { + "hash": "624f5ce", + "short": "fix(csp): allow wasm-unsafe-eval so @mana/local-llm can instantiate WebLLM", + "type": "fix", + "scope": "csp", + "additions": 5, + "deletions": 1, + "timestamp": "2026-04-08T18:05:30+02:00" + }, + { + "hash": "09f81d7", + "short": "test(integration): assert security_events audit rows after register + login", + "type": "test", + "scope": "integration", + "additions": 26, + "deletions": 1, + "timestamp": "2026-04-08T18:05:57+02:00" + }, + { + "hash": "2a437a5", + "short": "fix(mana/web): EncryptionIntroBanner sits inside the bottom-stack", + "type": "fix", + "scope": "mana/web", + "additions": 27, + "deletions": 13, + "timestamp": "2026-04-08T18:08:35+02:00" + }, + { + "hash": "94ab125", + "short": "fix(mana/web): SessionWarning + SuggestionToast into bottom-stack", + "type": "fix", + "scope": "mana/web", + "additions": 32, + "deletions": 20, + "timestamp": "2026-04-08T18:16:55+02:00" + }, + { + "hash": "c5e5963", + "short": "fix(macmini): repair container auto-recovery (broken --env-file path)", + "type": "fix", + "scope": "macmini", + "additions": 201, + "deletions": 272, + "timestamp": "2026-04-08T18:17:31+02:00" + }, + { + "hash": "a9178ec", + "short": "fix(docker): drop stale shared-subscription-* COPY lines from sveltekit-base", + "type": "fix", + "scope": "docker", + "additions": 4, + "deletions": 2, + "timestamp": "2026-04-08T18:28:59+02:00" + }, + { + "hash": "d941ff2", + "short": "fix(mana-auth): account lockout was structurally dead + add failure-path tests", + "type": "fix", + "scope": "mana-auth", + "additions": 258, + "deletions": 9, + "timestamp": "2026-04-08T18:29:00+02:00" + }, + { + "hash": "c3cb9dd", + "short": "refactor(mana/web): consolidate ListView scaffolding into BaseListView", + "type": "refactor", + "scope": "mana/web", + "additions": 877, + "deletions": 1043, + "timestamp": "2026-04-08T18:40:47+02:00" + }, + { + "hash": "30787e3", + "short": "refactor(mana/web): consolidate DetailView scaffolding into DetailViewShell + useDetailEntity", + "type": "refactor", + "scope": "mana/web", + "additions": 1467, + "deletions": 4567, + "timestamp": "2026-04-08T22:10:42+02:00" + }, + { + "hash": "e828519", + "short": "feat(questions): deep-research module — mana-search + mana-llm pipeline", + "type": "feat", + "scope": "questions", + "additions": 2221, + "deletions": 4, + "timestamp": "2026-04-08T22:15:35+02:00" + }, + { + "hash": "83828e5", + "short": "fix(research): handle zero-hit retrieval — skip empty insert + graceful summary", + "type": "fix", + "scope": "research", + "additions": 33, + "deletions": 11, + "timestamp": "2026-04-08T22:19:17+02:00" + }, + { + "hash": "1f26aa4", + "short": "feat(local-llm): swap WebLLM/Qwen for transformers.js + Gemma 4 E2B", + "type": "feat", + "scope": "local-llm", + "additions": 374, + "deletions": 265, + "timestamp": "2026-04-08T22:22:32+02:00" + }, + { + "hash": "3dc16bb", + "short": "refactor(mana/web): extract addTagId / removeTagIdWithUndo helpers", + "type": "refactor", + "scope": "mana/web", + "additions": 96, + "deletions": 39, + "timestamp": "2026-04-08T22:26:15+02:00" + }, + { + "hash": "048184b", + "short": "fix(macmini): auto-rebuild stale sveltekit-base before per-app web builds", + "type": "fix", + "scope": "macmini", + "additions": 269, + "deletions": 460, + "timestamp": "2026-04-08T22:34:29+02:00" + }, + { + "hash": "30766f1", + "short": "fix(macmini): auto-rebuild stale sveltekit-base before per-app web builds", + "type": "fix", + "scope": "macmini", + "additions": 60, + "deletions": 2, + "timestamp": "2026-04-08T22:35:46+02:00" + }, + { + "hash": "63a91e3", + "short": "fix(research): use /v1/chat/completions for mana-llm (not /api/v1/)", + "type": "fix", + "scope": "research", + "additions": 3, + "deletions": 3, + "timestamp": "2026-04-08T22:37:07+02:00" + }, + { + "hash": "0af9094", + "short": "fix(csp): allow HF XET CDN (cas-bridge.xethub.hf.co) for transformers.js", + "type": "fix", + "scope": "csp", + "additions": 12, + "deletions": 3, + "timestamp": "2026-04-08T22:51:50+02:00" + }, + { + "hash": "243c09d", + "short": "refactor(mana/web): extract useItemContextMenu helper for ListView right-click menus", + "type": "refactor", + "scope": "mana/web", + "additions": 191, + "deletions": 214, + "timestamp": "2026-04-08T22:55:31+02:00" + }, + { + "hash": "b50a5c9", + "short": "fix(local-llm): allow jsdelivr in CSP + aggregate transformers.js progress", + "type": "fix", + "scope": "local-llm", + "additions": 67, + "deletions": 19, + "timestamp": "2026-04-08T22:56:52+02:00" + }, + { + "hash": "8772a9b", + "short": "fix(csp): also allow jsdelivr in connect-src for transformers.js WASM preload", + "type": "fix", + "scope": "csp", + "additions": 6, + "deletions": 1, + "timestamp": "2026-04-08T22:59:52+02:00" + }, + { + "hash": "9602339", + "short": "refactor(mana/web): extract QuickActionsList molecule shared by both widget variants", + "type": "refactor", + "scope": "mana/web", + "additions": 97, + "deletions": 42, + "timestamp": "2026-04-08T23:02:09+02:00" + }, + { + "hash": "e4e3360", + "short": "fix(csp): move jsdelivr allowlist to mana-web hooks (Vite SSR cache workaround)", + "type": "fix", + "scope": "csp", + "additions": 12, + "deletions": 13, + "timestamp": "2026-04-08T23:03:38+02:00" + }, + { + "hash": "cc6ebee", + "short": "fix(csp): allow blob: in script-src so onnxruntime-web Worker can spawn", + "type": "fix", + "scope": "csp", + "additions": 8, + "deletions": 1, + "timestamp": "2026-04-08T23:06:33+02:00" + }, + { + "hash": "7f1513b", + "short": "fix(local-llm): handle null model.generate() return + bogus return_tensor", + "type": "fix", + "scope": "local-llm", + "additions": 71, + "deletions": 34, + "timestamp": "2026-04-08T23:15:33+02:00" + }, + { + "hash": "e8423e7", + "short": "fix(local-llm): use two-step tokenization to fix Gemma 4 generate crash", + "type": "fix", + "scope": "local-llm", + "additions": 20, + "deletions": 11, + "timestamp": "2026-04-08T23:19:24+02:00" + }, + { + "hash": "7901a5d", + "short": "docs(local-llm): document browser-local LLM stack and CSP requirements", + "type": "docs", + "scope": "local-llm", + "additions": 190, + "deletions": 0, + "timestamp": "2026-04-08T23:27:50+02:00" + }, + { + "hash": "74140e1", + "short": "refactor(mana/web): migrate zitare DetailView to theme tokens (P5 phase 1 sample)", + "type": "refactor", + "scope": "mana/web", + "additions": 20, + "deletions": 35, + "timestamp": "2026-04-09T00:29:39+02:00" + }, + { + "hash": "6fd4655", + "short": "fix(questions): unwrap \\$state proxy for tags before Dexie write", + "type": "fix", + "scope": "questions", + "additions": 5, + "deletions": 1, + "timestamp": "2026-04-09T00:31:53+02:00" + }, + { + "hash": "7618518", + "short": "Revert \"refactor(mana/web): migrate zitare DetailView to theme tokens (P5 phase 1 sample)\"", + "type": null, + "scope": null, + "additions": 35, + "deletions": 20, + "timestamp": "2026-04-09T00:36:43+02:00" + }, + { + "hash": "56065c8", + "short": "fix(mana/web): unwrap $state proxy in workbench-scenes Dexie writes", + "type": "fix", + "scope": "mana/web", + "additions": 1415, + "deletions": 1665, + "timestamp": "2026-04-09T00:44:00+02:00" + }, + { + "hash": "1702caa", + "short": "feat(shared-llm) + fix(mana/web): tiered LLM orchestrator + workbench proxy fix", + "type": null, + "scope": null, + "additions": 539, + "deletions": 0, + "timestamp": "2026-04-09T01:05:14+02:00" + }, + { + "hash": "752f31b", + "short": "fix(mana/web): handle vault-locked race + add guest plaintext fallback", + "type": "fix", + "scope": "mana/web", + "additions": 151, + "deletions": 9, + "timestamp": "2026-04-09T01:11:21+02:00" + }, + { + "hash": "3a3cd12", + "short": "feat(mana/web): unified guest-mode prompt in the bottom-stack notification slot", + "type": "feat", + "scope": "mana/web", + "additions": 144, + "deletions": 3, + "timestamp": "2026-04-09T01:11:54+02:00" + }, + { + "hash": "919fcca", + "short": "refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention", + "type": "refactor", + "scope": "shared-tailwind", + "additions": 1099, + "deletions": 5425, + "timestamp": "2026-04-09T01:13:06+02:00" + }, + { + "hash": "45f368f", + "short": "feat(local-llm): Phase 3 — move inference into a Web Worker", + "type": "feat", + "scope": "local-llm", + "additions": 509, + "deletions": 296, + "timestamp": "2026-04-09T01:27:10+02:00" + }, + { + "hash": "2d3c2bf", + "short": "fix(local-llm): set Vite worker.format='es' for code-splitting support", + "type": "fix", + "scope": "local-llm", + "additions": 10, + "deletions": 0, + "timestamp": "2026-04-09T01:33:03+02:00" + }, + { + "hash": "6e20c29", + "short": "fix(mana/web): wrap var(--color-X) usages with hsl() in non-Phase-6 components", + "type": "fix", + "scope": "mana/web", + "additions": 82, + "deletions": 82, + "timestamp": "2026-04-09T01:45:34+02:00" + }, + { + "hash": "3b5d58e", + "short": "feat(shared-llm): Phase 4 — persistent LLM task queue", + "type": "feat", + "scope": "shared-llm", + "additions": 567, + "deletions": 251, + "timestamp": "2026-04-09T01:51:20+02:00" + }, + { + "hash": "c06e685", + "short": "refactor(mana/web): migrate zitare DetailView to theme tokens (P5 phase 6)", + "type": "refactor", + "scope": "mana/web", + "additions": 20, + "deletions": 35, + "timestamp": "2026-04-09T01:52:15+02:00" + }, + { + "hash": "73d8e5c", + "short": "fix(mana/web): drop stray closing paren from hsl(var(--color-X))) CSS", + "type": "fix", + "scope": "mana/web", + "additions": 14, + "deletions": 14, + "timestamp": "2026-04-09T01:59:10+02:00" + }, + { + "hash": "7bc7b0d", + "short": "refactor(mana/web): migrate calendar/ListView style to theme tokens (P5)", + "type": "refactor", + "scope": "mana/web", + "additions": 21, + "deletions": 52, + "timestamp": "2026-04-09T02:03:05+02:00" + }, + { + "hash": "d9cd92c", + "short": "refactor(mana/web): migrate contacts/ListView style to theme tokens (P5)", + "type": "refactor", + "scope": "mana/web", + "additions": 20, + "deletions": 55, + "timestamp": "2026-04-09T02:03:43+02:00" + }, + { + "hash": "d5440bb", + "short": "refactor(mana/web): migrate todo/ListView style to theme tokens (P5)", + "type": "refactor", + "scope": "mana/web", + "additions": 24, + "deletions": 62, + "timestamp": "2026-04-09T02:04:27+02:00" + }, + { + "hash": "01a10b2", + "short": "refactor(mana/web): migrate notes/ListView style to theme tokens (P5)", + "type": "refactor", + "scope": "mana/web", + "additions": 29, + "deletions": 92, + "timestamp": "2026-04-09T02:05:13+02:00" + }, + { + "hash": "606b836", + "short": "refactor(mana/web): migrate finance/ListView style to theme tokens (P5)", + "type": "refactor", + "scope": "mana/web", + "additions": 44, + "deletions": 111, + "timestamp": "2026-04-09T02:06:10+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-08/macher.md b/devlog/2026-04-08/macher.md new file mode 100644 index 000000000..de563622f --- /dev/null +++ b/devlog/2026-04-08/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-08 +day: 77 +view: macher +weekday: Mittwoch +commits: 97 +review: written +--- + +# Mittwoch, 2026-04-08 — Tag 77 (Macher-Sicht) + +## Stats + +97 Commits, +25634 / −54194 LoC, 631 Files. Top-Dirs: `apps/mana/apps/web` (30%), `apps/matrix/apps/web` (10%), `apps/matrix/apps/mobile` (7%), `services/mana-matrix-bot/internal` (6%), `packages/shared-llm/src` (4%). Tags: mana/web, local-llm, csp, mana-auth, todo. Session 09:47 → 00:06 (~445 aktive Min, längster Fokus 185 Min). + +## Commits + +- `142a65a` docs: Phase 9 documentation roundup — close encryption-shaped doc gaps (+481/-130) +- `b6486a8` fix(mana-video-gen): typo in get_model_info — total_mem → total_memory (+1/-1) +- `fe3fc9e` docs: trim CLAUDE.md files — remove stale + duplicated guidance (+182/-1234) +- `ed8ab44` feat(sync): conflict visualization with restore-my-version toast (+771/-0) +- `b3523f8` chore: cleanup leftover dirs from ManaCore→Mana rename + document apps/api (+13/-442) +- `c8ed58b` fix(mana,ui): integrate guest nudge into bottom stack + theme it (+47/-35) +- `5581295` chore: tidy root files + reorganize a few stale docs (+1/-557) +- `a3a4745` docs(audit): file-bytes encryption implementation plan + audit roll-up (+387/-10) +- `b0a08ce` docs(services): add CLAUDE.md for stt + events, fix stale entries, flag port collisions (+198/-9) +- `3c91691` fix(mana-image-gen): align source default port with production reality (+58/-30) +- `ff7dc5d` feat(auth): structured error codes + conditional passkey UI (+35/-7) +- `abe0a21` refactor(auth-ui): tighten LoginPage UX, a11y, and dead code (+203/-185) +- `b8e18b7` chore(ai-services): adopt Windows GPU as source of truth for llm/stt/tts (+1619/-1257) +- `c7b4388` feat(mana-image-gen): replace Mac flux2.c implementation with Windows GPU diffusers (+547/-592) +- `f434703` chore(mac-mini): remove all AI service infrastructure (moved to Windows GPU) (+232/-1920) +- `4cb1bc1` fix(mana-voice-bot): move default port 3050 → 3024 + Windows GPU deployment notes (+137/-133) +- `2b44946` fix(mana/web): unblock voice capture — permissions policy, notification mount, dev SW (+32/-3) +- `45958ad` feat(mana/web): global requireAuth() gate for guest-blocked features (+356/-2) +- `f567826` chore(deps): reconcile pnpm-lock with package.json drift (+180/-282) +- `0d1d3b9` fix(mana-auth): declare missing nanoid dependency (+13/-2) + +_… plus 77 weitere Commits._ diff --git a/devlog/2026-04-08/spieler.md b/devlog/2026-04-08/spieler.md new file mode 100644 index 000000000..e19360fb1 --- /dev/null +++ b/devlog/2026-04-08/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-08 +day: 77 +view: spieler +weekday: Mittwoch +commits: 97 +review: written +--- + +# Mittwoch, 2026-04-08 — Tag 77 + +Großer Sprint-Tag mit Schwerpunkt **apps** (97 Commits). + +## Highlights + +- Phase 9 documentation roundup — close encryption-shaped doc gaps +- typo in get_model_info — total_mem → total_memory +- trim CLAUDE.md files — remove stale + duplicated guidance +- conflict visualization with restore-my-version toast +- integrate guest nudge into bottom stack + theme it diff --git a/devlog/2026-04-09/data.json b/devlog/2026-04-09/data.json new file mode 100644 index 000000000..b04931ba9 --- /dev/null +++ b/devlog/2026-04-09/data.json @@ -0,0 +1,1228 @@ +{ + "date": "2026-04-09", + "day_number": 78, + "weekday": "Donnerstag", + "commits": 125, + "authors": [ + { + "name": "Till JS", + "count": 125 + } + ], + "additions": 24904, + "deletions": 26063, + "net_lines": -1159, + "files_changed": 537, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-09T09:49:29.000Z", + "last_commit_at": "2026-04-10T00:51:41.000Z", + "total_span_minutes": 902, + "active_minutes": 403, + "pauses": [ + { + "from": "13:25", + "to": "14:05", + "minutes": 40 + }, + { + "from": "15:14", + "to": "15:44", + "minutes": 30 + }, + { + "from": "18:52", + "to": "19:34", + "minutes": 42 + }, + { + "from": "20:25", + "to": "02:51", + "minutes": 387 + } + ], + "longest_focus_minutes": 188 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 58 + }, + { + "path": "packages/shared-errors/src", + "pct": 3 + }, + { + "path": "packages/cards-database/src", + "pct": 2 + }, + { + "path": "apps/api/src/modules", + "pct": 2 + }, + { + "path": "packages/help/src", + "pct": 2 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 268 + }, + { + "ext": ".svelte", + "count": 254 + }, + { + "ext": ".json", + "count": 82 + }, + { + "ext": ".js", + "count": 21 + }, + { + "ext": ".md", + "count": 15 + }, + { + "ext": ".yml", + "count": 9 + } + ], + "tags": ["mana/web", "mana/web/nutriphi", "mana/web/news", "api", "memoro"], + "commits_list": [ + { + "hash": "feb19d8", + "short": "refactor(mana/web): migrate cycles/ListView style to theme tokens (P5)", + "type": "refactor", + "scope": "mana/web", + "additions": 19, + "deletions": 41, + "timestamp": "2026-04-09T11:49:29+02:00" + }, + { + "hash": "0b9f85c", + "short": "refactor(mana/web): migrate dreams/ListView style to theme tokens (P5)", + "type": "refactor", + "scope": "mana/web", + "additions": 73, + "deletions": 137, + "timestamp": "2026-04-09T11:49:31+02:00" + }, + { + "hash": "7a0959e", + "short": "refactor(mana/web): migrate PageShell to theme tokens (P5)", + "type": "refactor", + "scope": "mana/web", + "additions": 24, + "deletions": 76, + "timestamp": "2026-04-09T11:53:35+02:00" + }, + { + "hash": "b4dd646", + "short": "feat(memoro): auto-generate voice memo titles via the LLM task queue", + "type": "feat", + "scope": "memoro", + "additions": 202, + "deletions": 0, + "timestamp": "2026-04-09T11:55:26+02:00" + }, + { + "hash": "e19a81c", + "short": "test(mana-auth): sso-config consistency spec", + "type": "test", + "scope": "mana-auth", + "additions": 126, + "deletions": 0, + "timestamp": "2026-04-09T11:55:30+02:00" + }, + { + "hash": "4884899", + "short": "chore(packages): remove 4 dead zero-consumer packages", + "type": "chore", + "scope": "packages", + "additions": 0, + "deletions": 4702, + "timestamp": "2026-04-09T11:56:25+02:00" + }, + { + "hash": "12be86b", + "short": "chore: remove abandoned per-product workspace artifacts", + "type": null, + "scope": null, + "additions": 3, + "deletions": 5893, + "timestamp": "2026-04-09T11:56:51+02:00" + }, + { + "hash": "034a07d", + "short": "chore(workspace): remove redundant nested lockfiles + workspace.yaml", + "type": "chore", + "scope": "workspace", + "additions": 0, + "deletions": 7189, + "timestamp": "2026-04-09T11:57:11+02:00" + }, + { + "hash": "b2bc28d", + "short": "docs: refactoring audit April 2026", + "type": null, + "scope": null, + "additions": 738, + "deletions": 0, + "timestamp": "2026-04-09T11:57:33+02:00" + }, + { + "hash": "2375167", + "short": "refactor(mana/web): migrate foundation shells + workbench scenes to theme tokens (P5)", + "type": "refactor", + "scope": "mana/web", + "additions": 122, + "deletions": 333, + "timestamp": "2026-04-09T12:02:54+02:00" + }, + { + "hash": "94d7dd4", + "short": "feat(mana/web): tier-gate workbench picker, openApps, and per-route navigation", + "type": "feat", + "scope": "mana/web", + "additions": 180, + "deletions": 6, + "timestamp": "2026-04-09T12:08:49+02:00" + }, + { + "hash": "e52b6e2", + "short": "chore(shared-branding): set all apps to requiredTier 'guest' (testing only)", + "type": "chore", + "scope": "shared-branding", + "additions": 36, + "deletions": 36, + "timestamp": "2026-04-09T12:14:02+02:00" + }, + { + "hash": "7b25f3a", + "short": "refactor(mana/web): migrate module DetailViews + sub-views to theme tokens (P5)", + "type": "refactor", + "scope": "mana/web", + "additions": 176, + "deletions": 471, + "timestamp": "2026-04-09T12:15:47+02:00" + }, + { + "hash": "fbb71f9", + "short": "feat(admin): replace mock dashboard stats with real /admin/stats endpoint", + "type": "feat", + "scope": "admin", + "additions": 109, + "deletions": 36, + "timestamp": "2026-04-09T12:20:18+02:00" + }, + { + "hash": "ddde284", + "short": "fix(memoro): decrypt DetailView fields + stamp createdAt on memo create", + "type": "fix", + "scope": "memoro", + "additions": 17, + "deletions": 1, + "timestamp": "2026-04-09T12:22:01+02:00" + }, + { + "hash": "38a02b7", + "short": "chore(dev): add setup-dev-user script for local founder accounts", + "type": "chore", + "scope": "dev", + "additions": 149, + "deletions": 1, + "timestamp": "2026-04-09T12:23:15+02:00" + }, + { + "hash": "c8da226", + "short": "fix(skilltree): define the missing branch accent colors", + "type": "fix", + "scope": "skilltree", + "additions": 22, + "deletions": 7, + "timestamp": "2026-04-09T12:23:55+02:00" + }, + { + "hash": "32b0bf9", + "short": "fix(docker): drop more stale shared package COPY lines from sveltekit-base", + "type": "fix", + "scope": "docker", + "additions": 3, + "deletions": 5, + "timestamp": "2026-04-09T12:25:45+02:00" + }, + { + "hash": "b8f2d8f", + "short": "docs(local-dev): document setup-dev-user + the three founder accounts", + "type": "docs", + "scope": "local-dev", + "additions": 63, + "deletions": 0, + "timestamp": "2026-04-09T12:26:37+02:00" + }, + { + "hash": "5052926", + "short": "refactor(mana/web): migrate chrome/notification components to theme tokens (P5)", + "type": "refactor", + "scope": "mana/web", + "additions": 18, + "deletions": 17, + "timestamp": "2026-04-09T12:27:09+02:00" + }, + { + "hash": "7f6b416", + "short": "test(load): k6 script for the unified apps/api server", + "type": "test", + "scope": "load", + "additions": 302, + "deletions": 0, + "timestamp": "2026-04-09T12:27:54+02:00" + }, + { + "hash": "5c41ebe", + "short": "style(mana/web/automations): migrate ListView to theme tokens (P5)", + "type": "style", + "scope": "mana/web/automations", + "additions": 40, + "deletions": 32, + "timestamp": "2026-04-09T12:34:32+02:00" + }, + { + "hash": "d2e44c8", + "short": "chore(packages): remove 2 zero-consumer config packages", + "type": "chore", + "scope": "packages", + "additions": 53, + "deletions": 744, + "timestamp": "2026-04-09T12:35:40+02:00" + }, + { + "hash": "a7fbd29", + "short": "style(mana/web): migrate photos/times/contacts module helpers to theme tokens (P5)", + "type": "style", + "scope": "mana/web", + "additions": 58, + "deletions": 53, + "timestamp": "2026-04-09T12:37:29+02:00" + }, + { + "hash": "526d92f", + "short": "fix(memoro): diagnostic logs + loading states + transcription source label", + "type": "fix", + "scope": "memoro", + "additions": 185, + "deletions": 38, + "timestamp": "2026-04-09T12:41:28+02:00" + }, + { + "hash": "4423c03", + "short": "fix(docker): drop packages/shared-config (deleted) from sveltekit-base", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-09T12:43:17+02:00" + }, + { + "hash": "0987b08", + "short": "style(mana/web): migrate (app) page-level routes to theme tokens (P5)", + "type": "style", + "scope": "mana/web", + "additions": 83, + "deletions": 77, + "timestamp": "2026-04-09T12:43:24+02:00" + }, + { + "hash": "9760269", + "short": "fix(memoro): generateTitle empty-result fallback + watcher diagnostics", + "type": "fix", + "scope": "memoro", + "additions": 64, + "deletions": 19, + "timestamp": "2026-04-09T12:53:35+02:00" + }, + { + "hash": "ea8ca13", + "short": "fix(mana/web): wrap bare var(--color-X) refs in hsl() across 19 files (P5)", + "type": "fix", + "scope": "mana/web", + "additions": 189, + "deletions": 193, + "timestamp": "2026-04-09T13:02:33+02:00" + }, + { + "hash": "d8591b3", + "short": "fix(generate-title): few-shot prompt + rolling cleanup + date label for short transcripts", + "type": "fix", + "scope": "generate-title", + "additions": 76, + "deletions": 31, + "timestamp": "2026-04-09T13:03:16+02:00" + }, + { + "hash": "43d19b5", + "short": "docs(shared-tailwind/themes): document hsl() wrap rule + token allowlist", + "type": "docs", + "scope": "shared-tailwind/themes", + "additions": 31, + "deletions": 1, + "timestamp": "2026-04-09T13:05:16+02:00" + }, + { + "hash": "32419a6", + "short": "docs(who): RFC for the historical-figure guessing module", + "type": "docs", + "scope": "who", + "additions": 415, + "deletions": 0, + "timestamp": "2026-04-09T13:08:07+02:00" + }, + { + "hash": "74b5808", + "short": "feat(api): who module — LLM character-guessing endpoint cluster", + "type": "feat", + "scope": "api", + "additions": 830, + "deletions": 0, + "timestamp": "2026-04-09T13:09:46+02:00" + }, + { + "hash": "f24438f", + "short": "feat(mana/web): who module — frontend (game store + UI + routes)", + "type": "feat", + "scope": "mana/web", + "additions": 1018, + "deletions": 0, + "timestamp": "2026-04-09T13:10:34+02:00" + }, + { + "hash": "65c4d93", + "short": "feat(shared-branding): register the who module in mana-apps + new icon", + "type": "feat", + "scope": "shared-branding", + "additions": 22, + "deletions": 0, + "timestamp": "2026-04-09T13:10:55+02:00" + }, + { + "hash": "ef780cf", + "short": "chore: remove whopixels — superseded by the who module", + "type": null, + "scope": null, + "additions": 4, + "deletions": 3666, + "timestamp": "2026-04-09T13:11:36+02:00" + }, + { + "hash": "0450c86", + "short": "fix(shared-llm): SSE shape diagnostics + simpler title prompt + fragment detection", + "type": "fix", + "scope": "shared-llm", + "additions": 117, + "deletions": 31, + "timestamp": "2026-04-09T13:12:13+02:00" + }, + { + "hash": "be8c048", + "short": "fix(mana/web/sync): drain leftover pending changes on startup", + "type": "fix", + "scope": "mana/web/sync", + "additions": 26, + "deletions": 0, + "timestamp": "2026-04-09T13:24:51+02:00" + }, + { + "hash": "b83e8d6", + "short": "fix(mana/web): seed pending-changes badge count on mount", + "type": "fix", + "scope": "mana/web", + "additions": 10, + "deletions": 3, + "timestamp": "2026-04-09T13:25:06+02:00" + }, + { + "hash": "60fedbb", + "short": "feat(mana/web/planta): photo upload, AI identification, tags, watering history, i18n + tests", + "type": "feat", + "scope": "mana/web/planta", + "additions": 1451, + "deletions": 248, + "timestamp": "2026-04-09T14:05:13+02:00" + }, + { + "hash": "b68fcc8", + "short": "fix(mana/web/planta): /planta routes — layout fix, i18n, nullability, button nesting", + "type": "fix", + "scope": "mana/web/planta", + "additions": 215, + "deletions": 98, + "timestamp": "2026-04-09T14:05:56+02:00" + }, + { + "hash": "ad61893", + "short": "chore(planta): remove orphan apps/planta/packages/shared", + "type": "chore", + "scope": "planta", + "additions": 271, + "deletions": 383, + "timestamp": "2026-04-09T14:06:11+02:00" + }, + { + "hash": "233cf28", + "short": "fix(shared-llm): switch remote backend to non-streaming, drop credentials", + "type": "fix", + "scope": "shared-llm", + "additions": 58, + "deletions": 91, + "timestamp": "2026-04-09T14:07:06+02:00" + }, + { + "hash": "7750c46", + "short": "feat(api): production deploy — Dockerfile + docker-compose service", + "type": "feat", + "scope": "api", + "additions": 125, + "deletions": 0, + "timestamp": "2026-04-09T14:08:59+02:00" + }, + { + "hash": "6cbb1f6", + "short": "fix(api/Dockerfile): switch builder stage to node:20-alpine", + "type": "fix", + "scope": "api/Dockerfile", + "additions": 14, + "deletions": 7, + "timestamp": "2026-04-09T14:10:59+02:00" + }, + { + "hash": "7fa3afc", + "short": "fix(mana/web/sync): push fresh writes immediately via listener bridge", + "type": "fix", + "scope": "mana/web/sync", + "additions": 41, + "deletions": 11, + "timestamp": "2026-04-09T14:13:25+02:00" + }, + { + "hash": "2f00d9c", + "short": "feat(memoro): show title source label below the title input", + "type": "feat", + "scope": "memoro", + "additions": 75, + "deletions": 0, + "timestamp": "2026-04-09T14:19:59+02:00" + }, + { + "hash": "e3029ef", + "short": "fix(api/deploy): use mana-api.mana.how to avoid api.mana.how conflict", + "type": "fix", + "scope": "api/deploy", + "additions": 39, + "deletions": 2, + "timestamp": "2026-04-09T14:21:06+02:00" + }, + { + "hash": "b8bfc4d", + "short": "fix(branding): drop who module's required tier from beta to public", + "type": "fix", + "scope": "branding", + "additions": 6, + "deletions": 1, + "timestamp": "2026-04-09T14:27:18+02:00" + }, + { + "hash": "a130f8e", + "short": "feat(mana/web): clickable page titles open route in new tab", + "type": "feat", + "scope": "mana/web", + "additions": 59, + "deletions": 4, + "timestamp": "2026-04-09T14:27:51+02:00" + }, + { + "hash": "41c705a", + "short": "feat(mana/web): per-module icons + wire workbench title link", + "type": "feat", + "scope": "mana/web", + "additions": 69, + "deletions": 1, + "timestamp": "2026-04-09T14:28:01+02:00" + }, + { + "hash": "ab0ca99", + "short": "feat(mana/web): app picker — autofocused search + alphabetical order", + "type": "feat", + "scope": "mana/web", + "additions": 81, + "deletions": 3, + "timestamp": "2026-04-09T14:37:04+02:00" + }, + { + "hash": "f0faae0", + "short": "feat(mana/web): same-origin proxy for /api/v1/who/* → mana-api", + "type": "feat", + "scope": "mana/web", + "additions": 119, + "deletions": 6, + "timestamp": "2026-04-09T15:06:04+02:00" + }, + { + "hash": "07b130f", + "short": "fix(shared-branding): add missing 'who' entry to APP_URLS", + "type": "fix", + "scope": "shared-branding", + "additions": 6, + "deletions": 5, + "timestamp": "2026-04-09T15:08:02+02:00" + }, + { + "hash": "e6564cf", + "short": "fix(mana/web): add standard mobile-web-app-capable meta tag", + "type": "fix", + "scope": "mana/web", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-09T15:08:12+02:00" + }, + { + "hash": "693d20e", + "short": "refactor(api/nutriphi): split photo flow into /photos/upload + /analysis/photo", + "type": "refactor", + "scope": "api/nutriphi", + "additions": 37, + "deletions": 29, + "timestamp": "2026-04-09T15:13:45+02:00" + }, + { + "hash": "189249b", + "short": "feat(mana/web/nutriphi): photo capture + AI meal recognition flow", + "type": "feat", + "scope": "mana/web/nutriphi", + "additions": 630, + "deletions": 45, + "timestamp": "2026-04-09T15:14:07+02:00" + }, + { + "hash": "c7fd936", + "short": "test(mana/web/nutriphi): integration tests for meal mutations + encryption", + "type": "test", + "scope": "mana/web/nutriphi", + "additions": 223, + "deletions": 0, + "timestamp": "2026-04-09T15:14:24+02:00" + }, + { + "hash": "e00e6f5", + "short": "refactor(shared-branding): derive APP_URLS from APP_ICONS", + "type": "refactor", + "scope": "shared-branding", + "additions": 49, + "deletions": 45, + "timestamp": "2026-04-09T15:14:52+02:00" + }, + { + "hash": "de4f766", + "short": "feat(mana/web/nutriphi): extend meal schema (foods + thumbnail) + update mutation", + "type": "feat", + "scope": "mana/web/nutriphi", + "additions": 92, + "deletions": 10, + "timestamp": "2026-04-09T15:44:55+02:00" + }, + { + "hash": "4fd6a5c", + "short": "feat(mana/web/nutriphi): meal detail page + foods breakdown + thumbnail-aware lists", + "type": "feat", + "scope": "mana/web/nutriphi", + "additions": 595, + "deletions": 35, + "timestamp": "2026-04-09T15:45:21+02:00" + }, + { + "hash": "23f13d7", + "short": "test(mana/web/nutriphi): cover mealMutations.update", + "type": "test", + "scope": "mana/web/nutriphi", + "additions": 70, + "deletions": 0, + "timestamp": "2026-04-09T15:45:35+02:00" + }, + { + "hash": "51f4087", + "short": "fix(api/who): use /v1/chat/completions path for mana-llm", + "type": "fix", + "scope": "api/who", + "additions": 4, + "deletions": 1, + "timestamp": "2026-04-09T15:48:09+02:00" + }, + { + "hash": "45790ff", + "short": "refactor(mana): rename inventar → inventory across the codebase", + "type": "refactor", + "scope": "mana", + "additions": 173, + "deletions": 147, + "timestamp": "2026-04-09T15:50:24+02:00" + }, + { + "hash": "9ef97a1", + "short": "feat(news): backend ingester service + curated feed API", + "type": "feat", + "scope": "news", + "additions": 1058, + "deletions": 64, + "timestamp": "2026-04-09T15:53:26+02:00" + }, + { + "hash": "de7e359", + "short": "feat(mana/web/news): client data layer + module library", + "type": "feat", + "scope": "mana/web/news", + "additions": 1331, + "deletions": 0, + "timestamp": "2026-04-09T15:53:52+02:00" + }, + { + "hash": "8167d26", + "short": "feat(mana/web/news): web routes + i18n locales", + "type": "feat", + "scope": "mana/web/news", + "additions": 2918, + "deletions": 0, + "timestamp": "2026-04-09T15:54:25+02:00" + }, + { + "hash": "e579e29", + "short": "feat(mana/web/news): workbench ListView + dashboard widget", + "type": "feat", + "scope": "mana/web/news", + "additions": 521, + "deletions": 1, + "timestamp": "2026-04-09T15:54:57+02:00" + }, + { + "hash": "c184991", + "short": "feat(mana/web/nutriphi): inline text + photo quick-add in workbench ListView", + "type": "feat", + "scope": "mana/web/nutriphi", + "additions": 146, + "deletions": 8, + "timestamp": "2026-04-09T16:05:13+02:00" + }, + { + "hash": "df72a92", + "short": "test(mana/web): consistency guard for workbench-registry ↔ MANA_APPS", + "type": "test", + "scope": "mana/web", + "additions": 78, + "deletions": 0, + "timestamp": "2026-04-09T16:05:17+02:00" + }, + { + "hash": "c9e1624", + "short": "feat(shared-llm): bump mana-server default model to gemma4:e4b", + "type": "feat", + "scope": "shared-llm", + "additions": 20, + "deletions": 11, + "timestamp": "2026-04-09T16:06:33+02:00" + }, + { + "hash": "68d1bda", + "short": "fix(news-ingester): drop unused @mana/shared-hono workspace dep", + "type": "fix", + "scope": "news-ingester", + "additions": 0, + "deletions": 1, + "timestamp": "2026-04-09T16:11:58+02:00" + }, + { + "hash": "5480a8d", + "short": "feat(mana/web/nutriphi): global quick-input adapter for the search bar", + "type": "feat", + "scope": "mana/web/nutriphi", + "additions": 221, + "deletions": 0, + "timestamp": "2026-04-09T16:14:37+02:00" + }, + { + "hash": "6124ae9", + "short": "fix(mana/web): bump Dexie schema to v3 for the who tables", + "type": "fix", + "scope": "mana/web", + "additions": 34, + "deletions": 8, + "timestamp": "2026-04-09T16:14:39+02:00" + }, + { + "hash": "bd748b0", + "short": "feat(mana/web/nutriphi): context menu quick-action for \"Neue Mahlzeit\"", + "type": "feat", + "scope": "mana/web/nutriphi", + "additions": 11, + "deletions": 0, + "timestamp": "2026-04-09T16:14:50+02:00" + }, + { + "hash": "dad174a", + "short": "fix(news-ingester): silence JSDOM CSS errors + add process-level safety net", + "type": "fix", + "scope": "news-ingester", + "additions": 30, + "deletions": 2, + "timestamp": "2026-04-09T16:15:46+02:00" + }, + { + "hash": "422eb9f", + "short": "fix(mana/web/who): log sendMessage failures to console", + "type": "fix", + "scope": "mana/web/who", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-09T16:19:19+02:00" + }, + { + "hash": "52159ee", + "short": "fix(news-ingester): disable Readability fallback to break crash loop", + "type": "fix", + "scope": "news-ingester", + "additions": 22, + "deletions": 4, + "timestamp": "2026-04-09T16:21:09+02:00" + }, + { + "hash": "a412ccc", + "short": "feat(mana/web/body): new module — combined fitness training + body comp tracking", + "type": "feat", + "scope": "mana/web/body", + "additions": 1297, + "deletions": 0, + "timestamp": "2026-04-09T16:28:19+02:00" + }, + { + "hash": "b2db42b", + "short": "feat(mana/web/body): UI components, route, i18n, dashboard widget", + "type": "feat", + "scope": "mana/web/body", + "additions": 1439, + "deletions": 1, + "timestamp": "2026-04-09T16:28:55+02:00" + }, + { + "hash": "8adef1b", + "short": "fix(shared-llm): fall back to message.reasoning when content is empty", + "type": "fix", + "scope": "shared-llm", + "additions": 11, + "deletions": 2, + "timestamp": "2026-04-09T16:29:22+02:00" + }, + { + "hash": "3993400", + "short": "chore(infra): make cloudflared-config.yml the single source of truth", + "type": "chore", + "scope": "infra", + "additions": 225, + "deletions": 25, + "timestamp": "2026-04-09T16:37:21+02:00" + }, + { + "hash": "92f8221", + "short": "docs(shared-llm): correct the mana-server tier topology in code + CLAUDE.md", + "type": "docs", + "scope": "shared-llm", + "additions": 26, + "deletions": 5, + "timestamp": "2026-04-09T16:40:34+02:00" + }, + { + "hash": "77ad489", + "short": "fix(mana/web/who): set createdAt + use simple gameId index for messages", + "type": "fix", + "scope": "mana/web/who", + "additions": 24, + "deletions": 12, + "timestamp": "2026-04-09T16:41:36+02:00" + }, + { + "hash": "b2f3b31", + "short": "feat(mana/web/body): exercise picker, routines, phases, progression chart", + "type": "feat", + "scope": "mana/web/body", + "additions": 1276, + "deletions": 38, + "timestamp": "2026-04-09T16:55:51+02:00" + }, + { + "hash": "56130cd", + "short": "test(mana/web/body): integration tests for bodyStore mutations", + "type": "test", + "scope": "mana/web/body", + "additions": 294, + "deletions": 0, + "timestamp": "2026-04-09T16:56:17+02:00" + }, + { + "hash": "63e1ef8", + "short": "fix(mana/web/who): chat bubble Tailwind classes — v3 → v4 syntax", + "type": "fix", + "scope": "mana/web/who", + "additions": 16, + "deletions": 16, + "timestamp": "2026-04-09T16:56:34+02:00" + }, + { + "hash": "c2a75bb", + "short": "feat(shared-types): add Zod schemas for AI structured outputs", + "type": "feat", + "scope": "shared-types", + "additions": 399, + "deletions": 270, + "timestamp": "2026-04-09T16:59:28+02:00" + }, + { + "hash": "0c0e31d", + "short": "refactor(api): use Vercel AI SDK + Zod for nutriphi/planta vision routes", + "type": "refactor", + "scope": "api", + "additions": 85, + "deletions": 95, + "timestamp": "2026-04-09T16:59:51+02:00" + }, + { + "hash": "f9b8399", + "short": "refactor(mana/web): consume shared AI Zod schemas via z.infer", + "type": "refactor", + "scope": "mana/web", + "additions": 19, + "deletions": 42, + "timestamp": "2026-04-09T17:00:13+02:00" + }, + { + "hash": "59b5114", + "short": "fix(mana/web/who): surface guestPrompt on JWT expiry", + "type": "fix", + "scope": "mana/web/who", + "additions": 25, + "deletions": 1, + "timestamp": "2026-04-09T17:10:03+02:00" + }, + { + "hash": "4fab323", + "short": "fix(mana/web/news): use client-side API URL + snapshot $state arrays", + "type": "fix", + "scope": "mana/web/news", + "additions": 28, + "deletions": 19, + "timestamp": "2026-04-09T17:16:44+02:00" + }, + { + "hash": "bd231cd", + "short": "feat(api/web): wire-format envelope versioning + Anthropic prompt-cache hints", + "type": "feat", + "scope": "api/web", + "additions": 238, + "deletions": 17, + "timestamp": "2026-04-09T17:17:18+02:00" + }, + { + "hash": "967f938", + "short": "feat(mana/web/body): full i18n + calorie × weight correlation chart", + "type": "feat", + "scope": "mana/web/body", + "additions": 475, + "deletions": 3, + "timestamp": "2026-04-09T17:19:20+02:00" + }, + { + "hash": "5110065", + "short": "feat(mana/web/sync): expose debug info, surface silent push failures", + "type": "feat", + "scope": "mana/web/sync", + "additions": 69, + "deletions": 3, + "timestamp": "2026-04-09T17:20:22+02:00" + }, + { + "hash": "2804072", + "short": "docs(sync): add SYNC_DEBUG runbook with new debug API in Schritt C", + "type": "docs", + "scope": "sync", + "additions": 157, + "deletions": 0, + "timestamp": "2026-04-09T17:20:46+02:00" + }, + { + "hash": "9d1b251", + "short": "fix(api/who): server-side validation of [IDENTITY_REVEALED] sentinel", + "type": "fix", + "scope": "api/who", + "additions": 51, + "deletions": 12, + "timestamp": "2026-04-09T17:21:14+02:00" + }, + { + "hash": "5aeae87", + "short": "feat(api/web): wire-format envelope versioning + Anthropic prompt-cache hints", + "type": "feat", + "scope": "api/web", + "additions": 305, + "deletions": 16, + "timestamp": "2026-04-09T17:21:19+02:00" + }, + { + "hash": "1b26623", + "short": "fix(api/Dockerfile): copy @mana/shared-types into the build context", + "type": "fix", + "scope": "api/Dockerfile", + "additions": 4, + "deletions": 1, + "timestamp": "2026-04-09T17:25:23+02:00" + }, + { + "hash": "a50dc82", + "short": "chore(infra): tunnel id 1435166a (locally-managed rebuild result)", + "type": "chore", + "scope": "infra", + "additions": 2, + "deletions": 2, + "timestamp": "2026-04-09T17:29:29+02:00" + }, + { + "hash": "77b2d1e", + "short": "chore(infra): smarter tunnel rebuild — apex via API + sane probes", + "type": "chore", + "scope": "infra", + "additions": 135, + "deletions": 4, + "timestamp": "2026-04-09T17:52:40+02:00" + }, + { + "hash": "6c0f88f", + "short": "chore(infra): pre-commit validator for cloudflared-config.yml", + "type": "chore", + "scope": "infra", + "additions": 177, + "deletions": 0, + "timestamp": "2026-04-09T18:02:51+02:00" + }, + { + "hash": "3ccfc3b", + "short": "fix(api): correct mana-llm path prefix and model name in vision routes", + "type": "fix", + "scope": "api", + "additions": 12, + "deletions": 4, + "timestamp": "2026-04-09T18:11:43+02:00" + }, + { + "hash": "3ef095a", + "short": "fix(mana-llm/ollama): pass response_format to Ollama + strip markdown fences", + "type": "fix", + "scope": "mana-llm/ollama", + "additions": 58, + "deletions": 1, + "timestamp": "2026-04-09T18:12:01+02:00" + }, + { + "hash": "0426b66", + "short": "fix(mana/web/nutriphi): widen goal state types from literal to number", + "type": "fix", + "scope": "mana/web/nutriphi", + "additions": 10, + "deletions": 7, + "timestamp": "2026-04-09T18:12:13+02:00" + }, + { + "hash": "ff6118f", + "short": "fix(mana/web): migrate liveQuery hooks to useLiveQueryWithDefault", + "type": "fix", + "scope": "mana/web", + "additions": 82, + "deletions": 74, + "timestamp": "2026-04-09T18:12:15+02:00" + }, + { + "hash": "b32de06", + "short": "fix(mana/web): coerce $page.params.* away from string|undefined", + "type": "fix", + "scope": "mana/web", + "additions": 22, + "deletions": 20, + "timestamp": "2026-04-09T18:12:54+02:00" + }, + { + "hash": "9bf73ff", + "short": "fix(help): correct broken imports + tighten SupportedLanguage typing", + "type": "fix", + "scope": "help", + "additions": 22, + "deletions": 13, + "timestamp": "2026-04-09T18:13:18+02:00" + }, + { + "hash": "7ba381f", + "short": "fix(mana/web/news): Bearer token + Dexie v4 schema upgrade", + "type": "fix", + "scope": "mana/web/news", + "additions": 61, + "deletions": 26, + "timestamp": "2026-04-09T18:42:49+02:00" + }, + { + "hash": "05d9d19", + "short": "fix(shared-auth): proxy passkey/2FA/session methods through ManaAuthStore", + "type": "fix", + "scope": "shared-auth", + "additions": 81, + "deletions": 1, + "timestamp": "2026-04-09T18:48:00+02:00" + }, + { + "hash": "697d96d", + "short": "fix(mana/web): unblock api-keys, reset-password, dashboard widgets, skilltree stats", + "type": "fix", + "scope": "mana/web", + "additions": 35, + "deletions": 50, + "timestamp": "2026-04-09T18:48:28+02:00" + }, + { + "hash": "cb87d23", + "short": "fix(help): import search types from search-types, not content", + "type": "fix", + "scope": "help", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-09T18:48:39+02:00" + }, + { + "hash": "5520f13", + "short": "fix(mana-llm): add response_format to ChatCompletionRequest model", + "type": "fix", + "scope": "mana-llm", + "additions": 26, + "deletions": 18, + "timestamp": "2026-04-09T18:50:54+02:00" + }, + { + "hash": "3b035e9", + "short": "fix(mana/web/news): use getValidToken + guard prefs against locked vault", + "type": "fix", + "scope": "mana/web/news", + "additions": 18, + "deletions": 6, + "timestamp": "2026-04-09T18:52:51+02:00" + }, + { + "hash": "958819f", + "short": "fix(api): default vision model to ollama/gemma3:4b", + "type": "fix", + "scope": "api", + "additions": 8, + "deletions": 6, + "timestamp": "2026-04-09T19:34:32+02:00" + }, + { + "hash": "f3effe9", + "short": "fix(mana/web/news): instant onboarding handoff to feed branch", + "type": "fix", + "scope": "mana/web/news", + "additions": 56, + "deletions": 12, + "timestamp": "2026-04-09T19:41:31+02:00" + }, + { + "hash": "55bf493", + "short": "fix(api): set supportsStructuredOutputs=true on mana-llm provider", + "type": "fix", + "scope": "api", + "additions": 10, + "deletions": 0, + "timestamp": "2026-04-09T19:44:13+02:00" + }, + { + "hash": "acfbcfe", + "short": "feat(mana/web/news): \"interested\" keeps article visible + saved badge", + "type": "feat", + "scope": "mana/web/news", + "additions": 106, + "deletions": 19, + "timestamp": "2026-04-09T19:48:53+02:00" + }, + { + "hash": "c172ce9", + "short": "fix(mana/web): replace h2/h3 with div in AiSettings + AiTierStep", + "type": "fix", + "scope": "mana/web", + "additions": 4, + "deletions": 4, + "timestamp": "2026-04-09T19:50:04+02:00" + }, + { + "hash": "3c7bfc6", + "short": "feat(mana/web): register body, events, who, guides in workbench app registry", + "type": "feat", + "scope": "mana/web", + "additions": 121, + "deletions": 0, + "timestamp": "2026-04-09T20:18:30+02:00" + }, + { + "hash": "83eaf71", + "short": "fix(macmini): clean up container conflicts in build-app.sh restart cycle", + "type": "fix", + "scope": "macmini", + "additions": 38, + "deletions": 1, + "timestamp": "2026-04-09T20:22:52+02:00" + }, + { + "hash": "ab24db3", + "short": "fix(packages): cross-package broken imports + missing exports", + "type": "fix", + "scope": "packages", + "additions": 25, + "deletions": 26, + "timestamp": "2026-04-09T20:23:34+02:00" + }, + { + "hash": "c31ce44", + "short": "fix(packages): modal keydown handlers, $derived.by usage, UserData fields", + "type": "fix", + "scope": "packages", + "additions": 26, + "deletions": 13, + "timestamp": "2026-04-09T20:24:05+02:00" + }, + { + "hash": "80b23dd", + "short": "fix(mana/web): clear remaining type errors — long-tail sweep", + "type": "fix", + "scope": "mana/web", + "additions": 110, + "deletions": 66, + "timestamp": "2026-04-09T20:25:08+02:00" + }, + { + "hash": "64b8ab3", + "short": "fix(mana-media): commit initial schema migration + run on startup", + "type": "fix", + "scope": "mana-media", + "additions": 697, + "deletions": 0, + "timestamp": "2026-04-10T02:51:41+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-09/macher.md b/devlog/2026-04-09/macher.md new file mode 100644 index 000000000..c07ef93ad --- /dev/null +++ b/devlog/2026-04-09/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-09 +day: 78 +view: macher +weekday: Donnerstag +commits: 125 +review: written +--- + +# Donnerstag, 2026-04-09 — Tag 78 (Macher-Sicht) + +## Stats + +125 Commits, +24904 / −26063 LoC, 537 Files. Top-Dirs: `apps/mana/apps/web` (58%), `packages/shared-errors/src` (3%), `packages/cards-database/src` (2%), `apps/api/src/modules` (2%), `packages/help/src` (2%). Tags: mana/web, mana/web/nutriphi, mana/web/news, api, memoro. Session 09:49 → 00:51 (~403 aktive Min, längster Fokus 188 Min). + +## Commits + +- `feb19d8` refactor(mana/web): migrate cycles/ListView style to theme tokens (P5) (+19/-41) +- `0b9f85c` refactor(mana/web): migrate dreams/ListView style to theme tokens (P5) (+73/-137) +- `7a0959e` refactor(mana/web): migrate PageShell to theme tokens (P5) (+24/-76) +- `b4dd646` feat(memoro): auto-generate voice memo titles via the LLM task queue (+202/-0) +- `e19a81c` test(mana-auth): sso-config consistency spec (+126/-0) +- `4884899` chore(packages): remove 4 dead zero-consumer packages (+0/-4702) +- `12be86b` chore: remove abandoned per-product workspace artifacts (+3/-5893) +- `034a07d` chore(workspace): remove redundant nested lockfiles + workspace.yaml (+0/-7189) +- `b2bc28d` docs: refactoring audit April 2026 (+738/-0) +- `2375167` refactor(mana/web): migrate foundation shells + workbench scenes to theme tokens (P5) (+122/-333) +- `94d7dd4` feat(mana/web): tier-gate workbench picker, openApps, and per-route navigation (+180/-6) +- `e52b6e2` chore(shared-branding): set all apps to requiredTier 'guest' (testing only) (+36/-36) +- `7b25f3a` refactor(mana/web): migrate module DetailViews + sub-views to theme tokens (P5) (+176/-471) +- `fbb71f9` feat(admin): replace mock dashboard stats with real /admin/stats endpoint (+109/-36) +- `ddde284` fix(memoro): decrypt DetailView fields + stamp createdAt on memo create (+17/-1) +- `38a02b7` chore(dev): add setup-dev-user script for local founder accounts (+149/-1) +- `c8da226` fix(skilltree): define the missing branch accent colors (+22/-7) +- `32b0bf9` fix(docker): drop more stale shared package COPY lines from sveltekit-base (+3/-5) +- `b8f2d8f` docs(local-dev): document setup-dev-user + the three founder accounts (+63/-0) +- `5052926` refactor(mana/web): migrate chrome/notification components to theme tokens (P5) (+18/-17) + +_… plus 105 weitere Commits._ diff --git a/devlog/2026-04-09/spieler.md b/devlog/2026-04-09/spieler.md new file mode 100644 index 000000000..1b0eb4eea --- /dev/null +++ b/devlog/2026-04-09/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-09 +day: 78 +view: spieler +weekday: Donnerstag +commits: 125 +review: written +--- + +# Donnerstag, 2026-04-09 — Tag 78 + +Großer Sprint-Tag mit Schwerpunkt **apps** (125 Commits). + +## Highlights + +- auto-generate voice memo titles via the LLM task queue +- refactoring audit April 2026 +- tier-gate workbench picker, openApps, and per-route navigation +- replace mock dashboard stats with real /admin/stats endpoint +- decrypt DetailView fields + stamp createdAt on memo create diff --git a/devlog/2026-04-10/data.json b/devlog/2026-04-10/data.json new file mode 100644 index 000000000..87963c33a --- /dev/null +++ b/devlog/2026-04-10/data.json @@ -0,0 +1,570 @@ +{ + "date": "2026-04-10", + "day_number": 79, + "weekday": "Freitag", + "commits": 53, + "authors": [ + { + "name": "Till JS", + "count": 53 + } + ], + "additions": 21847, + "deletions": 3227, + "net_lines": 18620, + "files_changed": 408, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-10T15:23:28.000Z", + "last_commit_at": "2026-04-11T02:58:55.000Z", + "total_span_minutes": 695, + "active_minutes": 183, + "pauses": [ + { + "from": "19:28", + "to": "22:15", + "minutes": 167 + }, + { + "from": "23:14", + "to": "04:58", + "minutes": 345 + } + ], + "longest_focus_minutes": 125 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 71 + }, + { + "path": "apps/api/src/modules", + "pct": 7 + }, + { + "path": "packages/shared-ui/src", + "pct": 4 + }, + { + "path": "services/mana-credits/src", + "pct": 4 + }, + { + "path": "services/mana-geocoding/src", + "pct": 1 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 289 + }, + { + "ext": ".ts", + "count": 191 + }, + { + "ext": ".json", + "count": 48 + }, + { + "ext": ".md", + "count": 8 + }, + { + "ext": ".yml", + "count": 7 + }, + { + "ext": ".go", + "count": 3 + } + ], + "tags": ["mana/web", "guides", "chat", "sync", "timeblocks"], + "commits_list": [ + { + "hash": "716466e", + "short": "fix(shared-llm): sort candidate tiers privacy-first (browser before server)", + "type": "fix", + "scope": "shared-llm", + "additions": 6, + "deletions": 2, + "timestamp": "2026-04-10T17:23:28+02:00" + }, + { + "hash": "b898756", + "short": "fix(mana/web): add logging + toast for encryption vault unlock failures", + "type": "fix", + "scope": "mana/web", + "additions": 82, + "deletions": 5, + "timestamp": "2026-04-10T17:29:02+02:00" + }, + { + "hash": "da03fac", + "short": "fix(mana/web+packages): clear all 270 warnings to zero", + "type": "fix", + "scope": "mana/web+packages", + "additions": 1598, + "deletions": 347, + "timestamp": "2026-04-10T17:34:49+02:00" + }, + { + "hash": "26914b1", + "short": "fix(body): unblock routine creation + remove duplicate header", + "type": "fix", + "scope": "body", + "additions": 93, + "deletions": 41, + "timestamp": "2026-04-10T17:36:24+02:00" + }, + { + "hash": "f1a7f35", + "short": "feat(context): add inline document creation to workbench ListView", + "type": "feat", + "scope": "context", + "additions": 42, + "deletions": 3, + "timestamp": "2026-04-10T17:36:31+02:00" + }, + { + "hash": "05f4da5", + "short": "feat(events): wire workbench detail overlay via ViewProps", + "type": "feat", + "scope": "events", + "additions": 37, + "deletions": 33, + "timestamp": "2026-04-10T17:36:40+02:00" + }, + { + "hash": "d3b9805", + "short": "feat(mana/web): play Who games inline on workbench page", + "type": "feat", + "scope": "mana/web", + "additions": 107, + "deletions": 99, + "timestamp": "2026-04-10T17:37:42+02:00" + }, + { + "hash": "734f149", + "short": "feat(moodlit): add inline mood creation to workbench ListView", + "type": "feat", + "scope": "moodlit", + "additions": 117, + "deletions": 1, + "timestamp": "2026-04-10T17:38:12+02:00" + }, + { + "hash": "e77ae5d", + "short": "feat(who): add character dossier system for staged fact disclosure", + "type": "feat", + "scope": "who", + "additions": 5613, + "deletions": 1, + "timestamp": "2026-04-10T17:40:16+02:00" + }, + { + "hash": "ea4f05d", + "short": "feat(inventory): add quick item creation to workbench ListView", + "type": "feat", + "scope": "inventory", + "additions": 150, + "deletions": 1, + "timestamp": "2026-04-10T17:40:28+02:00" + }, + { + "hash": "2c56780", + "short": "feat(mana/web): add shared voice transcription helper", + "type": "feat", + "scope": "mana/web", + "additions": 52, + "deletions": 0, + "timestamp": "2026-04-10T17:41:27+02:00" + }, + { + "hash": "f17d748", + "short": "feat(picture): add inline upload to workbench ListView", + "type": "feat", + "scope": "picture", + "additions": 350, + "deletions": 29, + "timestamp": "2026-04-10T17:42:31+02:00" + }, + { + "hash": "4f17626", + "short": "feat(guides): complete module with types, CRUD, detail view, and run tracking", + "type": "feat", + "scope": "guides", + "additions": 1645, + "deletions": 121, + "timestamp": "2026-04-10T17:51:19+02:00" + }, + { + "hash": "6cc4024", + "short": "feat(chat): wire AI streaming completions in chat detail page", + "type": "feat", + "scope": "chat", + "additions": 197, + "deletions": 15, + "timestamp": "2026-04-10T17:52:02+02:00" + }, + { + "hash": "fa09914", + "short": "feat(chat): add workbench detail overlay with streaming AI", + "type": "feat", + "scope": "chat", + "additions": 459, + "deletions": 28, + "timestamp": "2026-04-10T17:52:17+02:00" + }, + { + "hash": "adb1649", + "short": "refactor(mana/web): architecture cleanup — liveQuery migration, dead types, seed registry", + "type": "refactor", + "scope": "mana/web", + "additions": 198, + "deletions": 159, + "timestamp": "2026-04-10T18:01:02+02:00" + }, + { + "hash": "28c1024", + "short": "feat(zitare): smooth transitions, custom quotes, notes, new categories, fuzzy search", + "type": "feat", + "scope": "zitare", + "additions": 857, + "deletions": 46, + "timestamp": "2026-04-10T18:01:15+02:00" + }, + { + "hash": "d7663e9", + "short": "feat(playground): persistent chat history, token display, model comparison", + "type": "feat", + "scope": "playground", + "additions": 973, + "deletions": 275, + "timestamp": "2026-04-10T18:02:27+02:00" + }, + { + "hash": "04ce8e5", + "short": "fix(chat): add auth header, template system prompts, streaming debounce", + "type": "fix", + "scope": "chat", + "additions": 82, + "deletions": 16, + "timestamp": "2026-04-10T18:03:43+02:00" + }, + { + "hash": "0f7ab60", + "short": "feat: top-5 ROI improvements — CI gate, auth fields, body×timeblocks, sync pull, tests", + "type": null, + "scope": null, + "additions": 387, + "deletions": 9, + "timestamp": "2026-04-10T18:17:32+02:00" + }, + { + "hash": "a9956c0", + "short": "feat(mana/web): AI tier selector dropdown in PillNavigation", + "type": "feat", + "scope": "mana/web", + "additions": 97, + "deletions": 0, + "timestamp": "2026-04-10T18:19:27+02:00" + }, + { + "hash": "3e81a6e", + "short": "fix: dev startup — Redis eviction policy, mana-media port crash, Svelte warnings", + "type": null, + "scope": null, + "additions": 24, + "deletions": 25, + "timestamp": "2026-04-10T18:33:41+02:00" + }, + { + "hash": "7df5154", + "short": "fix: revert tier test patch, widen toggleField, add spiral-db prepare", + "type": null, + "scope": null, + "additions": 41, + "deletions": 39, + "timestamp": "2026-04-10T18:35:20+02:00" + }, + { + "hash": "5647b2f", + "short": "fix(dx): suppress AZURE_OPENAI_API_KEY warning, honest db:push reporting", + "type": "fix", + "scope": "dx", + "additions": 7, + "deletions": 2, + "timestamp": "2026-04-10T18:36:35+02:00" + }, + { + "hash": "d7dc538", + "short": "fix(dx): shortcut mana-media dev startup chain", + "type": "fix", + "scope": "dx", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-10T18:41:44+02:00" + }, + { + "hash": "7d18ada", + "short": "fix: as-any cast cleanup + spiral-db prepare + locale typing", + "type": null, + "scope": null, + "additions": 20, + "deletions": 21, + "timestamp": "2026-04-10T18:43:01+02:00" + }, + { + "hash": "97610a0", + "short": "feat(sync): batched push with PUSH_BATCH_SIZE = 200", + "type": "feat", + "scope": "sync", + "additions": 15, + "deletions": 3, + "timestamp": "2026-04-10T18:43:33+02:00" + }, + { + "hash": "a8da25c", + "short": "fix(guides): move {@const} out of
to fix Svelte 5 build error", + "type": "fix", + "scope": "guides", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-10T18:45:37+02:00" + }, + { + "hash": "3e812e8", + "short": "fix(guides): add stub GUIDES export so build passes", + "type": "fix", + "scope": "guides", + "additions": 4, + "deletions": 0, + "timestamp": "2026-04-10T18:51:01+02:00" + }, + { + "hash": "6ee1df3", + "short": "feat(timeblocks): integrate planta, dreams, skilltree, cycles modules", + "type": "feat", + "scope": "timeblocks", + "additions": 247, + "deletions": 25, + "timestamp": "2026-04-10T18:54:04+02:00" + }, + { + "hash": "29ad31c", + "short": "feat(timeblocks): integrate guides, places, cards modules", + "type": "feat", + "scope": "timeblocks", + "additions": 154, + "deletions": 12, + "timestamp": "2026-04-10T19:07:59+02:00" + }, + { + "hash": "e068335", + "short": "refactor(credits): simplify credit system — remove productivity credits, guild pools, complex gift types", + "type": "refactor", + "scope": "credits", + "additions": 143, + "deletions": 922, + "timestamp": "2026-04-10T19:08:42+02:00" + }, + { + "hash": "cbfe995", + "short": "feat(timeblocks): integrate music, moodlit, presi modules", + "type": "feat", + "scope": "timeblocks", + "additions": 140, + "deletions": 7, + "timestamp": "2026-04-10T19:19:54+02:00" + }, + { + "hash": "0f634b2", + "short": "refactor(workbench): replace minimize tabs + scene tabs with unified bottom bar", + "type": "refactor", + "scope": "workbench", + "additions": 349, + "deletions": 263, + "timestamp": "2026-04-10T19:22:35+02:00" + }, + { + "hash": "e429682", + "short": "feat(journal): add journal module with voice capture, mood tracking, and encryption", + "type": "feat", + "scope": "journal", + "additions": 1461, + "deletions": 0, + "timestamp": "2026-04-10T19:23:19+02:00" + }, + { + "hash": "4d133fa", + "short": "fix(mana/web): resolve 14 pre-existing svelte-check type errors", + "type": "fix", + "scope": "mana/web", + "additions": 29, + "deletions": 1, + "timestamp": "2026-04-10T19:28:37+02:00" + }, + { + "hash": "30440f3", + "short": "chore(branding): set all module tiers to guest for testing", + "type": "chore", + "scope": "branding", + "additions": 54, + "deletions": 37, + "timestamp": "2026-04-10T22:15:37+02:00" + }, + { + "hash": "f9b6720", + "short": "feat: E2E smoke test, lazy widget loading, typed module context", + "type": null, + "scope": null, + "additions": 278, + "deletions": 3, + "timestamp": "2026-04-10T22:17:57+02:00" + }, + { + "hash": "5c2ea61", + "short": "feat(credits): add sync billing — monthly credit subscription for cloud sync", + "type": "feat", + "scope": "credits", + "additions": 1082, + "deletions": 29, + "timestamp": "2026-04-10T22:21:58+02:00" + }, + { + "hash": "e943ac9", + "short": "docs: add firsts module design document", + "type": null, + "scope": null, + "additions": 252, + "deletions": 0, + "timestamp": "2026-04-10T22:23:21+02:00" + }, + { + "hash": "ab62157", + "short": "feat(firsts): add first-times module with dream-to-lived tracking", + "type": "feat", + "scope": "firsts", + "additions": 1875, + "deletions": 1, + "timestamp": "2026-04-10T22:23:32+02:00" + }, + { + "hash": "7102063", + "short": "fix(calendar): add timezone fallback in test mock to match Calendar type", + "type": "fix", + "scope": "calendar", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-10T22:26:30+02:00" + }, + { + "hash": "ed76f53", + "short": "feat(sync): Phase 2 — server-side billing gate, cron charging, email notifications", + "type": "feat", + "scope": "sync", + "additions": 209, + "deletions": 13, + "timestamp": "2026-04-10T22:28:57+02:00" + }, + { + "hash": "56d7f9a", + "short": "docs(mana-sync): document billing middleware, new env vars, project structure", + "type": "docs", + "scope": "mana-sync", + "additions": 9, + "deletions": 2, + "timestamp": "2026-04-10T22:38:23+02:00" + }, + { + "hash": "b8cd33d", + "short": "fix(a11y): replace 215 suppression comments with real fixes", + "type": "fix", + "scope": "a11y", + "additions": 399, + "deletions": 319, + "timestamp": "2026-04-10T22:43:05+02:00" + }, + { + "hash": "d2c9795", + "short": "feat(sync): add sync status PillNav dropdown + onboarding step", + "type": "feat", + "scope": "sync", + "additions": 252, + "deletions": 0, + "timestamp": "2026-04-10T22:51:00+02:00" + }, + { + "hash": "f5ad492", + "short": "refactor(workbench): redesign page cards — rounder corners, unified header, remove DnD", + "type": "refactor", + "scope": "workbench", + "additions": 72, + "deletions": 214, + "timestamp": "2026-04-10T23:02:10+02:00" + }, + { + "hash": "a47a7bf", + "short": "feat(places): add self-hosted geocoding with Pelias (DACH)", + "type": "feat", + "scope": "places", + "additions": 1519, + "deletions": 34, + "timestamp": "2026-04-10T23:02:25+02:00" + }, + { + "hash": "82f58e4", + "short": "A11y", + "type": null, + "scope": null, + "additions": 7, + "deletions": 6, + "timestamp": "2026-04-10T23:04:39+02:00" + }, + { + "hash": "ecfb267", + "short": "fix(firsts): remove invalid JS comment from CSS block", + "type": "fix", + "scope": "firsts", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-10T23:08:25+02:00" + }, + { + "hash": "2a177ba", + "short": "fix(monitoring): add 10 missing modules to blackbox probes + geocoding to status", + "type": "fix", + "scope": "monitoring", + "additions": 13, + "deletions": 0, + "timestamp": "2026-04-10T23:13:07+02:00" + }, + { + "hash": "68c59c8", + "short": "fix(docker): fix mana-credits Dockerfile to resolve workspace deps", + "type": "fix", + "scope": "docker", + "additions": 16, + "deletions": 7, + "timestamp": "2026-04-10T23:14:07+02:00" + }, + { + "hash": "1943a1d", + "short": "fix(geocoding): Pelias config for DACH-only import + single-country filter", + "type": "fix", + "scope": "geocoding", + "additions": 30, + "deletions": 7, + "timestamp": "2026-04-11T04:58:55+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-10/macher.md b/devlog/2026-04-10/macher.md new file mode 100644 index 000000000..8dfc49ae8 --- /dev/null +++ b/devlog/2026-04-10/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-10 +day: 79 +view: macher +weekday: Freitag +commits: 53 +review: written +--- + +# Freitag, 2026-04-10 — Tag 79 (Macher-Sicht) + +## Stats + +53 Commits, +21847 / −3227 LoC, 408 Files. Top-Dirs: `apps/mana/apps/web` (71%), `apps/api/src/modules` (7%), `packages/shared-ui/src` (4%), `services/mana-credits/src` (4%), `services/mana-geocoding/src` (1%). Tags: mana/web, guides, chat, sync, timeblocks. Session 15:23 → 02:58 (~183 aktive Min, längster Fokus 125 Min). + +## Commits + +- `716466e` fix(shared-llm): sort candidate tiers privacy-first (browser before server) (+6/-2) +- `b898756` fix(mana/web): add logging + toast for encryption vault unlock failures (+82/-5) +- `da03fac` fix(mana/web+packages): clear all 270 warnings to zero (+1598/-347) +- `26914b1` fix(body): unblock routine creation + remove duplicate header (+93/-41) +- `f1a7f35` feat(context): add inline document creation to workbench ListView (+42/-3) +- `05f4da5` feat(events): wire workbench detail overlay via ViewProps (+37/-33) +- `d3b9805` feat(mana/web): play Who games inline on workbench page (+107/-99) +- `734f149` feat(moodlit): add inline mood creation to workbench ListView (+117/-1) +- `e77ae5d` feat(who): add character dossier system for staged fact disclosure (+5613/-1) +- `ea4f05d` feat(inventory): add quick item creation to workbench ListView (+150/-1) +- `2c56780` feat(mana/web): add shared voice transcription helper (+52/-0) +- `f17d748` feat(picture): add inline upload to workbench ListView (+350/-29) +- `4f17626` feat(guides): complete module with types, CRUD, detail view, and run tracking (+1645/-121) +- `6cc4024` feat(chat): wire AI streaming completions in chat detail page (+197/-15) +- `fa09914` feat(chat): add workbench detail overlay with streaming AI (+459/-28) +- `adb1649` refactor(mana/web): architecture cleanup — liveQuery migration, dead types, seed registry (+198/-159) +- `28c1024` feat(zitare): smooth transitions, custom quotes, notes, new categories, fuzzy search (+857/-46) +- `d7663e9` feat(playground): persistent chat history, token display, model comparison (+973/-275) +- `04ce8e5` fix(chat): add auth header, template system prompts, streaming debounce (+82/-16) +- `0f7ab60` feat: top-5 ROI improvements — CI gate, auth fields, body×timeblocks, sync pull, tests (+387/-9) + +_… plus 33 weitere Commits._ diff --git a/devlog/2026-04-10/spieler.md b/devlog/2026-04-10/spieler.md new file mode 100644 index 000000000..8556cf5c3 --- /dev/null +++ b/devlog/2026-04-10/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-10 +day: 79 +view: spieler +weekday: Freitag +commits: 53 +review: written +--- + +# Freitag, 2026-04-10 — Tag 79 + +Großer Sprint-Tag mit Schwerpunkt **apps** (53 Commits). + +## Highlights + +- sort candidate tiers privacy-first (browser before server) +- add logging + toast for encryption vault unlock failures +- clear all 270 warnings to zero +- unblock routine creation + remove duplicate header +- add inline document creation to workbench ListView diff --git a/devlog/2026-04-11/data.json b/devlog/2026-04-11/data.json new file mode 100644 index 000000000..c527a8357 --- /dev/null +++ b/devlog/2026-04-11/data.json @@ -0,0 +1,350 @@ +{ + "date": "2026-04-11", + "day_number": 80, + "weekday": "Samstag", + "commits": 28, + "authors": [ + { + "name": "Till JS", + "count": 28 + } + ], + "additions": 4425, + "deletions": 1225, + "net_lines": 3200, + "files_changed": 80, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-11T13:47:29.000Z", + "last_commit_at": "2026-04-11T21:38:30.000Z", + "total_span_minutes": 471, + "active_minutes": 149, + "pauses": [ + { + "from": "17:59", + "to": "20:21", + "minutes": 142 + }, + { + "from": "20:38", + "to": "22:48", + "minutes": 130 + }, + { + "from": "22:48", + "to": "23:38", + "minutes": 50 + } + ], + "longest_focus_minutes": 132 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 50 + }, + { + "path": "packages/shared-ui/src", + "pct": 11 + }, + { + "path": "services/mana-geocoding/src", + "pct": 8 + }, + { + "path": "packages/shared-theme/src", + "pct": 6 + }, + { + "path": "scripts/generate-status-page.sh", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 36 + }, + { + "ext": ".ts", + "count": 33 + }, + { + "ext": ".jpg", + "count": 8 + }, + { + "ext": ".yml", + "count": 7 + }, + { + "ext": "", + "count": 6 + }, + { + "ext": ".sh", + "count": 6 + } + ], + "tags": ["geocoding", "workbench", "mana-credits", "web", "status-page"], + "commits_list": [ + { + "hash": "1293756", + "short": "fix(mana-sync): bump Go base image to 1.25 to match go.mod", + "type": "fix", + "scope": "mana-sync", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-11T15:47:29+02:00" + }, + { + "hash": "e82b5c1", + "short": "feat(geocoding): auto-categorize places via Pelias taxonomy", + "type": "feat", + "scope": "geocoding", + "additions": 195, + "deletions": 156, + "timestamp": "2026-04-11T15:48:24+02:00" + }, + { + "hash": "3717f42", + "short": "fix(mana-sync): update Dockerfile to copy workspace shared-go dependency", + "type": "fix", + "scope": "mana-sync", + "additions": 10, + "deletions": 5, + "timestamp": "2026-04-11T15:49:01+02:00" + }, + { + "hash": "f7de9fd", + "short": "docs(geocoding): document the Pelias category patch + import gotchas", + "type": "docs", + "scope": "geocoding", + "additions": 90, + "deletions": 17, + "timestamp": "2026-04-11T15:50:40+02:00" + }, + { + "hash": "f783547", + "short": "feat(workbench): match AppPagePicker design to module pages", + "type": "feat", + "scope": "workbench", + "additions": 21, + "deletions": 12, + "timestamp": "2026-04-11T15:56:00+02:00" + }, + { + "hash": "0ba9767", + "short": "feat: extend geocoding to events, contacts, photos", + "type": null, + "scope": null, + "additions": 470, + "deletions": 25, + "timestamp": "2026-04-11T16:01:20+02:00" + }, + { + "hash": "957060c", + "short": "feat(monitoring): add mana-geocoding + Pelias to prod compose, Prometheus, Grafana, and status.mana.how", + "type": "feat", + "scope": "monitoring", + "additions": 949, + "deletions": 155, + "timestamp": "2026-04-11T16:11:01+02:00" + }, + { + "hash": "12bbe29", + "short": "fix(workbench): move @const out of {#if} in AppPagePicker snippet", + "type": "fix", + "scope": "workbench", + "additions": 2, + "deletions": 2, + "timestamp": "2026-04-11T16:27:12+02:00" + }, + { + "hash": "c9a3c8c", + "short": "fix(mana-credits): rewrite Dockerfile to use WORKDIR instead of cd", + "type": "fix", + "scope": "mana-credits", + "additions": 4, + "deletions": 2, + "timestamp": "2026-04-11T16:30:34+02:00" + }, + { + "hash": "fa7bfd3", + "short": "fix(mana-credits): use pnpm in Dockerfile to handle workspace deps", + "type": "fix", + "scope": "mana-credits", + "additions": 12, + "deletions": 11, + "timestamp": "2026-04-11T16:32:05+02:00" + }, + { + "hash": "3a93c56", + "short": "fix(mana-credits): multi-stage Dockerfile with node+pnpm installer", + "type": "fix", + "scope": "mana-credits", + "additions": 17, + "deletions": 7, + "timestamp": "2026-04-11T16:35:36+02:00" + }, + { + "hash": "21360d9", + "short": "feat(mana/web): redesign settings page + pill-nav compute selector", + "type": "feat", + "scope": "mana/web", + "additions": 1146, + "deletions": 422, + "timestamp": "2026-04-11T16:40:57+02:00" + }, + { + "hash": "6977d18", + "short": "fix(geocoding): don't bind libpostal to host port 4400", + "type": "fix", + "scope": "geocoding", + "additions": 6, + "deletions": 2, + "timestamp": "2026-04-11T16:41:26+02:00" + }, + { + "hash": "c47ce83", + "short": "fix(geocoding): proxy Pelias health through wrapper for monitoring", + "type": "fix", + "scope": "geocoding", + "additions": 40, + "deletions": 16, + "timestamp": "2026-04-11T16:45:43+02:00" + }, + { + "hash": "1c94234", + "short": "fix(web): point credits/sync API client at credits.mana.how", + "type": "fix", + "scope": "web", + "additions": 26, + "deletions": 5, + "timestamp": "2026-04-11T17:12:36+02:00" + }, + { + "hash": "56a9811", + "short": "fix(status-page): replace multi-line awk with shell loop for ash compatibility", + "type": "fix", + "scope": "status-page", + "additions": 22, + "deletions": 7, + "timestamp": "2026-04-11T17:23:29+02:00" + }, + { + "hash": "6f975a5", + "short": "fix(status-page): use ${TIER_APPS:-} for set -u safety", + "type": "fix", + "scope": "status-page", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-11T17:27:09+02:00" + }, + { + "hash": "3ac3a4b", + "short": "fix(status-page): drop set -e — heredoc subshells trigger silent exits", + "type": "fix", + "scope": "status-page", + "additions": 6, + "deletions": 1, + "timestamp": "2026-04-11T17:33:35+02:00" + }, + { + "hash": "6373330", + "short": "feat(pill-nav): collapse user pills into account dropdown + solid pill backgrounds", + "type": "feat", + "scope": "pill-nav", + "additions": 131, + "deletions": 204, + "timestamp": "2026-04-11T17:40:19+02:00" + }, + { + "hash": "020f327", + "short": "fix(geocoding): drop unused Pelias services, raise Bun idleTimeout", + "type": "fix", + "scope": "geocoding", + "additions": 4, + "deletions": 9, + "timestamp": "2026-04-11T17:41:57+02:00" + }, + { + "hash": "69ce4c2", + "short": "feat(geocoding): fall back to Pelias /search when /autocomplete is empty", + "type": "feat", + "scope": "geocoding", + "additions": 24, + "deletions": 6, + "timestamp": "2026-04-11T17:54:57+02:00" + }, + { + "hash": "32d9f25", + "short": "docs(geocoding): update CLAUDE.md with deploy lessons learned", + "type": "docs", + "scope": "geocoding", + "additions": 76, + "deletions": 4, + "timestamp": "2026-04-11T17:59:34+02:00" + }, + { + "hash": "286e273", + "short": "test(geocoding): add unit tests + end-to-end smoke test script", + "type": "test", + "scope": "geocoding", + "additions": 440, + "deletions": 17, + "timestamp": "2026-04-11T20:21:18+02:00" + }, + { + "hash": "0c1eb62", + "short": "feat(places): show reverse-geocoded location label during tracking", + "type": "feat", + "scope": "places", + "additions": 76, + "deletions": 7, + "timestamp": "2026-04-11T20:26:49+02:00" + }, + { + "hash": "f3cc853", + "short": "feat(places): clickable tracking label + full address + browser proxy", + "type": "feat", + "scope": "places", + "additions": 375, + "deletions": 21, + "timestamp": "2026-04-11T20:33:48+02:00" + }, + { + "hash": "7ba058c", + "short": "fix(web): redirect HTTP to HTTPS to fix Safari CORS hang", + "type": "fix", + "scope": "web", + "additions": 174, + "deletions": 2, + "timestamp": "2026-04-11T20:38:21+02:00" + }, + { + "hash": "47aebe3", + "short": "fix(web): improve HTTP detection for HTTPS redirect", + "type": "fix", + "scope": "web", + "additions": 19, + "deletions": 11, + "timestamp": "2026-04-11T22:48:45+02:00" + }, + { + "hash": "68c2442", + "short": "feat(workbench): paper-grain polish — blend-mode, border, stone palette", + "type": "feat", + "scope": "workbench", + "additions": 88, + "deletions": 97, + "timestamp": "2026-04-11T23:38:30+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-11/macher.md b/devlog/2026-04-11/macher.md new file mode 100644 index 000000000..f48fd5263 --- /dev/null +++ b/devlog/2026-04-11/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-11 +day: 80 +view: macher +weekday: Samstag +commits: 28 +review: written +--- + +# Samstag, 2026-04-11 — Tag 80 (Macher-Sicht) + +## Stats + +28 Commits, +4425 / −1225 LoC, 80 Files. Top-Dirs: `apps/mana/apps/web` (50%), `packages/shared-ui/src` (11%), `services/mana-geocoding/src` (8%), `packages/shared-theme/src` (6%), `scripts/generate-status-page.sh` (5%). Tags: geocoding, workbench, mana-credits, web, status-page. Session 13:47 → 21:38 (~149 aktive Min, längster Fokus 132 Min). + +## Commits + +- `1293756` fix(mana-sync): bump Go base image to 1.25 to match go.mod (+1/-1) +- `e82b5c1` feat(geocoding): auto-categorize places via Pelias taxonomy (+195/-156) +- `3717f42` fix(mana-sync): update Dockerfile to copy workspace shared-go dependency (+10/-5) +- `f7de9fd` docs(geocoding): document the Pelias category patch + import gotchas (+90/-17) +- `f783547` feat(workbench): match AppPagePicker design to module pages (+21/-12) +- `0ba9767` feat: extend geocoding to events, contacts, photos (+470/-25) +- `957060c` feat(monitoring): add mana-geocoding + Pelias to prod compose, Prometheus, Grafana, and status.mana.how (+949/-155) +- `12bbe29` fix(workbench): move @const out of {#if} in AppPagePicker snippet (+2/-2) +- `c9a3c8c` fix(mana-credits): rewrite Dockerfile to use WORKDIR instead of cd (+4/-2) +- `fa7bfd3` fix(mana-credits): use pnpm in Dockerfile to handle workspace deps (+12/-11) +- `3a93c56` fix(mana-credits): multi-stage Dockerfile with node+pnpm installer (+17/-7) +- `21360d9` feat(mana/web): redesign settings page + pill-nav compute selector (+1146/-422) +- `6977d18` fix(geocoding): don't bind libpostal to host port 4400 (+6/-2) +- `c47ce83` fix(geocoding): proxy Pelias health through wrapper for monitoring (+40/-16) +- `1c94234` fix(web): point credits/sync API client at credits.mana.how (+26/-5) +- `56a9811` fix(status-page): replace multi-line awk with shell loop for ash compatibility (+22/-7) +- `6f975a5` fix(status-page): use ${TIER_APPS:-} for set -u safety (+1/-1) +- `3ac3a4b` fix(status-page): drop set -e — heredoc subshells trigger silent exits (+6/-1) +- `6373330` feat(pill-nav): collapse user pills into account dropdown + solid pill backgrounds (+131/-204) +- `020f327` fix(geocoding): drop unused Pelias services, raise Bun idleTimeout (+4/-9) + +_… plus 8 weitere Commits._ diff --git a/devlog/2026-04-11/spieler.md b/devlog/2026-04-11/spieler.md new file mode 100644 index 000000000..507a83b5c --- /dev/null +++ b/devlog/2026-04-11/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-11 +day: 80 +view: spieler +weekday: Samstag +commits: 28 +review: written +--- + +# Samstag, 2026-04-11 — Tag 80 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- bump Go base image to 1.25 to match go.mod +- auto-categorize places via Pelias taxonomy +- update Dockerfile to copy workspace shared-go dependency +- document the Pelias category patch + import gotchas +- match AppPagePicker design to module pages diff --git a/devlog/2026-04-12/data.json b/devlog/2026-04-12/data.json new file mode 100644 index 000000000..e937b06c3 --- /dev/null +++ b/devlog/2026-04-12/data.json @@ -0,0 +1,260 @@ +{ + "date": "2026-04-12", + "day_number": 81, + "weekday": "Sonntag", + "commits": 18, + "authors": [ + { + "name": "Till JS", + "count": 18 + } + ], + "additions": 8415, + "deletions": 2447, + "net_lines": 5968, + "files_changed": 205, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-12T12:15:47.000Z", + "last_commit_at": "2026-04-12T19:48:09.000Z", + "total_span_minutes": 452, + "active_minutes": 113, + "pauses": [ + { + "from": "14:32", + "to": "16:00", + "minutes": 87 + }, + { + "from": "16:26", + "to": "18:41", + "minutes": 134 + }, + { + "from": "18:59", + "to": "20:57", + "minutes": 118 + } + ], + "longest_focus_minutes": 50 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 62 + }, + { + "path": "packages/shared-ui/src", + "pct": 5 + }, + { + "path": "packages/shared-branding/src", + "pct": 4 + }, + { + "path": "apps/api/src/modules", + "pct": 3 + }, + { + "path": "packages/local-stt/src", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 118 + }, + { + "ext": ".svelte", + "count": 61 + }, + { + "ext": ".json", + "count": 27 + }, + { + "ext": ".md", + "count": 17 + }, + { + "ext": ".yml", + "count": 4 + }, + { + "ext": ".sh", + "count": 1 + } + ], + "tags": ["web", "ui", "workbench", "presi", "todo"], + "commits_list": [ + { + "hash": "474ba93", + "short": "feat(workbench): dynamic page height + tighter bottom-stack spacing", + "type": "feat", + "scope": "workbench", + "additions": 264, + "deletions": 145, + "timestamp": "2026-04-12T14:15:47+02:00" + }, + { + "hash": "a9c5151", + "short": "fix(presi): wire up db:push for presi schema via @mana/api", + "type": "fix", + "scope": "presi", + "additions": 105, + "deletions": 76, + "timestamp": "2026-04-12T14:32:44+02:00" + }, + { + "hash": "8c2f930", + "short": "feat(web): wallpaper system + sticky PageHeader", + "type": "feat", + "scope": "web", + "additions": 1557, + "deletions": 66, + "timestamp": "2026-04-12T16:00:03+02:00" + }, + { + "hash": "3deee75", + "short": "feat(web): PillNav bar mode, fullscreen, local STT + mic button", + "type": "feat", + "scope": "web", + "additions": 2145, + "deletions": 28, + "timestamp": "2026-04-12T16:05:43+02:00" + }, + { + "hash": "248100d", + "short": "fix(web): remove hardcoded white text, use theme tokens for light mode", + "type": "fix", + "scope": "web", + "additions": 48, + "deletions": 33, + "timestamp": "2026-04-12T16:07:40+02:00" + }, + { + "hash": "0deab50", + "short": "feat(todo): minimal ListView redesign with floating input", + "type": "feat", + "scope": "todo", + "additions": 154, + "deletions": 219, + "timestamp": "2026-04-12T16:07:52+02:00" + }, + { + "hash": "949795c", + "short": "feat(web): shared FloatingInputBar, migrate 7 modules", + "type": "feat", + "scope": "web", + "additions": 414, + "deletions": 401, + "timestamp": "2026-04-12T16:08:03+02:00" + }, + { + "hash": "14d1127", + "short": "fix(calendar): use button for event rows to fix a11y warnings", + "type": "fix", + "scope": "calendar", + "additions": 7, + "deletions": 4, + "timestamp": "2026-04-12T16:12:37+02:00" + }, + { + "hash": "631cdaf", + "short": "feat(voice): route STT through local Whisper when model is loaded", + "type": "feat", + "scope": "voice", + "additions": 64, + "deletions": 6, + "timestamp": "2026-04-12T16:17:56+02:00" + }, + { + "hash": "7314e9b", + "short": "fix(docker): add local-stt package to mana-web Dockerfile", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-12T16:26:50+02:00" + }, + { + "hash": "d6a1c9f", + "short": "feat(drink): add beverage tracking module with inline editing", + "type": "feat", + "scope": "drink", + "additions": 1446, + "deletions": 0, + "timestamp": "2026-04-12T18:41:06+02:00" + }, + { + "hash": "c6c19db", + "short": "feat(moodlit): fullscreen mood on click with visual card redesign", + "type": "feat", + "scope": "moodlit", + "additions": 403, + "deletions": 172, + "timestamp": "2026-04-12T18:45:31+02:00" + }, + { + "hash": "a91a607", + "short": "refactor: rename planta → plants, clean up codebase", + "type": null, + "scope": null, + "additions": 831, + "deletions": 707, + "timestamp": "2026-04-12T18:59:44+02:00" + }, + { + "hash": "4616798", + "short": "fix(calc): use safe evaluate engine in ListView, add error logging", + "type": "fix", + "scope": "calc", + "additions": 18, + "deletions": 22, + "timestamp": "2026-04-12T20:57:46+02:00" + }, + { + "hash": "16fef57", + "short": "fix(auth): use getValidToken() instead of getAccessToken() for API calls", + "type": "fix", + "scope": "auth", + "additions": 18, + "deletions": 18, + "timestamp": "2026-04-12T21:26:10+02:00" + }, + { + "hash": "f47ea96", + "short": "fix(ui): update app icons and add missing i18n labels", + "type": "fix", + "scope": "ui", + "additions": 53, + "deletions": 15, + "timestamp": "2026-04-12T21:32:38+02:00" + }, + { + "hash": "55b7a8a", + "short": "feat(pillnav): compact nav with user menu overlay panel", + "type": "feat", + "scope": "pillnav", + "additions": 875, + "deletions": 523, + "timestamp": "2026-04-12T21:46:39+02:00" + }, + { + "hash": "03bcd5e", + "short": "fix(ui): update app icons for 12 modules", + "type": "fix", + "scope": "ui", + "additions": 12, + "deletions": 12, + "timestamp": "2026-04-12T21:48:09+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-12/macher.md b/devlog/2026-04-12/macher.md new file mode 100644 index 000000000..a3f8eb548 --- /dev/null +++ b/devlog/2026-04-12/macher.md @@ -0,0 +1,35 @@ +--- +date: 2026-04-12 +day: 81 +view: macher +weekday: Sonntag +commits: 18 +review: written +--- + +# Sonntag, 2026-04-12 — Tag 81 (Macher-Sicht) + +## Stats + +18 Commits, +8415 / −2447 LoC, 205 Files. Top-Dirs: `apps/mana/apps/web` (62%), `packages/shared-ui/src` (5%), `packages/shared-branding/src` (4%), `apps/api/src/modules` (3%), `packages/local-stt/src` (3%). Tags: web, ui, workbench, presi, todo. Session 12:15 → 19:48 (~113 aktive Min, längster Fokus 50 Min). + +## Commits + +- `474ba93` feat(workbench): dynamic page height + tighter bottom-stack spacing (+264/-145) +- `a9c5151` fix(presi): wire up db:push for presi schema via @mana/api (+105/-76) +- `8c2f930` feat(web): wallpaper system + sticky PageHeader (+1557/-66) +- `3deee75` feat(web): PillNav bar mode, fullscreen, local STT + mic button (+2145/-28) +- `248100d` fix(web): remove hardcoded white text, use theme tokens for light mode (+48/-33) +- `0deab50` feat(todo): minimal ListView redesign with floating input (+154/-219) +- `949795c` feat(web): shared FloatingInputBar, migrate 7 modules (+414/-401) +- `14d1127` fix(calendar): use button for event rows to fix a11y warnings (+7/-4) +- `631cdaf` feat(voice): route STT through local Whisper when model is loaded (+64/-6) +- `7314e9b` fix(docker): add local-stt package to mana-web Dockerfile (+1/-0) +- `d6a1c9f` feat(drink): add beverage tracking module with inline editing (+1446/-0) +- `c6c19db` feat(moodlit): fullscreen mood on click with visual card redesign (+403/-172) +- `a91a607` refactor: rename planta → plants, clean up codebase (+831/-707) +- `4616798` fix(calc): use safe evaluate engine in ListView, add error logging (+18/-22) +- `16fef57` fix(auth): use getValidToken() instead of getAccessToken() for API calls (+18/-18) +- `f47ea96` fix(ui): update app icons and add missing i18n labels (+53/-15) +- `55b7a8a` feat(pillnav): compact nav with user menu overlay panel (+875/-523) +- `03bcd5e` fix(ui): update app icons for 12 modules (+12/-12) diff --git a/devlog/2026-04-12/spieler.md b/devlog/2026-04-12/spieler.md new file mode 100644 index 000000000..dfdc750d6 --- /dev/null +++ b/devlog/2026-04-12/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-12 +day: 81 +view: spieler +weekday: Sonntag +commits: 18 +review: written +--- + +# Sonntag, 2026-04-12 — Tag 81 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- dynamic page height + tighter bottom-stack spacing +- wire up db:push for presi schema via @mana/api +- wallpaper system + sticky PageHeader +- PillNav bar mode, fullscreen, local STT + mic button +- remove hardcoded white text, use theme tokens for light mode diff --git a/devlog/2026-04-13/data.json b/devlog/2026-04-13/data.json new file mode 100644 index 000000000..373ef5ec4 --- /dev/null +++ b/devlog/2026-04-13/data.json @@ -0,0 +1,377 @@ +{ + "date": "2026-04-13", + "day_number": 82, + "weekday": "Montag", + "commits": 31, + "authors": [ + { + "name": "Till JS", + "count": 31 + } + ], + "additions": 27839, + "deletions": 1402, + "net_lines": 26437, + "files_changed": 230, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-13T14:07:42.000Z", + "last_commit_at": "2026-04-13T22:14:55.000Z", + "total_span_minutes": 487, + "active_minutes": 197, + "pauses": [ + { + "from": "16:45", + "to": "20:25", + "minutes": 220 + }, + { + "from": "20:47", + "to": "21:19", + "minutes": 32 + }, + { + "from": "21:23", + "to": "22:01", + "minutes": 38 + } + ], + "longest_focus_minutes": 133 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 80 + }, + { + "path": "services/mana-mail/src", + "pct": 6 + }, + { + "path": "packages/shared-branding/src", + "pct": 4 + }, + { + "path": "apps/mana/apps/landing", + "pct": 2 + }, + { + "path": "docs/architecture/COMPANION_BRAIN_ARCHITECTURE.md", + "pct": 1 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 225 + }, + { + "ext": ".svelte", + "count": 45 + }, + { + "ext": ".md", + "count": 13 + }, + { + "ext": ".astro", + "count": 6 + }, + { + "ext": ".sh", + "count": 2 + }, + { + "ext": ".json", + "count": 2 + } + ], + "tags": ["brain", "landing", "mail", "workbench", "recipes"], + "commits_list": [ + { + "hash": "aa3f5d6", + "short": "feat(landing): add /features USP page with ratings and comparison", + "type": "feat", + "scope": "landing", + "additions": 1032, + "deletions": 1, + "timestamp": "2026-04-13T16:07:42+02:00" + }, + { + "hash": "ca30874", + "short": "feat(landing): add simple/tech toggle on features page", + "type": "feat", + "scope": "landing", + "additions": 716, + "deletions": 215, + "timestamp": "2026-04-13T16:26:39+02:00" + }, + { + "hash": "e97d7d1", + "short": "refactor(landing): replace star ratings with flowing text summary", + "type": "refactor", + "scope": "landing", + "additions": 72, + "deletions": 224, + "timestamp": "2026-04-13T16:35:02+02:00" + }, + { + "hash": "bfa237d", + "short": "style(landing): make flow links subtler with underline instead of pills", + "type": "style", + "scope": "landing", + "additions": 5, + "deletions": 12, + "timestamp": "2026-04-13T16:39:22+02:00" + }, + { + "hash": "971ad37", + "short": "style(landing): use generic tool categories instead of brand names", + "type": "style", + "scope": "landing", + "additions": 8, + "deletions": 8, + "timestamp": "2026-04-13T16:43:35+02:00" + }, + { + "hash": "6516002", + "short": "feat(workbench): improve fullscreen, scene bar styling, and inline scene creation", + "type": "feat", + "scope": "workbench", + "additions": 242, + "deletions": 138, + "timestamp": "2026-04-13T16:45:09+02:00" + }, + { + "hash": "f5b9d0a", + "short": "feat(recipes): add recipe module with local-first data, encryption, and card UI", + "type": "feat", + "scope": "recipes", + "additions": 1453, + "deletions": 0, + "timestamp": "2026-04-13T16:45:41+02:00" + }, + { + "hash": "e927c1f", + "short": "feat(brain): add Domain Event Bus and emit events from 5 pilot modules", + "type": "feat", + "scope": "brain", + "additions": 2116, + "deletions": 3, + "timestamp": "2026-04-13T20:25:46+02:00" + }, + { + "hash": "aabf130", + "short": "feat(stretch): add stretch module with guided routines, assessment, and reminders", + "type": "feat", + "scope": "stretch", + "additions": 5341, + "deletions": 1, + "timestamp": "2026-04-13T20:29:06+02:00" + }, + { + "hash": "40e1145", + "short": "feat(brain): add Projection Engine with DaySnapshot, Streaks, and Context Document", + "type": "feat", + "scope": "brain", + "additions": 540, + "deletions": 0, + "timestamp": "2026-04-13T20:35:36+02:00" + }, + { + "hash": "a3de6b3", + "short": "feat(mail): add mana-mail service and frontend module (Phase 1 MVP)", + "type": "feat", + "scope": "mail", + "additions": 2908, + "deletions": 1, + "timestamp": "2026-04-13T20:35:54+02:00" + }, + { + "hash": "9066b6c", + "short": "feat(brain): add Goal system, Pulse Rule Engine, and Feedback Loop", + "type": "feat", + "scope": "brain", + "additions": 748, + "deletions": 0, + "timestamp": "2026-04-13T20:40:42+02:00" + }, + { + "hash": "a2f0540", + "short": "chore(mail): add infra — port 3042, DB schema setup, pnpm install", + "type": "chore", + "scope": "mail", + "additions": 304, + "deletions": 171, + "timestamp": "2026-04-13T20:42:12+02:00" + }, + { + "hash": "777810d", + "short": "docs(mail): add TODO checklist for remaining Phase 1-4 work", + "type": "docs", + "scope": "mail", + "additions": 40, + "deletions": 0, + "timestamp": "2026-04-13T20:46:00+02:00" + }, + { + "hash": "66dd684", + "short": "feat(brain): add Tool Layer with LLM-accessible module operations", + "type": "feat", + "scope": "brain", + "additions": 626, + "deletions": 0, + "timestamp": "2026-04-13T20:47:32+02:00" + }, + { + "hash": "1e992d3", + "short": "feat(sleep): add sleep module with tracking, hygiene checklists, and stats", + "type": "feat", + "scope": "sleep", + "additions": 2737, + "deletions": 2, + "timestamp": "2026-04-13T21:19:52+02:00" + }, + { + "hash": "46db527", + "short": "feat(brain): add Companion Chat module with LLM tool calling", + "type": "feat", + "scope": "brain", + "additions": 1100, + "deletions": 113, + "timestamp": "2026-04-13T21:23:38+02:00" + }, + { + "hash": "41357b2", + "short": "feat(brain): add Ritual system with guided routines and step execution", + "type": "feat", + "scope": "brain", + "additions": 1074, + "deletions": 0, + "timestamp": "2026-04-13T22:01:37+02:00" + }, + { + "hash": "87a1dd6", + "short": "feat(brain): add Semantic Memory, Pattern Extractors, and Correlation Engine", + "type": "feat", + "scope": "brain", + "additions": 670, + "deletions": 6, + "timestamp": "2026-04-13T22:07:46+02:00" + }, + { + "hash": "0847ec8", + "short": "docs(brain): update architecture plan with Phase 5-7 completion and testing guide", + "type": "docs", + "scope": "brain", + "additions": 232, + "deletions": 36, + "timestamp": "2026-04-13T22:11:04+02:00" + }, + { + "hash": "e1884cf", + "short": "fix(brain): fix companion page not rendering — schema version + query robustness", + "type": "fix", + "scope": "brain", + "additions": 42, + "deletions": 21, + "timestamp": "2026-04-13T22:19:59+02:00" + }, + { + "hash": "4211ce6", + "short": "feat(brain): add 4 Companion Brain workbench pages", + "type": "feat", + "scope": "brain", + "additions": 820, + "deletions": 0, + "timestamp": "2026-04-13T22:33:53+02:00" + }, + { + "hash": "c51382a", + "short": "feat(brain): add domain events + tools for habits, journal, notes, contacts, body", + "type": "feat", + "scope": "brain", + "additions": 480, + "deletions": 0, + "timestamp": "2026-04-13T22:48:15+02:00" + }, + { + "hash": "7752ba9", + "short": "feat(brain): add domain events + tools for finance, dreams, cards, times, events", + "type": "feat", + "scope": "brain", + "additions": 300, + "deletions": 0, + "timestamp": "2026-04-13T23:00:01+02:00" + }, + { + "hash": "c7de862", + "short": "feat(brain): add domain events + tools for music, storage, chat, memoro, skilltree", + "type": "feat", + "scope": "brain", + "additions": 251, + "deletions": 0, + "timestamp": "2026-04-13T23:07:34+02:00" + }, + { + "hash": "c95aaa4", + "short": "feat(brain): add domain events + tools for remaining 9 modules", + "type": "feat", + "scope": "brain", + "additions": 287, + "deletions": 0, + "timestamp": "2026-04-13T23:26:57+02:00" + }, + { + "hash": "6d7e4d0", + "short": "docs(brain): comprehensive status update — 29 modules, TODOs, architecture review", + "type": "docs", + "scope": "brain", + "additions": 101, + "deletions": 1, + "timestamp": "2026-04-13T23:28:01+02:00" + }, + { + "hash": "d6d50e4", + "short": "feat(brain): add meditate+sleep, parallelize DaySnapshot, deprecate _activity", + "type": "feat", + "scope": "brain", + "additions": 1941, + "deletions": 94, + "timestamp": "2026-04-13T23:37:33+02:00" + }, + { + "hash": "677f6b7", + "short": "feat(brain): add NudgeToast, server LLM fallback, trigger-event bridge", + "type": "feat", + "scope": "brain", + "additions": 509, + "deletions": 239, + "timestamp": "2026-04-13T23:45:37+02:00" + }, + { + "hash": "399e927", + "short": "feat(brain): add Goal Editor UI and event-driven incremental streaks", + "type": "feat", + "scope": "brain", + "additions": 465, + "deletions": 108, + "timestamp": "2026-04-13T23:52:45+02:00" + }, + { + "hash": "5ae7899", + "short": "test(brain): add 29 unit tests for Event Bus, Tools, Goals, Streaks, Correlations", + "type": "test", + "scope": "brain", + "additions": 679, + "deletions": 8, + "timestamp": "2026-04-14T00:14:55+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-13/macher.md b/devlog/2026-04-13/macher.md new file mode 100644 index 000000000..5149a2730 --- /dev/null +++ b/devlog/2026-04-13/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-13 +day: 82 +view: macher +weekday: Montag +commits: 31 +review: written +--- + +# Montag, 2026-04-13 — Tag 82 (Macher-Sicht) + +## Stats + +31 Commits, +27839 / −1402 LoC, 230 Files. Top-Dirs: `apps/mana/apps/web` (80%), `services/mana-mail/src` (6%), `packages/shared-branding/src` (4%), `apps/mana/apps/landing` (2%), `docs/architecture/COMPANION_BRAIN_ARCHITECTURE.md` (1%). Tags: brain, landing, mail, workbench, recipes. Session 14:07 → 22:14 (~197 aktive Min, längster Fokus 133 Min). + +## Commits + +- `aa3f5d6` feat(landing): add /features USP page with ratings and comparison (+1032/-1) +- `ca30874` feat(landing): add simple/tech toggle on features page (+716/-215) +- `e97d7d1` refactor(landing): replace star ratings with flowing text summary (+72/-224) +- `bfa237d` style(landing): make flow links subtler with underline instead of pills (+5/-12) +- `971ad37` style(landing): use generic tool categories instead of brand names (+8/-8) +- `6516002` feat(workbench): improve fullscreen, scene bar styling, and inline scene creation (+242/-138) +- `f5b9d0a` feat(recipes): add recipe module with local-first data, encryption, and card UI (+1453/-0) +- `e927c1f` feat(brain): add Domain Event Bus and emit events from 5 pilot modules (+2116/-3) +- `aabf130` feat(stretch): add stretch module with guided routines, assessment, and reminders (+5341/-1) +- `40e1145` feat(brain): add Projection Engine with DaySnapshot, Streaks, and Context Document (+540/-0) +- `a3de6b3` feat(mail): add mana-mail service and frontend module (Phase 1 MVP) (+2908/-1) +- `9066b6c` feat(brain): add Goal system, Pulse Rule Engine, and Feedback Loop (+748/-0) +- `a2f0540` chore(mail): add infra — port 3042, DB schema setup, pnpm install (+304/-171) +- `777810d` docs(mail): add TODO checklist for remaining Phase 1-4 work (+40/-0) +- `66dd684` feat(brain): add Tool Layer with LLM-accessible module operations (+626/-0) +- `1e992d3` feat(sleep): add sleep module with tracking, hygiene checklists, and stats (+2737/-2) +- `46db527` feat(brain): add Companion Chat module with LLM tool calling (+1100/-113) +- `41357b2` feat(brain): add Ritual system with guided routines and step execution (+1074/-0) +- `87a1dd6` feat(brain): add Semantic Memory, Pattern Extractors, and Correlation Engine (+670/-6) +- `0847ec8` docs(brain): update architecture plan with Phase 5-7 completion and testing guide (+232/-36) + +_… plus 11 weitere Commits._ diff --git a/devlog/2026-04-13/spieler.md b/devlog/2026-04-13/spieler.md new file mode 100644 index 000000000..d2d5f9739 --- /dev/null +++ b/devlog/2026-04-13/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-13 +day: 82 +view: spieler +weekday: Montag +commits: 31 +review: written +--- + +# Montag, 2026-04-13 — Tag 82 + +Großer Sprint-Tag mit Schwerpunkt **apps** (31 Commits). + +## Highlights + +- add /features USP page with ratings and comparison +- add simple/tech toggle on features page +- make flow links subtler with underline instead of pills +- use generic tool categories instead of brand names +- improve fullscreen, scene bar styling, and inline scene creation diff --git a/devlog/2026-04-14/data.json b/devlog/2026-04-14/data.json new file mode 100644 index 000000000..826302687 --- /dev/null +++ b/devlog/2026-04-14/data.json @@ -0,0 +1,908 @@ +{ + "date": "2026-04-14", + "day_number": 83, + "weekday": "Dienstag", + "commits": 90, + "authors": [ + { + "name": "Till JS", + "count": 90 + } + ], + "additions": 26067, + "deletions": 6969, + "net_lines": 19098, + "files_changed": 602, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-14T11:28:16.000Z", + "last_commit_at": "2026-04-14T23:53:37.000Z", + "total_span_minutes": 745, + "active_minutes": 553, + "pauses": [ + { + "from": "18:12", + "to": "19:42", + "minutes": 90 + }, + { + "from": "21:34", + "to": "22:25", + "minutes": 51 + }, + { + "from": "22:30", + "to": "23:21", + "minutes": 51 + } + ], + "longest_focus_minutes": 284 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 49 + }, + { + "path": "apps/mana/apps/landing", + "pct": 8 + }, + { + "path": "services/mana-ai/src", + "pct": 4 + }, + { + "path": "packages/shared-ui/src", + "pct": 3 + }, + { + "path": "packages/shared-branding/src", + "pct": 2 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 362 + }, + { + "ext": ".md", + "count": 150 + }, + { + "ext": ".svelte", + "count": 131 + }, + { + "ext": ".json", + "count": 80 + }, + { + "ext": ".mdx", + "count": 15 + }, + { + "ext": ".astro", + "count": 15 + } + ], + "tags": ["ai", "sync", "mana-ai", "brain", "shared-ui"], + "commits_list": [ + { + "hash": "daa5aaf", + "short": "fix(brain): companion chat — markdown rendering, loading status, streaming feedback", + "type": "fix", + "scope": "brain", + "additions": 122, + "deletions": 5, + "timestamp": "2026-04-14T13:28:16+02:00" + }, + { + "hash": "77d455a", + "short": "fix(brain): companion can now actually list tasks instead of hallucinating", + "type": "fix", + "scope": "brain", + "additions": 74, + "deletions": 7, + "timestamp": "2026-04-14T13:31:13+02:00" + }, + { + "hash": "51c8a52", + "short": "fix(brain): companion can now act on previous tool results across turns", + "type": "fix", + "scope": "brain", + "additions": 100, + "deletions": 20, + "timestamp": "2026-04-14T13:41:43+02:00" + }, + { + "hash": "9ff2cfc", + "short": "feat(workbench): unify system pages as workbench apps + categorize picker", + "type": "feat", + "scope": "workbench", + "additions": 2812, + "deletions": 334, + "timestamp": "2026-04-14T13:48:44+02:00" + }, + { + "hash": "4192a4b", + "short": "feat(brain): emit Companion chat + tool events for observability", + "type": "feat", + "scope": "brain", + "additions": 73, + "deletions": 1, + "timestamp": "2026-04-14T13:54:43+02:00" + }, + { + "hash": "4b2007e", + "short": "fix(pwa): wire up manifest link + SW registration so install prompt works", + "type": "fix", + "scope": "pwa", + "additions": 56, + "deletions": 56, + "timestamp": "2026-04-14T14:05:49+02:00" + }, + { + "hash": "e885713", + "short": "refactor(brain): migrate Companion engine to LlmOrchestrator (4-tier system)", + "type": "refactor", + "scope": "brain", + "additions": 90, + "deletions": 64, + "timestamp": "2026-04-14T14:09:57+02:00" + }, + { + "hash": "180e07d", + "short": "feat(credits): admin-gifted sync subscriptions", + "type": "feat", + "scope": "credits", + "additions": 159, + "deletions": 1, + "timestamp": "2026-04-14T14:11:07+02:00" + }, + { + "hash": "c357a1c", + "short": "feat(brain): AI tier selector in Companion chat toolbar", + "type": "feat", + "scope": "brain", + "additions": 83, + "deletions": 0, + "timestamp": "2026-04-14T14:15:30+02:00" + }, + { + "hash": "b196e77", + "short": "perf(web): idle-defer non-critical (app) init + lazy-load modals", + "type": "perf", + "scope": "web", + "additions": 153, + "deletions": 62, + "timestamp": "2026-04-14T14:41:27+02:00" + }, + { + "hash": "3817111", + "short": "feat(themes): redesign theme picker with gradient cards + beefy mode selector", + "type": "feat", + "scope": "themes", + "additions": 254, + "deletions": 23, + "timestamp": "2026-04-14T14:58:10+02:00" + }, + { + "hash": "a33857f", + "short": "feat(llm): add BYOK tier + 4 provider adapters (OpenAI, Anthropic, Gemini, Mistral)", + "type": "feat", + "scope": "llm", + "additions": 1026, + "deletions": 11, + "timestamp": "2026-04-14T15:06:48+02:00" + }, + { + "hash": "db8c257", + "short": "feat(byok): IndexedDB vault + settings UI for user API keys", + "type": "feat", + "scope": "byok", + "additions": 935, + "deletions": 153, + "timestamp": "2026-04-14T15:14:00+02:00" + }, + { + "hash": "7c6567a", + "short": "perf(web): re-apply (app) layout idle-defer + lazy modals after BYOK merge", + "type": "perf", + "scope": "web", + "additions": 154, + "deletions": 63, + "timestamp": "2026-04-14T15:22:31+02:00" + }, + { + "hash": "e4f0a41", + "short": "test(byok): add 35 unit tests + update docs to as-built status", + "type": "test", + "scope": "byok", + "additions": 614, + "deletions": 23, + "timestamp": "2026-04-14T15:23:03+02:00" + }, + { + "hash": "79996f9", + "short": "feat(sync): schemaVersion + eventId on wire (M2 protocol hardening)", + "type": "feat", + "scope": "sync", + "additions": 301, + "deletions": 76, + "timestamp": "2026-04-14T15:25:32+02:00" + }, + { + "hash": "ceb5f72", + "short": "feat(sync): wire /backup/export route + client + settings UI (M1 tail)", + "type": "feat", + "scope": "sync", + "additions": 115, + "deletions": 0, + "timestamp": "2026-04-14T15:26:30+02:00" + }, + { + "hash": "f5cb833", + "short": "perf(workbench): lazy-mount carousel cards via IntersectionObserver", + "type": "perf", + "scope": "workbench", + "additions": 82, + "deletions": 2, + "timestamp": "2026-04-14T15:27:32+02:00" + }, + { + "hash": "53b3746", + "short": "refactor: rename nutriphi module to food (Essen)", + "type": null, + "scope": null, + "additions": 862, + "deletions": 718, + "timestamp": "2026-04-14T15:30:07+02:00" + }, + { + "hash": "1249cc4", + "short": "feat(sync): backup as .mana zip with manifest + sha256 (M3)", + "type": "feat", + "scope": "sync", + "additions": 20, + "deletions": 15, + "timestamp": "2026-04-14T15:49:47+02:00" + }, + { + "hash": "aa29ad8", + "short": "chore: refresh pnpm-lock after nutriphi -> food rename", + "type": null, + "scope": null, + "additions": 63, + "deletions": 63, + "timestamp": "2026-04-14T15:51:51+02:00" + }, + { + "hash": "e95d048", + "short": "perf(workbench): split SceneAppBar registration from prop updates", + "type": "perf", + "scope": "workbench", + "additions": 37, + "deletions": 12, + "timestamp": "2026-04-14T16:13:32+02:00" + }, + { + "hash": "cf9f4ec", + "short": "fix(llm): per-task tier override bypasses global allowedTiers gate", + "type": "fix", + "scope": "llm", + "additions": 28, + "deletions": 14, + "timestamp": "2026-04-14T16:19:50+02:00" + }, + { + "hash": "7aee552", + "short": "feat(sync): .mana backup import — zip parser + replay (M4a)", + "type": "feat", + "scope": "sync", + "additions": 594, + "deletions": 1, + "timestamp": "2026-04-14T16:49:08+02:00" + }, + { + "hash": "e219d38", + "short": "test(sync): 8 vitest cases for .mana zip parser", + "type": "test", + "scope": "sync", + "additions": 231, + "deletions": 0, + "timestamp": "2026-04-14T16:51:47+02:00" + }, + { + "hash": "d5cabed", + "short": "perf(shared-icons): mark package as side-effect-free for tree-shaking", + "type": "perf", + "scope": "shared-icons", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-14T17:16:19+02:00" + }, + { + "hash": "cf3d93f", + "short": "test(sync): extract WriteBackup + 4 Go integration tests", + "type": "test", + "scope": "sync", + "additions": 406, + "deletions": 139, + "timestamp": "2026-04-14T17:44:37+02:00" + }, + { + "hash": "4f33435", + "short": "docs(sync): document backup/restore pipeline + stability contract", + "type": "docs", + "scope": "sync", + "additions": 121, + "deletions": 7, + "timestamp": "2026-04-14T17:48:47+02:00" + }, + { + "hash": "f0233b8", + "short": "perf(shared-pkgs): declare sideEffects for aggressive tree-shaking", + "type": "perf", + "scope": "shared-pkgs", + "additions": 18, + "deletions": 0, + "timestamp": "2026-04-14T18:12:22+02:00" + }, + { + "hash": "66cda80", + "short": "feat(settings): inline BYOK key manager under AI tier card", + "type": "feat", + "scope": "settings", + "additions": 278, + "deletions": 324, + "timestamp": "2026-04-14T19:42:40+02:00" + }, + { + "hash": "b857063", + "short": "refactor: rename eventstream -> activity, cycles -> period", + "type": null, + "scope": null, + "additions": 698, + "deletions": 674, + "timestamp": "2026-04-14T19:45:43+02:00" + }, + { + "hash": "7c1c6cd", + "short": "chore(audit): module complexity reports + workbench map", + "type": "chore", + "scope": "audit", + "additions": 1453, + "deletions": 0, + "timestamp": "2026-04-14T19:47:42+02:00" + }, + { + "hash": "d11f6ae", + "short": "chore: ignore vite-plugin-pwa dev-dist output", + "type": null, + "scope": null, + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-14T19:50:03+02:00" + }, + { + "hash": "73e3fdb", + "short": "feat(meditate): add meditation module with presets, sessions, breathing UI", + "type": "feat", + "scope": "meditate", + "additions": 2161, + "deletions": 0, + "timestamp": "2026-04-14T19:50:13+02:00" + }, + { + "hash": "f36da05", + "short": "docs: add Context Intelligence research report", + "type": null, + "scope": null, + "additions": 199, + "deletions": 0, + "timestamp": "2026-04-14T19:50:25+02:00" + }, + { + "hash": "93bb94a", + "short": "fix(types): drop .ts extensions + narrow Uint8Array buffer type", + "type": "fix", + "scope": "types", + "additions": 8, + "deletions": 8, + "timestamp": "2026-04-14T20:07:22+02:00" + }, + { + "hash": "9a6ccf5", + "short": "fix(a11y): clear pre-push svelte-check warnings", + "type": "fix", + "scope": "a11y", + "additions": 11, + "deletions": 1, + "timestamp": "2026-04-14T20:12:14+02:00" + }, + { + "hash": "66f8e86", + "short": "fix(web): add missing pako dep for backup import", + "type": "fix", + "scope": "web", + "additions": 163, + "deletions": 270, + "timestamp": "2026-04-14T20:29:31+02:00" + }, + { + "hash": "bb278fb", + "short": "fix(types): use .js extensions for shared-types re-exports", + "type": "fix", + "scope": "types", + "additions": 7, + "deletions": 7, + "timestamp": "2026-04-14T20:44:18+02:00" + }, + { + "hash": "2fb2bb6", + "short": "feat(kontext): singleton markdown doc with inline editor", + "type": "feat", + "scope": "kontext", + "additions": 433, + "deletions": 0, + "timestamp": "2026-04-14T20:46:04+02:00" + }, + { + "hash": "a18506c", + "short": "feat(events): Actor attribution on every DomainEvent", + "type": "feat", + "scope": "events", + "additions": 257, + "deletions": 21, + "timestamp": "2026-04-14T20:48:03+02:00" + }, + { + "hash": "d1a0d09", + "short": "feat(data): stamp actor on records and pending changes via Dexie hooks", + "type": "feat", + "scope": "data", + "additions": 67, + "deletions": 15, + "timestamp": "2026-04-14T20:48:30+02:00" + }, + { + "hash": "e38257b", + "short": "feat(ai): policy-gated tool executor with pendingProposals lifecycle", + "type": "feat", + "scope": "ai", + "additions": 715, + "deletions": 19, + "timestamp": "2026-04-14T20:48:53+02:00" + }, + { + "hash": "513e3c7", + "short": "fix(types): enable allowImportingTsExtensions, restore .ts on shared-types", + "type": "fix", + "scope": "types", + "additions": 8, + "deletions": 7, + "timestamp": "2026-04-14T20:54:35+02:00" + }, + { + "hash": "7a1f11c", + "short": "feat(ai): inline proposal inbox in the todo module", + "type": "feat", + "scope": "ai", + "additions": 339, + "deletions": 0, + "timestamp": "2026-04-14T20:58:46+02:00" + }, + { + "hash": "851a281", + "short": "refactor: rename zitare -> quotes (Zitate)", + "type": null, + "scope": null, + "additions": 836, + "deletions": 721, + "timestamp": "2026-04-14T20:59:16+02:00" + }, + { + "hash": "0f3fd4e", + "short": "docs(ai): document Actor attribution + AI Workbench pilot", + "type": "docs", + "scope": "ai", + "additions": 174, + "deletions": 2, + "timestamp": "2026-04-14T21:05:30+02:00" + }, + { + "hash": "d7bf8a2", + "short": "feat(ai): Mission datamodel — long-lived autonomous work items", + "type": "feat", + "scope": "ai", + "additions": 635, + "deletions": 0, + "timestamp": "2026-04-14T21:10:19+02:00" + }, + { + "hash": "72d5c70", + "short": "feat(ai): Mission Planner LLM task + prompt/parser", + "type": "feat", + "scope": "ai", + "additions": 548, + "deletions": 0, + "timestamp": "2026-04-14T21:16:10+02:00" + }, + { + "hash": "1c6201b", + "short": "feat(ai): MissionRunner — orchestrates Planner + proposal staging", + "type": "feat", + "scope": "ai", + "additions": 511, + "deletions": 0, + "timestamp": "2026-04-14T21:20:29+02:00" + }, + { + "hash": "7535480", + "short": "feat(ai): production wiring for Mission Runner + default input resolvers", + "type": "feat", + "scope": "ai", + "additions": 228, + "deletions": 0, + "timestamp": "2026-04-14T21:24:13+02:00" + }, + { + "hash": "b7a76ca", + "short": "docs(ai): mark Planner + Runner (Steps 4+5) as done in Workbench roadmap", + "type": "docs", + "scope": "ai", + "additions": 11, + "deletions": 4, + "timestamp": "2026-04-14T21:24:51+02:00" + }, + { + "hash": "3a8c019", + "short": "feat(ai): Missions UI under /companion/missions", + "type": "feat", + "scope": "ai", + "additions": 740, + "deletions": 0, + "timestamp": "2026-04-14T21:34:11+02:00" + }, + { + "hash": "41052f7", + "short": "feat(ai): input picker — link notes / kontext / goals to a Mission", + "type": "feat", + "scope": "ai", + "additions": 398, + "deletions": 2, + "timestamp": "2026-04-14T22:25:07+02:00" + }, + { + "hash": "bf6b9cd", + "short": "docs(ai): mark Missions UI + input picker (Step 6) done; document resolver/indexer symmetry", + "type": "docs", + "scope": "ai", + "additions": 22, + "deletions": 4, + "timestamp": "2026-04-14T22:30:20+02:00" + }, + { + "hash": "2fe9522", + "short": "feat(ai): Workbench timeline — cross-module AI activity lens", + "type": "feat", + "scope": "ai", + "additions": 473, + "deletions": 0, + "timestamp": "2026-04-14T23:21:04+02:00" + }, + { + "hash": "90e6d4d", + "short": "refactor(projections): wrap streak-tracker writes in system actor", + "type": "refactor", + "scope": "projections", + "additions": 21, + "deletions": 12, + "timestamp": "2026-04-14T23:23:16+02:00" + }, + { + "hash": "6425135", + "short": "docs(ai): mark Workbench + projection system-actor done; renumber roadmap", + "type": "docs", + "scope": "ai", + "additions": 9, + "deletions": 2, + "timestamp": "2026-04-14T23:23:41+02:00" + }, + { + "hash": "bfa1c02", + "short": "feat(mana-sync): persist actor JSON on every sync_changes row", + "type": "feat", + "scope": "mana-sync", + "additions": 123, + "deletions": 18, + "timestamp": "2026-04-14T23:31:01+02:00" + }, + { + "hash": "615b1c2", + "short": "feat(sync): thread actor through webapp sync client", + "type": "feat", + "scope": "sync", + "additions": 24, + "deletions": 1, + "timestamp": "2026-04-14T23:35:08+02:00" + }, + { + "hash": "5922abb", + "short": "feat(sync): stamp __lastActor + __fieldActors on incoming server changes", + "type": "feat", + "scope": "sync", + "additions": 49, + "deletions": 3, + "timestamp": "2026-04-14T23:37:19+02:00" + }, + { + "hash": "5c53c6d", + "short": "docs(ai): mark Step 8 (mana-sync actor field) done; document sync_changes.actor", + "type": "docs", + "scope": "ai", + "additions": 13, + "deletions": 2, + "timestamp": "2026-04-14T23:37:55+02:00" + }, + { + "hash": "b9710e6", + "short": "feat(mana-ai): scaffold server-side Mission Runner (v0.1)", + "type": "feat", + "scope": "mana-ai", + "additions": 636, + "deletions": 0, + "timestamp": "2026-04-14T23:48:30+02:00" + }, + { + "hash": "1191952", + "short": "docs(ai): mark Step 9 scaffolded; register mana-ai in root services list", + "type": "docs", + "scope": "ai", + "additions": 10, + "deletions": 2, + "timestamp": "2026-04-14T23:49:22+02:00" + }, + { + "hash": "0d90b12", + "short": "feat(shared-ai): extract planner + mission types to @mana/shared-ai", + "type": "feat", + "scope": "shared-ai", + "additions": 724, + "deletions": 625, + "timestamp": "2026-04-15T00:01:57+02:00" + }, + { + "hash": "203fe3e", + "short": "feat(mana-ai): wire shared-ai planner + real mana-llm calls (v0.2)", + "type": "feat", + "scope": "mana-ai", + "additions": 185, + "deletions": 27, + "timestamp": "2026-04-15T00:06:22+02:00" + }, + { + "hash": "7e17142", + "short": "docs(mana-ai): bump status to v0.2 — plans end-to-end, write-back open", + "type": "docs", + "scope": "mana-ai", + "additions": 9, + "deletions": 8, + "timestamp": "2026-04-15T00:07:01+02:00" + }, + { + "hash": "5e01763", + "short": "feat(ai): close the loop — server write-back + webapp staging effect", + "type": "feat", + "scope": "ai", + "additions": 522, + "deletions": 43, + "timestamp": "2026-04-15T00:29:30+02:00" + }, + { + "hash": "39b24b2", + "short": "docs(ai): mark Step 9 complete — close-the-loop shipped in v0.3", + "type": "docs", + "scope": "ai", + "additions": 27, + "deletions": 20, + "timestamp": "2026-04-15T00:30:31+02:00" + }, + { + "hash": "a842594", + "short": "feat(mana-ai): server-side input resolvers (goals for now)", + "type": "feat", + "scope": "mana-ai", + "additions": 281, + "deletions": 10, + "timestamp": "2026-04-15T00:42:45+02:00" + }, + { + "hash": "4b67316", + "short": "feat(ai): add tasks + calendar events as Mission inputs (webapp side)", + "type": "feat", + "scope": "ai", + "additions": 103, + "deletions": 0, + "timestamp": "2026-04-15T00:44:59+02:00" + }, + { + "hash": "dccd9c5", + "short": "docs(mana-ai): server-side resolvers shipped; document plaintext-only scope", + "type": "docs", + "scope": "mana-ai", + "additions": 1, + "deletions": 2, + "timestamp": "2026-04-15T00:45:39+02:00" + }, + { + "hash": "4be5e29", + "short": "feat(shared-ai): canonical proposable-tool list + drift guard on mana-ai", + "type": "feat", + "scope": "shared-ai", + "additions": 163, + "deletions": 36, + "timestamp": "2026-04-15T00:52:38+02:00" + }, + { + "hash": "4d6e6e6", + "short": "feat(mana-web): keyboard shortcuts for workbench + nav bars", + "type": "feat", + "scope": "mana-web", + "additions": 174, + "deletions": 37, + "timestamp": "2026-04-15T00:53:42+02:00" + }, + { + "hash": "9bc44c0", + "short": "feat(ai): roll out AiProposalInbox to calendar / places / drink / food", + "type": "feat", + "scope": "ai", + "additions": 15, + "deletions": 0, + "timestamp": "2026-04-15T00:54:59+02:00" + }, + { + "hash": "98547b9", + "short": "feat(ai): freitext feedback on proposal rejection", + "type": "feat", + "scope": "ai", + "additions": 97, + "deletions": 24, + "timestamp": "2026-04-15T00:56:39+02:00" + }, + { + "hash": "ce64655", + "short": "fix(ai): bubble proposal-reject feedback into Mission iteration", + "type": "fix", + "scope": "ai", + "additions": 23, + "deletions": 0, + "timestamp": "2026-04-15T00:57:25+02:00" + }, + { + "hash": "b03bbe1", + "short": "feat(shared-ui): unify bottom-stack bars with shared Pill component", + "type": "feat", + "scope": "shared-ui", + "additions": 467, + "deletions": 460, + "timestamp": "2026-04-15T00:58:46+02:00" + }, + { + "hash": "ad1659f", + "short": "refactor(mana-ai): RLS-scope mission reads via per-user two-phase query", + "type": "refactor", + "scope": "mana-ai", + "additions": 205, + "deletions": 25, + "timestamp": "2026-04-15T01:06:17+02:00" + }, + { + "hash": "24eb8b3", + "short": "refactor(shared-ui): extract search-core for highlight + debounce", + "type": "refactor", + "scope": "shared-ui", + "additions": 161, + "deletions": 204, + "timestamp": "2026-04-15T01:06:37+02:00" + }, + { + "hash": "9bc77dd", + "short": "docs(mana-ai): contract test + RLS scoping shipped; narrow remaining work", + "type": "docs", + "scope": "mana-ai", + "additions": 1, + "deletions": 2, + "timestamp": "2026-04-15T01:07:10+02:00" + }, + { + "hash": "99efb93", + "short": "refactor(arcade, shared-ui): migrate CommandBar to GlobalSpotlight, delete CommandBar", + "type": "refactor", + "scope": "arcade, shared-ui", + "additions": 63, + "deletions": 1171, + "timestamp": "2026-04-15T01:17:55+02:00" + }, + { + "hash": "ad5f670", + "short": "feat(ai): revert-per-iteration button in the Workbench timeline", + "type": "feat", + "scope": "ai", + "additions": 346, + "deletions": 2, + "timestamp": "2026-04-15T01:18:14+02:00" + }, + { + "hash": "a047f6c", + "short": "docs(ai): Revert-per-iteration shipped in Workbench", + "type": "docs", + "scope": "ai", + "additions": 4, + "deletions": 1, + "timestamp": "2026-04-15T01:19:16+02:00" + }, + { + "hash": "5d4bf20", + "short": "refactor(shared-ui): migrate PillNav nav items to shared Pill component", + "type": "refactor", + "scope": "shared-ui", + "additions": 94, + "deletions": 89, + "timestamp": "2026-04-15T01:25:18+02:00" + }, + { + "hash": "8fd9b7d", + "short": "perf(mana-ai): materialize mission snapshots, drop per-tick full replay", + "type": "perf", + "scope": "mana-ai", + "additions": 314, + "deletions": 51, + "timestamp": "2026-04-15T01:28:24+02:00" + }, + { + "hash": "5ca5976", + "short": "docs(ai): materialized snapshot shipped, roadmap functionally complete", + "type": "docs", + "scope": "ai", + "additions": 13, + "deletions": 5, + "timestamp": "2026-04-15T01:29:31+02:00" + }, + { + "hash": "767b64c", + "short": "refactor(shared-ui): migrate remaining PillNav triggers to Pill", + "type": "refactor", + "scope": "shared-ui", + "additions": 36, + "deletions": 129, + "timestamp": "2026-04-15T01:31:30+02:00" + }, + { + "hash": "0bf01f4", + "short": "feat(mana-ai): Prometheus /metrics endpoint + status.mana.how integration", + "type": "feat", + "scope": "mana-ai", + "additions": 184, + "deletions": 3, + "timestamp": "2026-04-15T01:41:40+02:00" + }, + { + "hash": "ce944ef", + "short": "docs(ai): document observability + Revert + full scope in webapp CLAUDE.md", + "type": "docs", + "scope": "ai", + "additions": 12, + "deletions": 6, + "timestamp": "2026-04-15T01:53:37+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-14/macher.md b/devlog/2026-04-14/macher.md new file mode 100644 index 000000000..718e0a483 --- /dev/null +++ b/devlog/2026-04-14/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-14 +day: 83 +view: macher +weekday: Dienstag +commits: 90 +review: written +--- + +# Dienstag, 2026-04-14 — Tag 83 (Macher-Sicht) + +## Stats + +90 Commits, +26067 / −6969 LoC, 602 Files. Top-Dirs: `apps/mana/apps/web` (49%), `apps/mana/apps/landing` (8%), `services/mana-ai/src` (4%), `packages/shared-ui/src` (3%), `packages/shared-branding/src` (2%). Tags: ai, sync, mana-ai, brain, shared-ui. Session 11:28 → 23:53 (~553 aktive Min, längster Fokus 284 Min). + +## Commits + +- `daa5aaf` fix(brain): companion chat — markdown rendering, loading status, streaming feedback (+122/-5) +- `77d455a` fix(brain): companion can now actually list tasks instead of hallucinating (+74/-7) +- `51c8a52` fix(brain): companion can now act on previous tool results across turns (+100/-20) +- `9ff2cfc` feat(workbench): unify system pages as workbench apps + categorize picker (+2812/-334) +- `4192a4b` feat(brain): emit Companion chat + tool events for observability (+73/-1) +- `4b2007e` fix(pwa): wire up manifest link + SW registration so install prompt works (+56/-56) +- `e885713` refactor(brain): migrate Companion engine to LlmOrchestrator (4-tier system) (+90/-64) +- `180e07d` feat(credits): admin-gifted sync subscriptions (+159/-1) +- `c357a1c` feat(brain): AI tier selector in Companion chat toolbar (+83/-0) +- `b196e77` perf(web): idle-defer non-critical (app) init + lazy-load modals (+153/-62) +- `3817111` feat(themes): redesign theme picker with gradient cards + beefy mode selector (+254/-23) +- `a33857f` feat(llm): add BYOK tier + 4 provider adapters (OpenAI, Anthropic, Gemini, Mistral) (+1026/-11) +- `db8c257` feat(byok): IndexedDB vault + settings UI for user API keys (+935/-153) +- `7c6567a` perf(web): re-apply (app) layout idle-defer + lazy modals after BYOK merge (+154/-63) +- `e4f0a41` test(byok): add 35 unit tests + update docs to as-built status (+614/-23) +- `79996f9` feat(sync): schemaVersion + eventId on wire (M2 protocol hardening) (+301/-76) +- `ceb5f72` feat(sync): wire /backup/export route + client + settings UI (M1 tail) (+115/-0) +- `f5cb833` perf(workbench): lazy-mount carousel cards via IntersectionObserver (+82/-2) +- `53b3746` refactor: rename nutriphi module to food (Essen) (+862/-718) +- `1249cc4` feat(sync): backup as .mana zip with manifest + sha256 (M3) (+20/-15) + +_… plus 70 weitere Commits._ diff --git a/devlog/2026-04-14/spieler.md b/devlog/2026-04-14/spieler.md new file mode 100644 index 000000000..b2050ea7c --- /dev/null +++ b/devlog/2026-04-14/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-14 +day: 83 +view: spieler +weekday: Dienstag +commits: 90 +review: written +--- + +# Dienstag, 2026-04-14 — Tag 83 + +Großer Sprint-Tag mit Schwerpunkt **apps** (90 Commits). + +## Highlights + +- companion chat — markdown rendering, loading status, streaming feedback +- companion can now actually list tasks instead of hallucinating +- companion can now act on previous tool results across turns +- unify system pages as workbench apps + categorize picker +- emit Companion chat + tool events for observability diff --git a/devlog/2026-04-15/data.json b/devlog/2026-04-15/data.json new file mode 100644 index 000000000..3685704b5 --- /dev/null +++ b/devlog/2026-04-15/data.json @@ -0,0 +1,837 @@ +{ + "date": "2026-04-15", + "day_number": 84, + "weekday": "Mittwoch", + "commits": 81, + "authors": [ + { + "name": "Till JS", + "count": 81 + } + ], + "additions": 22946, + "deletions": 7192, + "net_lines": 15754, + "files_changed": 335, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-15T11:11:16.000Z", + "last_commit_at": "2026-04-15T23:10:10.000Z", + "total_span_minutes": 719, + "active_minutes": 407, + "pauses": [ + { + "from": "15:51", + "to": "18:09", + "minutes": 137 + }, + { + "from": "18:18", + "to": "18:51", + "minutes": 33 + }, + { + "from": "19:42", + "to": "20:13", + "minutes": 31 + }, + { + "from": "20:54", + "to": "21:24", + "minutes": 31 + }, + { + "from": "22:56", + "to": "00:16", + "minutes": 80 + } + ], + "longest_focus_minutes": 161 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 59 + }, + { + "path": "packages/shared-ai/src", + "pct": 8 + }, + { + "path": "services/mana-ai/src", + "pct": 7 + }, + { + "path": "packages/shared-ui/src", + "pct": 5 + }, + { + "path": "packages/shared-auth-ui/src", + "pct": 2 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 206 + }, + { + "ext": ".ts", + "count": 190 + }, + { + "ext": ".md", + "count": 21 + }, + { + "ext": ".json", + "count": 13 + }, + { + "ext": ".yml", + "count": 7 + }, + { + "ext": "", + "count": 6 + } + ], + "tags": ["ai", "workbench", "ai-missions", "dev", "infra"], + "commits_list": [ + { + "hash": "9686198", + "short": "feat(companion): refactor into PageCarousel — every AI feature is a page", + "type": "feat", + "scope": "companion", + "additions": 2795, + "deletions": 1635, + "timestamp": "2026-04-15T13:11:16+02:00" + }, + { + "hash": "37e39a5", + "short": "feat(ai): AI features as top-level workbench apps (not sub-routes)", + "type": "feat", + "scope": "ai", + "additions": 927, + "deletions": 1732, + "timestamp": "2026-04-15T13:23:20+02:00" + }, + { + "hash": "9809b06", + "short": "feat(app-registry): new 'AI' category at top of the app picker", + "type": "feat", + "scope": "app-registry", + "additions": 24, + "deletions": 11, + "timestamp": "2026-04-15T13:34:07+02:00" + }, + { + "hash": "6882ffb", + "short": "feat(shared-ai): Mission Key-Grant contract + plan for encrypted server-side runs", + "type": "feat", + "scope": "shared-ai", + "additions": 610, + "deletions": 0, + "timestamp": "2026-04-15T13:41:35+02:00" + }, + { + "hash": "9a3025f", + "short": "feat(ai,auth): Mission Grant endpoint + unwrap helper + audit table", + "type": "feat", + "scope": "ai,auth", + "additions": 1203, + "deletions": 152, + "timestamp": "2026-04-15T13:41:59+02:00" + }, + { + "hash": "a6d51af", + "short": "feat(mana-ai): encrypted resolver + tick uses Mission Grant to decrypt scoped inputs", + "type": "feat", + "scope": "mana-ai", + "additions": 818, + "deletions": 21, + "timestamp": "2026-04-15T13:42:31+02:00" + }, + { + "hash": "394931e", + "short": "fix(ai-missions): strip Svelte \\$state Proxies before Dexie writes", + "type": "fix", + "scope": "ai-missions", + "additions": 15, + "deletions": 6, + "timestamp": "2026-04-15T13:44:05+02:00" + }, + { + "hash": "4b29f6d", + "short": "fix(ai-missions): swap structuredClone for JSON-roundtrip deepClone", + "type": "fix", + "scope": "ai-missions", + "additions": 47, + "deletions": 6, + "timestamp": "2026-04-15T13:50:05+02:00" + }, + { + "hash": "74bbfda", + "short": "feat(ai): Mission Grant consent UI + Workbench audit tab", + "type": "feat", + "scope": "ai", + "additions": 950, + "deletions": 10, + "timestamp": "2026-04-15T13:53:11+02:00" + }, + { + "hash": "bb3da78", + "short": "feat(ai): Mission Grant rollout gating — flag, alerts, runbook, user docs", + "type": "feat", + "scope": "ai", + "additions": 204, + "deletions": 15, + "timestamp": "2026-04-15T14:02:47+02:00" + }, + { + "hash": "ef47adb", + "short": "feat(ai-missions): live phase + elapsed + cancel for running iterations", + "type": "feat", + "scope": "ai-missions", + "additions": 357, + "deletions": 44, + "timestamp": "2026-04-15T14:15:48+02:00" + }, + { + "hash": "003f75f", + "short": "chore(web): unblock pre-push hook", + "type": "chore", + "scope": "web", + "additions": 458, + "deletions": 43, + "timestamp": "2026-04-15T14:21:35+02:00" + }, + { + "hash": "7f1520d", + "short": "chore(dev): wire mana-crawler into the local dev stack", + "type": "chore", + "scope": "dev", + "additions": 13, + "deletions": 2, + "timestamp": "2026-04-15T14:23:54+02:00" + }, + { + "hash": "121a0c0", + "short": "feat(api): POST /api/v1/context/import-url — crawler + optional LLM summary", + "type": "feat", + "scope": "api", + "additions": 180, + "deletions": 0, + "timestamp": "2026-04-15T14:24:19+02:00" + }, + { + "hash": "12072c6", + "short": "feat(kontext): URL import helpers — API client + appendContent", + "type": "feat", + "scope": "kontext", + "additions": 54, + "deletions": 1, + "timestamp": "2026-04-15T14:24:38+02:00" + }, + { + "hash": "cb384bc", + "short": "feat(infra): deploy mana-ai + wire Mission Grant keys via docker-compose", + "type": "feat", + "scope": "infra", + "additions": 79, + "deletions": 6, + "timestamp": "2026-04-15T14:24:50+02:00" + }, + { + "hash": "6acb044", + "short": "feat(kontext,notes): cross-module handoff — save Kontext as a Note", + "type": "feat", + "scope": "kontext,notes", + "additions": 67, + "deletions": 0, + "timestamp": "2026-04-15T14:24:56+02:00" + }, + { + "hash": "f0f5b7d", + "short": "fix(infra): relocate mana-ai from 3066 to 3067 — port clash with news-ingester", + "type": "fix", + "scope": "infra", + "additions": 16, + "deletions": 16, + "timestamp": "2026-04-15T14:32:07+02:00" + }, + { + "hash": "70c62e7", + "short": "fix(infra): include shared-logger in mana-ai + mana-auth Dockerfile installers", + "type": "fix", + "scope": "infra", + "additions": 2, + "deletions": 0, + "timestamp": "2026-04-15T14:34:08+02:00" + }, + { + "hash": "2497a65", + "short": "feat(ai-missions): richer error surfacing + retry button on failed runs", + "type": "feat", + "scope": "ai-missions", + "additions": 137, + "deletions": 17, + "timestamp": "2026-04-15T14:37:15+02:00" + }, + { + "hash": "572820f", + "short": "feat(infra): wire mana-ai URL + PUBLIC_AI_MISSION_GRANTS flag into mana-web", + "type": "feat", + "scope": "infra", + "additions": 10, + "deletions": 0, + "timestamp": "2026-04-15T15:03:42+02:00" + }, + { + "hash": "eb30d49", + "short": "fix(web-docker): copy packages/shared-ai into build context", + "type": "fix", + "scope": "web-docker", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-15T15:07:41+02:00" + }, + { + "hash": "98347cf", + "short": "fix(web): add workbox-window as explicit devDependency", + "type": "fix", + "scope": "web", + "additions": 4, + "deletions": 0, + "timestamp": "2026-04-15T15:12:33+02:00" + }, + { + "hash": "39c85cc", + "short": "feat(shared-ui): add \"Anmelden\" entry to the guest user-menu bar", + "type": "feat", + "scope": "shared-ui", + "additions": 22, + "deletions": 2, + "timestamp": "2026-04-15T15:31:53+02:00" + }, + { + "hash": "fffd3eb", + "short": "style(shared-ui): drop hover-lift transforms from pills and chips", + "type": "style", + "scope": "shared-ui", + "additions": 0, + "deletions": 9, + "timestamp": "2026-04-15T15:32:18+02:00" + }, + { + "hash": "87eabcd", + "short": "style(shared-ui): remove TagStrip edge fade gradients", + "type": "style", + "scope": "shared-ui", + "additions": 0, + "deletions": 16, + "timestamp": "2026-04-15T15:32:28+02:00" + }, + { + "hash": "6b1e8e8", + "short": "fix(web): guard PwaUpdatePrompt against SSR navigator access", + "type": "fix", + "scope": "web", + "additions": 17, + "deletions": 12, + "timestamp": "2026-04-15T15:33:35+02:00" + }, + { + "hash": "298bf7e", + "short": "fix(auth-ui): narrow login/register form and drop stuck skip link", + "type": "fix", + "scope": "auth-ui", + "additions": 6, + "deletions": 16, + "timestamp": "2026-04-15T15:45:41+02:00" + }, + { + "hash": "82cf190", + "short": "feat(tunnel): route mana-ai.mana.how → mana-ai:3067", + "type": "feat", + "scope": "tunnel", + "additions": 10, + "deletions": 0, + "timestamp": "2026-04-15T15:51:59+02:00" + }, + { + "hash": "0ef650d", + "short": "chore(dev): run mana-credits locally and gift sync to dev users", + "type": "chore", + "scope": "dev", + "additions": 27, + "deletions": 2, + "timestamp": "2026-04-15T18:09:26+02:00" + }, + { + "hash": "c5a4c51", + "short": "fix(mana-crawler): default DATABASE_URL to mana_platform in dev", + "type": "fix", + "scope": "mana-crawler", + "additions": 2, + "deletions": 2, + "timestamp": "2026-04-15T18:18:19+02:00" + }, + { + "hash": "53fb323", + "short": "chore(dev): also grant role=admin in setup-dev-user.sh", + "type": "chore", + "scope": "dev", + "additions": 9, + "deletions": 2, + "timestamp": "2026-04-15T18:18:31+02:00" + }, + { + "hash": "eaf97ae", + "short": "fix(api): unblock tsc by dropping rootDir and allowing .ts imports", + "type": "fix", + "scope": "api", + "additions": 2, + "deletions": 2, + "timestamp": "2026-04-15T18:51:26+02:00" + }, + { + "hash": "4c8034f", + "short": "chore(dev): seed real credit balance in setup-dev-user.sh", + "type": "chore", + "scope": "dev", + "additions": 23, + "deletions": 2, + "timestamp": "2026-04-15T18:51:39+02:00" + }, + { + "hash": "fdb8e60", + "short": "feat(ai): web-research pre-step + auto-kontext + save_news_article tool", + "type": "feat", + "scope": "ai", + "additions": 182, + "deletions": 5, + "timestamp": "2026-04-15T19:10:13+02:00" + }, + { + "hash": "901d450", + "short": "refactor(shared-ui): fold Cloud Sync pill into the user menu bar", + "type": "refactor", + "scope": "shared-ui", + "additions": 15, + "deletions": 24, + "timestamp": "2026-04-15T19:11:47+02:00" + }, + { + "hash": "0da7458", + "short": "fix(ai): surface web-research failures to the planner instead of hallucinating", + "type": "fix", + "scope": "ai", + "additions": 27, + "deletions": 6, + "timestamp": "2026-04-15T19:23:59+02:00" + }, + { + "hash": "714c235", + "short": "feat(workbench): scene description field, drop scene icon", + "type": "feat", + "scope": "workbench", + "additions": 18, + "deletions": 16, + "timestamp": "2026-04-15T19:41:50+02:00" + }, + { + "hash": "8f3ffef", + "short": "feat(page-carousel): optional leading snippet before first page", + "type": "feat", + "scope": "page-carousel", + "additions": 15, + "deletions": 0, + "timestamp": "2026-04-15T19:42:04+02:00" + }, + { + "hash": "db8e681", + "short": "feat(workbench): render scene header left of the first page", + "type": "feat", + "scope": "workbench", + "additions": 133, + "deletions": 7, + "timestamp": "2026-04-15T19:42:20+02:00" + }, + { + "hash": "f7b5c9b", + "short": "feat(workbench): inline-edit the scene header, no modal", + "type": "feat", + "scope": "workbench", + "additions": 133, + "deletions": 31, + "timestamp": "2026-04-15T20:13:41+02:00" + }, + { + "hash": "1771063", + "short": "refactor(actor): identity-aware Actor for Multi-Agent Workbench (Phase 1)", + "type": "refactor", + "scope": "actor", + "additions": 571, + "deletions": 116, + "timestamp": "2026-04-15T20:13:57+02:00" + }, + { + "hash": "e2ea0cd", + "short": "fix(workbench): tighten SceneHeader spacing and keep contenteditable clean", + "type": "fix", + "scope": "workbench", + "additions": 4, + "deletions": 2, + "timestamp": "2026-04-15T20:14:31+02:00" + }, + { + "hash": "6e842a8", + "short": "fix(workbench): set SceneHeader text via refs instead of inline mustache", + "type": "fix", + "scope": "workbench", + "additions": 27, + "deletions": 12, + "timestamp": "2026-04-15T20:16:21+02:00" + }, + { + "hash": "d5c351d", + "short": "feat(ai): per-iteration debug log — capture prompt + response + inputs", + "type": "feat", + "scope": "ai", + "additions": 467, + "deletions": 16, + "timestamp": "2026-04-15T20:33:17+02:00" + }, + { + "hash": "bc77b36", + "short": "feat(agents): Agent CRUD + default bootstrap + Mission.agentId (Phase 2)", + "type": "feat", + "scope": "agents", + "additions": 830, + "deletions": 6, + "timestamp": "2026-04-15T20:35:49+02:00" + }, + { + "hash": "6811362", + "short": "refactor(workbench): drop per-card height and free-form resize", + "type": "refactor", + "scope": "workbench", + "additions": 14, + "deletions": 25, + "timestamp": "2026-04-15T20:37:03+02:00" + }, + { + "hash": "8b6b736", + "short": "feat(page-carousel): five-preset width picker replaces drag handle", + "type": "feat", + "scope": "page-carousel", + "additions": 163, + "deletions": 102, + "timestamp": "2026-04-15T20:37:19+02:00" + }, + { + "hash": "0af50f0", + "short": "feat(mana-ai): agent-aware tick loop + snapshot projection (Phase 3)", + "type": "feat", + "scope": "mana-ai", + "additions": 560, + "deletions": 17, + "timestamp": "2026-04-15T20:46:57+02:00" + }, + { + "hash": "3b99356", + "short": "feat(quiz): new Quiz module — build & play private quizzes (Phase 1)", + "type": "feat", + "scope": "quiz", + "additions": 1978, + "deletions": 0, + "timestamp": "2026-04-15T20:54:07+02:00" + }, + { + "hash": "988c17a", + "short": "feat(quiz): edit existing questions + wire up guest seed", + "type": "feat", + "scope": "quiz", + "additions": 143, + "deletions": 420, + "timestamp": "2026-04-15T21:24:53+02:00" + }, + { + "hash": "f06ca2c", + "short": "feat(ai-missions): inline AiProposalInbox in mission detail (cross-module)", + "type": "feat", + "scope": "ai-missions", + "additions": 31, + "deletions": 4, + "timestamp": "2026-04-15T21:33:06+02:00" + }, + { + "hash": "db959b6", + "short": "feat(workbench): auto-scroll on scene switch, unify rename to inline", + "type": "feat", + "scope": "workbench", + "additions": 40, + "deletions": 238, + "timestamp": "2026-04-15T21:34:22+02:00" + }, + { + "hash": "32f4c0d", + "short": "feat(page-carousel): empty-state message when scene has no apps", + "type": "feat", + "scope": "page-carousel", + "additions": 41, + "deletions": 3, + "timestamp": "2026-04-15T21:34:39+02:00" + }, + { + "hash": "968e080", + "short": "chore(workbench): delete dead SceneTabs component", + "type": "chore", + "scope": "workbench", + "additions": 0, + "deletions": 205, + "timestamp": "2026-04-15T21:34:54+02:00" + }, + { + "hash": "f7426ab", + "short": "feat(ai): policy is read from the owning agent (Phase 4)", + "type": "feat", + "scope": "ai", + "additions": 49, + "deletions": 2, + "timestamp": "2026-04-15T21:43:04+02:00" + }, + { + "hash": "f2faaf1", + "short": "refactor(pill-nav): drop Settings entry, guard on settingsHref", + "type": "refactor", + "scope": "pill-nav", + "additions": 10, + "deletions": 9, + "timestamp": "2026-04-15T21:43:29+02:00" + }, + { + "hash": "aebbcdd", + "short": "refactor(settings): unify section headers across tabs", + "type": "refactor", + "scope": "settings", + "additions": 31, + "deletions": 19, + "timestamp": "2026-04-15T21:48:41+02:00" + }, + { + "hash": "cacbfb0", + "short": "fix(settings): wire ListView to GeneralSection instead of inlining", + "type": "fix", + "scope": "settings", + "additions": 4, + "deletions": 17, + "timestamp": "2026-04-15T21:52:18+02:00" + }, + { + "hash": "51e6a20", + "short": "feat(ai-agents): Agents UI + Scene binding + Mission picker (Phase 5)", + "type": "feat", + "scope": "ai-agents", + "additions": 984, + "deletions": 2, + "timestamp": "2026-04-15T21:56:02+02:00" + }, + { + "hash": "cda70b6", + "short": "fix(css): alias bare --muted/--primary etc. to --color-* tokens", + "type": "fix", + "scope": "css", + "additions": 20, + "deletions": 0, + "timestamp": "2026-04-15T21:57:29+02:00" + }, + { + "hash": "98668b6", + "short": "fix(ai): swap web-research pre-step from deep-research → news-research RSS", + "type": "fix", + "scope": "ai", + "additions": 42, + "deletions": 24, + "timestamp": "2026-04-15T22:07:29+02:00" + }, + { + "hash": "7c89eb6", + "short": "feat(ai): workbench agent filter + proposal agent chip + docs (Phase 6+7)", + "type": "feat", + "scope": "ai", + "additions": 162, + "deletions": 15, + "timestamp": "2026-04-15T22:08:42+02:00" + }, + { + "hash": "6da317d", + "short": "refactor(theme): migrate shared packages to --color-* token naming", + "type": "refactor", + "scope": "theme", + "additions": 245, + "deletions": 260, + "timestamp": "2026-04-15T22:11:42+02:00" + }, + { + "hash": "e8077a4", + "short": "docs: flesh out Multi-Agent plan shipping log + Team Workbench forward plan", + "type": null, + "scope": null, + "additions": 554, + "deletions": 54, + "timestamp": "2026-04-15T22:17:04+02:00" + }, + { + "hash": "5ae7f99", + "short": "fix(css): correct @source paths — Tailwind was scanning no shared packages", + "type": "fix", + "scope": "css", + "additions": 10, + "deletions": 8, + "timestamp": "2026-04-15T22:17:15+02:00" + }, + { + "hash": "b768a0f", + "short": "refactor(shared-rss): extract RSS parsing + Readability into one package", + "type": "refactor", + "scope": "shared-rss", + "additions": 415, + "deletions": 253, + "timestamp": "2026-04-15T22:30:44+02:00" + }, + { + "hash": "fdd643f", + "short": "feat(news-research): RSS feed discovery, filter, and AI-context export", + "type": "feat", + "scope": "news-research", + "additions": 1586, + "deletions": 2, + "timestamp": "2026-04-15T22:31:07+02:00" + }, + { + "hash": "115afea", + "short": "chore(dev): wire SearXNG + mana-search into dev:mana:all", + "type": "chore", + "scope": "dev", + "additions": 29, + "deletions": 4, + "timestamp": "2026-04-15T22:31:29+02:00" + }, + { + "hash": "cd22e42", + "short": "refactor(theme): migrate all remaining bare shadcn tokens to --color-*", + "type": "refactor", + "scope": "theme", + "additions": 1308, + "deletions": 1120, + "timestamp": "2026-04-15T22:56:59+02:00" + }, + { + "hash": "fdc1c00", + "short": "refactor(theme): migrate --theme-* tokens in shared-auth-ui", + "type": "refactor", + "scope": "theme", + "additions": 95, + "deletions": 95, + "timestamp": "2026-04-16T00:16:39+02:00" + }, + { + "hash": "4d9b16a", + "short": "feat(notes): list + update + append + add_tag tools for the AI", + "type": "feat", + "scope": "notes", + "additions": 252, + "deletions": 0, + "timestamp": "2026-04-16T00:24:48+02:00" + }, + { + "hash": "7822340", + "short": "feat(ai-agents): Template gallery — 3 ready-to-use agent bundles", + "type": "feat", + "scope": "ai-agents", + "additions": 1150, + "deletions": 6, + "timestamp": "2026-04-16T00:36:39+02:00" + }, + { + "hash": "5311909", + "short": "chore(theme): theme-track shared-auth-ui primaryColor + drop dead tailwind.config.js", + "type": "chore", + "scope": "theme", + "additions": 8, + "deletions": 40, + "timestamp": "2026-04-16T00:37:11+02:00" + }, + { + "hash": "e440f13", + "short": "feat(workbench): welcome placeholder for the Home scene description", + "type": "feat", + "scope": "workbench", + "additions": 50, + "deletions": 1, + "timestamp": "2026-04-16T00:41:07+02:00" + }, + { + "hash": "8299bf0", + "short": "feat(ai): reasoning loop — agent chains auto tools before asking for approval", + "type": "feat", + "scope": "ai", + "additions": 263, + "deletions": 77, + "timestamp": "2026-04-16T00:43:52+02:00" + }, + { + "hash": "8a5d200", + "short": "fix(ai): bump planner maxTokens 1024→4096 + teach prompt about the loop", + "type": "fix", + "scope": "ai", + "additions": 11, + "deletions": 5, + "timestamp": "2026-04-16T00:55:18+02:00" + }, + { + "hash": "fc028fa", + "short": "chore(lint): audit:theme-tokens guard against bare --muted / --theme-* drift", + "type": "chore", + "scope": "lint", + "additions": 246, + "deletions": 2, + "timestamp": "2026-04-16T00:58:13+02:00" + }, + { + "hash": "a524997", + "short": "refactor(tailwind): centralize @source list in @mana/shared-tailwind/sources.css", + "type": "refactor", + "scope": "tailwind", + "additions": 29, + "deletions": 12, + "timestamp": "2026-04-16T00:59:33+02:00" + }, + { + "hash": "a08e45c", + "short": "feat(templates): generalise to WorkbenchTemplate + ship Calmness pilot (T1)", + "type": "feat", + "scope": "templates", + "additions": 886, + "deletions": 118, + "timestamp": "2026-04-16T01:07:41+02:00" + }, + { + "hash": "4f76d39", + "short": "feat(workbench): ?app= deep-links into the active scene", + "type": "feat", + "scope": "workbench", + "additions": 26, + "deletions": 10, + "timestamp": "2026-04-16T01:10:10+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-15/macher.md b/devlog/2026-04-15/macher.md new file mode 100644 index 000000000..dc27bb3c5 --- /dev/null +++ b/devlog/2026-04-15/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-15 +day: 84 +view: macher +weekday: Mittwoch +commits: 81 +review: written +--- + +# Mittwoch, 2026-04-15 — Tag 84 (Macher-Sicht) + +## Stats + +81 Commits, +22946 / −7192 LoC, 335 Files. Top-Dirs: `apps/mana/apps/web` (59%), `packages/shared-ai/src` (8%), `services/mana-ai/src` (7%), `packages/shared-ui/src` (5%), `packages/shared-auth-ui/src` (2%). Tags: ai, workbench, ai-missions, dev, infra. Session 11:11 → 23:10 (~407 aktive Min, längster Fokus 161 Min). + +## Commits + +- `9686198` feat(companion): refactor into PageCarousel — every AI feature is a page (+2795/-1635) +- `37e39a5` feat(ai): AI features as top-level workbench apps (not sub-routes) (+927/-1732) +- `9809b06` feat(app-registry): new 'AI' category at top of the app picker (+24/-11) +- `6882ffb` feat(shared-ai): Mission Key-Grant contract + plan for encrypted server-side runs (+610/-0) +- `9a3025f` feat(ai,auth): Mission Grant endpoint + unwrap helper + audit table (+1203/-152) +- `a6d51af` feat(mana-ai): encrypted resolver + tick uses Mission Grant to decrypt scoped inputs (+818/-21) +- `394931e` fix(ai-missions): strip Svelte \$state Proxies before Dexie writes (+15/-6) +- `4b29f6d` fix(ai-missions): swap structuredClone for JSON-roundtrip deepClone (+47/-6) +- `74bbfda` feat(ai): Mission Grant consent UI + Workbench audit tab (+950/-10) +- `bb3da78` feat(ai): Mission Grant rollout gating — flag, alerts, runbook, user docs (+204/-15) +- `ef47adb` feat(ai-missions): live phase + elapsed + cancel for running iterations (+357/-44) +- `003f75f` chore(web): unblock pre-push hook (+458/-43) +- `7f1520d` chore(dev): wire mana-crawler into the local dev stack (+13/-2) +- `121a0c0` feat(api): POST /api/v1/context/import-url — crawler + optional LLM summary (+180/-0) +- `12072c6` feat(kontext): URL import helpers — API client + appendContent (+54/-1) +- `cb384bc` feat(infra): deploy mana-ai + wire Mission Grant keys via docker-compose (+79/-6) +- `6acb044` feat(kontext,notes): cross-module handoff — save Kontext as a Note (+67/-0) +- `f0f5b7d` fix(infra): relocate mana-ai from 3066 to 3067 — port clash with news-ingester (+16/-16) +- `70c62e7` fix(infra): include shared-logger in mana-ai + mana-auth Dockerfile installers (+2/-0) +- `2497a65` feat(ai-missions): richer error surfacing + retry button on failed runs (+137/-17) + +_… plus 61 weitere Commits._ diff --git a/devlog/2026-04-15/spieler.md b/devlog/2026-04-15/spieler.md new file mode 100644 index 000000000..cdf7df1f3 --- /dev/null +++ b/devlog/2026-04-15/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-15 +day: 84 +view: spieler +weekday: Mittwoch +commits: 81 +review: written +--- + +# Mittwoch, 2026-04-15 — Tag 84 + +Großer Sprint-Tag mit Schwerpunkt **apps** (81 Commits). + +## Highlights + +- refactor into PageCarousel — every AI feature is a page +- AI features as top-level workbench apps (not sub-routes) +- new 'AI' category at top of the app picker +- Mission Key-Grant contract + plan for encrypted server-side runs +- Mission Grant endpoint + unwrap helper + audit table diff --git a/devlog/2026-04-16/data.json b/devlog/2026-04-16/data.json new file mode 100644 index 000000000..00eff4db3 --- /dev/null +++ b/devlog/2026-04-16/data.json @@ -0,0 +1,638 @@ +{ + "date": "2026-04-16", + "day_number": 85, + "weekday": "Donnerstag", + "commits": 60, + "authors": [ + { + "name": "Till JS", + "count": 60 + } + ], + "additions": 24613, + "deletions": 7218, + "net_lines": 17395, + "files_changed": 233, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-16T09:45:40.000Z", + "last_commit_at": "2026-04-17T01:57:55.000Z", + "total_span_minutes": 972, + "active_minutes": 264, + "pauses": [ + { + "from": "15:34", + "to": "16:15", + "minutes": 41 + }, + { + "from": "16:39", + "to": "02:53", + "minutes": 614 + }, + { + "from": "02:53", + "to": "03:46", + "minutes": 53 + } + ], + "longest_focus_minutes": 228 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 59 + }, + { + "path": "packages/shared-ai/src", + "pct": 7 + }, + { + "path": "packages/subscriptions/src", + "pct": 6 + }, + { + "path": "services/mana-ai/src", + "pct": 5 + }, + { + "path": "apps/mana/apps/landing", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 166 + }, + { + "ext": ".svelte", + "count": 99 + }, + { + "ext": ".md", + "count": 26 + }, + { + "ext": ".json", + "count": 11 + }, + { + "ext": ".svelte}", + "count": 5 + }, + { + "ext": ".yml", + "count": 3 + } + ], + "tags": ["ai", "workbench", "credits", "settings", "ai-tools"], + "commits_list": [ + { + "hash": "9161c0b", + "short": "feat(templates): two more non-AI templates + split gallery into two sections", + "type": "feat", + "scope": "templates", + "additions": 390, + "deletions": 34, + "timestamp": "2026-04-16T11:45:40+02:00" + }, + { + "hash": "334c36a", + "short": "docs: document reasoning loop, research pre-step, debug log, new tools", + "type": null, + "scope": null, + "additions": 74, + "deletions": 1, + "timestamp": "2026-04-16T11:50:21+02:00" + }, + { + "hash": "0af1dd7", + "short": "feat(workbench): section deep-links + migrate profile & themes to workbench", + "type": "feat", + "scope": "workbench", + "additions": 24, + "deletions": 198, + "timestamp": "2026-04-16T11:52:25+02:00" + }, + { + "hash": "bc5c150", + "short": "feat(spiral): migrate to workbench app, delete standalone route", + "type": "feat", + "scope": "spiral", + "additions": 25, + "deletions": 66, + "timestamp": "2026-04-16T11:58:25+02:00" + }, + { + "hash": "1266b58", + "short": "feat(ai-tools): unlock create_note + create_journal_entry + habit tools for agents", + "type": "feat", + "scope": "ai-tools", + "additions": 76, + "deletions": 0, + "timestamp": "2026-04-16T12:00:17+02:00" + }, + { + "hash": "5d46aa1", + "short": "refactor(help): drop standalone /help route, use workbench app", + "type": "refactor", + "scope": "help", + "additions": 1, + "deletions": 35, + "timestamp": "2026-04-16T12:01:35+02:00" + }, + { + "hash": "ae53e93", + "short": "feat(mana): migrate subscription page to workbench app", + "type": "feat", + "scope": "mana", + "additions": 19, + "deletions": 8, + "timestamp": "2026-04-16T12:03:20+02:00" + }, + { + "hash": "23b8cc1", + "short": "feat(ai-tools): server-side web-research + contacts for agents", + "type": "feat", + "scope": "ai-tools", + "additions": 253, + "deletions": 2, + "timestamp": "2026-04-16T12:25:45+02:00" + }, + { + "hash": "27ac5fc", + "short": "feat(credits): merge Credits + Mana subscription into one workbench app", + "type": "feat", + "scope": "credits", + "additions": 1033, + "deletions": 648, + "timestamp": "2026-04-16T12:26:27+02:00" + }, + { + "hash": "95e65bb", + "short": "chore: remove /apps route — not needed", + "type": null, + "scope": null, + "additions": 0, + "deletions": 16, + "timestamp": "2026-04-16T12:30:37+02:00" + }, + { + "hash": "8a0bf93", + "short": "chore(cloud-tier): upgrade default model gemini-2.0-flash → gemini-2.5-flash", + "type": "chore", + "scope": "cloud-tier", + "additions": 12, + "deletions": 13, + "timestamp": "2026-04-16T12:32:03+02:00" + }, + { + "hash": "be81d11", + "short": "feat(ai): SSE streaming for foreground Mission Runner", + "type": "feat", + "scope": "ai", + "additions": 635, + "deletions": 108, + "timestamp": "2026-04-16T12:32:43+02:00" + }, + { + "hash": "2ead0f3", + "short": "fix(subscriptions): single-column layout for workbench context", + "type": "fix", + "scope": "subscriptions", + "additions": 1, + "deletions": 32, + "timestamp": "2026-04-16T12:34:36+02:00" + }, + { + "hash": "d83fc37", + "short": "docs: update tool coverage table + server-side research + templates", + "type": null, + "scope": null, + "additions": 56, + "deletions": 3, + "timestamp": "2026-04-16T12:35:40+02:00" + }, + { + "hash": "c6c4d63", + "short": "refactor(subscriptions): compact row-based card layout", + "type": "refactor", + "scope": "subscriptions", + "additions": 275, + "deletions": 535, + "timestamp": "2026-04-16T12:38:30+02:00" + }, + { + "hash": "659a7d9", + "short": "fix(mana-llm): add google-genai to requirements.txt for Docker builds", + "type": "fix", + "scope": "mana-llm", + "additions": 3, + "deletions": 0, + "timestamp": "2026-04-16T12:40:30+02:00" + }, + { + "hash": "3ce8420", + "short": "fix: drop duplicate manaHref — Credits & Abo is the single billing entry", + "type": null, + "scope": null, + "additions": 0, + "deletions": 1, + "timestamp": "2026-04-16T12:40:51+02:00" + }, + { + "hash": "3be4612", + "short": "fix(mana-llm): google-genai v1.73 keyword-only Part.from_text()", + "type": "fix", + "scope": "mana-llm", + "additions": 4972, + "deletions": 7, + "timestamp": "2026-04-16T12:43:54+02:00" + }, + { + "hash": "b4ce852", + "short": "feat(credits): merge subscription management into Credits & Abo", + "type": "feat", + "scope": "credits", + "additions": 632, + "deletions": 907, + "timestamp": "2026-04-16T12:51:31+02:00" + }, + { + "hash": "d40a611", + "short": "refactor(ai): dynamic tool registry — single-source catalog in shared-ai", + "type": "refactor", + "scope": "ai", + "additions": 579, + "deletions": 329, + "timestamp": "2026-04-16T13:06:07+02:00" + }, + { + "hash": "299cf9c", + "short": "chore: cleanup dead props, deps, dirs, and stale comments", + "type": null, + "scope": null, + "additions": 11, + "deletions": 48, + "timestamp": "2026-04-16T13:17:59+02:00" + }, + { + "hash": "56171ff", + "short": "fix(ai): resolve tool name + parameter drift between catalog and webapp", + "type": "fix", + "scope": "ai", + "additions": 70, + "deletions": 21, + "timestamp": "2026-04-16T13:18:51+02:00" + }, + { + "hash": "827b252", + "short": "feat(settings): inline sync, my-data, and vault — delete all sub-routes", + "type": "feat", + "scope": "settings", + "additions": 33, + "deletions": 75, + "timestamp": "2026-04-16T13:30:33+02:00" + }, + { + "hash": "db4dd43", + "short": "feat(api): MCP server endpoint — expose AI tools to external clients", + "type": "feat", + "scope": "api", + "additions": 508, + "deletions": 5, + "timestamp": "2026-04-16T13:37:52+02:00" + }, + { + "hash": "3f60f68", + "short": "fix(shared-tailwind): export CSS under 'style' condition for Vite build", + "type": "fix", + "scope": "shared-tailwind", + "additions": 8, + "deletions": 2, + "timestamp": "2026-04-16T13:39:01+02:00" + }, + { + "hash": "10acabf", + "short": "feat(ai): tag-based agent scoping — agents see only their tagged records", + "type": "feat", + "scope": "ai", + "additions": 232, + "deletions": 7, + "timestamp": "2026-04-16T13:43:33+02:00" + }, + { + "hash": "e969324", + "short": "feat(mcp): Phase 2 — real DB operations for tool execution", + "type": "feat", + "scope": "mcp", + "additions": 390, + "deletions": 52, + "timestamp": "2026-04-16T13:46:06+02:00" + }, + { + "hash": "04c806f", + "short": "feat(mcp): implement remaining 19 tool handlers (27/29 total)", + "type": "feat", + "scope": "mcp", + "additions": 420, + "deletions": 7, + "timestamp": "2026-04-16T14:08:57+02:00" + }, + { + "hash": "f203e10", + "short": "chore: final cleanup — dead link, security status, showTitle, drop subscriptions", + "type": null, + "scope": null, + "additions": 10, + "deletions": 5, + "timestamp": "2026-04-16T14:27:46+02:00" + }, + { + "hash": "e2d540a", + "short": "refactor(settings): rewrite GeneralSection inline + delete @mana/subscriptions", + "type": "refactor", + "scope": "settings", + "additions": 247, + "deletions": 1755, + "timestamp": "2026-04-16T14:33:35+02:00" + }, + { + "hash": "ce57e11", + "short": "feat(mana-ai): server-side token budget enforcement per agent", + "type": "feat", + "scope": "mana-ai", + "additions": 89, + "deletions": 5, + "timestamp": "2026-04-16T14:41:31+02:00" + }, + { + "hash": "acd7e0d", + "short": "docs: update architecture comparison — 5/10 roadmap items done", + "type": null, + "scope": null, + "additions": 2737, + "deletions": 654, + "timestamp": "2026-04-16T15:00:09+02:00" + }, + { + "hash": "ed01d24", + "short": "feat(ai): add AI tools for myday, goals, mood, finance, and times", + "type": "feat", + "scope": "ai", + "additions": 1299, + "deletions": 6, + "timestamp": "2026-04-16T15:01:12+02:00" + }, + { + "hash": "c412508", + "short": "feat(ai-scope): wire filterByScope into list_tasks/contacts/events + note tag UI", + "type": "feat", + "scope": "ai-scope", + "additions": 70, + "deletions": 4, + "timestamp": "2026-04-16T15:06:11+02:00" + }, + { + "hash": "f5392b8", + "short": "fix(profile): update profile.test.ts for new avatar upload + email change API", + "type": "fix", + "scope": "profile", + "additions": 39, + "deletions": 14, + "timestamp": "2026-04-16T15:09:59+02:00" + }, + { + "hash": "fad7f4b", + "short": "feat(ai): guardrail layer — pre/post-plan + pre-execute checks", + "type": "feat", + "scope": "ai", + "additions": 301, + "deletions": 9, + "timestamp": "2026-04-16T15:11:34+02:00" + }, + { + "hash": "0ddaab5", + "short": "feat(workbench): Scene.scopeTagIds + reactive scene-scope store", + "type": "feat", + "scope": "workbench", + "additions": 70, + "deletions": 0, + "timestamp": "2026-04-16T15:15:44+02:00" + }, + { + "hash": "8def989", + "short": "chore: global ToastContainer, migrate inline toasts, delete SETUP.md", + "type": null, + "scope": null, + "additions": 107, + "deletions": 480, + "timestamp": "2026-04-16T15:18:50+02:00" + }, + { + "hash": "7657786", + "short": "feat(mana-ai): OpenTelemetry tracing + Grafana Tempo backend", + "type": "feat", + "scope": "mana-ai", + "additions": 348, + "deletions": 151, + "timestamp": "2026-04-16T15:21:23+02:00" + }, + { + "hash": "62fc566", + "short": "docs: mark OTel tracing (#7) as done in architecture report", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-16T15:21:45+02:00" + }, + { + "hash": "26e1c47", + "short": "feat(scene-scope): wire filterBySceneScope into notes/todo/contacts/calendar queries", + "type": "feat", + "scope": "scene-scope", + "additions": 23, + "deletions": 4, + "timestamp": "2026-04-16T15:22:47+02:00" + }, + { + "hash": "fabf259", + "short": "feat(ai-agents): missions lookup + simple policy + agent fingerprint (UX 3-6)", + "type": "feat", + "scope": "ai-agents", + "additions": 323, + "deletions": 62, + "timestamp": "2026-04-16T15:22:55+02:00" + }, + { + "hash": "a1bb703", + "short": "docs: final report update — 7/10 roadmap items done, all tables consistent", + "type": null, + "scope": null, + "additions": 12, + "deletions": 5, + "timestamp": "2026-04-16T15:23:37+02:00" + }, + { + "hash": "4b41549", + "short": "fix(profile): expand data model + fix interview field mappings", + "type": "fix", + "scope": "profile", + "additions": 387, + "deletions": 55, + "timestamp": "2026-04-16T15:24:11+02:00" + }, + { + "hash": "b7f83cb", + "short": "fix: migrate remaining inline toasts + delete dead /subscription route", + "type": null, + "scope": null, + "additions": 14, + "deletions": 616, + "timestamp": "2026-04-16T15:27:18+02:00" + }, + { + "hash": "fe141e1", + "short": "docs: add langfristige Roadmap-Punkte zu AI_AGENTS_IDEAS.md", + "type": null, + "scope": null, + "additions": 108, + "deletions": 1, + "timestamp": "2026-04-16T15:27:38+02:00" + }, + { + "hash": "57c2bdb", + "short": "feat(workbench): scope TagSelector in SceneHeader + agent auto-infer", + "type": "feat", + "scope": "workbench", + "additions": 76, + "deletions": 1, + "timestamp": "2026-04-16T15:29:07+02:00" + }, + { + "hash": "9dd2c64", + "short": "fix(credits): replace octal literal placeholders with real toast messages", + "type": "fix", + "scope": "credits", + "additions": 3, + "deletions": 3, + "timestamp": "2026-04-16T15:34:00+02:00" + }, + { + "hash": "484761e", + "short": "fix(docker): remove deleted subscriptions pkg + add shared-ai to sveltekit-base", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-16T16:15:01+02:00" + }, + { + "hash": "93358ed", + "short": "fix(ai): P0 — tool exception handling + mission run mutex", + "type": "fix", + "scope": "ai", + "additions": 142, + "deletions": 22, + "timestamp": "2026-04-16T16:17:08+02:00" + }, + { + "hash": "a480393", + "short": "fix(ai): P1 batch — N+1 queries, vault-locked, debug hardening, timeout", + "type": "fix", + "scope": "ai", + "additions": 131, + "deletions": 22, + "timestamp": "2026-04-16T16:25:17+02:00" + }, + { + "hash": "efc7641", + "short": "chore(ai): P2 batch — prompt sync, perf, dedup, scope unification", + "type": "chore", + "scope": "ai", + "additions": 84, + "deletions": 99, + "timestamp": "2026-04-16T16:33:52+02:00" + }, + { + "hash": "35ffa8a", + "short": "docs(landing): devlog entries Apr 9–15", + "type": "docs", + "scope": "landing", + "additions": 2358, + "deletions": 0, + "timestamp": "2026-04-16T16:36:18+02:00" + }, + { + "hash": "4b21e3f", + "short": "docs: add MODULE_REGISTRY.md — index of all 72 webapp modules", + "type": null, + "scope": null, + "additions": 141, + "deletions": 0, + "timestamp": "2026-04-16T16:36:26+02:00" + }, + { + "hash": "97adfa7", + "short": "chore: update scheduled tasks lock", + "type": null, + "scope": null, + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-16T16:36:33+02:00" + }, + { + "hash": "40a3a8c", + "short": "fix(settings): remove stale showTitle prop from SecuritySection", + "type": "fix", + "scope": "settings", + "additions": 0, + "deletions": 4, + "timestamp": "2026-04-16T16:39:22+02:00" + }, + { + "hash": "20aeccf", + "short": "chore(hooks): drop --fail-on-warnings from pre-push svelte-check", + "type": "chore", + "scope": "hooks", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-17T02:53:44+02:00" + }, + { + "hash": "62aac6d", + "short": "feat(wetter): add weather module with Open-Meteo, DWD alerts, and rain nowcast", + "type": "feat", + "scope": "wetter", + "additions": 2179, + "deletions": 0, + "timestamp": "2026-04-17T03:46:15+02:00" + }, + { + "hash": "8c6502d", + "short": "feat(library): add Bibliothek module — books/movies/series/comics log", + "type": "feat", + "scope": "library", + "additions": 996, + "deletions": 2, + "timestamp": "2026-04-17T03:49:01+02:00" + }, + { + "hash": "3641784", + "short": "feat(library): M2 — CRUD form, grid view, detail view", + "type": "feat", + "scope": "library", + "additions": 1583, + "deletions": 75, + "timestamp": "2026-04-17T03:57:55+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-16/macher.md b/devlog/2026-04-16/macher.md new file mode 100644 index 000000000..6a8366e68 --- /dev/null +++ b/devlog/2026-04-16/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-16 +day: 85 +view: macher +weekday: Donnerstag +commits: 60 +review: written +--- + +# Donnerstag, 2026-04-16 — Tag 85 (Macher-Sicht) + +## Stats + +60 Commits, +24613 / −7218 LoC, 233 Files. Top-Dirs: `apps/mana/apps/web` (59%), `packages/shared-ai/src` (7%), `packages/subscriptions/src` (6%), `services/mana-ai/src` (5%), `apps/mana/apps/landing` (3%). Tags: ai, workbench, credits, settings, ai-tools. Session 09:45 → 01:57 (~264 aktive Min, längster Fokus 228 Min). + +## Commits + +- `9161c0b` feat(templates): two more non-AI templates + split gallery into two sections (+390/-34) +- `334c36a` docs: document reasoning loop, research pre-step, debug log, new tools (+74/-1) +- `0af1dd7` feat(workbench): section deep-links + migrate profile & themes to workbench (+24/-198) +- `bc5c150` feat(spiral): migrate to workbench app, delete standalone route (+25/-66) +- `1266b58` feat(ai-tools): unlock create_note + create_journal_entry + habit tools for agents (+76/-0) +- `5d46aa1` refactor(help): drop standalone /help route, use workbench app (+1/-35) +- `ae53e93` feat(mana): migrate subscription page to workbench app (+19/-8) +- `23b8cc1` feat(ai-tools): server-side web-research + contacts for agents (+253/-2) +- `27ac5fc` feat(credits): merge Credits + Mana subscription into one workbench app (+1033/-648) +- `95e65bb` chore: remove /apps route — not needed (+0/-16) +- `8a0bf93` chore(cloud-tier): upgrade default model gemini-2.0-flash → gemini-2.5-flash (+12/-13) +- `be81d11` feat(ai): SSE streaming for foreground Mission Runner (+635/-108) +- `2ead0f3` fix(subscriptions): single-column layout for workbench context (+1/-32) +- `d83fc37` docs: update tool coverage table + server-side research + templates (+56/-3) +- `c6c4d63` refactor(subscriptions): compact row-based card layout (+275/-535) +- `659a7d9` fix(mana-llm): add google-genai to requirements.txt for Docker builds (+3/-0) +- `3ce8420` fix: drop duplicate manaHref — Credits & Abo is the single billing entry (+0/-1) +- `3be4612` fix(mana-llm): google-genai v1.73 keyword-only Part.from_text() (+4972/-7) +- `b4ce852` feat(credits): merge subscription management into Credits & Abo (+632/-907) +- `d40a611` refactor(ai): dynamic tool registry — single-source catalog in shared-ai (+579/-329) + +_… plus 40 weitere Commits._ diff --git a/devlog/2026-04-16/spieler.md b/devlog/2026-04-16/spieler.md new file mode 100644 index 000000000..821f00735 --- /dev/null +++ b/devlog/2026-04-16/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-16 +day: 85 +view: spieler +weekday: Donnerstag +commits: 60 +review: written +--- + +# Donnerstag, 2026-04-16 — Tag 85 + +Großer Sprint-Tag mit Schwerpunkt **apps** (60 Commits). + +## Highlights + +- two more non-AI templates + split gallery into two sections +- document reasoning loop, research pre-step, debug log, new tools +- section deep-links + migrate profile & themes to workbench +- migrate to workbench app, delete standalone route +- unlock create_note + create_journal_entry + habit tools for agents diff --git a/devlog/2026-04-17/data.json b/devlog/2026-04-17/data.json new file mode 100644 index 000000000..9cffd0def --- /dev/null +++ b/devlog/2026-04-17/data.json @@ -0,0 +1,397 @@ +{ + "date": "2026-04-17", + "day_number": 86, + "weekday": "Freitag", + "commits": 35, + "authors": [ + { + "name": "Till JS", + "count": 35 + } + ], + "additions": 16786, + "deletions": 2350, + "net_lines": 14436, + "files_changed": 258, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-17T11:17:22.000Z", + "last_commit_at": "2026-04-17T13:46:51.000Z", + "total_span_minutes": 149, + "active_minutes": 149, + "pauses": [], + "longest_focus_minutes": 149 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 65 + }, + { + "path": "services/mana-research/src", + "pct": 18 + }, + { + "path": "packages/shared-research/src", + "pct": 2 + }, + { + "path": "services/mana-credits/src", + "pct": 2 + }, + { + "path": "packages/shared-llm/src", + "pct": 1 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 118 + }, + { + "ext": ".mp3", + "count": 92 + }, + { + "ext": ".svelte", + "count": 61 + }, + { + "ext": ".md", + "count": 15 + }, + { + "ext": ".json", + "count": 4 + }, + { + "ext": ".py", + "count": 3 + } + ], + "tags": ["wetter", "library", "workbench", "research", "llm"], + "commits_list": [ + { + "hash": "a252160", + "short": "feat(library): M3 — progress tracking (pages, episodes, issues) + restart", + "type": "feat", + "scope": "library", + "additions": 433, + "deletions": 11, + "timestamp": "2026-04-17T13:17:22+02:00" + }, + { + "hash": "96a7202", + "short": "feat(wetter): register workbench panel with ListView", + "type": "feat", + "scope": "wetter", + "additions": 341, + "deletions": 0, + "timestamp": "2026-04-17T13:33:59+02:00" + }, + { + "hash": "24704e2", + "short": "fix(wetter): mount routes before auth middleware", + "type": "fix", + "scope": "wetter", + "additions": 4, + "deletions": 1, + "timestamp": "2026-04-17T13:37:17+02:00" + }, + { + "hash": "85bba16", + "short": "feat(library): register as workbench app (Kreativ category)", + "type": "feat", + "scope": "library", + "additions": 26, + "deletions": 0, + "timestamp": "2026-04-17T13:53:01+02:00" + }, + { + "hash": "9b8c691", + "short": "feat(wetter): add multi-model source comparison view", + "type": "feat", + "scope": "wetter", + "additions": 569, + "deletions": 1, + "timestamp": "2026-04-17T13:57:05+02:00" + }, + { + "hash": "fea37c3", + "short": "feat(library): drop page h1, move create to inline accordion", + "type": "feat", + "scope": "library", + "additions": 80, + "deletions": 94, + "timestamp": "2026-04-17T14:02:21+02:00" + }, + { + "hash": "5bdacaa", + "short": "feat(wishes): add Wünsche module — wishlists with price tracking", + "type": "feat", + "scope": "wishes", + "additions": 1413, + "deletions": 1, + "timestamp": "2026-04-17T14:02:37+02:00" + }, + { + "hash": "d2cf822", + "short": "feat(library): move search to top of the controls", + "type": "feat", + "scope": "library", + "additions": 12, + "deletions": 15, + "timestamp": "2026-04-17T14:06:13+02:00" + }, + { + "hash": "cf4d849", + "short": "feat(wetter): full feature parity for workbench ListView", + "type": "feat", + "scope": "wetter", + "additions": 114, + "deletions": 214, + "timestamp": "2026-04-17T14:08:51+02:00" + }, + { + "hash": "1add202", + "short": "fix(library): make form labels and inputs readable", + "type": "fix", + "scope": "library", + "additions": 30, + "deletions": 16, + "timestamp": "2026-04-17T14:11:10+02:00" + }, + { + "hash": "ef91b61", + "short": "feat(wetter): improve location management with save/remove/default", + "type": "feat", + "scope": "wetter", + "additions": 247, + "deletions": 61, + "timestamp": "2026-04-17T14:13:30+02:00" + }, + { + "hash": "fef71dd", + "short": "fix(wetter): design improvements — scroll chips, hierarchy, dedup names", + "type": "fix", + "scope": "wetter", + "additions": 166, + "deletions": 120, + "timestamp": "2026-04-17T14:24:10+02:00" + }, + { + "hash": "a2423b4", + "short": "fix(wetter): add icons to detail grid (wind, humidity, pressure, UV)", + "type": "fix", + "scope": "wetter", + "additions": 9, + "deletions": 0, + "timestamp": "2026-04-17T14:27:16+02:00" + }, + { + "hash": "2df9ecd", + "short": "feat(rituals): rename ai-rituals → rituals, add ceremony step types", + "type": "feat", + "scope": "rituals", + "additions": 813, + "deletions": 188, + "timestamp": "2026-04-17T14:41:26+02:00" + }, + { + "hash": "004fc0b", + "short": "feat(credits): add 2-phase debit (reserve/commit/refund)", + "type": "feat", + "scope": "credits", + "additions": 237, + "deletions": 3, + "timestamp": "2026-04-17T14:41:41+02:00" + }, + { + "hash": "2bdb48b", + "short": "feat(research): add mana-research service — Phase 1 + 2", + "type": "feat", + "scope": "research", + "additions": 4376, + "deletions": 243, + "timestamp": "2026-04-17T14:42:25+02:00" + }, + { + "hash": "c642e1b", + "short": "feat(workbench): add inline module help — ? icon in PageShell header", + "type": "feat", + "scope": "workbench", + "additions": 880, + "deletions": 1, + "timestamp": "2026-04-17T14:44:48+02:00" + }, + { + "hash": "2b96953", + "short": "fix(llm): user-friendly error messages when no LLM tier available", + "type": "fix", + "scope": "llm", + "additions": 72, + "deletions": 4, + "timestamp": "2026-04-17T14:46:39+02:00" + }, + { + "hash": "f0c38da", + "short": "feat(rituals): switch icon from Lightning to ArrowClockwise", + "type": "feat", + "scope": "rituals", + "additions": 2, + "deletions": 1, + "timestamp": "2026-04-17T14:51:37+02:00" + }, + { + "hash": "928f036", + "short": "fix(llm): add deep-link to AI settings in tier error messages", + "type": "fix", + "scope": "llm", + "additions": 6, + "deletions": 4, + "timestamp": "2026-04-17T14:58:32+02:00" + }, + { + "hash": "49f315f", + "short": "feat(research): Phase 3a — 4 sync research agents", + "type": "feat", + "scope": "research", + "additions": 879, + "deletions": 15, + "timestamp": "2026-04-17T15:06:12+02:00" + }, + { + "hash": "e60965e", + "short": "fix(mobile): disable text selection on list rows to unblock long-press context menu", + "type": "fix", + "scope": "mobile", + "additions": 44, + "deletions": 2, + "timestamp": "2026-04-17T15:08:04+02:00" + }, + { + "hash": "fa31fa0", + "short": "fix(workbench): handle ?app= deep-links reactively while page is mounted", + "type": "fix", + "scope": "workbench", + "additions": 19, + "deletions": 0, + "timestamp": "2026-04-17T15:08:25+02:00" + }, + { + "hash": "1cfd059", + "short": "fix(llm): user-friendly messages + settings link for all LLM errors", + "type": "fix", + "scope": "llm", + "additions": 28, + "deletions": 6, + "timestamp": "2026-04-17T15:13:48+02:00" + }, + { + "hash": "4aafbf6", + "short": "fix(settings): react to anchor deep-links when already mounted", + "type": "fix", + "scope": "settings", + "additions": 39, + "deletions": 2, + "timestamp": "2026-04-17T15:17:30+02:00" + }, + { + "hash": "786ffd7", + "short": "feat(research-lab): Phase 4 — UI for side-by-side provider comparison", + "type": "feat", + "scope": "research-lab", + "additions": 1392, + "deletions": 0, + "timestamp": "2026-04-17T15:21:21+02:00" + }, + { + "hash": "8823cc0", + "short": "feat(profile): voice interview with pre-rendered TTS audio + Orpheus/Zonos backends", + "type": "feat", + "scope": "profile", + "additions": 1597, + "deletions": 31, + "timestamp": "2026-04-17T15:22:52+02:00" + }, + { + "hash": "a1baf10", + "short": "fix(workbench): resilient liveQuery + rmw-safe scene writes", + "type": "fix", + "scope": "workbench", + "additions": 96, + "deletions": 35, + "timestamp": "2026-04-17T15:23:20+02:00" + }, + { + "hash": "38b9fdb", + "short": "docs: add Apr 16 devlog, remove duplicate devlogs, update MODULE_REGISTRY", + "type": null, + "scope": null, + "additions": 278, + "deletions": 508, + "timestamp": "2026-04-17T15:27:00+02:00" + }, + { + "hash": "bd1e273", + "short": "perf(workbench): persistent IO + stable bar callbacks", + "type": "perf", + "scope": "workbench", + "additions": 65, + "deletions": 12, + "timestamp": "2026-04-17T15:27:48+02:00" + }, + { + "hash": "8f0a74b", + "short": "feat(research-lab): tier gate (beta+), 1–5 star ratings, run detail route", + "type": "feat", + "scope": "research-lab", + "additions": 358, + "deletions": 16, + "timestamp": "2026-04-17T15:28:02+02:00" + }, + { + "hash": "011946b", + "short": "feat(news-research): add depth=shallow|deep option to research_news tool", + "type": "feat", + "scope": "news-research", + "additions": 73, + "deletions": 2, + "timestamp": "2026-04-17T15:31:09+02:00" + }, + { + "hash": "10bdd64", + "short": "refactor(workbench): consolidate deep-link handler, reset store on dispose", + "type": "refactor", + "scope": "workbench", + "additions": 22, + "deletions": 25, + "timestamp": "2026-04-17T15:35:33+02:00" + }, + { + "hash": "7d12022", + "short": "feat(research): Phase 3b openai-deep-research async + BYO-keys CRUD & UI", + "type": "feat", + "scope": "research", + "additions": 1032, + "deletions": 3, + "timestamp": "2026-04-17T15:43:12+02:00" + }, + { + "hash": "6771230", + "short": "refactor(settings): unify section styling, remove Credits tab", + "type": "refactor", + "scope": "settings", + "additions": 1034, + "deletions": 715, + "timestamp": "2026-04-17T15:46:51+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-17/macher.md b/devlog/2026-04-17/macher.md new file mode 100644 index 000000000..8a4b3dea7 --- /dev/null +++ b/devlog/2026-04-17/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-17 +day: 86 +view: macher +weekday: Freitag +commits: 35 +review: written +--- + +# Freitag, 2026-04-17 — Tag 86 (Macher-Sicht) + +## Stats + +35 Commits, +16786 / −2350 LoC, 258 Files. Top-Dirs: `apps/mana/apps/web` (65%), `services/mana-research/src` (18%), `packages/shared-research/src` (2%), `services/mana-credits/src` (2%), `packages/shared-llm/src` (1%). Tags: wetter, library, workbench, research, llm. Session 11:17 → 13:46 (~149 aktive Min, längster Fokus 149 Min). + +## Commits + +- `a252160` feat(library): M3 — progress tracking (pages, episodes, issues) + restart (+433/-11) +- `96a7202` feat(wetter): register workbench panel with ListView (+341/-0) +- `24704e2` fix(wetter): mount routes before auth middleware (+4/-1) +- `85bba16` feat(library): register as workbench app (Kreativ category) (+26/-0) +- `9b8c691` feat(wetter): add multi-model source comparison view (+569/-1) +- `fea37c3` feat(library): drop page h1, move create to inline accordion (+80/-94) +- `5bdacaa` feat(wishes): add Wünsche module — wishlists with price tracking (+1413/-1) +- `d2cf822` feat(library): move search to top of the controls (+12/-15) +- `cf4d849` feat(wetter): full feature parity for workbench ListView (+114/-214) +- `1add202` fix(library): make form labels and inputs readable (+30/-16) +- `ef91b61` feat(wetter): improve location management with save/remove/default (+247/-61) +- `fef71dd` fix(wetter): design improvements — scroll chips, hierarchy, dedup names (+166/-120) +- `a2423b4` fix(wetter): add icons to detail grid (wind, humidity, pressure, UV) (+9/-0) +- `2df9ecd` feat(rituals): rename ai-rituals → rituals, add ceremony step types (+813/-188) +- `004fc0b` feat(credits): add 2-phase debit (reserve/commit/refund) (+237/-3) +- `2bdb48b` feat(research): add mana-research service — Phase 1 + 2 (+4376/-243) +- `c642e1b` feat(workbench): add inline module help — ? icon in PageShell header (+880/-1) +- `2b96953` fix(llm): user-friendly error messages when no LLM tier available (+72/-4) +- `f0c38da` feat(rituals): switch icon from Lightning to ArrowClockwise (+2/-1) +- `928f036` fix(llm): add deep-link to AI settings in tier error messages (+6/-4) + +_… plus 15 weitere Commits._ diff --git a/devlog/2026-04-17/spieler.md b/devlog/2026-04-17/spieler.md new file mode 100644 index 000000000..c49e0195a --- /dev/null +++ b/devlog/2026-04-17/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-17 +day: 86 +view: spieler +weekday: Freitag +commits: 35 +review: written +--- + +# Freitag, 2026-04-17 — Tag 86 + +Großer Sprint-Tag mit Schwerpunkt **apps** (35 Commits). + +## Highlights + +- M3 — progress tracking (pages, episodes, issues) + restart +- register workbench panel with ListView +- mount routes before auth middleware +- register as workbench app (Kreativ category) +- add multi-model source comparison view diff --git a/devlog/2026-04-18/data.json b/devlog/2026-04-18/data.json new file mode 100644 index 000000000..e772b358a --- /dev/null +++ b/devlog/2026-04-18/data.json @@ -0,0 +1,295 @@ +{ + "date": "2026-04-18", + "day_number": 87, + "weekday": "Samstag", + "commits": 23, + "authors": [ + { + "name": "Till JS", + "count": 23 + } + ], + "additions": 8915, + "deletions": 906, + "net_lines": 8009, + "files_changed": 75, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-18T13:30:46.000Z", + "last_commit_at": "2026-04-18T16:51:34.000Z", + "total_span_minutes": 201, + "active_minutes": 122, + "pauses": [ + { + "from": "17:31", + "to": "18:50", + "minutes": 79 + } + ], + "longest_focus_minutes": 121 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 43 + }, + { + "path": "services/mana-events/src", + "pct": 40 + }, + { + "path": "packages/shared-ai/src", + "pct": 4 + }, + { + "path": "services/mana-research/src", + "pct": 3 + }, + { + "path": "docs/plans/event-discovery.md", + "pct": 1 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 62 + }, + { + "ext": ".svelte", + "count": 23 + }, + { + "ext": ".md", + "count": 5 + }, + { + "ext": ".yaml", + "count": 1 + }, + { + "ext": ".json", + "count": 1 + }, + { + "ext": ".mjs", + "count": 1 + } + ], + "tags": ["workbench", "events", "research", "research-lab", "page-carousel"], + "commits_list": [ + { + "hash": "b5d55fd", + "short": "feat(events): add Event Discovery — Phase 1 + 2", + "type": "feat", + "scope": "events", + "additions": 5106, + "deletions": 46, + "timestamp": "2026-04-18T15:30:46+02:00" + }, + { + "hash": "2f226a9", + "short": "feat(workbench): user-visible error toasts + stale-SW safety net", + "type": "feat", + "scope": "workbench", + "additions": 52, + "deletions": 21, + "timestamp": "2026-04-18T15:34:08+02:00" + }, + { + "hash": "2c0d866", + "short": "feat(events): Phase 3 — AI tools, Event-Scout template, feedback loop", + "type": "feat", + "scope": "events", + "additions": 406, + "deletions": 0, + "timestamp": "2026-04-18T15:37:28+02:00" + }, + { + "hash": "4d82381", + "short": "perf(workbench): LRU-evict PageCarousel's mounted-cards cache", + "type": "perf", + "scope": "workbench", + "additions": 18, + "deletions": 7, + "timestamp": "2026-04-18T15:38:08+02:00" + }, + { + "hash": "ed801cf", + "short": "feat(events): Phase 4 — provider adapters for Eventbrite + Meetup", + "type": "feat", + "scope": "events", + "additions": 708, + "deletions": 44, + "timestamp": "2026-04-18T15:43:40+02:00" + }, + { + "hash": "0a928c1", + "short": "fix(workbench): replace brittle setTimeout with tick() in scene rename", + "type": "fix", + "scope": "workbench", + "additions": 8, + "deletions": 8, + "timestamp": "2026-04-18T15:50:57+02:00" + }, + { + "hash": "4e5c317", + "short": "feat(workbench): MRU fallback for active scene + atomic reorderScenes", + "type": "feat", + "scope": "workbench", + "additions": 54, + "deletions": 5, + "timestamp": "2026-04-18T16:02:23+02:00" + }, + { + "hash": "afdbc43", + "short": "refactor(page-carousel): name the IntersectionObserver magic numbers", + "type": "refactor", + "scope": "page-carousel", + "additions": 9, + "deletions": 5, + "timestamp": "2026-04-18T16:08:27+02:00" + }, + { + "hash": "120a191", + "short": "test(workbench): pure-helper coverage for toScene + pickActiveId", + "type": "test", + "scope": "workbench", + "additions": 167, + "deletions": 2, + "timestamp": "2026-04-18T16:19:14+02:00" + }, + { + "hash": "5d67179", + "short": "docs(workbench): plan for scene-scope empty state", + "type": "docs", + "scope": "workbench", + "additions": 158, + "deletions": 0, + "timestamp": "2026-04-18T16:23:13+02:00" + }, + { + "hash": "536fc89", + "short": "fix(research): Claude Opus 4.7 rejects `temperature` param + log executor errors", + "type": "fix", + "scope": "research", + "additions": 20, + "deletions": 14, + "timestamp": "2026-04-18T16:36:22+02:00" + }, + { + "hash": "97abd25", + "short": "fix(events): Eventbrite provider — switch from dead API to web scraping", + "type": "fix", + "scope": "events", + "additions": 61, + "deletions": 156, + "timestamp": "2026-04-18T16:51:58+02:00" + }, + { + "hash": "f09a84a", + "short": "feat(workbench): scope-aware empty state for scoped modules", + "type": "feat", + "scope": "workbench", + "additions": 162, + "deletions": 4, + "timestamp": "2026-04-18T16:52:14+02:00" + }, + { + "hash": "dcec0d3", + "short": "feat(workbench): scope-active badge on scene pills", + "type": "feat", + "scope": "workbench", + "additions": 21, + "deletions": 1, + "timestamp": "2026-04-18T16:59:53+02:00" + }, + { + "hash": "85537cb", + "short": "fix(research): default Gemini to 2.5-flash (2.0-flash deprecated for new users)", + "type": "fix", + "scope": "research", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-18T17:01:24+02:00" + }, + { + "hash": "0f4535c", + "short": "feat(workbench): interactive scope badge — click to clear, tooltip lists tags", + "type": "feat", + "scope": "workbench", + "additions": 51, + "deletions": 1, + "timestamp": "2026-04-18T17:05:05+02:00" + }, + { + "hash": "20ec81e", + "short": "style(research-lab): drop duplicate h2 title (PageShell already renders it)", + "type": "style", + "scope": "research-lab", + "additions": 7, + "deletions": 14, + "timestamp": "2026-04-18T17:12:27+02:00" + }, + { + "hash": "e813401", + "short": "style(research-lab): move help into MODULE_HELP, drop subtitle, keys-button to footer", + "type": "style", + "scope": "research-lab", + "additions": 48, + "deletions": 23, + "timestamp": "2026-04-18T17:16:51+02:00" + }, + { + "hash": "cd59450", + "short": "chore: clear svelte-check errors + document scene-scope pattern", + "type": null, + "scope": null, + "additions": 27, + "deletions": 1, + "timestamp": "2026-04-18T17:24:52+02:00" + }, + { + "hash": "b19f5a7", + "short": "docs(help-content): add MODULE_HELP entries for 17 missing modules", + "type": "docs", + "scope": "help-content", + "additions": 221, + "deletions": 0, + "timestamp": "2026-04-18T17:31:30+02:00" + }, + { + "hash": "8dd3dbc", + "short": "docs(mana-research): step-by-step API_KEYS.md setup guide", + "type": "docs", + "scope": "mana-research", + "additions": 390, + "deletions": 0, + "timestamp": "2026-04-18T18:50:06+02:00" + }, + { + "hash": "cce296a", + "short": "style(settings): rework \"Daten & Sync\" tab to match other sections", + "type": "style", + "scope": "settings", + "additions": 1182, + "deletions": 553, + "timestamp": "2026-04-18T18:51:19+02:00" + }, + { + "hash": "4efdcff", + "short": "feat(workbench): register Quiz as first-class app (Kreativ)", + "type": "feat", + "scope": "workbench", + "additions": 38, + "deletions": 0, + "timestamp": "2026-04-18T18:51:34+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-18/macher.md b/devlog/2026-04-18/macher.md new file mode 100644 index 000000000..56336a383 --- /dev/null +++ b/devlog/2026-04-18/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-18 +day: 87 +view: macher +weekday: Samstag +commits: 23 +review: written +--- + +# Samstag, 2026-04-18 — Tag 87 (Macher-Sicht) + +## Stats + +23 Commits, +8915 / −906 LoC, 75 Files. Top-Dirs: `apps/mana/apps/web` (43%), `services/mana-events/src` (40%), `packages/shared-ai/src` (4%), `services/mana-research/src` (3%), `docs/plans/event-discovery.md` (1%). Tags: workbench, events, research, research-lab, page-carousel. Session 13:30 → 16:51 (~122 aktive Min, längster Fokus 121 Min). + +## Commits + +- `b5d55fd` feat(events): add Event Discovery — Phase 1 + 2 (+5106/-46) +- `2f226a9` feat(workbench): user-visible error toasts + stale-SW safety net (+52/-21) +- `2c0d866` feat(events): Phase 3 — AI tools, Event-Scout template, feedback loop (+406/-0) +- `4d82381` perf(workbench): LRU-evict PageCarousel's mounted-cards cache (+18/-7) +- `ed801cf` feat(events): Phase 4 — provider adapters for Eventbrite + Meetup (+708/-44) +- `0a928c1` fix(workbench): replace brittle setTimeout with tick() in scene rename (+8/-8) +- `4e5c317` feat(workbench): MRU fallback for active scene + atomic reorderScenes (+54/-5) +- `afdbc43` refactor(page-carousel): name the IntersectionObserver magic numbers (+9/-5) +- `120a191` test(workbench): pure-helper coverage for toScene + pickActiveId (+167/-2) +- `5d67179` docs(workbench): plan for scene-scope empty state (+158/-0) +- `536fc89` fix(research): Claude Opus 4.7 rejects `temperature` param + log executor errors (+20/-14) +- `97abd25` fix(events): Eventbrite provider — switch from dead API to web scraping (+61/-156) +- `f09a84a` feat(workbench): scope-aware empty state for scoped modules (+162/-4) +- `dcec0d3` feat(workbench): scope-active badge on scene pills (+21/-1) +- `85537cb` fix(research): default Gemini to 2.5-flash (2.0-flash deprecated for new users) (+1/-1) +- `0f4535c` feat(workbench): interactive scope badge — click to clear, tooltip lists tags (+51/-1) +- `20ec81e` style(research-lab): drop duplicate h2 title (PageShell already renders it) (+7/-14) +- `e813401` style(research-lab): move help into MODULE_HELP, drop subtitle, keys-button to footer (+48/-23) +- `cd59450` chore: clear svelte-check errors + document scene-scope pattern (+27/-1) +- `b19f5a7` docs(help-content): add MODULE_HELP entries for 17 missing modules (+221/-0) + +_… plus 3 weitere Commits._ diff --git a/devlog/2026-04-18/spieler.md b/devlog/2026-04-18/spieler.md new file mode 100644 index 000000000..b11de5699 --- /dev/null +++ b/devlog/2026-04-18/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-18 +day: 87 +view: spieler +weekday: Samstag +commits: 23 +review: written +--- + +# Samstag, 2026-04-18 — Tag 87 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- add Event Discovery — Phase 1 + 2 +- user-visible error toasts + stale-SW safety net +- Phase 3 — AI tools, Event-Scout template, feedback loop +- LRU-evict PageCarousel's mounted-cards cache +- Phase 4 — provider adapters for Eventbrite + Meetup diff --git a/devlog/2026-04-19/data.json b/devlog/2026-04-19/data.json new file mode 100644 index 000000000..6e8b9747c --- /dev/null +++ b/devlog/2026-04-19/data.json @@ -0,0 +1,160 @@ +{ + "date": "2026-04-19", + "day_number": 88, + "weekday": "Sonntag", + "commits": 8, + "authors": [ + { + "name": "Till JS", + "count": 8 + } + ], + "additions": 1615, + "deletions": 223, + "net_lines": 1392, + "files_changed": 32, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-19T15:38:06.000Z", + "last_commit_at": "2026-04-19T17:50:52.000Z", + "total_span_minutes": 133, + "active_minutes": 35, + "pauses": [ + { + "from": "17:38", + "to": "19:15", + "minutes": 98 + } + ], + "longest_focus_minutes": 35 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 16 + }, + { + "path": "packages/shared-hono/src", + "pct": 13 + }, + { + "path": "services/mana-auth/src", + "pct": 8 + }, + { + "path": "pnpm-lock.yaml", + "pct": 5 + }, + { + "path": "CLAUDE.md", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 18 + }, + { + "ext": ".md", + "count": 9 + }, + { + "ext": ".json", + "count": 7 + }, + { + "ext": ".yaml", + "count": 2 + }, + { + "ext": ".yml", + "count": 1 + }, + { + "ext": ".mjs", + "count": 1 + } + ], + "tags": ["auth", "ai", "ai-tools", "ci", "database"], + "commits_list": [ + { + "hash": "76d11a8", + "short": "feat(auth): server-side tier gating via requireTier middleware", + "type": "feat", + "scope": "auth", + "additions": 208, + "deletions": 5, + "timestamp": "2026-04-19T17:38:06+02:00" + }, + { + "hash": "1f589c4", + "short": "docs(ai-tools): add how-to guide for wiring module tools to the AI agent", + "type": "docs", + "scope": "ai-tools", + "additions": 200, + "deletions": 0, + "timestamp": "2026-04-19T19:15:57+02:00" + }, + { + "hash": "4b8defc", + "short": "chore(ci): add v8 test coverage tracking (non-blocking baseline)", + "type": "chore", + "scope": "ci", + "additions": 392, + "deletions": 164, + "timestamp": "2026-04-19T19:21:14+02:00" + }, + { + "hash": "2bcc395", + "short": "feat(ai): add Quiz tools (create_quiz, add_quiz_question, list_quizzes)", + "type": "feat", + "scope": "ai", + "additions": 344, + "deletions": 1, + "timestamp": "2026-04-19T19:29:35+02:00" + }, + { + "hash": "a7fe828", + "short": "refactor(auth): extract sso-origins SSOT + harden drift test", + "type": "refactor", + "scope": "auth", + "additions": 51, + "deletions": 41, + "timestamp": "2026-04-19T19:45:42+02:00" + }, + { + "hash": "dd756c4", + "short": "docs(database): document the pgSchema isolation rule", + "type": "docs", + "scope": "database", + "additions": 60, + "deletions": 2, + "timestamp": "2026-04-19T19:47:37+02:00" + }, + { + "hash": "7fb31e4", + "short": "feat(ai): expand Quiz tools — edit/delete questions, edit meta, stats", + "type": "feat", + "scope": "ai", + "additions": 346, + "deletions": 4, + "timestamp": "2026-04-19T19:50:24+02:00" + }, + { + "hash": "c119fd7", + "short": "docs(quiz): refresh tools.ts header to list all 8 tools", + "type": "docs", + "scope": "quiz", + "additions": 14, + "deletions": 6, + "timestamp": "2026-04-19T19:50:52+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-19/macher.md b/devlog/2026-04-19/macher.md new file mode 100644 index 000000000..25e1f6626 --- /dev/null +++ b/devlog/2026-04-19/macher.md @@ -0,0 +1,25 @@ +--- +date: 2026-04-19 +day: 88 +view: macher +weekday: Sonntag +commits: 8 +review: written +--- + +# Sonntag, 2026-04-19 — Tag 88 (Macher-Sicht) + +## Stats + +8 Commits, +1615 / −223 LoC, 32 Files. Top-Dirs: `apps/mana/apps/web` (16%), `packages/shared-hono/src` (13%), `services/mana-auth/src` (8%), `pnpm-lock.yaml` (5%), `CLAUDE.md` (5%). Tags: auth, ai, ai-tools, ci, database. Session 15:38 → 17:50 (~35 aktive Min, längster Fokus 35 Min). + +## Commits + +- `76d11a8` feat(auth): server-side tier gating via requireTier middleware (+208/-5) +- `1f589c4` docs(ai-tools): add how-to guide for wiring module tools to the AI agent (+200/-0) +- `4b8defc` chore(ci): add v8 test coverage tracking (non-blocking baseline) (+392/-164) +- `2bcc395` feat(ai): add Quiz tools (create_quiz, add_quiz_question, list_quizzes) (+344/-1) +- `a7fe828` refactor(auth): extract sso-origins SSOT + harden drift test (+51/-41) +- `dd756c4` docs(database): document the pgSchema isolation rule (+60/-2) +- `7fb31e4` feat(ai): expand Quiz tools — edit/delete questions, edit meta, stats (+346/-4) +- `c119fd7` docs(quiz): refresh tools.ts header to list all 8 tools (+14/-6) diff --git a/devlog/2026-04-19/spieler.md b/devlog/2026-04-19/spieler.md new file mode 100644 index 000000000..6afc1e37d --- /dev/null +++ b/devlog/2026-04-19/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-19 +day: 88 +view: spieler +weekday: Sonntag +commits: 8 +review: written +--- + +# Sonntag, 2026-04-19 — Tag 88 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- server-side tier gating via requireTier middleware +- add how-to guide for wiring module tools to the AI agent +- add Quiz tools (create_quiz, add_quiz_question, list_quizzes) +- document the pgSchema isolation rule +- expand Quiz tools — edit/delete questions, edit meta, stats diff --git a/devlog/2026-04-20/data.json b/devlog/2026-04-20/data.json new file mode 100644 index 000000000..01cdf959f --- /dev/null +++ b/devlog/2026-04-20/data.json @@ -0,0 +1,700 @@ +{ + "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 A–D)", + "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 + } +} diff --git a/devlog/2026-04-20/macher.md b/devlog/2026-04-20/macher.md new file mode 100644 index 000000000..b929de90c --- /dev/null +++ b/devlog/2026-04-20/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-20 +day: 89 +view: macher +weekday: Montag +commits: 68 +review: written +--- + +# Montag, 2026-04-20 — Tag 89 (Macher-Sicht) + +## Stats + +68 Commits, +22189 / −111943 LoC, 965 Files. Top-Dirs: `apps/mana/apps/web` (24%), `apps/context/apps/mobile` (15%), `apps/picture/apps/mobile` (13%), `apps/cards/apps/mobile` (13%), `apps/chat/apps/mobile` (11%). Tags: spaces, invoices, ai, broadcast, type-check. Session 12:24 → 19:28 (~351 aktive Min, längster Fokus 203 Min). + +## Commits + +- `52d008d` fix(goals): start GoalTracker on boot + surface AI proposals inline (+35/-7) +- `a2598b9` feat(crypto): type-safe registry entries + dev-mode drift check (+122/-14) +- `c7af693` feat(crypto): Phase C — build-time registry ↔ Dexie audit (+406/-3) +- `1eda3f5` chore(turbo): lint against recursive \`turbo run\` calls in child packages (+98/-1) +- `5ec1dfc` chore(db): enforce pgSchema isolation with a lint script (+114/-8) +- `d1d3774` fix(install): remove silent `|| true` from postinstall + narrow filter (+13/-9) +- `da47f53` docs(plans): function-calling migration + removal of propose/approve gate (+298/-0) +- `c34175a` fix(type-check): repair silently broken per-package type-check scripts (+26/-5) +- `4b8fede` fix(mana-llm): surface Gemini finish_reason errors instead of returning "" (+208/-13) +- `c612a22` fix(type-check): unblock two more pre-existing failures (+7/-2) +- `e757470` feat(mana-llm): add OpenAI-style tools + tool_calls passthrough (+566/-79) +- `4523ab2` feat(shared-ai): toolToFunctionSchema — catalog → OpenAI function-spec (+235/-2) +- `11f768b` docs(invoices): ClubDesk vs. Mana comparison + invoices module plan (+675/-0) +- `2cf89ce` feat(invoices): M1 skeleton — module registration + empty ListView (+666/-0) +- `4daca89` feat(shared-ai): runPlannerLoop + compact system prompt for function calling (+537/-1) +- `248137e` chore(mobile): remove 6 of 7 mobile apps — keep only memoro (+26/-106334) +- `8d00ee0` feat(invoices): M2 CRUD — draft lifecycle, totals, list + detail (+2704/-61) +- `a44e3df` refactor(mana): remove post-signup onboarding wizard (+1/-1329) +- `0077752` fix(type-check): clear the last five failures — monorepo type-check is now 76/76 green (+22/-10) +- `2dc298a` feat(invoices): M4 PDF rendering — pdf-lib renderer + preview + download (+904/-172) + +_… plus 48 weitere Commits._ diff --git a/devlog/2026-04-20/spieler.md b/devlog/2026-04-20/spieler.md new file mode 100644 index 000000000..dec9c9cac --- /dev/null +++ b/devlog/2026-04-20/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-20 +day: 89 +view: spieler +weekday: Montag +commits: 68 +review: written +--- + +# Montag, 2026-04-20 — Tag 89 + +Großer Sprint-Tag mit Schwerpunkt **apps** (68 Commits). + +## Highlights + +- start GoalTracker on boot + surface AI proposals inline +- type-safe registry entries + dev-mode drift check +- Phase C — build-time registry ↔ Dexie audit +- remove silent `|| true` from postinstall + narrow filter +- function-calling migration + removal of propose/approve gate diff --git a/devlog/2026-04-21/data.json b/devlog/2026-04-21/data.json new file mode 100644 index 000000000..c6386dcb3 --- /dev/null +++ b/devlog/2026-04-21/data.json @@ -0,0 +1,282 @@ +{ + "date": "2026-04-21", + "day_number": 90, + "weekday": "Dienstag", + "commits": 21, + "authors": [ + { + "name": "Till JS", + "count": 21 + } + ], + "additions": 10753, + "deletions": 2708, + "net_lines": 8045, + "files_changed": 113, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-21T11:53:13.000Z", + "last_commit_at": "2026-04-21T17:03:33.000Z", + "total_span_minutes": 310, + "active_minutes": 158, + "pauses": [ + { + "from": "13:55", + "to": "14:43", + "minutes": 48 + }, + { + "from": "16:32", + "to": "18:17", + "minutes": 104 + } + ], + "longest_focus_minutes": 109 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 65 + }, + { + "path": "services/mana-mail/src", + "pct": 16 + }, + { + "path": "packages/shared-branding/src", + "pct": 4 + }, + { + "path": "docs/plans/articles-module.md", + "pct": 2 + }, + { + "path": "packages/shared-pwa/src", + "pct": 2 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 74 + }, + { + "ext": ".svelte", + "count": 55 + }, + { + "ext": ".json", + "count": 6 + }, + { + "ext": ".md", + "count": 4 + }, + { + "ext": ".yaml", + "count": 1 + }, + { + "ext": ".development", + "count": 1 + } + ], + "tags": ["broadcast", "spaces", "articles", "apps", "ai"], + "commits_list": [ + { + "hash": "f17383f", + "short": "feat(broadcast): M4 bulk-send via mana-mail + tracking infrastructure", + "type": "feat", + "scope": "broadcast", + "additions": 1410, + "deletions": 28, + "timestamp": "2026-04-21T13:53:13+02:00" + }, + { + "hash": "c9141e3", + "short": "fix(spaces): keep process.env out of the browser branch in authBaseUrl", + "type": "fix", + "scope": "spaces", + "additions": 9, + "deletions": 2, + "timestamp": "2026-04-21T13:55:32+02:00" + }, + { + "hash": "d887fc1", + "short": "feat(broadcast): settings + detail view + compliance polish", + "type": "feat", + "scope": "broadcast", + "additions": 746, + "deletions": 10, + "timestamp": "2026-04-21T14:43:36+02:00" + }, + { + "hash": "a312d98", + "short": "feat(broadcast): click-link tracking + send throttle", + "type": "feat", + "scope": "broadcast", + "additions": 199, + "deletions": 2, + "timestamp": "2026-04-21T15:07:58+02:00" + }, + { + "hash": "c5a76d7", + "short": "fix(spaces): SpaceCreateDialog now reads in dark mode + cards all visible", + "type": "fix", + "scope": "spaces", + "additions": 106, + "deletions": 43, + "timestamp": "2026-04-21T15:20:48+02:00" + }, + { + "hash": "75832fa", + "short": "feat(broadcast): enhanced ListView + dashboard widget + AI tools", + "type": "feat", + "scope": "broadcast", + "additions": 623, + "deletions": 11, + "timestamp": "2026-04-21T15:27:59+02:00" + }, + { + "hash": "260dd31", + "short": "feat(broadcast): M8 DNS auth check (SPF / DKIM / DMARC)", + "type": "feat", + "scope": "broadcast", + "additions": 771, + "deletions": 0, + "timestamp": "2026-04-21T15:48:03+02:00" + }, + { + "hash": "be45dcf", + "short": "fix(ai): defer seed-registry side-effect imports to browser boot", + "type": "fix", + "scope": "ai", + "additions": 29, + "deletions": 8, + "timestamp": "2026-04-21T15:54:00+02:00" + }, + { + "hash": "8e70bc9", + "short": "fix(spaces): persist active-space choice across reloads via localStorage", + "type": "fix", + "scope": "spaces", + "additions": 73, + "deletions": 20, + "timestamp": "2026-04-21T16:04:30+02:00" + }, + { + "hash": "8f6a4ef", + "short": "fix(spaces): /spaces/members dark-mode — theme tokens throughout", + "type": "fix", + "scope": "spaces", + "additions": 139, + "deletions": 54, + "timestamp": "2026-04-21T16:11:03+02:00" + }, + { + "hash": "3357e88", + "short": "feat(articles): new read-it-later module — save / read / highlight", + "type": "feat", + "scope": "articles", + "additions": 2819, + "deletions": 1, + "timestamp": "2026-04-21T16:20:23+02:00" + }, + { + "hash": "1861e89", + "short": "chore(broadcast): wire mana-mail into env pipeline + push schema", + "type": "chore", + "scope": "broadcast", + "additions": 62, + "deletions": 1, + "timestamp": "2026-04-21T16:21:57+02:00" + }, + { + "hash": "9d6a5a5", + "short": "feat(apps): register agents + timeline as MANA_APPS + broadcast URL fix + members page chrome", + "type": "feat", + "scope": "apps", + "additions": 81, + "deletions": 88, + "timestamp": "2026-04-21T16:32:41+02:00" + }, + { + "hash": "04293ed", + "short": "feat(articles): M4 tags + status filter, M5 migrate news:type='saved'", + "type": "feat", + "scope": "articles", + "additions": 415, + "deletions": 918, + "timestamp": "2026-04-21T18:17:04+02:00" + }, + { + "hash": "12be75e", + "short": "fix(broadcast): track route paths + shared-branding tsconfig", + "type": "fix", + "scope": "broadcast", + "additions": 5, + "deletions": 4, + "timestamp": "2026-04-21T18:30:47+02:00" + }, + { + "hash": "5924f4f", + "short": "feat(articles): M6 AI tools — list / save / archive / tag / highlight", + "type": "feat", + "scope": "articles", + "additions": 447, + "deletions": 1, + "timestamp": "2026-04-21T18:46:13+02:00" + }, + { + "hash": "88eca8a", + "short": "feat(spaces): Spaces as workbench card + canonical /spaces route", + "type": "feat", + "scope": "spaces", + "additions": 555, + "deletions": 492, + "timestamp": "2026-04-21T18:53:03+02:00" + }, + { + "hash": "92fe23d", + "short": "feat(apps): admin panels + module settings as workbench cards", + "type": "feat", + "scope": "apps", + "additions": 1742, + "deletions": 1018, + "timestamp": "2026-04-21T18:53:46+02:00" + }, + { + "hash": "177734a", + "short": "fix(tsconfig): unblock shared-types consumers", + "type": "fix", + "scope": "tsconfig", + "additions": 14, + "deletions": 1, + "timestamp": "2026-04-21T18:53:55+02:00" + }, + { + "hash": "831c30e", + "short": "docs(plans): workbench-cards migration plan", + "type": "docs", + "scope": "plans", + "additions": 160, + "deletions": 0, + "timestamp": "2026-04-21T18:57:22+02:00" + }, + { + "hash": "8a991f7", + "short": "feat(articles): M7 share-target + bookmarklet — save from anywhere", + "type": "feat", + "scope": "articles", + "additions": 348, + "deletions": 6, + "timestamp": "2026-04-21T19:03:33+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-21/macher.md b/devlog/2026-04-21/macher.md new file mode 100644 index 000000000..7aa101072 --- /dev/null +++ b/devlog/2026-04-21/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-21 +day: 90 +view: macher +weekday: Dienstag +commits: 21 +review: written +--- + +# Dienstag, 2026-04-21 — Tag 90 (Macher-Sicht) + +## Stats + +21 Commits, +10753 / −2708 LoC, 113 Files. Top-Dirs: `apps/mana/apps/web` (65%), `services/mana-mail/src` (16%), `packages/shared-branding/src` (4%), `docs/plans/articles-module.md` (2%), `packages/shared-pwa/src` (2%). Tags: broadcast, spaces, articles, apps, ai. Session 11:53 → 17:03 (~158 aktive Min, längster Fokus 109 Min). + +## Commits + +- `f17383f` feat(broadcast): M4 bulk-send via mana-mail + tracking infrastructure (+1410/-28) +- `c9141e3` fix(spaces): keep process.env out of the browser branch in authBaseUrl (+9/-2) +- `d887fc1` feat(broadcast): settings + detail view + compliance polish (+746/-10) +- `a312d98` feat(broadcast): click-link tracking + send throttle (+199/-2) +- `c5a76d7` fix(spaces): SpaceCreateDialog now reads in dark mode + cards all visible (+106/-43) +- `75832fa` feat(broadcast): enhanced ListView + dashboard widget + AI tools (+623/-11) +- `260dd31` feat(broadcast): M8 DNS auth check (SPF / DKIM / DMARC) (+771/-0) +- `be45dcf` fix(ai): defer seed-registry side-effect imports to browser boot (+29/-8) +- `8e70bc9` fix(spaces): persist active-space choice across reloads via localStorage (+73/-20) +- `8f6a4ef` fix(spaces): /spaces/members dark-mode — theme tokens throughout (+139/-54) +- `3357e88` feat(articles): new read-it-later module — save / read / highlight (+2819/-1) +- `1861e89` chore(broadcast): wire mana-mail into env pipeline + push schema (+62/-1) +- `9d6a5a5` feat(apps): register agents + timeline as MANA_APPS + broadcast URL fix + members page chrome (+81/-88) +- `04293ed` feat(articles): M4 tags + status filter, M5 migrate news:type='saved' (+415/-918) +- `12be75e` fix(broadcast): track route paths + shared-branding tsconfig (+5/-4) +- `5924f4f` feat(articles): M6 AI tools — list / save / archive / tag / highlight (+447/-1) +- `88eca8a` feat(spaces): Spaces as workbench card + canonical /spaces route (+555/-492) +- `92fe23d` feat(apps): admin panels + module settings as workbench cards (+1742/-1018) +- `177734a` fix(tsconfig): unblock shared-types consumers (+14/-1) +- `831c30e` docs(plans): workbench-cards migration plan (+160/-0) + +_… plus 1 weitere Commits._ diff --git a/devlog/2026-04-21/spieler.md b/devlog/2026-04-21/spieler.md new file mode 100644 index 000000000..5de669df7 --- /dev/null +++ b/devlog/2026-04-21/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-21 +day: 90 +view: spieler +weekday: Dienstag +commits: 21 +review: written +--- + +# Dienstag, 2026-04-21 — Tag 90 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- M4 bulk-send via mana-mail + tracking infrastructure +- keep process.env out of the browser branch in authBaseUrl +- settings + detail view + compliance polish +- click-link tracking + send throttle +- SpaceCreateDialog now reads in dark mode + cards all visible diff --git a/devlog/2026-04-22/data.json b/devlog/2026-04-22/data.json new file mode 100644 index 000000000..880aa2d30 --- /dev/null +++ b/devlog/2026-04-22/data.json @@ -0,0 +1,671 @@ +{ + "date": "2026-04-22", + "day_number": 91, + "weekday": "Mittwoch", + "commits": 62, + "authors": [ + { + "name": "Till JS", + "count": 62 + } + ], + "additions": 34592, + "deletions": 23643, + "net_lines": 10949, + "files_changed": 390, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-22T12:12:18.000Z", + "last_commit_at": "2026-04-23T00:34:22.000Z", + "total_span_minutes": 742, + "active_minutes": 245, + "pauses": [ + { + "from": "14:21", + "to": "14:53", + "minutes": 31 + }, + { + "from": "16:28", + "to": "17:00", + "minutes": 33 + }, + { + "from": "19:16", + "to": "22:42", + "minutes": 206 + }, + { + "from": "22:43", + "to": "00:36", + "minutes": 114 + }, + { + "from": "00:38", + "to": "01:51", + "minutes": 73 + }, + { + "from": "01:51", + "to": "02:31", + "minutes": 40 + } + ], + "longest_focus_minutes": 136 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 83 + }, + { + "path": "services/mana-research/src", + "pct": 3 + }, + { + "path": "package.json", + "pct": 1 + }, + { + "path": "docs/plans/space-scoped-data-model.md", + "pct": 1 + }, + { + "path": "services/mana-ai/src", + "pct": 1 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 382 + }, + { + "ext": ".ts", + "count": 77 + }, + { + "ext": ".md", + "count": 30 + }, + { + "ext": ".json", + "count": 15 + }, + { + "ext": ".mjs", + "count": 13 + }, + { + "ext": ".svelte}", + "count": 4 + } + ], + "tags": ["plans", "theming", "articles", "db", "mana-research"], + "commits_list": [ + { + "hash": "7611d10", + "short": "feat(articles): M8 highlights view + stats + dashboard widget", + "type": "feat", + "scope": "articles", + "additions": 631, + "deletions": 2, + "timestamp": "2026-04-22T14:12:18+02:00" + }, + { + "hash": "5bf3ea8", + "short": "refactor(admin): drop nav tabs + overview duplication from layout", + "type": "refactor", + "scope": "admin", + "additions": 50, + "deletions": 194, + "timestamp": "2026-04-22T14:16:56+02:00" + }, + { + "hash": "97d1dd0", + "short": "fix(articles): snapshot scroller ref in HighlightLayer effect teardown", + "type": "fix", + "scope": "articles", + "additions": 14, + "deletions": 5, + "timestamp": "2026-04-22T14:21:32+02:00" + }, + { + "hash": "8647bfd", + "short": "Create tipps-module.md", + "type": null, + "scope": null, + "additions": 228, + "deletions": 0, + "timestamp": "2026-04-22T14:21:57+02:00" + }, + { + "hash": "3e65637", + "short": "revert(apps): settings pages back to routes (not workbench cards)", + "type": "revert", + "scope": "apps", + "additions": 493, + "deletions": 578, + "timestamp": "2026-04-22T14:53:15+02:00" + }, + { + "hash": "43b4570", + "short": "refactor(admin): fuse admin-* cards into one tabbed admin card", + "type": "refactor", + "scope": "admin", + "additions": 580, + "deletions": 624, + "timestamp": "2026-04-22T15:04:12+02:00" + }, + { + "hash": "dc22240", + "short": "docs(plans): revise workbench-cards plan for cards-for-workflows rule", + "type": "docs", + "scope": "plans", + "additions": 159, + "deletions": 123, + "timestamp": "2026-04-22T15:05:48+02:00" + }, + { + "hash": "a2a43b1", + "short": "refactor(theming): migrate 6 ListViews + ai-missions badges to theme tokens", + "type": "refactor", + "scope": "theming", + "additions": 188, + "deletions": 75, + "timestamp": "2026-04-22T15:23:55+02:00" + }, + { + "hash": "86c205f", + "short": "refactor(theming): migrate remaining 12 ListViews to theme tokens", + "type": "refactor", + "scope": "theming", + "additions": 129, + "deletions": 124, + "timestamp": "2026-04-22T15:29:43+02:00" + }, + { + "hash": "efe1810", + "short": "feat(articles): browser-HTML bookmarklet + consent-wall detection + auto-save", + "type": "feat", + "scope": "articles", + "additions": 589, + "deletions": 91, + "timestamp": "2026-04-22T15:29:53+02:00" + }, + { + "hash": "db2023a", + "short": "docs(plans): per-Space vs user-global tags — decision deferred", + "type": "docs", + "scope": "plans", + "additions": 221, + "deletions": 0, + "timestamp": "2026-04-22T15:32:15+02:00" + }, + { + "hash": "7d6a340", + "short": "refactor(theming): migrate remaining 738 token violations across routes + components", + "type": "refactor", + "scope": "theming", + "additions": 747, + "deletions": 460, + "timestamp": "2026-04-22T15:42:55+02:00" + }, + { + "hash": "470f3b1", + "short": "docs(plans): space-scoped data model (Modell β) — commit plan", + "type": "docs", + "scope": "plans", + "additions": 342, + "deletions": 0, + "timestamp": "2026-04-22T15:54:31+02:00" + }, + { + "hash": "46c03e6", + "short": "feat(articles): reader UI polish — full-bleed + unified floating toolbar", + "type": "feat", + "scope": "articles", + "additions": 327, + "deletions": 184, + "timestamp": "2026-04-22T15:55:56+02:00" + }, + { + "hash": "ea71d3c", + "short": "refactor(theming): replace transition-all with specific transitions", + "type": "refactor", + "scope": "theming", + "additions": 285, + "deletions": 102, + "timestamp": "2026-04-22T15:57:49+02:00" + }, + { + "hash": "129971f", + "short": "docs(plans): revise space-scoped plan — remove legacy residues", + "type": "docs", + "scope": "plans", + "additions": 339, + "deletions": 234, + "timestamp": "2026-04-22T16:23:42+02:00" + }, + { + "hash": "9db0441", + "short": "docs(plans): Phase 1 audit — space-scoped migration", + "type": "docs", + "scope": "plans", + "additions": 118, + "deletions": 4, + "timestamp": "2026-04-22T16:28:00+02:00" + }, + { + "hash": "3e09ff6", + "short": "fix(a11y): resolve 30 svelte-check warnings across 8 files", + "type": "fix", + "scope": "a11y", + "additions": 90, + "deletions": 24, + "timestamp": "2026-04-22T17:00:59+02:00" + }, + { + "hash": "766ad2e", + "short": "feat(crypto): Phase 2a — declare encryption intent for tags/scenes/missions", + "type": "feat", + "scope": "crypto", + "additions": 36, + "deletions": 4, + "timestamp": "2026-04-22T17:07:05+02:00" + }, + { + "hash": "430aa30", + "short": "refactor(theming): re-apply theme validator suite after parallel rebase", + "type": "refactor", + "scope": "theming", + "additions": 411, + "deletions": 17, + "timestamp": "2026-04-22T17:07:48+02:00" + }, + { + "hash": "07e35d7", + "short": "feat(db): Phase 2b — Dexie v34 schema for space-scoped data model", + "type": "feat", + "scope": "db", + "additions": 28, + "deletions": 0, + "timestamp": "2026-04-22T17:15:48+02:00" + }, + { + "hash": "eec369b", + "short": "chore(i18n): add coverage audit + migration inventory", + "type": "chore", + "scope": "i18n", + "additions": 324, + "deletions": 0, + "timestamp": "2026-04-22T17:16:55+02:00" + }, + { + "hash": "52af8c0", + "short": "refactor(theming): migrate who semantic colours to theme tokens", + "type": "refactor", + "scope": "theming", + "additions": 28, + "deletions": 12, + "timestamp": "2026-04-22T17:19:53+02:00" + }, + { + "hash": "4d91e2d", + "short": "chore(services): add port-drift audit", + "type": "chore", + "scope": "services", + "additions": 156, + "deletions": 0, + "timestamp": "2026-04-22T17:22:37+02:00" + }, + { + "hash": "35d9e02", + "short": "feat(tag-presets): Phase 2d.1 — CRUD store + encryption for user-level presets", + "type": "feat", + "scope": "tag-presets", + "additions": 237, + "deletions": 1, + "timestamp": "2026-04-22T17:26:39+02:00" + }, + { + "hash": "219ccd3", + "short": "chore(web): harden pnpm check with --fail-on-warnings", + "type": "chore", + "scope": "web", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-22T17:33:50+02:00" + }, + { + "hash": "8a82f3c", + "short": "feat(kontext): Phase 2d.2 — kontextDoc is per-Space, not user-singleton", + "type": "feat", + "scope": "kontext", + "additions": 67, + "deletions": 25, + "timestamp": "2026-04-22T17:35:23+02:00" + }, + { + "hash": "68c0eb2", + "short": "chore(test + audit): add test-coverage audit + wire audit:all", + "type": "chore", + "scope": "test + audit", + "additions": 182, + "deletions": 0, + "timestamp": "2026-04-22T17:38:12+02:00" + }, + { + "hash": "a36e543", + "short": "feat(agents): Phase 2d.3 — SpaceType-aware default agent bootstrap", + "type": "feat", + "scope": "agents", + "additions": 97, + "deletions": 23, + "timestamp": "2026-04-22T17:40:28+02:00" + }, + { + "hash": "72a5995", + "short": "feat(articles): M9 workbench homepage — 4-tab shell + QuickAdd + StatsView", + "type": "feat", + "scope": "articles", + "additions": 1267, + "deletions": 274, + "timestamp": "2026-04-22T17:50:38+02:00" + }, + { + "hash": "3b85d7d", + "short": "chore(bundle): add bundle-size audit + snapshot inventory", + "type": "chore", + "scope": "bundle", + "additions": 425, + "deletions": 13, + "timestamp": "2026-04-22T17:52:08+02:00" + }, + { + "hash": "f10a95e", + "short": "feat(mana-research): add Gemini 3.1 Pro Deep Research async providers", + "type": "feat", + "scope": "mana-research", + "additions": 592, + "deletions": 23, + "timestamp": "2026-04-22T17:55:30+02:00" + }, + { + "hash": "2a18cb5", + "short": "feat(mana-ai): v0.7 — cross-tick Deep Research Max pre-planning", + "type": "feat", + "scope": "mana-ai", + "additions": 947, + "deletions": 8, + "timestamp": "2026-04-22T17:56:06+02:00" + }, + { + "hash": "9f4ebd8", + "short": "docs(plans): log shipping status for space-scoped phases 2a–2d.4", + "type": "docs", + "scope": "plans", + "additions": 22, + "deletions": 0, + "timestamp": "2026-04-22T17:56:30+02:00" + }, + { + "hash": "596e5a7", + "short": "feat(tag-presets): Phase 2d.5a — applyPresetToSpace + copyTagsBetweenSpaces", + "type": "feat", + "scope": "tag-presets", + "additions": 177, + "deletions": 0, + "timestamp": "2026-04-22T18:02:06+02:00" + }, + { + "hash": "4d5a96e", + "short": "perf(invoices): lazy-load pdf-lib + swissqrbill, -516 KB on route", + "type": "perf", + "scope": "invoices", + "additions": 252, + "deletions": 48, + "timestamp": "2026-04-22T18:03:53+02:00" + }, + { + "hash": "81a426a", + "short": "feat(spaces): Phase 2d.5b — tag-source picker in SpaceCreateDialog", + "type": "feat", + "scope": "spaces", + "additions": 75, + "deletions": 2, + "timestamp": "2026-04-22T18:04:59+02:00" + }, + { + "hash": "ef76815", + "short": "docs(optimizable): add README index + refresh frontend-consistency tracker", + "type": "docs", + "scope": "optimizable", + "additions": 163, + "deletions": 37, + "timestamp": "2026-04-22T18:07:44+02:00" + }, + { + "hash": "0f8fbb3", + "short": "feat(settings): Phase 2d.6 — Tag-Presets management UI", + "type": "feat", + "scope": "settings", + "additions": 381, + "deletions": 2, + "timestamp": "2026-04-22T18:10:28+02:00" + }, + { + "hash": "09e6a8b", + "short": "feat(crypto): Phase 2e — flip encryption on for tags/scenes/missions", + "type": "feat", + "scope": "crypto", + "additions": 26, + "deletions": 24, + "timestamp": "2026-04-22T18:13:34+02:00" + }, + { + "hash": "4867300", + "short": "fix(mana-research): wire REDIS_PASSWORD into compose REDIS_URL", + "type": "fix", + "scope": "mana-research", + "additions": 6, + "deletions": 1, + "timestamp": "2026-04-22T18:20:31+02:00" + }, + { + "hash": "d5b889a", + "short": "docs(gemini-deep-research): Mac-Mini deploy log 2026-04-22", + "type": "docs", + "scope": "gemini-deep-research", + "additions": 21, + "deletions": 1, + "timestamp": "2026-04-22T18:22:31+02:00" + }, + { + "hash": "e9b9544", + "short": "feat(db): Phase 2c — stop stamping userId on data-record writes", + "type": "feat", + "scope": "db", + "additions": 47, + "deletions": 8, + "timestamp": "2026-04-22T18:27:11+02:00" + }, + { + "hash": "c413ab7", + "short": "test(mana-research): fixture-based tests for Gemini poll-response parser", + "type": "test", + "scope": "mana-research", + "additions": 375, + "deletions": 0, + "timestamp": "2026-04-22T18:34:33+02:00" + }, + { + "hash": "be9213a", + "short": "docs(plans): log 2d.5/2d.6/2e/2c/2e-followup to the shipping table", + "type": "docs", + "scope": "plans", + "additions": 25, + "deletions": 10, + "timestamp": "2026-04-22T18:35:51+02:00" + }, + { + "hash": "f4c6624", + "short": "feat(db): Phase 2c follow-up — Dexie v35 hard userId drop on data tables", + "type": "feat", + "scope": "db", + "additions": 70, + "deletions": 0, + "timestamp": "2026-04-22T18:43:09+02:00" + }, + { + "hash": "c31dcdd", + "short": "Revert \"test(mana-research): fixture-based tests for Gemini poll-response parser\"", + "type": null, + "scope": null, + "additions": 0, + "deletions": 375, + "timestamp": "2026-04-22T18:43:48+02:00" + }, + { + "hash": "3a7bc7f", + "short": "test(mana-research): fixture-based tests for Gemini poll-response parser", + "type": "test", + "scope": "mana-research", + "additions": 208, + "deletions": 0, + "timestamp": "2026-04-22T18:44:21+02:00" + }, + { + "hash": "fd1ea47", + "short": "feat(backup): client-driven v2 snapshot export, drop server-side backup", + "type": "feat", + "scope": "backup", + "additions": 2142, + "deletions": 1527, + "timestamp": "2026-04-22T18:46:29+02:00" + }, + { + "hash": "8c3d6e7", + "short": "test(backup): add v2 export/import round-trip + fix cross-account adoption", + "type": "test", + "scope": "backup", + "additions": 270, + "deletions": 4, + "timestamp": "2026-04-22T18:59:19+02:00" + }, + { + "hash": "59a679a", + "short": "docs(optimizable): add manual-test-backlog as the \"zu testen\" register", + "type": "docs", + "scope": "optimizable", + "additions": 78, + "deletions": 0, + "timestamp": "2026-04-22T19:02:55+02:00" + }, + { + "hash": "ce5d1f1", + "short": "feat(db): Phase 2c-followup #2 — strip Space-scope fields from user-level tables", + "type": "feat", + "scope": "db", + "additions": 71, + "deletions": 19, + "timestamp": "2026-04-22T19:13:37+02:00" + }, + { + "hash": "4250747", + "short": "docs(plans): log v35+v36 hard cleanups + backend-coherence audit", + "type": "docs", + "scope": "plans", + "additions": 25, + "deletions": 0, + "timestamp": "2026-04-22T19:16:34+02:00" + }, + { + "hash": "af4fd27", + "short": "feat(crypto): restore at-rest encryption sweep (lost to revert)", + "type": "feat", + "scope": "crypto", + "additions": 167, + "deletions": 0, + "timestamp": "2026-04-22T22:42:53+02:00" + }, + { + "hash": "4c2fbec", + "short": "docs(plans): point at-rest-sweep row at the restored commit", + "type": "docs", + "scope": "plans", + "additions": 7, + "deletions": 6, + "timestamp": "2026-04-22T22:43:19+02:00" + }, + { + "hash": "13b785b", + "short": "refactor(shell): unify card + route chrome into ModuleShell + RoutePage", + "type": "refactor", + "scope": "shell", + "additions": 243, + "deletions": 99, + "timestamp": "2026-04-23T00:36:54+02:00" + }, + { + "hash": "3a68a63", + "short": "feat(picture,api): GPT-Image-2 image generation", + "type": "feat", + "scope": "picture,api", + "additions": 457, + "deletions": 129, + "timestamp": "2026-04-23T00:37:15+02:00" + }, + { + "hash": "e21f214", + "short": "refactor(routes): wrap every (app) route in RoutePage / ModuleShell", + "type": "refactor", + "scope": "routes", + "additions": 18323, + "deletions": 17571, + "timestamp": "2026-04-23T00:37:53+02:00" + }, + { + "hash": "2d86c6d", + "short": "refactor(picture): unify ListView for carousel + route contexts", + "type": "refactor", + "scope": "picture", + "additions": 475, + "deletions": 395, + "timestamp": "2026-04-23T00:38:14+02:00" + }, + { + "hash": "738eb1b", + "short": "fix(ci): CD workflow detect-changes sees full push range + unified services", + "type": "fix", + "scope": "ci", + "additions": 155, + "deletions": 160, + "timestamp": "2026-04-23T01:51:01+02:00" + }, + { + "hash": "c1498c1", + "short": "fix(infra): include shared-types in mana-auth Dockerfile installer", + "type": "fix", + "scope": "infra", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-23T02:31:20+02:00" + }, + { + "hash": "5c08653", + "short": "fix(infra): include shared-ai + shared-rss in mana-api Dockerfile installer", + "type": "fix", + "scope": "infra", + "additions": 2, + "deletions": 0, + "timestamp": "2026-04-23T02:34:22+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-22/macher.md b/devlog/2026-04-22/macher.md new file mode 100644 index 000000000..344b55e9f --- /dev/null +++ b/devlog/2026-04-22/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-22 +day: 91 +view: macher +weekday: Mittwoch +commits: 62 +review: written +--- + +# Mittwoch, 2026-04-22 — Tag 91 (Macher-Sicht) + +## Stats + +62 Commits, +34592 / −23643 LoC, 390 Files. Top-Dirs: `apps/mana/apps/web` (83%), `services/mana-research/src` (3%), `package.json` (1%), `docs/plans/space-scoped-data-model.md` (1%), `services/mana-ai/src` (1%). Tags: plans, theming, articles, db, mana-research. Session 12:12 → 00:34 (~245 aktive Min, längster Fokus 136 Min). + +## Commits + +- `7611d10` feat(articles): M8 highlights view + stats + dashboard widget (+631/-2) +- `5bf3ea8` refactor(admin): drop nav tabs + overview duplication from layout (+50/-194) +- `97d1dd0` fix(articles): snapshot scroller ref in HighlightLayer effect teardown (+14/-5) +- `8647bfd` Create tipps-module.md (+228/-0) +- `3e65637` revert(apps): settings pages back to routes (not workbench cards) (+493/-578) +- `43b4570` refactor(admin): fuse admin-\* cards into one tabbed admin card (+580/-624) +- `dc22240` docs(plans): revise workbench-cards plan for cards-for-workflows rule (+159/-123) +- `a2a43b1` refactor(theming): migrate 6 ListViews + ai-missions badges to theme tokens (+188/-75) +- `86c205f` refactor(theming): migrate remaining 12 ListViews to theme tokens (+129/-124) +- `efe1810` feat(articles): browser-HTML bookmarklet + consent-wall detection + auto-save (+589/-91) +- `db2023a` docs(plans): per-Space vs user-global tags — decision deferred (+221/-0) +- `7d6a340` refactor(theming): migrate remaining 738 token violations across routes + components (+747/-460) +- `470f3b1` docs(plans): space-scoped data model (Modell β) — commit plan (+342/-0) +- `46c03e6` feat(articles): reader UI polish — full-bleed + unified floating toolbar (+327/-184) +- `ea71d3c` refactor(theming): replace transition-all with specific transitions (+285/-102) +- `129971f` docs(plans): revise space-scoped plan — remove legacy residues (+339/-234) +- `9db0441` docs(plans): Phase 1 audit — space-scoped migration (+118/-4) +- `3e09ff6` fix(a11y): resolve 30 svelte-check warnings across 8 files (+90/-24) +- `766ad2e` feat(crypto): Phase 2a — declare encryption intent for tags/scenes/missions (+36/-4) +- `430aa30` refactor(theming): re-apply theme validator suite after parallel rebase (+411/-17) + +_… plus 42 weitere Commits._ diff --git a/devlog/2026-04-22/spieler.md b/devlog/2026-04-22/spieler.md new file mode 100644 index 000000000..22060802a --- /dev/null +++ b/devlog/2026-04-22/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-22 +day: 91 +view: spieler +weekday: Mittwoch +commits: 62 +review: written +--- + +# Mittwoch, 2026-04-22 — Tag 91 + +Großer Sprint-Tag mit Schwerpunkt **apps** (62 Commits). + +## Highlights + +- M8 highlights view + stats + dashboard widget +- snapshot scroller ref in HighlightLayer effect teardown +- Create tipps-module.md +- revert(apps): settings pages back to routes (not workbench cards) +- revise workbench-cards plan for cards-for-workflows rule diff --git a/devlog/2026-04-23/data.json b/devlog/2026-04-23/data.json new file mode 100644 index 000000000..304cba7b0 --- /dev/null +++ b/devlog/2026-04-23/data.json @@ -0,0 +1,895 @@ +{ + "date": "2026-04-23", + "day_number": 92, + "weekday": "Donnerstag", + "commits": 88, + "authors": [ + { + "name": "Till JS", + "count": 88 + } + ], + "additions": 44269, + "deletions": 2706, + "net_lines": 41563, + "files_changed": 370, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-23T11:01:29.000Z", + "last_commit_at": "2026-04-24T00:41:27.000Z", + "total_span_minutes": 820, + "active_minutes": 441, + "pauses": [ + { + "from": "15:36", + "to": "18:09", + "minutes": 153 + }, + { + "from": "19:14", + "to": "21:07", + "minutes": 113 + }, + { + "from": "21:53", + "to": "22:24", + "minutes": 31 + }, + { + "from": "00:09", + "to": "01:31", + "minutes": 82 + } + ], + "longest_focus_minutes": 155 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 39 + }, + { + "path": "packages/website-blocks/src", + "pct": 11 + }, + { + "path": "apps/api/src/modules", + "pct": 5 + }, + { + "path": "services/mana-auth/src", + "pct": 5 + }, + { + "path": "packages/shared-ai/src", + "pct": 5 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 350 + }, + { + "ext": ".svelte", + "count": 118 + }, + { + "ext": ".md", + "count": 41 + }, + { + "ext": ".json", + "count": 28 + }, + { + "ext": ".sql", + "count": 7 + }, + { + "ext": ".yaml", + "count": 6 + } + ], + "tags": ["website", "wardrobe", "personas", "plans", "shared-ai"], + "commits_list": [ + { + "hash": "f719d17", + "short": "chore(infra): unify prod deploy on .env.macmini + document missing keys", + "type": "chore", + "scope": "infra", + "additions": 50, + "deletions": 6, + "timestamp": "2026-04-23T13:01:29+02:00" + }, + { + "hash": "16c8818", + "short": "feat(mcp): M1+M1.5 MCP gateway + tool-registry + shared-crypto", + "type": "feat", + "scope": "mcp", + "additions": 2855, + "deletions": 257, + "timestamp": "2026-04-23T13:18:35+02:00" + }, + { + "hash": "32c95a3", + "short": "chore(diagnostics): headless prod smoke scripts", + "type": "chore", + "scope": "diagnostics", + "additions": 258, + "deletions": 0, + "timestamp": "2026-04-23T13:42:52+02:00" + }, + { + "hash": "89258eb", + "short": "feat(profile,api): meImages foundation for AI reference generation (M1)", + "type": "feat", + "scope": "profile,api", + "additions": 790, + "deletions": 4, + "timestamp": "2026-04-23T13:50:53+02:00" + }, + { + "hash": "69f1261", + "short": "feat(infra): route events.mana.how + research.mana.how through tunnel", + "type": "feat", + "scope": "infra", + "additions": 4, + "deletions": 0, + "timestamp": "2026-04-23T13:51:53+02:00" + }, + { + "hash": "493db0c", + "short": "feat(personas): M2.a-c — persona schemas + admin endpoints + seed pipeline", + "type": "feat", + "scope": "personas", + "additions": 849, + "deletions": 8, + "timestamp": "2026-04-23T13:55:14+02:00" + }, + { + "hash": "e5d230e", + "short": "feat(agent-loop): M1 — policy gate + reminder channel + parallel reads", + "type": "feat", + "scope": "agent-loop", + "additions": 2550, + "deletions": 29, + "timestamp": "2026-04-23T13:56:40+02:00" + }, + { + "hash": "faa472b", + "short": "feat(mana-ai): first live reminder producers — token budget + retry-loop", + "type": "feat", + "scope": "mana-ai", + "additions": 330, + "deletions": 4, + "timestamp": "2026-04-23T14:00:04+02:00" + }, + { + "hash": "a1caeaa", + "short": "feat(personas): M3.a — scaffold mana-persona-runner service on :3070", + "type": "feat", + "scope": "personas", + "additions": 422, + "deletions": 2, + "timestamp": "2026-04-23T14:00:43+02:00" + }, + { + "hash": "a64a7e3", + "short": "feat(profile): UI for me-images management at /profile/me-images (M2)", + "type": "feat", + "scope": "profile", + "additions": 564, + "deletions": 5, + "timestamp": "2026-04-23T14:01:40+02:00" + }, + { + "hash": "54a12ff", + "short": "feat(webapp): wire isParallelSafe in Companion chat + Mission runner", + "type": "feat", + "scope": "webapp", + "additions": 5522, + "deletions": 111, + "timestamp": "2026-04-23T14:11:24+02:00" + }, + { + "hash": "38dc806", + "short": "feat(personas): M3.b-d — tick loop + Claude Agent SDK + persistence", + "type": "feat", + "scope": "personas", + "additions": 240, + "deletions": 0, + "timestamp": "2026-04-23T14:16:36+02:00" + }, + { + "hash": "f07eae3", + "short": "feat(personas): M3.b-d — tick loop + Claude Agent SDK + persistence (real)", + "type": "feat", + "scope": "personas", + "additions": 884, + "deletions": 19, + "timestamp": "2026-04-23T14:18:31+02:00" + }, + { + "hash": "c94ab01", + "short": "feat(mana-mcp): Prometheus metrics for policy gate + tool invocations", + "type": "feat", + "scope": "mana-mcp", + "additions": 89, + "deletions": 3, + "timestamp": "2026-04-23T14:23:08+02:00" + }, + { + "hash": "d087b47", + "short": "chore(observability): scrape mana-mcp at :3069", + "type": "chore", + "scope": "observability", + "additions": 237, + "deletions": 14, + "timestamp": "2026-04-23T14:24:13+02:00" + }, + { + "hash": "25c3bb6", + "short": "docs(mana-mcp,mana-ai): CLAUDE.md coverage for M1 agent-loop primitives", + "type": "docs", + "scope": "mana-mcp,mana-ai", + "additions": 32, + "deletions": 0, + "timestamp": "2026-04-23T14:25:14+02:00" + }, + { + "hash": "7a4f889", + "short": "feat(website): M3 — 5 more blocks, containers, upload, themes", + "type": "feat", + "scope": "website", + "additions": 2899, + "deletions": 40, + "timestamp": "2026-04-23T14:27:49+02:00" + }, + { + "hash": "79d1126", + "short": "feat(personas): M5.a — Playwright visual suite scaffold", + "type": "feat", + "scope": "personas", + "additions": 398, + "deletions": 1, + "timestamp": "2026-04-23T14:33:06+02:00" + }, + { + "hash": "57be0f6", + "short": "feat(website): M4 — forms + moduleEmbed", + "type": "feat", + "scope": "website", + "additions": 1817, + "deletions": 2, + "timestamp": "2026-04-23T14:36:52+02:00" + }, + { + "hash": "e2b5ac3", + "short": "feat(profile): migrate auth.users.image into meImages + avatar autosync (M2.5)", + "type": "feat", + "scope": "profile", + "additions": 211, + "deletions": 216, + "timestamp": "2026-04-23T14:38:20+02:00" + }, + { + "hash": "fc635f9", + "short": "feat(tool-registry): me.listReferenceImages + me.generateWithReference (M5)", + "type": "feat", + "scope": "tool-registry", + "additions": 257, + "deletions": 1, + "timestamp": "2026-04-23T14:43:56+02:00" + }, + { + "hash": "8f28372", + "short": "feat(agent-loop): activate retryLoopReminder via LoopState.recentCalls", + "type": "feat", + "scope": "agent-loop", + "additions": 171, + "deletions": 24, + "timestamp": "2026-04-23T15:02:40+02:00" + }, + { + "hash": "9589feb", + "short": "fix(infra): mana-web COPY + research URL + Umami version pin", + "type": "fix", + "scope": "infra", + "additions": 16, + "deletions": 1, + "timestamp": "2026-04-23T15:05:47+02:00" + }, + { + "hash": "638f9c3", + "short": "docs(plans): me-images M1-M5 status + new wardrobe plan", + "type": "docs", + "scope": "plans", + "additions": 429, + "deletions": 46, + "timestamp": "2026-04-23T15:08:45+02:00" + }, + { + "hash": "3edf680", + "short": "feat(mana-ai): telemetry for reminder producers (mana_ai_reminders_emitted_total)", + "type": "feat", + "scope": "mana-ai", + "additions": 100, + "deletions": 40, + "timestamp": "2026-04-23T15:10:27+02:00" + }, + { + "hash": "13efae8", + "short": "feat(website): M5 — AI tools + starter templates", + "type": "feat", + "scope": "website", + "additions": 1486, + "deletions": 235, + "timestamp": "2026-04-23T15:14:45+02:00" + }, + { + "hash": "13361eb", + "short": "feat(shared-ai): compactHistory() — context-window compactor primitive (M2.1)", + "type": "feat", + "scope": "shared-ai", + "additions": 475, + "deletions": 0, + "timestamp": "2026-04-23T15:21:10+02:00" + }, + { + "hash": "aab1e30", + "short": "docs(plans): wardrobe is space-scoped, allow in all six space types", + "type": "docs", + "scope": "plans", + "additions": 30, + "deletions": 6, + "timestamp": "2026-04-23T15:23:10+02:00" + }, + { + "hash": "3d8214a", + "short": "feat(shared-ai): wire compactor into runPlannerLoop (M2.2)", + "type": "feat", + "scope": "shared-ai", + "additions": 236, + "deletions": 2, + "timestamp": "2026-04-23T15:25:35+02:00" + }, + { + "hash": "5a5e24f", + "short": "chore(docker): drop obsolete services/mana-search/docker-compose.dev.yml", + "type": "chore", + "scope": "docker", + "additions": 0, + "deletions": 58, + "timestamp": "2026-04-23T15:27:19+02:00" + }, + { + "hash": "83a4606", + "short": "feat(mana-ai): wire context-window compactor into mission runner (M2.3)", + "type": "feat", + "scope": "mana-ai", + "additions": 68, + "deletions": 1, + "timestamp": "2026-04-23T15:28:20+02:00" + }, + { + "hash": "3eca5ac", + "short": "feat(website): M6 — subdomain publish + custom-domain foundation", + "type": "feat", + "scope": "website", + "additions": 1078, + "deletions": 17, + "timestamp": "2026-04-23T15:29:42+02:00" + }, + { + "hash": "703ef69", + "short": "feat(webapp): wire context-window compactor into Companion + Mission runner (M2.4)", + "type": "feat", + "scope": "webapp", + "additions": 43, + "deletions": 0, + "timestamp": "2026-04-23T15:33:18+02:00" + }, + { + "hash": "eb8fac2", + "short": "fix(personas): exact tool_use_id pairing + CI drift audit", + "type": "fix", + "scope": "personas", + "additions": 150, + "deletions": 12, + "timestamp": "2026-04-23T15:34:52+02:00" + }, + { + "hash": "700861f", + "short": "feat(pill-nav): show Anmelden pill for guests next to menu icon", + "type": "feat", + "scope": "pill-nav", + "additions": 10, + "deletions": 15, + "timestamp": "2026-04-23T15:36:09+02:00" + }, + { + "hash": "be8f561", + "short": "chore(setup:db): surface drizzle-kit errors instead of catch-all", + "type": "chore", + "scope": "setup:db", + "additions": 7, + "deletions": 1, + "timestamp": "2026-04-23T15:36:18+02:00" + }, + { + "hash": "72f7978", + "short": "feat(agent-loop): expose compactionsDone + compactedReminder producer", + "type": "feat", + "scope": "agent-loop", + "additions": 122, + "deletions": 0, + "timestamp": "2026-04-23T15:36:21+02:00" + }, + { + "hash": "52f53c8", + "short": "chore(mana-auth): add 005 persona tables migration", + "type": "chore", + "scope": "mana-auth", + "additions": 77, + "deletions": 0, + "timestamp": "2026-04-23T15:36:26+02:00" + }, + { + "hash": "89388fb", + "short": "refactor(mana-auth): move enums from public to auth schema", + "type": "refactor", + "scope": "mana-auth", + "additions": 101, + "deletions": 12, + "timestamp": "2026-04-23T15:36:39+02:00" + }, + { + "hash": "004b3b7", + "short": "chore(observability): Grafana dashboard for agent-loop metrics", + "type": "chore", + "scope": "observability", + "additions": 412, + "deletions": 0, + "timestamp": "2026-04-23T18:09:32+02:00" + }, + { + "hash": "cb9a9bb", + "short": "refactor(profile,tool-registry): flip meImages from user-scoped to space-scoped (v40)", + "type": "refactor", + "scope": "profile,tool-registry", + "additions": 235, + "deletions": 36, + "timestamp": "2026-04-23T18:09:57+02:00" + }, + { + "hash": "d68dbc9", + "short": "docs(optimizable): add MCP + personas live-smoke to manual-test-backlog", + "type": "docs", + "scope": "optimizable", + "additions": 60, + "deletions": 0, + "timestamp": "2026-04-23T18:12:06+02:00" + }, + { + "hash": "2769241", + "short": "docs(plans): agent-loop plan reflects M1 shipped + M2 core shipped", + "type": "docs", + "scope": "plans", + "additions": 50, + "deletions": 15, + "timestamp": "2026-04-23T18:12:58+02:00" + }, + { + "hash": "f7536bc", + "short": "feat(shared-ai): route compactor to Haiku-tier model by default (M2.5)", + "type": "feat", + "scope": "shared-ai", + "additions": 83, + "deletions": 16, + "timestamp": "2026-04-23T18:26:50+02:00" + }, + { + "hash": "4fc9d6c", + "short": "feat(wardrobe): module foundation — garments + outfits space-scoped data layer (M1)", + "type": "feat", + "scope": "wardrobe", + "additions": 1951, + "deletions": 51, + "timestamp": "2026-04-23T18:27:37+02:00" + }, + { + "hash": "d518169", + "short": "feat(website): M7 — observability + analytics + GC + M2-polish", + "type": "feat", + "scope": "website", + "additions": 3, + "deletions": 0, + "timestamp": "2026-04-23T18:30:49+02:00" + }, + { + "hash": "5a49bcb", + "short": "feat(wardrobe): garments UI — /wardrobe + /wardrobe/garment/[id] (M2)", + "type": "feat", + "scope": "wardrobe", + "additions": 926, + "deletions": 0, + "timestamp": "2026-04-23T18:37:38+02:00" + }, + { + "hash": "4966ca6", + "short": "feat(tool-registry): add mood module (log/today/recent)", + "type": "feat", + "scope": "tool-registry", + "additions": 265, + "deletions": 0, + "timestamp": "2026-04-23T18:39:00+02:00" + }, + { + "hash": "507af32", + "short": "docs(plans): spec for per-Space destructive-tools opt-in", + "type": "docs", + "scope": "plans", + "additions": 373, + "deletions": 0, + "timestamp": "2026-04-23T18:39:56+02:00" + }, + { + "hash": "441f956", + "short": "docs(website): smoketest walkthrough + manual-test-backlog entry", + "type": "docs", + "scope": "website", + "additions": 524, + "deletions": 0, + "timestamp": "2026-04-23T18:42:42+02:00" + }, + { + "hash": "2b89bf7", + "short": "feat(wardrobe): outfits composer + detail page + tab switcher (M3)", + "type": "feat", + "scope": "wardrobe", + "additions": 997, + "deletions": 5, + "timestamp": "2026-04-23T18:45:21+02:00" + }, + { + "hash": "d56ad39", + "short": "feat(wardrobe,picture): try-on integration — outfit → OpenAI edit (M4)", + "type": "feat", + "scope": "wardrobe,picture", + "additions": 352, + "deletions": 27, + "timestamp": "2026-04-23T18:52:57+02:00" + }, + { + "hash": "66b7e08", + "short": "feat(shared-ai): runSubAgent() primitive — Claude-Code I2A pattern (M3.1)", + "type": "feat", + "scope": "shared-ai", + "additions": 1138, + "deletions": 2, + "timestamp": "2026-04-23T18:59:05+02:00" + }, + { + "hash": "7e3f53f", + "short": "feat(tool-registry): wardrobe.* MCP tools — listGarments/listOutfits/createOutfit/tryOn (M5)", + "type": "feat", + "scope": "tool-registry", + "additions": 116, + "deletions": 129, + "timestamp": "2026-04-23T18:59:31+02:00" + }, + { + "hash": "101af46", + "short": "feat(shared-ai): LLM-facing `task` tool wrapper for runSubAgent (M3.2)", + "type": "feat", + "scope": "shared-ai", + "additions": 489, + "deletions": 0, + "timestamp": "2026-04-23T19:05:09+02:00" + }, + { + "hash": "66bfcb3", + "short": "feat(webapp): wire `task` tool into Companion chat + Mission runner (M3.3)", + "type": "feat", + "scope": "webapp", + "additions": 102, + "deletions": 41, + "timestamp": "2026-04-23T19:14:36+02:00" + }, + { + "hash": "f20ace0", + "short": "test(website): broad automated coverage across the builder surface", + "type": "test", + "scope": "website", + "additions": 844, + "deletions": 39, + "timestamp": "2026-04-23T21:07:40+02:00" + }, + { + "hash": "e082033", + "short": "feat(wardrobe): solo-garment try-on + plan-doc status updates (M4.1)", + "type": "feat", + "scope": "wardrobe", + "additions": 406, + "deletions": 103, + "timestamp": "2026-04-23T21:14:35+02:00" + }, + { + "hash": "36c427d", + "short": "fix(scope): align scope filter with guest-mode write hook", + "type": "fix", + "scope": "scope", + "additions": 80, + "deletions": 11, + "timestamp": "2026-04-23T21:25:29+02:00" + }, + { + "hash": "645993d", + "short": "feat(webapp): register wardrobe in workbench app-registry", + "type": "feat", + "scope": "webapp", + "additions": 15, + "deletions": 0, + "timestamp": "2026-04-23T21:32:13+02:00" + }, + { + "hash": "c404db5", + "short": "fix(website): publish failed with uuid type error on Better-Auth ids", + "type": "fix", + "scope": "website", + "additions": 31, + "deletions": 6, + "timestamp": "2026-04-23T21:43:57+02:00" + }, + { + "hash": "2531420", + "short": "fix(wardrobe): strip route-idiom wrapper from ListView so it fits both shells", + "type": "fix", + "scope": "wardrobe", + "additions": 69, + "deletions": 14, + "timestamp": "2026-04-23T21:53:19+02:00" + }, + { + "hash": "bdd4e05", + "short": "feat(website): reorder blocks via up/down arrows in inspector", + "type": "feat", + "scope": "website", + "additions": 123, + "deletions": 8, + "timestamp": "2026-04-23T22:24:00+02:00" + }, + { + "hash": "5a92e11", + "short": "feat(onboarding): M1 — data model + endpoints + client store", + "type": "feat", + "scope": "onboarding", + "additions": 504, + "deletions": 0, + "timestamp": "2026-04-23T22:24:49+02:00" + }, + { + "hash": "5aecf8b", + "short": "feat(onboarding): M2 — route guard + shell + Screen 1 (name)", + "type": "feat", + "scope": "onboarding", + "additions": 698, + "deletions": 238, + "timestamp": "2026-04-23T22:49:52+02:00" + }, + { + "hash": "d1ac8a6", + "short": "feat(onboarding): M3 — Screen 2 (Look — theme mode + variant)", + "type": "feat", + "scope": "onboarding", + "additions": 380, + "deletions": 3, + "timestamp": "2026-04-23T22:58:47+02:00" + }, + { + "hash": "1198d01", + "short": "feat(onboarding): M4 — Screen 3 (Templates) + finish handler", + "type": "feat", + "scope": "onboarding", + "additions": 579, + "deletions": 0, + "timestamp": "2026-04-23T23:03:00+02:00" + }, + { + "hash": "aa79090", + "short": "feat(website): full-bleed editor + unified sidebar with Seiten/Einfügen/Block tabs", + "type": "feat", + "scope": "website", + "additions": 156, + "deletions": 55, + "timestamp": "2026-04-23T23:03:19+02:00" + }, + { + "hash": "bb8e7c2", + "short": "feat(onboarding): M5 — settings re-trigger", + "type": "feat", + "scope": "onboarding", + "additions": 55, + "deletions": 0, + "timestamp": "2026-04-23T23:05:26+02:00" + }, + { + "hash": "aeba23f", + "short": "feat(profile,wardrobe,picture): inline me-image upload instead of deep-link", + "type": "feat", + "scope": "profile,wardrobe,picture", + "additions": 305, + "deletions": 59, + "timestamp": "2026-04-23T23:08:13+02:00" + }, + { + "hash": "00ddd1e", + "short": "fix(api/profile): send credentials cross-origin so Better-Auth updateUser works", + "type": "fix", + "scope": "api/profile", + "additions": 7, + "deletions": 0, + "timestamp": "2026-04-23T23:16:43+02:00" + }, + { + "hash": "4f40fda", + "short": "fix(mana-web): copy packages/website-blocks into the build context", + "type": "fix", + "scope": "mana-web", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-23T23:19:02+02:00" + }, + { + "hash": "81c0d8c", + "short": "feat(website): session-scoped undo/redo for the editor", + "type": "feat", + "scope": "website", + "additions": 381, + "deletions": 7, + "timestamp": "2026-04-23T23:21:42+02:00" + }, + { + "hash": "62267f3", + "short": "feat(wardrobe): upload feedback + success confirmation on face-ref banner", + "type": "feat", + "scope": "wardrobe", + "additions": 143, + "deletions": 30, + "timestamp": "2026-04-23T23:29:03+02:00" + }, + { + "hash": "4093b91", + "short": "fix(profile): setPrimary no longer overwrites face-ref with avatar", + "type": "fix", + "scope": "profile", + "additions": 139, + "deletions": 23, + "timestamp": "2026-04-23T23:38:59+02:00" + }, + { + "hash": "ca2809d", + "short": "docs(plans): visibility-system — unified 4-tier privacy model (planning)", + "type": "docs", + "scope": "plans", + "additions": 274, + "deletions": 0, + "timestamp": "2026-04-23T23:50:17+02:00" + }, + { + "hash": "2b5a7b1", + "short": "refactor(wardrobe): lift upload zone to top, move intro behind help icon", + "type": "refactor", + "scope": "wardrobe", + "additions": 52, + "deletions": 47, + "timestamp": "2026-04-24T00:09:56+02:00" + }, + { + "hash": "f9ca6ca", + "short": "chore(branding): drop wardrobe tier to guest for local testing [LOCAL PATCH]", + "type": "chore", + "scope": "branding", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-24T01:31:28+02:00" + }, + { + "hash": "15bedde", + "short": "fix(picture): use image[] array syntax for multi-ref gpt-image-2 edits", + "type": "fix", + "scope": "picture", + "additions": 41, + "deletions": 8, + "timestamp": "2026-04-24T01:43:01+02:00" + }, + { + "hash": "b204958", + "short": "feat(picture): fall back to gpt-image-1 when gpt-image-2 org-unverified", + "type": "feat", + "scope": "picture", + "additions": 62, + "deletions": 20, + "timestamp": "2026-04-24T01:50:21+02:00" + }, + { + "hash": "e666540", + "short": "feat(auth): error-classification layer + passkey end-to-end", + "type": "feat", + "scope": "auth", + "additions": 3333, + "deletions": 435, + "timestamp": "2026-04-24T01:52:51+02:00" + }, + { + "hash": "91fd88e", + "short": "fix(picture): normalize Try-On refs to clean RGB PNG before OpenAI call", + "type": "fix", + "scope": "picture", + "additions": 41, + "deletions": 11, + "timestamp": "2026-04-24T01:55:00+02:00" + }, + { + "hash": "49935c9", + "short": "feat(shared-privacy): M1 — visibility foundation package", + "type": "feat", + "scope": "shared-privacy", + "additions": 994, + "deletions": 42, + "timestamp": "2026-04-24T01:59:11+02:00" + }, + { + "hash": "d5ae2f1", + "short": "feat(library): M2 — adopt unified visibility system as the pilot module", + "type": "feat", + "scope": "library", + "additions": 121, + "deletions": 10, + "timestamp": "2026-04-24T02:08:29+02:00" + }, + { + "hash": "0e9f574", + "short": "feat(picture): M3 — boards adopt the unified visibility system (soft)", + "type": "feat", + "scope": "picture", + "additions": 100, + "deletions": 17, + "timestamp": "2026-04-24T02:23:56+02:00" + }, + { + "hash": "ac44d51", + "short": "feat(calendar): M4.a — events adopt the unified visibility system", + "type": "feat", + "scope": "calendar", + "additions": 177, + "deletions": 3, + "timestamp": "2026-04-24T02:32:25+02:00" + }, + { + "hash": "015a2c1", + "short": "feat(todo): M4.b — tasks adopt the unified visibility system", + "type": "feat", + "scope": "todo", + "additions": 119, + "deletions": 2, + "timestamp": "2026-04-24T02:37:32+02:00" + }, + { + "hash": "95e85bd", + "short": "feat(goals): M4.c — goals adopt the unified visibility system", + "type": "feat", + "scope": "goals", + "additions": 105, + "deletions": 0, + "timestamp": "2026-04-24T02:41:27+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-23/macher.md b/devlog/2026-04-23/macher.md new file mode 100644 index 000000000..dde89417e --- /dev/null +++ b/devlog/2026-04-23/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-23 +day: 92 +view: macher +weekday: Donnerstag +commits: 88 +review: written +--- + +# Donnerstag, 2026-04-23 — Tag 92 (Macher-Sicht) + +## Stats + +88 Commits, +44269 / −2706 LoC, 370 Files. Top-Dirs: `apps/mana/apps/web` (39%), `packages/website-blocks/src` (11%), `apps/api/src/modules` (5%), `services/mana-auth/src` (5%), `packages/shared-ai/src` (5%). Tags: website, wardrobe, personas, plans, shared-ai. Session 11:01 → 00:41 (~441 aktive Min, längster Fokus 155 Min). + +## Commits + +- `f719d17` chore(infra): unify prod deploy on .env.macmini + document missing keys (+50/-6) +- `16c8818` feat(mcp): M1+M1.5 MCP gateway + tool-registry + shared-crypto (+2855/-257) +- `32c95a3` chore(diagnostics): headless prod smoke scripts (+258/-0) +- `89258eb` feat(profile,api): meImages foundation for AI reference generation (M1) (+790/-4) +- `69f1261` feat(infra): route events.mana.how + research.mana.how through tunnel (+4/-0) +- `493db0c` feat(personas): M2.a-c — persona schemas + admin endpoints + seed pipeline (+849/-8) +- `e5d230e` feat(agent-loop): M1 — policy gate + reminder channel + parallel reads (+2550/-29) +- `faa472b` feat(mana-ai): first live reminder producers — token budget + retry-loop (+330/-4) +- `a1caeaa` feat(personas): M3.a — scaffold mana-persona-runner service on :3070 (+422/-2) +- `a64a7e3` feat(profile): UI for me-images management at /profile/me-images (M2) (+564/-5) +- `54a12ff` feat(webapp): wire isParallelSafe in Companion chat + Mission runner (+5522/-111) +- `38dc806` feat(personas): M3.b-d — tick loop + Claude Agent SDK + persistence (+240/-0) +- `f07eae3` feat(personas): M3.b-d — tick loop + Claude Agent SDK + persistence (real) (+884/-19) +- `c94ab01` feat(mana-mcp): Prometheus metrics for policy gate + tool invocations (+89/-3) +- `d087b47` chore(observability): scrape mana-mcp at :3069 (+237/-14) +- `25c3bb6` docs(mana-mcp,mana-ai): CLAUDE.md coverage for M1 agent-loop primitives (+32/-0) +- `7a4f889` feat(website): M3 — 5 more blocks, containers, upload, themes (+2899/-40) +- `79d1126` feat(personas): M5.a — Playwright visual suite scaffold (+398/-1) +- `57be0f6` feat(website): M4 — forms + moduleEmbed (+1817/-2) +- `e2b5ac3` feat(profile): migrate auth.users.image into meImages + avatar autosync (M2.5) (+211/-216) + +_… plus 68 weitere Commits._ diff --git a/devlog/2026-04-23/spieler.md b/devlog/2026-04-23/spieler.md new file mode 100644 index 000000000..6d971a690 --- /dev/null +++ b/devlog/2026-04-23/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-23 +day: 92 +view: spieler +weekday: Donnerstag +commits: 88 +review: written +--- + +# Donnerstag, 2026-04-23 — Tag 92 + +Großer Sprint-Tag mit Schwerpunkt **apps** (88 Commits). + +## Highlights + +- M1+M1.5 MCP gateway + tool-registry + shared-crypto +- meImages foundation for AI reference generation (M1) +- route events.mana.how + research.mana.how through tunnel +- M2.a-c — persona schemas + admin endpoints + seed pipeline +- M1 — policy gate + reminder channel + parallel reads diff --git a/devlog/2026-04-24/data.json b/devlog/2026-04-24/data.json new file mode 100644 index 000000000..0a5dc7349 --- /dev/null +++ b/devlog/2026-04-24/data.json @@ -0,0 +1,442 @@ +{ + "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 + } +} diff --git a/devlog/2026-04-24/macher.md b/devlog/2026-04-24/macher.md new file mode 100644 index 000000000..257ee2eb2 --- /dev/null +++ b/devlog/2026-04-24/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-24 +day: 93 +view: macher +weekday: Freitag +commits: 40 +review: written +--- + +# Freitag, 2026-04-24 — Tag 93 (Macher-Sicht) + +## Stats + +40 Commits, +17569 / −1247 LoC, 246 Files. Top-Dirs: `apps/mana/apps/web` (84%), `apps/api/src/modules` (2%), `packages/shared-ai/src` (2%), `packages/shared-privacy/src` (2%), `packages/mana-tool-registry/src` (2%). Tags: writing, comic, wardrobe, wardrobe,picture, shared-privacy. Session 11:56 → 15:21 (~205 aktive Min, längster Fokus 205 Min). + +## Commits + +- `0cebb24` fix(wardrobe): prompt Ganzkörperfoto instead of Portrait for full try-on (+11/-2) +- `2af2a4d` feat(places): M5.a — places adopt the unified visibility system (+109/-0) +- `0e0d48a` feat(recipes): M5.b — recipes adopt the unified visibility system (+118/-0) +- `218cf45` feat(wardrobe): M5.c — outfits adopt the unified visibility system (+111/-1) +- `9fbdc14` feat(wardrobe,picture): symmetric wardrobeGarmentId FK + garment try-on strips (+176/-5) +- `800fc9a` refactor(picture,wardrobe): extract ImageLightbox, use in garment detail (+169/-79) +- `259f6fb` fix(shared-privacy): default all new records to 'space', not 'private' (+45/-26) +- `3c3b2eb` feat(writing): M1+M2 — new Ghostwriter module with manual draft CRUD (+3484/-0) +- `d725a8d` feat(writing): M3 — one-shot prose generation via mana-llm (+814/-11) +- `1c82a37` feat(writing): M4 — style system with presets + custom styles (+620/-6) +- `27c1860` feat(comic): M1 — Datenschicht + Modul-Registrierung (+1385/-5) +- `19e0f33` feat(writing): M6 — selection-refinement tools (+1014/-2) +- `3551652` feat(comic): M2 — UI + Single-Panel-Generierung (+1638/-2) +- `98a68af` fix(calendar): visibility picker also in the Workbench DetailView (+28/-7) +- `8c43c11` fix(calendar): promote visibility picker to a labeled prop-row (+19/-19) +- `bfa923d` feat(writing): M5 — cross-module references in the briefing (+722/-2) +- `63f5179` feat(comic): M3 — Batch-Panel-Generierung (2–4 parallel) (+421/-12) +- `ed8ec98` feat(workbench): app picker searches English aliases + IT/FR/ES i18n (+149/-8) +- `f2275f7` feat(writing): M11 — adopt the unified visibility system (+70/-0) +- `90915b7` fix(visibility): promote picker to labeled rows across remaining modules (+31/-18) + +_… plus 20 weitere Commits._ diff --git a/devlog/2026-04-24/spieler.md b/devlog/2026-04-24/spieler.md new file mode 100644 index 000000000..666b552dd --- /dev/null +++ b/devlog/2026-04-24/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-24 +day: 93 +view: spieler +weekday: Freitag +commits: 40 +review: written +--- + +# Freitag, 2026-04-24 — Tag 93 + +Großer Sprint-Tag mit Schwerpunkt **apps** (40 Commits). + +## Highlights + +- prompt Ganzkörperfoto instead of Portrait for full try-on +- M5.a — places adopt the unified visibility system +- M5.b — recipes adopt the unified visibility system +- M5.c — outfits adopt the unified visibility system +- symmetric wardrobeGarmentId FK + garment try-on strips diff --git a/devlog/2026-04-25/data.json b/devlog/2026-04-25/data.json new file mode 100644 index 000000000..071708f46 --- /dev/null +++ b/devlog/2026-04-25/data.json @@ -0,0 +1,530 @@ +{ + "date": "2026-04-25", + "day_number": 94, + "weekday": "Samstag", + "commits": 48, + "authors": [ + { + "name": "Till JS", + "count": 48 + } + ], + "additions": 18979, + "deletions": 1782, + "net_lines": 17197, + "files_changed": 261, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-25T09:32:32.000Z", + "last_commit_at": "2026-04-25T16:17:07.000Z", + "total_span_minutes": 405, + "active_minutes": 220, + "pauses": [ + { + "from": "12:57", + "to": "13:39", + "minutes": 42 + }, + { + "from": "15:53", + "to": "16:42", + "minutes": 49 + }, + { + "from": "16:42", + "to": "18:16", + "minutes": 94 + } + ], + "longest_focus_minutes": 134 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 89 + }, + { + "path": "packages/website-blocks/src", + "pct": 2 + }, + { + "path": "packages/shared-branding/src", + "pct": 1 + }, + { + "path": "services/mana-media/apps", + "pct": 1 + }, + { + "path": "scripts/i18n-hardcoded-baseline.json", + "pct": 1 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 248 + }, + { + "ext": ".svelte", + "count": 111 + }, + { + "ext": ".json", + "count": 13 + }, + { + "ext": ".md", + "count": 10 + }, + { + "ext": ".mjs", + "count": 2 + }, + { + "ext": ".ts}", + "count": 2 + } + ], + "tags": ["writing", "visibility", "comic", "scope", "augur"], + "commits_list": [ + { + "hash": "d8feef1", + "short": "fix(scope): bridge active-space / user changes to Dexie liveQuery", + "type": "fix", + "scope": "scope", + "additions": 115, + "deletions": 4, + "timestamp": "2026-04-25T11:32:32+02:00" + }, + { + "hash": "8b9fbd2", + "short": "feat(scripts): validate:i18n-hardcoded — ratcheting baseline check", + "type": "feat", + "scope": "scripts", + "additions": 557, + "deletions": 1, + "timestamp": "2026-04-25T11:33:24+02:00" + }, + { + "hash": "fbbadc9", + "short": "feat(calendar): M8.3 — calendar pilot for unlisted-share end-to-end", + "type": "feat", + "scope": "calendar", + "additions": 1093, + "deletions": 11, + "timestamp": "2026-04-25T11:40:53+02:00" + }, + { + "hash": "26e25b7", + "short": "feat(writing): M5 expansion — kontext, goal, me-image references", + "type": "feat", + "scope": "writing", + "additions": 245, + "deletions": 7, + "timestamp": "2026-04-25T11:43:12+02:00" + }, + { + "hash": "01e6b9f", + "short": "fix(scope): undo accidental current-user.svelte.ts rename", + "type": "fix", + "scope": "scope", + "additions": 84, + "deletions": 0, + "timestamp": "2026-04-25T11:46:50+02:00" + }, + { + "hash": "7e6fb5b", + "short": "docs: surface i18n validator stack + format helper convention", + "type": null, + "scope": null, + "additions": 68, + "deletions": 4, + "timestamp": "2026-04-25T12:07:35+02:00" + }, + { + "hash": "bad935c", + "short": "feat(writing): print CSS + keyboard shortcuts", + "type": "feat", + "scope": "writing", + "additions": 106, + "deletions": 5, + "timestamp": "2026-04-25T12:10:32+02:00" + }, + { + "hash": "167d616", + "short": "feat(library,places): M8.4 — extend unlisted-share to two more modules", + "type": "feat", + "scope": "library,places", + "additions": 684, + "deletions": 25, + "timestamp": "2026-04-25T12:13:36+02:00" + }, + { + "hash": "636138b", + "short": "refactor(scope): replace _scopeCursor bridge with reactive useScopedLiveQuery hook", + "type": "refactor", + "scope": "scope", + "additions": 358, + "deletions": 378, + "timestamp": "2026-04-25T12:15:22+02:00" + }, + { + "hash": "a80e8f5", + "short": "feat(writing): ✨ auto-title suggestion in the briefing", + "type": "feat", + "scope": "writing", + "additions": 176, + "deletions": 2, + "timestamp": "2026-04-25T12:16:45+02:00" + }, + { + "hash": "85fca7c", + "short": "feat(comic): workbench app-registry — Comic als Card verfügbar", + "type": "feat", + "scope": "comic", + "additions": 43, + "deletions": 0, + "timestamp": "2026-04-25T12:25:48+02:00" + }, + { + "hash": "b7a54cc", + "short": "feat(unlisted-sharing): QR code + per-link expiry picker (M8.5)", + "type": "feat", + "scope": "unlisted-sharing", + "additions": 272, + "deletions": 108, + "timestamp": "2026-04-25T12:29:53+02:00" + }, + { + "hash": "2e9ec76", + "short": "feat(writing): token-usage in version history + draft drag-source", + "type": "feat", + "scope": "writing", + "additions": 68, + "deletions": 4, + "timestamp": "2026-04-25T12:31:29+02:00" + }, + { + "hash": "d924895", + "short": "docs(unlisted-sharing): park M8.6-readiness check as 2026-05-09 plan-TODO", + "type": "docs", + "scope": "unlisted-sharing", + "additions": 16, + "deletions": 0, + "timestamp": "2026-04-25T12:54:51+02:00" + }, + { + "hash": "75c366b", + "short": "test(writing): unit tests for prompt-builder + reference-resolver", + "type": "test", + "scope": "writing", + "additions": 797, + "deletions": 22, + "timestamp": "2026-04-25T12:57:24+02:00" + }, + { + "hash": "3214719", + "short": "fix(comic): DataCloneError beim Anlegen + stärkere Hover-States", + "type": "fix", + "scope": "comic", + "additions": 93, + "deletions": 14, + "timestamp": "2026-04-25T13:39:47+02:00" + }, + { + "hash": "d880e89", + "short": "feat(writing): rename module display name \"Writing\" → \"Schreiben\"", + "type": "feat", + "scope": "writing", + "additions": 5, + "deletions": 5, + "timestamp": "2026-04-25T13:45:02+02:00" + }, + { + "hash": "dff02d2", + "short": "fix(mana-media): HEIC uploads from Chrome — sniff + transcode at the edge", + "type": "fix", + "scope": "mana-media", + "additions": 190, + "deletions": 13, + "timestamp": "2026-04-25T13:46:13+02:00" + }, + { + "hash": "e0c0791", + "short": "feat(visibility): pilot extended to habits + quiz + events (M5 finish)", + "type": "feat", + "scope": "visibility", + "additions": 223, + "deletions": 0, + "timestamp": "2026-04-25T13:46:50+02:00" + }, + { + "hash": "95bedf4", + "short": "fix(comic): proper input focus + sichtbare Entfern-Affordance", + "type": "fix", + "scope": "comic", + "additions": 56, + "deletions": 26, + "timestamp": "2026-04-25T13:51:05+02:00" + }, + { + "hash": "21dbce6", + "short": "feat(writing): smarter empty-state + help-content + de-emphasized Stile link", + "type": "feat", + "scope": "writing", + "additions": 222, + "deletions": 48, + "timestamp": "2026-04-25T13:57:08+02:00" + }, + { + "hash": "59b147f", + "short": "feat(visibility): embed resolvers for habits/quiz/social-events + inspector refresh", + "type": "feat", + "scope": "visibility", + "additions": 216, + "deletions": 0, + "timestamp": "2026-04-25T13:58:43+02:00" + }, + { + "hash": "ac12b61", + "short": "fix(writing): replace emojis with Phosphor icons in workbench empty-state", + "type": "fix", + "scope": "writing", + "additions": 109, + "deletions": 39, + "timestamp": "2026-04-25T14:05:26+02:00" + }, + { + "hash": "d62ae8f", + "short": "fix(workbench): dedup duplicate Home scenes accumulated by seeding race", + "type": "fix", + "scope": "workbench", + "additions": 507, + "deletions": 0, + "timestamp": "2026-04-25T14:08:32+02:00" + }, + { + "hash": "bd559e7", + "short": "polish(picture): clean borderless lightbox — image-first, meta in the corner", + "type": "polish", + "scope": "picture", + "additions": 104, + "deletions": 52, + "timestamp": "2026-04-25T14:10:11+02:00" + }, + { + "hash": "ad5987f", + "short": "feat(visibility): M6 soft-migrate isPublic→visibility on memoro/cards/presi/uload", + "type": "feat", + "scope": "visibility", + "additions": 192, + "deletions": 32, + "timestamp": "2026-04-25T14:11:07+02:00" + }, + { + "hash": "c73f93f", + "short": "refactor(workbench): central per-space-seeds registry + deterministic Home id", + "type": "refactor", + "scope": "workbench", + "additions": 411, + "deletions": 64, + "timestamp": "2026-04-25T14:21:25+02:00" + }, + { + "hash": "e0ec7fe", + "short": "feat(visibility): M7 — /settings privacy overview + kill-switch", + "type": "feat", + "scope": "visibility", + "additions": 732, + "deletions": 1, + "timestamp": "2026-04-25T14:24:59+02:00" + }, + { + "hash": "f71a937", + "short": "feat(visibility): embed resolvers for memoro/cards/presi (M6 follow-on)", + "type": "feat", + "scope": "visibility", + "additions": 143, + "deletions": 0, + "timestamp": "2026-04-25T14:33:43+02:00" + }, + { + "hash": "568d79d", + "short": "test(workbench): seeder defers to legacy Home + end-to-end wiring test", + "type": "test", + "scope": "workbench", + "additions": 217, + "deletions": 5, + "timestamp": "2026-04-25T14:34:05+02:00" + }, + { + "hash": "faa16fa", + "short": "feat(augur): new module — signs collected, patterns read", + "type": "feat", + "scope": "augur", + "additions": 5272, + "deletions": 0, + "timestamp": "2026-04-25T15:02:15+02:00" + }, + { + "hash": "4282843", + "short": "fix(picture): lightbox sits above PillNav + tighter meta column", + "type": "fix", + "scope": "picture", + "additions": 14, + "deletions": 6, + "timestamp": "2026-04-25T15:03:05+02:00" + }, + { + "hash": "43bef2b", + "short": "refactor(scope): explicit spaceId stamping at every space-scoped write", + "type": "refactor", + "scope": "scope", + "additions": 60, + "deletions": 16, + "timestamp": "2026-04-25T15:11:25+02:00" + }, + { + "hash": "21c64e2", + "short": "docs(workbench-seeding-cleanup): record shipped status, sequence Schicht A", + "type": "docs", + "scope": "workbench-seeding-cleanup", + "additions": 6, + "deletions": 4, + "timestamp": "2026-04-25T15:12:25+02:00" + }, + { + "hash": "1cb137c", + "short": "feat(visibility): pull augur onto the embed + privacy-overview rails", + "type": "feat", + "scope": "visibility", + "additions": 87, + "deletions": 0, + "timestamp": "2026-04-25T15:18:14+02:00" + }, + { + "hash": "4d77934", + "short": "test(augur): unit tests for all deterministic engines", + "type": "test", + "scope": "augur", + "additions": 983, + "deletions": 0, + "timestamp": "2026-04-25T15:18:35+02:00" + }, + { + "hash": "a1f2dcc", + "short": "feat(tool-registry): augur module — 5 server-side tools", + "type": "feat", + "scope": "tool-registry", + "additions": 738, + "deletions": 1, + "timestamp": "2026-04-25T15:32:04+02:00" + }, + { + "hash": "9e04385", + "short": "feat(augur): unlisted-snapshot publish pipeline", + "type": "feat", + "scope": "augur", + "additions": 309, + "deletions": 16, + "timestamp": "2026-04-25T15:38:09+02:00" + }, + { + "hash": "a6c5397", + "short": "refactor(scope): smart hook stamps active-Space id, revert explicit stamps", + "type": "refactor", + "scope": "scope", + "additions": 80, + "deletions": 71, + "timestamp": "2026-04-25T15:49:42+02:00" + }, + { + "hash": "fa71269", + "short": "refactor(workbench-seeding): drop transitional code paths, finalise via v50", + "type": "refactor", + "scope": "workbench-seeding", + "additions": 41, + "deletions": 115, + "timestamp": "2026-04-25T15:50:53+02:00" + }, + { + "hash": "547f643", + "short": "docs(workbench-seeding-cleanup): record final architecture, all shipped", + "type": "docs", + "scope": "workbench-seeding-cleanup", + "additions": 15, + "deletions": 6, + "timestamp": "2026-04-25T15:51:23+02:00" + }, + { + "hash": "b385839", + "short": "feat(augur): SharedLinkControls + setUnlistedExpiry/regenerate", + "type": "feat", + "scope": "augur", + "additions": 132, + "deletions": 44, + "timestamp": "2026-04-25T15:52:37+02:00" + }, + { + "hash": "313809b", + "short": "feat(comic): Mc1 — Character-Datenschicht (Iteration + Pinning)", + "type": "feat", + "scope": "comic", + "additions": 567, + "deletions": 7, + "timestamp": "2026-04-25T15:52:58+02:00" + }, + { + "hash": "2b359f9", + "short": "refactor(writing): swap hardcoded sky-cyan for theme tokens", + "type": "refactor", + "scope": "writing", + "additions": 233, + "deletions": 233, + "timestamp": "2026-04-25T15:53:18+02:00" + }, + { + "hash": "882aa60", + "short": "feat(comic): Mc2 — Character-Builder UI + Variant-Grid + Routes", + "type": "feat", + "scope": "comic", + "additions": 1139, + "deletions": 6, + "timestamp": "2026-04-25T16:42:31+02:00" + }, + { + "hash": "0ff5030", + "short": "feat(comic): Mc3 — Story-Create nutzt Character-Mode + Quick-Fallback", + "type": "feat", + "scope": "comic", + "additions": 270, + "deletions": 8, + "timestamp": "2026-04-25T18:16:24+02:00" + }, + { + "hash": "303058d", + "short": "refactor(visibility): M6.1 — drop legacy isPublic everywhere", + "type": "refactor", + "scope": "visibility", + "additions": 32, + "deletions": 142, + "timestamp": "2026-04-25T18:16:57+02:00" + }, + { + "hash": "c5ff7e1", + "short": "feat(augur): real i18n keys — replace T constants with $_('augur.*')", + "type": "feat", + "scope": "augur", + "additions": 899, + "deletions": 237, + "timestamp": "2026-04-25T18:17:07+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-25/macher.md b/devlog/2026-04-25/macher.md new file mode 100644 index 000000000..e1a04f657 --- /dev/null +++ b/devlog/2026-04-25/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-25 +day: 94 +view: macher +weekday: Samstag +commits: 48 +review: written +--- + +# Samstag, 2026-04-25 — Tag 94 (Macher-Sicht) + +## Stats + +48 Commits, +18979 / −1782 LoC, 261 Files. Top-Dirs: `apps/mana/apps/web` (89%), `packages/website-blocks/src` (2%), `packages/shared-branding/src` (1%), `services/mana-media/apps` (1%), `scripts/i18n-hardcoded-baseline.json` (1%). Tags: writing, visibility, comic, scope, augur. Session 09:32 → 16:17 (~220 aktive Min, längster Fokus 134 Min). + +## Commits + +- `d8feef1` fix(scope): bridge active-space / user changes to Dexie liveQuery (+115/-4) +- `8b9fbd2` feat(scripts): validate:i18n-hardcoded — ratcheting baseline check (+557/-1) +- `fbbadc9` feat(calendar): M8.3 — calendar pilot for unlisted-share end-to-end (+1093/-11) +- `26e25b7` feat(writing): M5 expansion — kontext, goal, me-image references (+245/-7) +- `01e6b9f` fix(scope): undo accidental current-user.svelte.ts rename (+84/-0) +- `7e6fb5b` docs: surface i18n validator stack + format helper convention (+68/-4) +- `bad935c` feat(writing): print CSS + keyboard shortcuts (+106/-5) +- `167d616` feat(library,places): M8.4 — extend unlisted-share to two more modules (+684/-25) +- `636138b` refactor(scope): replace \_scopeCursor bridge with reactive useScopedLiveQuery hook (+358/-378) +- `a80e8f5` feat(writing): ✨ auto-title suggestion in the briefing (+176/-2) +- `85fca7c` feat(comic): workbench app-registry — Comic als Card verfügbar (+43/-0) +- `b7a54cc` feat(unlisted-sharing): QR code + per-link expiry picker (M8.5) (+272/-108) +- `2e9ec76` feat(writing): token-usage in version history + draft drag-source (+68/-4) +- `d924895` docs(unlisted-sharing): park M8.6-readiness check as 2026-05-09 plan-TODO (+16/-0) +- `75c366b` test(writing): unit tests for prompt-builder + reference-resolver (+797/-22) +- `3214719` fix(comic): DataCloneError beim Anlegen + stärkere Hover-States (+93/-14) +- `d880e89` feat(writing): rename module display name "Writing" → "Schreiben" (+5/-5) +- `dff02d2` fix(mana-media): HEIC uploads from Chrome — sniff + transcode at the edge (+190/-13) +- `e0c0791` feat(visibility): pilot extended to habits + quiz + events (M5 finish) (+223/-0) +- `95bedf4` fix(comic): proper input focus + sichtbare Entfern-Affordance (+56/-26) + +_… plus 28 weitere Commits._ diff --git a/devlog/2026-04-25/spieler.md b/devlog/2026-04-25/spieler.md new file mode 100644 index 000000000..2844dc62a --- /dev/null +++ b/devlog/2026-04-25/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-25 +day: 94 +view: spieler +weekday: Samstag +commits: 48 +review: written +--- + +# Samstag, 2026-04-25 — Tag 94 + +Großer Sprint-Tag mit Schwerpunkt **apps** (48 Commits). + +## Highlights + +- bridge active-space / user changes to Dexie liveQuery +- validate:i18n-hardcoded — ratcheting baseline check +- M8.3 — calendar pilot for unlisted-share end-to-end +- M5 expansion — kontext, goal, me-image references +- undo accidental current-user.svelte.ts rename diff --git a/devlog/2026-04-26/data.json b/devlog/2026-04-26/data.json new file mode 100644 index 000000000..528a7f452 --- /dev/null +++ b/devlog/2026-04-26/data.json @@ -0,0 +1,912 @@ +{ + "date": "2026-04-26", + "day_number": 95, + "weekday": "Sonntag", + "commits": 91, + "authors": [ + { + "name": "Till JS", + "count": 91 + } + ], + "additions": 36457, + "deletions": 5729, + "net_lines": 30728, + "files_changed": 619, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-26T17:27:15.000Z", + "last_commit_at": "2026-04-27T00:16:47.000Z", + "total_span_minutes": 410, + "active_minutes": 338, + "pauses": [ + { + "from": "20:52", + "to": "21:26", + "minutes": 34 + }, + { + "from": "22:34", + "to": "23:12", + "minutes": 38 + } + ], + "longest_focus_minutes": 184 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 79 + }, + { + "path": "scripts/i18n-hardcoded-baseline.json", + "pct": 3 + }, + { + "path": "services/mana-ai/src", + "pct": 1 + }, + { + "path": "docs/plans/sync-field-meta-overhaul.md", + "pct": 1 + }, + { + "path": "packages/feedback/src", + "pct": 1 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 351 + }, + { + "ext": ".svelte", + "count": 192 + }, + { + "ext": ".json", + "count": 152 + }, + { + "ext": ".md", + "count": 31 + }, + { + "ext": ".py", + "count": 16 + }, + { + "ext": ".yml", + "count": 6 + } + ], + "tags": ["sync", "mana-llm", "mana-analytics", "community", "comic"], + "commits_list": [ + { + "hash": "ef96948", + "short": "feat(comic): Mc4 — MCP + AI-Catalog für Character-System", + "type": "feat", + "scope": "comic", + "additions": 908, + "deletions": 14, + "timestamp": "2026-04-26T19:27:15+02:00" + }, + { + "hash": "3d30e39", + "short": "feat(comic): Mc5 — Wardrobe-Hook \"Als Comic-Character\"", + "type": "feat", + "scope": "comic", + "additions": 80, + "deletions": 13, + "timestamp": "2026-04-26T19:32:29+02:00" + }, + { + "hash": "e930a66", + "short": "refactor(workbench-seeding): inline v48 dedup, drop dead helper module", + "type": "refactor", + "scope": "workbench-seeding", + "additions": 74, + "deletions": 370, + "timestamp": "2026-04-26T19:33:46+02:00" + }, + { + "hash": "8c5f064", + "short": "test+docs(workbench-seeding): hook stamping test + per-space-seeds guide", + "type": null, + "scope": null, + "additions": 152, + "deletions": 0, + "timestamp": "2026-04-26T19:33:59+02:00" + }, + { + "hash": "507532c", + "short": "docs(workbench-seeding-cleanup): record polish-pass commits", + "type": "docs", + "scope": "workbench-seeding-cleanup", + "additions": 3, + "deletions": 1, + "timestamp": "2026-04-26T19:34:25+02:00" + }, + { + "hash": "4498373", + "short": "chore(branding): tier-patch remaining 8 modules to 'guest'", + "type": "chore", + "scope": "branding", + "additions": 8, + "deletions": 8, + "timestamp": "2026-04-26T19:40:21+02:00" + }, + { + "hash": "450372e", + "short": "fix(writing): decrypt drafts/versions before reading encrypted fields", + "type": "fix", + "scope": "writing", + "additions": 27, + "deletions": 7, + "timestamp": "2026-04-26T19:46:56+02:00" + }, + { + "hash": "1c4486c", + "short": "fix(comic): inline face-upload banner — Parität mit Wardrobe-UX", + "type": "fix", + "scope": "comic", + "additions": 180, + "deletions": 44, + "timestamp": "2026-04-26T19:48:20+02:00" + }, + { + "hash": "aac1e3d", + "short": "fix(profile): klarere Fehlermeldung bei nicht-authentifiziertem me-image-Upload", + "type": "fix", + "scope": "profile", + "additions": 18, + "deletions": 1, + "timestamp": "2026-04-26T20:01:53+02:00" + }, + { + "hash": "e186023", + "short": "docs(plans): LLM-fallback via model-aliases — spec", + "type": "docs", + "scope": "plans", + "additions": 236, + "deletions": 0, + "timestamp": "2026-04-26T20:19:34+02:00" + }, + { + "hash": "dff8629", + "short": "feat(mana-llm): M1 — AliasRegistry + aliases.yaml SSOT", + "type": "feat", + "scope": "mana-llm", + "additions": 581, + "deletions": 0, + "timestamp": "2026-04-26T20:23:51+02:00" + }, + { + "hash": "59557e6", + "short": "feat(mana-llm): M2 — ProviderHealthCache + background probe loop", + "type": "feat", + "scope": "mana-llm", + "additions": 811, + "deletions": 0, + "timestamp": "2026-04-26T20:29:57+02:00" + }, + { + "hash": "3046da3", + "short": "feat(mana-llm): M3 — health-aware router with alias + chain fallback", + "type": "feat", + "scope": "mana-llm", + "additions": 953, + "deletions": 242, + "timestamp": "2026-04-26T20:44:16+02:00" + }, + { + "hash": "8a49e3f", + "short": "feat(mana-llm): M4 — observability, debug endpoints, SIGHUP reload", + "type": "feat", + "scope": "mana-llm", + "additions": 749, + "deletions": 29, + "timestamp": "2026-04-26T20:52:28+02:00" + }, + { + "hash": "fea3adf", + "short": "feat(llm-aliases): M5 — migrate consumers to MANA_LLM aliases", + "type": "feat", + "scope": "llm-aliases", + "additions": 299, + "deletions": 50, + "timestamp": "2026-04-26T21:26:03+02:00" + }, + { + "hash": "30eb7ef", + "short": "feat(settings): full i18n coverage — DE/EN/ES/FR/IT", + "type": "feat", + "scope": "settings", + "additions": 2614, + "deletions": 551, + "timestamp": "2026-04-26T21:27:24+02:00" + }, + { + "hash": "7766ea5", + "short": "docs(plans): mark llm-fallback-aliases SHIPPED, add M-by-M commit table", + "type": "docs", + "scope": "plans", + "additions": 663, + "deletions": 347, + "timestamp": "2026-04-26T21:27:57+02:00" + }, + { + "hash": "6c942e3", + "short": "feat(profile): translate ContextOverview into all 5 locales", + "type": "feat", + "scope": "profile", + "additions": 302, + "deletions": 81, + "timestamp": "2026-04-26T21:37:57+02:00" + }, + { + "hash": "ad5e04a", + "short": "feat(sync): F2 — origin-gated conflict-detection", + "type": "feat", + "scope": "sync", + "additions": 279, + "deletions": 50, + "timestamp": "2026-04-26T21:38:56+02:00" + }, + { + "hash": "bf3bca2", + "short": "feat(lasts): M1-M7 — module ship + Meilensteine-Aggregator", + "type": "feat", + "scope": "lasts", + "additions": 6572, + "deletions": 40, + "timestamp": "2026-04-26T21:40:29+02:00" + }, + { + "hash": "ba6274e", + "short": "refactor(feedback): align package + DB enums, plan central hub", + "type": "refactor", + "scope": "feedback", + "additions": 339, + "deletions": 7, + "timestamp": "2026-04-26T21:52:25+02:00" + }, + { + "hash": "e5cd989", + "short": "feat(onboarding): card redesign + add wish step routing to feedback hub", + "type": "feat", + "scope": "onboarding", + "additions": 405, + "deletions": 139, + "timestamp": "2026-04-26T21:52:52+02:00" + }, + { + "hash": "f10439e", + "short": "fix(mana-analytics): point migration at public.feedback_status, not feedback.*", + "type": "fix", + "scope": "mana-analytics", + "additions": 22, + "deletions": 13, + "timestamp": "2026-04-26T21:55:45+02:00" + }, + { + "hash": "679fb16", + "short": "feat(invoices): full i18n coverage across 12 files — DE/EN/ES/FR/IT", + "type": "feat", + "scope": "invoices", + "additions": 1541, + "deletions": 243, + "timestamp": "2026-04-26T21:56:48+02:00" + }, + { + "hash": "1398d76", + "short": "refactor(lasts,firsts): German display names — \"Letzte Male\" / \"Erste Male\"", + "type": "refactor", + "scope": "lasts,firsts", + "additions": 18, + "deletions": 18, + "timestamp": "2026-04-26T21:58:31+02:00" + }, + { + "hash": "723a648", + "short": "feat(lasts,firsts): register apps in web-internal registry mit DE-Namen", + "type": "feat", + "scope": "lasts,firsts", + "additions": 37, + "deletions": 1, + "timestamp": "2026-04-26T22:11:22+02:00" + }, + { + "hash": "4e31c8d", + "short": "feat(calendar): full i18n coverage across 17 files — DE/EN/ES/FR/IT", + "type": "feat", + "scope": "calendar", + "additions": 1430, + "deletions": 278, + "timestamp": "2026-04-26T22:17:34+02:00" + }, + { + "hash": "e267625", + "short": "feat(writing): full i18n coverage across 10 files — DE/EN/ES/FR/IT", + "type": "feat", + "scope": "writing", + "additions": 1528, + "deletions": 201, + "timestamp": "2026-04-26T22:34:49+02:00" + }, + { + "hash": "6bb9d77", + "short": "feat(sync): F3 — drop updatedAt as a synced data field", + "type": "feat", + "scope": "sync", + "additions": 1381, + "deletions": 831, + "timestamp": "2026-04-26T23:12:22+02:00" + }, + { + "hash": "c07db30", + "short": "feat(sync): F4 — server-side singleton bootstrap", + "type": "feat", + "scope": "sync", + "additions": 134, + "deletions": 0, + "timestamp": "2026-04-26T23:18:54+02:00" + }, + { + "hash": "c7d80e3", + "short": "feat(events): full i18n coverage across 12 files — DE/EN/ES/FR/IT", + "type": "feat", + "scope": "events", + "additions": 975, + "deletions": 139, + "timestamp": "2026-04-26T23:20:09+02:00" + }, + { + "hash": "d78f57c", + "short": "feat(sync): F5 — drop public userContextStore.ensureDoc()", + "type": "feat", + "scope": "sync", + "additions": 25, + "deletions": 18, + "timestamp": "2026-04-26T23:47:53+02:00" + }, + { + "hash": "a031493", + "short": "feat(sync): F6 — stable client_id in Dexie, localStorage as cache", + "type": "feat", + "scope": "sync", + "additions": 116, + "deletions": 4, + "timestamp": "2026-04-26T23:50:55+02:00" + }, + { + "hash": "2a8e8ff", + "short": "feat(sync): F7 — drop repair-silent-twin + legacy-avatar migrations", + "type": "feat", + "scope": "sync", + "additions": 0, + "deletions": 225, + "timestamp": "2026-04-26T23:52:58+02:00" + }, + { + "hash": "fd11481", + "short": "docs(plans): mark sync-field-meta-overhaul F1-F7 SHIPPED", + "type": "docs", + "scope": "plans", + "additions": 5, + "deletions": 5, + "timestamp": "2026-04-26T23:54:09+02:00" + }, + { + "hash": "8b0a943", + "short": "feat(mana-analytics): pseudonym + reactions + public feed + admin", + "type": "feat", + "scope": "mana-analytics", + "additions": 820, + "deletions": 70, + "timestamp": "2026-04-27T00:00:35+02:00" + }, + { + "hash": "c9b1220", + "short": "feat(feedback): public feed types + ReactionBar + service split", + "type": "feat", + "scope": "feedback", + "additions": 458, + "deletions": 106, + "timestamp": "2026-04-27T00:01:06+02:00" + }, + { + "hash": "8804a20", + "short": "feat(community): public anon hub — module + inline + admin + onboarding", + "type": "feat", + "scope": "community", + "additions": 1723, + "deletions": 33, + "timestamp": "2026-04-27T00:02:25+02:00" + }, + { + "hash": "5959f66", + "short": "i18n(wardrobe): translate all 5 locales — 36 strings", + "type": "i18n", + "scope": "wardrobe", + "additions": 1677, + "deletions": 274, + "timestamp": "2026-04-27T00:12:18+02:00" + }, + { + "hash": "39ef7ca", + "short": "chore(compose): wire FEEDBACK_PSEUDONYM_SECRET into mana-analytics", + "type": "chore", + "scope": "compose", + "additions": 4, + "deletions": 0, + "timestamp": "2026-04-27T00:18:16+02:00" + }, + { + "hash": "576fe79", + "short": "fix(community): clear svelte-check warnings for fail-on-warnings push gate", + "type": "fix", + "scope": "community", + "additions": 17, + "deletions": 19, + "timestamp": "2026-04-27T00:25:35+02:00" + }, + { + "hash": "a68933b", + "short": "refactor(stores): drop \\`as never\\` Dexie-update casts", + "type": "refactor", + "scope": "stores", + "additions": 4, + "deletions": 0, + "timestamp": "2026-04-27T00:29:51+02:00" + }, + { + "hash": "421663b", + "short": "i18n(stretch): add namespace JSONs for de/en/es/fr/it", + "type": "i18n", + "scope": "stretch", + "additions": 455, + "deletions": 0, + "timestamp": "2026-04-27T00:30:17+02:00" + }, + { + "hash": "722fe74", + "short": "i18n(stretch): wire components to namespace — 34 strings cleared", + "type": "i18n", + "scope": "stretch", + "additions": 164, + "deletions": 76, + "timestamp": "2026-04-27T00:49:23+02:00" + }, + { + "hash": "db01ddc", + "short": "fix(mana-analytics): multi-stage Dockerfile that resolves workspace deps", + "type": "fix", + "scope": "mana-analytics", + "additions": 30, + "deletions": 7, + "timestamp": "2026-04-27T00:50:25+02:00" + }, + { + "hash": "5387681", + "short": "fix(mana-analytics): copy shared-logger into installer (transitive workspace dep)", + "type": "fix", + "scope": "mana-analytics", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-27T00:52:33+02:00" + }, + { + "hash": "1334bd3", + "short": "refactor(stores): drop remaining \\`as never\\` + \\`as Record\\` casts", + "type": "refactor", + "scope": "stores", + "additions": 28, + "deletions": 28, + "timestamp": "2026-04-27T00:53:41+02:00" + }, + { + "hash": "3673542", + "short": "feat(mana-web): inject PUBLIC_MANA_ANALYTICS_URL for client-side feedback calls", + "type": "feat", + "scope": "mana-web", + "additions": 9, + "deletions": 0, + "timestamp": "2026-04-27T00:55:40+02:00" + }, + { + "hash": "812f3f7", + "short": "i18n(uload): extend namespace JSONs for routes/views", + "type": "i18n", + "scope": "uload", + "additions": 955, + "deletions": 0, + "timestamp": "2026-04-27T00:55:48+02:00" + }, + { + "hash": "b4589a7", + "short": "feat(infra): route analytics.mana.how to mana-analytics:3064", + "type": "feat", + "scope": "infra", + "additions": 2, + "deletions": 0, + "timestamp": "2026-04-27T00:57:05+02:00" + }, + { + "hash": "515de79", + "short": "refactor(stores): replace Record declarations with Partial", + "type": "refactor", + "scope": "stores", + "additions": 52, + "deletions": 37, + "timestamp": "2026-04-27T00:58:01+02:00" + }, + { + "hash": "cabfd10", + "short": "feat(infra): community.mana.how (instead of analytics.*) for the public-feedback hub", + "type": "feat", + "scope": "infra", + "additions": 3, + "deletions": 3, + "timestamp": "2026-04-27T01:00:22+02:00" + }, + { + "hash": "119cd2c", + "short": "chore(boot): sweep orphan migration flags from localStorage", + "type": "chore", + "scope": "boot", + "additions": 70, + "deletions": 0, + "timestamp": "2026-04-27T01:01:35+02:00" + }, + { + "hash": "c9a091e", + "short": "fix(docker): COPY packages/shared-privacy into sveltekit-base", + "type": "fix", + "scope": "docker", + "additions": 1, + "deletions": 0, + "timestamp": "2026-04-27T01:02:55+02:00" + }, + { + "hash": "899fccd", + "short": "i18n(uload): wire components + routes to namespace — 67 strings cleared", + "type": "i18n", + "scope": "uload", + "additions": 266, + "deletions": 177, + "timestamp": "2026-04-27T01:03:00+02:00" + }, + { + "hash": "98d07a8", + "short": "docs(claude): document sync field-meta overhaul (F1-F7) in CLAUDE.md + DATA_LAYER_AUDIT", + "type": "docs", + "scope": "claude", + "additions": 58, + "deletions": 15, + "timestamp": "2026-04-27T01:06:05+02:00" + }, + { + "hash": "9e9f5ce", + "short": "i18n(website): add namespace JSONs for de/en/es/fr/it", + "type": "i18n", + "scope": "website", + "additions": 900, + "deletions": 0, + "timestamp": "2026-04-27T01:07:05+02:00" + }, + { + "hash": "6d15469", + "short": "i18n(website): wire components + views to namespace — 68 strings cleared", + "type": "i18n", + "scope": "website", + "additions": 223, + "deletions": 164, + "timestamp": "2026-04-27T01:14:16+02:00" + }, + { + "hash": "da330f0", + "short": "i18n(credits): extend namespace JSONs with list_view sub-namespace", + "type": "i18n", + "scope": "credits", + "additions": 475, + "deletions": 5, + "timestamp": "2026-04-27T01:17:36+02:00" + }, + { + "hash": "bcf150e", + "short": "i18n(credits): wire ListView to namespace — 25 strings cleared", + "type": "i18n", + "scope": "credits", + "additions": 141, + "deletions": 94, + "timestamp": "2026-04-27T01:20:34+02:00" + }, + { + "hash": "3df7391", + "short": "feat(auth): bootstrap per-Space kontextDoc on Space-creation (F4 follow-up)", + "type": "feat", + "scope": "auth", + "additions": 197, + "deletions": 66, + "timestamp": "2026-04-27T01:21:31+02:00" + }, + { + "hash": "da50da8", + "short": "i18n(ai-agents): add namespace JSONs for de/en/es/fr/it", + "type": "i18n", + "scope": "ai-agents", + "additions": 345, + "deletions": 0, + "timestamp": "2026-04-27T01:23:57+02:00" + }, + { + "hash": "53fecbf", + "short": "chore(dexie): v55 — sweep orphan updatedAt field from existing rows (F3 cleanup)", + "type": "chore", + "scope": "dexie", + "additions": 39, + "deletions": 2, + "timestamp": "2026-04-27T01:26:21+02:00" + }, + { + "hash": "0a03e9e", + "short": "i18n(ai-agents): wire ListView to namespace — 23 strings cleared", + "type": "i18n", + "scope": "ai-agents", + "additions": 101, + "deletions": 77, + "timestamp": "2026-04-27T01:26:30+02:00" + }, + { + "hash": "4081ce6", + "short": "fix(community): queries.ts → queries.svelte.ts for runes ('$state is not defined')", + "type": "fix", + "scope": "community", + "additions": 0, + "deletions": 0, + "timestamp": "2026-04-27T01:27:21+02:00" + }, + { + "hash": "b064e8e", + "short": "fix(community): import queries via .svelte path; type DetailView reaction filter", + "type": "fix", + "scope": "community", + "additions": 5, + "deletions": 5, + "timestamp": "2026-04-27T01:30:47+02:00" + }, + { + "hash": "da15f8d", + "short": "i18n(ai-missions): add namespace JSONs for de/en/es/fr/it", + "type": "i18n", + "scope": "ai-missions", + "additions": 390, + "deletions": 0, + "timestamp": "2026-04-27T01:33:47+02:00" + }, + { + "hash": "4731bc8", + "short": "i18n(ai-missions): wire ListView to namespace — 22 strings cleared", + "type": "i18n", + "scope": "ai-missions", + "additions": 142, + "deletions": 70, + "timestamp": "2026-04-27T01:36:12+02:00" + }, + { + "hash": "98d3340", + "short": "i18n(library): add namespace JSONs for de/en/es/fr/it", + "type": "i18n", + "scope": "library", + "additions": 255, + "deletions": 0, + "timestamp": "2026-04-27T01:38:03+02:00" + }, + { + "hash": "099cac4", + "short": "feat(auth): explicit bootstrap-singletons endpoint + idempotent functions (F4 robust)", + "type": "feat", + "scope": "auth", + "additions": 261, + "deletions": 24, + "timestamp": "2026-04-27T01:38:14+02:00" + }, + { + "hash": "36d832a", + "short": "i18n(library): wire DetailView to namespace — 16 strings cleared", + "type": "i18n", + "scope": "library", + "additions": 65, + "deletions": 39, + "timestamp": "2026-04-27T01:39:25+02:00" + }, + { + "hash": "01681b5", + "short": "i18n(gifts): add namespace JSONs for de/en/es/fr/it", + "type": "i18n", + "scope": "gifts", + "additions": 345, + "deletions": 0, + "timestamp": "2026-04-27T01:43:01+02:00" + }, + { + "hash": "ae6a14f", + "short": "feat(shared-ai): SYSTEM_BOOTSTRAP system source — fallback inserts now stamp origin='system'", + "type": "feat", + "scope": "shared-ai", + "additions": 61, + "deletions": 20, + "timestamp": "2026-04-27T01:44:30+02:00" + }, + { + "hash": "9a712dd", + "short": "i18n(gifts): wire +page to namespace — 15 strings cleared", + "type": "i18n", + "scope": "gifts", + "additions": 83, + "deletions": 73, + "timestamp": "2026-04-27T01:46:03+02:00" + }, + { + "hash": "81f1056", + "short": "i18n(goals): add namespace JSONs for de/en/es/fr/it", + "type": "i18n", + "scope": "goals", + "additions": 195, + "deletions": 0, + "timestamp": "2026-04-27T01:47:02+02:00" + }, + { + "hash": "421a49a", + "short": "docs(sync): close Punkt 5 audit — backend updated_at columns are not sync orphans", + "type": "docs", + "scope": "sync", + "additions": 3, + "deletions": 1, + "timestamp": "2026-04-27T01:47:41+02:00" + }, + { + "hash": "b06d950", + "short": "i18n(goals): wire GoalEditor to namespace — 15 strings cleared", + "type": "i18n", + "scope": "goals", + "additions": 68, + "deletions": 38, + "timestamp": "2026-04-27T01:48:01+02:00" + }, + { + "hash": "220afc0", + "short": "i18n(firsts): add namespace JSONs for de/en/es/fr/it", + "type": "i18n", + "scope": "firsts", + "additions": 350, + "deletions": 0, + "timestamp": "2026-04-27T01:49:24+02:00" + }, + { + "hash": "275130f", + "short": "test(sync): cross-cutting integration tests for field-meta overhaul (Punkt 12)", + "type": "test", + "scope": "sync", + "additions": 150, + "deletions": 2, + "timestamp": "2026-04-27T01:54:35+02:00" + }, + { + "hash": "d5d2b6f", + "short": "docs(sync): document F1 + F3 commit-log corrections (Punkt 9 + 11)", + "type": "docs", + "scope": "sync", + "additions": 11, + "deletions": 1, + "timestamp": "2026-04-27T01:56:38+02:00" + }, + { + "hash": "fa5dbb2", + "short": "i18n(firsts): wire ListView to namespace — 15 strings cleared", + "type": "i18n", + "scope": "firsts", + "additions": 87, + "deletions": 61, + "timestamp": "2026-04-27T01:59:09+02:00" + }, + { + "hash": "c9221b9", + "short": "i18n(api-keys): add namespace JSONs for de/en/es/fr/it", + "type": "i18n", + "scope": "api-keys", + "additions": 235, + "deletions": 0, + "timestamp": "2026-04-27T02:01:47+02:00" + }, + { + "hash": "897a55b", + "short": "i18n(api-keys): wire +page to namespace — 14 strings cleared", + "type": "i18n", + "scope": "api-keys", + "additions": 87, + "deletions": 41, + "timestamp": "2026-04-27T02:03:47+02:00" + }, + { + "hash": "65da520", + "short": "i18n(recipes): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "recipes", + "additions": 225, + "deletions": 0, + "timestamp": "2026-04-27T02:06:39+02:00" + }, + { + "hash": "5c3c7ed", + "short": "i18n(recipes): translate ListView via $_() — search, filters, ctx menu, detail panel, create form", + "type": "i18n", + "scope": "recipes", + "additions": 59, + "deletions": 35, + "timestamp": "2026-04-27T02:08:40+02:00" + }, + { + "hash": "3e41b14", + "short": "i18n(dreams): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "dreams", + "additions": 240, + "deletions": 0, + "timestamp": "2026-04-27T02:10:03+02:00" + }, + { + "hash": "779752e", + "short": "i18n(dreams): translate ListView via $_() — view tabs, insights, filters, editor, transcription badges", + "type": "i18n", + "scope": "dreams", + "additions": 67, + "deletions": 40, + "timestamp": "2026-04-27T02:12:00+02:00" + }, + { + "hash": "1b295f3", + "short": "i18n(automations): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "automations", + "additions": 155, + "deletions": 0, + "timestamp": "2026-04-27T02:13:22+02:00" + }, + { + "hash": "1894e65", + "short": "i18n(automations): translate ListView via $_() — suggestions, create form, flow visualization, empty state", + "type": "i18n", + "scope": "automations", + "additions": 39, + "deletions": 26, + "timestamp": "2026-04-27T02:14:40+02:00" + }, + { + "hash": "c1e5aa9", + "short": "i18n(spiral): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "spiral", + "additions": 155, + "deletions": 0, + "timestamp": "2026-04-27T02:15:28+02:00" + }, + { + "hash": "2790244", + "short": "i18n(spiral): translate ListView via $_() — visualization, stats, apps, palette, actions, info-box", + "type": "i18n", + "scope": "spiral", + "additions": 41, + "deletions": 30, + "timestamp": "2026-04-27T02:16:47+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-26/macher.md b/devlog/2026-04-26/macher.md new file mode 100644 index 000000000..f9aa317f6 --- /dev/null +++ b/devlog/2026-04-26/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-26 +day: 95 +view: macher +weekday: Sonntag +commits: 91 +review: written +--- + +# Sonntag, 2026-04-26 — Tag 95 (Macher-Sicht) + +## Stats + +91 Commits, +36457 / −5729 LoC, 619 Files. Top-Dirs: `apps/mana/apps/web` (79%), `scripts/i18n-hardcoded-baseline.json` (3%), `services/mana-ai/src` (1%), `docs/plans/sync-field-meta-overhaul.md` (1%), `packages/feedback/src` (1%). Tags: sync, mana-llm, mana-analytics, community, comic. Session 17:27 → 00:16 (~338 aktive Min, längster Fokus 184 Min). + +## Commits + +- `ef96948` feat(comic): Mc4 — MCP + AI-Catalog für Character-System (+908/-14) +- `3d30e39` feat(comic): Mc5 — Wardrobe-Hook "Als Comic-Character" (+80/-13) +- `e930a66` refactor(workbench-seeding): inline v48 dedup, drop dead helper module (+74/-370) +- `8c5f064` test+docs(workbench-seeding): hook stamping test + per-space-seeds guide (+152/-0) +- `507532c` docs(workbench-seeding-cleanup): record polish-pass commits (+3/-1) +- `4498373` chore(branding): tier-patch remaining 8 modules to 'guest' (+8/-8) +- `450372e` fix(writing): decrypt drafts/versions before reading encrypted fields (+27/-7) +- `1c4486c` fix(comic): inline face-upload banner — Parität mit Wardrobe-UX (+180/-44) +- `aac1e3d` fix(profile): klarere Fehlermeldung bei nicht-authentifiziertem me-image-Upload (+18/-1) +- `e186023` docs(plans): LLM-fallback via model-aliases — spec (+236/-0) +- `dff8629` feat(mana-llm): M1 — AliasRegistry + aliases.yaml SSOT (+581/-0) +- `59557e6` feat(mana-llm): M2 — ProviderHealthCache + background probe loop (+811/-0) +- `3046da3` feat(mana-llm): M3 — health-aware router with alias + chain fallback (+953/-242) +- `8a49e3f` feat(mana-llm): M4 — observability, debug endpoints, SIGHUP reload (+749/-29) +- `fea3adf` feat(llm-aliases): M5 — migrate consumers to MANA_LLM aliases (+299/-50) +- `30eb7ef` feat(settings): full i18n coverage — DE/EN/ES/FR/IT (+2614/-551) +- `7766ea5` docs(plans): mark llm-fallback-aliases SHIPPED, add M-by-M commit table (+663/-347) +- `6c942e3` feat(profile): translate ContextOverview into all 5 locales (+302/-81) +- `ad5e04a` feat(sync): F2 — origin-gated conflict-detection (+279/-50) +- `bf3bca2` feat(lasts): M1-M7 — module ship + Meilensteine-Aggregator (+6572/-40) + +_… plus 71 weitere Commits._ diff --git a/devlog/2026-04-26/spieler.md b/devlog/2026-04-26/spieler.md new file mode 100644 index 000000000..476225826 --- /dev/null +++ b/devlog/2026-04-26/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-26 +day: 95 +view: spieler +weekday: Sonntag +commits: 91 +review: written +--- + +# Sonntag, 2026-04-26 — Tag 95 + +Großer Sprint-Tag mit Schwerpunkt **apps** (91 Commits). + +## Highlights + +- Mc4 — MCP + AI-Catalog für Character-System +- Mc5 — Wardrobe-Hook "Als Comic-Character" +- record polish-pass commits +- decrypt drafts/versions before reading encrypted fields +- inline face-upload banner — Parität mit Wardrobe-UX diff --git a/devlog/2026-04-27/data.json b/devlog/2026-04-27/data.json new file mode 100644 index 000000000..3a561f358 --- /dev/null +++ b/devlog/2026-04-27/data.json @@ -0,0 +1,813 @@ +{ + "date": "2026-04-27", + "day_number": 96, + "weekday": "Montag", + "commits": 80, + "authors": [ + { + "name": "Till JS", + "count": 80 + } + ], + "additions": 12555, + "deletions": 2508, + "net_lines": 10047, + "files_changed": 310, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-04-27T10:40:43.000Z", + "last_commit_at": "2026-04-27T20:36:57.000Z", + "total_span_minutes": 596, + "active_minutes": 286, + "pauses": [ + { + "from": "16:08", + "to": "17:58", + "minutes": 110 + }, + { + "from": "19:13", + "to": "22:32", + "minutes": 200 + } + ], + "longest_focus_minutes": 208 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 77 + }, + { + "path": "scripts/i18n-hardcoded-baseline.json", + "pct": 9 + }, + { + "path": "packages/feedback/src", + "pct": 4 + }, + { + "path": "services/mana-analytics/src", + "pct": 4 + }, + { + "path": "scripts/i18n-missing-baseline.json", + "pct": 2 + } + ], + "top_extensions": [ + { + "ext": ".json", + "count": 331 + }, + { + "ext": ".svelte", + "count": 74 + }, + { + "ext": ".ts", + "count": 41 + }, + { + "ext": ".md", + "count": 4 + }, + { + "ext": ".sql", + "count": 4 + }, + { + "ext": ".yml", + "count": 3 + } + ], + "tags": ["locales", "broadcast", "news", "quiz", "todo/settings"], + "commits_list": [ + { + "hash": "0fbef25", + "short": "i18n(quiz): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "quiz", + "additions": 230, + "deletions": 0, + "timestamp": "2026-04-27T12:40:43+02:00" + }, + { + "hash": "84bc904", + "short": "i18n(quiz): translate EditView via $_() — header, meta inputs, question list, new-question form", + "type": "i18n", + "scope": "quiz", + "additions": 64, + "deletions": 44, + "timestamp": "2026-04-27T12:42:11+02:00" + }, + { + "hash": "fbc0613", + "short": "i18n(todo/settings): extend settings sub-namespace with descriptions and option labels", + "type": "i18n", + "scope": "todo/settings", + "additions": 146, + "deletions": 26, + "timestamp": "2026-04-27T12:47:40+02:00" + }, + { + "hash": "753230c", + "short": "i18n(todo/settings): translate +page.svelte via $_() — all 6 sections + reset", + "type": "i18n", + "scope": "todo/settings", + "additions": 51, + "deletions": 44, + "timestamp": "2026-04-27T12:49:46+02:00" + }, + { + "hash": "69bdd18", + "short": "i18n(broadcast): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "broadcast", + "additions": 255, + "deletions": 0, + "timestamp": "2026-04-27T13:09:24+02:00" + }, + { + "hash": "99244c6", + "short": "i18n(broadcast): translate ComposeView via $_() — 4-step wizard end to end", + "type": "i18n", + "scope": "broadcast", + "additions": 83, + "deletions": 53, + "timestamp": "2026-04-27T13:11:16+02:00" + }, + { + "hash": "582c1a2", + "short": "i18n(timeline): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "timeline", + "additions": 100, + "deletions": 0, + "timestamp": "2026-04-27T13:35:57+02:00" + }, + { + "hash": "e0e80dc", + "short": "i18n(timeline): translate analytics +page.svelte via $_() — header, summary cards, sections", + "type": "i18n", + "scope": "timeline", + "additions": 19, + "deletions": 19, + "timestamp": "2026-04-27T13:37:11+02:00" + }, + { + "hash": "ab57a62", + "short": "i18n(news): extend feed/reactions/onboarding sub-namespaces with badge + state keys", + "type": "i18n", + "scope": "news", + "additions": 45, + "deletions": 10, + "timestamp": "2026-04-27T13:44:13+02:00" + }, + { + "hash": "390da4c", + "short": "i18n(news): translate +page.svelte via $_() — onboarding wizard + feed cards", + "type": "i18n", + "scope": "news", + "additions": 52, + "deletions": 36, + "timestamp": "2026-04-27T13:45:33+02:00" + }, + { + "hash": "24fc3c6", + "short": "i18n(finance): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "finance", + "additions": 95, + "deletions": 0, + "timestamp": "2026-04-27T13:46:43+02:00" + }, + { + "hash": "f29bb30", + "short": "i18n(finance): translate +page.svelte via $_() — header, summary cards, breakdown, add form, history", + "type": "i18n", + "scope": "finance", + "additions": 15, + "deletions": 15, + "timestamp": "2026-04-27T13:48:35+02:00" + }, + { + "hash": "3e7f70e", + "short": "i18n(context): extend with home sub-namespace for /context overview page", + "type": "i18n", + "scope": "context", + "additions": 95, + "deletions": 0, + "timestamp": "2026-04-27T13:51:44+02:00" + }, + { + "hash": "165a3e0", + "short": "i18n(context): translate +page.svelte via $_() — overview page", + "type": "i18n", + "scope": "context", + "additions": 19, + "deletions": 19, + "timestamp": "2026-04-27T13:53:14+02:00" + }, + { + "hash": "99e5621", + "short": "i18n(food): extend with detail sub-namespace for /food/[id] page", + "type": "i18n", + "scope": "food", + "additions": 140, + "deletions": 0, + "timestamp": "2026-04-27T13:54:53+02:00" + }, + { + "hash": "5dc0494", + "short": "i18n(food): translate /food/[id] +page.svelte via $_() — meal detail page", + "type": "i18n", + "scope": "food", + "additions": 63, + "deletions": 36, + "timestamp": "2026-04-27T13:57:38+02:00" + }, + { + "hash": "e712faf", + "short": "i18n(api-keys): translate ListView via $_() — workbench module mirrors page strings", + "type": "i18n", + "scope": "api-keys", + "additions": 70, + "deletions": 34, + "timestamp": "2026-04-27T14:01:58+02:00" + }, + { + "hash": "dbe24ac", + "short": "feat(feedback,credits): community-credit grants — +5 submit / +500 ship / +25 reaction-match", + "type": "feat", + "scope": "feedback,credits", + "additions": 882, + "deletions": 7, + "timestamp": "2026-04-27T14:13:46+02:00" + }, + { + "hash": "eecf64c", + "short": "feat(community,feedback): +5 reward chip + Phase 3.F legacy-cleanup", + "type": "feat", + "scope": "community,feedback", + "additions": 90, + "deletions": 1017, + "timestamp": "2026-04-27T14:14:08+02:00" + }, + { + "hash": "942bcfa", + "short": "fix(recipes): each-block local var '_' shadowed the svelte-i18n store", + "type": "fix", + "scope": "recipes", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-27T14:16:49+02:00" + }, + { + "hash": "d7c6777", + "short": "i18n(articles): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "articles", + "additions": 190, + "deletions": 0, + "timestamp": "2026-04-27T14:17:50+02:00" + }, + { + "hash": "1109d4e", + "short": "chore(i18n): bump hardcoded-baseline for reward-chip \"Mana Credits\" string", + "type": "chore", + "scope": "i18n", + "additions": 1, + "deletions": 2, + "timestamp": "2026-04-27T14:19:32+02:00" + }, + { + "hash": "d7c0329", + "short": "i18n(articles): translate DetailView via $_() — page title, meta-row, tag picker, floating reader toolbar", + "type": "i18n", + "scope": "articles", + "additions": 55, + "deletions": 38, + "timestamp": "2026-04-27T14:20:01+02:00" + }, + { + "hash": "0ae8419", + "short": "i18n(broadcast): extend with statuses + detail_view sub-namespaces", + "type": "i18n", + "scope": "broadcast", + "additions": 140, + "deletions": 0, + "timestamp": "2026-04-27T14:21:18+02:00" + }, + { + "hash": "474f5ac", + "short": "i18n(broadcast): translate DetailView via $_() — header, actions, stats grid, polling, preview", + "type": "i18n", + "scope": "broadcast", + "additions": 52, + "deletions": 22, + "timestamp": "2026-04-27T14:22:17+02:00" + }, + { + "hash": "c89792f", + "short": "fix(broadcast): silence unused-CSS check on .failed-count (selector reused via :global)", + "type": "fix", + "scope": "broadcast", + "additions": 8, + "deletions": 2, + "timestamp": "2026-04-27T14:24:08+02:00" + }, + { + "hash": "2266d83", + "short": "i18n(moodlit): translate moods/+page.svelte via $_() — page header, create form, toasts", + "type": "i18n", + "scope": "moodlit", + "additions": 81, + "deletions": 11, + "timestamp": "2026-04-27T14:24:18+02:00" + }, + { + "hash": "39a6f42", + "short": "fix(mana-credits): correct pnpm workspace filter (@mana/credits-service, not @mana/credits)", + "type": "fix", + "scope": "mana-credits", + "additions": 4, + "deletions": 2, + "timestamp": "2026-04-27T14:27:18+02:00" + }, + { + "hash": "4857e2c", + "short": "i18n(photos): translate PhotoDetailModal via $_() — info panel, EXIF rows, OSM link", + "type": "i18n", + "scope": "photos", + "additions": 59, + "deletions": 17, + "timestamp": "2026-04-27T14:28:09+02:00" + }, + { + "hash": "08ad86e", + "short": "i18n(ai-workbench): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "ai-workbench", + "additions": 160, + "deletions": 0, + "timestamp": "2026-04-27T14:29:29+02:00" + }, + { + "hash": "391017b", + "short": "i18n(ai-workbench): translate ListView via $_() — tabs, filters, audit table, timeline buckets", + "type": "i18n", + "scope": "ai-workbench", + "additions": 64, + "deletions": 36, + "timestamp": "2026-04-27T14:31:33+02:00" + }, + { + "hash": "e89958e", + "short": "fix(compose): mana-analytics MANA_CREDITS_URL points to prod port 3002 (not dev 3061)", + "type": "fix", + "scope": "compose", + "additions": 1, + "deletions": 1, + "timestamp": "2026-04-27T14:32:17+02:00" + }, + { + "hash": "54f84de", + "short": "i18n(broadcast): extend with list_view sub-namespace", + "type": "i18n", + "scope": "broadcast", + "additions": 105, + "deletions": 0, + "timestamp": "2026-04-27T14:33:25+02:00" + }, + { + "hash": "0ca9394", + "short": "i18n(broadcast): translate ListView via $_() — header, stats, filters, list rows", + "type": "i18n", + "scope": "broadcast", + "additions": 34, + "deletions": 26, + "timestamp": "2026-04-27T14:34:32+02:00" + }, + { + "hash": "2491649", + "short": "i18n(dreams): extend with symbol_detail sub-namespace", + "type": "i18n", + "scope": "dreams", + "additions": 120, + "deletions": 0, + "timestamp": "2026-04-27T14:40:04+02:00" + }, + { + "hash": "258edaa", + "short": "i18n(dreams): translate SymbolDetailView via $_() — header, merge dialog, sections, dream list", + "type": "i18n", + "scope": "dreams", + "additions": 42, + "deletions": 25, + "timestamp": "2026-04-27T14:41:30+02:00" + }, + { + "hash": "c0bf9aa", + "short": "i18n(news): translate workbench ListView via $_() — onboarding CTA, toolbar, list rows", + "type": "i18n", + "scope": "news", + "additions": 61, + "deletions": 16, + "timestamp": "2026-04-27T14:43:18+02:00" + }, + { + "hash": "b290ed7", + "short": "i18n(notes): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "notes", + "additions": 95, + "deletions": 0, + "timestamp": "2026-04-27T14:44:10+02:00" + }, + { + "hash": "2cf3a06", + "short": "i18n(notes): translate /notes +page.svelte via $_() — header, toolbar, create form, sections", + "type": "i18n", + "scope": "notes", + "additions": 24, + "deletions": 18, + "timestamp": "2026-04-27T14:45:15+02:00" + }, + { + "hash": "42ce115", + "short": "i18n(mail): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "mail", + "additions": 125, + "deletions": 0, + "timestamp": "2026-04-27T14:47:56+02:00" + }, + { + "hash": "abbc456", + "short": "i18n(mail): translate ListView via $_() — sidebar, thread list, compose form, context menu", + "type": "i18n", + "scope": "mail", + "additions": 32, + "deletions": 19, + "timestamp": "2026-04-27T14:49:23+02:00" + }, + { + "hash": "4f2a36e", + "short": "i18n(todo): extend with detailView sub-namespace", + "type": "i18n", + "scope": "todo", + "additions": 75, + "deletions": 0, + "timestamp": "2026-04-27T14:50:43+02:00" + }, + { + "hash": "1931739", + "short": "i18n(todo): translate views/DetailView via $_() — title, prop rows, sections, meta", + "type": "i18n", + "scope": "todo", + "additions": 48, + "deletions": 26, + "timestamp": "2026-04-27T14:53:09+02:00" + }, + { + "hash": "c94b673", + "short": "i18n(sleep): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "sleep", + "additions": 110, + "deletions": 0, + "timestamp": "2026-04-27T14:54:31+02:00" + }, + { + "hash": "3a18a5e", + "short": "feat(community): Phase 3.B — loop closure (notifications + my-wishes page)", + "type": "feat", + "scope": "community", + "additions": 933, + "deletions": 7, + "timestamp": "2026-04-27T14:55:01+02:00" + }, + { + "hash": "66ab5f6", + "short": "i18n(sleep): translate ListView via $_() — log CTA, last-night, week chart, stats, heatmap, hygiene", + "type": "i18n", + "scope": "sleep", + "additions": 70, + "deletions": 20, + "timestamp": "2026-04-27T14:58:45+02:00" + }, + { + "hash": "53cf17a", + "short": "i18n(places): add namespace JSONs (de/en/es/fr/it)", + "type": "i18n", + "scope": "places", + "additions": 180, + "deletions": 0, + "timestamp": "2026-04-27T15:00:51+02:00" + }, + { + "hash": "092c45c", + "short": "i18n(places): translate views/DetailView via $_() — header, fields, sections, meta", + "type": "i18n", + "scope": "places", + "additions": 49, + "deletions": 35, + "timestamp": "2026-04-27T15:02:54+02:00" + }, + { + "hash": "d391a60", + "short": "i18n(memoro): extend with detail_view sub-namespace", + "type": "i18n", + "scope": "memoro", + "additions": 170, + "deletions": 0, + "timestamp": "2026-04-27T15:05:49+02:00" + }, + { + "hash": "98ce33e", + "short": "i18n(memoro): translate views/DetailView via $_() — title sources, statuses, fields, transcript", + "type": "i18n", + "scope": "memoro", + "additions": 44, + "deletions": 37, + "timestamp": "2026-04-27T15:07:35+02:00" + }, + { + "hash": "42e4d58", + "short": "i18n(news/preferences): translate +page.svelte via $_() — header, all 5 sections", + "type": "i18n", + "scope": "news/preferences", + "additions": 45, + "deletions": 20, + "timestamp": "2026-04-27T15:11:03+02:00" + }, + { + "hash": "ee5bb28", + "short": "feat(community): Phase 3.C — Identität (Avatar + Klarname-Toggle + Karma + Eulen-Profil)", + "type": "feat", + "scope": "community", + "additions": 760, + "deletions": 23, + "timestamp": "2026-04-27T15:15:16+02:00" + }, + { + "hash": "de2134f", + "short": "i18n(gifts/redeem): translate /[code] +page.svelte via $_() — info card, redeem flow, success state", + "type": "i18n", + "scope": "gifts/redeem", + "additions": 225, + "deletions": 37, + "timestamp": "2026-04-27T15:17:27+02:00" + }, + { + "hash": "5f15946", + "short": "fix(compose): point mana-auth SYNC_DATABASE_URL at mana_sync, not mana_platform", + "type": "fix", + "scope": "compose", + "additions": 7, + "deletions": 1, + "timestamp": "2026-04-27T15:26:13+02:00" + }, + { + "hash": "4ed8686", + "short": "i18n(photos): translate FilterBar via $_() — App/Zeitraum/Sortierung/Reihenfolge + Reset/Apply", + "type": "i18n", + "scope": "photos", + "additions": 51, + "deletions": 17, + "timestamp": "2026-04-27T15:26:51+02:00" + }, + { + "hash": "1b30c36", + "short": "feat(settings): Community-Section mit Klarname-Toggle + Avatar/Karma-Preview", + "type": "feat", + "scope": "settings", + "additions": 399, + "deletions": 2, + "timestamp": "2026-04-27T15:31:14+02:00" + }, + { + "hash": "f92d647", + "short": "i18n(food/home): translate /food +page.svelte via $_() — header, progress cards, today's meals, links", + "type": "i18n", + "scope": "food/home", + "additions": 121, + "deletions": 21, + "timestamp": "2026-04-27T15:34:25+02:00" + }, + { + "hash": "a5d4554", + "short": "i18n(myday): translate ListView via $_() — 5 sections + alerts", + "type": "i18n", + "scope": "myday", + "additions": 87, + "deletions": 11, + "timestamp": "2026-04-27T15:36:15+02:00" + }, + { + "hash": "4357433", + "short": "i18n(contacts): translate /contacts +page.svelte via $_() — header, page picker, modal form", + "type": "i18n", + "scope": "contacts", + "additions": 331, + "deletions": 45, + "timestamp": "2026-04-27T15:44:38+02:00" + }, + { + "hash": "aa96cae", + "short": "i18n(wallpaper): translate WallpaperPicker via $_() — scope toggle, tabs, sections, upload, overlay", + "type": "i18n", + "scope": "wallpaper", + "additions": 163, + "deletions": 25, + "timestamp": "2026-04-27T16:08:37+02:00" + }, + { + "hash": "98a9bc4", + "short": "i18n(agents/templates): translate /agents/templates +page.svelte via $_()", + "type": "i18n", + "scope": "agents/templates", + "additions": 349, + "deletions": 49, + "timestamp": "2026-04-27T17:58:15+02:00" + }, + { + "hash": "246c943", + "short": "test(feedback): pixel-avatar + redact privacy-boundary; mark plan SHIPPED", + "type": "test", + "scope": "feedback", + "additions": 221, + "deletions": 15, + "timestamp": "2026-04-27T18:11:17+02:00" + }, + { + "hash": "e3c2b26", + "short": "i18n(locales): add comic + extend cards/guides for next 3 detail/progress views", + "type": "i18n", + "scope": "locales", + "additions": 385, + "deletions": 0, + "timestamp": "2026-04-27T18:14:14+02:00" + }, + { + "hash": "63b9ff4", + "short": "i18n(comic+guides+cards): translate 3 detail/progress views via $_()", + "type": "i18n", + "scope": "comic+guides+cards", + "additions": 99, + "deletions": 68, + "timestamp": "2026-04-27T18:17:08+02:00" + }, + { + "hash": "c2660dd", + "short": "i18n(locales): add wetter + extend profile/contacts for next 3 detail/freeform/comparison views", + "type": "i18n", + "scope": "locales", + "additions": 350, + "deletions": 0, + "timestamp": "2026-04-27T18:19:51+02:00" + }, + { + "hash": "3abcbd4", + "short": "i18n(wetter+profile+contacts): translate 3 detail/freeform/comparison views via $_()", + "type": "i18n", + "scope": "wetter+profile+contacts", + "additions": 104, + "deletions": 69, + "timestamp": "2026-04-27T18:23:29+02:00" + }, + { + "hash": "ef3243a", + "short": "i18n(locales): extend inventory + questions, add invitations namespace", + "type": "i18n", + "scope": "locales", + "additions": 345, + "deletions": 0, + "timestamp": "2026-04-27T18:26:15+02:00" + }, + { + "hash": "7339fba", + "short": "i18n(inventory+questions+invitations): translate 3 routes via $_()", + "type": "i18n", + "scope": "inventory+questions+invitations", + "additions": 95, + "deletions": 80, + "timestamp": "2026-04-27T18:29:17+02:00" + }, + { + "hash": "70a06d1", + "short": "i18n(locales): extend cards/finance + add mood namespace", + "type": "i18n", + "scope": "locales", + "additions": 185, + "deletions": 0, + "timestamp": "2026-04-27T18:35:34+02:00" + }, + { + "hash": "b99dd60", + "short": "i18n(cards+finance+mood): translate 3 list/detail views via $_()", + "type": "i18n", + "scope": "cards+finance+mood", + "additions": 56, + "deletions": 40, + "timestamp": "2026-04-27T18:38:06+02:00" + }, + { + "hash": "fa401cf", + "short": "i18n(locales): add music namespace + extend profile with hub sub", + "type": "i18n", + "scope": "locales", + "additions": 195, + "deletions": 0, + "timestamp": "2026-04-27T18:39:50+02:00" + }, + { + "hash": "a5cef98", + "short": "i18n(music+profile): translate detail/hub views via $_()", + "type": "i18n", + "scope": "music+profile", + "additions": 61, + "deletions": 45, + "timestamp": "2026-04-27T18:41:43+02:00" + }, + { + "hash": "5d9dc80", + "short": "i18n(locales): extend comic with picker+character_detail, quiz with play_view", + "type": "i18n", + "scope": "locales", + "additions": 315, + "deletions": 0, + "timestamp": "2026-04-27T18:44:23+02:00" + }, + { + "hash": "a842537", + "short": "i18n(comic+quiz): translate picker/character-detail/play-view via $_()", + "type": "i18n", + "scope": "comic+quiz", + "additions": 111, + "deletions": 78, + "timestamp": "2026-04-27T18:47:37+02:00" + }, + { + "hash": "e773e44", + "short": "test(feedback): DB-backed integration tests — credits, karma, notifications", + "type": "test", + "scope": "feedback", + "additions": 901, + "deletions": 15, + "timestamp": "2026-04-27T19:08:29+02:00" + }, + { + "hash": "136d3fb", + "short": "i18n(locales): extend body+mood+questions for picker/quicklog/question-detail", + "type": "i18n", + "scope": "locales", + "additions": 195, + "deletions": 10, + "timestamp": "2026-04-27T19:11:02+02:00" + }, + { + "hash": "7dfa1c7", + "short": "i18n(body+mood+questions): translate picker/quick-log/question-detail via $_()", + "type": "i18n", + "scope": "body+mood+questions", + "additions": 91, + "deletions": 70, + "timestamp": "2026-04-27T19:13:18+02:00" + }, + { + "hash": "0f1dbe9", + "short": "i18n(locales): add drink+habits, extend picture for list-view sub", + "type": "i18n", + "scope": "locales", + "additions": 275, + "deletions": 0, + "timestamp": "2026-04-27T22:32:59+02:00" + }, + { + "hash": "0986d07", + "short": "docs: feedback-hub manual-test-checklist", + "type": null, + "scope": null, + "additions": 319, + "deletions": 0, + "timestamp": "2026-04-27T22:33:28+02:00" + }, + { + "hash": "4237d84", + "short": "i18n(drink+habits+picture): translate 3 list views via $_()", + "type": "i18n", + "scope": "drink+habits+picture", + "additions": 67, + "deletions": 46, + "timestamp": "2026-04-27T22:36:57+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-04-27/macher.md b/devlog/2026-04-27/macher.md new file mode 100644 index 000000000..4d9b7f452 --- /dev/null +++ b/devlog/2026-04-27/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-27 +day: 96 +view: macher +weekday: Montag +commits: 80 +review: written +--- + +# Montag, 2026-04-27 — Tag 96 (Macher-Sicht) + +## Stats + +80 Commits, +12555 / −2508 LoC, 310 Files. Top-Dirs: `apps/mana/apps/web` (77%), `scripts/i18n-hardcoded-baseline.json` (9%), `packages/feedback/src` (4%), `services/mana-analytics/src` (4%), `scripts/i18n-missing-baseline.json` (2%). Tags: locales, broadcast, news, quiz, todo/settings. Session 10:40 → 20:36 (~286 aktive Min, längster Fokus 208 Min). + +## Commits + +- `0fbef25` i18n(quiz): add namespace JSONs (de/en/es/fr/it) (+230/-0) +- `84bc904` i18n(quiz): translate EditView via $\_() — header, meta inputs, question list, new-question form (+64/-44) +- `fbc0613` i18n(todo/settings): extend settings sub-namespace with descriptions and option labels (+146/-26) +- `753230c` i18n(todo/settings): translate +page.svelte via $\_() — all 6 sections + reset (+51/-44) +- `69bdd18` i18n(broadcast): add namespace JSONs (de/en/es/fr/it) (+255/-0) +- `99244c6` i18n(broadcast): translate ComposeView via $\_() — 4-step wizard end to end (+83/-53) +- `582c1a2` i18n(timeline): add namespace JSONs (de/en/es/fr/it) (+100/-0) +- `e0e80dc` i18n(timeline): translate analytics +page.svelte via $\_() — header, summary cards, sections (+19/-19) +- `ab57a62` i18n(news): extend feed/reactions/onboarding sub-namespaces with badge + state keys (+45/-10) +- `390da4c` i18n(news): translate +page.svelte via $\_() — onboarding wizard + feed cards (+52/-36) +- `24fc3c6` i18n(finance): add namespace JSONs (de/en/es/fr/it) (+95/-0) +- `f29bb30` i18n(finance): translate +page.svelte via $\_() — header, summary cards, breakdown, add form, history (+15/-15) +- `3e7f70e` i18n(context): extend with home sub-namespace for /context overview page (+95/-0) +- `165a3e0` i18n(context): translate +page.svelte via $\_() — overview page (+19/-19) +- `99e5621` i18n(food): extend with detail sub-namespace for /food/[id] page (+140/-0) +- `5dc0494` i18n(food): translate /food/[id] +page.svelte via $\_() — meal detail page (+63/-36) +- `e712faf` i18n(api-keys): translate ListView via $\_() — workbench module mirrors page strings (+70/-34) +- `dbe24ac` feat(feedback,credits): community-credit grants — +5 submit / +500 ship / +25 reaction-match (+882/-7) +- `eecf64c` feat(community,feedback): +5 reward chip + Phase 3.F legacy-cleanup (+90/-1017) +- `942bcfa` fix(recipes): each-block local var '\_' shadowed the svelte-i18n store (+1/-1) + +_… plus 60 weitere Commits._ diff --git a/devlog/2026-04-27/spieler.md b/devlog/2026-04-27/spieler.md new file mode 100644 index 000000000..dba2cd42c --- /dev/null +++ b/devlog/2026-04-27/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-27 +day: 96 +view: spieler +weekday: Montag +commits: 80 +review: written +--- + +# Montag, 2026-04-27 — Tag 96 + +Großer Sprint-Tag mit Schwerpunkt **apps** (80 Commits). + +## Highlights + +- i18n(quiz): add namespace JSONs (de/en/es/fr/it) +- i18n(quiz): translate EditView via $\_() — header, meta inputs, question list, new-question form +- i18n(todo/settings): extend settings sub-namespace with descriptions and option labels +- i18n(todo/settings): translate +page.svelte via $\_() — all 6 sections + reset +- i18n(broadcast): add namespace JSONs (de/en/es/fr/it) diff --git a/devlog/2026-04-28/data.json b/devlog/2026-04-28/data.json new file mode 100644 index 000000000..39cf6d71e --- /dev/null +++ b/devlog/2026-04-28/data.json @@ -0,0 +1,683 @@ +{ + "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 + } +} diff --git a/devlog/2026-04-28/macher.md b/devlog/2026-04-28/macher.md new file mode 100644 index 000000000..0cde8239b --- /dev/null +++ b/devlog/2026-04-28/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-04-28 +day: 97 +view: macher +weekday: Dienstag +commits: 65 +review: written +--- + +# Dienstag, 2026-04-28 — Tag 97 (Macher-Sicht) + +## Stats + +65 Commits, +21935 / −29438 LoC, 491 Files. Top-Dirs: `apps/mana/apps/web` (54%), `games/arcade/apps` (13%), `services/mana-geocoding/src` (9%), `apps/api/src/modules` (3%), `packages/shared-branding/src` (2%). Tags: articles, forms, feedback, geocoding, deploy. Session 12:54 → 00:50 (~436 aktive Min, längster Fokus 273 Min). + +## Commits + +- `44f9155` chore(dev): pnpm dev:analytics script + test-checklist mentions local-dev startup (+19/-1) +- `0c30a16` fix: 4 boot-time noise + correctness bugs surfaced by post-deploy smoke (+106/-55) +- `5377190` infra(macmini): bump squeezed container memory limits (+10/-5) +- `eaa1d74` fix: silence two cosmetic boot-time devtools warnings (+55/-20) +- `94d3277` feat(feedback): "Idee teilen" lebt jetzt im PillNav-Usermenü (+65/-109) +- `ff823bf` fix(feedback): POST /api/v1/feedback liest appId aus X-App-Id-Header (+6/-1) +- `f1e4a39` feat(geocoding): provider chain with Photon + Nominatim fallbacks (+2120/-184) +- `f39e723` chore(ci): drop 16 dead build-\* jobs + per-product detect-changes branches (+30/-727) +- `15ab24b` feat(feedback): heart-half als globales Feedback-Icon + inline-Form in der Workbench (+441/-341) +- `9a0cf5b` fix(geocoding): bump PROVIDER_TIMEOUT_MS default 5s → 8s (+6/-2) +- `34b1690` fix(mana-ai): copy missing workspace deps into Docker installer stage (+11/-1) +- `164d5da` fix(mana-llm): copy aliases.yaml into Docker image (+5/-1) +- `bcc21ca` feat(geocoding): privacy hardening — sensitive-query block + coord quantization + extended cache TTL for public answers (+658/-29) +- `698e09b` chore(deploy): auto-apply additive Drizzle schema migrations + RAM headroom for mana-web build (+283/-0) +- `112e2cc` feat(feedback): rename community → feedback (module + routes + domain) (+51/-51) +- `f20a411` chore(infra): right-size mem_limits based on observed RSS (Tier-3 sweep) (+28/-8) +- `b1fa55d` feat(places): surface geocoding privacy notices in autocomplete UI (+218/-25) +- `e4d9dc5` fix(deploy): safe-db-push uses pnpm dlx when local drizzle-kit is missing (+14/-2) +- `6f83fba` docs(reports): geocoding self-hosting decision — recommend Photon on mana-gpu (+219/-0) +- `941df57` feat(feedback): rename community-identity columns + settings-section (+544/-209) + +_… plus 45 weitere Commits._ diff --git a/devlog/2026-04-28/spieler.md b/devlog/2026-04-28/spieler.md new file mode 100644 index 000000000..cf79305b0 --- /dev/null +++ b/devlog/2026-04-28/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-04-28 +day: 97 +view: spieler +weekday: Dienstag +commits: 65 +review: written +--- + +# Dienstag, 2026-04-28 — Tag 97 + +Großer Sprint-Tag mit Schwerpunkt **apps** (65 Commits). + +## Highlights + +- 4 boot-time noise + correctness bugs surfaced by post-deploy smoke +- infra(macmini): bump squeezed container memory limits +- silence two cosmetic boot-time devtools warnings +- "Idee teilen" lebt jetzt im PillNav-Usermenü +- POST /api/v1/feedback liest appId aus X-App-Id-Header diff --git a/devlog/2026-05-05/data.json b/devlog/2026-05-05/data.json new file mode 100644 index 000000000..955d937ea --- /dev/null +++ b/devlog/2026-05-05/data.json @@ -0,0 +1,55 @@ +{ + "date": "2026-05-05", + "day_number": 98, + "weekday": "Dienstag", + "commits": 1, + "authors": [ + { + "name": "till", + "count": 1 + } + ], + "additions": 10, + "deletions": 0, + "net_lines": 10, + "files_changed": 1, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-05-05T13:46:20.000Z", + "last_commit_at": "2026-05-05T13:46:20.000Z", + "total_span_minutes": 0, + "active_minutes": 0, + "pauses": [], + "longest_focus_minutes": 0 + }, + "top_dirs": [ + { + "path": "cloudflared-config.yml", + "pct": 100 + } + ], + "top_extensions": [ + { + "ext": ".yml", + "count": 1 + } + ], + "tags": [], + "commits_list": [ + { + "hash": "fc1cde9", + "short": "tunnel: route admin.mana.how + npm.mana.how to the mana-platform stack", + "type": null, + "scope": null, + "additions": 10, + "deletions": 0, + "timestamp": "2026-05-05T15:46:20+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-05-05/macher.md b/devlog/2026-05-05/macher.md new file mode 100644 index 000000000..2f59c33a3 --- /dev/null +++ b/devlog/2026-05-05/macher.md @@ -0,0 +1,18 @@ +--- +date: 2026-05-05 +day: 98 +view: macher +weekday: Dienstag +commits: 1 +review: written +--- + +# Dienstag, 2026-05-05 — Tag 98 (Macher-Sicht) + +## Stats + +1 Commits, +10 / −0 LoC, 1 Files. Top-Dirs: `cloudflared-config.yml` (100%). Tags: —. Session 13:46 → 13:46 (~0 aktive Min, längster Fokus 0 Min). + +## Commits + +- `fc1cde9` tunnel: route admin.mana.how + npm.mana.how to the mana-platform stack (+10/-0) diff --git a/devlog/2026-05-05/spieler.md b/devlog/2026-05-05/spieler.md new file mode 100644 index 000000000..f026eb283 --- /dev/null +++ b/devlog/2026-05-05/spieler.md @@ -0,0 +1,16 @@ +--- +date: 2026-05-05 +day: 98 +view: spieler +weekday: Dienstag +commits: 1 +review: written +--- + +# Dienstag, 2026-05-05 — Tag 98 + +Ein kleinerer Schritt in **cloudflared-config.yml**. + +## Highlights + +- tunnel: route admin.mana.how + npm.mana.how to the mana-platform stack diff --git a/devlog/2026-05-06/data.json b/devlog/2026-05-06/data.json new file mode 100644 index 000000000..9d4cfa266 --- /dev/null +++ b/devlog/2026-05-06/data.json @@ -0,0 +1,316 @@ +{ + "date": "2026-05-06", + "day_number": 99, + "weekday": "Mittwoch", + "commits": 22, + "authors": [ + { + "name": "Till JS", + "count": 22 + } + ], + "additions": 9709, + "deletions": 8067, + "net_lines": 1642, + "files_changed": 171, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-05-06T11:39:50.000Z", + "last_commit_at": "2026-05-07T00:39:43.000Z", + "total_span_minutes": 780, + "active_minutes": 85, + "pauses": [ + { + "from": "13:39", + "to": "14:09", + "minutes": 30 + }, + { + "from": "14:09", + "to": "14:56", + "minutes": 47 + }, + { + "from": "15:31", + "to": "16:27", + "minutes": 56 + }, + { + "from": "16:27", + "to": "17:18", + "minutes": 50 + }, + { + "from": "17:18", + "to": "20:38", + "minutes": 200 + }, + { + "from": "20:39", + "to": "01:20", + "minutes": 281 + }, + { + "from": "02:03", + "to": "02:34", + "minutes": 31 + } + ], + "longest_focus_minutes": 43 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 45 + }, + { + "path": "apps/cards/apps/web", + "pct": 13 + }, + { + "path": "apps/cards/apps/landing", + "pct": 8 + }, + { + "path": "apps/api/src/modules", + "pct": 4 + }, + { + "path": "packages/cards-core/src", + "pct": 4 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 89 + }, + { + "ext": ".json", + "count": 41 + }, + { + "ext": ".svelte", + "count": 32 + }, + { + "ext": ".md", + "count": 17 + }, + { + "ext": ".astro", + "count": 9 + }, + { + "ext": ".yml", + "count": 7 + } + ], + "tags": ["forms", "infra", "cards", "cards-web", "mana-auth"], + "commits_list": [ + { + "hash": "cb9d79d", + "short": "feat(articles): finale polish — Help-Eintrag + intentional-console + 5-Locale i18n (#16,#10,#17)", + "type": "feat", + "scope": "articles", + "additions": 443, + "deletions": 67, + "timestamp": "2026-05-06T13:39:50+02:00" + }, + { + "hash": "38e0ae2", + "short": "feat(forms): M10a wiederkehrende Forms — cohort-tagging + UI", + "type": "feat", + "scope": "forms", + "additions": 470, + "deletions": 11, + "timestamp": "2026-05-06T14:09:55+02:00" + }, + { + "hash": "664b824", + "short": "feat(forms): M10b wave-send — Empfänger + Manueller Trigger + Due-Banner", + "type": "feat", + "scope": "forms", + "additions": 555, + "deletions": 7, + "timestamp": "2026-05-06T14:56:28+02:00" + }, + { + "hash": "7d8e562", + "short": "feat(forms): M10c auto-scheduler + mana-mail bulk-send", + "type": "feat", + "scope": "forms", + "additions": 430, + "deletions": 5, + "timestamp": "2026-05-06T15:15:12+02:00" + }, + { + "hash": "c1ed45e", + "short": "feat(forms): M9 form-as-conversation — Typeform-Chat-Render", + "type": "feat", + "scope": "forms", + "additions": 774, + "deletions": 6, + "timestamp": "2026-05-06T15:22:56+02:00" + }, + { + "hash": "6d67db4", + "short": "feat(forms): M9b conversation LLM-extract — free-text → typed Antwort", + "type": "feat", + "scope": "forms", + "additions": 468, + "deletions": 0, + "timestamp": "2026-05-06T15:31:25+02:00" + }, + { + "hash": "82dbfe6", + "short": "feat(forms): M7c auto-sync zu library + space_member", + "type": "feat", + "scope": "forms", + "additions": 497, + "deletions": 35, + "timestamp": "2026-05-06T16:27:40+02:00" + }, + { + "hash": "795b39e", + "short": "feat(forms): M10d headless wave-cron — server-worker + private internal_meta", + "type": "feat", + "scope": "forms", + "additions": 502, + "deletions": 5, + "timestamp": "2026-05-06T17:18:05+02:00" + }, + { + "hash": "546b94d", + "short": "feat(personas): move admin + internal endpoints from mana-auth to apps/api", + "type": "feat", + "scope": "personas", + "additions": 636, + "deletions": 25, + "timestamp": "2026-05-06T20:38:29+02:00" + }, + { + "hash": "1b579ab", + "short": "chore(mana-events): move from port 3065 to 3115 — collision with platform mana-media", + "type": "chore", + "scope": "mana-events", + "additions": 15, + "deletions": 13, + "timestamp": "2026-05-06T20:38:46+02:00" + }, + { + "hash": "c14aef9", + "short": "docs(infra): Mac-Mini ↔ Windows-GPU-Box workload-split — Plan Option C", + "type": "docs", + "scope": "infra", + "additions": 381, + "deletions": 0, + "timestamp": "2026-05-06T20:39:01+02:00" + }, + { + "hash": "c8a292b", + "short": "tunnel: route memoro.mana.how + memoro-app/api/audio to standalone Memoro stack", + "type": null, + "scope": null, + "additions": 20, + "deletions": 2, + "timestamp": "2026-05-06T20:39:12+02:00" + }, + { + "hash": "950b822", + "short": "docs(cards): Phase-1 Spinoff-Guidelines — Core-Gameloop, Stack, Datenpfad", + "type": "docs", + "scope": "cards", + "additions": 261, + "deletions": 0, + "timestamp": "2026-05-06T20:39:26+02:00" + }, + { + "hash": "0a544ac", + "short": "feat(cards): Phase-1 Spinoff — standalone cards.mana.how + cards-core extraction", + "type": "feat", + "scope": "cards", + "additions": 4090, + "deletions": 7466, + "timestamp": "2026-05-07T01:20:43+02:00" + }, + { + "hash": "f94c047", + "short": "chore: silence pre-existing svelte-check a11y warnings", + "type": null, + "scope": null, + "additions": 9, + "deletions": 0, + "timestamp": "2026-05-07T01:34:36+02:00" + }, + { + "hash": "86f14bc", + "short": "fix(cards-web): drop unused @mana/shared-crypto dep — not in sveltekit-base image", + "type": "fix", + "scope": "cards-web", + "additions": 0, + "deletions": 4, + "timestamp": "2026-05-07T01:46:50+02:00" + }, + { + "hash": "dd2e609", + "short": "fix(docker): COPY packages/cards-core in SvelteKit Dockerfiles", + "type": "fix", + "scope": "docker", + "additions": 77, + "deletions": 14, + "timestamp": "2026-05-07T01:47:07+02:00" + }, + { + "hash": "8b71d29", + "short": "feat(mana-auth): wire Glitchtip/Sentry error tracking via shared-error-tracking", + "type": "feat", + "scope": "mana-auth", + "additions": 29, + "deletions": 1, + "timestamp": "2026-05-07T01:55:07+02:00" + }, + { + "hash": "96c0616", + "short": "fix(cards-web): inject __PUBLIC_MANA_AUTH_URL__ on SSR — login was 404", + "type": "fix", + "scope": "cards-web", + "additions": 32, + "deletions": 0, + "timestamp": "2026-05-07T02:02:29+02:00" + }, + { + "hash": "1bac7cf", + "short": "fix(mana-auth): COPY packages/shared-error-tracking in Dockerfile", + "type": "fix", + "scope": "mana-auth", + "additions": 1, + "deletions": 0, + "timestamp": "2026-05-07T02:03:25+02:00" + }, + { + "hash": "f422fd6", + "short": "fix(shared-error-tracking): point main at src/, strip dashes from Glitchtip DSN", + "type": "fix", + "scope": "shared-error-tracking", + "additions": 19, + "deletions": 19, + "timestamp": "2026-05-07T02:34:54+02:00" + }, + { + "hash": "0db64cb", + "short": "chore(infra): drop migrated services from Mini compose + tunnel config", + "type": "chore", + "scope": "infra", + "additions": 0, + "deletions": 387, + "timestamp": "2026-05-07T02:39:43+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-05-06/macher.md b/devlog/2026-05-06/macher.md new file mode 100644 index 000000000..8fe61eb63 --- /dev/null +++ b/devlog/2026-05-06/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-05-06 +day: 99 +view: macher +weekday: Mittwoch +commits: 22 +review: written +--- + +# Mittwoch, 2026-05-06 — Tag 99 (Macher-Sicht) + +## Stats + +22 Commits, +9709 / −8067 LoC, 171 Files. Top-Dirs: `apps/mana/apps/web` (45%), `apps/cards/apps/web` (13%), `apps/cards/apps/landing` (8%), `apps/api/src/modules` (4%), `packages/cards-core/src` (4%). Tags: forms, infra, cards, cards-web, mana-auth. Session 11:39 → 00:39 (~85 aktive Min, längster Fokus 43 Min). + +## Commits + +- `cb9d79d` feat(articles): finale polish — Help-Eintrag + intentional-console + 5-Locale i18n (#16,#10,#17) (+443/-67) +- `38e0ae2` feat(forms): M10a wiederkehrende Forms — cohort-tagging + UI (+470/-11) +- `664b824` feat(forms): M10b wave-send — Empfänger + Manueller Trigger + Due-Banner (+555/-7) +- `7d8e562` feat(forms): M10c auto-scheduler + mana-mail bulk-send (+430/-5) +- `c1ed45e` feat(forms): M9 form-as-conversation — Typeform-Chat-Render (+774/-6) +- `6d67db4` feat(forms): M9b conversation LLM-extract — free-text → typed Antwort (+468/-0) +- `82dbfe6` feat(forms): M7c auto-sync zu library + space_member (+497/-35) +- `795b39e` feat(forms): M10d headless wave-cron — server-worker + private internal_meta (+502/-5) +- `546b94d` feat(personas): move admin + internal endpoints from mana-auth to apps/api (+636/-25) +- `1b579ab` chore(mana-events): move from port 3065 to 3115 — collision with platform mana-media (+15/-13) +- `c14aef9` docs(infra): Mac-Mini ↔ Windows-GPU-Box workload-split — Plan Option C (+381/-0) +- `c8a292b` tunnel: route memoro.mana.how + memoro-app/api/audio to standalone Memoro stack (+20/-2) +- `950b822` docs(cards): Phase-1 Spinoff-Guidelines — Core-Gameloop, Stack, Datenpfad (+261/-0) +- `0a544ac` feat(cards): Phase-1 Spinoff — standalone cards.mana.how + cards-core extraction (+4090/-7466) +- `f94c047` chore: silence pre-existing svelte-check a11y warnings (+9/-0) +- `86f14bc` fix(cards-web): drop unused @mana/shared-crypto dep — not in sveltekit-base image (+0/-4) +- `dd2e609` fix(docker): COPY packages/cards-core in SvelteKit Dockerfiles (+77/-14) +- `8b71d29` feat(mana-auth): wire Glitchtip/Sentry error tracking via shared-error-tracking (+29/-1) +- `96c0616` fix(cards-web): inject **PUBLIC_MANA_AUTH_URL** on SSR — login was 404 (+32/-0) +- `1bac7cf` fix(mana-auth): COPY packages/shared-error-tracking in Dockerfile (+1/-0) + +_… plus 2 weitere Commits._ diff --git a/devlog/2026-05-06/spieler.md b/devlog/2026-05-06/spieler.md new file mode 100644 index 000000000..f39f47aea --- /dev/null +++ b/devlog/2026-05-06/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-05-06 +day: 99 +view: spieler +weekday: Mittwoch +commits: 22 +review: written +--- + +# Mittwoch, 2026-05-06 — Tag 99 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- finale polish — Help-Eintrag + intentional-console + 5-Locale i18n (#16,#10,#17) +- M10a wiederkehrende Forms — cohort-tagging + UI +- M10b wave-send — Empfänger + Manueller Trigger + Due-Banner +- M10c auto-scheduler + mana-mail bulk-send +- M9 form-as-conversation — Typeform-Chat-Render diff --git a/devlog/2026-05-07/data.json b/devlog/2026-05-07/data.json new file mode 100644 index 000000000..a3a0cee5e --- /dev/null +++ b/devlog/2026-05-07/data.json @@ -0,0 +1,535 @@ +{ + "date": "2026-05-07", + "day_number": 100, + "weekday": "Donnerstag", + "commits": 48, + "authors": [ + { + "name": "Till JS", + "count": 48 + } + ], + "additions": 14288, + "deletions": 1326, + "net_lines": 12962, + "files_changed": 117, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-05-07T10:44:22.000Z", + "last_commit_at": "2026-05-08T00:48:40.000Z", + "total_span_minutes": 844, + "active_minutes": 419, + "pauses": [ + { + "from": "17:09", + "to": "19:33", + "minutes": 145 + }, + { + "from": "20:26", + "to": "21:56", + "minutes": 90 + }, + { + "from": "23:38", + "to": "01:54", + "minutes": 136 + }, + { + "from": "01:54", + "to": "02:48", + "minutes": 54 + } + ], + "longest_focus_minutes": 265 + }, + "top_dirs": [ + { + "path": "apps/cards/apps/web", + "pct": 42 + }, + { + "path": "services/cards-server/src", + "pct": 23 + }, + { + "path": "docker-compose.macmini.yml", + "pct": 5 + }, + { + "path": "infrastructure/docker-compose.gpu-box.yml", + "pct": 4 + }, + { + "path": "cloudflared-config.yml", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 90 + }, + { + "ext": ".svelte", + "count": 61 + }, + { + "ext": ".yml", + "count": 33 + }, + { + "ext": ".md", + "count": 19 + }, + { + "ext": ".json", + "count": 8 + }, + { + "ext": ".yaml", + "count": 7 + } + ], + "tags": ["cards", "cards-web", "gpu-box", "cards-server", "infra"], + "commits_list": [ + { + "hash": "585bee4", + "short": "docs(mac-mini): refresh container counts + memory budget after Phase 2c+2d", + "type": "docs", + "scope": "mac-mini", + "additions": 15, + "deletions": 14, + "timestamp": "2026-05-07T12:44:22+02:00" + }, + { + "hash": "009fb35", + "short": "feat(cards-web): streak indicator + per-deck due counts", + "type": "feat", + "scope": "cards-web", + "additions": 90, + "deletions": 3, + "timestamp": "2026-05-07T12:45:04+02:00" + }, + { + "hash": "0c2df08", + "short": "fix(status-page): point at vm.mana.how (GPU-Box VM) instead of localhost:9090", + "type": "fix", + "scope": "status-page", + "additions": 4, + "deletions": 4, + "timestamp": "2026-05-07T12:58:19+02:00" + }, + { + "hash": "22cce59", + "short": "feat(cards-web): Anki .apkg import — first acquisition lever", + "type": "feat", + "scope": "cards-web", + "additions": 599, + "deletions": 132, + "timestamp": "2026-05-07T13:02:29+02:00" + }, + { + "hash": "778e5a2", + "short": "chore(infra): drop status-page-gen from Mini, status.mana.how → GPU-Box tunnel", + "type": "chore", + "scope": "infra", + "additions": 351, + "deletions": 31, + "timestamp": "2026-05-07T13:22:20+02:00" + }, + { + "hash": "e3cca9e", + "short": "feat(cards-web): PWA installability + AI card generation from text", + "type": "feat", + "scope": "cards-web", + "additions": 2, + "deletions": 9, + "timestamp": "2026-05-07T13:24:42+02:00" + }, + { + "hash": "d8a35af", + "short": "infra(gpu-box): commit GPU-Box compose to repo + Phase 2e docs", + "type": "infra", + "scope": "gpu-box", + "additions": 576, + "deletions": 9, + "timestamp": "2026-05-07T13:28:49+02:00" + }, + { + "hash": "1f2206f", + "short": "feat(cards-web): PDF input for AI generator + study activity heatmap", + "type": "feat", + "scope": "cards-web", + "additions": 375, + "deletions": 10, + "timestamp": "2026-05-07T13:37:01+02:00" + }, + { + "hash": "daa1ef0", + "short": "feat(cards): image / audio attachments on cards via mana-media", + "type": "feat", + "scope": "cards", + "additions": 197, + "deletions": 8, + "timestamp": "2026-05-07T13:52:53+02:00" + }, + { + "hash": "0ae1e70", + "short": "fix(monitoring): status-page covers all standalone apps + restore who.mana.how routing", + "type": "fix", + "scope": "monitoring", + "additions": 29, + "deletions": 3, + "timestamp": "2026-05-07T14:09:31+02:00" + }, + { + "hash": "82db4eb", + "short": "feat(cards-web): Anki import carries images + audio along", + "type": "feat", + "scope": "cards-web", + "additions": 250, + "deletions": 41, + "timestamp": "2026-05-07T14:25:43+02:00" + }, + { + "hash": "1e8d18a", + "short": "fix(monitoring): photon via Cloudflare-Tunnel, drop dead whopxl", + "type": "fix", + "scope": "monitoring", + "additions": 8, + "deletions": 10, + "timestamp": "2026-05-07T14:39:50+02:00" + }, + { + "hash": "c1423d2", + "short": "fix(cards-web): missing static assets — sql-wasm-browser.wasm + PWA icons", + "type": "fix", + "scope": "cards-web", + "additions": 0, + "deletions": 0, + "timestamp": "2026-05-07T14:42:47+02:00" + }, + { + "hash": "6f1b032", + "short": "docs(infra): document photon.mana.how + cross-LAN workaround pattern", + "type": "docs", + "scope": "infra", + "additions": 29, + "deletions": 2, + "timestamp": "2026-05-07T14:45:34+02:00" + }, + { + "hash": "ceed8cc", + "short": "feat(mana-sync): per-app billing exemption — Cards bypasses sync gate", + "type": "feat", + "scope": "mana-sync", + "additions": 145, + "deletions": 16, + "timestamp": "2026-05-07T15:01:54+02:00" + }, + { + "hash": "cd888cd", + "short": "fix(gpu-box): drop gpu-promtail healthcheck — image has no curl/wget/nc", + "type": "fix", + "scope": "gpu-box", + "additions": 1, + "deletions": 6, + "timestamp": "2026-05-07T15:13:47+02:00" + }, + { + "hash": "8a90cd2", + "short": "docs(cards): competitor analysis Mai 2026", + "type": "docs", + "scope": "cards", + "additions": 353, + "deletions": 0, + "timestamp": "2026-05-07T15:28:02+02:00" + }, + { + "hash": "384be93", + "short": "feat(gpu-box): healthchecks for glitchtip-worker, gpu-promtail, status-gen", + "type": "feat", + "scope": "gpu-box", + "additions": 18, + "deletions": 1, + "timestamp": "2026-05-07T15:29:04+02:00" + }, + { + "hash": "cf5349c", + "short": "feat(gpu-box): adopt photon container into compose with healthcheck", + "type": "feat", + "scope": "gpu-box", + "additions": 37, + "deletions": 0, + "timestamp": "2026-05-07T15:42:54+02:00" + }, + { + "hash": "0686300", + "short": "docs(cards): Marktplatz Plan — Vollvision mit mana-credits + dual verification", + "type": "docs", + "scope": "cards", + "additions": 602, + "deletions": 0, + "timestamp": "2026-05-07T15:48:45+02:00" + }, + { + "hash": "6e40546", + "short": "feat(gpu-box): add verdaccio service + bundle config in repo", + "type": "feat", + "scope": "gpu-box", + "additions": 116, + "deletions": 0, + "timestamp": "2026-05-07T15:54:37+02:00" + }, + { + "hash": "33bc654", + "short": "chore(infra): drop npm.mana.how from Mini tunnel — verdaccio moved to GPU-Box", + "type": "chore", + "scope": "infra", + "additions": 0, + "deletions": 2, + "timestamp": "2026-05-07T15:59:40+02:00" + }, + { + "hash": "a7b62ea", + "short": "feat(cards-server): Phase α — service skeleton + 16-table schema", + "type": "feat", + "scope": "cards-server", + "additions": 3300, + "deletions": 33, + "timestamp": "2026-05-07T16:01:08+02:00" + }, + { + "hash": "71ec5e7", + "short": "feat(cards-server): Phase α.4 — Dockerfile + compose + tunnel route", + "type": "feat", + "scope": "cards-server", + "additions": 84, + "deletions": 1, + "timestamp": "2026-05-07T16:22:48+02:00" + }, + { + "hash": "b03165c", + "short": "feat(gpu-box): news-ingester migrated, Mini compose drops the service block", + "type": "feat", + "scope": "gpu-box", + "additions": 51, + "deletions": 33, + "timestamp": "2026-05-07T16:27:45+02:00" + }, + { + "hash": "044d948", + "short": "feat(cards-server): Phase β — author profiles + deck init/publish", + "type": "feat", + "scope": "cards-server", + "additions": 692, + "deletions": 8, + "timestamp": "2026-05-07T16:36:34+02:00" + }, + { + "hash": "be155ca", + "short": "fix(cards-server): error classes extend Hono HTTPException", + "type": "fix", + "scope": "cards-server", + "additions": 39, + "deletions": 27, + "timestamp": "2026-05-07T16:40:20+02:00" + }, + { + "hash": "f47edc1", + "short": "feat(gpu-box): mana-ai (AI Mission Runner) migrated, mana-ai.mana.how → GPU tunnel", + "type": "feat", + "scope": "gpu-box", + "additions": 41, + "deletions": 49, + "timestamp": "2026-05-07T16:40:57+02:00" + }, + { + "hash": "ec8abfe", + "short": "feat(cards-web): Phase β.2 — author onboarding + publish flow", + "type": "feat", + "scope": "cards-web", + "additions": 636, + "deletions": 1, + "timestamp": "2026-05-07T16:53:17+02:00" + }, + { + "hash": "4c044e8", + "short": "fix(monitoring): mana-ai probe now uses public mana-ai.mana.how/health", + "type": "fix", + "scope": "monitoring", + "additions": 2, + "deletions": 2, + "timestamp": "2026-05-07T16:55:39+02:00" + }, + { + "hash": "dcd1606", + "short": "feat(cards-server): Phase γ — public reads + browse + search + engagement", + "type": "feat", + "scope": "cards-server", + "additions": 458, + "deletions": 17, + "timestamp": "2026-05-07T17:01:32+02:00" + }, + { + "hash": "a8cce79", + "short": "fix(monitoring): comment-out mana-ai metrics scrape after Phase 2f-3 move", + "type": "fix", + "scope": "monitoring", + "additions": 2, + "deletions": 8, + "timestamp": "2026-05-07T17:06:04+02:00" + }, + { + "hash": "e77134b", + "short": "docs(infra): Phase 2f added to PLAN_OPTION_C + hostname table updated to v28", + "type": "docs", + "scope": "infra", + "additions": 581, + "deletions": 5, + "timestamp": "2026-05-07T17:09:28+02:00" + }, + { + "hash": "86a0142", + "short": "feat(cards-server): Phase δ.1 — subscriptions + version reads + smart-merge diff", + "type": "feat", + "scope": "cards-server", + "additions": 317, + "deletions": 1, + "timestamp": "2026-05-07T19:33:58+02:00" + }, + { + "hash": "58c057f", + "short": "feat(cards-web): Phase δ.2 — Subscribe + initial pull", + "type": "feat", + "scope": "cards-web", + "additions": 307, + "deletions": 27, + "timestamp": "2026-05-07T19:56:48+02:00" + }, + { + "hash": "521ae52", + "short": "feat(cards-web): Phase δ.3 — Smart-merge updates + read-only subscribed decks", + "type": "feat", + "scope": "cards-web", + "additions": 305, + "deletions": 36, + "timestamp": "2026-05-07T20:21:32+02:00" + }, + { + "hash": "c847420", + "short": "infra(phase 2g): mana-research → GPU-Box", + "type": "infra", + "scope": "phase 2g", + "additions": 80, + "deletions": 63, + "timestamp": "2026-05-07T20:26:10+02:00" + }, + { + "hash": "61fc16e", + "short": "feat(cards): Phase ε — Pull-Requests + Card-Discussions", + "type": "feat", + "scope": "cards", + "additions": 1045, + "deletions": 0, + "timestamp": "2026-05-07T21:56:20+02:00" + }, + { + "hash": "a8ddb6d", + "short": "feat(cards): Phase ε.3 — PR notifications + Card-Discussions UI", + "type": "feat", + "scope": "cards", + "additions": 269, + "deletions": 3, + "timestamp": "2026-05-07T22:24:45+02:00" + }, + { + "hash": "46fefd5", + "short": "feat(cards): Phase ε.4 — Card list + discussions on /d/", + "type": "feat", + "scope": "cards", + "additions": 145, + "deletions": 1, + "timestamp": "2026-05-07T22:46:47+02:00" + }, + { + "hash": "4fcc157", + "short": "feat(auth): add memoro-app.mana.how to SSO trusted origins", + "type": "feat", + "scope": "auth", + "additions": 2, + "deletions": 1, + "timestamp": "2026-05-07T23:07:22+02:00" + }, + { + "hash": "5dbc9ac", + "short": "feat(cards): Phase ζ.1 — Paid decks via mana-credits", + "type": "feat", + "scope": "cards", + "additions": 627, + "deletions": 12, + "timestamp": "2026-05-07T23:10:18+02:00" + }, + { + "hash": "aeaefaf", + "short": "infra(phase 2f-1 rollback): verdaccio bleibt auf Mac Mini", + "type": "infra", + "scope": "phase 2f-1 rollback", + "additions": 12, + "deletions": 121, + "timestamp": "2026-05-07T23:12:11+02:00" + }, + { + "hash": "c050226", + "short": "feat(cards): Phase η.1 — Reports + admin moderation actions", + "type": "feat", + "scope": "cards", + "additions": 772, + "deletions": 13, + "timestamp": "2026-05-07T23:24:23+02:00" + }, + { + "hash": "b185ee2", + "short": "doc(mac-mini): aktualisiere Container-Bilanz nach Phase 2c-2g", + "type": "doc", + "scope": "mac-mini", + "additions": 5, + "deletions": 4, + "timestamp": "2026-05-07T23:30:06+02:00" + }, + { + "hash": "863311e", + "short": "docs(cards): Phasen-Statusupdate nach η.1 — Stand 2026-05-07", + "type": "docs", + "scope": "cards", + "additions": 107, + "deletions": 61, + "timestamp": "2026-05-07T23:38:42+02:00" + }, + { + "hash": "ad3b99f", + "short": "refactor(cards): Phase A + C — adopt @mana/shared-theme + per-app accent", + "type": "refactor", + "scope": "cards", + "additions": 482, + "deletions": 476, + "timestamp": "2026-05-08T01:54:16+02:00" + }, + { + "hash": "39e5080", + "short": "feat(cards): CardFace v2 — 3D-Flip + tap-anywhere reveal", + "type": "feat", + "scope": "cards", + "additions": 130, + "deletions": 22, + "timestamp": "2026-05-08T02:48:40+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-05-07/macher.md b/devlog/2026-05-07/macher.md new file mode 100644 index 000000000..9d4cb1e5c --- /dev/null +++ b/devlog/2026-05-07/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-05-07 +day: 100 +view: macher +weekday: Donnerstag +commits: 48 +review: written +--- + +# Donnerstag, 2026-05-07 — Tag 100 (Macher-Sicht) + +## Stats + +48 Commits, +14288 / −1326 LoC, 117 Files. Top-Dirs: `apps/cards/apps/web` (42%), `services/cards-server/src` (23%), `docker-compose.macmini.yml` (5%), `infrastructure/docker-compose.gpu-box.yml` (4%), `cloudflared-config.yml` (3%). Tags: cards, cards-web, gpu-box, cards-server, infra. Session 10:44 → 00:48 (~419 aktive Min, längster Fokus 265 Min). + +## Commits + +- `585bee4` docs(mac-mini): refresh container counts + memory budget after Phase 2c+2d (+15/-14) +- `009fb35` feat(cards-web): streak indicator + per-deck due counts (+90/-3) +- `0c2df08` fix(status-page): point at vm.mana.how (GPU-Box VM) instead of localhost:9090 (+4/-4) +- `22cce59` feat(cards-web): Anki .apkg import — first acquisition lever (+599/-132) +- `778e5a2` chore(infra): drop status-page-gen from Mini, status.mana.how → GPU-Box tunnel (+351/-31) +- `e3cca9e` feat(cards-web): PWA installability + AI card generation from text (+2/-9) +- `d8a35af` infra(gpu-box): commit GPU-Box compose to repo + Phase 2e docs (+576/-9) +- `1f2206f` feat(cards-web): PDF input for AI generator + study activity heatmap (+375/-10) +- `daa1ef0` feat(cards): image / audio attachments on cards via mana-media (+197/-8) +- `0ae1e70` fix(monitoring): status-page covers all standalone apps + restore who.mana.how routing (+29/-3) +- `82db4eb` feat(cards-web): Anki import carries images + audio along (+250/-41) +- `1e8d18a` fix(monitoring): photon via Cloudflare-Tunnel, drop dead whopxl (+8/-10) +- `c1423d2` fix(cards-web): missing static assets — sql-wasm-browser.wasm + PWA icons (+0/-0) +- `6f1b032` docs(infra): document photon.mana.how + cross-LAN workaround pattern (+29/-2) +- `ceed8cc` feat(mana-sync): per-app billing exemption — Cards bypasses sync gate (+145/-16) +- `cd888cd` fix(gpu-box): drop gpu-promtail healthcheck — image has no curl/wget/nc (+1/-6) +- `8a90cd2` docs(cards): competitor analysis Mai 2026 (+353/-0) +- `384be93` feat(gpu-box): healthchecks for glitchtip-worker, gpu-promtail, status-gen (+18/-1) +- `cf5349c` feat(gpu-box): adopt photon container into compose with healthcheck (+37/-0) +- `0686300` docs(cards): Marktplatz Plan — Vollvision mit mana-credits + dual verification (+602/-0) + +_… plus 28 weitere Commits._ diff --git a/devlog/2026-05-07/spieler.md b/devlog/2026-05-07/spieler.md new file mode 100644 index 000000000..c1dceb985 --- /dev/null +++ b/devlog/2026-05-07/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-05-07 +day: 100 +view: spieler +weekday: Donnerstag +commits: 48 +review: written +--- + +# Donnerstag, 2026-05-07 — Tag 100 + +Großer Sprint-Tag mit Schwerpunkt **apps** (48 Commits). + +## Highlights + +- refresh container counts + memory budget after Phase 2c+2d +- streak indicator + per-deck due counts +- point at vm.mana.how (GPU-Box VM) instead of localhost:9090 +- Anki .apkg import — first acquisition lever +- PWA installability + AI card generation from text diff --git a/devlog/2026-05-08/data.json b/devlog/2026-05-08/data.json new file mode 100644 index 000000000..72a1ca6fb --- /dev/null +++ b/devlog/2026-05-08/data.json @@ -0,0 +1,378 @@ +{ + "date": "2026-05-08", + "day_number": 101, + "weekday": "Freitag", + "commits": 30, + "authors": [ + { + "name": "Till JS", + "count": 30 + } + ], + "additions": 2748, + "deletions": 57326, + "net_lines": -54578, + "files_changed": 600, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-05-08T11:19:36.000Z", + "last_commit_at": "2026-05-09T00:08:51.000Z", + "total_span_minutes": 769, + "active_minutes": 143, + "pauses": [ + { + "from": "14:33", + "to": "18:02", + "minutes": 209 + }, + { + "from": "18:07", + "to": "18:40", + "minutes": 32 + }, + { + "from": "18:54", + "to": "20:00", + "minutes": 66 + }, + { + "from": "20:36", + "to": "01:16", + "minutes": 279 + }, + { + "from": "01:29", + "to": "02:08", + "minutes": 40 + } + ], + "longest_focus_minutes": 74 + }, + "top_dirs": [ + { + "path": "apps/cards/apps/web", + "pct": 10 + }, + { + "path": "apps/mana/apps/landing", + "pct": 9 + }, + { + "path": "services/mana-auth/src", + "pct": 8 + }, + { + "path": "apps/mana/apps/web", + "pct": 8 + }, + { + "path": "services/cards-server/src", + "pct": 7 + } + ], + "top_extensions": [ + { + "ext": ".ts", + "count": 242 + }, + { + "ext": ".md", + "count": 119 + }, + { + "ext": ".json", + "count": 59 + }, + { + "ext": ".py", + "count": 52 + }, + { + "ext": ".svelte", + "count": 38 + }, + { + "ext": ".go", + "count": 22 + } + ], + "tags": ["cutover", "dev", "decommission", "brand", "env"], + "commits_list": [ + { + "hash": "7a96a9a", + "short": "chore: add dev:cardecky:full + dev:cards-server scripts", + "type": null, + "scope": null, + "additions": 2, + "deletions": 0, + "timestamp": "2026-05-08T13:19:36+02:00" + }, + { + "hash": "a6a003f", + "short": "fix(dev): mana-notify dev script ships explicit DATABASE_URL", + "type": "fix", + "scope": "dev", + "additions": 1, + "deletions": 1, + "timestamp": "2026-05-08T13:47:44+02:00" + }, + { + "hash": "61f2772", + "short": "chore(brand): rename Cards → Cardecky (display, infra, license-IDs)", + "type": "chore", + "scope": "brand", + "additions": 2149, + "deletions": 141, + "timestamp": "2026-05-08T13:49:47+02:00" + }, + { + "hash": "08f4223", + "short": "fix(dev): cards-server uses --hot + setup-databases creates mana_notify/credits", + "type": "fix", + "scope": "dev", + "additions": 10, + "deletions": 3, + "timestamp": "2026-05-08T14:10:55+02:00" + }, + { + "hash": "4cca25e", + "short": "chore(dev): switch all Bun services from --watch to --hot", + "type": "chore", + "scope": "dev", + "additions": 13, + "deletions": 13, + "timestamp": "2026-05-08T14:24:24+02:00" + }, + { + "hash": "15e2abd", + "short": "fix(env): mana-events default port 3065 → 3115", + "type": "fix", + "scope": "env", + "additions": 3, + "deletions": 2, + "timestamp": "2026-05-08T14:31:03+02:00" + }, + { + "hash": "8acf35e", + "short": "chore(dev): finish --watch → --hot sweep across remaining Bun services", + "type": "chore", + "scope": "dev", + "additions": 10, + "deletions": 10, + "timestamp": "2026-05-08T14:33:27+02:00" + }, + { + "hash": "364f3c2", + "short": "infra(tunnel): add zitare.com / zitare.mana.how / zitare-api.mana.how", + "type": "infra", + "scope": "tunnel", + "additions": 15, + "deletions": 0, + "timestamp": "2026-05-08T18:02:05+02:00" + }, + { + "hash": "7b36206", + "short": "feat(auth): SSO + CORS origins for zitare.mana.how/zitare-api.mana.how", + "type": "feat", + "scope": "auth", + "additions": 3, + "deletions": 1, + "timestamp": "2026-05-08T18:07:39+02:00" + }, + { + "hash": "774852b", + "short": "feat(cutover): platform services build from ../mana, not from this repo", + "type": "feat", + "scope": "cutover", + "additions": 76, + "deletions": 363, + "timestamp": "2026-05-08T18:40:08+02:00" + }, + { + "hash": "467d833", + "short": "fix(apps/api): COPY packages/eslint-config in Dockerfile", + "type": "fix", + "scope": "apps/api", + "additions": 4, + "deletions": 0, + "timestamp": "2026-05-08T18:44:57+02:00" + }, + { + "hash": "879975b", + "short": "chore(cutover): remove services/mana-mail/ — moved to mana-platform", + "type": "chore", + "scope": "cutover", + "additions": 0, + "deletions": 3070, + "timestamp": "2026-05-08T18:53:52+02:00" + }, + { + "hash": "3c4a6d4", + "short": "chore(cutover): remove services/mana-stt/ — moved to mana-platform", + "type": "chore", + "scope": "cutover", + "additions": 0, + "deletions": 2973, + "timestamp": "2026-05-08T18:53:53+02:00" + }, + { + "hash": "6103d4d", + "short": "chore(cutover): remove services/mana-tts/ — moved to mana-platform", + "type": "chore", + "scope": "cutover", + "additions": 0, + "deletions": 3360, + "timestamp": "2026-05-08T18:53:53+02:00" + }, + { + "hash": "2b07f6e", + "short": "chore(cutover): remove services/mana-llm/ — moved to mana-platform", + "type": "chore", + "scope": "cutover", + "additions": 0, + "deletions": 6371, + "timestamp": "2026-05-08T18:53:54+02:00" + }, + { + "hash": "af8ef60", + "short": "chore(cutover): remove services/mana-notify/ — moved to mana-platform", + "type": "chore", + "scope": "cutover", + "additions": 0, + "deletions": 3310, + "timestamp": "2026-05-08T18:53:55+02:00" + }, + { + "hash": "fcc36ea", + "short": "chore(cutover): remove services/mana-media/ — moved to mana-platform", + "type": "chore", + "scope": "cutover", + "additions": 0, + "deletions": 2771, + "timestamp": "2026-05-08T18:53:55+02:00" + }, + { + "hash": "af3f21a", + "short": "chore(cutover): remove services/mana-credits/ — moved to mana-platform", + "type": "chore", + "scope": "cutover", + "additions": 0, + "deletions": 2704, + "timestamp": "2026-05-08T18:53:56+02:00" + }, + { + "hash": "0a30b91", + "short": "chore(cutover): remove services/mana-auth/ — moved to mana-platform", + "type": "chore", + "scope": "cutover", + "additions": 0, + "deletions": 10640, + "timestamp": "2026-05-08T18:53:56+02:00" + }, + { + "hash": "27798f0", + "short": "chore(cutover): regenerate pnpm-lock after removing 8 platform services", + "type": "chore", + "scope": "cutover", + "additions": 113, + "deletions": 1023, + "timestamp": "2026-05-08T18:54:57+02:00" + }, + { + "hash": "f653303", + "short": "fix(stalwart): disable healthcheck — distroless image has no wget", + "type": "fix", + "scope": "stalwart", + "additions": 7, + "deletions": 5, + "timestamp": "2026-05-08T20:00:27+02:00" + }, + { + "hash": "ba254f5", + "short": "infra: commit git.mana.how cloudflared route + ignore secrets/.bak", + "type": null, + "scope": null, + "additions": 10, + "deletions": 0, + "timestamp": "2026-05-08T20:03:52+02:00" + }, + { + "hash": "9cd8717", + "short": "chore(decommission): remove apps/cards/", + "type": "chore", + "scope": "decommission", + "additions": 0, + "deletions": 8369, + "timestamp": "2026-05-08T20:27:24+02:00" + }, + { + "hash": "bc158cb", + "short": "chore(decommission): remove services/cards-server/", + "type": "chore", + "scope": "decommission", + "additions": 0, + "deletions": 8012, + "timestamp": "2026-05-08T20:27:33+02:00" + }, + { + "hash": "dd1bab0", + "short": "chore(decommission): remove packages/cards-core/", + "type": "chore", + "scope": "decommission", + "additions": 0, + "deletions": 699, + "timestamp": "2026-05-08T20:27:33+02:00" + }, + { + "hash": "ac15de2", + "short": "chore(decommission): remove cards module from mana web app", + "type": "chore", + "scope": "decommission", + "additions": 23, + "deletions": 3381, + "timestamp": "2026-05-08T20:36:33+02:00" + }, + { + "hash": "b1b9bbc", + "short": "chore: rename repo mana-monorepo → managarten", + "type": null, + "scope": null, + "additions": 90, + "deletions": 90, + "timestamp": "2026-05-09T01:16:02+02:00" + }, + { + "hash": "0aec1d4", + "short": "fix(docs): astro starlight repo URL → Memo-2023/managarten", + "type": "fix", + "scope": "docs", + "additions": 2, + "deletions": 2, + "timestamp": "2026-05-09T01:28:50+02:00" + }, + { + "hash": "3581ae0", + "short": "chore(macmini): Föderations-Backbone + verein.mana.how + Nutriphi/Cardecky einspielen", + "type": "chore", + "scope": "macmini", + "additions": 77, + "deletions": 3, + "timestamp": "2026-05-09T01:29:03+02:00" + }, + { + "hash": "67963a4", + "short": "chore(devlog): Schritte 1+2 der mana/docs/DEVLOG.md-Migration", + "type": "chore", + "scope": "devlog", + "additions": 140, + "deletions": 9, + "timestamp": "2026-05-09T02:08:51+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-05-08/macher.md b/devlog/2026-05-08/macher.md new file mode 100644 index 000000000..a74edb99c --- /dev/null +++ b/devlog/2026-05-08/macher.md @@ -0,0 +1,39 @@ +--- +date: 2026-05-08 +day: 101 +view: macher +weekday: Freitag +commits: 30 +review: written +--- + +# Freitag, 2026-05-08 — Tag 101 (Macher-Sicht) + +## Stats + +30 Commits, +2748 / −57326 LoC, 600 Files. Top-Dirs: `apps/cards/apps/web` (10%), `apps/mana/apps/landing` (9%), `services/mana-auth/src` (8%), `apps/mana/apps/web` (8%), `services/cards-server/src` (7%). Tags: cutover, dev, decommission, brand, env. Session 11:19 → 00:08 (~143 aktive Min, längster Fokus 74 Min). + +## Commits + +- `7a96a9a` chore: add dev:cardecky:full + dev:cards-server scripts (+2/-0) +- `a6a003f` fix(dev): mana-notify dev script ships explicit DATABASE_URL (+1/-1) +- `61f2772` chore(brand): rename Cards → Cardecky (display, infra, license-IDs) (+2149/-141) +- `08f4223` fix(dev): cards-server uses --hot + setup-databases creates mana_notify/credits (+10/-3) +- `4cca25e` chore(dev): switch all Bun services from --watch to --hot (+13/-13) +- `15e2abd` fix(env): mana-events default port 3065 → 3115 (+3/-2) +- `8acf35e` chore(dev): finish --watch → --hot sweep across remaining Bun services (+10/-10) +- `364f3c2` infra(tunnel): add zitare.com / zitare.mana.how / zitare-api.mana.how (+15/-0) +- `7b36206` feat(auth): SSO + CORS origins for zitare.mana.how/zitare-api.mana.how (+3/-1) +- `774852b` feat(cutover): platform services build from ../mana, not from this repo (+76/-363) +- `467d833` fix(apps/api): COPY packages/eslint-config in Dockerfile (+4/-0) +- `879975b` chore(cutover): remove services/mana-mail/ — moved to mana-platform (+0/-3070) +- `3c4a6d4` chore(cutover): remove services/mana-stt/ — moved to mana-platform (+0/-2973) +- `6103d4d` chore(cutover): remove services/mana-tts/ — moved to mana-platform (+0/-3360) +- `2b07f6e` chore(cutover): remove services/mana-llm/ — moved to mana-platform (+0/-6371) +- `af8ef60` chore(cutover): remove services/mana-notify/ — moved to mana-platform (+0/-3310) +- `fcc36ea` chore(cutover): remove services/mana-media/ — moved to mana-platform (+0/-2771) +- `af3f21a` chore(cutover): remove services/mana-credits/ — moved to mana-platform (+0/-2704) +- `0a30b91` chore(cutover): remove services/mana-auth/ — moved to mana-platform (+0/-10640) +- `27798f0` chore(cutover): regenerate pnpm-lock after removing 8 platform services (+113/-1023) + +_… plus 10 weitere Commits._ diff --git a/devlog/2026-05-08/spieler.md b/devlog/2026-05-08/spieler.md new file mode 100644 index 000000000..f91bbb8ca --- /dev/null +++ b/devlog/2026-05-08/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-05-08 +day: 101 +view: spieler +weekday: Freitag +commits: 30 +review: written +--- + +# Freitag, 2026-05-08 — Tag 101 + +Dichter Tag in **apps** und Umgebung. + +## Highlights + +- mana-notify dev script ships explicit DATABASE_URL +- cards-server uses --hot + setup-databases creates mana_notify/credits +- mana-events default port 3065 → 3115 +- infra(tunnel): add zitare.com / zitare.mana.how / zitare-api.mana.how +- SSO + CORS origins for zitare.mana.how/zitare-api.mana.how diff --git a/devlog/2026-05-09/data.json b/devlog/2026-05-09/data.json new file mode 100644 index 000000000..8867fe186 --- /dev/null +++ b/devlog/2026-05-09/data.json @@ -0,0 +1,100 @@ +{ + "date": "2026-05-09", + "day_number": 102, + "weekday": "Samstag", + "commits": 3, + "authors": [ + { + "name": "Till JS", + "count": 3 + } + ], + "additions": 45, + "deletions": 1, + "net_lines": 44, + "files_changed": 3, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-05-09T11:53:34.000Z", + "last_commit_at": "2026-05-09T17:58:15.000Z", + "total_span_minutes": 365, + "active_minutes": 1, + "pauses": [ + { + "from": "13:53", + "to": "18:02", + "minutes": 249 + }, + { + "from": "18:02", + "to": "19:58", + "minutes": 115 + } + ], + "longest_focus_minutes": 0 + }, + "top_dirs": [ + { + "path": "cloudflared-config.yml", + "pct": 50 + }, + { + "path": "docker/nginx/landings.conf", + "pct": 25 + }, + { + "path": "CLAUDE.md", + "pct": 25 + } + ], + "top_extensions": [ + { + "ext": ".yml", + "count": 2 + }, + { + "ext": ".conf", + "count": 1 + }, + { + "ext": ".md", + "count": 1 + } + ], + "tags": ["CLAUDE"], + "commits_list": [ + { + "hash": "2eb70c6", + "short": "mana-ev: vier Verein-Domains live, .ch kanonisch, andere als 301", + "type": null, + "scope": null, + "additions": 41, + "deletions": 0, + "timestamp": "2026-05-09T13:53:34+02:00" + }, + { + "hash": "60f5c26", + "short": "docs(CLAUDE): correct shared-ui description (Svelte not RN)", + "type": "docs", + "scope": "CLAUDE", + "additions": 1, + "deletions": 1, + "timestamp": "2026-05-09T18:02:52+02:00" + }, + { + "hash": "7b29dcc", + "short": "add design.mana.how tunnel entry → mana-design Storybook (port 3089)", + "type": null, + "scope": null, + "additions": 3, + "deletions": 0, + "timestamp": "2026-05-09T19:58:15+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-05-09/macher.md b/devlog/2026-05-09/macher.md new file mode 100644 index 000000000..1ec1691e9 --- /dev/null +++ b/devlog/2026-05-09/macher.md @@ -0,0 +1,20 @@ +--- +date: 2026-05-09 +day: 102 +view: macher +weekday: Samstag +commits: 3 +review: written +--- + +# Samstag, 2026-05-09 — Tag 102 (Macher-Sicht) + +## Stats + +3 Commits, +45 / −1 LoC, 3 Files. Top-Dirs: `cloudflared-config.yml` (50%), `docker/nginx/landings.conf` (25%), `CLAUDE.md` (25%). Tags: CLAUDE. Session 11:53 → 17:58 (~1 aktive Min, längster Fokus 0 Min). + +## Commits + +- `2eb70c6` mana-ev: vier Verein-Domains live, .ch kanonisch, andere als 301 (+41/-0) +- `60f5c26` docs(CLAUDE): correct shared-ui description (Svelte not RN) (+1/-1) +- `7b29dcc` add design.mana.how tunnel entry → mana-design Storybook (port 3089) (+3/-0) diff --git a/devlog/2026-05-09/spieler.md b/devlog/2026-05-09/spieler.md new file mode 100644 index 000000000..d1650913d --- /dev/null +++ b/devlog/2026-05-09/spieler.md @@ -0,0 +1,18 @@ +--- +date: 2026-05-09 +day: 102 +view: spieler +weekday: Samstag +commits: 3 +review: written +--- + +# Samstag, 2026-05-09 — Tag 102 + +Kurzer Arbeitstag, Schwerpunkt **cloudflared-config.yml**. + +## Highlights + +- mana-ev: vier Verein-Domains live, .ch kanonisch, andere als 301 +- correct shared-ui description (Svelte not RN) +- add design.mana.how tunnel entry → mana-design Storybook (port 3089) diff --git a/devlog/2026-05-11/data.json b/devlog/2026-05-11/data.json new file mode 100644 index 000000000..18b92f8a0 --- /dev/null +++ b/devlog/2026-05-11/data.json @@ -0,0 +1,76 @@ +{ + "date": "2026-05-11", + "day_number": 103, + "weekday": "Montag", + "commits": 2, + "authors": [ + { + "name": "Till JS", + "count": 2 + } + ], + "additions": 18, + "deletions": 6, + "net_lines": 12, + "files_changed": 3, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-05-11T16:49:11.000Z", + "last_commit_at": "2026-05-11T16:49:49.000Z", + "total_span_minutes": 1, + "active_minutes": 1, + "pauses": [], + "longest_focus_minutes": 1 + }, + "top_dirs": [ + { + "path": "docker-compose.macmini.yml", + "pct": 33 + }, + { + "path": "cloudflared-config.yml", + "pct": 33 + }, + { + "path": "scripts/validate-cloudflared-config.mjs", + "pct": 33 + } + ], + "top_extensions": [ + { + "ext": ".yml", + "count": 2 + }, + { + "ext": ".mjs", + "count": 1 + } + ], + "tags": ["stalwart", "cloudflared"], + "commits_list": [ + { + "hash": "bf8353e", + "short": "feat(stalwart): pin recovery admin via STALWART_RECOVERY_ADMIN env var", + "type": "feat", + "scope": "stalwart", + "additions": 1, + "deletions": 0, + "timestamp": "2026-05-11T18:49:11+02:00" + }, + { + "hash": "d3d9271", + "short": "feat(cloudflared): split auth.mana.how — /api/* → mana-auth, rest → mana-auth-web", + "type": "feat", + "scope": "cloudflared", + "additions": 17, + "deletions": 6, + "timestamp": "2026-05-11T18:49:49+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-05-11/macher.md b/devlog/2026-05-11/macher.md new file mode 100644 index 000000000..ed9a97079 --- /dev/null +++ b/devlog/2026-05-11/macher.md @@ -0,0 +1,19 @@ +--- +date: 2026-05-11 +day: 103 +view: macher +weekday: Montag +commits: 2 +review: written +--- + +# Montag, 2026-05-11 — Tag 103 (Macher-Sicht) + +## Stats + +2 Commits, +18 / −6 LoC, 3 Files. Top-Dirs: `docker-compose.macmini.yml` (33%), `cloudflared-config.yml` (33%), `scripts/validate-cloudflared-config.mjs` (33%). Tags: stalwart, cloudflared. Session 16:49 → 16:49 (~1 aktive Min, längster Fokus 1 Min). + +## Commits + +- `bf8353e` feat(stalwart): pin recovery admin via STALWART_RECOVERY_ADMIN env var (+1/-0) +- `d3d9271` feat(cloudflared): split auth.mana.how — /api/\* → mana-auth, rest → mana-auth-web (+17/-6) diff --git a/devlog/2026-05-11/spieler.md b/devlog/2026-05-11/spieler.md new file mode 100644 index 000000000..bd3c03d26 --- /dev/null +++ b/devlog/2026-05-11/spieler.md @@ -0,0 +1,17 @@ +--- +date: 2026-05-11 +day: 103 +view: spieler +weekday: Montag +commits: 2 +review: written +--- + +# Montag, 2026-05-11 — Tag 103 + +Kurzer Arbeitstag, Schwerpunkt **docker-compose.macmini.yml**. + +## Highlights + +- pin recovery admin via STALWART_RECOVERY_ADMIN env var +- split auth.mana.how — /api/\* → mana-auth, rest → mana-auth-web diff --git a/devlog/2026-05-12/data.json b/devlog/2026-05-12/data.json new file mode 100644 index 000000000..752bd3649 --- /dev/null +++ b/devlog/2026-05-12/data.json @@ -0,0 +1,137 @@ +{ + "date": "2026-05-12", + "day_number": 104, + "weekday": "Dienstag", + "commits": 5, + "authors": [ + { + "name": "Till JS", + "count": 4 + }, + { + "name": "Till", + "count": 1 + } + ], + "additions": 860, + "deletions": 604, + "net_lines": 256, + "files_changed": 32, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-05-12T15:00:03.000Z", + "last_commit_at": "2026-05-12T16:58:30.000Z", + "total_span_minutes": 118, + "active_minutes": 25, + "pauses": [ + { + "from": "17:25", + "to": "18:58", + "minutes": 93 + } + ], + "longest_focus_minutes": 26 + }, + "top_dirs": [ + { + "path": "apps/mana/apps/web", + "pct": 81 + }, + { + "path": "docker-compose.macmini.yml", + "pct": 8 + }, + { + "path": ".env.development", + "pct": 3 + }, + { + "path": "scripts/generate-env.mjs", + "pct": 3 + }, + { + "path": "cloudflared-config.yml", + "pct": 3 + } + ], + "top_extensions": [ + { + "ext": ".svelte", + "count": 19 + }, + { + "ext": ".ts", + "count": 9 + }, + { + "ext": ".yml", + "count": 4 + }, + { + "ext": ".development", + "count": 1 + }, + { + "ext": ".mjs", + "count": 1 + }, + { + "ext": ".json", + "count": 1 + } + ], + "tags": ["mana", "infra", "mana-auth", "mana-web", "mana-llm"], + "commits_list": [ + { + "hash": "5635598", + "short": "feat(mana): migrate to central auth portal — no embedded login UI, clean cut", + "type": "feat", + "scope": "mana", + "additions": 773, + "deletions": 489, + "timestamp": "2026-05-12T17:00:03+02:00" + }, + { + "hash": "b299a4a", + "short": "feat(infra): route manawald.mana.how + add to mana-auth CORS", + "type": "feat", + "scope": "infra", + "additions": 6, + "deletions": 1, + "timestamp": "2026-05-12T17:00:15+02:00" + }, + { + "hash": "dd2e4b6", + "short": "fix(mana-auth): read PUBLIC_*_URL from window-injected vars, not $env/dynamic/public", + "type": "fix", + "scope": "mana-auth", + "additions": 41, + "deletions": 9, + "timestamp": "2026-05-12T17:05:28+02:00" + }, + { + "hash": "009a695", + "short": "fix(mana-web): add @simplewebauthn/browser as explicit dep", + "type": "fix", + "scope": "mana-web", + "additions": 39, + "deletions": 104, + "timestamp": "2026-05-12T17:25:39+02:00" + }, + { + "hash": "cec84c2", + "short": "chore(mana-llm): manawald.mana.how + localhost:3090 in CORS_ORIGINS", + "type": "chore", + "scope": "mana-llm", + "additions": 1, + "deletions": 1, + "timestamp": "2026-05-12T18:58:30+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-05-12/macher.md b/devlog/2026-05-12/macher.md new file mode 100644 index 000000000..b44bcf356 --- /dev/null +++ b/devlog/2026-05-12/macher.md @@ -0,0 +1,22 @@ +--- +date: 2026-05-12 +day: 104 +view: macher +weekday: Dienstag +commits: 5 +review: written +--- + +# Dienstag, 2026-05-12 — Tag 104 (Macher-Sicht) + +## Stats + +5 Commits, +860 / −604 LoC, 32 Files. Top-Dirs: `apps/mana/apps/web` (81%), `docker-compose.macmini.yml` (8%), `.env.development` (3%), `scripts/generate-env.mjs` (3%), `cloudflared-config.yml` (3%). Tags: mana, infra, mana-auth, mana-web, mana-llm. Session 15:00 → 16:58 (~25 aktive Min, längster Fokus 26 Min). + +## Commits + +- `5635598` feat(mana): migrate to central auth portal — no embedded login UI, clean cut (+773/-489) +- `b299a4a` feat(infra): route manawald.mana.how + add to mana-auth CORS (+6/-1) +- `dd2e4b6` fix(mana-auth): read PUBLIC\_\*\_URL from window-injected vars, not $env/dynamic/public (+41/-9) +- `009a695` fix(mana-web): add @simplewebauthn/browser as explicit dep (+39/-104) +- `cec84c2` chore(mana-llm): manawald.mana.how + localhost:3090 in CORS_ORIGINS (+1/-1) diff --git a/devlog/2026-05-12/spieler.md b/devlog/2026-05-12/spieler.md new file mode 100644 index 000000000..0808522b7 --- /dev/null +++ b/devlog/2026-05-12/spieler.md @@ -0,0 +1,19 @@ +--- +date: 2026-05-12 +day: 104 +view: spieler +weekday: Dienstag +commits: 5 +review: written +--- + +# Dienstag, 2026-05-12 — Tag 104 + +Kurzer Arbeitstag, Schwerpunkt **apps**. + +## Highlights + +- migrate to central auth portal — no embedded login UI, clean cut +- route manawald.mana.how + add to mana-auth CORS +- read PUBLIC\_\*\_URL from window-injected vars, not $env/dynamic/public +- add @simplewebauthn/browser as explicit dep diff --git a/devlog/2026-05-13/data.json b/devlog/2026-05-13/data.json new file mode 100644 index 000000000..b4342e69d --- /dev/null +++ b/devlog/2026-05-13/data.json @@ -0,0 +1,117 @@ +{ + "date": "2026-05-13", + "day_number": 105, + "weekday": "Mittwoch", + "commits": 5, + "authors": [ + { + "name": "Till JS", + "count": 5 + } + ], + "additions": 219, + "deletions": 37, + "net_lines": 182, + "files_changed": 4, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-05-13T12:38:31.000Z", + "last_commit_at": "2026-05-13T19:32:44.000Z", + "total_span_minutes": 414, + "active_minutes": 17, + "pauses": [ + { + "from": "14:55", + "to": "21:32", + "minutes": 397 + } + ], + "longest_focus_minutes": 17 + }, + "top_dirs": [ + { + "path": "scripts/mac-mini/backup-databases.sh", + "pct": 40 + }, + { + "path": "cloudflared-config.yml", + "pct": 20 + }, + { + "path": "docs/BACKUP_STRATEGY.md", + "pct": 20 + }, + { + "path": ".github/workflows/cd-macmini.yml", + "pct": 20 + } + ], + "top_extensions": [ + { + "ext": ".yml", + "count": 2 + }, + { + "ext": ".sh", + "count": 2 + }, + { + "ext": ".md", + "count": 1 + } + ], + "tags": ["deploy"], + "commits_list": [ + { + "hash": "b223247", + "short": "cloudflared: add manaspur.mana.how + manaspur-api.mana.how ingress", + "type": null, + "scope": null, + "additions": 10, + "deletions": 0, + "timestamp": "2026-05-13T14:38:31+02:00" + }, + { + "hash": "7f0e2ba", + "short": "backup: cover all postgres containers (cards, manaspur, nutriphi, zitare, chorportal)", + "type": null, + "scope": null, + "additions": 63, + "deletions": 25, + "timestamp": "2026-05-13T14:51:25+02:00" + }, + { + "hash": "97e285b", + "short": "backup: drop bash-source of .env.macmini (DOTENV format, breaks on PEM keys)", + "type": null, + "scope": null, + "additions": 7, + "deletions": 7, + "timestamp": "2026-05-13T14:52:48+02:00" + }, + { + "hash": "670036d", + "short": "docs: BACKUP_STRATEGY.md — current local-only setup + off-site plan", + "type": null, + "scope": null, + "additions": 129, + "deletions": 0, + "timestamp": "2026-05-13T14:55:47+02:00" + }, + { + "hash": "52bca11", + "short": "fix(deploy): drop bash-source of .env.macmini in migration-step", + "type": "fix", + "scope": "deploy", + "additions": 10, + "deletions": 5, + "timestamp": "2026-05-13T21:32:44+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-05-13/macher.md b/devlog/2026-05-13/macher.md new file mode 100644 index 000000000..03c0816c7 --- /dev/null +++ b/devlog/2026-05-13/macher.md @@ -0,0 +1,22 @@ +--- +date: 2026-05-13 +day: 105 +view: macher +weekday: Mittwoch +commits: 5 +review: written +--- + +# Mittwoch, 2026-05-13 — Tag 105 (Macher-Sicht) + +## Stats + +5 Commits, +219 / −37 LoC, 4 Files. Top-Dirs: `scripts/mac-mini/backup-databases.sh` (40%), `cloudflared-config.yml` (20%), `docs/BACKUP_STRATEGY.md` (20%), `.github/workflows/cd-macmini.yml` (20%). Tags: deploy. Session 12:38 → 19:32 (~17 aktive Min, längster Fokus 17 Min). + +## Commits + +- `b223247` cloudflared: add manaspur.mana.how + manaspur-api.mana.how ingress (+10/-0) +- `7f0e2ba` backup: cover all postgres containers (cards, manaspur, nutriphi, zitare, chorportal) (+63/-25) +- `97e285b` backup: drop bash-source of .env.macmini (DOTENV format, breaks on PEM keys) (+7/-7) +- `670036d` docs: BACKUP_STRATEGY.md — current local-only setup + off-site plan (+129/-0) +- `52bca11` fix(deploy): drop bash-source of .env.macmini in migration-step (+10/-5) diff --git a/devlog/2026-05-13/spieler.md b/devlog/2026-05-13/spieler.md new file mode 100644 index 000000000..84826528f --- /dev/null +++ b/devlog/2026-05-13/spieler.md @@ -0,0 +1,20 @@ +--- +date: 2026-05-13 +day: 105 +view: spieler +weekday: Mittwoch +commits: 5 +review: written +--- + +# Mittwoch, 2026-05-13 — Tag 105 + +Kurzer Arbeitstag, Schwerpunkt **scripts**. + +## Highlights + +- cloudflared: add manaspur.mana.how + manaspur-api.mana.how ingress +- backup: cover all postgres containers (cards, manaspur, nutriphi, zitare, chorportal) +- backup: drop bash-source of .env.macmini (DOTENV format, breaks on PEM keys) +- BACKUP_STRATEGY.md — current local-only setup + off-site plan +- drop bash-source of .env.macmini in migration-step diff --git a/devlog/2026-05-14/data.json b/devlog/2026-05-14/data.json new file mode 100644 index 000000000..5b95fabf2 --- /dev/null +++ b/devlog/2026-05-14/data.json @@ -0,0 +1,55 @@ +{ + "date": "2026-05-14", + "day_number": 106, + "weekday": "Donnerstag", + "commits": 1, + "authors": [ + { + "name": "Till JS", + "count": 1 + } + ], + "additions": 6, + "deletions": 0, + "net_lines": 6, + "files_changed": 1, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-05-14T19:55:25.000Z", + "last_commit_at": "2026-05-14T19:55:25.000Z", + "total_span_minutes": 0, + "active_minutes": 0, + "pauses": [], + "longest_focus_minutes": 0 + }, + "top_dirs": [ + { + "path": "docker-compose.macmini.yml", + "pct": 100 + } + ], + "top_extensions": [ + { + "ext": ".yml", + "count": 1 + } + ], + "tags": [], + "commits_list": [ + { + "hash": "a040e12", + "short": "mana-llm compose: ANTHROPIC_API_KEY + OPENAI_API_KEY env-passthrough", + "type": null, + "scope": null, + "additions": 6, + "deletions": 0, + "timestamp": "2026-05-14T21:55:25+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-05-14/macher.md b/devlog/2026-05-14/macher.md new file mode 100644 index 000000000..69420a483 --- /dev/null +++ b/devlog/2026-05-14/macher.md @@ -0,0 +1,18 @@ +--- +date: 2026-05-14 +day: 106 +view: macher +weekday: Donnerstag +commits: 1 +review: written +--- + +# Donnerstag, 2026-05-14 — Tag 106 (Macher-Sicht) + +## Stats + +1 Commits, +6 / −0 LoC, 1 Files. Top-Dirs: `docker-compose.macmini.yml` (100%). Tags: —. Session 19:55 → 19:55 (~0 aktive Min, längster Fokus 0 Min). + +## Commits + +- `a040e12` mana-llm compose: ANTHROPIC_API_KEY + OPENAI_API_KEY env-passthrough (+6/-0) diff --git a/devlog/2026-05-14/spieler.md b/devlog/2026-05-14/spieler.md new file mode 100644 index 000000000..c71cb176c --- /dev/null +++ b/devlog/2026-05-14/spieler.md @@ -0,0 +1,16 @@ +--- +date: 2026-05-14 +day: 106 +view: spieler +weekday: Donnerstag +commits: 1 +review: written +--- + +# Donnerstag, 2026-05-14 — Tag 106 + +Ein kleinerer Schritt in **docker-compose.macmini.yml**. + +## Highlights + +- mana-llm compose: ANTHROPIC_API_KEY + OPENAI_API_KEY env-passthrough diff --git a/devlog/2026-05-15/data.json b/devlog/2026-05-15/data.json new file mode 100644 index 000000000..2f17661d0 --- /dev/null +++ b/devlog/2026-05-15/data.json @@ -0,0 +1,55 @@ +{ + "date": "2026-05-15", + "day_number": 107, + "weekday": "Freitag", + "commits": 1, + "authors": [ + { + "name": "Till JS", + "count": 1 + } + ], + "additions": 20, + "deletions": 0, + "net_lines": 20, + "files_changed": 1, + "new_files": 0, + "deleted_files": 0, + "session": { + "first_commit_at": "2026-05-15T14:15:24.000Z", + "last_commit_at": "2026-05-15T14:15:24.000Z", + "total_span_minutes": 0, + "active_minutes": 0, + "pauses": [], + "longest_focus_minutes": 0 + }, + "top_dirs": [ + { + "path": "cloudflared-config.yml", + "pct": 100 + } + ], + "top_extensions": [ + { + "ext": ".yml", + "count": 1 + } + ], + "tags": [], + "commits_list": [ + { + "hash": "21e8bca", + "short": "cloudflared: manameme + seepuls Ingress-Einträge", + "type": null, + "scope": null, + "additions": 20, + "deletions": 0, + "timestamp": "2026-05-15T16:15:24+02:00" + } + ], + "review_state": "auto", + "llm": { + "model": null, + "generated_at": null + } +} diff --git a/devlog/2026-05-15/macher.md b/devlog/2026-05-15/macher.md new file mode 100644 index 000000000..107dfe7b6 --- /dev/null +++ b/devlog/2026-05-15/macher.md @@ -0,0 +1,18 @@ +--- +date: 2026-05-15 +day: 107 +view: macher +weekday: Freitag +commits: 1 +review: written +--- + +# Freitag, 2026-05-15 — Tag 107 (Macher-Sicht) + +## Stats + +1 Commits, +20 / −0 LoC, 1 Files. Top-Dirs: `cloudflared-config.yml` (100%). Tags: —. Session 14:15 → 14:15 (~0 aktive Min, längster Fokus 0 Min). + +## Commits + +- `21e8bca` cloudflared: manameme + seepuls Ingress-Einträge (+20/-0) diff --git a/devlog/2026-05-15/spieler.md b/devlog/2026-05-15/spieler.md new file mode 100644 index 000000000..440336569 --- /dev/null +++ b/devlog/2026-05-15/spieler.md @@ -0,0 +1,16 @@ +--- +date: 2026-05-15 +day: 107 +view: spieler +weekday: Freitag +commits: 1 +review: written +--- + +# Freitag, 2026-05-15 — Tag 107 + +Ein kleinerer Schritt in **cloudflared-config.yml**. + +## Highlights + +- cloudflared: manameme + seepuls Ingress-Einträge