Skip to content

Releases: RamenFast/phosphor

Phosphor 4.7.4

Choose a tag to compare

@RamenFast RamenFast released this 02 Aug 01:27

A conformance release. Everything here was found by writing a harness that re-runs the workspace CLI standard against a real binary, instead of trusting a document that said phosphor was the exemplar.

The typo that opened the scope

phosphor nonsuchverb did not fail. It fell through to the [FILE] path and raised the scope window — an agent's typo stealing focus on your screen. Headless it died inside winit and exited 0, so a script could not tell anything had gone wrong.

$ phosphor nonsuchverb          # before: a window appears, or exit 0 with a winit error
$ phosphor nonsuchverb          # now
phosphor: unknown command 'nonsuchverb'
usage: …
fix: run `phosphor --help`, or `phosphor schema` for the machine map
$ echo $?
3

phosphor track.wav is untouched: the test is whether the argument is an existing file, not a guess about its shape.

The schema stopped hiding two verbs

bench and render are real, advertised in --help, and were absent from phosphor schema entirely. An agent could call them but could not pre-plan the parse. Both now appear in schema.verbs with flags and exit codes, and their output shapes are published in schema.outputs — captured from actual runs, not read off the code.

Note bench exits 0 when it ran, not when the gates passed. Read all_gates_pass; the schema now says so.

kit usage errors are parseable

phosphor kit, kit validate with no file, and kit <unknown> printed usage to stderr and left stdout empty — correct exit 3, nothing for a piped agent to read. They carry the error envelope with a fix now.

Removed, honestly

Nothing. One behavior changed on purpose: an unknown bare word is now an error instead of a file to open.

The harness

scripts/conformance.sh — 13 clauses of AGENT-CLI-STANDARD as numbered checks against a real binary, ledger on a TTY and one envelope in a pipe. C5b (the typo) is mutation-proven: delete the fix and the suite drops to 11/13, naming [exit-4], [does-not-say-unknown-command], [shows-no-usage]. It runs with a private XDG_RUNTIME_DIR and never starts a GUI, so it cannot touch a scope you have open.

Install

# Debian / Ubuntu / Mint
sudo apt install ./phosphor_4.7.4_amd64.deb

# Fedora / RHEL
sudo dnf install ./phosphor-4.7.4-1.x86_64.rpm

Verify: phosphor --version → phosphor 4.7.4 (v4).

SHA256SUMS covers every asset; sha256sum -c SHA256SUMS checks them all at once.

Receipts

conformance 13/13 · cargo clippy --workspace --all-targets -- -D warnings silent · 81 unit tests green, one new (the schema must name every verb --help advertises, itself mutation-proven) · BUGLOG #22 records the fix, its receipt, and that timing_noise_workloads is load-sensitive rather than a regression detector.

Built with Claude on Ben's machine. GPLv3.

Phosphor 4.7.3

Choose a tag to compare

@RamenFast RamenFast released this 01 Aug 18:14

Phosphor 4.7.3

Phosphor 4.7.3 repairs native Wayland startup on RADV devices that advertise Rgba16Unorm without the required texture-adapter features.

Before Release
4.7.2 4.7.3

Highlights

  • Selects a renderable surface format instead of assuming the first non-sRGB format is usable.
  • Adds focused regression coverage for unsupported RADV Rgba16Unorm and renderable sRGB fallback.
  • Records the failure, root cause, engineering law, test, and prior live receipt in BUGLOG #21.
  • Aligns Debian and RPM payload generation so both packages ship the same stripped binary.
  • Adds Greenhouse minimum-version enforcement and a SHA-256-pinned, user-space Debian extraction path.

Removed, honestly

The temporary Xwayland compatibility bridge is retired for this native 4.7.3 path. No user-facing Phosphor feature is removed.

Release assets

  • phosphor_4.7.3_amd64.deb
  • phosphor-4.7.3-1.x86_64.rpm
  • phosphor-4.7.3-source.tar.gz
  • phosphor-4.7.3-wayland.png
  • SHA256SUMS

