Repository navigation
Releases
Wave 0.2.1
Wave 0.2.1
Released 7 November 2026.
Distribution notice: Android packages are test APKs with debug signing; Windows portable packages are unsigned. Production signing is not included. Native assets are built and attached by the Release assets workflow after validation.
Listening and library
- Fix volume lives in Settings → Playback, using the same switch row as Mix, Clip and Autoplay. It balances eligible local recordings sequentially, including future imports. Turning it off cancels scanning and restores original playback levels without deleting measurements or changing the files.
- The listening view enters its artwork/lyrics scene after thirty seconds of focused inactivity. When an enabled videoclip is available, the existing video fills the background with compact credits and readable lyrics; waking the controls does not restart it.
- Repeat retains a brief same-recording audio overlap when ready, with a bounded restart fallback. Only the repeat icon responds visually; the whole screen never flashes.
- Trim opens a dedicated waveform editor, pauses the main player and owns its preview exclusively. Source audio remains unchanged.
Remix
- Selecting a highlight keeps its detail full-width at that card's natural position. Unselected highlights become compact summaries, including on mobile.
- Artist/song artwork, populated-week selection, statistics and saved weekly playlists remain locally browsable.
Search, Mix and AutoPlay
- Search ranks titles, artists, albums and playlists with accent-insensitive matching and conservative typo tolerance. Local genre/year metadata is searchable; a weak index and stable ranking buckets reduce repeated work.
- Enter respects the selected search category and the current typed query. Composition input does not accidentally start playback.
- Mix remains a single on/off setting, keeps the original tempo and uses bounded transition windows. Short clips cannot mix immediately at playback start; invalid or incomplete silence measurements cannot trim their boundaries.
- AutoPlay excludes missing/empty local recordings and invalid remote IDs, avoids duplicate IDs, caps each extension at twenty entries and adds recent-artist variety. Disabling it prevents new automatic extensions; already queued songs remain in the queue.
- Daily Mixes remain limited to three simultaneous groups and twenty songs per group on web, Android and Windows.
Controls and native polish
- Directional pages and Settings entrances, restrained card presses, fine-pointer-only hover, stable player-action targets and bounded ripple feedback. System reduced motion and app motion preferences are respected.
- No decorative magic icons, model-service branding or model-service client dependencies. Search, Mix and AutoPlay use local rules and bounded audio analysis, not a remote recommendation service. Optional lyric/clip metadata services remain explicitly separate.
- Android: full-player volume/mute, current-recording-preserving queue shuffle, animated favorite/actions, persistent motion preference and improved short-wide layouts. Audio-focus ducking preserves the listener's volume and mute.
- Windows: synchronized dock/full-player sound controls, pre-mute restoration, localized control names, keyboard focus outlines and directional page/Settings motion without whole-list flashes.
- Native artwork captures publish from exact-SHA checkouts to an explicit source branch, with stale-source guards and bounded retries.
Privacy and compatibility
- Audio, listening history, volume measurements and feedback stay on the device. Original audio files are not rewritten.
- External lyric/video searches remain optional and subject to their providers' availability. YouTube embeds are not processed by local Mix or Fix volume.
- Fix volume is currently a web local-file feature: approximate RMS/sample-peak balancing, not denoising, exact LUFS mastering or recovery of missing detail. Analysis limits are ten minutes / 48 MiB per recording, with bounded gain and a safety ceiling.
- Native clip playback and native volume-analysis parity are not introduced by this release.
Distribution and publication gates
- No web portable bundle is attached to Releases. The website is built and deployed separately through Cloudflare Workers.
- Android artifacts are clearly labelled test APKs. Windows portable ZIPs contain the EXE and are labelled unsigned. Checksums and third-party notices accompany the native packages; signing/store distribution is not claimed.
- The tagged source must pass metadata/packaging checks, lint, unit tests, build and the required browser smoke suite before native packaging. The wider historical browser suite is reported separately, not represented as fully green.
- See release readiness for the current validation, remaining manual/device checks and operator publication sequence. Website deployment is separate from this Release.
Wave 0.2.0
Wave 0.2.0
Release date: 3 November 2026. The web client is published at
wave.jaime-gaming.com, served by Cloudflare Pages. Android and
Windows are built from the same interface and the same assets; their CI packages are debug builds,
not signed installers. The exact tagged revision and the published assets are listed on the
GitHub Release.
This release is mostly about three things people kept noticing: the join between two songs, the
picture behind the player, and the box you type into when you are looking for something.
The Mix
Two songs now meet the way a person with two turntables would join them: the new record comes in on a
bar, both play for a few bars, and the old one leaves with its bass closing and its top rolling off.
The overlap lasts twelve to twenty-four seconds when the tempos are close, and gets shorter when they
are far enough apart that the two pulses would drift — no song is ever sped up, slowed down, or bent
to fit another.
- The new song enters where it is already playing. An intro that ends in a held chord or a filtered
beat is not an arrival, so Wave waits for the first bar that sounds like the record. - The two decks are matched on the point where they are actually heard together, not on the average
of both songs, and the arriving deck is silent until the blend takes it over. The half-second of
full volume at the start of a blend is gone. - In its last ten seconds a song can end when the music ends: if there is nothing left to hear, the
next one comes in instead of the room going quiet. - The letters of Mixing carry one light, travelling across the word.
The videoclip
- Everything Wave draws is on top of the picture: the sleeve and the song's text in the top-left
corner, the words of the song in the bottom-right, one compact transport along the foot. The video
reaches every edge of the window — no panel, no frame, no square sitting darker than the rest. - A still is not a clip. Official audio, art tracks, lyric videos and "cover art" uploads are skipped,
because Wave already shows the sleeve and reading a second set of lyrics over a frozen frame is
worse than no picture. - A clip can be placed before the song as well as after its start: the offset takes negative seconds.
- YouTube's own interface can never appear over the picture, and a paused clip is softened so its
player cannot be read through it.
Search
- A letter in the wrong place no longer means "not in your library":
nightclalfinds Nightcall,
midnigthfinds Midnight City, on the website, the phone and the Windows window. A near miss
always ranks below anything spelled correctly, and noise still finds nothing. - Artists, albums and playlists are ranked rather than listed, so the name you typed comes first.
- A lyrics service that spells a title with an edition word the file left out still matches; a live
take or an acoustic version remains a different recording.
Silent edges
Dead air is now measured against the loudest tenth of the song, has to hold for a third of a second
before a lead-in counts as finished, and is never trimmed past twenty seconds a side. The offer needs
two and a half seconds at the front or four at the back, it appears over the bar and inside the open
player, and accepting it only changes where playback starts and stops — the file keeps every sample.
Smaller things worth knowing
- Bringing a library over is in Settings → Library as well as behind the playlists shelf.
- Remix keeps four weeks, with the older weeks listed under the last seven days.
- Autoplay remembers the last twenty-four songs instead of the last twelve and steps back from an
artist it has just played. - Icons are drawn in one place against one grid, and Android and Windows carry the same paths.
- The phone card and the daily mixes on the home page share one spacing rhythm instead of sitting
against the heading above them. - Two devices link to each other by QR code or by a pasted code, whichever two they are, when both
are the web client — which is the same client on a phone, on a desktop and in a tab. The
installed Android and Windows builds cannot pair yet; that is the one row ofPLATFORMS.mdthat
still says "Not yet". - There is a short film of this version, recorded from the app itself rather than assembled
afterwards: the join between two songs, a search with a letter in the wrong place and the offer to
skip dead air are all shown happening. - Opening any dialog now locks the page behind it, so a full-screen player has no scrollbar beside it.
- The site, the phone and the window all speak Spanish and English now: each follows its device
by default, and Settings → Appearance keeps a row — Sistema · English · Español — that pins one
language instead. One dictionary (i18n/es.json) feeds the three, and the release check
refuses to ship native tables that lag behind it.
What this release is not
- No iOS application.
- The bar-by-bar planning described above is the web client's. The phone and the Windows window use
the same twelve-to-twenty-four-second window and the same hand-over curve, and start the join at
the point that window asks for; what they do not do is listen for beats, so a join there is placed
by seconds rather than by bars. - No account, no upload, no listening profile leaving the device.
- No signed installers: the native packages produced by CI are debug builds for testing.
Upgrading
An existing library opens unchanged: the database is migrated forward, playlists, favourites, saved
album orders, local lyrics and per-song clips keep their places, and nothing in your files is
rewritten. Silence trims saved by an earlier version remain exactly as they were saved.
Wave 0.1.0
Wave 0.1.0
Release date: 17 October 2026. This initial release provides the source and web client. Published assets and the exact tagged revision are listed on the GitHub Release. Native debug/unsigned CI packages remain test artifacts, not official signed installers.
Highlights
-
Keep both Mix covers full-size in expanded Now Playing, including narrow phones with lyrics collapsed, without changing compact-player artwork or the audio path.
-
Check web/Android/Windows version identity and release notes before publication; pin web/Pages runners to Ubuntu 24.04 and use current checkout/Node action runtimes.
-
Lyrics requests share a queue, avoid unnecessary preflight/duplicate requests and honor provider retry deadlines without an artificial minute-long minimum. Identical concurrent requests share work, and supported browsers coordinate same-origin tabs. Existing saved lyrics remain available offline.
-
Bring your own audio, keep the original quality, and browse a local collection without an account or subscription.
-
Daily mixes are now browsable playlist views. See all songs before playback, choose Play/Shuffle, or save an independent, editable playlist snapshot.
-
Mobile Home shows every collection shortcut in a balanced grid. Narrow layouts, larger text, dialogs and playback controls have additional regression coverage.
-
Search for lyrics from the editor without starting the song. Preview a match, explicitly use it, and save it for offline listening. Drafts survive failures and incidental clicks.
-
Native Windows now follows the web's navigation and surface hierarchy: Home, Search, albums/artists, playlists, favorites, six Settings sections, a compact player and expanded Now Playing.
-
Windows adds saved playlist ordering, editable queue, restored paused listening position, Mix/Autoplay controls, local cover overrides and explicit unplayed-song lyric search.
-
Windows packaging includes version/publisher metadata, normal unpacked binaries, SHA-256 checksums, conditional Defender scanning and an opt-in trusted-certificate signing script. No antivirus bypasses or guaranteed false-positive claims.
-
A shorter README with real screenshots and a 60-second, captioned, animated 1080p product film with soft acoustic-piano music.
Downloads
The Release assets workflow attaches Wave-0.1.0-web.zip, the product film and SHA256SUMS.txt after publication. The web ZIP supports root or subdirectory hosting through relative asset URLs. Extract it and serve its directory over HTTP(S); do not open index.html directly. Its release.json identifies the source commit. Source archives are also available from GitHub. These are not signed native installers, and checksums are not publisher signatures.
Using a daily mix
Open a card on Home to browse its songs. No playback starts until you choose a song, Play mix or Shuffle. Save as playlist preserves the current order; daily refreshes will not change that saved copy. Groups use local genre/artist tags, need at least three songs and contain up to thirty. Fewer appear when the library cannot support three.
Platform status
The web client remains the most complete. Windows is independent C#/WPF, not a web wrapper: hosted contracts, build/publish and automated WPF layout smoke checks pass. Android unit/lint/debug assembly checks pass. Native artifacts are unsigned/debug test packages, not signed installers. Windows still lacks several web-specific features, including word-stamped LRC, spectral illumination, automatic artwork extraction, system media controls and immersive idle mode. Android has a smaller feature set. See PLATFORMS.
Validation and known limits
See VALIDATION for the latest measured runs. Browser codecs/storage vary. Mix does not promise beat matching, gapless playback or bit-perfect device output. Local Autoplay can be disabled. Live LRCLIB availability and coverage remain provider-dependent and unverified in this workspace. Original audio/storage and legal notices are unchanged.
Unsigned Windows downloads can still receive warnings. A successful Defender scan is only one engine/definition snapshot, not universal antivirus approval or publisher reputation. Signing requires a real trusted certificate and remains a publication gate. The existing main JavaScript bundle-size advisory remains.