Folio v0.2.0
Pre-release
Pre-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 mitFOLIO_AUTOMATION=1starten. 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.lockist 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+Zim 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+Vmit 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 buildinsrc-tauri/). - Externe Änderungen an geöffneten Bildern erfordern ein erneutes Öffnen (kein Watcher für Image-Dateien).
- Linux-
.debregistriert das.md-Icon im Dateimanager nicht automatisch — Workaround:scripts/install-folio-icons.sh.
Installation
- Windows:
Folio_0.2.0_x64-setup.exe(NSIS) oderFolio_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.rpmoderFolio_0.2.0_amd64.AppImage. - macOS: aus dem Quellcode bauen (
cargo tauri buildimsrc-tauri/-Verzeichnis).