Files
jellytau/api/jellytau_lib/fn.build_log_plugin.html
T

35 lines
5.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Cached thumbnails are handed to the webview as asset-protocol URLs by `convertFileSrc` (`asset://localhost/…` on Linux/macOS, `http://asset.localhost/…` on Windows/Android). Tauri only answers that origin when the `protocol-asset` cargo feature is compiled in and `app.security.assetProtocol.enable` is set in `tauri.conf.json`. Both are required together: with either missing the URL resolves to nothing and the webview reports `NETWORK_NO_SOURCE`, which is how offline video came to fail silently."><title>build_log_plugin in jellytau_lib - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-17e0aaed.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="jellytau_lib" data-themes="" data-resource-suffix="" data-rustdoc-version="1.97.1 (8bab26f4f 2026-07-14)" data-channel="1.97.1" data-search-js="search-fd9372ac.js" data-stringdex-js="stringdex-2da4960a.js" data-settings-js="settings-170eb4bf.js" ><script src="../static.files/storage-41dd4d93.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-fcd733ba.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-f7c3ffd8.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.svg"></head><body class="rustdoc fn"><a class="skip-main-content" href="#main-content">Skip to main content</a><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">build_log_plugin</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../jellytau_lib/index.html">jellytau_<wbr>lib</a><span class="version">0.10.1</span></h2></div><div class="sidebar-elems"><div id="rustdoc-modnav"></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content" tabindex="-1"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">jellytau_lib</a></div><h1>Function <span class="fn">build_<wbr>log_<wbr>plugin</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/jellytau_lib/lib.rs.html#1144-1175">Source</a> </span></div><pre class="rust item-decl"><code>pub(crate) fn build_log_plugin() -&gt; TauriPlugin&lt;Wry&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Cached thumbnails are handed to the webview as asset-protocol URLs by
<code>convertFileSrc</code> (<code>asset://localhost/…</code> on Linux/macOS,
<code>http://asset.localhost/…</code> on Windows/Android). Tauri only answers that
origin when the <code>protocol-asset</code> cargo feature is compiled in <em>and</em>
<code>app.security.assetProtocol.enable</code> is set in <code>tauri.conf.json</code>. Both are
required together: with either missing the URL resolves to nothing and the
webview reports <code>NETWORK_NO_SOURCE</code>, which is how offline video came to fail
silently.</p>
<p>The scope is <code>$APPDATA/thumbnails/**</code>, not the storage root: downloaded media
moved to the loopback media server in DR-137, so <code>imageCache</code> is the only
remaining <code>convertFileSrc</code> caller and the database and the encrypted-token
fallback file — which share that root — never need to be readable by the
webview. Widen it only if something other than thumbnails starts resolving
through <code>convertFileSrc</code> again.</p>
<p>TRACES: UR-012, UR-071 | DR-134, DR-137, DR-198
Build the logging plugin.</p>
<p>Replaces the previous <code>env_logger</code> init, which wrote to <strong>stdout only</strong>. That
was invisible to anyone who launched from a desktop icon, and worse than
useless on Android: stdout is not logcat, so the Rust backend produced no
visible output at all on the platform carrying the hardest bugs in this
projects history (the autoplay deadlock, the truncated-stream restart, the
background-audio stall). tauri-plugin-log routes to logcat there for free.</p>
<p>Three decisions worth keeping:</p>
<ul>
<li><strong>Every line goes through <code>redact</code> first.</strong> A credential must never reach
disk, not merely be stripped later when a bundle is exported — a file on
the device is already the disclosure.</li>
<li><strong>The size cap is deliberate.</strong> <code>RotationStrategy::KeepAll</code> would let a
long-running session fill a phone. One rotation keeps yesterdays evidence
without unbounded growth.</li>
<li><strong>The level is read from disk.</strong> Someone reproducing a bug needs debug
logging to survive the restart that reproduces it.</li>
</ul>
<p>TRACES: UR-078 | DR-218</p>
</div></details></section></div></main></body></html>