Skip to content

Releases: imzenreally/plexamp-classic

v0.9.0 — Native Panel Windows

Choose a tag to compare

@imzenreally imzenreally released this 18 Sep 17:57

Plexamp Classic v0.9.0 — Native Panel Windows

This release replaces the transparent float/cluster surface with four real, independent OS windows:

  • Main Winamp player
  • Playlist editor
  • 10-band equalizer
  • MilkDrop/Butterchurn visualizer

The main player remains the sole Webamp/audio owner. Satellite windows synchronize through validated IPC, so there is no transparent host surface between panels to eat clicks or create drag walls on KDE/Wayland.

What changed

  • Native panel windows are now the default
  • Legacy Desktop/Float sessions migrate automatically
  • Windowed Player remains available from View → Windowed Player
  • Each panel remembers open state and screen bounds
  • Playlist supports selection, double-click playback, drag reorder, remove, and clear
  • EQ supports preamp, 10 bands, and ON/OFF
  • Standalone Butterchurn visualizer receives live waveform data from the main audio renderer
  • Scale and Always-on-Top apply consistently across native panels
  • Hardened custom app:// protocol and panel IPC boundary

Installation

Linux

Download Plexamp-Classic-0.9.0-x86_64.AppImage, make it executable, and run it:

chmod +x Plexamp-Classic-0.9.0-x86_64.AppImage
./Plexamp-Classic-0.9.0-x86_64.AppImage

macOS

Download Plexamp-Classic-0.9.0-universal.dmg.

The app is currently ad-hoc signed, not Apple-notarized. If Gatekeeper blocks first launch, right-click the app and choose Open, then confirm.

Integrity

Verify downloads against SHA256SUMS attached to this release.

Plexamp Classic v0.8.2

Choose a tag to compare

@imzenreally imzenreally released this 17 Sep 23:04

Plexamp Classic v0.8.2 — Boundary fix, eject→library, ⌘L everywhere

Fixed

  1. The remaining drag wall (left/up). Webamp pins panel positions at ≥0 relative to its host origin, so panels dragged left or up still stopped dead even after v0.8.1's right/down fix. The float window now pre-grows in all four directions at drag start — before webamp's drag math engages (its pointer deltas are screen-space, invariant to window moves) — with a host counter-shift so panels stay visually fixed mid-drag.
  2. ⌘L / ⌘Q work everywhere. The window-level hotkey handler was Linux-only; on macOS only the menu accelerator existed, which needs a frontmost app — dead in float mode. Now handled via before-input-event on all platforms. Toggle semantics upgraded: ⌘L only closes the library when it is visible and focused; if it's minimized, on another Space, or buried, it brings it to the front instead — ⌘L can never feel like "nothing happened."
  3. Eject button opens the Media Library. The eject button used to trigger webamp's local-file picker — useless in a Plex-streaming app. It now toggles the Media Library (webamp's own menu remains on the O button).

Verified

  • macOS dev instance (CDP real-input): −350px left drag tracked −332px (screen-edge clamp only); −250px up drag exact; eject→library PASS; ⌘L→library PASS; drift regression avg 2.2px
  • Linux: AppImage built from the public tag, all 5 ASAR gates pass; live-run on KDE Wayland — float geometry correct on a 1745×982 work area, KWin does not give the float window keyboard focus (document.hasFocus() === false with the window visible)

Compare: v0.8.1...v0.8.2

Plexamp Classic v0.8.1

Choose a tag to compare

@imzenreally imzenreally released this 17 Sep 18:57

Plexamp Classic v0.8.1 — Float drag fix

Fixes the "invisible wall" from v0.8.0: dragging a panel toward the screen edge (or a second monitor) stopped at an invisible boundary instead of the window following the panels.

What was wrong

Two compounding bugs in the new float mode:

  1. The window never grew during real drags. Live growth ran on a trailing debounce — real mice fire events every ~8-16ms, so the timer kept resetting and never fired. The window only expanded after you released the drag. (The original test passed because synthetic input moved slower than real hardware.)
  2. The window was pinned to one display. Both renderer and main process clamped the float window to the display it was born on. Dragging panels toward a second monitor (e.g. an ultrawide) hit that display's edge permanently.

