managarten/apps
Till JS 7f805d9da2 feat(forms): M7a auto-sync zu contacts — der Mana-Differentiator
Bei einer neuen Form-Antwort entsteht automatisch ein Kontakt im
contacts-Modul (docs/plans/forms-module.md M7 — Teil 1):

- lib/auto-sync.ts:
  - buildContactFromAnswers (pure): Mapping form-field-id →
    contact-key (firstName/lastName/email/phone/...). Special target
    `name` splittet auf erstes Whitespace in firstName + lastName.
  - applyAutoSync (per Response): idempotent via syncedTargets-Check,
    schreibt nach Erfolg `{target, recordId}` ans Response-Row.
  - runAutoSyncSweep: scant alle Forms mit autoSync, dekrypt-aware
    (vault-locked = no-op), filtert pre-decrypt auf nicht-bereits-
    synced Responses für günstigen Skip. Per-Response-Errors werden
    geloggt aber blockieren den Rest nicht.
  - dispatchTarget für 'events' / 'feedback' / 'library' /
    'space_member' wirft "M7b not yet" — Surface ist da, UI filtert.
- lib/auto-sync.spec.ts: 6/6 Vitest-Cases.
- SettingsPanel: target-Dropdown ('Nichts' / 'Kontakt') + bei contacts
  Mapping-Grid über alle Antwortfelder mit dropdown der 15 contact-
  keys (name als auto-split, sonst firstName/lastName/email/phone/
  mobile/company/jobTitle/street/city/postalCode/country/birthday/
  website/notes).
- BuilderView reicht items-Field-Liste an SettingsPanel weiter.
- ResponsesView triggert runAutoSyncSweep on-mount + bei Response-
  Liste-Änderung. Bei synced > 0: Toast "{n} automatisch
  synchronisiert" 4 Sek lang.
- 8 neue i18n-Keys × 5 Locales (forms.builder.autoSync.*).

Total Forms-Tests: 22/22 (5 csv + 11 branching + 6 auto-sync).
svelte-check 0 errors. i18n-parity 6407 keys.

Future M7b: events (RSVP), feedback, library, space_member.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 01:07:22 +02:00
..
api chore(articles): hygiene pass — shared-ai actor + lib/sync-db + metrics (#5,#7,#11) 2026-04-29 01:06:15 +02:00
calc/packages/shared
calendar refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
cards chore(mobile): remove 6 of 7 mobile apps — keep only memoro 2026-04-20 15:31:47 +02:00
chat chore(mobile): remove 6 of 7 mobile apps — keep only memoro 2026-04-20 15:31:47 +02:00
citycorners
contacts refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
docs feat(ai): Mission Grant rollout gating — flag, alerts, runbook, user docs 2026-04-15 14:02:47 +02:00
food refactor: rename nutriphi module to food (Essen) 2026-04-14 15:30:07 +02:00
guides refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
inventory refactor(mana): rename inventar → inventory across the codebase 2026-04-09 15:50:24 +02:00
mana feat(forms): M7a auto-sync zu contacts — der Mana-Differentiator 2026-04-29 01:07:22 +02:00
manavoxel fix(type-check): clear the last five failures — monorepo type-check is now 76/76 green 2026-04-20 15:53:07 +02:00
memoro chore(geocoding): remove Pelias + close 3 bypass paths to public Nominatim 2026-04-28 22:12:26 +02:00
moodlit refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
mukke
news refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
photos refactor: rename nutriphi module to food (Essen) 2026-04-14 15:30:07 +02:00
picture chore(mobile): remove 6 of 7 mobile apps — keep only memoro 2026-04-20 15:31:47 +02:00
plants refactor: rename planta → plants, clean up codebase 2026-04-12 18:59:44 +02:00
presi fix(presi): wire up db:push for presi schema via @mana/api 2026-04-12 14:32:44 +02:00
questions refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
quotes/packages/content fix(mana-llm): google-genai v1.73 keyword-only Part.from_text() 2026-04-16 12:47:23 +02:00
skilltree
storage refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
times
todo fix(tsconfig): unblock shared-types consumers 2026-04-21 18:53:55 +02:00
traces chore(mobile): remove 6 of 7 mobile apps — keep only memoro 2026-04-20 15:31:47 +02:00
uload fix(type-check): clear the last five failures — monorepo type-check is now 76/76 green 2026-04-20 15:53:07 +02:00