Commit graph

2322 commits

Author SHA1 Message Date
Till JS
4116715db0 feat(manacore/web): add todo kanban board components and view grouping
Add KanbanTaskCard, QuickAddTaskInline components, task-parser utility,
settings store with view/layout preferences, and a pure-function view
grouping engine for board views (by status, date, priority).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 01:53:48 +02:00
Till JS
970dc8b260 feat(manacore/web): add leaflet dependency for map views
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 01:53:42 +02:00
Till JS
982629f507 feat(manacore/web): add subdomain-to-path routing for all apps
Redirect app subdomains (e.g. todo.mana.how) to their path equivalent
(mana.how/todo) so each app is reachable via its own subdomain while
running as a single SvelteKit app.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 01:53:36 +02:00
Till JS
c4b8a16740 fix(manacore/web): fix Docker build and healthchecks
Add missing shared-uload package copy and zitare content build step to
Dockerfile. Replace wget/httpx healthchecks with bun fetch and stdlib
urllib to remove external dependencies in containers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 01:53:31 +02:00
Till JS
06107f6a52 feat(mana-video-gen): add AI video generation service with LTX-Video
New GPU service for fast text-to-video generation using LTX-Video (~2B params)
on the RTX 3090. Generates 480p clips in 10-30 seconds, uses ~10GB VRAM.
Includes Cloudflare Tunnel route, Prometheus monitoring, and health checks.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 01:17:47 +02:00
Till JS
28b953255b feat(manacore/web): add search providers for picture, presi, mukke, zitare, clock
Extends cross-app spotlight search from 6 to 11 providers:
- Picture: images (by prompt), boards
- Presi: decks, slides (title/body/bullets)
- Mukke: songs (title/artist/album), playlists, projects
- Zitare: quote lists
- Clock: alarms, timers, world clocks (by label/city)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 23:05:25 +02:00
Till JS
14701a973d feat(shared-uload): add password protection and expiration to ShareModal
Adds collapsible "Erweiterte Optionen" section with:
- Password protection toggle with text input
- Expiration date toggle with datetime-local picker
- Footer badges showing active protection/expiry on created links

