Commit graph

1386 commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
34136894d0 feat(memoro/server): implement invite email, health checks, and update ManaScore
- Implement invite resend via @manacore/notify-client (was a stub)
- Send invite email on space invite creation (fire-and-forget)
- Extend /health endpoint with Supabase connectivity check
- Returns 503 "degraded" if dependency checks fail
- Update ManaScore: 72→76 (testing 10→45, 183 tests documented)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:18:28 +02:00
Till JS
32e8edfb66 feat(memoro/server): add comprehensive API route tests
183 tests across 10 files covering all server endpoints:
- Health, pricing, 404 handling
- Memo CRUD (create, append, retry, combine, Q&A)
- Credits (balance, check, consume)
- Settings (profile, memoro settings, data usage)
- Spaces (CRUD, invites, link/unlink memos)
- Meetings (bots, recordings)
- Internal callbacks (transcription, batch metadata)
- Cleanup (auth, run, manual)
- Credit utility (calcTranscriptionCost, COSTS)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:07:03 +02:00
Till JS
f6cbba9f2a fix(todo): refine kanban quick-add row styling
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>
2026-04-01 15:43:34 +02:00
Till JS
d5bb20c002 style: add shared-auth-ui as Tailwind @source across 11 web apps
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>
2026-04-01 15:43:21 +02:00
Till JS
bdf166a838 feat(memoro/server): add Zod schema validation tests with vitest
59 tests covering all API request schemas (createMemo, appendMemo, combineMemo,
spaces, invites, credits, pagination, transcription callbacks, etc.).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 15:43:05 +02:00
Till JS
1007c1e82b style: apply prettier formatting to manascore docs, todo web, and auth-ui pages
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 15:28:30 +02:00
Till JS
b684ddeeda feat(calendar, contacts, todo): add server API tests with vitest
Calendar: 13 tests (RRULE expansion, ICS parsing, health endpoint).
Contacts: 11 tests (vCard import, avatar upload, health endpoint).
Todo: admin, reminders, and RRULE route tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 15:27:58 +02:00
Till JS
293fd7b63b update(manascore): bump Memoro from 58 to 72 (Beta → Production)
Reflect completed improvements: Zod validation, ApiResult responses, pagination,
analytics tracking, error tracking, CI/CD, rate limiting, error boundaries.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 15:18:55 +02:00
Till JS
1bc134ed6e feat(memoro/web, shared-utils): add MemoroEvents analytics tracking
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>
2026-04-01 15:18:30 +02:00
Till JS
304c1e8b7c feat(memoro/server): add Zod validation, consistent ApiResult responses, and pagination
- 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>
2026-04-01 15:18:07 +02:00
Till JS
3c47997598 docs(manascore): add Memoro audit report (58/100 Beta)
Comprehensive ManaScore assessment covering all 8 categories with actionable recommendations.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 14:56:41 +02:00
Till JS
a03de84e79 update(calendar/server): integrate shared-hono middleware and rate limiting
Use authMiddleware, healthRoute, errorHandler, notFoundHandler, and rateLimitMiddleware from shared-hono.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 14:56:15 +02:00
Till JS
7b7a00a538 feat(contacts): add landing page + avatar upload and vCard import on server
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>
2026-04-01 14:56:08 +02:00
Till JS
90f6c0db39 feat(memoro): add transcription fallback chain, AI provider fallbacks, and error tracking
Audio: WhisperX → Azure Realtime → FFmpeg → Azure Batch fallback chain with diarization.
Server: mana-llm → Gemini → Azure OpenAI fallback, rate limiting middleware.
Web: GlitchTip error tracking, error page, security headers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 14:55:52 +02:00
Till JS
bee8bcb234 feat(todo): add reminders with background worker and notification dispatch
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>
2026-04-01 14:55:42 +02:00
Till JS
cb85fba820 feat(todo/web, shared-i18n): complete i18n for Todo web app + add missing common translations
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>
2026-04-01 14:19:48 +02:00