Commit graph

1355 commits

Author SHA1 Message Date
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
Till JS
1570cc0bb4 feat(shared-auth-ui): add GuestRegistrationNudge + complete feature texts + improve seed data
- Add GuestRegistrationNudge component: shows a floating banner after
  X minutes of guest usage to encourage sign-up (bottom-center, dismissible)
- Add guestNudge.ts utilities (session tracking, delay, dismiss via localStorage)
- Add feature texts for all 16 missing apps in GuestWelcomeModal
- Integrate nudge in Todo app as reference implementation (3min delay)
- Improve SkillTree seed: 3 skills across branches, 6 activities, 1 achievement
- Improve Zitare seed: 5 favorites, 2 themed lists instead of 1

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 12:16:55 +02:00
Till JS
4d0e9a6a3f feat: add Cmd+K spotlight actions to all 23 apps
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>
2026-04-01 12:11:34 +02:00
Till JS
075e204b14 fix(manacore/landing): improve footer layout and readability
- 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>
2026-04-01 12:09:28 +02:00
Till JS
ffd608cbb9 feat(shared-ui, manacore/web): cross-app navigation enhancement (3 phases)
Phase 1: Enhanced App Drawer in PillNavigation
- appNavigationStore: localStorage-backed favorites, recents, usage counts
- AppDrawer: replaces PillDropdown for apps with search, favorites, recents, grid
- All apps using PillNavigation get this automatically

Phase 2: Cmd+K Command Palette (GlobalSpotlight)
- GlobalSpotlight: modal with app search, quick actions, keyboard navigation
- useGlobalSpotlight: Cmd+K / Ctrl+K keyboard listener
- Integrated into PillNavigation via optional spotlightActions prop

