Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ body:
attributes:
label: QuickPlay version
description: From the settings page (gear in the title bar) or `waveflow-quickplay --version`.
placeholder: "1.1.0"
placeholder: "1.2.0"
validations:
required: true

Expand Down Expand Up @@ -84,7 +84,7 @@ body:
label: Steps to reproduce
description: Numbered steps a stranger could follow on a fresh install.
placeholder: |
1. Install QuickPlay 1.1.0 with the Windows installer.
1. Install QuickPlay 1.2.0 with the Windows installer.
2. Right-click a 24-bit FLAC → "Play with QuickPlay".
3. Observe the status line.
validations:
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "waveflow-quickplay"
version = "1.1.0"
version = "1.2.0"
description = "WaveFlow QuickPlay — a standalone, lightweight egui/eframe audio player built on WaveFlow's Rust audio infrastructure."
authors = ["InstaZDLL <github.105mh@8shield.net>"]
edition = "2021"
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</p>

<p align="center">
<img src="https://img.shields.io/badge/version-1.1.0-10b981?style=flat-square" alt="Version 1.1.0" />
<img src="https://img.shields.io/badge/version-1.2.0-10b981?style=flat-square" alt="Version 1.2.0" />
<img src="https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey?style=flat-square" alt="Windows, Linux and macOS" />
<img src="https://img.shields.io/badge/opens%20in-%3C%20300%20ms-10b981?style=flat-square" alt="Opens in under 300 ms" />
<img src="https://img.shields.io/badge/license-GPL--3.0--only-green?style=flat-square" alt="GPL-3.0-only" />
Expand Down Expand Up @@ -157,7 +157,7 @@ They are complementary, not two sizes of the same thing: QuickPlay deliberately
<td align="center"><sub><b>Artwork</b> · the cover edge to edge, window freely resizable</sub></td>
</tr>
<tr>
<td colspan="2" align="center" valign="top"><img src="docs/screenshots/settings.png" alt="Settings page in place of the controls: language picker in the header, then name, version, tagline, engine, licence and repository link" /></td>
<td colspan="2" align="center" valign="top"><img src="docs/screenshots/settings.png" alt="Settings page in place of the controls: language picker in the header, then name, version, tagline, engine, licence and repository link, with the update check a scroll below" /></td>
</tr>
<tr>
<td colspan="2" align="center"><sub><b>Settings</b> · language and about, in the same 154 points</sub></td>
Expand Down
Binary file modified assets/icon-128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/icon.icns
Binary file not shown.
Binary file modified assets/icon.ico
Binary file not shown.
56 changes: 56 additions & 0 deletions docs/releases/v1.2.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<p align="center">
<img src="https://github.com/InstaZDLL/waveflow-quickplay/raw/main/assets/icon-128.png" width="96" alt="WaveFlow QuickPlay" />
</p>

# WaveFlow QuickPlay 1.2.0

QuickPlay now keeps itself up to date, pinning works from a Wayland session through XWayland, it takes WaveFlow's new logo, and a full code review brings a round of fixes to playback, the playlist and hand-offs between launches.

## New

- **Automatic updates**: at launch, QuickPlay looks for a newer release. The Windows installer's copy, the macOS app and the AppImage download it in the background, check it against QuickPlay's release key and install it when you close QuickPlay. The next launch is the new version, and nothing that plays is cut. A `.deb` or an `.rpm` only says that the new version is out, with a link to it in the settings, and your package manager installs it. *Check for updates at launch*, at the bottom of the settings page, turns the check off.
- **Pinning works through XWayland in Wayland sessions**: only the compositor may keep a window on top there, so the pin did nothing. Pinning QuickPlay in a Wayland session now restarts it under XWayland, where the pin works (GNOME, KDE) and the playlist docks to the player again. The queue, the track, the position and the play or pause state carry over. Unpinning goes back to Wayland. The pin's tooltip says what a click will do, or why a session without XWayland cannot pin.
- **WaveFlow's new logo**: the W of its name drawn as a wave replaces the three bars, in the title bar, the settings, the *Continue in WaveFlow* button and the app icon on every system.

## Fixed

- **Headphones in or out no longer stop playback on macOS.** A change of the default output was taken for a lost device: the engine was released and the track stopped. Playback now follows the new output.
- **Next after deleting the current track** plays the track that moved up into its place. It skipped it, and shuffle skipped it too.
- **Stop, Clear and removing the playing track stay that way.** The end of the previous track, or an error, arriving at the same moment could start another one.
- **A device that cannot be opened** shows the reason instead of leaving the player stuck on Loading.
- **Resuming a track paused in its last second** after more than five seconds no longer cuts what was left of it.
- **The spectrum keeps moving** on mono and low-rate output devices, where it froze for the whole track.
- **Steady playlist scrolling**: the list no longer jumps while scrolling, nor stops short of the bottom of a tall window.
- **The settings header fits** a 320-point window: the language picker no longer runs over the title.
- **A launch no longer hangs** behind another program that connects to QuickPlay and sends nothing. A file name that is not valid Unicode or holds a line break opens in a window of its own instead of being mangled.
- **Lyrics**: a damaged `.lrc` can no longer freeze the window, an invalid `[offset:]` no longer resets the timing, and a sidecar named `.LRC` is found on Linux.
- **Linux packages** declare the system libraries they need, so an older distribution refuses the package at install instead of QuickPlay failing at launch.
- **`SHA256SUMS-windows.txt`** now has Unix line ends, so `sha256sum -c` checks the installer on Linux and macOS.

