Zum Hauptinhalt springen

ZurĂŒck zum Devlog

Montag, 23. MĂ€rz 2026

Release

61 Commits

18 min Lesezeit

Manalink Live, CityCorners, Spiral-DB, Auth-Migration & Massive Cleanup

Manalink Matrix-Client live deployed, CityCorners City Guide erweitert, Spiral-DB stabilisiert (174 Tests), 3 Mobile-Apps auf mana-core-auth migriert, Legacy-Codebase bereinigt, Landing Page Builder Service gestartet.

T

Till Schneider

Autor

Extrem produktiver Vormittag mit 61 Commits ĂŒber 695 Dateien und netto +17.282 Zeilen:

  • Manalink Live - Matrix-Chat-Client auf Production gebracht und auf link.mana.how deployed
  • CityCorners - City Guide fĂŒr Konstanz mit PWA, i18n, mana-search Integration und 31 Backend-Tests
  • Spiral-DB - 174 Tests, kritische PNG-Bugs gefixt, in Zitare und Contacts integriert
  • Auth-Migration - 3 Mobile-Apps (ManaCore, Context, ManaDeck) von Supabase auf mana-core-auth
  • Massive Cleanup - 50+ Legacy-Dateien gelöscht, Hetzner-Artefakte entfernt, API-Keys bereinigt
  • Observability - Prometheus Metrics fĂŒr mana-search, mana-media und Synapse
  • Mukke - FullPlayer als immersives Fullscreen-Erlebnis, CSP- und CORS-Fixes
  • Landing Page Builder - Neuer Service fĂŒr Organisation-Landingpages
  • Auth Standardisierung - URL-Handling in allen 20 Web Auth-Stores vereinheitlicht

Manalink ist jetzt live auf link.mana.how. Umfassender Prod-Readiness-Audit mit anschließenden Fixes und Deployment.

Chat AppManalink
ZweckAI-Chat mit LLMsMessaging zwischen Menschen & Bots
ProtokollEigene REST-APIMatrix (föderiert, dezentral)
BackendNestJS (Port 3002)Synapse Homeserver
E2EENeinJa (in Arbeit)
URL-https://link.mana.how

Prod-Readiness Fixes (7 Commits)

Error/404-Page - Neue globale +error.svelte mit Statuscode-Anzeige, deutschen Fehlermeldungen, ZurĂŒck- und Startseite-Buttons.

Security Headers - Neuer hooks.server.ts:

response.headers.set('X-Frame-Options', 'SAMEORIGIN');
response.headers.set('X-Content-Type-Options', 'nosniff');
response.headers.set('Referrer-Policy', 'strict-origin-when-cross-origin');
response.headers.set('Permissions-Policy', 'camera=(self), microphone=(self), geolocation=()');
response.headers.set('Cross-Origin-Opener-Policy', 'same-origin');
response.headers.set('Cross-Origin-Embedder-Policy', 'require-corp');

SSO Homeserver-Bug - SSO-Redirect war hardcoded auf matrix.mana.how. Jetzt dynamisch via VITE_MATRIX_HOMESERVER und VITE_MANA_AUTH_URL Env-Variablen.

Console.log Cleanup - 54 console.log/console.warn Statements entfernt aus store.svelte.ts und +layout.svelte. Nur echte console.error fĂŒr GlitchTip beibehalten.

PWA devOptions - devOptions.enabled war immer true - jetzt nur in Nicht-Production.

Tests: 14 Unit-Tests

Vitest eingerichtet fĂŒr die kritischen Client-Funktionen:

Test-SuiteTestsAbdeckung
discoverHomeserver5Matrix-User-ID Parsing, .well-known Discovery, Domain-Extraktion
checkHomeserver5URL-Normalisierung, Server-Erreichbarkeit, Fehlerbehandlung
loginWithToken4Token-Login, URL-Normalisierung, DeviceID-Generierung

E2EE-Feedback

Wenn Rust-Crypto-Init fehlschlĂ€gt, zeigt ein Amber-Banner “VerschlĂŒsselung nicht verfĂŒgbar” in der Sidebar (Mobile + Desktop). Vorher fiel der Fallback komplett still zurĂŒck.

Docker-Deployment

Drei Probleme im Dockerfile gelöst:

  1. Fehlende patches/ - pnpm braucht den Patches-Ordner fĂŒr Lockfile-Parsing
  2. Fehlendes eslint-config - Root-Workspace-Dependency
  3. react-native Patches - Werden vor pnpm install aus package.json entfernt (nicht anwendbar im Web-Only-Kontext)
Container: mana-matrix-web | Port: 4090 → 5180 | Status: healthy
URL: https://link.mana.how

