Zum Hauptinhalt springen

Zurück zum Devlog

Montag, 23. März 2026

Feature

27 Commits

12 min Lesezeit

Context Menus Everywhere, Shared LLM Package, Onboarding & Todo Redesign

Shared ContextMenu-Component in 12 Apps integriert, neues @manacore/shared-llm Package für alle Backends, Onboarding für 16 Apps, Todo-App komplett überarbeitet mit Notepad-Design und Auto-Save.

T

Till Schneider

Autor

Intensive Abend-Session mit 27 Commits über 180 Dateien und netto +7.234 Zeilen:

  • Context Menus Everywhere - Shared ContextMenu-Component aus @manacore/shared-ui in 12 Apps integriert
  • Shared LLM Package - Neues @manacore/shared-llm Package mit Google Gemini Fallback für alle Backends
  • Onboarding - App-Onboarding für 6 neue Apps + Feature-Intro-Step für alle 16 Apps
  • Todo Redesign - Komplett neues Notepad-Design, Auto-Save, vereinheitlichte Filter, Skeleton Loader
  • QuickInputBar - In 6 weitere Apps integriert mit Locale-Support und Deferred Search
  • Dashboard Widgets - Neue Widgets für Mukke, Presi und Context

1. Context Menus: Shared Component in 12 Apps

Das bestehende ContextMenu-Component aus @manacore/shared-ui wurde systematisch in alle Apps integriert, die bisher kein Rechtsklick-Menü hatten. Vorher nutzten nur Contacts (Alphabet-Nav) und Mukke (Library) das shared Component.

Rollout-Übersicht

AppKomponenteAktionenCommit
TodoTaskListBearbeiten, Complete, Priorität, Projekt verschieben, Löschen0893e47a
CalendarWeekView EventsBearbeiten, Duplizieren, Löschen (i18n: DE/EN/FR/ES/IT)e7bf58c5
PresiDeck-KartenÖffnen, Löschen28286d12
ManaDeckDeck-KartenÖffnen, Löschen28286d12
PhotosPhotoGridAnzeigen, Favorit toggle, Löschen28286d12
PhotosAlbumGridÖffnen, Löschen28286d12
ZitareFavoritenAus Favoriten entfernen, Kopieren, Teilen28286d12
CalendarAgendaViewBearbeiten, Duplizieren, Löschenecda4535
ChatConversationListUmbenennen, Archivieren, Löschenecda4535
ContactsContactGridViewÖffnen, Favorit, Anrufen, E-Mail, Löschenecda4535
StorageFileCardHerunterladen, Umbenennen, Teilen, Favorit, Verschieben, Löschenecda4535

Implementierungsmuster

Alle Implementierungen folgen dem gleichen Pattern:

import { ContextMenu, type ContextMenuItem } from '@manacore/shared-ui';

let contextMenuVisible = $state(false);
let contextMenuX = $state(0);
let contextMenuY = $state(0);
let contextMenuTarget = $state<TargetType | null>(null);

function handleContextMenu(e: MouseEvent, target: TargetType) {
	e.preventDefault();
	e.stopPropagation();
	contextMenuX = e.clientX;
	contextMenuY = e.clientY;
	contextMenuTarget = target;
	contextMenuVisible = true;
}

Besonderheiten

  • Calendar: i18n-Keys für alle 5 Sprachen (DE, EN, FR, ES, IT) angelegt und in WeekView und AgendaView wiederverwendet
  • Storage: Das bestehende custom Dropdown-Menü wurde durch das shared ContextMenu ersetzt — gleiche Aktionen, konsistentes Look & Feel
  • Todo: Dynamische Projekt-Verschiebung — das Menü zeigt alle aktiven Projekte + Inbox
  • Contacts: Anrufen/E-Mail-Optionen werden automatisch disabled wenn keine Telefonnummer/E-Mail vorhanden
  • Photos: deletePhoto-Methode im Store neu implementiert für die Context-Menu-Aktion

2. Shared LLM Package: @manacore/shared-llm

Neues monorepo-weites Package, das die LLM-Integration für alle Backends vereinheitlicht. Statt dass jeder Backend-Service seine eigene AI-Integration pflegt, gibt es jetzt eine zentrale Abstraktion.

Architektur

┌──────────────┐  ┌──────────────┐  ┌──────────────┐
│  Chat Backend │  │ Zitare Backend│  │ Planta Backend│
└──────┬───────┘  └──────┬───────┘  └──────┬───────┘
       │                 │                 │
       ▼                 ▼                 ▼
┌─────────────────────────────────────────────────┐
│            @manacore/shared-llm                  │
│  ┌─────────┐  ┌──────────┐  ┌─────────────────┐ │
│  │ mana-llm│  │ Ollama   │  │ Google Gemini   │ │
│  │ (lokal) │  │ (direkt) │  │ (Cloud Fallback)│ │
│  └─────────┘  └──────────┘  └─────────────────┘ │
└─────────────────────────────────────────────────┘

Migration

48 Dateien geändert, +2.477 / -1.298 Zeilen. Alle Backends migriert:

  • @chat/backend — Chat AI-Completions
  • @zitare/backend — Zitat-Analyse (vorher eigener Ollama-Service)
  • @planta/backend — Pflanzen-Vision-Analyse
  • @nutriphi/backend — Ernährungs-Analyse (Gemini)
  • mana-core-auth — AI-Service für Auth-Features

Google Gemini Fallback

Neuer Gemini-Provider als Cloud-Fallback wenn lokale Modelle nicht verfügbar sind:

