managarten/packages/shared-branding/src/logos
Till JS 9e0ade4c0a fix(mana/web): sprint 3 — type-safe sync protocol + tests
- New SyncChange / FieldChange / SyncOp types replace `any[]` in
  applyServerChanges. The wire format is now self-documenting and
  TypeScript catches malformed callsites at compile time.
- isValidSyncChange() validates incoming server payloads at the boundary:
  malformed entries are dropped with a single warn log, valid ones are
  applied. A bad row from the server can no longer corrupt IndexedDB.
  Hand-rolled type guards keep us free of a runtime-validation dep.
- applyServerChanges() and readFieldTimestamps() are now top-level
  exports (extracted out of createUnifiedSync's closure) so they can be
  imported directly by tests. Behaviour is unchanged — the closure
  variant inside the sync manager just resolves the module-level
  symbol now.
- New sync.test.ts covers:
  * pure isValidSyncChange and readFieldTimestamps cases
  * field-level LWW: server-newer wins, split outcome when local-newer
    on one field and server-newer on another
  * insert with __fieldTimestamps stamping
  * soft-delete LWW guard
  * malformed-entry drop with valid entries surviving
  * sync-loop guard: server-applied writes don't generate _pendingChanges
- fake-indexeddb added as devDependency for the integration tests.

Note: the monorepo's vitest install is currently tangled across mixed
@vitest/* package versions in the lockfile, so `pnpm test` fails before
reaching this file. The tests are written to pass on any vitest 4.x once
that's untangled — needs its own dedicated cleanup pass.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 13:38:23 +02:00
..
CalendarLogo.svelte feat(branding): add Calendar and Storage app branding 2025-12-02 14:40:30 +01:00
CardsLogo.svelte refactor: rename ManaDeck to Cards across entire monorepo 2026-04-01 11:45:21 +02:00
ChatLogo.svelte feat(chat): add SvelteKit web app with full feature parity to mobile 2025-11-25 15:54:44 +01:00
CitycornersLogo.svelte feat(citycorners): add city guide app for Konstanz with full monorepo integration 2026-03-23 10:56:26 +01:00
ClockLogo.svelte 🐛 fix: resolve auth issues in Manacore, Calendar, and Clock apps 2025-12-08 15:51:57 +01:00
ContactsLogo.svelte feat(contacts): add complete contacts app with backend, web, and landing 2025-12-02 13:17:42 +01:00
ContextLogo.svelte feat(branding): add Context and Mukke app branding 2026-03-19 11:15:09 +01:00
index.ts feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
InventoryLogo.svelte feat(inventory): add new Inventory app scaffolding 2025-12-05 04:19:36 +01:00
LightWriteLogo.svelte 🐛 fix(lightwrite): add LightWriteLogo to shared-branding 2026-02-16 13:56:10 +01:00
MailLogo.svelte feat(mail): add complete Mail app with backend, web, mobile, and landing 2025-12-03 16:06:32 +01:00
ManaLogo.svelte fix(mana/web): sprint 3 — type-safe sync protocol + tests 2026-04-07 13:38:23 +02:00
MemoroLogo.svelte refactor: consolidate app logos into shared-branding package (Tier 4) 2025-11-25 00:06:21 +01:00
MoodlitLogo.svelte feat(moodlit): add complete web app with fullscreen moods and sequences 2025-12-04 16:53:56 +01:00
MusicLogo.svelte feat: rename mukke to music, add cover art upload via mana-media 2026-04-05 15:25:34 +02:00
NutriPhiLogo.svelte feat(nutriphi): migrate to shared auth UI components 2025-11-29 06:04:35 +01:00
PlantaLogo.svelte feat(auth): add resend verification email to all login pages 2026-01-29 14:55:49 +01:00
PresiLogo.svelte feat(shared-branding): add Presi app branding 2025-11-28 20:58:45 +01:00
QuestionsLogo.svelte feat(questions): unify auth pages with shared components 2026-01-29 13:30:37 +01:00
SkillTreeLogo.svelte feat(skilltree): add central auth pages with shared components 2026-01-29 13:55:22 +01:00
StorageLogo.svelte feat(branding): add Calendar and Storage app branding 2025-12-02 14:40:30 +01:00
TodoLogo.svelte feat(contacts): add import/export with Google Contacts integration 2025-12-03 15:54:31 +01:00
UloadLogo.svelte Feat: New project chat, uload refactor (postgress), hosting plans, uload landingpage 2025-11-25 13:01:41 +01:00
ZitareLogo.svelte feat: integrate shared PageHeader and ProfilePage across all web apps 2025-11-30 00:06:29 +01:00