Releases: RamenFast/phosphor
Release list
Phosphor 4.7.4
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 $?
3phosphor 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.rpmVerify: 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
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
Rgba16Unormand 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.debphosphor-4.7.3-1.x86_64.rpmphosphor-4.7.3-source.tar.gzphosphor-4.7.3-wayland.pngSHA256SUMS
Install after publication
Debian or Ubuntu:
sudo apt install ./phosphor_4.7.3_amd64.deb
phosphor --versionFedora or RPM-compatible systems:
sudo dnf install ./phosphor-4.7.3-1.x86_64.rpm
phosphor --versionExpected 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
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
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
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.debFedora · openSUSE (.rpm):
sudo dnf install ./phosphor-4.6.2-1.x86_64.rpmFrom source (any Linux; Rust 1.96+): see the README. SHA256SUMS
covers all three assets.
🐢 TURTLE VECTOR
Phosphor 4.6.1 — convergence, not guesses
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
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.debFedora / openSUSE (built on Mint, rpm --test verified — reports welcome)
sudo dnf install ./phosphor-4.6.0-1.x86_64.rpmFrom 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
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.debFedora / openSUSE (built on Mint, rpm --test verified — reports welcome)
sudo dnf install ./phosphor-4.5.0-1.x86_64.rpmFrom 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
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.debFedora / openSUSE (built on Mint, rpm --test verified — reports welcome)
sudo dnf install ./phosphor-4.4.0-1.x86_64.rpmFrom 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
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
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.
Lslides 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 theno signallabel. 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.debFedora / openSUSE (built on Mint, rpm --test verified — reports welcome)
sudo dnf install ./phosphor-4.3.0-1.x86_64.rpmFrom 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.
