Jannik 2f0768f590
CI / test (push) Canceled after 0s
CI / webapp (push) Canceled after 0s
v2.0.7: PWA-Manifest + Service-Worker-Tests (Phase 4.2)
- tests/webapp/manifest.test.ts: 14 neue Tests
  - PWA-Manifest: existiert, hat Pflichtfelder (name, short_name, start_url, display, icons)
  - Icons: icon-192.svg, icon-512.svg existieren, sind valides SVG mit viewBox
  - Service-Worker: hat install/activate/fetch Handler
  - Background-Sync Handler mit 'mindomat-sync' Tag
  - CACHE_NAME + PRECACHE_URLS mit Pflicht-Dateien
  - Ueberspringt /api/ vom Caching
  - index.html: link zu manifest.webmanifest, navigator.serviceWorker.register

Verifiziert:
- 102/102 Tests gruen (14 neue)
- PWA-Manifest + Service-Worker + Icons sind vorhanden und korrekt
2026-09-05 12:40:51 +02:00

Mind-o-Mat

Lokales Second-Brain-System für Obsidian-kompatible Markdown-Vaults. Besteht aus zwei Repos:

  • Dieses Repo (Mind-o-Mat) — die Code-Basis (Tool). Wird gebaut und über npm publiziert.
  • Vault-Repo (z. B. Mind-o-Mat-Vault) — die Notizen. Wird mit dem Tool initialisiert und via gitea synchronisiert.

Status: v2.0 — alle 5 Phasen komplett. 50/50 Tests grün. Webapp-Build 1.05 MB. PWA-Editor + TWA-Konfig vorhanden. Siehe 10_Wiki/SPEC.md für Details.

Architektur

