Repository navigation
Releases
Tuitify v0.7.0 — Deezer discovery and continuous listening
Tuitify v0.7.0
Discover songs through Deezer's public catalog and keep listening as related
tracks refill the queue. Deezer supplies song, album, artist and radio metadata;
Volta, Spotify or YouTube supplies the full audio recording.
- Search, album browsing, artist tracks, Track Radio and Smart Shuffle use Deezer
metadata while queue entries retain their catalog identities. - Automatic queue continuation prepares related tracks near the end of the
queue. Pausing, stopping, repeat settings and sleep timers take precedence. - Volta prepares the next recording and a small decoded buffer before transition.
If unavailable, matching YouTube audio is tried; combined Spotify + Volta can
then use an existing Spotify Premium streaming connection. - Native output negotiation retains available source resolution and uses a
bandlimited converter when the device requires a different sample rate. - Wide windows use a sidebar; tall windows keep Now Playing and the spectrum
beside the queue. Queue counts, filtering and mouse controls follow the layout. - Playback badges identify the audio provider alongside reported stream quality.
Holding Space toggles once, and Windows media controls handle transport commands.
Plain tuitify prefers connected Volta with FFmpeg, then Spotify Premium, then
free YouTube Music. Explicit --source youtube selects YouTube even when Volta
is connected. Volta requests the highest available lossless stream, but the
returned recording may be lossy. The source-quality badge does not establish
bit-perfect Windows output. Restored queues start paused.
See setup and controls,
Volta setup, and
validation.
Download tuitify.exe or Tuitify-0.7.0-windows-x86_64.zip. SHA-256 sidecars and
Tuitify-0.7.0-windows-x86_64.manifest.json identify the published assets.
Tuitify v0.6.0 — Spotify libraries with Volta lossless
Tuitify v0.6.0
Use your Spotify library and discovery with matched Volta lossless audio, or open
the standalone Volta catalog. Automatic launch prefers connected Volta with
FFmpeg, then Spotify Premium, then free YouTube Music.
Create a personal Volta application and run tuitify volta login. The secret is
entered without echo and stored in Windows Credential Manager. Each user supplies
their own credentials; the release contains no shared application secret.
See Volta setup
for permissions and commands.
Spotify-to-Volta resolution tries the ISRC recording identifier first, then strict
title, artist, version and duration matching. Missing or ambiguous matches report
an error and preserve the Spotify queue. Standalone Volta keeps separate state.
Choose tuitify --source spotify or tuitify --source youtube explicitly when
you want those audio providers.
Playback and Discord presence show the available source codec, resolution and
bitrate. Volta requests its highest available lossless stream; the Windows shared
audio output can still resample it. This is not a bit-perfect output claim.
Repository history, staged source and extracted release contents are checked with
Gitleaks, including Volta-specific secret detection. Local agent notes, work logs,
credential files and development captures are excluded from publication.
See validation
for automated coverage and live-test limits.
Download tuitify.exe or Tuitify-0.6.0-windows-x86_64.zip. SHA-256 sidecars and
Tuitify-0.6.0-windows-x86_64.manifest.json identify the published assets.
Tuitify v0.5.0 — automatic Spotify and YouTube Music
Tuitify v0.5.0
Launch tuitify for Spotify Premium or free YouTube Music. The player selects
the source automatically and keeps account connections inside F6 Tools.
Changes
- Use Spotify for saved, confirmed Premium accounts and YouTube Music for free
accounts or users without a Spotify login. Unavailable account checks open free
music while showing the cause. Checks have a three-second deadline and an
account-scoped ten-minute cache; confirmed Premium expiry also hands off. - Connect Spotify or a Google music library, or update playback tools through
F6. Account setup saves and closes the session, then returns to the player.
Existing provider queues remain separate and restore paused. - Search public music, browse albums and artists, open playlist links, build
radio queues, and optionally browse a connected Google library. Spotify tracks
and playlists are not translated into YouTube tracks. - Play accessible public YouTube videos using yt-dlp/Deno and FFmpeg, with queue
controls, lyrics, PCM visualization and Windows media controls. Prepare the
next stream and keep a bounded, expiring stream cache; cancel obsolete work. - Prepare missing tools on launch and install the pinned music adapter in an
isolated Python environment. Google library credentials are encrypted for the
Windows user. Public catalog requests do not send optional library credentials. - Separate launch policy, session lifecycle, provider construction and the TUI
runtime. Retain at most 16 parsed collections within a 32 MiB cache budget,
preserving remote offsets. Release the metadata helper after 30 idle seconds
without discarding cached pages or stopping audio. Publish desktop metadata
on changes and run Tokio with two workers. - Update the website, README, architecture, performance evidence, release
downloads and version metadata for the same release.
Measurements and verification
Local Windows ConPTY measurements with the saved Glass appearance showed
settled idle working set falling from 109.7 to 48.2 MiB after a 35-second wait,
about 56% lower. Cold search took 1.12 seconds, warm search 359 ms, and a cached
search after helper shutdown 154 ms. These are small local samples from the
pre-version-bump refactor build; no reliable speed improvement is established.
See BENCHMARKS.md
for methodology and VALIDATION.md
for release checks.
The saved Spotify grant was expired/revoked during live checks. Public music
search and connected-library requests succeeded, but YouTube audio attempts
reached HTTP 429/sign-in/connection-block errors even after tool updates. Real
Premium audio, successful YouTube audio, next-track latency and sustained
playback memory were not verified. Google library sign-in does not unlock
restricted videos. Private, paid, age-restricted and live videos are unsupported.
Install and upgrade
Download tuitify.exe or Tuitify-0.5.0-windows-x86_64.zip. Both have SHA-256
sidecars; Tuitify-0.5.0-windows-x86_64.manifest.json records the asset identities.
The ZIP includes documentation, release notes and scripts/install.ps1.
Run the installer, open a new terminal, then run tuitify. Reconnect an expired
Spotify login through F6 > Connect Spotify account. Quit and reopen an existing
session after upgrading; an already running process keeps its previous code.
Windows 10/11 x64 and working Windows audio are required for playback. Spotify
audio requires Premium; public YouTube Music does not require Spotify Premium.
Music catalog setup requires Python 3.10 or newer and a network connection.
The native tuitify demo needs no account or audio device. Source builds require
Rust 1.88 or newer, MSVC C++ build tools and the Windows SDK.
Tuitify v0.4.0
Tuitify v0.4.0
This release adds everyday queue controls, safer saved-state recovery, and
diagnostics that explain catalog restrictions while preserving useful results.
Changes
- Filter the Queue by title, artist, or album while retaining original queue
positions, duplicate occurrences, shuffle order, and undo behavior. - Open F6 Listening Tools for 15/30/45/60-minute sleep timers, stop after the
current track, and undoable cleanup of played, duplicate, or unavailable tracks. - Use Ctrl+Enter for Play Next, Up/Down for recent-search recall, and Ctrl+R to
recover a cleared queue filter. - Distinguish expired authentication, restricted access, missing items, temporary
rate limits, exhausted quota, outages, and invalid provider responses. Catalog
retries retain service waits and avoid repeated requests to denied resources. - Retain partial saved-library results and explain skipped sources with F4.
Artist lists identify Top Tracks, verified Artist Search, or fictional Demo
Tracks. F5 rechecks access without changing the provenance of retained rows. - Keep stable Web API identity, legacy IDs, and streaming usernames separate.
Reject mismatched or ambiguous account replacements while preserving local data. - Create credential-free saved-state backups and preview whole-state restores.
Inspect, back up, reset, or restore individual state files with confirmation
tied to the preview. Preserve damaged and unsupported files and recover
interrupted restore transactions under the instance lock. - Run offline
doctorchecks or preview a redacted JSONsupportreport.
F7 displays classified session errors and the report preview. Exports create
new files outside the live data directory and never upload automatically. - Use
tuitify version --jsonfor embedded source/compiler identity and the
observed executable hash. ZIP payload and external asset manifests record
SHA-256 hashes; packaging rejects stale source builds and missing local links. - Declare Rust 1.88 as the minimum and check it separately from stable formatting,
tests, and strict Clippy in Windows x64 CI.
Verification and scope
Automated checks and release evidence are recorded in
VALIDATION.md.
Live Spotify playback, account migration, and physical audio-device acceptance
were not repeated for this release. Offline and mock-provider tests do not prove
that a particular account has access to a restricted Spotify endpoint.
This release covers completed work from the first feature batch. The wider
roadmap, including installer rollback hardening, remains in progress.
Install and upgrade
Download tuitify.exe or Tuitify-0.4.0-windows-x86_64.zip. Both have SHA-256
sidecars; Tuitify-0.4.0-windows-x86_64.manifest.json describes the release assets.
The ZIP includes documentation, release notes, and scripts/install.ps1.
Run the installer to place the executable on your user PATH.
Quit and reopen Tuitify after upgrading. A process already playing music keeps
its old code until restarted. Use a fresh search or Radio session to exercise
new discovery behavior; restoring a queue retains its existing tracks.
Windows 10/11 x64 and Spotify Premium are required for playback. The native
tuitify demo requires no Spotify account or audio device. Source builds require
Rust 1.88 or newer, MSVC C++ build tools, and the Windows SDK.
Tuitify v0.3.1
Tuitify v0.3.1
This update repairs Vietnamese Radio matching and duet lyrics, completes mouse
controls in Statistics and Mix Builder, and reduces work when saving large queues
or refreshing listening statistics.
Changes
- Vietnamese Radio: match Latin accent aliases across catalogs only after
confirming the seed recording. Exact-name preference and artist-ID checks remain. - Duet lyrics: retry a missing full-credit lookup with the verified primary
artist. Keep Unicode accents, normalize equivalent Unicode sequences, and check
the returned title, artist, and duration before displaying the fallback. - Lyrics outages: retry HTTP 502–504 once with a short wait, honor longer
cooldowns, and show concise service errors. F5 retries in the lyrics view. - Mouse controls: select, scroll, search, and sort Statistics; use Mix Builder
preferences, pins, details, and recipe actions. Wrapped controls and long names
retain correct hit regions. Enter replaces a queue; Shift+A appends. - Saved data: stop startup on invalid statistics or recipes, preserving the
original files. Buffer atomic JSON writes and avoid duplicate snapshot clones. - Responsiveness: normalize statistics titles once, sort once, update metadata
per track, and correct Glass idle/debounce refresh deadlines. - Audio visualization: map frequency bands using the actual output-device rate.
- Artist browsing: validate requested artist IDs and limit the restricted
endpoint fallback to HTTP 403.
Verification
Windows x64, Rust 1.95.0: 363 automated Rust tests passed, with 16 environment or
benchmark opt-ins excluded from the regular suite. Formatting and strict Clippy
passed. Website checks and packaging are recorded in
VALIDATION.md.
Live catalog checks returned 14 suggestions for Mưa — Minh Vương M4U, Thùy Chi
and 15 for Castle on the Hill — Ed Sheeran. Live LRCLIB checks returned 59 and
49 synced lyric lines respectively. These checks used live services without audio
or saved-state writes; provider coverage can change and queue sizes are not guaranteed.
New live-audio or output-device switching acceptance was not performed for this release.
Install and upgrade
Download tuitify.exe or Tuitify-0.3.1-windows-x86_64.zip; SHA-256 files accompany
both downloads. The ZIP includes guides, release notes, and scripts/install.ps1.
Run the installer to put the player on your user PATH.
Quit and reopen Tuitify after upgrading. Start a fresh search or press R to
generate new Radio suggestions; restoring an old queue retains its existing tracks.
Open lyrics with l and use F5 to retry. Settings and saved-state formats are unchanged.
Windows 10/11 x64 and Spotify Premium are required for playback. The native demo
(tuitify demo) requires no Spotify account or audio device. Related-artist
suggestions are supplied by Deezer and verified in Spotify; they do not reproduce
Spotify's private personalization or guarantee a song's language, mood, or energy.
Tuitify v0.3.0
Tuitify v0.3.0
Tuitify 0.3.0 introduces Glass, a wallpaper-backed terminal theme designed for
Windows Terminal while retaining a portable fallback for other modern terminals.
Highlights
- Adds a sixth theme, Glass, with a full-window wallpaper treatment and readable
opaque selection and shortcut surfaces. - Adds
tuitify background [IMAGE] --dim <0-85>for the current Windows wallpaper
or a custom JPEG, PNG, WebP, or BMP image. - Adds
tuitify --glassfor the portable Unicode quadrant renderer and
tuitify --glass-windowfor a dedicated native-resolution Windows Terminal tab. - Preserves crisp lyrics, multilingual queue metadata, playback controls, and the
real-time FFT visualizer over detailed artwork. - Ensures the dedicated Glass tab relaunches the exact Tuitify build that created it,
even when another installation exists on PATH.
Visual review
The release was reviewed in Windows Terminal across the queue, lyrics, and retro
visualizer views at 2844 × 1701. The supplied captures confirm continuous wallpaper
coverage, legible high-contrast table headings and durations, opaque selected rows,
readable playback/status controls, and correct Chinese, Japanese, and Korean text.
These screenshots were captured from the final pre-release UI build, before the
displayed version label was advanced from v0.2.9 to v0.3.0. The published binaries
and package metadata identify the release as v0.3.0.
Lyrics over Glass
Real-time spectrum visualizer
Requirements and limitations
- Windows 10 or 11, x86-64.
- Spotify Premium is required for live playback;
tuitify demorequires no Spotify
account, network connection, or audio device. - The executable is unsigned. Windows may show a SmartScreen warning.
- The native Glass profile is specific to Windows Terminal. Other terminals use the
Unicode cell renderer when Glass is selected.
Checksums
SHA-256 files are attached for both the ZIP package and standalone executable.
Tuitify 0.2.9
Tuitify 0.2.9
Tuitify 0.2.9 upgrades Track Radio and Smart Shuffle with related-artist discovery,
stronger queue diversity, safer retry behavior, and improved Windows audio device
handling.
Highlights
- Related-artist Radio: Track Radio uses Deezer's public related-artist metadata
to discover artists, then searches and verifies the actual tracks in Spotify.
Refills stay anchored to the original seed instead of drifting into suggestions. - More varied batches: Radio adds up to 15 tracks per batch with at most three
per primary artist, rejects duplicate recordings and unavailable tracks, and
keeps unrelated Spotify search noise out of the queue. - Smarter Smart Shuffle: Smart Shuffle prefers new artists around each insertion
slot and rebalances only the unplayed portion of the queue. Played history and the
current track remain fixed. - Bounded failure handling: Similarity failures and rate limits are cached and
surfaced instead of triggering request storms or filling the queue from a single
artist. Radio errors stay visible until retry or a new Radio session. - Windows output-device refresh: Playback can follow a changed default Windows
output endpoint and rebuild its resampler for the new sample rate. - PATH installer hardening: The installer keeps the canonical Tuitify directory
first on the user PATH and detects anothertuitifyexecutable shadowing it. - Provider/privacy documentation: The README and validation docs now describe
what is sent to Deezer and how recommendation discovery differs from Spotify's
private personalization.
Install
Download and extract Tuitify-0.2.9-windows-x86_64.zip, then run:
.\scripts\install.ps1
tuitifyOr download tuitify.exe directly. Spotify playback requires a Premium account;
tuitify demo requires no Spotify credentials, network, Discord, or audio device.
Verification
cargo fmt --checkpassed.cargo test --locked: 301 passed, 0 failed, 11 ignored.cargo clippy --all-targets --locked -- -D warningspassed with zero warnings.cargo build --release --lockedproduced the optimized 0.2.9 Windows executable.npm test: 11 Microsoft Edge Playwright tests passed.
Live recommendation and audio acceptance details from the development cycle are
documented in docs/smart-shuffle-validation.md.
Tuitify 0.2.8
Tuitify 0.2.8
Tuitify 0.2.8 introduces native album tracklist browsing, artist top tracks
discovery, dynamic breadcrumb navigation with history back-tracking, track context
menu actions, instant search resolution for Spotify web links and URIs, and
offline native demo catalog datasets.
Highlights
- Native Album Browsing: Press
aon any selected track or right-click to
choose "View Album" to view the complete ordered tracklist with track numbers,
durations, and playability indicators. - Artist Top Tracks Discovery: Press
Shift+A(orA) or choose "View Artist"
to inspect an artist's top popular tracks and explore their catalog. - Breadcrumb Navigation & History Stack: Multi-level browsing preserves your
view stack and displays dynamic breadcrumbs (e.g.Search › OK Computer › Thom Yorke).
PressEscto navigate backward, seamlessly restoring your prior view, selection
cursor, and scroll offset without re-fetching network data. - Instant Search URL & URI Resolution: Paste or type Spotify Album and Artist
web links (open.spotify.com/album/..., localized/intl-.../links) or URIs
(spotify:album:...) directly into Search to instantly jump to that view. - Context Menu Expansion: Right-click track context menus now include explicit
"View Album" and "View Artist" actions across Search, Liked Songs, Queue, and
catalog views. - Offline Demo Runtime Parity:
tuitify demoincludes fictional album and
artist datasets, allowing users to fully test album/artist browsing and
breadcrumb navigation without Spotify credentials or internet access. - Contextual Play Next: Press
pwithin Album and Artist views to add the
selected track as Play Next in the queue.
Install
Download and extract Tuitify-0.2.8-windows-x86_64.zip, then run:
.\scripts\install.ps1
tuitifyOr download tuitify.exe directly. Spotify playback requires a Premium account;
tuitify demo requires no Spotify credentials, network, Discord, or audio device.
Verification
- 278 offline Rust tests passed (
cargo test --locked); 5 environment-specific
tests were intentionally ignored. - Rust formatting (
cargo fmt --check) and Clippy with warnings denied
(cargo clippy --all-targets --locked -- -D warnings) passed cleanly. - All 11 Microsoft Edge Playwright website tests passed (
npm test). - The release executable reported
tuitify 0.2.8, and the native demo was
exercised in a real terminal across album/artist views and breadcrumb navigation.
Live Spotify catalog/playback, audible output, physical media keys, LRCLIB, and
Discord presentation remain environment acceptance checks and were not exercised
for this build.
Tuitify 0.2.7
Tuitify 0.2.7
Tuitify 0.2.7 gives the terminal player a cohesive semantic design system and
hardens several queue, authentication, and Mix Builder edge cases.
Highlights
- Redesign the complete Ratatui interface around semantic background, surface,
text, border, accent, warning, and error tokens for every theme. - Keep keyboard focus, row selection, the currently playing track, and playback
state visually distinct, including when those states overlap. - Refine the header, contextual shortcut footer, navigation, catalog and queue
tables, Now Playing, Mix Builder, Help, Stats, Lyrics, Visualizer, empty states,
and compact layouts. - Rework Cyberpunk around cyan and subdued blue/slate tones instead of competing
cyan and magenta accents. - Cancel stale Track Radio work when its current seed is removed and invalidate
in-flight Smart Shuffle recommendations after queue removal. - Detect mismatched saved catalog and streaming accounts during setup, finish
account cleanup, and request the correct streaming authorization. - Apply search and filter limits by Unicode character count rather than UTF-8
byte length. - Release Mix Builder pins safely when a regenerated source pool becomes too
small, with a clear warning in the preview note. - Add an idempotent PowerShell installer that copies Tuitify to a stable per-user
directory, adds it to userPATH, and verifies the installed command. - Align the GitHub Pages demo with the Rust application's theme names and order.
Install
Download and extract Tuitify-0.2.7-windows-x86_64.zip, then run:
.\scripts\install.ps1
tuitifyOr download tuitify.exe directly. Spotify playback requires a Premium account;
tuitify demo requires no Spotify credentials, network, Discord, or audio device.
Verification
- 193 offline Rust tests passed; 5 environment-specific or benchmark tests were
intentionally ignored. - Rust formatting, Clippy with warnings denied, and the locked optimized build
passed. - All 11 Microsoft Edge Playwright website tests passed;
npm auditreported no
vulnerabilities. - The release executable reported
tuitify 0.2.7, and the native demo was
exercised in a real terminal across all five themes and major overlays.
Live Spotify catalog/playback, audible output, physical media keys, LRCLIB, and
Discord presentation remain environment acceptance checks and were not exercised
for this build.
Tuitify 0.2.6
Tuitify 0.2.6
Tuitify 0.2.6 adds an inspectable Mix Builder, Smart Shuffle, and a native
credential-free demo inside the real Rust/Ratatui terminal application.
Highlights
- Build a duration-targeted mix from the current queue or an accessible Spotify
playlist, with a preferred suggestion percentage and artist spacing. - Inspect source and recommendation provenance, including the actual seed track
and provider used for suggestions. - Pin preview positions and deterministically regenerate the remaining tracks.
- Save and reopen named mix recipes locally.
- Explicitly replace or append the queue, with existing one-step queue undo.
- Retain usable source-only previews when recommendations fail and label partial
playlist data after page failures or safety caps. - Cycle Smart Shuffle alongside normal shuffle while preserving current playback
and duplicate queue occurrences. - Run
tuitify demowith bundled fictional data, simulated playback, Mix Builder,
lyrics, queue editing, undo, and themes—without Spotify credentials, network,
Discord, or an audio device. - Use responsive Mix Builder layouts down to the supported 32x10 terminal size.
Try the native demo
.\tuitify.exe demoPress Shift+M to open Mix Builder. The first demo recommendation request fails
intentionally; press g to show graceful recovery, then pin, regenerate, apply,
and undo the mix.
Verification
- 185 offline Rust tests passed; 5 environment-specific/benchmark tests ignored.
- Rust formatting, Clippy with warnings denied, and locked optimized build passed.
- 11 Microsoft Edge Playwright website tests passed.
- Native PTY acceptance covered recommendation recovery, pin/regenerate,
replace/undo, normal quit, and terminal restoration.
Live Spotify catalog/playback, audible output, physical media keys, LRCLIB, and
Discord presentation remain environment acceptance checks and were not exercised
for this build.