Both fields are passed through to createShortLink and stored in IndexedDB.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 23:03:49 +02:00
Till JS
ae73f70ad0 feat(manacore/web): add share via uLoad to mukke playlists and presi decks
Adds ShareNetwork button and ShareModal to:
- Mukke: playlist detail header (between play all and delete)
- Presi: deck header actions (next to add slide)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 22:59:29 +02:00
Till JS
eeb38275bd feat(manacore/web): add share via uLoad to todo, cards, and chat
Adds ShareNetwork button and ShareModal to:
- Todo: task detail expanded view
- Cards: deck header actions
- Chat: conversation header (between pin and delete)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 22:58:06 +02:00
Till JS
2105cc6cc4 feat(manacore/web): add share via uLoad to calendar events and contacts
Adds ShareNetwork button and ShareModal to calendar event detail and
contact detail views for creating short links via shared-uload.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 22:33:40 +02:00
Till JS
23b5b8b084 feat(uload/web): add source field tracking and filter for cross-app links
Links created from other apps (calendar, contacts, etc.) now carry a source
field. Added source filter dropdown and source badges in the link list.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 22:33:34 +02:00
Till JS
8050da31ea feat(shared-uload): add shared package with ShareModal and cross-app link creation
Provides ShareModal component and initSharedUload/createShortLink utilities
for other apps to create uLoad short links with source tracking.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 22:33:25 +02:00
Till JS
98ca01f466 feat(manacore/web): add cross-app search engine with IndexedDB providers
Search registry with providers for todo, calendar, contacts, cards, chat,
and storage. Integrated into layout via contentSearcher prop on GlobalSpotlight.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 22:29:59 +02:00
Till JS
f797d70a9e feat(shared-ui): add content search support to GlobalSpotlight
Add ContentSearcher interface, debounced cross-app search with AbortController,
loading indicators, and content result rendering to the spotlight component.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 22:29:51 +02:00
Till JS
d51ee49967 fix(manacore/web): add dexie as direct dependency for Docker build
dexie is imported in 62 files but was only available as transitive dependency
via @manacore/local-store. In Docker builds with isolated node_modules it
wasn't being resolved — add it explicitly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 22:19:49 +02:00
Till JS
6ac71535a4 fix(manacore/web): replace svelte-sonner with local toast store
svelte-sonner is not a dependency of the unified app — replace all 4 imports
in moodlit and uload modules with the local $lib/stores/toast.svelte store.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 22:03:13 +02:00
Till JS
7fe4662dbc fix(manacore/web): add app-specific packages to Dockerfile for production build
The unified app depends on @calc/shared, @clock/shared, and @zitare/content
which live under apps/*/packages/ and aren't included in the sveltekit-base image.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:55:20 +02:00
Till JS
76ae64a4d6 fix(manacore/web): build fixes for unified app — toast store, Svelte 5 syntax, icon imports
Add missing toast.svelte.ts store for zitare module, fix onclick|stopPropagation
to Svelte 5 syntax in calendar, replace non-existent StarFill with Star weight="fill"
in contacts, fix calc skins import path, add app-specific shared packages to vite config,
and improve login error handling for invalid credentials.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:52:16 +02:00
Till JS
709e781ecd feat(manacore): add DnD tag support to calendar and contacts modules
Calendar:
- Add tagIds field to LocalEvent and CalendarEvent types
- Add updateTagIds() to eventsStore
- Add dropTarget on agenda view events, tag badge display
- Register tagDropHandler for passive event→tag drops

Contacts:
- Add tagIds field to LocalContact and Contact types (alongside existing tags)
- Add updateTagIds() to contactsStore
- Add dropTarget on contact list items, tag badge display
- Register tagDropHandler for passive contact→tag drops

Both modules now support:
- Drag tag from TagStrip onto item (Layer 1: pointer events)
- Drag item onto tag in TagStrip (Layer 2: passive overlay)
- Tag badges shown inline on items

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:38:33 +02:00
Till JS
4f8c3d680c feat(shared-ui, todo): BottomStack notification system + PillNav bottomOffset
- Add NotificationBar shared component for in-stack notifications
- Add BottomNotification type and top snippet slot to BottomStack
- Add bottomOffset prop to PillNavigationProps for flexible positioning
- Remove pillNavCollapsed from todo settings (PillNav now always visible,
  toggled by layout FAB that hides all bottom bars)
- Replace floating GuestRegistrationNudge with integrated NotificationBar

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:32:35 +02:00
Till JS
c81b636f2f feat(todo/web): add page maximize/minimize/close controls and default todo page
- Show "To Do" page by default on app load
- Add fullscreen (maximize) button to TodoPage with centered content
- Consistent button order across all states: Minimize → Fullscreen → Close
- Add maximize/restore/close buttons to minimized page tabs
- Use ArrowLineUp icon for restore in tabs to differentiate from minimize
- Larger tap targets for tab action buttons (24px)
- Centered empty state when no pages are open with "Seite hinzufügen" button
- Wire maximize through MinimizedPagesContext for tab-to-fullscreen flow

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:31:04 +02:00
Till JS
bd67e8d20b feat(manacore, shared-ui): integrate cross-type DnD into unified app
- Shared TagStrip: add dragSource on tag pills + passiveDropZone for item→tag
  drops. New onTagDrop and dropAccepts props. DnD CSS for hover/success states.
- Unified app layout: add DragPreview, context-based tagDropHandler so child
  pages can register their own drop logic.
- Todo module: add updateLabels() to tasks store (with metadata merge).
- Todo page: add dropTarget on task items, tag badge display via getTaskTags(),
  register tagDropHandler for passive task→tag drops.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:30:40 +02:00
Till JS
3bf40fc61f docs: migration plan complete — all 7 phases done
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:21:20 +02:00
Till JS
a3a472ce39 feat(manacore): Phase 7 — unified sync manager for multi-app DB
Create sync infrastructure for the single-DB multi-app architecture:

sync.ts — Unified Sync Manager:
- One sync channel per appId (todo, calendar, contacts, etc.)
- Push: collects _pendingChanges tagged with appId → POST /sync/{appId}/push
- Pull: fetches server delta per collection → applies field-level LWW
- WebSocket: connects to /sync/{appId}/ws for real-time push notifications
- Online/offline handling with automatic reconnect
- Uses SYNC_APP_MAP from database.ts for table→appId routing

change-tracker.ts — Write tracking helper:
- trackChange(): records writes to _pendingChanges with auto-appId lookup
- trackFieldUpdate(): field-level LWW tracking for partial updates
- trackDelete(): soft-delete tracking

The _pendingChanges table now includes appId as an indexed field,
and _syncMeta uses compound key [appId+collection] for per-app cursors.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:21:01 +02:00
Till JS
59e1e8e833 feat(shared): Phase 6 — update app URLs and navigation for unified app
mana-apps.ts:
- Change all APP_URLS from subdomains to internal paths
  (e.g., https://todo.mana.howhttps://mana.how/todo)
- Keep separate subdomains only for games (arcade) and matrix

PillNavigation, AppDrawer, GlobalSpotlight:
- Detect internal URLs and navigate directly instead of window.open
- External URLs (games, matrix) still open in new tab

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:19:14 +02:00
Till JS
8fe16b20f4 feat(infra): Phase 5 — consolidate to single web container
Remove 20 standalone web containers, simplify tunnel and auth config:

docker-compose.macmini.yml (-579 lines):
- Remove chat-web, todo-web, calendar-web, clock-web, contacts-web,
  zitare-web, storage-web, presi-web, cards-web, nutriphi-web,
  skilltree-web, photos-web, mukke-web, citycorners-web, picture-web,
  inventar-web, calc-web, times-web, uload-web, memoro-web
- Keep: mana-web (unified), element-web, matrix-web, arcade-web, manavoxel-web
- Update mana-web with all backend API URLs, increase mem_limit to 256m

cloudflared-config.yml (-60 lines):
- Remove all *.mana.how web subdomains (now served at mana.how/*)
- Keep backend API subdomains (*-api.mana.how)

mana-auth trustedOrigins (30 → 8 origins):
- Only mana.how + games/matrix subdomains that remain separate

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:17:38 +02:00
Till JS
0b460c5c8d docs: update plan — Phase 3 + 4 complete (split-screen + widgets)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:08:21 +02:00
Till JS
fe052cc291 feat(manacore): Phase 4 — cross-app dashboard widgets
10 new widgets using direct Dexie queries on the unified database:

- TasksTodayWidget: overdue + today's tasks with completion toggle
- UpcomingEventsWidget: next 7 days of calendar events
- RecentContactsWidget: recently updated contacts
- QuoteOfTheDayWidget: daily rotating quote from zitare
- ActiveTimerWidget: running time tracker with live elapsed time
- RecentChatsWidget: last 3 AI conversations
- NutritionProgressWidget: calorie progress ring + macros
- PlantWateringWidget: plants due for watering
- QuickActionsWidget: new task/event/contact/note shortcuts
- WidgetGrid: responsive 3-column grid with error boundaries

All widgets query the shared IndexedDB directly — no cross-origin
hacks, no iFrame postMessage, just normal Dexie liveQuery.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:08:03 +02:00
Till JS
954923334f feat(manavoxel): clean up dead code, add portal keys, fix triggers, implement gold economy
Remove unused multiplayer protocol types, script/wasmBinary/capabilities fields,
and onNearItem trigger. Implement portal requiresKey gate, fix onDayNight and
onTouch triggers to fire for all inventory items, and add gold-based trading
economy with NPC kill rewards and merchant purchasing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:04:25 +02:00
Till JS
e94775de25 fix(todo): persist labelIds on task creation and merge metadata on label update
- createTask: store labelIds in metadata when provided (was silently ignored)
- updateLabels: read existing metadata first and merge, instead of overwriting
  the entire metadata object (was destroying assignee, storypoints, etc.)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:03:56 +02:00
Till JS
8409f8a8a2 feat(shared-ui, todo): add cross-type drag & drop system with tag enrichment
Implement a two-layer DnD system in @manacore/shared-ui/dnd that coexists
with svelte-dnd-action (same-type reordering):

- Layer 1 (Pointer Events): dragSource + dropTarget actions for cross-type
  drags (e.g. Tag → Task). Mobile-first with long-press (300ms) and haptic
  feedback.
- Layer 2 (Passive Overlay): passiveDropZone action detects when
  svelte-dnd-action drags hover over external targets (e.g. Task → Tag pill,
  Task → Trash zone).
- DragPreview: floating pill that follows the finger/cursor during Layer 1
  drags.
- ActionZone: auto-appearing drop zones (trash, archive) during any drag.

Integrate into Todo app:
- TagStrip pills: draggable (dragSource) + accept tasks (passiveDropZone)
- TaskList items: accept tags (dropTarget) + register drags for passive layer
- ViewColumn + FokusLayout: register svelte-dnd-action drags for passive layer
- Layout: DragPreview + ActionZone (trash) added, tasks enriched with resolved
  label objects from shared tags so tag badges actually render on TaskItem.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:00:25 +02:00
Till JS
6dc259d743 feat(manacore): Phase 3 — component-based split-screen system
Replace iFrame-based split-screen with native Svelte components:

Infrastructure (6 files):
- registry.ts: lazy-import registry for all 25 app modules
- store.svelte.ts: Svelte 5 runes state (app, position, localStorage)
- SplitPaneLayout.svelte: dual-panel layout with dynamic widths
- ResizeHandle.svelte: draggable divider with mouse/touch support
- PanelHeader.svelte: app name + close button
- index.ts: barrel exports

AppView.svelte for all 25 modules — compact self-contained views:
- todo: task list with filters + quick add
- calendar: mini week strip + today's events
- contacts: searchable list with avatars
- chat: conversation list with previews
- And 21 more...

Benefits over iFrame approach:
- Shared IndexedDB — both panels see the same data
- Svelte reactivity across panels
- No CORS/CSP issues
- Code-split via dynamic imports

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 20:58:34 +02:00
Till JS
9a6aa12c63 docs: Phase 2 complete — all 26 modules migrated to unified app
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 20:49:06 +02:00
Till JS
9b614cdfbc feat(manacore): migrate contacts, todo, calendar, picture, chat, mukke, memoro — Phase 2 complete
All 25 modules now migrated to the unified same-origin app (25/25):

- Contacts: contact list with alphabet grouping, detail/edit (3 routes)
- Todo: task management with inbox/today/upcoming views, subtasks (2 routes)
- Calendar: week/month/agenda views, event CRUD (4 routes)
- Picture: gallery with favorites, AI generation, moodboards (6 routes)
- Chat: conversation list, AI chat, templates, archive (5 routes)
- Mukke: music library, playlists, projects, audio player (6 routes)
- Memoro: voice memos, transcripts, memories, tags (5 routes)

Phase 2 of the unified app migration is now complete.
Total: 26 modules, ~120 routes, 250+ files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 20:48:30 +02:00
Till JS
933715c7d9 refactor(todo/web): remove edit mode, rename pages, add inline editing & drag reorder
- Remove edit mode entirely (toolbar, context, Layout pill in PillNav)
- Remove onAddColumn/add-sheet from all layouts (FokusLayout, Grid, Kanban)
- Rename SecondaryPage → TodoPage, secondaryPage → page (i18n keys, CSS)
- ViewColumnHeader: always-on inline editing (click name, click color dot)
- TodoPage: contenteditable title (invisible, no input styling)
- TodoPage: drag handle bar for reorder via HTML5 drag & drop
- FokusLayout: add matching drag handle to board sheets
- Clean up dead spotlight actions (/today, /upcoming, /kanban)
- Remove /statistics reference from QuickInputBar

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 20:31:36 +02:00
Till JS
990ade352f feat(manacore): migrate storage, cards, playground, guides to unified app
Phase 2 continued — 4 more modules migrated (total: 21/25):

- Storage: file browser with folders, favorites, search, trash (7 routes)
- Cards: deck/card management with study progress (6 routes)
- Playground: LLM chat interface with model selector (stateless)
- Guides: guide listing with category filters (static content)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 20:28:00 +02:00
Till JS
7def9c9977 docs: update unified app migration plan — 17/25 modules done
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 20:18:40 +02:00
Till JS
1022d2f64c feat(manacore): migrate presi, uload, context, questions, nutriphi to unified app
Phase 2 continued — 5 more modules migrated (total: 17/25):

- Presi: deck list, slide editor, presentation mode with keyboard nav
- uLoad: link dashboard with folders/tags, bulk actions, analytics
- Context: spaces, document editor with auto-save, type/tag filters
- Questions: question list, collections, research depth, answers
- NutriPhi: daily dashboard with progress bars, meal tracker, goals

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 20:18:09 +02:00
Till JS
ce3ed10b60 feat(todo/web): replace dead filter system with working tag filtering
Remove unused TaskFilters component (priorities, sort, search, completed
toggle — none were wired to the board view). Rename PillNav pill from
"Filter" to "Tags" and show TagStrip instead. Connect TagStrip tag
selection to BoardViewRenderer via shared context so selecting tags
actually filters displayed tasks. Clean up viewStore by removing dead
filter state (filterPriorities, filterLabelIds, filterSearchQuery).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 17:24:33 +02:00
Till JS
c6ed652b32 docs: update unified app migration plan — 12/25 modules done
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 17:21:59 +02:00
Till JS
e7999fb7cf feat(manacore): migrate skilltree, inventar, times, planta, citycorners, photos to unified app
Phase 2 continued — 6 more modules migrated (total: 12/25):

- Skilltree: complete routes (main, tree visualization, achievements)
- Inventar: full module (stores, components, schema editor) + 9 routes
- Times: full module (timer, entry parser, export) + 8 routes
- Planta: full module (watering logic, mutations) + 4 routes
- CityCorners: full module (geocoding, opening hours) + 13 routes
- Photos: full module (gallery, albums, upload) + 6 routes

All modules follow unified patterns:
- Imports from $lib/modules/{app}/...
- Internal links with /{app}/ prefix
- Dexie liveQuery for reactive data
- Soft-delete for sync compatibility

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 17:21:20 +02:00
Till JS
6d51d3eefb feat(todo/web): add page minimize/restore tabs, inline task creation, i18n completed times
- Secondary pages can be minimized to compact tabs above the fokus track
- Minimized tabs show centered with rounded corners, click to restore
- Add inline task creation input at the bottom of every page (except completed)
- Completed page shows date + time per task (i18n: "14:32 Uhr" DE, "14:32" EN)
- To Do page shows recently completed tasks with time
- Add + button next to minimized tabs to open page picker
- PagePicker auto-scrolls into view when opened
- i18n keys added for all 5 languages (DE/EN/FR/ES/IT)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 17:19:24 +02:00
Till JS
e449172932 feat(manacore): add clock, zitare, moodlit, skilltree, inventar modules + routes
Migrate 5 more apps to the unified same-origin app (Phase 2):
- Clock: world clocks, alarms, timers, stopwatch with stores + components
- Zitare: quotes, favorites, lists, spiral canvas with full route structure
- Moodlit: mood cards, sequences, fullscreen view with default moods
- Skilltree: skills, achievements, XP system with celebration components
- Inventar: collections, items, locations, categories (module only)

Also update landing page dates (Q2 2025 → Q3 2026).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:56:42 +02:00
Till JS
aadd1c7538 feat(todo/web): add "To Do" page, remove scroll-snap, allow closing last column
Add open-tasks secondary page, remove scroll-snap from fokus layout
and page components for smoother scrolling, and allow closing the
last remaining column.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:54:12 +02:00
Till JS
11a2db8fcd fix(memoro): unify error responses, add offline page, align i18n defaults
Error responses:
- Webhook routes now use consistent { success, error } format
- Meeting bot 402 error uses standard format instead of mixed error/message/details

PWA:
- Add /offline page with shared OfflinePage component

i18n:
- Change default locale from 'en' to 'de' (matching all other ManaCore apps)
- Use app-specific localStorage key 'memoro_locale' (was generic 'locale')

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:39:11 +02:00
Till JS
85257212af feat(todo/web): add secondary pages system with centered layout
Add "Neue Seite" button to open filtered task pages (Erledigt, Heute,
Überfällig, etc.) alongside the main board view. Sheets are centered
via carousel-style padding, and all pages are closeable with X buttons.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:37:16 +02:00
Till JS
d3807b4bea feat(manacore): start unified same-origin app — database schema + calc module
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>
2026-04-01 16:35:54 +02:00
Till JS
9aedc89ce5 docs(memoro/server): add OpenAPI 3.1 spec and update ManaScore to 79
- Add openapi.yaml with all 50+ endpoints, schemas, and auth methods
- Update ManaScore: 76→79 (testing 45→55, documentation 78→82)
- 210 tests total (main-server 185 + audio-server 25)
- API conformity: documentation now true

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:31:44 +02:00
Till JS
c582f164ba feat(memoro/audio-server): add vitest setup and 25 API + config tests
- Health endpoint, service key auth, 404 handler tests
- Transcribe and append endpoint validation tests
- Azure speech service config tests (getAvailableSpeechServices, pickRandomService)
- Export app for testability

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:31:28 +02:00
Till JS
cb0e67ddd2 docs: add unified same-origin app migration plan
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>
2026-04-01 16:22:44 +02:00