feat(local-first): add local-first architecture with Dexie.js, Go sync server, and Todo pilot

Implement the foundational local-first data layer for ManaCore apps:

- New @manacore/local-store package (Dexie.js IndexedDB, sync engine, Svelte 5 reactive queries)
- New mana-sync Go service (sync protocol, WebSocket push, field-level LWW conflict resolution)
- Todo app migrated as pilot: stores read/write IndexedDB, guest mode with onboarding seed data
- PillNavigation: prominent login pill for unauthenticated users
- SyncIndicator component showing local/syncing/offline status
- GuestWelcomeModal on first visit for Todo app
- Removed demo-mode auth_required checks from Todo components (all writes are now local)
- CSP fix for local development (localhost:3001, localhost:3050)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-27 11:17:58 +01:00
parent 4ddff8485b
commit 2e4bb9bad7
41 changed files with 4388 additions and 340 deletions

View file

@ -943,6 +943,19 @@
</svg>
<span class="pill-label">Logout</span>
</button>
{:else if loginHref && !userEmail}
<!-- Guest mode: prominent login button -->
<a href={loginHref} class="pill glass-pill login-pill" title="Anmelden">
<svg class="pill-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d={getIconPath('user')}
/>
</svg>
<span class="pill-label">Anmelden</span>
</a>
{/if}
<!-- Collapse Button -->
@ -1111,6 +1124,20 @@
border-color: rgba(220, 38, 38, 0.3);
}
/* Guest login pill — prominent with primary color */
.login-pill {
background: var(--pill-primary-color, var(--color-primary-500, #3b82f6));
color: #fff;
border-color: transparent;
font-weight: 600;
text-decoration: none;
}
.login-pill:hover {
filter: brightness(1.1);
transform: scale(1.03);
}
.pill-icon {
width: 1rem;
height: 1rem;