Phase 0-2 of the unified app migration:
- Unified Dexie database with all 26 app schemas (120+ collections)
- Table name collisions resolved with prefixes (e.g., pictureTags, storageTags)
- SYNC_APP_MAP for routing sync changes to correct /sync/{appId} endpoints
- Calc module migrated as first proof-of-concept:
- components/skins, engine/evaluate, stores, queries
- Routes at /calc and /calc/standard
- Writes directly to unified db.calculations table
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Comprehensive plan to consolidate 22+ SvelteKit web apps into a single
app under mana.how, solving IndexedDB origin isolation, enabling native
split-screen, and eliminating duplicated auth/settings/profile routes.
Games (arcade, voxelava, whopixels, worldream) and Matrix stay separate.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adjust checkbox size, alignment offset, border opacity, font size,
and dark mode support for the inline task creation row.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ensures Tailwind scans shared-auth-ui components for class generation
in calendar, contacts, guides, inventar, memoro, moodlit, photos,
planta, questions, times, and todo.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Define 25+ Memoro-specific events in shared-utils analytics (recording, memo CRUD, spaces, invites, playback, themes).
Integrate tracking in web app services, components, and stores.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Zod schemas for all 30+ API endpoints with proper input validation
- Consistent `{ success: true/false, ... }` response wrapper on every endpoint
- Pagination (limit/offset) on spaces, space memos, bots, and recordings list endpoints
- Validation helper (validateBody/validateQuery) for clean route handlers
- Fix rate-limiter return type in both memoro and shared-hono
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Comprehensive ManaScore assessment covering all 8 categories with actionable recommendations.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
mana-stt: add WhisperX service with CUDA GPU support, speaker diarization, and auto-fallback chain.
mana-notify: add locale fallback and default templates for task reminders.
CD: update deployment pipeline and docker-compose configuration.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use authMiddleware, healthRoute, errorHandler, notFoundHandler, and rateLimitMiddleware from shared-hono.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New Astro landing page with hero, features, pricing sections.
Server: avatar upload with file validation, vCard import parser.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Server: reminder-worker checks due reminders every 60s, dispatches via mana-notify, integrates shared-hono middleware and Zod validation for RRULE.
Web: ReminderSelector component, local-first reminder store, form integration.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update Memoro status to published with founder-tier access. Add comprehensive analytics event tracking for all apps.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
In-memory sliding window rate limiter with per-IP tracking, configurable limits, and automatic stale entry cleanup.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extract ~120 hardcoded German strings from 14 Svelte components into i18n locale
files using svelte-i18n $t() calls. Add new translation sections (taskForm, filters,
tags, subtasks, durationPicker, kanban, toolbar) across all 5 languages (de/en/fr/es/it).
Also add missing shared common translations for Spanish, French, and Italian
(150+ keys each) in packages/shared-i18n.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Set accurate status levels (beta/planning) instead of blanket 'development',
mark Cards/Picture/Zitare/Wisekeep as no longer coming soon.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Each app's PillNavigation now has spotlightActions with app-specific
quick actions (create, navigate, settings). Users can press Cmd+K / Ctrl+K
from any app to search apps, navigate, and trigger actions.
Apps: todo, calendar, contacts, chat, picture, clock, zitare, cards,
storage, manacore, mukke, presi, context, questions, photos, planta,
citycorners, guides, calc, moodlit, matrix, uload, arcade
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix typo: Okosystem → Ökosystem
- Remove Landing Pages section (low value for visitors)
- Add Mana branding header with tagline
- Move GitHub + Matrix Chat into new "Kontakt" section under Rechtliches
- Increase status dot size (6px → 7px) and legend font (0.625rem → 0.75rem)
- Balance column heights across the 4-column grid
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Improve first-visit experience across all 23 apps: fix incorrect data
warning (IndexedDB persists, not tab-only), swap CTA order (register as
primary), add marketing-focused copy inspired by Mana ecosystem values,
compact layout, Phosphor icons for features, "Mehr über Mana" link,
Mana branding label, and improved accessibility (aria-describedby).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add ManaCore as first entry in MANA_APPS so the dashboard at mana.how
gets a tier badge. Map mana.how → manacore and inventar → inventory
in subdomain aliases.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Old $user store subscription references caused build failure in runes
mode. Replaced with authStore.user across 6 files (tags, upload,
record, memos, MemoPanel, Sidebar).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add Mukke, Photos, Planta, SkillTree, Playground, Arcade to mana-apps.ts
with icons and APP_URLS. Fix manadeck→cards subdomain alias in status
page generator so the tier badge renders for the renamed app.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move release tier info (founder/alpha/beta/public) from a standalone
grid section into the existing service rows as small inline badges
next to each web app name. Cleaner, less visual noise.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Dockerfile using sveltekit-base:local pattern (port 5038)
- docker-compose.macmini.yml entry with Traefik labels for memoro.mana.how
- Delete legacy authService.ts and auth.ts (app uses shared-auth-stores)
- Remove middleware env vars from env.ts and app.d.ts (dead code)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Parse tier data automatically from mana-apps.ts (awk, read-only volume
mount) so the status page stays in sync without manual updates. Shows
founder/alpha/beta/public cards with per-app development status.
Tier data is also included in status.json for ManaScore consumption.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Delete apps/memoro/apps/backend/ (NestJS) and apps/memoro/apps/audio-backend/
(NestJS) — all functionality has been ported to the new Hono/Bun servers
(apps/server/ and apps/audio-server/).
Also clean up root and memoro package.json scripts to remove references
to the old @memoro/backend and @memoro/audio-backend packages.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Production build was falling back to localhost:3050 for mana-sync because
PUBLIC_SYNC_SERVER_URL was not set as a build-time ARG. Vite bakes
import.meta.env vars at build time, so the runtime docker-compose
environment section alone is insufficient.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace custom sidebar/bottom-nav with PillNavigation (matches ecosystem pattern)
- Full theme/language/app-switcher/user-dropdown support via PillNavigation
- GuestWelcomeModal + SessionExpiredBanner wired up
- GET /shared/[token] public route: checklist, progress bar, step types, CTA
- Separate layout for /shared so it bypasses AuthGate
- Port corrected to 3027
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Accessing (error as any)?.body?.code on a Better Auth APIError triggers an internal
async stream read. When the request body contains special chars like '!', the deferred
JSON parse fails as an unhandled rejection that races with the response, causing 500.
Use only error.status === 'FORBIDDEN' which is a simple string property.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- POST /api/v1/import/url — extract URL via mana-search, generate guide with mana-llm
- POST /api/v1/import/text — convert raw text/markdown to structured guide
- POST /api/v1/import/ai — generate guide from AI prompt
- POST /api/v1/share + GET /api/v1/share/:token — shareable guide links (7-day TTL, in-memory MVP)
- Uses Claude Haiku via mana-llm for structured JSON guide generation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
GuideEditModal:
- Live collection list loaded from IndexedDB
- Select dropdown to assign guide to a collection (or none)
- Collection persisted on save
Guide detail — quick step add (no modal needed):
- Click "+ Schritt hinzufügen" → inline input appears
- Enter to save, Esc to cancel, ⋯ to open full StepEditorModal
- Works in both sections and unsectioned step list
- Input stays open after adding (for rapid multi-step entry)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>