diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 5fdd883..c4ddc74 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.1.0" + ".": "1.1.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 43c843b..d865e7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [1.1.1](https://github.com/InstaZDLL/WaveFlow/compare/v1.1.0...v1.1.1) (2026-05-18) + + +### Bug Fixes + +* **ci:** grant actions:write to fan-out step in release.yml ([2cf4b8d](https://github.com/InstaZDLL/WaveFlow/commit/2cf4b8d9282887502d52a918dea644aae0c6f2cc)) +* **ci:** update winget-releaser pinned SHA (v2 head moved) ([25a969e](https://github.com/InstaZDLL/WaveFlow/commit/25a969e270f332daff82a0172dc7121980e66e7f)) +* **readme:** restore emerald color on version badge ([211d12e](https://github.com/InstaZDLL/WaveFlow/commit/211d12e6372949a39dfc04abc54f5f4a5822a552)) +* **readme:** switch version badge to shields.io static/v1 endpoint ([c020e4a](https://github.com/InstaZDLL/WaveFlow/commit/c020e4ac6246087a3064b3636458d33a8f1bd49b)) +* **share:** use full-res artwork + real blur on Now Playing card ([f6d439d](https://github.com/InstaZDLL/WaveFlow/commit/f6d439df3752770e98728d788eedc579dd87fcce)) +* **splash:** allow retry when reveal_main_close_splash fails ([446a153](https://github.com/InstaZDLL/WaveFlow/commit/446a153d9dbca7f602ecbbfcf3f3563317bb22f4)) +* **splash:** emit app://ready from useEffect instead of rAF ([e7da1c4](https://github.com/InstaZDLL/WaveFlow/commit/e7da1c41d81d89b66b41484588b9553bd55dbbc7)) +* **splash:** move handoff to backend `app://ready` listener (closes [#42](https://github.com/InstaZDLL/WaveFlow/issues/42)) ([0e5618a](https://github.com/InstaZDLL/WaveFlow/commit/0e5618aa1b1d6eb92a11c67abb853532c7220c11)) +* **splash:** move handoff to backend app://ready listener (closes [#42](https://github.com/InstaZDLL/WaveFlow/issues/42)) ([#43](https://github.com/InstaZDLL/WaveFlow/issues/43)) ([1c43fb9](https://github.com/InstaZDLL/WaveFlow/commit/1c43fb93e4451c474c8f61d90cd46ac1d0a68e27)) +* **splash:** retry fallback in a loop + don't close splash on main reveal failure ([6c1f7ac](https://github.com/InstaZDLL/WaveFlow/commit/6c1f7accd851e121a26334e8bd47b695d191873b)) +* **splash:** set native window backgroundColor to avoid white flash on windows ([8f29b4f](https://github.com/InstaZDLL/WaveFlow/commit/8f29b4f07cea1a3055e32443f6d92ab7e0b1ec17)) + ## [1.1.0](https://github.com/InstaZDLL/WaveFlow/compare/v1.0.0...v1.1.0) (2026-05-17) ### Features diff --git a/README.md b/README.md index 486bc80..967160a 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@
-
+
diff --git a/docs/features/ui.md b/docs/features/ui.md
index d61ccc6..b4a13de 100644
--- a/docs/features/ui.md
+++ b/docs/features/ui.md
@@ -52,9 +52,13 @@ Two entry points in the [`PlayerBar`](../../src/components/player/PlayerBar.tsx)
## Splash screen
-To hide the cold-start delay (Windows SmartScreen / Defender scanning every freshly-extracted DLL on the very first launch after install, plus the `setup()` chain in [`lib.rs`](../../src-tauri/src/lib.rs) — opening `app.db` + running migrations, creating the default profile, cold-initialising cpal/WASAPI), the main window is created with `"visible": false` and a small secondary window (`label: "splashscreen"`, 360×240, transparent, decorations off, always-on-top, off the taskbar) shows a WaveFlow logo + indeterminate progress bar while the backend boots and the React bundle parses.
+To hide the cold-start delay (Windows SmartScreen / Defender scanning every freshly-extracted DLL on the very first launch after install, plus the `setup()` chain in [`lib.rs`](../../src-tauri/src/lib.rs) — opening `app.db` + running migrations, creating the default profile, cold-initialising cpal/WASAPI), the main window is created with `"visible": false` and a small secondary window (`label: "splashscreen"`, 360×240, opaque `#121212`, decorations off, always-on-top, off the taskbar) shows a WaveFlow logo + indeterminate progress bar while the backend boots and the React bundle parses.
-The static HTML lives in [`public/splash.html`](../../public/splash.html) (no JS, inline SVG logo, single CSS animation) so it paints the instant the WebView2 process spawns. [`main.tsx`](../../src/main.tsx) runs the takeover after the first React frame: show the main window first, then close the splash so the desktop is never visible between the two. The mini-player webview branches out via `?mini=1` and skips the dance.
+The static HTML lives in [`public/splash.html`](../../public/splash.html) (no JS, inline SVG logo, single CSS animation) so it paints the instant the WebView2 process spawns. The splash → main handoff is **driven from the backend** — the frontend's [`ReadySignal`](../../src/components/common/ReadySignal.tsx) component emits `app://ready` after React's first commit (via `useEffect`, not `requestAnimationFrame` — WebKitGTK 2.52 suspends rAF callbacks while a window is `visible: false`), and [`lib.rs`](../../src-tauri/src/lib.rs)'s setup installs an `app.listen("app://ready", …)` listener that calls `reveal_main_close_splash`: show main first, set focus, then close the splash so the desktop is never visible between the two. A 15 s safety-net timer + bounded retry loop (10 attempts, 250 ms backoff) revives the handoff if the event never arrives. The mini-player webview branches out via `?mini=1` and skips the dance.
+
+Why backend-driven: v1.1.0 ran the handoff entirely in `main.tsx` via `requestAnimationFrame` + IPC `window.show()` + `splash.close()`. On Linux WebKitGTK 2.52+ the heavy first-launch init (migrations + DB pool + WebKit profile dir) raced the rAF window, the show()/close() could fire on a non-ready webview, and the user was stuck on an eternal splash (issue #42). Native-side ownership + an explicit "DOM committed" signal is robust to that race.
+
+Splash window background is opaque on purpose: `"transparent": true` forces an alpha-capable EGL config that some WebKitGTK builds reject, doubling the EGL failure surface (see also the AppImage incompatibility note for WebKitGTK 2.52+).
## System tray
diff --git a/package.json b/package.json
index b89a33c..07f0860 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "waveflow",
"private": true,
- "version": "1.1.0",
+ "version": "1.1.1",
"type": "module",
"license": "GPL-3.0",
"scripts": {
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index 5ab736a..6df0b85 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -6777,7 +6777,7 @@ dependencies = [
[[package]]
name = "waveflow"
-version = "1.1.0"
+version = "1.1.1"
dependencies = [
"alsa",
"anyhow",
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index bcb3f17..02b4299 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "waveflow"
-version = "1.1.0"
+version = "1.1.1"
description = "Local music player for desktop — Spotify-inspired UI, real-time audio engine, your files stay on your machine."
authors = ["InstaZDLL