dark glass, the whole app: frost on every pane, and the periscope pattern for every glass bar the frost sits under - backdrop-filter black-flattens over see-through ground (measured 3-vs-40), so bars over frost blur a scroll-synced clone behind a static band cut instead; the bar moved out of the scroller (pane shell, inner .content keeping the closest-contract, the old negative-margin flow replayed by a spacer after the artist page's sticky physics named the scrollport padding sacred); painted pages declare data-painted and keep the real backdrop bar, which is how the artist hero runs under the glass again; np wash rides the scroll away and dissolves to frost like the album banner; perf measured to vsync - 142px blur wraps (27.9ms frames down to 6.9), idle scroll-gated reclones, clip-path band, content-visibility on library rows, async cover decode; mini frosts over the mini:glass channel and the rest-frame flags ride window config because the env-var lane dies on some webview2 runtimes

This commit is contained in:
KeelrLeek committed 2026-08-26 14:55:25 -05:00
1 parent 225c9139aa
commit 6ba1864498
16 files changed
+821 -117

No files matched your search

+29 -48
View File
@@ -27,39 +27,6 @@ mod ytdlp;
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
// Two WebView2 presentation fixes, both delivered by env var because
// tauri.conf's additionalBrowserArgs never reaches the browser process
// (verified via its command line). Merge, don't clobber — dev launches
// carry the CDP port here. Both found 2026-08-26 via the dark-glass work:
//
// 1. NO delegated compositing: with it, DWM composes the webview's layers
// at rest and blends semi-transparent darks in the wrong colorspace —
// the app rested washed-out LIGHT and looked correct only while an
// animation forced Chromium to compose in-process.
// 2. Force the sRGB color profile: on an HDR display the MAXIMIZED
// window's rest path takes a different SDR-white tone mapping than
// the animated path — covers blew out near-white at rest and snapped
// correct on hover. One profile, one mapping, both paths agree.
#[cfg(windows)]
{
const KEY: &str = "WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS";
let mut args = std::env::var(KEY).unwrap_or_default();
let mut ensure = |flag: &str, key: &str| {
if !args.contains(key) {
if !args.is_empty() {
args.push(' ');
}
args.push_str(flag);
}
};
ensure(
"--disable-features=msWebOOUI,msPdfOOUI,msSmartScreenProtection,DelegatedCompositing",
"DelegatedCompositing",
);
ensure("--force-color-profile=srgb", "force-color-profile");
std::env::set_var(KEY, args);
}
tauri::Builder::default()
.manage(state::AppState::default())
.setup(|app| {
@@ -256,23 +223,37 @@ pub fn run() {
vocal_sep::vocal_sep_download,
])
.run({
#[allow(unused_mut)]
let mut context = tauri::generate_context!();
// Debug builds expose CDP on 9222 for instrumentation (see HANDOFF.md).
// wry always sets AdditionalBrowserArguments programmatically, so the
// WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS env var is ignored; the flag has
// to go through the window config. Explicit args replace wry's defaults,
// so those are restated here.
// Browser args ride the WINDOW CONFIG, nothing else: wry always sets
// AdditionalBrowserArguments programmatically, and at least WebView2
// 151.x then drops the WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS env var
// entirely — flags "delivered" that way vanish silently on some
// runtimes (they held on the home machine, gone on the work one).
// Verify in the browser process command line (Get-CimInstance
// Win32_Process), never by assumption. Explicit args replace wry's
// defaults, so those are restated. Two WebView2 presentation fixes
// live here (2026-08-26, the dark-glass work):
//
// 1. NO delegated compositing: with it, DWM composes the webview's
// layers at rest and blends semi-transparent darks in the wrong
// colorspace — the app rested washed-out LIGHT and looked correct
// only while an animation forced Chromium to compose in-process.
// 2. Force the sRGB color profile: on an HDR display the MAXIMIZED
// window's rest path takes a different SDR-white tone mapping
// than the animated path — covers blew out near-white at rest
// and snapped correct on hover. One profile, one mapping, both
// paths agree.
//
// Debug builds add CDP on 9222 for instrumentation (see HANDOFF.md).
let base = "--disable-features=msWebOOUI,msPdfOOUI,msSmartScreenProtection,DelegatedCompositing \
--autoplay-policy=no-user-gesture-required \
--force-color-profile=srgb";
#[cfg(debug_assertions)]
{
for window in &mut context.config_mut().app.windows {
window.additional_browser_args = Some(
"--disable-features=msWebOOUI,msPdfOOUI,msSmartScreenProtection \
--autoplay-policy=no-user-gesture-required \
--remote-debugging-port=9222"
.into(),
);
}
let args = format!("{base} --remote-debugging-port=9222");
#[cfg(not(debug_assertions))]
let args = base.to_string();
for window in &mut context.config_mut().app.windows {
window.additional_browser_args = Some(args.clone());
}
context
})