Repository navigation
Releases
OxiTide 1.1.0
OxiTide 1.1 speaks your language. The whole interface, the phone remote and the tray menu are now available in 23 languages besides English, and three accessibility additions arrive with them: support for Windows contrast themes, spoken track changes for screen readers, and interface zoom.
OxiTide is an unofficial, third-party project. It is not affiliated with, endorsed by, or connected to TIDAL. A paid TIDAL subscription is required. OxiTide plays only what your own account can already stream.
Languages
Deutsch, Français, Español, Italiano, Português (Brasil), Nederlands, Svenska, Norsk bokmål, Dansk, Suomi, Polski, Čeština, Magyar, Українська, Русский, Română, Ελληνικά, Türkçe, Bahasa Indonesia, 日本語, 한국어, 简体中文 and 繁體中文.
- Pick one in Settings → Appearance → Language, or leave it on System to follow Windows (or your desktop on Linux). The list has a search field: type the language's own name, its name in English or in the current language, or its code. The app switches at once, with no restart (the text on screen erases and retypes itself in the new language; not with reduced motion), and starts in that language next time.
- Machine-translated. Every language was drafted by a machine and has not been checked by a native speaker yet. Expect odd words and stiff phrasing in places. If something reads wrong, Help translate under the language picker explains how to report it (no files needed) or fix it yourself; corrections are very welcome.
- Everything follows the language: menus, dialogs, tooltips, settings search (it matches your language's words and the English ones), screen-reader labels, the tray menu and taskbar buttons, and the phone remote (which follows the phone's own language). Dates, numbers, durations and sorting use the language's conventions ("11. Feb. 2014", "1,1 Mio.", "2014年2月11日").
- Fonts: Polish, Czech, Hungarian, Romanian, Turkish, Cyrillic and Greek text now uses the app's own typefaces; Japanese, Korean and Chinese use the system's fonts with the right regional shapes.
- Still in English: messages that come from TIDAL itself (page and shelf titles), technical error details shown under a translated headline, and the Hi-Fi Rack's painted labels.
Accessibility
- Windows contrast themes. With a contrast theme on (Settings → Accessibility → Contrast themes), OxiTide uses the theme's colours throughout: focus rings, the seek and volume bars, toggles, selected and playing rows, the current page and drop targets stay visible, and decorative layers (the cover backdrop, grain, colour washes) step aside. The Hi-Fi Rack stays usable but drops its look.
- Track changes for screen readers. When you start a track, skip, or jump in the queue, screen readers announce "Now playing: title by artists". Tracks that follow on their own are not announced, so listening stays quiet.
- Zoom. Settings → Appearance → Zoom makes the whole interface 80–150 % of its size, or use Ctrl+= / Ctrl+− / Ctrl+0. It is remembered between sessions; the mini player keeps its size.
Install
| Platform | File |
|---|---|
| Windows 10/11 (x64) | OxiTide_1.1.0_x64-setup.exe (per user, recommended) or the .msi (per machine) |
| Linux (x86_64) | .AppImage or .deb; PKGBUILD for Arch (AUR recipe) |
Check downloads against SHA256SUMS.txt. An installed 1.0.1 (or any copy since 0.3) offers the update in Settings → System → Updates; your settings, queue and history carry over. deb and AUR installs update through the package manager.
Known limits and Linux
Unchanged from 1.0: Windows builds are not code-signed (SmartScreen: More info → Run anyway after checking the hash), the phone remote uses plain HTTP on your local network, and Linux is a work in progress with the known issues listed in the 1.0 release notes. Right-to-left languages are not supported yet.
OxiTide 1.0.1
OxiTide 1.0.1 is a maintenance release. It changes how updates are applied under the hood and removes the one security advisory that 1.0 shipped with accepted. Playback, output and the interface are the same as in 1.0.
OxiTide is an unofficial, third-party project. It is not affiliated with, endorsed by, or connected to TIDAL. A paid TIDAL subscription is required. OxiTide plays only what your own account can already stream.
Changes
- No more accepted advisory. 1.0 listed
zip4.6.1 (RUSTSEC-2026-0367/0368/0369) as an accepted advisory, pulled in by Tauri's updater; a fourth (RUSTSEC-2026-0429) has been published since. OxiTide's updates are never archives (Windows installs the setup or.msifile directly, and the Linux AppImage is replaced as a whole), so the updater is now built without archive support at all. Theziplibrary is gone, and with it all four advisories. - Release checks. A release is now built only after the full test suite passes on the exact commit being released, on Windows and Linux. Behind the scenes, the audio engine's tests were made reliable on slow build machines, and dependencies are checked for security advisories every week.
Install
| Platform | File |
|---|---|
| Windows 10/11 (x64) | OxiTide_1.0.1_x64-setup.exe (per user, recommended) or the .msi (per machine) |
| Linux (x86_64) | .AppImage or .deb; PKGBUILD for Arch (AUR recipe) |
Check downloads against SHA256SUMS.txt. An installed 0.3 or later copy offers the update in Settings → System → Updates. deb and AUR installs update through the package manager.
Known limits and Linux
Unchanged from 1.0, apart from the advisory above: Windows builds are not code-signed (SmartScreen: More info → Run anyway after checking the hash), the phone remote uses plain HTTP on your local network, and Linux is a work in progress with the known issues listed in the 1.0 release notes.
OxiTide 1.0.0
OxiTide 1.0 is the first stable release of this unofficial TIDAL desktop client. It runs on Windows 10/11, and on Linux as a work in progress.
OxiTide is an unofficial, third-party project. It is not affiliated with, endorsed by, or connected to TIDAL. A paid TIDAL subscription is required. OxiTide plays only what your own account can already stream.
What's in 1.0
- Playback engine: a Rust engine with gapless playback, a streaming cache that prefetches the next track, offline playback of cached tracks, and recovery from network drops in place.
- Bit-perfect output: WASAPI exclusive and ASIO on Windows, ALSA direct hardware on Linux. When something changes the signal, OxiTide tells you.
- Output picker: one row per device, with its own Shared/Exclusive mode, nickname, icon, pin and hide, and a line for each device's supported formats. Pinned devices also appear in the player bar's quality menu.
- Sound tuning (off by default): a 10-band EQ, ReplayGain, crossfade, and AutoMix (experimental) transitions in Classic, Quick, Blend and Auto styles.
- Three looks: Atmosphere, Studio and Hi-Fi Rack, each light and dark.
- Phone remote: an opt-in web page for playback, the queue, search and your library, paired with a single-use QR code.
- Library: an editable own profile, a My Collection sidebar you can reorder, Save for Later, playlist folders and collaborators, and Undo for removals.
- Desktop: listening history and stats (stored locally), a sleep timer, tray, global hotkeys, media keys (SMTC / MPRIS), Windows taskbar controls, Discord Rich Presence, and Last.fm / ListenBrainz scrobbling with an offline queue.
- Updates: Windows installs and the Linux AppImage find new releases in Settings → System → Updates. Each update is verified against the release signing key.
New since 0.7.0
- Exclusive output plays at a fixed 100%. On a device that has its own volume control (and on ASIO), exclusive mode leaves the level to the DAC or the system volume. The in-app volume shows 100% and is locked. Your slider position comes back when you return to shared mode. OxiTide no longer writes the device's own volume, which used to leave later shared sessions quieter. Before switching to exclusive, OxiTide warns you that playback may get louder; you can turn the warning off with "Don't show again".
- A device without its own volume control follows If exclusive fails: it either uses the in-app volume (not bit-perfect below 100%) or refuses to open.
Install
| Platform | File |
|---|---|
| Windows 10/11 (x64) | OxiTide_1.0.0_x64-setup.exe (per user, recommended) or the .msi (per machine) |
| Linux (x86_64) | .AppImage or .deb; PKGBUILD for Arch (AUR recipe) |
Check downloads against SHA256SUMS.txt. An installed 0.3 or later copy offers the update in Settings → System → Updates. deb and AUR installs update through the package manager.
Known limits
- Windows builds are not code-signed. SmartScreen shows "Windows protected your PC": choose More info → Run anyway after you check the hash. Updates are still verified against the release signing key.
- The phone remote uses plain HTTP on your local network. Another device on the same network could capture a paired phone's session and use the remote's (allowlisted) controls: playback, queue, favourites and adding to playlists. The remote is off by default. Revoke paired devices in Settings.
- Debug builds only: with the remote on, a development build proxies the phone page to the Vite dev server, so a LAN peer could read project source files. Release builds serve embedded files only.
- One transitive advisory is accepted:
zip4.6.1 (RUSTSEC-2026-0367/0368/0369), pulled in by Tauri's updater, the latest release. Every update archive is signature-checked before it is opened, and on Windows the updater runs the installer directly.
Linux: work in progress
Linux builds, installs and plays (tested on CachyOS with KDE Wayland and PipeWire; Ubuntu 22.04 is the oldest base). Known issues:
- The "ALSA default, may resample" (
sysdefault:/ dmix) output entries can click on skip and seek. Use "System default" or the "(direct hardware)" entry. - After OxiTide has held a DAC directly, PipeWire can lose that DAC until you replug it or run
systemctl --user restart wireplumber. - Switching from "System default" to the same DAC's exclusive entry takes about 5 s while PipeWire releases the card.
- Skip and seek on ALSA lag by up to ~150 ms (the buffer plays out to a faded end).
- The tray icon has no tooltip (libappindicator has no API for one).
Performance
The scripted performance corpus (start-up, time to first sound, gapless advance, scrolling and filtering 10k-row lists, cache, a 2-hour soak, idle and tray, Hi-Fi Rack) passes its budgets on the release build. Budgets that were changed rather than met as first set:
- Memory budgets are the worst release run plus 15%.
- The 10k filter/sort scenario's frame p99 budget is 72 ms.
- Hi-Fi Rack memory (865 MB) and IPC (760 KB/min) were re-measured for WebView2 157: the rise came from the WebView, not the app.
- Gapless advance has no debt: the largest gap is 43 ms against a 100 ms budget.
OxiTide 0.7.0
New output device picker
Settings → Playback → Output now shows one row per device, grouped, instead of a dropdown and a single global exclusive switch.
- Each device has its own mode (shared/exclusive), and you can give it a nickname or icon, pin it, or hide it.
- Devices show clean names. On Linux it's one row per real output (HDMI and USB named properly) instead of duplicate
sysdefault/plughw/hwentries. ASIO devices drop the "(ASIO)" suffix. - The list checks what each device supports in the background, and on Windows it updates when devices are plugged in or removed.
Output fallback recovers
If your selected device isn't ready when playback starts (e.g. a USB DAC still waking up), OxiTide falls back to the default output as before. It now switches back to your device once it shows up, picking up the track where it was. Choosing the same device again retries it.
Linux
- Unplugging a device shows "output device disconnected" instead of a raw ALSA error. Plugging it back in returns playback to it, after waiting for PipeWire to let go of the device.
- No more clicks or delays on play, pause, skip and seek: shorter buffer, fade-in on start and faded stops.
- A device another app is using now says it's busy, instead of "exclusive not supported".
- Phone remote: Settings detects ufw/firewalld and gives you the command to open the port.
- Showing the window from the tray keeps it the right size.
- AUR PKGBUILD builds again (LTO disabled for the build).
Interface
- Every page and the player bar fit down to a 720 px wide window: the controls shrink step by step, headers stack, and tables drop columns instead of overflowing.
- Smoother queue-dock slide on Home and Explore (no first-frame jump).
- Explore: Featured promotions show as real, clickable cards instead of blank ones.
Performance
- While the window is hidden to the tray or minimized, OxiTide stops sending the UI position and beat updates: app CPU drops about 1.2% → 0.6% (Windows).
- The spinning now-playing mark is drawn by the GPU: about 51% less CPU during Atmosphere playback.
- Colour and lamp fades run in fewer steps.
Windows installers aren't code-signed (SmartScreen: More info → Run anyway). Check downloads against SHA256SUMS.txt.
OxiTide 0.6.0
New
- Volume that behaves like other players. The slider follows a loudness curve, so every part of it changes the volume by about the same amount (50% ≈ half as loud). Your saved volume is converted and keeps its loudness.
- Instant, click-free volume changes. Clicking or dragging the bar is heard right away (it used to lag by a fraction of a second), and changes glide over a few milliseconds instead of jumping, so the DAC no longer clicks. In exclusive mode the DAC's own volume is stepped smoothly; a device without hardware volume is now scaled in software (bit-perfect at 100%).
- Last.fm connects with no setup. OxiTide ships its own API key; your own key/secret still takes priority.
- Each mode remembers its own look (Typography & layout and Dynamic color). Studio gets a true-black sidebar, queue and player bar, and the wave seek bar.
Fixes
- Now Playing's frame no longer lingers while it closes.
- Settings chips no longer look muddy on Studio's grey surfaces.
Installers are not code-signed (Windows SmartScreen: More info → Run anyway); check downloads against SHA256SUMS.txt. In-app updates are verified against the update-signing key.
Full Changelog: v0.5.0...v0.6.0
OxiTide 0.5.0
New
- Autoplay keeps the music going when the queue runs out, with tracks similar to what you were playing (Settings → Playback; on by default). Turning it off removes the upcoming suggestions.
- Your queue survives a logout. Signing back in to the same account brings back the queue, track and position, paused. A different account never gets it.
- Confirmations before logging out, and before downloading an update. The update dialog names the source (this repo's GitHub releases); nothing is downloaded until you confirm.
- Settings → Extras is now Cat, with a paw icon.
Fixes
- A page reload or re-login could crash the backend and leave the app on "Loading…".
- A volume change made between two tracks is no longer lost.
Linux
- Home no longer lags behind playback on WebKitGTK (was near 1 fps while playing; small blurred badges are drawn without blur on Linux).
- Spinning discs, the now-playing mark and Rack's meters draw at 30 fps on Linux, roughly halving their CPU cost.
- ALSA now reports its output delay, so CatJam and the sleep-timer fade line up with what you hear.
- The AUR
PKGBUILDfetches the source from GitHub (the Codeberg URL needed a login).
Installers are not code-signed (Windows SmartScreen: More info → Run anyway); check downloads against SHA256SUMS.txt. In-app updates are verified against the update-signing key.
Full Changelog: v0.4.0...v0.5.0
OxiTide 0.4.0
Full Changelog: v0.3.1...v0.4.0
OxiTide 0.3.1
Full Changelog: v0.3.0...v0.3.1