MP3 format was causing "no supported sources" error in Element.
Switch to WAV which has broader browser/client support.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Store recently used emojis in localStorage (max 16 = 2 rows)
- Display "Häufig benutzt" section at top of emoji picker
- Most recently used emoji moves to front of list
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Matrix Media API now requires authentication (spec v1.11+). Updated
all 5 affected bots to use downloadMedia() from BaseMatrixService which
handles authenticated downloads via /_matrix/client/v1/media/download/.
Affected bots:
- matrix-nutriphi-bot (images + audio)
- matrix-zitare-bot (audio)
- matrix-todo-bot (audio)
- matrix-ollama-bot (images)
- matrix-project-doc-bot (images + audio)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Umami API returns stats in a different format than expected:
- Before: { pageviews: { value, change } }
- After: { pageviews: number, comparison: { pageviews: number } }
Transform the raw API response to the expected format and calculate
percentage change from comparison values.
Also update URL_SCHEMA.md with complete list of all mana.how services.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Hide empty DM/room sections in sidebar when no messages available
- Redesign message input to WhatsApp style (attachment left, emoji in field, mic right)
- Add emoji picker with native mobile fallback and desktop grid picker
- Use Phosphor icon size prop for consistent rendering
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add TTS_API_KEY config option to configuration.ts
- Send X-API-Key header in TtsService requests
- Update docker-compose.macmini.yml with TTS_INTERNAL_API_KEY env var
- Update .env.example and CLAUDE.md documentation
The mana-tts service requires authentication, but the TTS bot was not
sending the required X-API-Key header, causing 401 errors.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add DropZoneOverlay component with visual feedback
- Implement drag events on desktop and mobile chat pages
- Support multi-file upload (files uploaded sequentially)
- Show overlay only when a chat room is selected
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Feb 12: GDPR Self-Service, Matrix Mobile UX, Mac Mini Stability
- Feb 13: Gift Codes, Stripe Integration, Zitare Deployment
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove duplicate route prefix in GiftsController (was /api/v1/api/v1/gifts)
- Fix JwtAuthGuard to use JWT_ISSUER as fallback when BASE_URL is not set
- Add comprehensive GIFT_CODES.md documentation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add gift code creation, redemption, and refund endpoints
- Add Stripe payment link generation for credits
- Add gifts database schema
- Enhance credits controller with new operations
- Add CreditService with balance checking and consumption
- Add GiftService for gift code creation and redemption
- Add i18n support for credit/gift messages (DE/EN)
- Add Matrix bot mixins for credit and gift commands
- Add avatar upload to EditProfileModal with presigned URL flow
- Create onboarding wizard with 5 steps: Welcome, Profile, Apps, Credits, Complete
- Add onboarding store with localStorage persistence
- Integrate wizard into app layout (shows for new users)
- Update MANACORE-TODOS.md to mark completed tasks
Fix Dockerfile to include all required shared packages and add
health endpoint for Docker healthcheck. Enable skilltree-web
service in docker-compose.macmini.yml.
- Increase resize handle height from 8px to 20px with visual grip indicator
- Show live time preview during resize operations
- Add drag-to-create functionality: click and hold on empty cell to drag and create events with custom duration
- Fix zitare TypeScript errors (SearchResultItem -> QuickInputItem, createUserSettingsStore API)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Profile Features:
- EditProfileModal for name changes
- ChangePasswordModal with validation
- DeleteAccountModal with email confirmation
Subscription Features:
- Full subscription page at /subscription
- Plan comparison with monthly/yearly toggle
- Stripe Checkout integration
- Billing portal access
- Invoice history display
Credits Features:
- Stripe Checkout integration for credit purchases
- Loading states and toast notifications
- Success/error handling with URL params
API Services:
- profile.ts: getProfile, updateProfile, changePassword, deleteAccount
- subscriptions.ts: getPlans, getCurrentSubscription, createCheckout, etc.
- credits.ts: added initiatePurchase method
Also includes German/English i18n translations.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add PillTagSelector component for tag selection in navigation
- Remove separate TagStrip bar (saves 70px vertical space)
- Add tag-selector support to PillNavigation element rendering
- Remove hasTagStrip prop from DateStrip/DateStripFab components
- Export PillTagSelector and types from shared-ui
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add new dashboard widget showing storage usage stats:
- Total storage used and file count
- Recent files list with icons
- Link to open Storage app
Backend changes:
- Add GET /api/v1/files/stats endpoint to storage backend
- Returns totalFiles, totalSize, favoriteCount, recentFiles
Frontend changes:
- Add storageService API client
- Add StorageUsageWidget component
- Add i18n translations (de/en)
- Register widget in dashboard types and container
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add backend endpoints for user profile management:
- GET /auth/profile - retrieve user profile data
- POST /auth/profile - update name and profile image
- POST /auth/change-password - change password (requires current)
- DELETE /auth/account - soft-delete account (requires password)
Security features:
- Password verification before sensitive actions
- Soft-delete preserves data for retention
- Security events logged for audit trail
- Rate limiting on sensitive endpoints
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add padding-top (1rem) and padding-bottom (200px) to time-column and day-column
- Ensures content can be scrolled past the bottom UI (PillNav, InputBar, etc.)
- Applied to DayView, WeekView, and MultiDayView
- Remove credit display from responses (credits still charged)
- Remove "Synchronisiert" text (sync still works)
- Use sendMessage instead of sendReply to avoid quoting user ID
- Simplify status output
- Use cleaner formatting with dots instead of pipes
- Hide tasks in calendar by default on app load (not persisted from sessions)
- Auto-scroll to current hour when loading DayView, WeekView, MultiDayView
- Center current hour in viewport for immediate visibility
- Exclude task/sidebar settings from cloud sync to ensure clean initial state
- Add touch-based swipe-back handler for edge swipes from left
- Show visual indicator (arrow + progress bar) during swipe
- Use history.back() for proper navigation history handling
- Only activate in 30px left edge zone to avoid scroll conflicts
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix datenschutz link to point to manacore-landing.pages.dev
- Update hosting info to reflect own infrastructure in Germany
- Add Cloudflare CDN section
- Update analytics section with Umami details (no cookies)
- Change email domain from mana.ai to mana.how
- Remove archived Memoro app section
- Update date to February 2026
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change sidebarCollapsed default to true (tasks hidden by default on mobile)
- Add leftAction snippet slot to InputBar component
- Move VoiceRecordButton inside InputBar instead of floating position
- Remove obsolete voice-button-wrapper styles
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Dockerfile for production build
- Add docker-entrypoint.sh for runtime config
- Add hooks.server.ts for client-side env injection
- Add zitare-web service to docker-compose.macmini.yml
- Port 5012
- Depends on zitare-backend
- Health check on /health endpoint
mana-core-auth has a double prefix (/api/v1/api/v1/auth) due to
global prefix + controller prefix. Update SessionService to use
the correct paths.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Dockerfile for zitare-backend (multi-stage build, port 3007)
- Add docker-entrypoint.sh for database setup
- Add zitare-backend service to docker-compose.macmini.yml
- Update matrix-zitare-bot to depend on zitare-backend
- Add zitare-backend to CI workflow (change detection + build job)