// Auto-Routing: Lokal → Cloud Fallback
const result = await llmService.generate({
	prompt: 'Analysiere dieses Bild',
	image: base64Image,
	preferLocal: true, // Versucht zuerst mana-llm/Ollama
});

3. Onboarding für 16 Apps

Onboarding-Flows für 6 neue Apps hinzugefügt und einen Feature-Intro-Step in alle 16 Apps integriert. 35 Dateien, +872 Zeilen.

Neue Onboarding-Apps

Die @manacore/shared-app-onboarding Komponente wurde in 6 weitere Apps integriert, die bisher keinen Onboarding-Flow hatten.

Feature-Intro-Step

Alle 16 Apps zeigen jetzt beim ersten Start einen Feature-Intro-Step, der die wichtigsten Funktionen der jeweiligen App erklärt.


4. Todo-App: Komplettes Redesign

Die Todo-App wurde in dieser Session massiv überarbeitet — vom visuellen Design über die Filter bis hin zu Auto-Save.

Notepad-Design (3 Commits)

Komplett neues Design für die Task-Liste im Stil eines physischen Notizblocks:

  • Papier-ähnlicher Hintergrund mit subtiler Textur
  • Linierte Zeilen als visuelle Führung
  • Drag-Handle, Priority-Dot, Checkbox und Expand-Button inline
  • Clean, minimalistisches Design

Auto-Save

Save- und Cancel-Buttons entfernt. Tasks werden jetzt automatisch gespeichert mit 500ms Debounce nach jeder Änderung. Initializer-Flag verhindert unnötige Saves beim Öffnen des Edit-Formulars.

Unified TaskFilters

FilterStrip und KanbanFilters zu einer einheitlichen TaskFilters-Komponente zusammengeführt:

  • 841 Zeilen neuer Code, 761 Zeilen alter Code entfernt
  • Beide Views (Liste und Kanban) nutzen jetzt denselben Filter-State
  • Filter-State im viewStore zentralisiert

Tests

371 neue Testzeilen für die vereinheitlichten TaskFilters und den viewStore Filter-State.

Skeleton Loader & UI Polish

  • Pixel-perfekte Skeleton Loader für Tasks, Kanban-Spalten und Statistiken
  • PillNav mit Tab-Group-Semantik
  • SSR Head-Fix für korrekte Seitentitel

5. QuickInputBar: 6 Weitere Apps

Die QuickInputBar-Komponente wurde in 6 weitere Apps integriert:

AppZweck
MukkeSong-Suche
MatrixRoom/Chat-Suche
ManaDeckDeck-Suche
PlantaPflanzen-Suche
PhotosFoto-Suche
PresiPräsentations-Suche

Shared-UI Verbesserungen

  • Locale-aware Highlighting: Suchbegriffe werden korrekt hervorgehoben, auch bei Umlauten und Sonderzeichen
  • Success Feedback: Visuelles Feedback nach erfolgreicher Eingabe
  • Deferred Search Mode: Suche wird erst nach Bestätigung ausgelöst (nicht bei jedem Tastendruck)

6. Dashboard Widgets

Neue Widgets

Drei neue Dashboard-Widgets für die ManaCore-Startseite:

WidgetFeatures
MukkeAktuelle Songs, Play-Count, Lieblingsgenres
PresiAnzahl Decks, letzte Bearbeitung, Slide-Count
ContextDokument-Übersicht, Spaces, letzte Aktivität

Fixes

  • Alle Dashboard-Widgets nutzen jetzt APP_URLS aus @manacore/shared-branding statt hardcodierter localhost-URLs
  • Todo-Widgets verbessert mit korrektem Port-Mapping
  • Test-Mock für Todo-Service an neuen Task-Type angepasst

7. Bugfixes

FixBeschreibung
contacts-webspiral-db zum Dockerfile hinzugefügt
contacts-webshared-app-onboarding zum Dockerfile hinzugefügt
contacts-webshared-pwa Package zum Dockerfile hinzugefügt
contacts-webpatches-Verzeichnis zum Dockerfile für pnpm install
manacoreHardcodierte localhost-URLs durch APP_URLS ersetzt
manacoreTodo Service Test-Mock an neuen Task-Type angepasst

Zusammenfassung

BereichCommitsHighlights
Context Menus412 Apps mit shared ContextMenu, konsistentes UX
Shared LLM2Neues Package, Gemini Fallback, 5 Backends migriert
Onboarding16 neue Apps, Feature-Intro für alle 16
Todo Redesign7Notepad-Design, Auto-Save, Unified Filters, Tests
QuickInputBar46 Apps, Locale-Highlighting, Deferred Search
Dashboard3Mukke/Presi/Context Widgets, APP_URLS Fix
Bugfixes6Dockerfile-Fixes, Test-Mocks
Gesamt27180 Dateien, +10.064 / -2.830 Zeilen

Nächste Schritte

  1. Context Menu Migration — Picture-App und Todo-Kanban von custom auf shared ContextMenu migrieren
  2. Shared LLM Tests — Unit-Tests für das neue @manacore/shared-llm Package
  3. Onboarding Analytics — Tracking welche Onboarding-Steps übersprungen werden
  4. Todo Mobile — Notepad-Design und Auto-Save auf die Expo-App übertragen
  5. Dashboard — Verbleibende Apps (Calendar, Photos, Storage) als Widgets hinzufügen

Tags

#context-menu #shared-ui #llm #gemini #onboarding #todo #quickinputbar #dashboard #ux #refactoring #testing