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>
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>
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>
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>
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>
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>
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>
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>
- 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>
- server: add GET /api/v1/credits/balance (proxies to mana-credits via getBalance)
- web/creditService: rewrite to new paths (pricing, balance, retry-transcription, retry-headline)
- web/questionService: use authStore.getAccessToken() + new /api/v1/memos/:id/question path
- web/audioUploadService: fix accessToken param name for triggerTranscription
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Dockerfile for audio-server (Bun + ffmpeg)
- docker-compose.macmini.yml entries for memoro-server (3015) and memoro-audio-server (3016)
- Dev commands: dev:memoro:server, dev:memoro:audio-server, dev:memoro:app, dev:memoro:full
- MEMORO_* env vars in .env.development
- web: add PUBLIC_MEMORO_SERVER_URL env var to env.ts and .env.example
- web: rewrite transcriptionService → POST /api/v1/memos (new server path)
- web: rewrite spaceService → /api/v1/spaces/* (aligned with actual Hono routes)
- server: fix callAudioServer param name audioPath (was filePath) in memos.ts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- contacts, zitare: migrate LanguageSelector to shared PillDropdown pattern
- context, times: replace local ConfirmDialog with ConfirmationModal from @manacore/shared-ui
- delete local ConfirmDialog.svelte in both apps
- map open→visible, onCancel→onClose, remove destructive prop (default in shared-ui)
- calendar, chat, contacts, presi, todo: switch AppSlider from static MANA_APPS
to getActiveManaApps() to filter inactive apps consistently
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Title already had contenteditable; now shows clear focus ring (primary tint)
when active so it's obvious the title is being edited
- Added ArrowsOutSimple icon button at the right end of each task row
(appears on hover) that opens the full TaskEditModal
- Modal wired up with save/delete/close handlers
- Fixed all remaining hardcoded colors in TaskItem to use CSS vars
(checkbox checked/animating, drag handle, due date, meta, form inputs,
expanded wrapper border, btn-danger, assignee dot)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Root +page.svelte: use authStore instead of data.session (always undefined)
→ after email verification auto-sign-in, redirects to /home not /login
- (auth)/+layout.svelte: remove racing $effect, keep only onMount redirect check
→ no more double goto() race condition after login
- login/+page.svelte: successRedirect /dashboard → /home (consistent with root)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>