Commit graph

690 commits

Author SHA1 Message Date
Till-JS
ea0bf67f0d 🎨 style(matrix): fix RoomSettingsPanel styling to match app theme
Replace DaisyUI classes with the custom glassmorphic theme:
- Use bg-white/80 dark:bg-black/80 with backdrop-blur
- Use border-black/10 dark:border-white/10 for borders
- Use text-foreground and text-muted-foreground for text
- Add gradient avatars matching rest of app
- Fix tab styling with proper active states

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-16 11:25:54 +01:00
Till-JS
376ba8279d feat(matrix): add widget support to Manalink client
Add the ability to view and interact with Matrix widgets in the room
settings panel. Widgets are displayed in a new "Widgets" tab with
collapsible iframes.

- Add RoomWidget type to types.ts
- Add getRoomWidgets() and buildWidgetUrl() methods to store
- Add Widgets tab to RoomSettingsPanel with iframe display
- Handle Matrix variable substitution ($matrix_user_id, $matrix_room_id)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-16 11:16:27 +01:00
Till-JS
78c7383d54 feat(lightwrite): add Beat/Lyrics Editor app
- Add NestJS backend with project, beat, marker, lyrics, export modules
- Add SvelteKit web app with wavesurfer.js waveform visualization
- Add BPM detection using Web Audio API peak detection
- Add marker timeline for parts, hooks, bridges
- Add lyrics editor with timestamp sync
- Add export to LRC, SRT, JSON formats
- Add shared-storage support for lightwrite
- Fix mana-core-auth env loading (add dotenv before validation)
- Add lightwrite to setup-databases.sh
- Fix matrix-onboarding-bot type errors (displayName → fullName)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-16 11:13:08 +01:00
Till-JS
7b2ae94474 💄 fix(onboarding): use correct elevation layer colors for modal 2026-02-16 10:48:01 +01:00
Till-JS
d7ce61565f 💄 style(onboarding): convert fullscreen to compact modal 2026-02-16 10:41:44 +01:00
Till-JS
32f84678f9 feat(calendar): unify view switcher into new ViewsBar component
- Add new ViewsBar component with same design as InputBar
- Position ViewsBar next to InputBar (left on desktop, above on mobile)
- Remove view switcher from PillNavigation prependElements
- Remove PillViewSwitcher from CalendarToolbarContent
- Clean up unused imports and code from layout

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-16 00:07:49 +01:00
Till-JS
5ef04eabb2 🐛 fix(nutriphi-backend): change user_id from uuid to text
Better Auth generates string IDs, not UUIDs. Updated schema to match
other apps like Calendar that use text for user_id.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 13:44:05 +01:00
Till-JS
c8ab4bbcbe 🐛 fix(nutriphi-web): fix i18n hydration error
- Don't call $t() before i18n is loaded
- Use loading spinner instead of translated text during load
- Conditionally render title in svelte:head

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 13:39:35 +01:00
Till-JS
db7f2dfe08 🐛 fix(nutriphi-web): add shared-api-client to Dockerfile
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 13:32:52 +01:00
Till-JS
1052dcafca 🐛 fix(nutriphi-web): add missing shared packages to Dockerfile
Add shared-vite-config and shared-tsconfig to Dockerfile COPY statements

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 12:50:01 +01:00
Till-JS
8dad8a8302 🐛 fix(manacore-web): use runtime auth URL instead of hardcoded localhost
Added shared config.ts with getManaAuthUrl() that reads the auth URL from
window.__PUBLIC_MANA_CORE_AUTH_URL__ (injected by hooks.server.ts) instead
of hardcoded localhost:3001. Fixes API calls failing on production.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 12:47:40 +01:00
Till-JS
5025bfa883 fix(clock-bot): optimize widget styling for Element info panel
- Use transparent background to adapt to Element theme
- Remove min-height and centering (content starts at top)
- Reduce font sizes and spacing for compact display
- Use semi-transparent backgrounds for theme compatibility
- Add flex-wrap for narrow panels

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 12:46:19 +01:00
Till-JS
531ed3e215 📝 docs(nutriphi): update Gemini model version to 2.5 Flash
- Updated Technology Stack to reflect gemini-2.5-flash model
- Added note about getting API key from Google AI Studio

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 12:41:32 +01:00
Till-JS
c221f92da2 🩹 fix(nutriphi): update Gemini model from expired gemini-2.0-flash-exp to gemini-2.5-flash
The experimental model gemini-2.0-flash-exp no longer exists. Updated to
the stable gemini-2.5-flash model.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 12:06:40 +01:00
Till-JS
a4ef703761 feat(manacore): add gift code web UI
Add web interface for redeeming and managing gift codes:
- API service for all gift operations (create, redeem, list, cancel)
- Public preview page at /g/[code] for gift info before login
- Protected redemption flow with riddle support
- Dashboard with tabs: received gifts, created codes, create new
- Gift icon added to navigation and shared-ui
2026-02-14 12:01:24 +01:00
Till-JS
2521a1ea73 feat(matrix): sync recent emojis across apps via mana-core-auth
- Add recentEmojis field to GlobalSettings in shared-theme
- Create userSettings store for Matrix app with JWT token management
- Exchange session cookie for JWT after SSO login
- Update MessageInput to use userSettings instead of localStorage
- Add recentEmojis support to mana-core-auth settings API

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 11:30:17 +01:00
Till-JS
c843531595 feat(analytics): update Umami tracking IDs for all web apps
Update all 15 web apps with correct Umami website IDs:
- calendar, chat, clock, contacts, manacore, manadeck, picture, planta, todo: updated IDs
- zitare, storage, nutriphi, skilltree, photos, presi: added tracking