2. CityCorners: City Guide fĂŒr Konstanz

Initiales Setup (83 Dateien, 3.663+ Zeilen)

Komplett neues Projekt mit drei Apps:

AppTechPortFeatures
LandingAstro 5-SVG-Illustrationen, Location-Karten, Kategorie-Filter
BackendNestJS3041CRUD API, Drizzle ORM, Favorites, Auth via mana-core-auth
WebSvelteKit5196Leaflet Map, Favorites, Theme/Settings, PillNav

Infrastruktur: DB-Init-SQL, setup-databases.sh, generate-env.mjs, Dockerfiles, docker-compose.macmini.yml, Cloudflare wrangler.toml. In shared-branding registriert (AppId, APP_BRANDING, APP_ICONS, CitycornersLogo).

PWA, i18n & Landing-Migration

  • PWA mit @vite-pwa/sveltekit, Offline-Fallback, Standard-Caching-Preset
  • i18n mit svelte-i18n (DE/EN), alle UI-Strings ĂŒbersetzt, Language Switcher in PillNav
  • Landing von Scoped CSS auf Tailwind CSS migriert: Hero, Card Grid, Category Filter, Detail-Timeline

mana-search Integration

Neues Feature: Web-Lookup fĂŒr unbekannte Locations ĂŒber den zentralen mana-search Service. Wenn eine Location nicht in der DB ist, werden Infos aus dem Web extrahiert und vorausgefĂŒllt.

Location-Submission-Formular

Frontend-Formular zum Einreichen neuer Locations mit /api/v1/ Prefix auf allen API-Calls.

Backend Test Suite: 31 Tests

Umfassende Tests fĂŒr den CityCorners-Backend:

pnpm --filter @citycorners/backend test
# 31 Tests passed

Port von 3025 auf 3041 geÀndert (3025 war durch mana-llm belegt).


3. Spiral-DB: Stabilisierung & Integration

174 Tests + Kritische Bug-Fixes

Umfassende Test-Suite und mehrere kritische Fixes:

BugFix
PNG-Kompression funktionsloszlibCompress durch pako.deflate ersetzt
PNG-Import fehlerhaftCRC-Validierung + alle Filter-Typen (Sub/Up/Avg/Paeth)
Keine Input-ValidierungRecords werden gegen Schema validiert vor Insert
Index-OverflowDynamischer dataStartRing verhindert Ring-Überlappung
Image-Expansion zu spÀtExpand vor Writes statt danach (verhindert OOB)
update() liest falschen RecordSuche von Ende statt Anfang fĂŒr neuesten Eintrag
String zu lang511-Byte Max-Length Enforcement
Index-Ring-Count zu klein6 Bits (2 Pixel) statt 3 Bits fĂŒr >7 Ring Support

Zitare-Integration

Spiral-DB als zweite App (nach Todo) mit pixelbasierter Spiral-Visualisierung:

  • createQuoteSchema() mit Feldern fĂŒr Kategorie, Sprache, Autor, Text, Quote-ID
  • Svelte 5 Spiral Store mit importFavorites, CRUD, PNG-Export
  • SpiralCanvas Komponente fĂŒr interaktive Visualisierung
  • /spiral Route mit Stats, Records-Liste und Actions
  • Navigation (Ctrl+6) und Auto-Import von Favorites

Contacts-Integration

Dritte App mit Spiral-DB: visuelles Kontakt-Netzwerk (959 Zeilen neu).


4. Auth-Migration: 3 Mobile-Apps auf mana-core-auth

Große Migrationswelle weg von direkter Supabase-Auth hin zu unserem zentralen mana-core-auth Service.

ManaCore Mobile (907+ / 3.480- Zeilen)

Komplette Migration von Supabase-Auth auf @manacore/shared-auth. 20 Dateien geÀndert.

Context Mobile (895+ / 2.470- Zeilen)

Migration von direktem Supabase-Zugriff auf Backend-API + mana-core-auth. AuthContext.tsx durch AuthProvider.tsx ersetzt, neuer backendApi.ts Service. 25 Dateien geÀndert.

ManaDeck Mobile (820+ / 3.014- Zeilen)

Migration von Custom Auth auf @manacore/shared-auth. 8 Dateien geÀndert.

Auth Standardisierung

Mobile Return Format - Alle Mobile Auth-Funktionen nutzen jetzt einheitlich { success, error } als RĂŒckgabeformat (6 Dateien, 79+ / 67-).

Web Auth Stores - URL-Resolution und Token-Handling in allen 20 Web Auth-Stores standardisiert (530+ / 302-):

