Commit graph

1811 commits

Author SHA1 Message Date
Till JS
3500ac5e23 fix(citycorners): replace @const with direct function calls in templates
Svelte 5 restricts {@const} to block contexts only. Use direct
isOpenNow() calls in {#if} conditions instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:05:37 +01:00
Till JS
8e3af239b2 fix(citycorners): add shared-types to web Dockerfile
shared-auth depends on shared-types for contactsClient, causing build
failure when the package isn't available.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:13:48 +01:00
Till JS
6c1b472e59 feat(manadeck): add Docker deployment for backend and web
Create web Dockerfile and add both manadeck-backend (port 3009) and
manadeck-web (port 5023) to docker-compose.macmini.yml. Add Cloudflare
tunnel routes for manadeck.mana.how and manadeck-api.mana.how.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:13:45 +01:00
Till JS
b9a9052ae5 feat(manascore): add extended codebase metrics to all app audits
Add LOC, source files, size, commits, contributors, first commit date,
TODO count, API endpoints, stores, and max file size metrics to all 20
ManaScore audit files with real measured data from the monorepo.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:12:15 +01:00
Till JS
89e32d4798 feat(citycorners): add open/closed badges, map category filter, opening hours
- Add isOpenNow() utility that checks current time against opening hours
- Show "Open now" / "Closed" badge on location cards and detail page
- Add category filter pills to the map page (click to filter markers)
- Add opening hours to seed data for cafés, bars, restaurant, shops, museums
- Add missing category colors to detail page
- i18n: openNow, closedNow, filterAll (DE/EN)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:09:09 +01:00
Till JS
491c71e2b8 fix(onboarding): move modal outside flex layout containers in 8 apps
The MiniOnboardingModal was nested inside .layout-container (flex) divs
in Chat, Clock, Contacts, Context, ManaDeck, Picture, Presi, and Todo.
This could interfere with fixed positioning, causing the modal to render
incorrectly. Moved all modals to the same nesting level as
SessionExpiredBanner, outside layout containers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:08:34 +01:00
Till JS
9aa5169f8e fix(storage): move onboarding modal outside flex layout container
The MiniOnboardingModal was placed inside the .layout-container flex div,
which interfered with its fixed positioning and caused it to render
unstyled at the bottom of the screen. Moved it to the same level as
SessionExpiredBanner, outside the layout container.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 13:07:29 +01:00
Till JS
06bf150218 refactor(manalink): improve chat layout with message grouping, hover actions, and command palette
- Group consecutive messages from same sender with tighter spacing and connected bubble corners
- Highlight error messages with red tint for better visibility
- Move action buttons (reply, emoji, forward) above message bubble, only on hover
- Replace sidebar search and permanent bottom QuickInputBar with Cmd+K command palette
- Move "Neuer Chat" button from sidebar bottom into compact header button

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 13:02:35 +01:00
Till JS
6464a01e7b fix(storage): add shared-pwa build step and help packages to web Dockerfile
The shared-pwa package exports from dist/ and needs to be built before
the storage-web app. Also adds shared-help-types, shared-help-ui, and
shared-help-content COPY statements for the new help pages.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 13:01:17 +01:00
Till JS
68ce6e79a4 fix(citycorners): add missing favicon.png for web app
SvelteKit prerendering of /offline failed because favicon.png was
referenced in app.html but not present in the static directory.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 13:00:34 +01:00
Till JS
c7f2f9185f fix(citycorners): add missing leaflet.markercluster dependency
The package was dynamically imported in the map page but not declared
in package.json, causing production builds to fail.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 12:57:46 +01:00
Till JS
5833b05a8f fix(citycorners): build shared-pwa package in web Dockerfile
The shared-pwa package was missing from the Dockerfile build steps,
causing the web container build to fail on esbuild resolution.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 12:54:34 +01:00
Till JS
d8886346ad fix(infra): add missing Zitare, SkillTree, Planta routes to Cloudflare tunnel
These apps were running on the Mac Mini but not accessible from the
internet because their ingress rules were missing from the tunnel config.
Also created DNS CNAME records for storage-api and planta-api.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 12:54:11 +01:00
Till JS
8b96b82428 feat(citycorners): add 7 new location categories with 35 seed entries
Add cafe, bar, park, beach, hotel, event_venue, and viewpoint categories
to the CityCorners city guide. Each category includes 5 real Konstanz
locations with descriptions, addresses, and coordinates.

Changes across all layers: DB schema enum, DTOs, lookup keyword detection,
i18n (DE/EN), map colors, filter pills, landing page, and seed data.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 12:53:04 +01:00
Till JS
3376b044bc fix(auth): resolve hardcoded localhost in user-settings across all web apps
The createUserSettingsStore was receiving a static auth URL evaluated at
module load time, before window.__PUBLIC_MANA_CORE_AUTH_URL__ was
injected by hooks.server.ts. In production this caused CSP violations
as settings API calls went to localhost:3001 instead of auth.mana.how.

Changes:
- Accept string | (() => string) for authUrl in shared-theme config
- Resolve authUrl lazily at fetch time instead of module load
- Fix fallback to empty string in non-dev environments (was localhost)
- Pass getAuthUrl as getter function in all 17 web apps

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 12:40:30 +01:00
Till JS
1fe8f8902d feat(analytics): add custom event tracking to NutriPhi and ManaDeck
Add NutriPhiEvents (mealAdded, mealDeleted, photoAnalyzed, textAnalyzed,
goalsUpdated, favoriteSaved, favoriteUsed) to shared analytics utils.
Add deckDeleted and cardDeleted to ManaDeckEvents. Wire up event calls
in NutriPhi meals store and ManaDeck deck/card stores.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 12:12:01 +01:00
Till JS
59c8974af8 refactor(manacore): use STORAGE_KEYS in all remaining localStorage calls
Replace hardcoded localStorage key strings in +layout.svelte,
welcome/+page.svelte, and onboarding store with centralized
STORAGE_KEYS constants. Completes the storage-keys refactor.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 11:55:49 +01:00
Till JS
0519440705 refactor(manacore): centralize localStorage keys in storage-keys config
Extract hardcoded localStorage key strings into a central STORAGE_KEYS
constant to avoid key collisions and improve maintainability.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 10:36:40 +01:00
Till JS
7077c0a397 feat(help): add help pages to 10 remaining web apps
Add bilingual (DE/EN) help content and help page routes for Clock,
Context, ManaCore, ManaDeck, NutriPhi, Photos, Planta, Presi,
Questions, and SkillTree. Uses shared-help-types and shared-help-ui
packages consistent with already-committed help pages in other apps.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 10:36:22 +01:00
Till JS
422b4f9fc9 fix(monitoring): add missing prom-client dependency to 4 backends
Nutriphi, Photos, Planta, and Presi backends had MetricsModule imported
but were missing the prom-client peer dependency, causing /metrics to
return 404 and VictoriaMetrics to report them as down (73% healthy).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 10:22:25 +01:00
Till JS
73d5529495 fix(manacore): fix white screen when toggling todo completion in dashboard
Task links pointed to non-existent /task/{id} route in Todo app, causing
navigation to a 404 page. Replace passive checkbox div with interactive
button that toggles completion via API, and fix links to open Todo app root.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 10:21:44 +01:00
Till JS
7da67febd1 feat(manacore): nice-to-have UX polish
Onboarding auto-save (#18):
- Profile name auto-saved via profileService when clicking "Weiter"
- Non-blocking: save failure doesn't block onboarding flow
- Name synced to parent via bindable prop

Widget auto-refresh (#19):
- New useAutoRefresh() utility with visibility-aware polling
- Pauses refresh when tab is hidden, resumes on focus
- Credits: every 60s, Tasks: every 30s, Calendar: every 60s
- Silent refresh: doesn't show loading spinner on subsequent loads

Remove debug logs (#24):
- Removed console.log from AppSlider and auth SSO flow
- Kept console.warn for API retry (useful for debugging)

Dark mode on login (#20):
- Sun/moon toggle button on auth pages (top-right corner)
- Users can switch theme before logging in

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 10:20:12 +01:00
Till JS
12b3c4f0f3 feat(analytics): add custom event tracking to Context, SkillTree, Planta, Questions
Add app-specific Umami event helpers and integrate tracking into:
- Context: 6 events (document create/delete/pin, space create/delete, AI generated)
- SkillTree: 3 events (skill create/delete with branch, XP added with level-up)
- Planta: 4 events (plant analyzed/created/deleted, plant watered)
- Questions: 5 events (question create/delete, research started, collection create/delete)

Updates ManaScore analytics from 3/5 to 4/5 for all four apps.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 10:13:05 +01:00
Till JS
623ce1f051 feat(manacore): add UX improvements across dashboard
Breadcrumbs:
- New Breadcrumbs component for hierarchical navigation
- Added to Settings > My Data page

Keyboard shortcuts:
- Press ? anywhere to open shortcuts modal
- Shows Ctrl+1-8 nav, Esc, and ? shortcuts

Session timeout warning:
- Yellow banner appears when session expires in < 5 minutes
- "Sitzung verlangern" button to refresh token

Pagination:
- Admin users table now paginated (20 per page)
- Page controls with Zuruck/Weiter buttons
- Resets to page 1 on search

Better error messages:
- German HTTP status messages (401, 403, 404, 429, 500, 502, 503)
- "Sitzung abgelaufen" instead of "Authentication failed"
- "Keine Berechtigung" instead of generic 403

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 10:00:27 +01:00
Till JS
3075e515bd feat(analytics): add custom event tracking to Photos app
Add PhotosEvents helper (8 events) and integrate tracking into:
- Photos store: favorite toggle, delete, filters applied
- Albums store: create, delete, add/remove photos
- Upload page: photo uploaded

Updates ManaScore analytics from 3/5 to 4/5 (customEvents: true).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:59:42 +01:00
Till JS
bade0a17db feat(analytics): add custom event tracking to Storage app
Add StorageEvents helper (11 events) and integrate tracking into:
- Files store: download, delete, favorite, view mode toggle
- Shared page: share link copy/delete
- Trash page: restore, empty trash
- Search page: search performed with results count

Updates ManaScore analytics from 3/5 to 4/5 (customEvents: true).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:34:07 +01:00
Till JS
bdab272267 refactor(shared-help): extract shared translations, add Zitare + Mukke help pages
- Add defaultTranslationsDE/EN and getHelpTranslations() to shared-help-ui
  so apps only need to override the subtitle instead of duplicating ~80 lines
- Refactor all 6 existing help pages to use getHelpTranslations()
  (Contacts, Calendar, Todo, Storage, Chat, Picture)
- Add help page to Zitare (FAQ, features, contact — no shortcuts)
- Migrate Mukke from custom SettingsPage-based help to shared HelpPage
  (FAQ with audio formats, lyrics editor, playlists; features; shortcuts)

All 8 web apps now use the unified shared help system.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:26:26 +01:00
Till JS
23261aab51 fix(manacore): address critical production readiness issues
1. Admin role gate: Nav link only shows for admin role users, admin
   layout redirects non-admins to /home with access denied message
2. Profile update: Replace stubbed setTimeout with real API call to
   profileService.updateProfile(), add empty name validation
3. Error boundaries: Wrap each dashboard widget in svelte:boundary
   with error UI showing widget name, error message, retry button
4. Payment page: Replace alert() with toast notification for
   unfinished payment integration (no more browser alerts)
5. Form validation: Add name validation in profile update

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:25:47 +01:00
Till JS
d2264f5360 feat(analytics): add Analytics Maturity metric to ManaScore and custom event tracking to 4 apps
Add new "Analytics Maturity" extended metric to ManaScore schema with 5 checks:
pageViewTracking, customEvents, authTracking, landingTracking, publicDashboard.
Populate analytics data across all 20 audit files. Document the metric in about.md.

Add app-specific Umami custom event helpers and integrate tracking into:
- ManaCore: 13 events (nav, onboarding, dashboard widgets, credits, settings)
- Presi: 12 events (deck/slide CRUD, presentation start/exit, sharing)
- Zitare: 9 events (quotes, favorites, categories, search, lists, language)
- Mukke: 12 events (upload, library, playlists, projects, editor export)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:20:59 +01:00
Till JS
f0233b8d31 feat(storage, chat, picture): add shared help pages
Add help pages to the remaining high-maturity production apps:

- Storage (84/100): FAQ (upload, sharing, versioning, trash, privacy),
  features (cloud storage, sharing, versioning, search), shortcuts
- Chat (82/100): FAQ (AI models, spaces, templates, comparison, privacy),
  features (multi-model, spaces, comparison, templates), shortcuts
- Picture (81/100): FAQ (generation, credits, moodboards, explore, privacy),
  features (AI generation, gallery, moodboards, explore), shortcuts

All 6 production web apps now have standardized help pages using the
shared help system.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:19:06 +01:00
Till JS
979103b962 fix(manacore): re-add missing shared packages to Dockerfile
The generate-dockerfiles script overwrote the manual fix. Re-adding
shared-feedback-types, shared-help-content, shared-help-types, and
shared-help-ui.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:09:11 +01:00
Till JS
3631cc7707 docs: add Windows GPU server to project documentation
- Add mana-server-gpu (RTX 3090, 24GB VRAM) to CLAUDE.md server section
- Add SSH config for mana-gpu alias
- Fix WINDOWS_GPU_SERVER_SETUP.md: correct network values, admin SSH key
  setup with SID-based permissions (language-independent)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:04:08 +01:00
Till JS
aeca35ee2b feat(observatory): add rivers, leaderboard, compare, and trends tabs
Four new tabs on the observatory page:

- Flusse: Horizontal scroll of all 6 data flow rivers with animated
  SVG preview, from/to labels, speed and width stats
- Rangliste: Sortable table of all 20 apps with score, trend, status
  dot, and mini bar charts for all 8 categories. Click any column
  header to sort, click row for detail panel
- Vergleich: Select up to 4 apps via chip selector, see overlaid
  radar charts and side-by-side category bar comparison
- Trends: Slope chart showing score evolution with hover highlight,
  trend annotations for big movers (+29 Storage, +16 Todo, +15
  Calendar), average score summary card

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:02:42 +01:00
Till JS
858b7f681e ci: add audit:deps and generate:dockerfiles --check to PR workflow
Validates workspace dependencies and Dockerfile freshness before
Docker builds. Catches missing deps and outdated COPYs in PRs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 08:57:35 +01:00
Till JS
cacf8d7cc1 perf(shared-nestjs-auth): local JWKS verification instead of HTTP call
Replace HTTP POST to /api/v1/auth/validate with local JWT verification
using jose + createRemoteJWKSet. Eliminates ~5-20ms HTTP roundtrip per
API request across all backends. JWKS cached automatically by jose.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 08:57:24 +01:00
Till JS
1052469397 feat(infra): extend Dockerfile validator to backends and services
Validator now checks 52 Dockerfiles (web + backend + service).
Fixed 10 missing COPYs across backends, services, and nestjs-base.
Generator also supports backend/service Dockerfiles with markers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 08:57:10 +01:00
Till JS
dd5c0d502f feat(calendar, todo): add shared help pages
Add help pages to Calendar and Todo web apps using the shared help system:

- Calendar: FAQ (events, recurring, sharing, sync, privacy), features,
  shortcuts, contact — with DE/EN/FR/IT/ES content support
- Todo: FAQ (quick add syntax, projects, kanban, recurring, privacy),
  features, shortcuts, contact — with DE/EN content

Both apps follow the Contacts reference implementation pattern.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 08:47:12 +01:00
Till JS
37b061f7e6 perf(infra): stagger Docker health check start periods
Distribute start_period values across service groups to prevent
thundering herd of simultaneous health checks. Backends: 40-60s,
web: 20-45s, bots: 15-35s, monitoring: 10-30s.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 08:31:00 +01:00
Till JS
336cfedd0b refactor(auth): centralize appReady pattern into AuthGate component
Replace copy-pasted appReady/loading/redirect logic in all 13 layouts
with a shared AuthGate component. Supports guest mode, onReady callback
for app-specific data loading, and configurable login redirect.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 08:30:31 +01:00
Till JS
31af413b77 fix(manacore): add missing shared packages to Dockerfile
Add shared-feedback-types, shared-help-content, shared-help-types,
and shared-help-ui to Docker COPY statements.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 08:26:48 +01:00
Till JS
80beef252c feat(observatory): add tabbed gallery views for plants and lakes
Three tabs on the observatory page:
- Seenplatte: the main interactive landscape (existing)
- Pflanzen: horizontal scroll gallery of all 20 apps as plant cards,
  grouped by status (Mature/Production/Beta/Alpha), each with SVG
  preview, score, type label, trend indicator. Click opens detail panel.
- Seen: horizontal scroll of all 6 infrastructure lakes with gradient
  preview, description, clarity and fill level stats.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 08:24:29 +01:00
Till JS
a432c77286 docs: add devlog for evening session 2026-03-24
41 commits: PWA icons for all apps, Mac Mini port exhaustion fix,
Todo UX overhaul (inline edit, drag fix, long press), Dashboard
widget shows all tasks, Dockerfile validator, auth improvements.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 08:20:44 +01:00
Till JS
42dd7d2a7a fix(shared-help): harden help system with XSS protection, i18n, type safety, and reference implementation
- Add HTML sanitization via isomorphic-dompurify in parser layer to prevent XSS
- Replace all hardcoded English strings with translations (FAQSection, KeyboardShortcuts, ChangelogEntry/Section)
- Remove unsafe `as` type casting in loader.ts, use Zod-inferred generics instead
- Add error logging in content loader (replaces silent catch blocks)
- Fix HelpSearch blur handling (mousedown+preventDefault instead of setTimeout hack)
- Add ARIA attributes to HelpSearch for accessibility
- Derive FAQ categories from items instead of hardcoding all 6
- Fix null-safety in GettingStartedGuide.svelte
- Fix unused appId variable in HelpPage.svelte, add scroll-reset on tab switch
- Rebuild Contacts help page as reference implementation using shared HelpPage component
- Add README with quick-start guide, props docs, and translations template

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:38:46 +01:00
Till JS
8356ac634a test(auth): add unit tests for local JWKS cache
15 tests covering: happy path, caching with TTL, empty DB, connection
failures, key rotation, and cache clearing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:36:22 +01:00
Till JS
f2488f86fe feat(infra): add workspace dependency audit script
New script scans source imports vs package.json deps to catch missing
workspace dependencies that work locally but break in Docker.
Fixed: manadeck-web and presi-web missing shared-stores.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:36:11 +01:00
Till JS
bf7517d24d feat(auth): add SessionExpiredBanner to all remaining web apps
Added to: clock, photos, storage, mukke, planta, picture, skilltree,
nutriphi, chat. Now all 13 web apps show a re-login banner when
token refresh permanently fails.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:35:13 +01:00
Till JS
90c438e267 feat(infra): auto-generate Dockerfile COPY statements from package.json
New script generates COPY blocks between marker comments, eliminating
manual maintenance. All 17 web Dockerfiles updated with markers.
Supports --check flag for CI validation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:33:07 +01:00
Till JS
23dac3272e feat(observatory): add tooltips, detail panel, radar chart, and atmosphere
Phase 5 - Interactivity:
- Hover tooltip with score, status, category bars on every plant
- Click opens slide-in detail panel with 8-axis radar chart
- Panel shows all category scores, app links, ManaScore link
- Escape key and backdrop click close the panel
- Pan vs click distinction (no panel on drag)

Phase 6 - Atmosphere:
- Dynamic sky that follows real time of day (sunrise/noon/sunset/night)
- Stars with twinkling animation at night
- Sun glow during golden hour
- Birds flying across the scene (daytime)
- Dragonflies circling over lakes
- Butterflies near plants
- Fireflies at night (glowing, drifting)
- Time updates every minute

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:21:04 +01:00
Till JS
5286404129 feat(parsers): add intelligent quick-create parsers for 6 apps with multilingual support
- Base parser: multilingual (DE/EN/FR/ES/IT) date, time, weekday, month parsing
- Base parser: fuzzy/typo tolerance (Levenshtein), recurrence (RRULE), relative time
- Base parser: timezone extraction, date ranges, ordinal dates, confidence scoring
- Base parser: past dates (gestern/yesterday), this/next week distinction
- Base parser: compose helper (createAppParser), multiple @references
- Calendar: event-parser with duration, time ranges, location, all-day, calendar ref
- Calendar: wire up UnifiedBar with onCreate/onParseCreate for quick event creation
- Todo: task-parser multilingual priority keywords (urgent/important/normal/later)
- Planta: plant-parser with acquisition keywords (gekauft/bought/acheté)
- Mukke: song-parser with Artist-Title format, BPM, genre, playlist/project creation
- NutriPhi: meal-parser with meal type detection, add QuickInputBar to layout
- All parsers: 210 tests across 7 test suites, all passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:18:05 +01:00
Till JS
5c2a8d07e3 fix(manacore): add date-fns to package.json for Docker build
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:28:54 +01:00