From df27700c11f27d809c912fb3bc76144cbd124768 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 18 May 2026 00:34:34 +0000
Subject: [PATCH 1/2] chore(main): release 1.1.1
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 17 +++++++++++++++++
README.md | 2 +-
package.json | 2 +-
src-tauri/Cargo.toml | 2 +-
src-tauri/tauri.conf.json | 2 +-
6 files changed, 22 insertions(+), 5 deletions(-)
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/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.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 "]
edition = "2021"
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index d65e546..03a7633 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "WaveFlow",
- "version": "1.1.0",
+ "version": "1.1.1",
"identifier": "app.waveflow",
"build": {
"beforeDevCommand": "bun run dev",
From 26c3cb2cb7cd786a8eaa62cbe31e83765f85c5e8 Mon Sep 17 00:00:00 2001
From: InstaZDLL
Date: Mon, 18 May 2026 02:36:36 +0200
Subject: [PATCH 2/2] chore: bump Cargo.lock + refresh splash docs for 1.1.1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Cargo.lock: bump waveflow to 1.1.1 to match Cargo.toml (the
release-please-lockfile-build workflow doesn't fire on PRs
authored by github-actions[bot], so we do this manually before
merging the release PR — otherwise CodeQL turns red on main
with "the lockfile must be updated" the moment the tag lands).
- docs/features/ui.md: rewrite the splash screen section to
describe the v1.1.1 backend-driven handoff (app://ready event
listener + 15 s safety-net + bounded retry loop) instead of
the v1.1.0 frontend-rAF dance that produced issue #42 on
Linux.
---
docs/features/ui.md | 8 ++++++--
src-tauri/Cargo.lock | 2 +-
2 files changed, 7 insertions(+), 3 deletions(-)
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/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",