Commit graph

144 commits

Author SHA1 Message Date
Till-JS
188290b427 ♻️ refactor: migrate 15 web apps to @manacore/shared-vite-config
- Add missing packages to MANACORE_SHARED_PACKAGES list
- Migrate all SvelteKit apps to use createViteConfig/mergeViteConfig
- Matrix preserves special WASM config for matrix-js-sdk crypto
- Update consolidation docs with completed Vite config task

Savings: ~350 LOC (-318 net lines)
2026-01-29 16:47:55 +01:00
Till-JS
d0d2855adb 🔧 chore: create @manacore/shared-tsconfig and migrate 13 backends
- Create shared TypeScript config package with:
  - base.json: Common options (ES2021, skipLibCheck, etc.)
  - nestjs.json: NestJS backend config (decorators, commonjs)
  - sveltekit.json: SvelteKit web config
  - expo.json: Expo mobile config
  - astro.json: Astro landing config

- Migrate 13 NestJS backends to use shared config:
  calendar, chat, clock, contacts, nutriphi, picture, planta,
  presi, questions, skilltree, storage, todo, zitare

- Skip manadeck (uses nodenext module system)

Savings: ~280 LOC (13 backends × ~22 LOC each)
2026-01-29 16:38:57 +01:00
Till-JS
0c150df0f1 feat(auth): add resend verification email to all login pages
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
2026-01-29 14:55:49 +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
52c4206cb2 perf: migrate Tailwind from PostCSS to Vite plugin
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)
2026-01-29 13:45:42 +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
09b8d7b384 feat(auth-ui): show email verified banner on login pages
Add verified banner and email pre-fill to LoginPage component when
users are redirected after email verification. Updates all app login
pages to pass verification params from URL query string.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 01:31:55 +01:00
Till-JS
2ccd063628 feat(auth): redirect users to source app after email verification
Add sourceAppUrl tracking during registration to redirect users back
to the app they registered from after email verification. Includes
URL validation for security (only *.mana.how, mana.how, localhost).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 01:31:31 +01:00
Till-JS
2480d92699 🔧 chore(watchtower): try list format for telegram notification URL
Use list format for environment variables as suggested in shoutrrr
issue #45 to avoid YAML parsing issues with colon in bot token.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 10:14:30 +01:00
Till-JS
75ffd504bc fix(presi,storage): use adapter-node for Docker builds
Switch from @sveltejs/adapter-auto to @sveltejs/adapter-node for
presi-web and storage-web to enable proper Docker container builds.
adapter-auto cannot build correctly in Docker environment.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 17:47:49 +01:00
Till-JS
a12c7e5f32 feat(docker): add Dockerfiles for presi and storage apps
Add production-ready Dockerfiles for:
- presi-backend (port 3008)
- presi-web (port 5178)
- storage-backend (port 3019, with S3/MinIO)
- storage-web (port 5185)

Each backend includes docker-entrypoint.sh for auto-migrations.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 13:55:23 +01:00
Till-JS
36a9e3a37c feat: restore presi and storage apps from archive
Re-activate presi (presentation tool) and storage (cloud storage)
apps that were previously archived for context reduction.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 13:25:51 +01:00
Till-JS
44897ae758 chore: archive inventory, presi, storage apps
Move these apps to apps-archived/ as they are not actively developed:
- inventory: Inventory management app
- presi: Presentation tool
- storage: Cloud storage app

These can be reactivated by moving back to apps/ when needed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 15:22:38 +01:00
Till-JS
4a6d946f33 refactor(presi): reorganize routes into (app) and (auth) layout groups
Move authenticated routes into (app) layout group and auth routes
into (auth) layout group for better code organization.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 04:20:11 +01:00
Till-JS
bbe540c3f1 feat: add global start page setting across all apps
- Add GeneralSettings types (startPages, weekStartsOn, soundsEnabled)
- Create app-routes.ts with available routes for 12 apps
- Extend UserSettingsStore with general settings support
- Update GlobalSettingsSection with start page selector UI
- Add start page redirect logic to all app layouts:
  - Clock, Calendar, Todo, Zitare, Picture
  - Manadeck, Presi, Chat, Manacore
