Phase 2.4 - Deterministische Konflikt-Vorpruefung: - src/ingest.ts: preCheckConflict(note, wiki) -> boolean Erkennt Verneinungen (kein, nicht, nie) + Wort-Ueberlappung - In src/cli/ingest.ts: vor LLM-Parse aufgerufen Wenn Konflikt erkannt + LLM hat nicht erkannt -> konflikt_hart=true, status=konflikt - 7 Tests: erkennt, ignoriert, Wortgrenzen, Verneinungs-Varianten Phase 2.5 - Inhaltliche Aehnlichkeit (Jaccard): - src/ingest.ts: jaccardSimilarity(a, b) -> 0-1 Deterministisch, keine externen Abhaengigkeiten - 5 Tests: identisch, verschieden, Ueberlappung, leer, Wortlaenge - 3 extractWords-Tests: lowercase, Satzzeichen, Unicode Edge-Case-Tests fuer Indexer: - tests/indexer-edge-cases.test.ts: 7 Tests - leerer Vault - Notiz ohne Frontmatter (Typ aus Pfad erkannt) - Unicode (Kaffee_AeOeUe) - tote Wikilinks - zirkulaere Wikilinks - Mehrfach-Wikilinks dedupliziert - Wikilink mit Anzeige-Text [[A|Alias]] - Konfig.md als SKIP_FILE (System-Datei, nicht indexieren) Phase 4.1 - Tiptap-Editor: - webapp/src/Editor.tsx: Tiptap + StarterKit Live-Preview (Split-View), Speichern-Button, Status-Indikator HTML<->Markdown via marked + turndown - webapp/src/EditorWithLoad.tsx: Lade/Speichere-Logik - GET /api/notes/<id> beim Oeffnen - PUT /api/notes/<id> beim Speichern - POST /api/sync manuell - webapp/src/notes-api.ts: API-Client - webapp/src/turndown.d.ts: Type-Shim Phase 4.2 - PWA-Manifest + Service Worker: - webapp/public/manifest.webmanifest: Standalone, Theme, Icons - webapp/public/icon-192.svg, icon-512.svg: SVG-Icons - webapp/public/service-worker.js: Cache-First, offline-faehig - webapp/index.html: Link auf manifest + Service-Worker-Registrierung Phase 4.3 - Sync-Trigger in PWA: - webapp/vite.config.ts: notesApiPlugin mit /api/notes/* und /api/sync Liest aus VAULT_PATH (Env-Var MINDOMAT_VAULT_PATH) Schreibt Notizen, ruft mindomat sync als Subprozess - Sync-Button in EditorWithLoad: manueller Trigger Im Production-Mode wuerde Background-Sync via Service Worker noetig Phase 5.1 - TWA-Konfiguration: - webapp/twa-manifest.json: Bubblewrap-Manifest mit Package-ID, Host, Fingerprints - webapp/public/.well-known/assetlinks.json: Digital Asset Links - webapp/TWA-BUILD.md: Vollstaendige Build-Anleitung (Bubblewrap, Play Store, Capacitor-Alternative) SPEC v2.0 + Plan v1.0: - Status-Uebersicht: alle 5 Phasen komplett - Tests: 50/50 gruen - Was-tut-Liste: PWA-Editor, TWA-Wrapper - Was-nicht-tut-Liste: kein iOS, kein Cloud-Sync, keine externen Suche-APIs - Plan v1.0: gleicher Status Verifiziert: - Tool: 50/50 Tests, build OK - Webapp: 99 Module, 1052 KB JS, 7.36s Build - Editor: Tiptap laedt/speichert Notizen via Vite-Plugin - PWA: Manifest + Service Worker + Icons vorhanden - TWA: Konfig + Build-Anleitung + assetlinks.json
30 lines
672 B
JSON
30 lines
672 B
JSON
{
|
|
"name": "mindomat-webapp",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc -b && vite build",
|
|
"preview": "vite preview"
|
|
},
|
|
"dependencies": {
|
|
"@tiptap/react": "^3.31.3",
|
|
"@tiptap/starter-kit": "^3.31.3",
|
|
"cytoscape": "^3.30.0",
|
|
"marked": "^18.0.11",
|
|
"react": "^18.3.0",
|
|
"react-dom": "^18.3.0",
|
|
"turndown": "^7.2.4"
|
|
},
|
|
"devDependencies": {
|
|
"@tiptap/core": "^3.31.3",
|
|
"@types/cytoscape": "^3.21.0",
|
|
"@types/react": "^18.3.0",
|
|
"@types/react-dom": "^18.3.0",
|
|
"@vitejs/plugin-react": "^4.3.0",
|
|
"typescript": "^5.6.0",
|
|
"vite": "^5.4.0"
|
|
}
|
|
}
|