Skip to content

Folio v0.2.0

Pre-release
Pre-release

Choose a tag to compare

@fsrakul fsrakul released this 11 Jun 14:44
· 252 commits to main since this release

Zweite Beta von Folio — der größte Sprung seit der ersten Veröffentlichung: Split-Mode mit Live-Vorschau, HTML- und Bild-Ansicht, Settings-Panel, gehärtete Automation-API und über 25 Bugfixes aus einem vollständigen Code-Review.

Highlights

  • ⚡ Split-Mode + Live-Vorschau: Editor und gerenderte Ansicht nebeneinander (Strg+3), die Vorschau aktualisiert beim Tippen ohne Speichern — mit Scroll-Sync zwischen Editor, View und TOC.
  • 🌐 HTML-Ansicht: .html-Dateien rendern im Sandbox-iframe mit Link-Routing, Find-Highlighting und Scrollbar-Marker-Lane.
  • 🖼️ Bild-Vorschau: png/jpg/gif/webp/svg/bmp/ico/avif öffnen direkt in einer zentrierten, proportional skalierten Ansicht.
  • ⚙️ Settings-Panel (Strg+,): Standard-Modus pro Dateityp (Markdown/Text), Auto-Format im View-Mode, Vault-Auto-Refresh, Menüsprache, Log-Level — live, ohne Neustart.
  • 📦 Vault-Ausbau: aufgeklappte Ordner aktualisieren sich live bei Dateisystem-Änderungen (FS-Watcher), gepinnte Einträge lassen sich per Drag umsortieren (jetzt auch auf Windows), Tooltip mit vollem Pfad.
  • 📋 Strukturiertes Logging: tracing-Logs mit täglich rotierendem Logfile (7 Tage Retention), Frontend-Logs landen im selben File, Log-Level im Settings-Panel umschaltbar.

Sicherheit — Automation-API gehärtet

Die HTTP-Automation-API (127.0.0.1:9876) war in v0.1.0 für jede im Browser besuchte Webseite erreichbar (CORS *, kein Host-Check) — inklusive POST /eval. Das ist behoben:

  • Release-Builds starten die API nur noch mit gesetzter Env-Var FOLIO_AUTOMATION=1 (Debug-Builds: unverändert immer an).
  • Host-Header-Allowlist (gegen DNS-Rebinding) und Origin-Allowlist (nur Tauri-WebView-Origins, gespiegelt statt *); fremde Origins → 403.
  • Optionales Shared-Secret via FOLIO_AUTOMATION_TOKEN.

⚠️ Breaking für Automation-Nutzer: Wer gegen das Release-Binary skriptet, muss Folio mit FOLIO_AUTOMATION=1 starten. Die mitgelieferten E2E-Wrapper (scripts/run-e2e.sh, tests/e2e/run.py) tun das automatisch.

Verbesserungen

  • Beenden (Strg+Q, Menü, Fenster-X) fragt bei ungespeicherten Änderungen nach, statt sie zu verwerfen.
  • Neue Automation-Endpunkte: POST /eval (JS im WebView), POST /find/text (öffnet die Find-Bar automatisch), POST /sync/render (deterministischer Render-Sync für Screenshots).
  • Fenster-Geometrie wird debounced persistiert statt bei jedem Resize-Tick (weniger IO während des Drags).
  • Pfade werden durchgängig normalisiert — dieselbe Datei per Dialog und per Vault/Recent geöffnet erzeugt keine doppelten History-Einträge mehr.
  • Cargo.lock ist eingecheckt — reproduzierbare Builds.

Bugfixes (Auswahl aus dem Code-Review 2026-06-11)

  • History: Zurück/Vorwärts über einen Bild-Eintrag brach die Navigation und desyncte die History.
  • Export: „Speichern" startete zwei Exporte; nach dem Schließen konnte jede Enter-Taste app-weit einen Export auslösen.
  • Suche: Nach Nutzung im Split-Mode hatte die Suche im View-Mode keinen aktiven Treffer mehr (kein Scroll, Weiter/Zurück wirkungslos).
  • Code-View: zeigte nach dem Speichern den veralteten Stand vom letzten Öffnen.
  • Editor: Strg+Z im View-Mode editierte das Dokument unsichtbar; programmatisches Text-Setzen zerstörte Syntax-Highlighting und Undo-Stack; Monaco konnte beim Öffnen doppelt mounten (Minimap-Setting ging verloren).
  • Markdown-Rendering: Heading-Anchor-Zeilen innerhalb von Code-Blöcken wurden verfälscht; verschachtelte normale Listen mit Task-Subliste bekamen fälschlich Task-Styling; TOC-Klick sprang bei kollidierenden expliziten {#id}s zum falschen Heading.
  • Bilder: Strg+V mit Bild im Clipboard funktioniert jetzt auch im Split-Mode.
  • Dialoge: Keydown-Handler-Leaks in Export-/Settings-/About-/Image-Dialog (hängende Enter/Escape-Handler).
  • Windows: Pin-Reordering per Pointer-Events (HTML5-Drag&Drop war durch Tauris OS-Drag-Handler tot); Monaco-Sprach-Worker starten zuverlässig (Blob-URL statt data:-URI).
  • Dateien: BOM/CRLF-Roundtrip für alle Kombinationen getestet; Watch-Fehler beim Öffnen blockieren das Dokument nicht mehr.

Bekannte Einschränkungen

  • macOS-Assets werden nachgereicht; bis dahin aus dem Quellcode bauen (cargo tauri build in src-tauri/).
  • Externe Änderungen an geöffneten Bildern erfordern ein erneutes Öffnen (kein Watcher für Image-Dateien).
  • Linux-.deb registriert das .md-Icon im Dateimanager nicht automatisch — Workaround: scripts/install-folio-icons.sh.

Installation

  • Windows: Folio_0.2.0_x64-setup.exe (NSIS) oder Folio_0.2.0_x64_en-US.msi (MSI).
  • Linux: Folio_0.2.0_amd64.deb (deb-basierte Distros), Folio-0.2.0-1.x86_64.rpm oder Folio_0.2.0_amd64.AppImage.
  • macOS: aus dem Quellcode bauen (cargo tauri build im src-tauri/-Verzeichnis).