┌─────────────────────────────────────────────────────────────┐
│                     Mind-o-Mat (Tool)                        │
│  C:\GitHub\Mind-o-Mat (dieses Repo)                         │
│                                                             │
│  ┌───────────┐  ┌──────────┐  ┌──────────┐  ┌────────────┐   │
│  │  CLI      │  │ Indexer  │  │  Ingest  │  │   Webapp   │   │
│  │  init-    │  │  scan +  │  │  LLM +   │  │   React +  │   │
│  │  vault,   │  │  parse   │  │  Konfl.  │  │   Cytosc.  │   │
│  │  index,   │  │  + Veral.│  │  + Vera. │  │   + Tiptap │   │
│  │  ingest,  │  │  + Dupl. │  │  + Jacc. │  │   + PWA    │   │
│  │  sync     │  │          │  │          │  │   Manifest │   │
│  └─────┬─────┘  └─────┬────┘  └────┬─────┘  └──────┬─────┘   │
│        │              │           │              │         │
└────────┼──────────────┼───────────┼──────────────┼─────────┘
         │              │           │              │
         │              ▼           │              ▼
         │         landkarte.json   │         Browser / PWA
         │              │           │              │
         │              └─────┬─────┘              │
         │                    ▼                    │
         │              00_Inbox/*.md              │
         │                    │                    │
         ▼                    ▼                    ▼
   ┌─────────────────────────────────────────────────────┐
   │              Mind-o-Mat-Vault (Daten)                │
   │   C:\GitHub\Mind-o-Mat-Vault (Repo)                  │
   │   gitea: git.orfel.de/Jannik/Mind-o-Mat-Vault.git   │
   │                                                      │
   │  00_Inbox/  01_Daily/  10_Wiki/  20_Projekte/  ...   │
   │  99_System/Konfig.md (Schwellen, KI-Config)          │
   └─────────────────────────────────────────────────────┘
                          │
                          ▼ git push
                    ┌────────────┐
                    │   gitea    │
                    │  Remote    │
                    └────────────┘

5 Bausteine

# Baustein Zweck KI drin? Wo
1 Vault Markdown-Dateien, Single Source of Truth nein Vault-Repo
2 Indexer Deterministisch: liest Vault, parst Frontmatter, extrahiert Wikilinks, erkennt Veraltet + Duplikate nein Tool-Repo
3 QMD Lokale Hybridsuche (BM25 + Vektor + Re-Ranking) nein (lokal) im Vault installiert
4 Wiki (Ingest) Pflegt Wiki-Seiten via LLM, deterministische Konflikt-Vorprüfung ja (Minimax-API) Tool-Repo
5 Webapp / PWA 3 Tabs (Graph, Cluster-Karte, Radial), Tiptap-Editor, installierbar auf Android nein Tool-Repo

Installation

Tool global installieren

# Aus dem Repo (lokal):
cd C:\GitHub\Mind-o-Mat
npm install
npm run build
npm link              # macht 'mindomat' global verfügbar

# Später (sobald auf npm):
# npm install -g mindomat

Vault initialisieren

# Erstellt komplette Vault-Struktur (12 Ordner + Konfig + 2 Demo-Notizen + git init)
mindomat init-vault C:\GitHub\Mein-Vault

# Konfiguriere gitea-Remote
cd C:\GitHub\Mein-Vault
git remote add origin https://git.example.com/Dein-Name/Mein-Vault.git
git push -u origin main

QMD einrichten (einmalig)

# QMD installieren
npm install -g @tobilu/qmd

# Collections anlegen
cd C:\GitHub\Mein-Vault
qmd collection add 00_Inbox --name inbox
qmd collection add 01_Daily --name daily
qmd collection add 10_Wiki --name wiki
qmd collection add 20_Projekte --name projekte

# Embeddings generieren (~2 GB Download beim ersten Mal)
qmd embed

Vault-Index erstellen

# Erzeugt landkarte.json + 99_System/Index.md + 10_Wiki/Index.md
mindomat index

PWA-Editor starten

# Im Tool-Repo:
cd C:\GitHub\Mind-o-Mat\webapp
npm install
npm run dev
# Browser öffnet http://localhost:5173
# Setze MINDOMAT_VAULT_PATH für die Notes-API
$env:MINDOMAT_VAULT_PATH = "C:\GitHub\Mein-Vault"
npm run dev

Beispiel-Session

# 1. Notiz in Inbox anlegen
notepad C:\GitHub\Mein-Vault\00_Inbox\2026-09-05_Telefonat_Max.md
# Inhalt: "[[Kaffee]] schmeckt gut."
# Speichern.

# 2. Ingest: Notiz -> Wiki
mindomat ingest --vault C:\GitHub\Mein-Vault
# Output: Wiki-Seite Kaffee.md wird erstellt (oder aktualisiert)

# 3. Index aktualisieren
mindomat index
# Output: landkarte.json mit neuem Knoten

# 4. Webapp: Graph ansehen
cd C:\GitHub\Mind-o-Mat\webapp
npm run dev
# Browser: http://localhost:5173 zeigt Graph mit Notiz + Wikilinks

# 5. Sync zu gitea
mindomat sync
# Output: git push zu gitea, andere Geräte sehen die Änderung

CLI-Referenz

mindomat --version              # Version
mindomat --help                 # Hilfe

mindomat init-vault <pfad>      # Vault initialisieren
                                # --remote <url>     gitea-URL setzen
                                # --no-commit        nur Struktur, kein Git-Init
                                # --no-interactive   ohne Rückfragen
                                # --force            existierenden Vault überschreiben

mindomat index --vault <pfad>   # Index erstellen (deterministisch)
                                # oder MINDOMAT_VAULT_PATH setzen

mindomat ingest --vault <pfad>  # Inbox -> Wiki
                                # --mock             ohne API-Key, simulierte LLM-Antwort
                                # --note <pfad>      nur eine bestimmte Notiz
                                # --dry-run          nicht schreiben

mindomat sync --vault <pfad>    # git pull + push zu gitea
                                # --message <msg>    custom commit-message
                                # --force            Lockfile ignorieren

Tests

npm test                # 50 Unit-Tests (Vitest)
npm run build           # TypeScript kompilieren
cd webapp && npm run build  # Vite-Build

Lizenz

MIT

S
Description
No description provided
Readme
22 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 85.3%
JavaScript 12.6%
Shell 1.1%
Dockerfile 0.7%
HTML 0.3%