Fixed

  • Live growth now uses a leading-edge throttle: fires on the first event of a burst, then at most every 33ms — cannot starve under continuous input.
  • The float window clamps to the union of all displays' work areas, so panels can be dragged across monitors freely.

Verified

  • Fast-drag test at real mouse cadence (8ms events): window grows mid-drag with ~80px lookahead — PASS
  • Drift test (5 drags): avg error 2px, no accumulation — PASS

Full changelog: v0.8.0...v0.8.1

Plexamp Classic v0.8.0

Choose a tag to compare

@imzenreally imzenreally released this 17 Sep 18:03
5115ccd

Plexamp Classic v0.8.0 — Float mode

Floating panels, everywhere

True Winamp 2.91-style floating panels — now on macOS and Linux. The main player, equalizer, playlist, and visualizer float as independent draggable windows over your desktop, with see-through, click-through gaps between them. This replaces the old "Desktop Panels" mode (and the single-window compromise Linux had been forced into).

Why it's different from before: the old desktop mode used a transparent full-screen overlay, which Wayland compositors kept handing keyboard focus — the app appeared to hijack your keystrokes, so Linux was locked to the single-window mode. Float mode uses one small transparent window that only covers the panels. No overlay, no focus black hole — verified on a real Wayland compositor: focus moves freely between the player and your other apps.

  • Drag any panel anywhere; the window follows and grows around the cluster
  • Panel gaps are click-through — your desktop keeps working
  • Panel positions and cluster placement persist across restarts
  • macOS: View → Floating Panels (⌘P) / Windowed Player (⌘O)
  • Linux: tray menu → Player Mode, or the new right-click menu

Right-click menu

Right-click any panel for a Winamp-style menu: panel toggles (Playlist, Equalizer, MilkDrop), Media Library, Always on Top, Scale, Player Mode, and Quit. Webamp's own menu is still there on the ⓞ button, and track right-clicks in the playlist keep their behavior.

Fixes under the hood

  • Zoom (menu/tray/hotkeys) rescales the floating window correctly
  • Legacy desktop sessions migrate to float automatically
  • macOS: transparent windows larger than the screen had their geometry silently clamped; the float window is now capped to the display
  • macOS: movable: false blocked programmatic window positioning — fixed

Install

Linux (AppImage): chmod +x Plexamp-Classic-0.8.0-x86_64.AppImage && ./Plexamp-Classic-0.8.0-x86_64.AppImage (runs with --no-sandbox by AppImage default; FUSE required)

macOS (DMG): unsigned/ad-hoc build — after dragging to Applications, clear the quarantine bit if Gatekeeper complains: xattr -dr com.apple.quarantine "/Applications/Plexamp Classic.app"

Checksums in Plexamp-Classic-0.8.0-SHA256SUMS.txt.

Plexamp Classic v0.7.3

Choose a tag to compare

@imzenreally imzenreally released this 17 Sep 06:12

The windowed player finally fits its content

Since the first releases, the Windowed Player never shrank to the Winamp cluster: the auto-size routine crashed with a ReferenceError on every panel detection (a filter callback referencing the array being built), so the window stayed at the 740×480 default — a lone Winamp panel floating in a sea of empty background on both macOS and Linux.

  • The window now wraps the panels tightly: 299×144 with just the main player open.
  • Zoom-aware sizing — getBoundingClientRect() reports unzoomed CSS px, so dimensions are scaled by the current zoom factor. The window grows to 341×162 at 115% instead of clipping its content.
  • Panel toggles resize the window — opening Playlist / Equalizer / MilkDrop grows the frame; closing them shrinks it.
  • Dropped the legacy 700px minimum width (phantom 425px of empty window beside a lone panel).