All IDs now match the websites configured in Umami.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 11:14:16 +01:00
Till-JS
aff2db9f9c feat(matrix): add recently used emojis section in emoji picker
- 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>
2026-02-14 11:08:31 +01:00
Till-JS
5e01c833ce feat(matrix): improve chat UI with WhatsApp-style input and emoji picker
- 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>
2026-02-14 11:02:36 +01:00
Till-JS
7c0bc735b9 feat(matrix): add drag & drop file upload to chat
- 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>
2026-02-14 10:55:13 +01:00
Till-JS
40a3c89852 📝 docs(devlog): add devlogs for Feb 12 and Feb 13
- 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>
2026-02-14 00:02:53 +01:00
Till-JS
ceebb5dda6 feat(zitare): add settings store and i18n updates 2026-02-13 23:29:50 +01:00
Till-JS
702a30b699 feat(todo): add settings store and improve layout 2026-02-13 23:29:45 +01:00
Till-JS
72ee715300 feat(manacore): enhance API keys management UI 2026-02-13 23:29:41 +01:00
Till-JS
5118235e0b feat(manacore): add avatar upload frontend and onboarding wizard
- 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
2026-02-13 23:18:10 +01:00
Till-JS
405084b52d 🔧 fix(skilltree): change web port to 5020 (5018 used by zitare) 2026-02-13 23:14:38 +01:00
Till-JS
1e025b7e72 feat(skilltree): enable web deployment
Fix Dockerfile to include all required shared packages and add
health endpoint for Docker healthcheck. Enable skilltree-web
service in docker-compose.macmini.yml.
2026-02-13 23:05:08 +01:00
Till-JS
23a1c5e539 feat(calendar): add larger resize handles, live time preview, and drag-to-create
- 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>
2026-02-13 23:03:23 +01:00
Till-JS
d3b0f9f38d feat(manacore): add profile, subscription, and credits frontend
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>
2026-02-13 22:46:25 +01:00
Till-JS
affcfe4614 feat(calendar): integrate TagStrip into PillNavigation dropdown
- 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>
2026-02-13 22:42:11 +01:00
Till-JS
7d1b4a40d2 feat(dashboard): add StorageUsageWidget
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>
2026-02-13 22:34:10 +01:00
Till-JS
6e7080c8c1 💄 fix(calendar): add padding to calendar views for bottom UI visibility
- 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
2026-02-13 22:11:49 +01:00
Till-JS
2200ed64e8 🚸 feat(calendar): auto-scroll to current hour and hide tasks by default
- 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
2026-02-13 22:05:35 +01:00
Till-JS
133615f2b5 feat(matrix): add swipe-back gesture for iOS PWA navigation
- 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>
2026-02-13 19:41:23 +01:00
Till-JS
ad8d5c3bc0 🔧 chore(zitare): change zitare-web port from 5012 to 5018
Port 5012 is used by calendar-web

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-13 19:40:50 +01:00
Till-JS
b5dde8e31d 📝 docs(dsgvo): update privacy policy and fix datenschutz link
- 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>
2026-02-13 19:37:04 +01:00
Till-JS
cdad7f5187 💄 fix(calendar): improve mobile UX - hide tasks by default, integrate mic in input bar
- 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>
2026-02-13 19:35:37 +01:00
Till-JS
e62782f627 🐛 fix(zitare): correct health check endpoint path in Dockerfile
Changed /api/health to /health to match actual endpoint

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-13 19:35:08 +01:00
Till-JS
09465fe36b 🔧 chore(zitare): add drizzle.config.ts for backend
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-13 19:31:25 +01:00
Till-JS
533bd90093 🚀 feat(zitare-web): add Docker deployment infrastructure
- 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
2026-02-13 14:49:26 +01:00
Till-JS
ef9bd5656d 🔧 debug(bot-services): add logging to getToken for SSO-Link debugging
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-13 14:06:37 +01:00
Till-JS
c54ff859d6 🚀 feat(zitare): add Docker deployment infrastructure
- 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)
2026-02-13 13:49:15 +01:00
Till-JS
ab15c2367b feat(gdpr): add DSGVO improvements for self-service data page
- Add account deletion confirmation email
- Extend data export with sessions, security events, transactions
- Add DSGVO info banner with privacy policy link
- Add data retention periods section
- Add cookie info (no tracking cookies)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-13 13:43:23 +01:00
Till-JS
431957ca05 📝 chore(zitare): complete metadata for all quotes
- Add missing year, source, and authorBio fields to all quotes
- Fix incorrect weis-1 quote (was Konfuzius, now Laozi with Tao Te King)
- Add new quotes: weis-9 (Konfuzius), liebe-6 (Saint-Exupéry), leben-7 (Horaz),
  erfolg-5/6 (Goethe, Sassoon), glueck-6 (Aristoteles), freund-5 (Cicero),
  mut-6 (Vergil), hoff-4/5 (Tutu, Cicero), natur-5/6 (Muir, Heraklit)