Install after publication

Debian or Ubuntu:

sudo apt install ./phosphor_4.7.3_amd64.deb
phosphor --version

Fedora or RPM-compatible systems:

sudo dnf install ./phosphor-4.7.3-1.x86_64.rpm
phosphor --version

Expected version output: phosphor 4.7.3.

Validation

  • 151 workspace tests passed.
  • Warning-denied Clippy passed for every target.
  • Debian and RPM executable payloads are byte-identical.
  • The Debian checksum is pinned by Greenhouse before user-space extraction.
  • A fresh private-Sway receipt proves first launch, centered floating geometry, hide, and show on the same process.
  • The RPM is unsigned, matching the project’s current package pipeline.

Phosphor 4.7.2 — gain to 7×, mobile parity

Choose a tag to compare

@RamenFast RamenFast released this 19 Jul 07:21

Gain range extends to 0.1–7.0 across shell, chrome, protocol, and ctl (mobile parity — phosphor-mobil3 v1.0.0 ships the same ceiling). 4.7.1's ctl gain surface included. deb sha256: 46e5b70d97f87bd10d83a8d51d51247ca7e2a30169e08b1e6dd065b64a7c607f

🤖 Generated with Claude Code

Phosphor 4.7.0 — the UX-round release

Choose a tag to compare

@RamenFast RamenFast released this 11 Jul 13:57

Phosphor draws what your PC plays the way an analog CRT scope would. 4.7.0 is the UX-round release: four families of long-standing interaction bugs root-caused and fixed, tooltips everywhere, and the settings + agent-protocol hardening from the codebase audit.

4.6.2 → 4.7.0, honestly

4.6.2 4.7.0
Local track after scoping Spotify / a mix transport followed the beam — the paused track was unreachable, "no sound" the loaded track owns the deck; the scoped player gets the controls only when nothing is loaded
Scope with the right-click menu open lost a vsync wait per frame (a second blocking surface) full rate — the menu repaints only on damage
Clicking out of the menu inconsistent — an invisible canvas swallowed clicks dismisses on the first click, anywhere off the menu
Dialogs & panes in the mini presses became a window-drag; the postcard ✕ was unhittable presses reach the UI; only the bare scope drags the window
Cursor across view switches stale resize cursors rode along reset on every mode switch
Tooltips sparse across the right-click menu and settings
Settings on a crash mid-write could truncate; corrupt files silently reset atomic saves; a corrupt file is quarantined as settings.json.bad with a visible warning
Agent wire (ctl/tap/schema) client, server, and schema could drift one typed grammar — every error's fix is an executable command, tap opens with a server hello and ends with a reason, --socket pins an instance

Removed, honestly