// Vorher: Hardcoded localhost Fallbacks
return injectedUrl || 'http://localhost:3001';

// Nachher: Nur in DEV Mode Fallback
if (injectedUrl) return injectedUrl;
return import.meta.env.DEV ? DEV_AUTH_URL : '';

Supabase Package entfernt

@manacore/shared-supabase komplett entfernt (7 Dateien, 128 Zeilen gelöscht). Nicht mehr benötigt nach Migration.


5. Massive Cleanup: Legacy-Bereinigung

Docs & Reports (50+ Dateien, ~30.000 Zeilen gelöscht)

Root-Level Legacy Reports gelöscht:

  • AUTH_*.md (5 Dateien) - Auth-Architektur-Reports, jetzt in CLAUDE.md
  • TESTINGSTRATEGY.md, QA_, TESTCASES*.md - alte Testing-PlĂ€ne
  • BACKEND_DESIGN_PATTERN_AUDIT.md, COMPATIBILITY_MATRIX_AND_REMEDIATION.md
  • HISTORICAL-ANALYSIS.md, MERGE-FIX-SUMMARY.md, RELEASE-PLAN.md
  • MANACORE-TODOS.md, APP-IDEAS.md, COMMANDS.md

docs/ Cleanup:

  • 6 Testing-Docs (Duplikate, ersetzt durch .claude/guidelines/testing.md)
  • 3 Env-Audit-Dateien (kanonisch: ENVIRONMENT_VARIABLES.md)
  • 3 Mac-Mini-Setup-Docs (kanonisch: MAC_MINI_SERVER.md)
  • 5 Daily Reports (historisch, kein Wert mehr)
  • SELF-HOSTING-GUIDE.md (Coolify/Hetzner-basiert, obsolet)
  • CHANGELOG, CONSISTENCY_REPORT, CONSOLIDATION_OPPORTUNITIES, pr-reviews/

Hetzner-Artefakte entfernt

Komplette Bereinigung von Hetzner-Referenzen nach Migration auf Mac Mini:

  • docker/caddy/Caddyfile.production + Caddyfile.staging
  • scripts/deploy/ (deploy-hetzner.sh, build-and-push.sh, health-check.sh, migrate-db.sh, rollback.sh)
  • cicd/ Verzeichnis (11 Hetzner CI/CD-Planungsdocs)
  • CI_CD_IMPLEMENTATION_SUMMARY.md, CI_CD_README.md
  • CLAUDE.md, ANALYTICS.md, URL_SCHEMA.md aktualisiert

Security: API-Keys bereinigt

Kritisch: Live API-Keys aus .env.development entfernt:

  • Worldream OpenAI Key (sk-proj-
)
  • Worldream Gemini Key
  • Worldream Replicate Token
  • Worldream Supabase Anon Key (live JWT)
  • Dead Supabase-Configs fĂŒr archivierte Apps

TODO erstellt fĂŒr Key-Rotation.

Stale Docs entfernt

Veraltete Design-PlÀne und nicht mehr aktuelle Dokumentation bereinigt (4.095 Zeilen).

Presi Mobile App entfernt

Presi Mobile komplett gelöscht (62 Dateien, 6.528 Zeilen) - war nicht mehr in Entwicklung.


6. Observability & Monitoring

Prometheus Metrics fĂŒr 3 neue Services

ServicePortPrefixNeu
mana-search3020-Scraping hinzugefĂŒgt
mana-media3015media_MetricsModule + Scraping
Synapse9002-Scraping hinzugefĂŒgt
  • ServiceDown Alert von Hardcoded-Liste auf dynamische Regex umgestellt
  • backends.json Query mit dynamischer Regex ersetzt
  • Search, Media, Synapse zu Master-Overview und System-Overview Dashboards hinzugefĂŒgt

Metrics & Monitoring fĂŒr alle 15 Backends

Zentrales Monitoring ausgerollt (692+ / 474- Zeilen, 23 Dateien).

GlitchTip Health Check & Disk Monitoring

Neuer Health Check fĂŒr GlitchTip Error Tracking + Disk Space Monitoring.

Docker Fixes fĂŒr Monitoring

  • shared-error-tracking Package zu allen 15 Web-Dockerfiles hinzugefĂŒgt
  • shared-nestjs-metrics zu 5 Backend-Dockerfiles hinzugefĂŒgt
  • mana-media Dockerfile um shared-nestjs-metrics ergĂ€nzt

7. Mukke: Immersiver FullPlayer & Fixes

FullPlayer Redesign (251+ / 164-)

