8 Commits
Author SHA1 Message Date
Jannik fc51fe725c fix(docker): chokidar und express in production dependencies fuer Server
CI / test (push) Canceled after 0s
CI / webapp (push) Canceled after 0s
2026-09-08 17:28:59 +02:00
Jannik f0075e3344 Bonus 19: Playwright E2E-Setup + 4 Smoke-Tests
CI / test (push) Canceled after 0s
CI / webapp (push) Canceled after 0s
- @playwright/test als dev-Dependency
- playwright.config.ts: webServer-Setup, Chromium-Project, baseURL
- tests/e2e/app.spec.ts: 4 E2E-Tests
  - zeigt den Titel
  - zeigt Header mit Logo + Tab-Buttons
  - Tab-Wechsel funktioniert (Graph, Cluster-Karte, Radial)
  - Legend ist sichtbar
- .gitignore: test-results/, playwright-report/
- package.json scripts.test:e2e: 'playwright test'

Verifiziert (manuell):
- 4/4 E2E-Tests gruen (~3s)
- Webapp startet korrekt via Vite, Tests greifen auf rendered DOM zu
- Browser-Download: 195.6 MiB Chromium + Edge-Deps

Hinweis: Playwright laeuft nur lokal. CI-Browser-Downloads waeren separat zu konfigurieren.
2026-09-05 18:12:59 +02:00
Jannik d7b1acbe33 Bonus 17: Sichere API-Key-Speicherung (.env + age-Option)
CI / test (push) Canceled after 0s
CI / webapp (push) Canceled after 0s
- .gitignore: Secrets (.env, *.key, *.pem) + Coverage + Temp-Verzeichnisse
- .env.example: Template ohne echte Werte, mit Anleitung
- scripts/token-gen.mjs: HMAC-Bearer-Token-Generator
- package.json: token-gen + build:twa Scripts
- docs/SECRETS.md: komplette Anleitung
  - Lokale Entwicklung (.env)
  - CI (gitea-Repository-Secrets)
  - age-Verschluesselung als optionale Schicht
  - Was NIE tun / was IMMER tun
  - Incident-Response bei geleaktem Secret

Verifiziert:
- token-gen erzeugt Token korrekt (stderr: Token gueltig...)
- 122/122 Tests gruen
- .env.example im Repo, .env ist gitignored
2026-09-05 18:03:04 +02:00
Jannik 5f6afe2448 Auto-Commit: 2026-09-05 14:51:03
CI / test (push) Canceled after 0s
CI / webapp (push) Canceled after 0s
2026-09-05 14:51:03 +02:00
Jannik 080656b65a ESLint 9 Flat-Config-Migration (Bonus 14)
CI / test (push) Canceled after 0s
CI / webapp (push) Canceled after 0s
- eslint.config.js (NEU): Flat-Config fuer ESLint 9
  - Globals explizit definiert (console, process, Buffer, etc.)
  - TypeScript-Parser + Plugin
  - Rules: no-unused-vars, no-explicit-any (warn)
  - Tests haben relaxed rules (no-explicit-any off, fuer Mocks)
- .eslintrc.cjs -> .eslintrc.cjs.bak (Deprecation-Warnung weg)
- package.json scripts.lint: USE_FLAT_CONFIG-Flag entfernt (default flat)
- Tests: 2 tote Variablen entfernt
  - tests/tfidf.test.ts: jaccardSim (ungenutzt, nur Kommentar-Vergleich noetig)
  - tests/webapp/manifest.test.ts: indexHtmlPath (ungenutzt)

Verifiziert:
- 117/117 Tests gruen
- ESLint exit 0 (ohne Deprecation-Warnung)
- Tool-Build OK, Webapp-Build OK
2026-09-05 13:03:19 +02:00
Jannik fb954fff1d v2.0.6: jsdom + Notes-Api-Client-Tests (Phase 4.1)
CI / test (push) Canceled after 0s
CI / webapp (push) Canceled after 0s
- jsdom + @testing/react als dev-Dependencies
- vitest.config.mjs: environmentMatchGlobs fuer *.webapp.* und sync-queue Tests
- tests/webapp/notes-api-client.test.ts: 9 Tests
  - loadNote: 404 -> null, 200 -> parsed, 500 -> throws
  - URL-Encoding: Leerzeichen in noteId
  - saveNote: PUT mit Content-Type, Body korrekt
  - triggerSync: 200 -> ok, 500 -> throws
  - listNotes: parst Notes-Liste, Fehlerfall

Verifiziert:
- 88/88 Tests gruen (9 neue fuer notes-api Client)
- Tool + Webapp Builds OK
2026-09-05 12:40:02 +02:00
Jannik f2e8e59baf v2.0.2: Watcher-Mode + Watch-Bug-Fix + Lint-Setup + Audit-Fix
CI / test (push) Canceled after 0s
CI / webapp (push) Canceled after 0s
Phase 6 (Bonus): Watcher-Mode (--watch):
- src/cli/ingest.ts: --watch Flag parsed
- watchInbox(): chokidar-basiert (robuster als node:fs.watch auf Windows)
  Debounce 1s, awaitWriteFinish, ignoreInitial, filter Verarbeitet/Problemfaelle
  Auf Ctrl+C wird sauber beendet
- Bug-Fix: 'return' bei files.length===0 war vor dem Watch-Block
  -> bei leerer Inbox mit --watch startet Watcher trotzdem

ESLint + Prettier:
- .eslintrc.cjs (deprecated eslintrc-Format, USE_FLAT_CONFIG=false)
- .prettierrc mit Standard-Format
- package.json scripts: lint, format, format:check
- Lint-Fehler in Tests gefixt (try/catch, unused imports)

npm audit fix --force:
- esbuild 0.24.2 -> neuere Version (via Vite-Update)
- vite, vitest auf v5 (breaking change akzeptiert)
- 5 vulnerabilities -> 0

Verifiziert:
- 50/50 Tests gruen
- Watcher E2E: Notiz in 00_Inbox/ waehrend --watch -> Wiki erstellt, verarbeitet
- Lint: 0 Fehler (nur Deprecation-Warnung fuer eslintrc-Format)

Dependencies: chokidar (neu)
2026-09-05 12:29:48 +02:00
Jannik f86c3bf8ce Phase 1a: Tool-Repo-Skelett + Vault-Pfad-Discovery
- package.json mit Scripts (build, dev, test, init-vault, index, ingest, sync)
- TypeScript-Config (tsconfig.json) + Vitest-Config
- CLI-Entry (bin/mindomat.mjs + src/cli/index.ts)
- Vault-Pfad-Discovery (1.2) mit CLI-Arg + Env-Var Fallback
- 10 Unit-Tests fuer Vault-Pfad-Discovery (alle gruen)
- Stubs fuer init-vault, index, ingest, sync (Placeholder, volle Implementierung in 1.3/1.5/2.3/1.8)
- webapp/-Stubs (Phase 1.6 Vorbereitung)
- README mit Install-Anleitung aktualisiert

Smoke-Tests:
- mindomat --version      => mindomat 0.1.0
- mindomat --help         => vollstaendige Hilfe
- mindomat index          => Fehler 'Vault-Pfad fehlt' (Exit 2)
- mindomat index --vault  => Stub-Aufruf (Exit 0)
2026-09-05 11:11:55 +02:00