- Add voice recording with MediaRecorder API
- Show recording indicator with duration
- Replace send button with microphone when input is empty
- Add audio player UI for voice messages with play/pause and progress
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create shared AuthGateModal component in @manacore/shared-auth-ui
- Migrate 4 apps to use shared component: chat, todo, contacts, calendar
- Remove duplicate local AuthGateModal components
- Support for 'save', 'sync', 'feature', 'ai' actions
- Built-in i18n (DE + EN) with custom translation support
- Optional migration info display for session data
- Uses Phosphor icons from @manacore/shared-icons
- Update CONSISTENCY_REPORT.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Display direct messages and group rooms directly below each other
with section headers instead of using a tab switcher.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add ability to resend verification email when login fails with
"Email not verified" error. Implemented across all 14 apps using
Mana Core Auth.
Changes:
- Add POST /api/v1/auth/resend-verification endpoint to mana-core-auth
- Add resendVerificationEmail method to shared-auth client
- Update LoginPage component with resend UI and translations
- Add resendVerificationEmail to all app auth stores
- Add translations for de, en, fr, es, it
- Add PlantaLogo to shared-branding
- Migrate planta login to shared LoginPage component
The PillNavigation is positioned at the bottom, so the content area
needs padding-bottom instead of padding-top.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add internationalization (DE + EN) to previously missing apps:
- todo: task management translations
- skilltree: skill/XP system translations
- nutriphi: nutrition tracking translations
- planta: plant care translations
- questions: research app translations
- matrix: chat client translations (layout integration)
Each app includes:
- svelte-i18n setup with SSR support
- localStorage persistence ({app}_locale pattern)
- i18n loading state in +layout.svelte
- German (default) and English translations
Updated CONSISTENCY_REPORT.md to mark i18n task as complete.
Also includes:
- mana-tts service placeholder files
Update lockfile and Dockerfile to include missing shared packages
required for PillNavigation integration.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add PillNavigation component from @manacore/shared-ui
- Create theme store with purple color scheme
- Add i18n support (DE/EN) with svelte-i18n
- Integrate theme switching, language selector, app switcher
- Add glassmorphic utility classes to app.css
- Update layouts to match other apps' navigation pattern
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update all web apps to use @manacore/shared-api-client
- Remove calendar's local base-client.ts (duplicate of shared package)
- Calendar: update todos.ts and birthdays.ts to use shared client
- Maintain backward compatibility with existing patterns:
- picture: fetchApi, uploadFile, uploadFiles functions
- nutriphi: apiClient class with throw-based errors
- planta: fetchApi function with {data, error} format
- questions/skilltree: apiClient with setAccessToken pattern
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add glassmorphic design system utilities
- Update Message component with gradient avatars and bubble design
- Update MessageInput with pill-shaped glassmorphic container
- Update RoomList with modern search and tabs
- Update RoomItem with card-style design
- Update RoomHeader with glass-style buttons
- Replace DaisyUI colors with semantic design tokens
- Add fade-in animations for messages
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update todo, contacts, storage web apps to use @manacore/shared-api-client
- Maintain backward compatibility with existing legacy wrappers
- Todo: apiClient wrapper for setAccessToken/getAccessToken pattern
- Contacts: fetchWithAuth/fetchWithAuthFormData wrappers
- Storage: toLegacyResponse wrapper for ApiResponse format
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Create unified API client for all web apps with:
- createApiClient factory function
- ApiResult<T> Go-style error handling
- HTTP methods: get, post, put, patch, delete, upload
- Auto token handling via getAuthToken callback
- Timeout support with AbortController
- Retry logic with exponential backoff
- Runtime URL injection for Docker
- FormData support for file uploads
Migrate clock app as proof of concept:
- Replace local fetchApi with shared createApiClient
- Update stores to use ApiError.message
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add multi-stage Dockerfile for matrix/web
- Add matrix-web service to docker-compose.macmini.yml
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add demo-questions.ts with sample questions and collection
- Update questionsStore to show demo data when not authenticated
- Update collectionsStore with demo mode support
- Add demo banner and GuestWelcomeModal to layout
- Block create/update/delete operations in demo mode
- Add SkillTreeLogo to shared-branding (emerald green theme)
- Add login, register, forgot-password pages using shared-auth-ui
- Initialize authStore in layout alongside skillStore
- Add shared-auth-ui, shared-i18n, shared-branding dependencies
- German translations as default
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update all 15 web apps to consistent dependency versions:
- @sveltejs/kit: ^2.47.1 (was mixed ^2.0.0 to ^2.47.1)
- svelte: ^5.41.0 (was mixed ^5.0.0 to ^5.41.0)
- svelte-check: ^4.3.3 (was mixed ^4.0.0 to ^4.3.3)
- typescript: ^5.9.3 (was mixed ^5.0.0 to ^5.9.3)
Benefits:
- Consistent type checking behavior across apps
- All apps benefit from latest Svelte 5 features
- Easier maintenance with unified versions
Migrate 4 web apps from @tailwindcss/postcss to @tailwindcss/vite:
- chat
- manadeck
- manacore
- presi
Changes per app:
- Replace @tailwindcss/postcss with @tailwindcss/vite in package.json
- Add tailwindcss() to vite.config.ts plugins array
- Delete postcss.config.js (no longer needed)
Benefits:
- Faster builds with native Vite integration
- Consistent build pipeline across all 14 web apps
- Simplified configuration (no separate PostCSS config)
- bot-services: Add registerAsync to AI, Calendar, Clock, Todo modules
- bot-services: Add convenience methods to ClockService for bot handlers
- bot-services: Make CreateEventInput.endTime optional with sensible defaults
- bot-services: Fix empty interface ESLint errors (use type aliases)
- questions-backend: Add missing schema columns (isDefault, sortOrder, deletedAt)
- questions-backend: Fix or() return type handling in question service
- questions-web: Add guard for undefined question ID in route params
- skilltree-web: Fix DBSchema type by not extending idb interface directly
- calendar-web: Fix Check icon prop (use weight instead of strokeWidth)
- matrix-mana-bot: Update clock handler to use new service methods
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Questions branding to shared-branding package (logo, colors)
- Create QuestionsLogo.svelte component
- Refactor login page to use shared LoginPage component
- Refactor register page to use shared RegisterPage component
- Refactor forgot-password page to use shared ForgotPasswordPage component
- Fix Svelte 5 class: directive on components (+page.svelte)
The Questions app now uses the same auth UI as Calendar, Chat, and other apps.
- Remove :ro flag from volume mounts (SearXNG needs write access)
- Simplify limiter.toml to match current SearXNG schema
- Disable link_token for API usage without browser
Add "Sign in with Mana Core" button to Matrix web login page.
This allows users to authenticate via SSO instead of entering
Matrix credentials directly.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add SKILLTREE_BACKEND_PORT and DATABASE_URL to .env.development
- Add port 5195 to CORS_ORIGINS
- Add skilltree backend/web entries to generate-env.mjs
- Fix nested button error in SkillTemplates.svelte
- Add API client for backend communication
- Add skills and activities API modules
- Add auth store with Mana Core Auth integration
- Update skills store to use API when authenticated
- Keep IndexedDB as offline fallback
- Add hooks.server.ts for runtime env injection
https://claude.ai/code/session_015XCsTDS9aLZ64Zin4HU6ex
- Add matrix-mana-bot to docker-compose.macmini.yml
- Add setup-mana-bot.sh script for bot registration
- Add dev:matrix:* scripts to root package.json
- Add devlog entry documenting the new architecture
The gateway bot is now ready for deployment alongside
the existing standalone Matrix bots.
https://claude.ai/code/session_015bwcqVRiFmSydYTjvDJGTc
Complete web app implementation with Svelte 5 runes:
Features:
- Authentication: Login, register pages with mana-core-auth integration
- Question List: Filterable list with search, status, and collection filters
- Question Detail: View research results and sources
- New Question: Create questions with depth selection and auto-research
- Collections Sidebar: Navigate and organize questions by collection
- Dark Mode: Full theme support with toggle
Structure:
- src/lib/api/: API clients for all backend endpoints
- src/lib/stores/: Svelte 5 reactive stores (auth, questions, collections)
- src/lib/types/: TypeScript interfaces
- src/routes/(app)/: Protected app routes
- src/routes/(auth)/: Public auth routes
Configuration:
- Port: 5111
- Tailwind CSS with shared theme
- lucide-svelte icons
Also updated:
- CLAUDE.md: Added web app documentation
- package.json: Updated dev:questions:full to include web
https://claude.ai/code/session_01Rk3YVJCU3nM8uvVPghRz6r
- Add NestJS backend with Drizzle ORM and PostgreSQL
- Implement skills CRUD API with XP/level progression system
- Add activities tracking endpoint
- Configure Docker containers for backend (port 3024) and web (port 5195)
- Add skilltree services to docker-compose.macmini.yml
- Add CI build jobs for skilltree-backend and skilltree-web
https://claude.ai/code/session_015XCsTDS9aLZ64Zin4HU6ex
File Upload & Media:
- Send images, videos, audio, and files
- Display media in timeline with thumbnails
- Download links for files
- Upload progress indicator
Message Actions:
- Reply to messages with quote preview
- Edit own text messages
- Delete (redact) own messages
- React with emoji (store only, UI pending)
Room Management:
- Create room dialog (DM or group)
- User search and invite
- Room settings panel with member list
- Leave room functionality
UI Improvements:
- German translations
- Message hover actions
- Reply/Edit preview in input
- Date separators in timeline
https://claude.ai/code/session_01RUrt2qN1D3nVh9HcGpwoby
Complete backend implementation for the AI-powered research assistant app:
Database Schema (Drizzle ORM):
- collections: Organize questions into folders with colors and icons
- questions: User questions with status, priority, tags, and research depth
- research_results: Results from mana-search service with summaries and key points
- sources: Extracted content from web search results
- answers: AI-generated answers with ratings and citations
NestJS Modules:
- QuestionModule: CRUD operations with filtering, pagination, and status management
- CollectionModule: Collection management with reordering and question counts
- ResearchModule: Integration with mana-search microservice for web search
- AnswerModule: Answer management with ratings and acceptance tracking
- SourceModule: Source content retrieval and management
- HealthModule: Health checks for database and search service
Features:
- Full JWT authentication via @manacore/shared-nestjs-auth
- Research depths: quick (5 sources), standard (15), deep (30)
- Automatic content extraction and summarization
- Follow-up question generation
Also updated:
- Root package.json: Added questions:* development scripts
- setup-databases.sh: Added questions database setup
https://claude.ai/code/session_01Rk3YVJCU3nM8uvVPghRz6r
- Edit skill modal with delete confirmation
- Animated level-up celebration with particles
- Skill templates for quick onboarding (Web Dev, Fitness, Languages, etc.)
- Radial skill tree visualization (/tree)
- Export/import functionality for data backup
- Tree view link in header
https://claude.ai/code/session_015XCsTDS9aLZ64Zin4HU6ex
- Add GET /api/auth/reset-password/:token endpoint to handle email links
- Create password-reset-redirect store to track source app URLs
- Include callbackURL in reset emails for proper app redirection
- Add redirectTo parameter to forgotPassword in shared-auth
- Create /reset-password page in calendar app with DE/EN translations
- Update calendar authStore with resetPasswordWithToken method
Fixes 404 error when clicking password reset link from email
- Remove localhost:3018 pattern from service worker cache strategies
- Update auth store to only use localhost fallback in development mode
- Bump service worker cache version to v3 to force update
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add backend Dockerfile with multi-stage build and health checks
- Add web Dockerfile with SvelteKit static env vars
- Add docker-entrypoint.sh for automatic DB migration
- Add nutriphi-backend and nutriphi-web to docker-compose.macmini.yml
- Add CI/CD detection and build jobs for nutriphi
- Update CORS origins in mana-core-auth to include nutriphi.mana.how
- Include nutriphi in deploy:landing:all script
Ports: Backend 3023, Web 5189
Domain: nutriphi.mana.how / nutriphi-api.mana.how
- Add PUBLIC_STT_URL to hooks.server.ts runtime injection
- Update stt.ts to use runtime-injected URL with fallback
- Update .env.development to use production STT URL
- Update generate-env.mjs with STT URL mapping
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove broken header links to non-existent settings/profile pages
- Replace header links with settings page link
- Remove TODO comments for credit system in analysis controller
- Add comprehensive error handling with German messages in meals store
- Add loading states, retry buttons, and error displays in UI components
- Create new settings page with daily goals editor
- Add 99 tests across backend, web, and shared packages:
- Backend: MealService, GoalsService, StatsService, FavoritesService,
RecommendationsService, nutrition.utils (Jest)
- Web: API client tests with mocks (Vitest)
- Shared: utility function tests (Vitest)
- Set up test infrastructure (Jest for NestJS, Vitest for SvelteKit)