Commit graph

21 commits

Author SHA1 Message Date
Till-JS
ff56030b72 fix(matrix): enable independent scrolling for panels
Change layout container from min-height to fixed height with overflow
hidden to allow left panel (room list) and right panel (chat messages)
to scroll independently.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 16:20:23 +01:00
Till-JS
33073ab8ac feat(matrix): add room invitations UI with accept/decline
- Add membership and inviter fields to SimpleRoom type
- Track room membership status in store
- Add invitedRooms derived property
- Show invites section in RoomList with accept/decline buttons

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 16:13:52 +01:00
Till-JS
d37f5894dc fix(matrix): validate lastMessageTime before formatting in RoomItem
Add date validation to prevent "Invalid time value" errors when rooms
have invalid or zero timestamps.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 16:08:06 +01:00
Till-JS
56d49f8fe2 fix(matrix): handle invalid timestamps gracefully
Add validation before formatting dates to prevent "Invalid time value" errors
when messages have undefined or invalid timestamps.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 16:04:50 +01:00
Till-JS
7442b09471 fix(matrix): wait for i18n to load before rendering
Prevents "Cannot format a message without first setting the initial locale"
error by showing a loading state until svelte-i18n is ready.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 16:02:26 +01:00
Till-JS
cdac341882 ♻️ refactor: centralize global error handler in shared-ui
Extract setupGlobalErrorHandler() utility from contacts app and add to
@manacore/shared-ui. Migrate 7 apps to use the shared implementation:
calendar, chat, clock, contacts, matrix, picture, storage.

Features:
- Catches unhandled promise rejections with error classification
- Handles offline/online network status changes
- Built-in i18n (DE + EN) with customizable translations
- Optional onAuthError callback for redirect handling
- Returns cleanup function for proper unmounting
2026-01-29 15:17:17 +01:00
Till-JS
aca66b2014 feat(matrix): add voice note recording and playback
- 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>
2026-01-29 15:12:44 +01:00
Till-JS
0d559c99d6 feat(matrix): show DMs and rooms as sections instead of tabs
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>
2026-01-29 14:56:28 +01:00
Till-JS
f911243bf0 fix(matrix): use padding-bottom for bottom navigation
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>
2026-01-29 14:52:56 +01:00
Till-JS
d492212261 fix(matrix): use valid theme variant 'lavender' instead of 'purple'
The theme variant 'purple' doesn't exist - valid variants are:
lume, nature, stone, ocean, sunset, midnight, rose, lavender

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 14:49:14 +01:00
Till-JS
5a0815708c 🌐 feat: add i18n support to 6 web apps
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
2026-01-29 14:48:35 +01:00
Till-JS
a938ed86d4 fix(matrix): add shared-branding and shared-ui to Dockerfile
Update lockfile and Dockerfile to include missing shared packages
required for PillNavigation integration.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 14:43:41 +01:00
Till-JS
cc130ccb24 feat(matrix): add PillNavigation and theming integration
- 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>
2026-01-29 14:41:59 +01:00
Till-JS
75b5fb2fae feat(matrix): update web app design to match chat app
- 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>
2026-01-29 14:31:56 +01:00
Till-JS
2b3210df85 chore(matrix): add Dockerfile and docker-compose config for web app
- 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>
2026-01-29 14:08:19 +01:00
Till-JS
f3424c26aa ⬆️ chore: standardize web app dependencies
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
2026-01-29 13:49:55 +01:00
Till-JS
b89749deed ♻️ refactor: migrate all web apps to Phosphor icons
Replace lucide-svelte with @manacore/shared-icons across all web apps
for consistent icon usage throughout the monorepo.

Apps migrated:
- calendar (12 files)
- contacts (1 file)
- matrix (16 files)
- nutriphi (7 files)
- presi (6 files)
- questions (9 files)
- skilltree (9 files)
- storage (16 files)
- todo (package.json only)

Key icon mappings:
- Trash2 → Trash
- ChevronLeft/Right/Up/Down → CaretLeft/Right/Up/Down
- Search → MagnifyingGlass
- Settings → Gear
- Loader2 → CircleNotch
- AlertCircle → WarningCircle
- ExternalLink → ArrowSquareOut
- LogOut → SignOut
2026-01-29 13:15:13 +01:00
Till-JS
677eb823e3 🐛 fix(mana-search): fix SearXNG docker config for local development
- 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
2026-01-29 13:07:21 +01:00
Till-JS
176aa052b9 feat(matrix-web): add SSO login button for Mana Core
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>
2026-01-29 13:02:58 +01:00
Claude
c9f3d8ae47
feat(matrix): add Phase 2 features
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
2026-01-28 23:54:24 +00:00
Claude
4e622a66de
feat(matrix): add SvelteKit Matrix client (Phase 1)
Implements a minimal self-hosted Matrix chat client with:
- matrix-js-sdk integration with Svelte 5 runes store
- Password login with homeserver discovery
- Room list (DMs and groups) with unread counts
- Message timeline with typing indicators
- Send messages with Enter key
- Responsive chat UI with Tailwind CSS

Project structure:
- apps/matrix/apps/web: SvelteKit client (port 5180)
- apps/matrix/packages/shared: Shared types

Commands: pnpm dev:matrix:web

https://claude.ai/code/session_01RUrt2qN1D3nVh9HcGpwoby
2026-01-28 20:21:13 +00:00