Komplettes Redesign des FullPlayers als immersives Fullscreen-Erlebnis:

  • Visualizer fĂŒllt den gesamten Hintergrund
  • Controls als Overlay am unteren Rand mit Gradient fĂŒr Lesbarkeit
  • Visualizer-Switcher in der oberen rechten Ecke
  • Ersetzt den bisherigen Popup-Overlay

CSP & CORS Fixes

ProblemFix
Butterchurn Shader-Kompilierung blockiertunsafe-eval zu CSP hinzugefĂŒgt
Audio-Wiedergabe von MinIO blockiertmedia-src zu CSP hinzugefĂŒgt
MinIO Presigned URLs CORS-FehlerCORS-Konfiguration fĂŒr Audio gefixt

MiniPlayer Positioning

MiniPlayer wird jetzt ĂŒber der PillNavigation positioniert statt dahinter.


8. Landing Page Builder Service (Neu)

Neuer Service fĂŒr automatisch generierte Organisation-Landingpages:

┌──────────────────────┐     ┌─────────────────────┐     ┌──────────────────┐
│  ManaCore Admin UI   │────>│  Landing Builder     │────>│  Cloudflare      │
│  /organizations/     │     │  NestJS (Port 3030)  │     │  {slug}.mana.how │
│  [id]/landing        │     │  Astro Template      │     │  Pages Deploy    │
└──────────────────────┘     └─────────────────────┘     └──────────────────┘
  • NestJS Service (Port 3030) mit Astro-Template-Engine
  • Admin UI in ManaCore Web Dashboard unter /organizations/[id]/landing
  • TeamSection + ContactSection fĂŒr shared-landing-ui
  • 2 Org-Themes: Classic Dark, Warm Light
  • LandingPageConfig Types in shared-types
  • Docker + CI/CD Integration

9. Weitere Änderungen

LLM Playground verschoben

llm-playground von services/ nach apps/playground/ verschoben (527+ / 530-, 41 Dateien).

Todo UI-Verbesserungen

  • FAB Close-Button war hinter PillNav versteckt - gefixt
  • Settings/Mana in Account-Dropdown verschoben
  • “Aufgaben” → “Liste” in PillNav umbenannt
  • Spiral-Icon statt Sparkle fĂŒr Spiral-Navigation
  • Feedback, Themes, Spiral in Profile-Dropdown verschoben

Shared UI Fix

Transparenter Hintergrund im Context Menu gefixt.

Analytics

Umami-Tracking in Todo, Calendar und Contacts erweitert. ANALYTICS.md aktualisiert.

Error Tracking

shared-error-tracking auf ESM-Output umgestellt fĂŒr SvelteKit-KompatibilitĂ€t.

Infra

  • LightWrite → Mukke in Caddyfile Production-Config umbenannt
  • Tech Stack Independence Analyse und Roadmap erstellt

Zusammenfassung

BereichCommitsHighlights
Manalink7Prod-Ready, Security, Tests, E2EE-Warning, Live Deploy
CityCorners8PWA, i18n, mana-search, Submission Form, 31 Tests
Spiral-DB3174 Tests, 8 kritische Bugs gefixt, Zitare + Contacts Integration
Auth-Migration63 Mobile-Apps, 20 Web-Stores, Supabase-Package entfernt
Cleanup750+ Dateien gelöscht, Hetzner weg, API-Keys bereinigt
Observability53 neue Services, 15 Backend Metrics, GlitchTip Health
Mukke4Immersiver FullPlayer, CSP/CORS-Fixes, MiniPlayer
Landing Builder3Neuer Service, Admin UI, 2 Themes
Docker6Error-Tracking + Metrics zu 20 Dockerfiles
Todo4UI-Fixes, Navigation, Spiral-Integration
Docs5Devlog, Analytics, Tech Stack Analyse
Sonstiges3LLM Playground, ESM Fix, Shared UI
Gesamt61695 Dateien, +50.947 / -33.665 Zeilen

NĂ€chste Schritte

  1. API-Key-Rotation - Geleakte Keys in .env.development mĂŒssen rotiert werden
  2. Manalink E2EE - Rust Crypto vollstÀndig integrieren und testen
  3. Manalink File Uploads - Bilder und Dateien senden/empfangen
  4. CityCorners Deploy - Backend und Web auf Mac Mini deployen
  5. Landing Builder Deploy - Service auf Mac Mini deployen
  6. Spiral-DB - Weitere Apps integrieren (Calendar, ManaDeck)
  7. Auth-Migration - Verbleibende Mobile-Apps migrieren
  8. Test Coverage - CityCorners Web, Manalink Store/Auth-Flow

Tags

#matrix #manalink #citycorners #spiral-db #auth #supabase-migration #security #testing #observability #mukke #docker #cleanup #landing-builder #pwa #i18n