- Create user-settings stores for Clock and Todo apps

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 16:31:04 +01:00
Till-JS
ba746fce04 Merge branch 'main' of https://github.com/Memo-2023/manacore-monorepo 2025-12-03 11:57:30 +01:00
Wuesteon
ea3582d487 💄 style: apply prettier formatting across codebase
Run prettier --write to fix formatting inconsistencies in 80 files
across calendar, contacts, picture, presi, storage, zitare apps
and shared packages/documentation.
2025-12-03 02:02:09 +01:00
Till-JS
482509a574 🐛 fix(theme): add ShadCN-style CSS variable aliases for shared components
- Add aliases without color- prefix (--background, --foreground, --primary, etc.)
- Fix Mana/Subscription page styling across all apps
- Remove conflicting legacy aliases from contacts app.css
- Update contacts mana page to use toast instead of alert

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 00:20:49 +01:00
Till-JS
0e5d923faf feat(auth): add centralized user settings synced across all apps
- Add settings module to mana-core-auth with REST API endpoints
- Create user_settings table with globalSettings and appOverrides (JSONB)
- Add createUserSettingsStore() factory in shared-theme package
- Integrate user settings in all app layouts (calendar, chat, contacts, etc.)
- Support for nav position, theme, locale settings with per-app overrides
- Optimistic updates with localStorage caching for offline support
- Add comprehensive documentation in docs/USER_SETTINGS.md