Phase 3: Improved /home page
- AppRow: horizontal scrollable app row for favorites/recents with pin toggle
- ActivityFeed: cross-app timeline (completed tasks, upcoming events, contacts)
- Replaced hardcoded 3-category layout with dynamic favorites, recents, activity
  feed, and usage-frequency sorted app grid

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 11:59:36 +02:00
Till JS
4dfa2cc899 update(manacore/landing): sync footer with actual production deployment
- Add 6 missing deployed apps (Calc, Arcade, SkillTree, CityCorners, Inventar, Taktik, uLoad, Matrix)
- Remove Planta (not deployed) and NutriPhi (archived)
- Add status.mana.how to monitoring links
- Add Cards + CityCorners landing pages
- Align status labels with requiredTier from mana-apps.ts (beta/alpha)
- Fix typo: Souveranitat → Souveränität

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 11:59:33 +02:00
Till JS
6d5d5283b7 fix(memoro/web): replace $user with authStore.user (Svelte 5 runes)
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>
2026-04-01 11:52:47 +02:00
Till JS
75a3ea2957 refactor: rename ManaDeck to Cards across entire monorepo
Rename the flashcard/deck management app from ManaDeck to Cards:
- Directory: apps/manadeck → apps/cards, packages/manadeck-database → packages/cards-database
- Packages: @manadeck/* → @cards/*, @manacore/manadeck-database → @manacore/cards-database
- Domain: manadeck.mana.how → cards.mana.how
- Storage: manadeck-storage → cards-storage
- Database: manadeck → cards
- All shared packages, infra configs, services, i18n, and docs updated
- 244 files changed, zero remaining manadeck references

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 11:45:21 +02:00
Till JS
29b77f22e4 refactor(status-page): show tier badges inline instead of separate section
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>
2026-04-01 11:44:38 +02:00
Till JS
9d77f12c1e feat(memoro/web): add Dockerfile + docker-compose for production deployment
- 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>
2026-04-01 11:42:41 +02:00
Till JS
3fa218cbe0 chore(memoro): remove old NestJS backends (Phase 8+9)
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>
2026-04-01 11:21:03 +02:00
Till JS
d097a9d8f0 fix(manacore/web): add sync server URL build arg to Dockerfile
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>
2026-04-01 10:56:17 +02:00
Till JS
aa645c28fd feat(memoro/server): port meetings module to Hono/Bun (Phase 7)
- services/meetings.ts: proxy service for meeting-bot API + direct Supabase
  queries (bots, recordings, signed URLs, credit updates)
- routes/meetings.ts: authenticated routes — create/list/get/stop bots,
  list/get recordings, convert recording to memo via internal /api/v1/memos
- routes/meetings-webhooks.ts: HMAC-verified webhook handler for
  recording.completed / recording.failed events, in-memory idempotency
- index.ts: mount /api/v1/meetings (auth) and /meetings/webhooks (HMAC)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 10:55:03 +02:00
Till JS
3f0811043e feat(todo): refactor inline title editing + kanban subtask DnD
- TaskItem: switch title editing to <input>-based pattern (isEditingTitle
  state, single-click to start, blur/Enter saves, Escape cancels)
- KanbanTaskCard: contenteditable span for title editing (blur-to-save),
  add ArrowsOutSimple detail button (hover-only), inline subtask DnD
  with shadow placeholder handling and dropInProgress guard
- SubtaskList: fix DnD reactivity loop — use $state instead of $derived
  for items, add SHADOW_PLACEHOLDER_ITEM_ID filter, dropInProgress flag

fix(guides): remove non-existent allAppsHref prop from PillNavigation
fix(memoro): extend Memory interface with memo_id, timestamps, nullable types

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 22:23:31 +02:00
Till JS
16057964a6 fix(memoro/web): declare new env vars in app.d.ts
- Add PUBLIC_MEMORO_SERVER_URL, PUBLIC_MANA_CORE_AUTH_URL[_CLIENT]
- Add PUBLIC_APPLE_CLIENT_ID, PUBLIC_APPLE_REDIRECT_URI (were missing)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 22:03:19 +02:00
Till JS
71db334028 feat(guides): PillNavigation + public shared guide route
- 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>
2026-03-31 22:00:31 +02:00
Till JS
8a7efdd654 fix(memoro/audio-server): resolve TypeScript errors
- tsconfig: add allowImportingTsExtensions for .ts import paths (Bun pattern)
- transcription: cast Azure response.json() to typed parameter via Parameters<>

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 22:00:16 +02:00
Till JS
62597707b3 fix(memoro/server): resolve all TypeScript strict mode errors
- Add Hono<{ Variables: AuthVariables }> typing to all authenticated route files
- Conditionally spread optional params to satisfy exactOptionalPropertyTypes
- Fix implicit any on catch handlers (err: unknown)
- Prefix unused _userId param in space service declineInvite
- Remove unused imports (handleTranscriptionCompleted, updateMemoProcessingStatus)
- shared-hono/credits: prefix unused _operation param in validateCredits

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 21:59:31 +02:00
Till JS
a02dceb51c feat(guides): ImportModal, share button, CLAUDE.md, server dev scripts
- ImportModal: 3-tab (URL/Text/AI) import UI with preview before saving
- Guide detail: share button → generates 7-day shareable link with copy-to-clipboard
- App layout: Import button in sidebar + dynamic ImportModal mount
- Library page: Import button in header (desktop), openImportGuide context
- Port corrected to 3027 (was 3025, conflict with CityCorners)
- CLAUDE.md: full project docs (routes, collections, env vars, phase status)
- Root package.json: dev:guides:server, updated dev:guides:app/local/full

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 21:42:26 +02:00
Till JS
ec0af64fd2 fix(memoro/web): fix broken authService.forgotPassword reference + add auth URL to env example
- login page: replace authService.forgotPassword (never imported) with authStore.resetPassword
- .env.example: add PUBLIC_MANA_CORE_AUTH_URL entries

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 21:41:25 +02:00
Till JS
e624756d66 feat(guides): Phase 3 — Hono/Bun server for web import and guide sharing
- 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>
2026-03-31 21:29:59 +02:00
Till JS
7f1c83f8b6 feat(guides): collection selector in guide modal, quick inline step add
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>
2026-03-31 21:26:07 +02:00
Till JS
1a999f8cca feat(guides): Phase 2 — step editor, edit mode, collection management
Guide detail page:
- Edit mode toggle (✏ Bearbeiten / ✓ Fertig)
- StepEditorModal: 5 step types, title, markdown content, checkable toggle
- Per-step controls in edit mode: edit, delete, reorder ↑↓ (on hover)
- Section management: add / delete sections in edit mode
- Unsectioned + sectioned steps both editable
- Empty state with CTA to enter edit mode
- Guide delete with confirmation dialog
- Run history shows mode icon (📜 scroll / 🎯 focus)

Collections page:
- CollectionEditModal: emoji, color, path vs library type
- Create collection from empty state and header button
- Edit/delete existing collections

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 21:23:47 +02:00
Till JS
8e496ff417 fix(memoro): migrate web services + add credits balance endpoint
- 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>
2026-03-31 21:20:52 +02:00
Till JS
a893b07b70 feat(guides): complete Phase 1 — auth routes, i18n, collection detail, import fixes
- Add auth routes: login, register, forgot-password, reset-password (teal branding)
- Add i18n setup with de/en locales
- Add version.ts and theme store
- Add collections/[id] detail page with path progress and per-guide actions
- Fix import naming conflict (guidesStore → dbStore alias in app layout)
- Fix BaseRecord inline imports → top-level imports in stores and components
- Fix authStore.getAccessToken() → getValidToken()
- Fix theme import to use local store wrapper
- Update plan doc: Phase 1 complete

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 21:16:16 +02:00
Till JS
6d2509c258 feat(memoro): add deployment infrastructure and migrate web services to new Hono server
- 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>
2026-03-31 20:16:54 +02:00
Till JS
6e0dd0c065 docs(devlog): add 2026-03-31 entry — Memoro, status.mana.how, Todo polish, infra 2026-03-31 20:15:56 +02:00
Till JS
0a9c38161b feat(guides): add mana guides app — step-by-step playbook app
New app at apps/guides/ with local-first architecture (Dexie.js + mana-sync).

- 5 collections: guides, sections, steps, collections, runs
- Library view: card grid with search, category & difficulty filters
- Guide detail: sections/steps overview, start-run buttons
- Run mode: scroll (all steps) + focus (one step at a time) with note support
- Collections view: learning paths with progress bars
- History view: all runs with timestamps and duration
- Guest seed: 3 demo guides (dev setup, pasta recipe, git basics)
- GuideCard with run-status indicator (○◑●⟳)
- GuideEditModal with emoji, color, difficulty, tags
- Registered in shared-branding: port 5200, teal #0d9488, guides.mana.how
- Plan doc: .claude/plans/mana-guides.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 20:12:36 +02:00
Till JS
5e4518b418 refactor(ui): unify LanguageSelector, ConfirmDialog, and AppSlider across apps
- 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>
2026-03-31 19:10:55 +02:00
Till JS
3ea2c03ab2 feat(todo): inline title editing + detail modal button on task items
- 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>
2026-03-31 19:06:55 +02:00
Till JS
29515e7c4d feat(memoro): add Hono/Bun server + audio-server (replaces NestJS)
Two new services replacing the NestJS backend + audio-backend:

- apps/memoro/apps/server/ (port 3015): main business logic
  - Memo creation, transcription orchestration, AI headline/Q&A
  - Space + invite management, credits, settings, cleanup
  - Uses @manacore/shared-hono authMiddleware (mana-auth JWT)
  - Service-role Supabase client with explicit user_id filters

- apps/memoro/apps/audio-server/ (port 3016): audio processing
  - 4-tier Azure Speech fallback (fast → retry → convert → batch)
  - FFmpeg conversion (PCM 16kHz mono WAV) via fluent-ffmpeg
  - Load balancing across up to 4 Azure Speech keys
  - Internal-only (X-Service-Key auth)

Auth proxy, space sync, and NestJS services not yet removed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 19:03:31 +02:00
Till JS
a0caa1f21d fix(manacore-web): fix login redirect flow
- 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>
2026-03-31 19:02:04 +02:00