Tauri 2.12 begrenzt Navigation auf App-Domains und verlegt App-Daten
Tauri 2.12.0, das Framework für Desktop- und Mobil-Apps mit Web-Oberfläche und Rust-Backend, ist am
- September erschienen, zusammen mit einer dritten 3.0-Alpha. Die stabile Version bringt Einstellungen, die bestimmen, wie sich eine App auf dem Rechner eines Nutzers verhält.
Zwei fallen auf. Eine neue Option limit_navigations_to_app_bound_domains, in den Webview-Buildern und als limitNavigationsToAppBoundDomains in tauri.config.json, beschränkt die Navigation auf die an die App gebundenen Domains. Und eine neue Einstellung app > appDirectoriesOverride überschreibt die Verzeichnisse, die die app_*_dir-Pfad-APIs liefern - mit einem gemeinsamen Wurzelverzeichnis oder einzeln -, sodass eine App alle Daten, auch die von Tauri selbst und von Plugins, die diese APIs nutzen, an einem selbst gewählten Ort halten kann, etwa neben der ausführbaren Datei einer portablen Version. Das lässt sich auch zur Laufzeit setzen.
Das Release macht den Berechtigungs-Handler von wry in Tauri zugänglich: Eine App kann Anfragen der Webview - Bildschirmaufnahme, MIDI, Sensoren, Dateisystemzugriff, Autoplay und andere - mit PermissionResponse::Allow, Deny oder Default beantworten. JavaScript erhält in @tauri-apps/api/app eine Funktion exit, gestützt auf die neue Berechtigung core:app:allow-exit; zum Beenden braucht es das Process-Plugin nicht mehr. Dazu kommen convert_file_src in Rust, Vollbild auf einem gewählten Monitor, das Laden von Icon-Ressourcen unter Windows und neue Fenstereffekte unter macOS.
Eine Änderung verlangt unter Android Handeln: Die Gradle-Skripte wechseln vom veralteten kotlinOptions-DSL zu compilerOptions. Das erlaubt Kotlin 2.x, hebt aber die Mindestversion von Gradle auf 8.13. Laut Notizen sollen Projekte mit älterem Gradle die erzeugten Wrapper-Eigenschaften löschen und tauri android init erneut ausführen.

Was das bedeutet
Vieles in 2.12 zielt darauf, was eine App standardmäßig darf, einzugrenzen und die übrigen Fähigkeiten ausdrücklich zu machen. Begrenzte Navigation verhindert, dass eine Webview Inhalte ansteuert, die sie nie zeigen sollte, und ein Berechtigungs-Handler in Rust ersetzt, was die Plattform-Webview sonst selbst entschieden hätte. Beides folgt Tauris Modell von Fähigkeiten, die gewährt statt vorausgesetzt werden.
Das Überschreiben der Datenverzeichnisse beantwortet einen alten Wunsch aller, die portable Apps ausliefern. Die Gradle-Anhebung ist der einzige Punkt, der einen Build brechen kann, und die Lösung steht in den Notizen.