- Total: 60 quotes with complete multilingual metadata
- All author bios now include birth/death years
2026-02-13 13:40:36 +01:00
Till-JS
742aa0e046 feat(zitare): add multilingual support and expanded quote metadata
- Add 6-language support: original, de, en, it, fr, es
- Add quote metadata: source, year, tags, imageUrl, authorBio, verified
- Add originalLanguage field to preserve original quote language (la, el, zh, sa, etc.)
- Update all 50 quotes with full translations and metadata
- Add new utility functions: getQuoteText, getQuotesByTag, getAllTags,
  getQuotesByAuthor, getVerifiedQuotes, getQuotesByYearRange,
  getQuotesByOriginalLanguage
- Update matrix-zitare-bot to use new multilingual schema
2026-02-13 12:42:50 +01:00
Till-JS
d961508a81 🩹 fix(zitare): use proper German umlauts in quotes
Replace ASCII representations with actual umlauts:
- ae → ä, oe → ö, ue → ü, ss → ß
- Also fix author names (Saint-Exupéry, Kierkegaard, Linné)
2026-02-13 12:35:41 +01:00
Till-JS
74c1cfed4f feat(zitare): add @zitare/content package for shared quotes
- Create new @zitare/content package with 50 German quotes
- Include 10 categories: motivation, weisheit, liebe, leben, erfolg,
  glueck, freundschaft, mut, hoffnung, natur
- Add utility functions: getRandomQuote, getDailyQuote, searchQuotes,
  getQuotesByCategory, formatQuote, etc.
- Migrate matrix-zitare-bot to use the shared package
- Remove hardcoded quotes from bot configuration
2026-02-13 12:30:41 +01:00
Till-JS
e06622af30 🩹 fix(matrix): add mobile-web-app-capable meta tag 2026-02-13 12:23:01 +01:00
Till-JS
a373784954 💄 style(devlog): improve activity page design
- Show 90-day grid instead of 365 for better visibility
- Add month labels above the contribution grid
- Use European week start (Monday)
- Add animated hero section with gradient backgrounds
- Improve stat cards with hover effects and shadows
- Add secondary stats: Active Days, Commits/Day, Max Streak
- Make grid cells clickable to open respective devlog
- Add crown icon for top contributor
- Show percentage in contributor progress bars
- Add date badges to recent activity items
- Use glassmorphism effects and smooth animations
2026-02-13 12:21:01 +01:00
Till-JS
435d06a756 feat(matrix): implement WhatsApp-style mobile navigation
Mobile users now get a separate room list and chat view:
- /chat shows full-screen room list on mobile
- /chat/[roomId] shows full-screen chat with back button
- Desktop retains side-by-side layout unchanged
- Last room restore only happens on desktop
2026-02-13 12:08:23 +01:00