Verification

  • Both artifacts built from fresh public clones of the v0.7.3 tag (2c9bc54).
  • Linux AppImage E2E with real X11 geometry assertions: window 299×144 (lone panel), 341×162 after Ctrl+=; tray, zoom hotkeys, Ctrl+L, and Ctrl+Q all pass. Vision-verified screenshot: tight fit, no clipping, no dead space.
  • Package audits clean on both artifacts.
  • SHA-256 checksums attached alongside both artifacts.

macOS note: this was never a Linux-only bug — Windowed mode on macOS had the same oversized window since the beginning. The fix applies to both platforms.

Plexamp Classic v0.7.2

Choose a tag to compare

@imzenreally imzenreally released this 17 Sep 05:49

Quit the app — finally, three ways

  • Tray menu → Quit. The v0.7.1 tray had Scale but no exit; combined with a frameless window, no taskbar entry, and no menu bar, kill -9 was the only way out. Sorry about that.
  • Ctrl+Q from the player window.
  • Closing the player window (v0.7.1 behavior, unchanged).

Desktop Panels mode is now macOS-only

On Linux the Desktop Panels overlay (transparent full-workArea surface with click-through forwarding) held invisible keyboard focus — under Wayland, keystrokes meant for other applications were swallowed by a window you can't see. Typing in another app while Plexamp Classic was open simply failed.

  • Linux now always opens the Windowed Player, even for sessions previously saved as Desktop Panels.
  • The option is hidden from the View menu and tray on Linux.
  • macOS behavior is unchanged — Desktop Panels remains a first-class mode there.

Verification

  • Both artifacts built from fresh public clones of the v0.7.2 tag (b9923ad).
  • Linux AppImage E2E on Debian 12 with real X11 input: a session saved as desktop opens the windowed player; Ctrl+Q exits cleanly; tray, Ctrl+=/Ctrl+0 zoom, and Ctrl+L library toggle all pass. Every assertion requires code absent from v0.7.1, proving the artifact under test is fresh.
  • Package audits clean: no credentials, .env, or non-redistributable preset pack in either artifact.
  • SHA-256 checksums attached alongside both artifacts.

Plexamp Classic v0.7.1

Choose a tag to compare

@imzenreally imzenreally released this 17 Sep 05:21

Linux usability fixes

  • System tray menu — Plexamp Classic now registers a tray icon on Linux with a menu for everything that was previously only reachable through the (invisible on Linux) app menu: Playlist / Equalizer / MilkDrop panels, Media Library, Always on Top, Scale (75–200%), and Desktop Panels / Windowed Player mode.
  • Scale keyboard shortcuts — Ctrl+=, Ctrl+-, and Ctrl+0 now adjust zoom on Linux (⌘= / ⌘- / ⌘0 on macOS, unchanged).
  • Ctrl+L now opens the Media Library on Linux. On v0.7.0 the shortcut was silently dead on every Linux desktop: frameless windows meant no menu bar, so the menu accelerator never registered with GTK. It is now handled at the window level, independent of menu state.

macOS

No functional change. The tray and Ctrl+L window-level handler are gated to Linux; the zoom handler keeps ⌘ on macOS. Verified on macOS: tray does not register, ⌘=/⌘0 zoom behaves as before, ctrl+= does not double-fire.

Installation

macOS — unsigned and not notarized; right-click → Open on first launch if Gatekeeper blocks it.

