obsidian-logfire/CLAUDE.md
tolvitty 3c8c22ee07 Localize UI to English across all 22 source files
Translates all German user-facing strings (command names, notices,
settings, modal labels, template names/descriptions, error messages,
status bar, and code comments) to English.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 12:17:24 +01:00

5.4 KiB

Logfire — Obsidian Plugin

Kombiniertes Plugin aus Basefire (SQLite-Query-Engine) und Logfire (Event-Logging). Trackt alle Vault-Aktivitaeten, speichert in SQLite, macht per SQL abfragbar, visualisiert mit Charts/Dashboards.

Technischer Stack

  • SQLite: better-sqlite3 (nativ, synchron, schnell)
  • Build: esbuild mit nativeModulePlugin fuer Electron-Kompatibilitaet
  • Desktop-only (FileSystemAdapter erforderlich)
  • Autor: tolvitty

Architektur

src/
├── main.ts                          # Plugin-Einstieg, Lifecycle
├── types.ts                         # Event-Typen, Settings, Query-Interfaces
├── core/
│   ├── database.ts                  # better-sqlite3, Schema, Retention, Maintenance
│   ├── event-bus.ts                 # Circular Buffer, Pub/Sub, Auto-Flush
│   ├── session-manager.ts           # Session-Start/End, Dauer-Tracking
│   ├── content-analyzer.ts          # Snapshot-Cache, Wort-/Link-/Tag-Diffs
│   └── query-builder.ts            # QueryConfig → parametrisiertes SQL
├── collectors/
│   ├── file-collector.ts            # File CRUD Events
│   ├── content-collector.ts         # Semantische Content-Analyse
│   ├── nav-collector.ts             # Navigation-Tracking
│   ├── editor-collector.ts          # CM6 ViewPlugin, Debouncing
│   └── system-collector.ts          # Command-Tracking
├── query/
│   ├── processor.ts                 # Code-Block-Prozessoren (logfire, logfire-sql, logfire-dashboard)
│   ├── query-modal.ts               # Interaktiver SQL-Editor (Shorthand + SQL)
│   └── virtual-tables.ts            # _files, _links, _tags, _headings
├── viz/
│   ├── table-renderer.ts            # Table, Timeline, Summary, Metric, List, Heatmap
│   ├── chart-renderer.ts            # 10 SVG-Chart-Typen (Bar, Line, Pie, Gauge, ...)
│   └── dashboard.ts                 # Multi-Widget-Dashboards, Grid-Layout
├── management/
│   ├── history.ts                   # Automatische Query-History mit Metriken
│   ├── favorites.ts                 # Gespeicherte Queries, Kategorien, Tags
│   └── templates.ts                 # Built-in + Custom Templates, Parameter-Substitution
├── projection/
│   ├── formatters.ts                # Query-Results → Markdown (Timeline, Table, Summary, Metric, Heatmap)
│   ├── template-registry.ts         # Built-in + Custom ProjectionTemplate Verwaltung
│   ├── projection-engine.ts         # Kern-Engine: Scheduling, Session-End-Listener, PickerModal
│   └── presets/
│       ├── daily-log.ts             # Tagesprotokoll-Preset
│       ├── session-log.ts           # Session-Protokoll-Preset
│       └── weekly-digest.ts         # Wochenuebersicht-Preset
├── ui/
│   ├── settings-tab.ts              # Obsidian-native Settings
│   ├── status-bar.ts                # Live-Status-Widget (Recording/Paused)
│   ├── event-stream-view.ts         # Echtzeit-Event-Sidebar
│   ├── schema-view.ts               # Schema-Browser (Tabellen, Spalten, Indizes)
│   └── initial-scan-modal.ts        # Initialer Vault-Scan mit Fortschritt

DB-Schema

Kern-Tabellen (database.ts):

  • events — id, timestamp, type, category, source, target, payload, session
  • sessions — id, start_time, end_time, vault_name
  • baseline — file_path, word_count, char_count, links, tags, headings, ...
  • daily_stats — date, file_path, events_count, words_added/removed, time_active_ms
  • monthly_stats — wie daily_stats, aggregiert pro Monat

Virtual Tables (virtual-tables.ts):

  • _files — path, name, basename, extension, size, created, modified, folder
  • _links — from_path, to_path, display_text, link_type
  • _tags — path, tag
  • _headings — path, level, heading

Konventionen

  • Sprache: Code und Variablennamen auf Englisch, UI-Texte und Commits auf Deutsch
  • Commits: Kleinschrittig, atomar, deutsch. Niemals pushen (Nutzer pusht manuell)
  • Branching: Feature-Branches (feature/<name>), Merge mit --no-ff in main
  • CSS: Ausschliesslich Obsidian-Variablen, Monospace, "Utilitarian System Monitor" Aesthetic
  • Charts: Reines SVG, keine externen Bibliotheken
  • Queries: Record<string, unknown>[] Format (better-sqlite3 Rueckgabe)
  • Storage: History/Favorites/Templates in localStorage, Plugin-Daten via loadData/saveData

Feature-Roadmap

Abgeschlossen

  • Feature 1: Projekt-Grundgeruest & Datenbank (feature/grundgeruest)
  • Feature 2: Event-System & Collectors (feature/event-system)
  • Feature 3: Echtzeit-UI (feature/echtzeit-ui)
  • Feature 4: SQL-Query-Engine (feature/sql-engine)
  • Feature 5: Virtual Tables (feature/virtual-tables)
  • Feature 6: Datenvisualisierung (feature/visualisierung)
  • Feature 7: Query-Management (feature/query-management)
  • Feature 8: Projections & Reports (feature/projections)
  • Feature 9: Polish & Extras (feature/polish)

Build & Test

npm run build        # Production-Build (esbuild)
npm run dev          # Watch-Mode

Build-Output: main.js (aktuell ~86KB), styles.css, manifest.json

Zum Testen: Plugin-Ordner in .obsidian/plugins/logfire/ eines Vaults verlinken/kopieren.