## Changed

- The licence is **GPL-3.0-only**, as `Cargo.toml` and the packages already said; the README no longer offers "any later version".
- An unknown `--option` on the command line is logged and ignored instead of being opened as a file.

## Install

- **Windows**: download `waveflow-quickplay_1.2.0_x64-setup.exe`. It installs for the current user without administrator rights and registers the context-menu entries. Run it over 1.1.0 to upgrade; your settings live in their own file and are kept.
- **Linux**: the `.deb` for Debian and Ubuntu, the `.rpm` for Fedora, RHEL and openSUSE, or the `.AppImage` for any distribution (make it executable and run it). All three carry the desktop entry, so QuickPlay appears in "Open with" for audio files.
- **macOS**: download `waveflow-quickplay_1.2.0_macos-universal.dmg`, open it and drag *WaveFlow QuickPlay* to Applications. The app is signed ad hoc, not by an Apple Developer ID, so macOS blocks the first launch: open System Settings › Privacy & Security and choose *Open Anyway* (on macOS 14 and earlier, right-click the app and choose *Open*).

1.0.0 and 1.1.0 do not look for updates, so this version is installed by hand once. From 1.2.0 on, the Windows, macOS and AppImage copies update themselves.

SHA-256 checksums are in `SHA256SUMS-windows.txt`, `SHA256SUMS-linux.txt` and `SHA256SUMS-macos.txt`. `latest.json` is what the updater reads: it lists each package with its signature.

> [!NOTE]
> The Windows installer is signed with WaveFlow's self-signed certificate, so Windows may still show a SmartScreen warning on first launch.

## Known limitations

- **Pinned on Wayland**, QuickPlay runs under XWayland, which can look softer at fractional scaling unless the compositor scales X11 windows natively. A session without XWayland cannot pin.
- A `.deb`, an `.rpm` and a copy run from a read-only place (the disk image itself, or an app macOS runs from a translocated copy because it was not moved to Applications) are never replaced by QuickPlay: they only say that a new version is out.
- On macOS, Finder has no per-app menu entries, so there is no *Add to QuickPlay playlist* there; *Open With* replaces the queue, as *Play with* does on Windows.
- **Continue in WaveFlow** needs WaveFlow Desktop 2.0.0-beta.1 or later, read from the install's metadata. The button stays hidden for an older WaveFlow, for one whose version cannot be read (such as an AppImage put on `PATH` by hand), and for the Flatpak build, whose sandbox cannot see the hand-over file.
- The output device is the system default, opened in shared mode.

**Full changelog**: https://github.com/InstaZDLL/waveflow-quickplay/compare/v1.1.0...v1.2.0
Binary file modified docs/screenshots/player-and-playlist.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/player-compact.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/player-expanded.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 18 additions & 8 deletions src/ui/icons.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ pub enum Icon {
Close,
/// A gear.
Settings,
/// WaveFlow's three bars.
/// WaveFlow's mark: the W of its name drawn as a wave.
Logo,
/// Two arrows chasing each other round a circle.
Repeat,
Expand Down Expand Up @@ -218,13 +218,23 @@ pub fn paint(painter: &Painter, rect: Rect, icon: Icon, color: Color32) {
painter.circle_stroke(c, u(0.10), stroke);
}
Icon::Logo => {
for (x, h) in [(-0.30_f32, 0.30_f32), (0.0, 0.46), (0.30, 0.22)] {
painter.rect_filled(
Rect::from_center_size(p(x, 0.0), vec2(u(0.16), u(2.0 * h))),
1.0,
color,
);
}
// WaveFlow's small-size symbol, in its 256 box: one and a half
// periods of a sine from x 35 to 221 about y 124 (4 above the
// middle, the optical centre), amplitude 60, stroked at 46 with
// round ends. Its ends sit on the inflection points, so it
// reads W and not M.
let at = |x: f32, y: f32| p((x - 128.0) / 256.0, (y - 128.0) / 256.0);
let points: Vec<Pos2> = (0..=48)
.map(|i| {
let x = 35.0 + 186.0 * i as f32 / 48.0;
let y = 124.0 + 60.0 * (std::f32::consts::PI * (x - 35.0) / 62.0).sin();
at(x, y)
})
.collect();
let width = u(46.0 / 256.0);
painter.circle_filled(points[0], width / 2.0, color);
painter.circle_filled(points[points.len() - 1], width / 2.0, color);
painter.add(Shape::line(points, Stroke::new(width, color)));
}
Icon::Warning => {
painter.add(Shape::convex_polygon(
Expand Down
Loading