API Endpoints:
- GET /api/v1/settings - Get all user settings
- PATCH /api/v1/settings/global - Update global settings
- PATCH /api/v1/settings/app/:appId - Set app override
- DELETE /api/v1/settings/app/:appId - Remove app override

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 00:09:47 +01:00
Till-JS
623b1a21b1 feat(landing): add Presi landing page and improve Zitare landing
- Create complete Presi landing page with Astro + Tailwind
- Orange theme (#f97316) matching Presi branding
- Use shared-landing-ui components (HeroSection, FeatureSection, FAQSection, CTASection)
- Add "How it works" section with 4-step guide
- Fix Zitare landing styling with proper Tailwind config
- Add CSS custom properties for consistent theming
- Add deploy:landing:presi script and update deploy:landing:all
- Add dev:presi:landing script

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 13:06:38 +01:00
Wuesteon
4cc1ad2c92 🔧 chore: fix turbo infinite recursion and update dependencies
- Remove recursive `turbo run type-check` from parent packages (chat, zitare, voxel-lava)
- Increase turbo concurrency from 2 to 5
- Add documentation for turbo anti-pattern in CLAUDE.md
- Skip type-check temporarily for apps with pending migrations
- Update picture mobile stores to use camelCase API response properties
- Add shared-nestjs-auth dependency to chat and picture backends
- Clean up unused design-token files from picture package
- Update shared-landing-ui components and feedback service config
2025-12-02 02:43:47 +01:00
Wuesteon
eb173217c1 fix(ci): remove nested turbo.json from presi
Root turbo.json already handles all tasks

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 00:03:31 +01:00
Wuesteon
0ebfde0851 fix(ci): build shared packages before tests and fix formatting
- Add build:packages step to all test.yml jobs (fixes @manacore/shared-nestjs-auth not found)
- Handle missing coverage artifacts gracefully in test-coverage.yml
- Update .prettierignore to exclude apps-archived/ and problematic files
- Format all source files to pass CI checks

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 23:15:00 +01:00
Wuesteon
5b0b3095ff 🔒️ feat(auth): centralize JWT validation and add deployment docs
- Migrate Chat, Picture, Presi, Zitare backends to shared auth guards
- Remove duplicate local JWT guards and decorators
- Add CD staging workflow for tagged releases
- Add comprehensive auth architecture documentation
- Add Hetzner deployment and Docker setup guides
- Add environment configuration audit docs
- Update env generation scripts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 20:44:45 +01:00
Wuesteon
942c588e15 🔒️ feat(auth): centralize JWT validation via mana-core-auth
- Create @manacore/shared-nestjs-auth package with JwtAuthGuard
- Update @mana-core/nestjs-integration to validate tokens via auth service
- Replace insecure local JWT decode with server-side validation
- Integrate Zitare, Presi, ManaDeck backends with centralized auth
- Add DEV_BYPASS_AUTH support for development mode
- Document auth architecture in CLAUDE.md
2025-12-01 17:16:21 +01:00
Till-JS
64c82a1d30 🐛 fix(presi): resolve auth token mismatch and add feedback navigation
- Align API client storage keys with @manacore/shared-auth (@auth/appToken)
- Update auth endpoints to use /api/v1/auth/* paths
- Add JWT_PUBLIC_KEY to backend env configuration
- Add Feedback link to PillNavigation
2025-12-01 15:35:56 +01:00
Till-JS
4e4db4612c feat(apps): add unified Apps page and PillNavigation to all web apps
- Add AppsPage component to shared-ui for displaying all Mana apps
- Add allAppsHref prop to PillNavigation with "Alle Apps" link in dropdown
- Integrate PillNavigation in archived apps (maerchenzauber, news, uload, wisekeep)
- Add /apps route to all web apps (active and archived)
- Replace custom sidebars/headers with unified PillNavigation

Apps updated:
- Active: chat, manacore, manadeck, picture, presi, zitare
- Archived: maerchenzauber, memoro, news, nutriphi, uload, wisekeep

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 14:48:00 +01:00
Till-JS
a09c389ede fix(picture): resolve hydration error and CORS issues
- Add ssr.noExternal config for @manacore packages with .svelte.ts files
  to ensure Svelte 5 runes are properly processed
- Fix CORS configuration to return Access-Control-Allow-Origin header
  by using callback function for origin validation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 14:14:08 +01:00
Till-JS
9a29a8e1ed feat: improve language switcher integration across all web apps
- Add language selector to PillNavigation in all apps
- Update LanguageSelector components to use shared-i18n utils
- Simplify AppSlider components
- Add getLanguageDropdownItems and getCurrentLanguageLabel utils

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 00:46:13 +01:00
Till-JS
2d17b720f8 feat(theme): add complete theme support to all web apps
- ManaCore: add /themes page, use bg-background, add themeMode props
- ManaDeck: fix bg-gray to bg-background, add themeMode/onThemeModeChange
- Picture: add themeMode/onThemeModeChange props
- Zitare: add themeMode/onThemeModeChange props
- Presi: add themeMode/onThemeModeChange props

All apps now support:
- Theme variant dropdown (Lume, Ocean, Nature, Ember)
- Light/Dark/System mode selector
- Dynamic background colors via CSS variables

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 00:36:47 +01:00
Till-JS
eab69c512c feat(i18n): add language picker and 5-language support to all auth screens
- Add svelte-i18n and @manacore/shared-i18n to Chat, Presi, Zitare
- Create LanguageSelector component for each app
- Add locale files for DE, EN, IT, FR, ES in all apps
- Update auth pages (login, register, forgot-password) to use shared translations
- Add headerControls snippet to RegisterPage and ForgotPasswordPage
- Export ZitareLogo and NutriPhiLogo from shared-branding

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 00:28:14 +01:00
Till-JS
9432a73a1f feat: integrate shared PageHeader and ProfilePage across all web apps
- Add backHref prop to PageHeader component for back navigation
- Integrate PageHeader in Chat app (archive, documents, spaces, templates)
- Integrate PageHeader in Picture app (board, generate, profile, tags, upload)
- Integrate PageHeader in Manacore app (dashboard, organizations, teams)
- Integrate PageHeader in Presi app (home, profile)
- Integrate PageHeader in Zitare app (authors, lists)
- Update Picture, Manadeck, Presi profiles to use shared ProfilePage
- Create new profile pages for Manacore and Zitare using shared ProfilePage
- Add profile navigation links to Manacore and Zitare
- Add Mana subscription pages to Presi and Zitare
- Fix shared-profile-ui tsconfig.json (remove invalid extends)
- Add @manacore/shared-profile-ui dependency to all web apps

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 00:06:29 +01:00
Till-JS
7deb5b9a1e feat(shared-ui): add reusable settings components with glass styling
- Add SettingsPage, SettingsSection, SettingsCard components
- Add SettingsRow, SettingsToggle for interactive elements
- Add SettingsDangerZone, SettingsDangerButton for destructive actions
- Apply glass morphism styling matching PillNavigation
- Migrate settings pages in manacore, presi, zitare apps
- Migrate archived apps: maerchenzauber, memoro, nutriphi, uload

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 13:22:12 +01:00
Till-JS
f436fbb99d feat(theme): migrate theme emojis to Phosphor icons and integrate theme system into Zitare
- Replace emoji with Phosphor icon components in ThemeCard
- Add icon property to ThemeVariantDefinition type
- Add theme icon SVG paths to PillDropdown (sparkle, leaf, hexagon, waves)
- Update all app layouts to use icon instead of emoji for theme variants
- Integrate shared-theme system into Zitare web app
- Migrate Zitare from Tailwind v3 to v4
- Add themes page to Zitare
- Update Zitare settings page with icon-based theme display
- Add missing shared-icons dependency to Presi and Zitare

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 09:24:32 +01:00
Till-JS
8a4cc298f6 feat(theme): add themes page to picture, manadeck, and presi apps
- Add dedicated /themes page with ThemePage component to all three apps
- Add theme variant dropdown with "Alle Themes" link in navigation
- Add keyboard shortcut 'T' for quick access to themes page
- Export PillNavElement type from shared-ui package

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 09:14:12 +01:00
Till-JS
54383bf7c2 feat(theme): add ThemePage components and distinct background colors
- Add unique background colors for each theme variant:
  - Lume: warm cream/gold tint
  - Nature: green tint in dark mode
  - Stone: blue-gray tint in dark mode
  - Ocean: blue tint in dark mode

- Create shared-theme-ui components:
  - ThemeColorPreview: color circles preview component
  - ThemeCard: individual theme card with status support
  - ThemeGrid: responsive grid layout
  - ThemePage: full page component with mode selector

- Integrate theme page in Chat app:
  - Add /themes route with ThemePage component
  - Add "🎨 Alle Themes" link to PillNavigation dropdown
  - Add palette icon to shared-ui icon set

- Migrate Presi and Picture apps to shared-theme system
- Update semantic color usage across all apps

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 09:03:20 +01:00
Till-JS
655da23d14 fix(presi): resolve CORS issues and add strictPort to all web apps
- Add port 5180 to CORS_ORIGINS in .env.development
- Add port 5178 to Presi backend CORS config
- Fix Presi API client to use /api prefix
- Add strictPort: true to all web app vite configs to prevent port switching:
  - manacore: 5173
  - chat: 5174
  - picture: 5175
  - manadeck: 5176
  - zitare: 5177
  - presi: 5178
  - voxel-lava: 5180

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 06:58:00 +01:00
Till-JS
79acf8b8b8 feat(presi): add PillNavigation and fix auth service JWT parsing
Presi webapp:
- Add PillNavigation from @manacore/shared-ui
- Create navigation store for sidebar/collapsed state
- Update layout with floating/sidebar nav modes
- Hide nav on presentation and shared routes
- Add theme toggle and logout to navigation

Auth service:
- Fix JWT private key parsing by converting \n to actual newlines
- Required for Docker env vars where newlines are escaped

Environment:
- Add localhost:5174-5179 to CORS_ORIGINS for all webapp ports

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 20:49:45 +01:00
Wuesteon
d36b321d9d style: auto-format codebase with Prettier
Applied formatting to 1487+ files using pnpm format:write
  - TypeScript/JavaScript files
  - Svelte components
  - Astro pages
  - JSON configs
  - Markdown docs

  13 files still need manual review (Astro JSX comments)
2025-11-27 18:33:16 +01:00
Wuesteon
0241f5554c fix(cicd): docker paths, formatting config,
and documentation

  - Fix Docker build paths in maerchenzauber and manadeck
  backends
  - Add comprehensive CI/CD documentation (private repo
  solution, type analysis)
  - Configure Prettier with proper plugins for Astro/Svelte
  - Update .gitignore to exclude .hive-mind and .claude-flow
  - Fix Turbo config for Presi app

  Related to cicd/integration branch - Priority 1 & 2 fixes
2025-11-27 18:33:08 +01:00
Till-JS
9e141191b1 fix(presi): fix TypeScript errors and add missing theme module
- Add ThemeModule with controller and service for theme management
- Fix Database type to properly infer Drizzle query types
- Fix page params type assertions for route parameters
- Fix Svelte class directive syntax for Tailwind dark mode classes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:54:21 +01:00
Till-JS
1c64359b18 feat(presi): add share deck feature for public presentation viewing
Add ability to create shareable links for presentations that can be
viewed without authentication. Includes backend share module with
NestJS controller/service and web app routes for creating/managing
share links and viewing shared decks.

- Add ShareModule with public GET endpoint and authenticated CRUD
- Add shareApi methods to web API client
- Add /shared/[code] route for public deck viewing
- Add Share button and modal to deck editor
- Update CLAUDE.md with new endpoints and features

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:38:25 +01:00
Till-JS
607ca19d4a feat: integrate presi and voxel-lava into monorepo structure
- Add presi web app and CLAUDE.md documentation
- Restructure voxel-lava to apps/web pattern
- Add voxel-lava scripts to root package.json
- Update generate-env.mjs for presi configuration
- Update .env.development with new project variables

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:33:28 +01:00
Till-JS
5b1e12e5d6 feat: add new projects bauntown, presi, voxel-lava, whopixels
- apps/bauntown: Developer community website (Astro landing)
- apps/presi: Presentation project
- games/voxel-lava: Voxel lava game (SvelteKit)
- games/whopixels: Whopixels game

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:11:53 +01:00