Linux — chmod +x and run. The desktop entry launches with --no-sandbox, the standard electron-builder AppImage default (Chromium's sandbox cannot be setuid through FUSE). Requires glibc 2.25+.

Verification

  • Both artifacts built from fresh public clones of the v0.7.1 tag (5c1e655).
  • Linux AppImage end-to-end on Debian 12 with real X11 input: tray registers; Ctrl+= raises zoom (1 → 1.15), Ctrl+0 resets; a real ctrl+l keypress opens the Media Library.
  • macOS packaged build spot-checked: bundle version 0.7.1, fixes present in the app archive, tray inert.
  • SHA-256 checksums attached alongside both artifacts.

Plexamp Classic v0.7.0

Choose a tag to compare

@imzenreally imzenreally released this 17 Sep 04:36

Linux support (x86_64 AppImage)

Plexamp Classic now ships for Linux alongside macOS:

  • Single-file AppImage for x86_64 — download, chmod +x, run.
  • Standard desktop integration: Audio category, matching StartupWMClass, and a proper icon set.
  • Runs on distros with glibc 2.25 or newer (Ubuntu 20.04-era and up).

macOS installation

This build is unsigned and not notarized. If Gatekeeper blocks it on first launch, right-click the app and choose Open, then confirm.

Linux installation

chmod +x Plexamp-Classic-0.7.0-x86_64.AppImage
./Plexamp-Classic-0.7.0-x86_64.AppImage

On first launch, choose Log in to discover owned and shared servers, or set PLEX_HOST and PLEX_TOKEN environment variables for a direct LAN server.

The AppImage launches with --no-sandbox — the standard electron-builder default for AppImages, because Chromium's sandbox cannot be setuid through FUSE.

Verification

  • Universal DMG for Apple silicon and Intel Macs; Linux AppImage for x86_64.
  • Built from commit 812ae8e (v0.7.0) from fresh public clones of the tag.
  • Both packages audited: no Plex credentials, account state, .env, or non-redistributable preset pack.
  • Linux AppImage runtime-tested end-to-end on Debian 12: the library connects to a real Plex server, and album playback reaches PLAYING with audio streaming through the TLS-tolerant proxy (HTTP 206, Range passthrough).
  • SHA-256 checksums attached alongside both artifacts.

Plexamp Classic v0.6.0

Choose a tag to compare

@imzenreally imzenreally released this 07 Sep 00:39

View and layout controls

  • Added a View menu with live controls for Playlist, Equalizer, and MilkDrop.
  • The Media Library is now a checkable View item; ⌘L is reserved for it instead of leaking into Webamp's file hotkey.
  • Main Player stays visible as the app's base surface.
  • View-menu checkmarks stay synchronized with Webamp panel state.

Persistence

  • Restores Playlist, Equalizer, and MilkDrop visibility across relaunches.
  • Restores player mode, zoom, windowed bounds, Media Library state, and Always on Top.
  • Session-state normalization keeps malformed older state from stranding the app in an inaccessible layout.

macOS installation

This build is unsigned and not notarized. If Gatekeeper blocks it on first launch, right-click the app and choose Open, then confirm.

Verification

  • Universal DMG for Apple silicon and Intel Macs.
  • Built from commit eac0eec (v0.6.0).
  • SHA-256 checksum attached alongside the DMG.

Plexamp Classic v0.5.0

Choose a tag to compare

@imzenreally imzenreally released this 06 Sep 04:46

Artist-first search tree

Searching now opens an expandable tree instead of flat result tiles:

▾ Nirvana
  ▾ Albums (4)
  ▸ Singles & EPs (3)
  ▸ Live Albums (3)
  ▸ Compilations (6)
  • Expanding an artist loads its real Plex discography — core albums plus Plex-native release groups (Singles & EPs, Live Albums, Compilations, etc. when the server provides them). Releases are de-duplicated across groups.
  • Global album/track title matches (e.g. a Tom Waits song named “Nirvana”) stay in a clearly separate Other matching releases/tracks branch, so they no longer masquerade as the artist’s discography.
  • Full keyboard tree navigation: ↑/↓ select, → expand, ← collapse or go to parent, Enter play/open. Album leaves queue the full album through the existing Plex playback path.
  • Non-empty groups only: empty categories and Similar Artists are never shown.

Verification

  • 12/12 automated tests pass; live Plex E2E confirmed grouped discography and album playback reaching PLAYING in the player.
  • Universal Intel + Apple silicon DMG built and audited; no Plex credentials, account state, .env, or non-redistributable preset pack in the package.

Installation

This build is unsigned and not notarized (no Apple Developer identity configured). macOS may require Control-click → Open the first time.