Nothing user-facing. The never-shipped phosphor-studio stub crate left the build workspace (the studio CLI verb answers exactly as before — exit 2 with a directive message; the studio still returns per #1). Development docs were reorganized into docs/dev/ and archive/.

Install

Debian / Ubuntu / Mint (or just double-click the .deb):

sudo apt install ./phosphor_4.7.0_amd64.deb

Fedora / RHEL (built on Mint, rpm --test verified — reports welcome):

sudo dnf install ./phosphor-4.7.0-1.x86_64.rpm

From source (needs libpipewire-0.3-dev pkg-config scdoc on apt, pipewire-devel pkgconf scdoc on dnf, and Rust 1.96+):

tar xf phosphor-4.7.0-source.tar.gz && cd phosphor-4.7.0
cargo build --release -p phosphor-app
sudo install -m755 target/release/phosphor /usr/local/bin/phosphor

Verify:

phosphor --version   # phosphor 4.7.0 (v4)

The Cinnamon panel applet (unchanged, 2.1.0) installs from the repo: applet/install.sh. Main app runs on any desktop; the applet is Cinnamon-only.

SHA256SUMS-4.7.0 covers all three assets.


Built by Ben with Claude (Fable 5) — root causes, receipts, and the regression ledger (docs/dev/BUGLOG.md #16–#19) ride in the repo. Signed, as always: TURTLE VECTOR 🐢⚡📼

Phosphor 4.6.2 — the clean user release

Choose a tag to compare

@RamenFast RamenFast released this 08 Jul 08:51

The clean user release — the window behaves, playback reaches your
speakers, the CPU renderer wears its theme, and the panel applet
heals itself.

What's fixed since 4.6.1

Playback reaches the speakers. Phosphor now owns its playback
volume in-process, so a WirePlumber-remembered soft volume can no
longer silence a track and the volume control works live. The
scope always draws the full signal regardless of listening level.

The CPU (cairo) renderer wears the theme. Switching beam color or
toggling the glass tint now updates the scope even when it's paused or
silent — the cairo path re-composites on a style change instead of
only when new audio arrives. (The GPU renderer already did this.)

The window behaves. The mini toggle no longer flaps or wanders,
the window remembers its last position and size across launches, and
right-click-menu clicks land instantly instead of a beat late. The FPS
selector squares moved to the left with the other menu boxes.

The panel applet heals itself (Cinnamon, v2.1.0). If its feed dies
— an app relaunch, a stray pkill, a crash — the applet now restarts
it automatically instead of freezing on its last frame. Its picker
icon is refreshed to the current four-color scope. Re-run
applet/install.sh and reload Cinnamon to pick it up.

Two env-gated diagnostics ship for the hard-to-receipt classes:
PHOSPHOR_GEOM_LOG=1 (window geometry) and PHOSPHOR_AUDIO_LOG=1
(playback volume/stream).

Honest ledger

Built and verified on the maintainer's machine (Linux Mint / Cinnamon
6.6, PipeWire, RADV). The window-geometry fixes are receipted by a
self-contained nested-Muffin rig (tests/receipts/w2-wm-geometry.sh,
10/10); the CPU restyle by a unit test; the applet self-heal live via
Cinnamon Eval. Audio was verified on the real machine — the headless
rig reads false negatives on monitor capture through nested-PipeWire
isolation, not a regression. All test suites pass, clippy silent. The
rpm is built on Mint and rpm --test-verified; reports from Fedora /
openSUSE welcome.

Install

Debian · Ubuntu · Mint (.deb) — or double-click it:

sudo apt install ./phosphor_4.6.2_amd64.deb

Fedora · openSUSE (.rpm):

sudo dnf install ./phosphor-4.6.2-1.x86_64.rpm

From source (any Linux; Rust 1.96+): see the README. SHA256SUMS
covers all three assets.

🐢 TURTLE VECTOR

Phosphor 4.6.1 — convergence, not guesses

Choose a tag to compare

@RamenFast RamenFast released this 08 Jul 05:27

The mini stops fighting the window manager: mode-switch geometry now
converges — the intended size and position re-apply every ~120 ms
until the window actually matches, instead of one-shot timing guesses
that lost to a busy WM. Fixes the returning wander, the double-M from
fullscreen, the sometimes-stays-tiny restore, and the forgotten mini
position (a mid-flight rectangular WM restore was also clobbering the
remembered mini size — squares only now). User drags always win; the
magnetism snap stands down while a switch is converging.

Shipped on compile gates (20/20 suites, clippy silent) at the owner's
call — the desktop itself is the receipt this round.

Install: sudo apt install ./phosphor_4.6.1_amd64.deb (or the rpm /
source tarball; SHA256SUMS covers all).

🐢 TURTLE VECTOR — built with Claude Fable 5.

Phosphor 4.6.0 — the menu leaves the window

Choose a tag to compare

@RamenFast RamenFast released this 08 Jul 05:15

Phosphor is a CRT-style XY oscilloscope for desktop audio — 4.6 frees
the menu from the window.

The menu is a real window now

Right-click anywhere — the 280 px mini included — and the context menu
opens as a native OS popup that grows past the scope's edges:
every option, both submenus, no scrollbars, no squishing, ever. It
closes on an outside click, Escape, or picking an item, exactly like
any system menu.

Named right, finally

  • Beam color — the phosphor presets (P7 Green, Amber… Custom).
    It used to be labeled "Theme" while listing beam colors.
  • Theme — new submenu with the twelve chrome rooms, which were
    missing from the menu entirely.

The FPS squares

The FPS row now shows two little squares that fill left to right:
■□ = fps counter, ■■ = the nerd HUD, □□ = off. The menu
stays open while you click through, so you watch them fill. And the
choice persists immediately — it survives a crash, not just a clean
quit (as do Grid and the rest).

One M, not two

From fullscreen, a single press of M now lands in the miniplayer.
The transition is staged under the hood — leave fullscreen, let the
window manager land the restore, then shrink — because doing both in
the same instant lost a race and cost you a second press.

Since v4.5.0

Nothing removed; the "not yet in v4" ledger (studio #1, screensaver
#8) is unchanged. The regression ledger grew to #10 —
docs/dev/BUGLOG.md carries the full story of each fix and the law
that keeps it fixed.

Install

Debian / Ubuntu / Mint

sudo apt install ./phosphor_4.6.0_amd64.deb

Fedora / openSUSE (built on Mint, rpm --test verified — reports welcome)

sudo dnf install ./phosphor-4.6.0-1.x86_64.rpm

From source

tar xf phosphor-4.6.0-source.tar.gz && cd phosphor-4.6.0
# Debian-family: sudo apt install build-essential libpipewire-0.3-dev scdoc
# Fedora:        sudo dnf install gcc pipewire-devel scdoc
cargo build --release -p phosphor-app
sudo install -m755 target/release/phosphor /usr/local/bin/

Verify

phosphor --version   # phosphor 4.6.0 (v4)

SHA256SUMS covers every asset above.


Gates at ship: 20/20 test suites · clippy silent · bench ALL PASS ·
the popup receipted at 2560×1440 towering over a 280 px mini, submenu
clicks landing, Escape behaving.

🐢 TURTLE VECTOR — built with Claude Fable 5.

Phosphor 4.5.0 — the release candidate

Choose a tag to compare

@RamenFast RamenFast released this 08 Jul 04:13

Phosphor is a CRT-style XY oscilloscope for desktop audio — 4.5 is the
release candidate: the last known v4 bug, root-caused and fixed. One
clean test round separates this from the stable release.

The wandering mini, ended

Three independent movers were hiding behind one symptom:

  • Fullscreen → mini remembered the wrong "normal". Entering the
    mini from fullscreen banked the fullscreen dimensions, so leaving
    the mini "restored" a screen-sized window at 0,0. Geometry now banks
    at the moment it's true: F11-in stores your real window, the mini
    never overwrites it, and a plain F11-out lets the window manager do
    its own restore. F11 → M still works as one gesture.
  • A few pixels of drift per round trip. Leaving the mini
    repositioned the window while the WM was still re-adding the title
    bar — the frame insets shifted the client every time. The position
    now gets one deferred re-assert after the frame is back on.
  • Resize glitches. The re-square used max(width, height), so
    dragging an edge inward could never shrink the mini; and a re-square
    near the bottom of the screen grew the window past the edge. The
    square now follows the axis you dragged, and the settle keeps it
    inside the work area.

And the ask that makes glass minis usable: a stable dashed outline
around the transparent square, so you can always see where the edges
are to grab and size it.

The applet, audited

Asked and answered: the panel applet keeps its wave-3.1 polish — the
installed copy is byte-identical to the repo, it speaks the frozen
feed protocol that no v4.x wave touched, and all 16 of its protocol
tests pass today. Its trace color is its own setting by design: the
feed carries samples, not colors.

Since v4.4.0

Nothing removed; the "not yet in v4" ledger (studio #1, screensaver
#8) is unchanged. Four items are flagged for the real-desktop test
round that receipts can't cover from a headless rig: frame-inset
drift under Muffin, the bottom-edge clamp, CPU-glass see-through, and
the mini's focus-on-click.

Install

Debian / Ubuntu / Mint

sudo apt install ./phosphor_4.5.0_amd64.deb

Fedora / openSUSE (built on Mint, rpm --test verified — reports welcome)

sudo dnf install ./phosphor-4.5.0-1.x86_64.rpm

From source

tar xf phosphor-4.5.0-source.tar.gz && cd phosphor-4.5.0
# Debian-family: sudo apt install build-essential libpipewire-0.3-dev scdoc
# Fedora:        sudo dnf install gcc pipewire-devel scdoc
cargo build --release -p phosphor-app
sudo install -m755 target/release/phosphor /usr/local/bin/

Verify

phosphor --version   # phosphor 4.5.0 (v4)

SHA256SUMS covers every asset above.


Gates at ship: 20/20 test suites · clippy silent · bench ALL PASS ·
mini round-trips receipted pixel-stable at 2560×1440. The regression
ledger (docs/dev/BUGLOG.md, #1–#9) is why the fixes stay fixed.

🐢 TURTLE VECTOR — built with Claude Fable 5. One round from stable.

Phosphor 4.4.0 — the listening release

Choose a tag to compare

@RamenFast RamenFast released this 08 Jul 03:39

Phosphor is a CRT-style XY oscilloscope for desktop audio — 4.4 is the
listening release: nine pieces of real-use feedback, each root-caused,
none papered over.

Fixed, honestly

You said What was actually wrong Now
Glass doesn't work on CPU mode the raster worker never received the glass alpha — every CPU frame shipped opaque CPU glass matches the GPU glass law exactly; offline exports byte-identical (golden-gated)
Dropdowns squished with plenty of room egui caps every combo popup at a fixed 200 px by default popup caps track the live window — they grow until the window is the limit, then scroll
Options missing from the right-click menu content hid behind an "is mini?" flag instead of measured space the menu shows everything the window can physically fit — a large mini gets the full menu
Right-click can't reach the nerd HUD the menu had a bare checkbox; only F knew the cycle one FPS: <state> (F) row walks off → counter → nerd HUD, the F key's exact state machine
F dead in the mini clicking the mini instantly starts a window-drag, so the click never focused it — keys went elsewhere the mini claims keyboard focus before any drag
M in fullscreen doesn't reach the mini the WM ignores resize requests on a fullscreen surface M un-fullscreens and enters the mini in one gesture
Kits don't explain themselves no tooltips hover the section for what kits are; hover any kit for its card — author + every stage explained
Epilepsy warning re-asks every launch acceptance was session-only accepting persists forever — across launches and versions; anyone who never accepts keeps the guard
No undo in custom appearance — undo/redo, 5 gestures deep; color-drag storms coalesce into one step

Plus one we caught ourselves while testing: pressing Escape to close
a dropdown quit the entire app
(the quit cascade fell through).
Popups now own Escape; the cascade only sees a clean press.

The standing law this release created

All UI receipts now run at 2560×1440 — space bugs are invisible on
small test screens, and this release existed because of exactly that.

Since v4.3.0

Nothing removed; the "not yet in v4" ledger (studio #1, screensaver
#8) is unchanged. One honest caveat: CPU-glass has pixel-alpha unit
receipts and byte-held goldens, but the final see-the-desktop-through
check needs a real compositor — report anything odd and it goes
straight into the regression ledger.

Install

Debian / Ubuntu / Mint

sudo apt install ./phosphor_4.4.0_amd64.deb

Fedora / openSUSE (built on Mint, rpm --test verified — reports welcome)

sudo dnf install ./phosphor-4.4.0-1.x86_64.rpm

From source

tar xf phosphor-4.4.0-source.tar.gz && cd phosphor-4.4.0
# Debian-family: sudo apt install build-essential libpipewire-0.3-dev scdoc
# Fedora:        sudo dnf install gcc pipewire-devel scdoc
cargo build --release -p phosphor-app
sudo install -m755 target/release/phosphor /usr/local/bin/

Verify

phosphor --version   # phosphor 4.4.0 (v4)

SHA256SUMS covers every asset above.


Gates at ship: 20/20 test suites · clippy silent · bench ALL PASS ·
every fix receipted at 1440p with real clicks (the receipts live in
the commit message and docs/dev/BUGLOG.md #4–#8).

🐢 TURTLE VECTOR — built with Claude Fable 5.

Phosphor 4.3.0 — the guestbook

Choose a tag to compare

@RamenFast RamenFast released this 07 Jul 23:08

Phosphor is a CRT-style XY oscilloscope for desktop audio — 4.3 is the
guestbook release: the last polish pass, signed by the model that
built v4.

The color cycle, demonstrated

Attack Vector traced while the phosphor crossfades green, ice blue, and vaporwave pink

That's Attack Vector through one full three-color ring — and the clip
was made by phosphor render itself: the export is the demo,
because exports carry the cycle exactly as your screen did. Up to
three colors on a timer (4.1), or one color step per song (4.2), with
the sub-second timer legs behind a photosensitivity confirmation.

What 4.3 adds

  • One playlist pane, every view. L slides the same pane in from
    the left everywhere: docked in normal and fullscreen (now with the
    slide animated), and in mini — where a docked panel would eat the
    square — a left-anchored slide-over wearing identical pane clothes.
    The old mini floating window is gone.
  • The resting beam. A real CRT with no deflection doesn't show
    nothing — the undeflected electron beam rests as a small bright
    dot. Now Phosphor does too: when capture is live but the source has
    gone silent, a soft dot in the current beam color (cycle included)
    settles at dead center above the no signal label. It costs zero
    frames — the render loop stays asleep.
  • Fable — the twelfth room. The model that built v4 signed the
    guestbook with its own chrome theme: abyssal sea-green ground,
    moonlit ink, seafoam hairlines, and a warm lantern-gold accent that
    deliberately does not follow the beam. The beam paints the scope;
    the lantern lights the margins. Settings → Theme → Fable.
  • The ring, previewed. The cycle settings grew a slim live
    gradient strip under the color swatches — the whole journey your
    beam will take, visible before it takes it.

Verified, again, before signing off

The full six-point UI checklist was re-receipted live on this build:
the right-click menu opens complete with no scrollbars and every item
fires on a real left click; the cycle settings read at a glance; the
song-change card (title, metadata, art when the source carries it)
shows in normal, mini, and fullscreen; the playlist lists the folder
around the playing track; and the pane slides from the left in all
three views.

Since v4.2.0

v4.2.0 v4.3.0
Playlist in mini floating window the same left pane, sliding over
Silent scope label only label + the resting beam
Chrome rooms 11 12 — Fable joins
Cycle settings swatches + numbers + a live gradient preview of the ring
Color cycle on GitHub words the GIF above

Nothing was removed. The "not yet in v4" ledger (studio #1,
screensaver #8) is unchanged.

Install

Debian / Ubuntu / Mint

sudo apt install ./phosphor_4.3.0_amd64.deb

Fedora / openSUSE (built on Mint, rpm --test verified — reports welcome)

sudo dnf install ./phosphor-4.3.0-1.x86_64.rpm

From source

tar xf phosphor-4.3.0-source.tar.gz && cd phosphor-4.3.0
# Debian-family: sudo apt install build-essential libpipewire-0.3-dev scdoc
# Fedora:        sudo dnf install gcc pipewire-devel scdoc
cargo build --release -p phosphor-app
sudo install -m755 target/release/phosphor /usr/local/bin/

Verify

phosphor --version   # phosphor 4.3.0 (v4)

SHA256SUMS covers every asset above.


Gates at ship: 20/20 test suites · clippy silent · bench ALL PASS.

🐢 TURTLE VECTOR — built with Claude Fable 5, who leaves a lantern lit
in the twelfth room.