Files
qbz/docs/release-1.2.13/CHANGELOG_FULL.md
T
vicrodh 59990fdc35 docs(release): add 1.2.13 release notes and full changelog
TAG_DETAILS.md is the curated, user-facing release summary rendered by the website and the in-app About modal. CHANGELOG_FULL.md is the complete commit list for v1.2.12..v1.2.13, restoring the two-file release-docs layout last used at 1.2.5.

cc
2026-05-16 14:40:09 -06:00

19 KiB
Raw Blame History

c747c72e chore(release): bump version to 1.2.13 "400+ stars" bfcd7690 fix(cast): heartbeat the Chromecast every 5s to keep the connection alive bf734546 Merge bugfix/pre-1.2.13: graphics recommendation cleanup, faster track resume 3abb7f66 fix(playback): gate within-track resume on cache, drop slow seek path 3d29cf13 fix(graphics): make recommendation advisory-only, GPU-aware DMA-BUF help 29b766ae fix(graphics): recommend CPU for NVIDIA-only, allow DMA-BUF on hybrid f02e1925 Merge branch 'pre-release' into bugfix/pre-1.2.13 420fd4d2 Merge refactor/qbz-app-boot-watchdog: boot watchdog 1a5dbe07 refactor(qbz-app): extract boot watchdog decision fbf3a5a1 Merge refactor/qbz-app-graphics-autoconfig: graphics autoconfig 3c963cda refactor(qbz-app): extract graphics autoconfig f457401d Merge refactor/qbz-app-graphics-detection: graphics detection dceeacb5 refactor(tauri): use qbz-app graphics detection 2fc9270c refactor(qbz-app): add graphics detection 2beb83cb Merge refactor/qbz-app-user-data-paths: user data paths b65feee5 refactor(tauri): use qbz-app user data paths a497d61b refactor(qbz-app): add user data paths e4ec5cd3 Merge refactor/qbz-app-developer-settings: developer settings store be500956 refactor(qbz-app): add developer settings store 1fe0ac35 Merge refactor/qbz-audio-settings-foundation: audio settings store 87e426ab refactor(tauri): use qbz-audio settings f85df353 refactor(qbz-audio): align audio settings store c4a0a52a Merge refactor/qbz-app-graphics-settings: graphics settings store 441bcc5f refactor(tauri): use qbz-app graphics settings bcdbc699 refactor(qbz-app): add graphics settings store 88432500 Merge refactor/qbz-app-image-cache-settings: image cache settings store 4d1feec7 refactor(tauri): use qbz-app image cache settings f8f8bb88 refactor(qbz-app): add image cache settings store 62cd6ae1 Merge refactor/qbz-app-download-settings: download settings store 10b0e259 refactor(tauri): use qbz-app download settings 26012e98 refactor(qbz-app): add download settings store 74ce1c32 Merge refactor/qbz-app-remote-control-settings: remote control settings store faca8376 chore(tauri): update qbz-app lock dependencies f527186c refactor(tauri): use qbz-app remote control settings 2e438318 refactor(qbz-app): add remote control settings store ebe03193 Merge refactor/qbz-app-ui-preferences-foundation: qbz-app UI preference stores 7f8e3533 Merge bugfix/pre-1.2.13: release watch filter, album tooltip, copyable settings text 0b83c5a0 fix(css): keep pre, code, kbd, samp selectable globally 29e70de5 feat(discovery-v2): tooltip with full album title on AlbumCardLite 3903086f fix(release-watch): drop upcoming and non-streamable albums 04d5b451 docs(qbz-app): keep app comments frontend agnostic 2d7639c6 refactor(tauri): use qbz-app ui preference stores d1082317 refactor(qbz-app): add ui preference stores 2b7b2312 Merge bugfix/pre-1.2.13: offline-tolerant CoreBridge + Continue Listening hydration db390724 fix(discovery-v2): hydrate Continue Listening tracks with full metadata and context a40b1b6c fix(core): make QbzCore::init tolerant to offline startup 7f38dbcc refactor(tauri): use qbz-app preference stores 61d5715a refactor(qbz-app): add preference stores d48a1019 chore(deps): bump svelte to 5.55.7 917b2a8b fix(ui): avoid t shadow in mixtape detail dac1b3a7 refactor(tauri): use qbz-app settings stores 800447d3 refactor(qbz-app): add settings stores dc74db64 test(qbz-app): cover runtime state transitions 0877f4a5 refactor(tauri): use qbz-app runtime types d16ef003 refactor(qbz-app): move runtime core 4f008cd2 refactor(qbz-app): scaffold app crate 1bb8d53d feat(graphics): NVIDIA Wayland compat toggle + watchdog fallback to CPU db45051c chore(security): patch file-type 16.5.4 ASF infinite-loop (GHSA, alert 56) 2832213d Merge pull request #424 from vicrodh/dependabot/npm_and_yarn/pre-release/types/node-25.7.0 8b176a18 chore(deps): bump discord-rich-presence 0.2.5 → 1.1.0 with API adjustment 47c9c618 Merge pull request #432 from vicrodh/dependabot/cargo/src-tauri/pre-release/tower-http-0.6.8 875ad452 chore(deps-dev): bump @types/node from 22.19.18 to 25.7.0 7ee53599 Merge pull request #429 from vicrodh/dependabot/npm_and_yarn/pre-release/vite-8.0.12 b165ddb0 Merge pull request #430 from vicrodh/dependabot/npm_and_yarn/pre-release/sveltejs/vite-plugin-svelte-7.1.2 69fbb1df Merge pull request #426 from vicrodh/dependabot/npm_and_yarn/pre-release/tauri-apps/cli-2.11.1 11854a99 Merge pull request #427 from vicrodh/dependabot/npm_and_yarn/pre-release/tauri-apps/plugin-opener-2.5.4 0eae6a56 Merge pull request #425 from vicrodh/dependabot/cargo/src-tauri/pre-release/tokio-1.52.3 dc6725b1 Merge pull request #431 from vicrodh/dependabot/cargo/src-tauri/pre-release/filetime-0.2.29 91bfb056 Merge pull request #433 from vicrodh/dependabot/cargo/src-tauri/pre-release/tauri-plugin-single-instance-2.4.2 921f8e1a fix(session): resume Qobuz streams at saved position without losing seek (#315) b2960e80 feat(graphics): smart GPU preference with boot watchdog and crash recovery 77754e16 feat(discovery): redesign Radio Station Lite cards to match iOS reference cd035a34 feat(graphics): detect hybrid NVIDIA+iGPU and surface GPU + DE in Diagnostics 58807448 chore(deps): bump tauri-plugin-single-instance in /src-tauri 7ce112ba chore(deps): bump tower-http from 0.5.2 to 0.6.8 in /src-tauri 620a393b chore(deps): bump filetime from 0.2.27 to 0.2.29 in /src-tauri b33ce39f chore(deps-dev): bump @sveltejs/vite-plugin-svelte from 7.0.0 to 7.1.2 9c83e116 chore(deps-dev): bump vite from 8.0.10 to 8.0.12 d53844c2 chore(deps): bump @tauri-apps/plugin-opener from 2.5.3 to 2.5.4 7e7f3e05 chore(deps-dev): bump @tauri-apps/cli from 2.10.1 to 2.11.1 060766e1 chore(deps): bump tokio from 1.52.2 to 1.52.3 in /src-tauri b06580af feat(local-library): unify album quality badge + add source icon across surfaces b5918e1c fix(library): recover Plex album format + bit-depth when codec is missing 0f5bff3a refactor(immersive): extract shared ImmersiveSongCard from 9 panel copies 5bc5122d fix(ephemeral): replace 1 << 48 with 2 ** 48 for ephemeral track id floor 7bb10472 fix(linebed): size artwork off the live measured column height c715475d fix(linebed): use align-self: stretch on artwork instead of percentage height 783f7e41 fix(linebed): scale artwork to match track-meta column height cb21653a fix(quality-badge): tighten framed-badge right gutter from 8px to 4px 72a1cbab fix(quality-badge): match framed-badge right gutter to Hi-Res SVG transparent space 978d5d68 feat(discovery): unified quality badge on album cards, Qobuz-style layout d0349119 feat(settings): add dismiss + manual re-detect to the graphics recommendation banner 700d5ef2 feat(settings): surface graphics recommendation banner in the Graphics tab 11721594 refactor(settings): split Graphics out of Appearance into its own section dc96c5ac feat(graphics): flip DMA-BUF default to opt-in 3061de21 chore(scripts): add dev-igpu-mode.sh for iGPU-only paint path testing a2ab509f fix(toast): keep error text selectable for debug copy-paste 48b83d14 Merge pull request #423 from afonsojramos/rework-titlebar-drag-region 032021de feat(lyrics): drag region on sidebar header and selectable lyrics panel e54c5de0 feat(views): drag regions on top-bars across remaining views 47f3a9f3 feat(views): drag regions on home, library, and favorites top-bars 897f6ac8 feat(detail-views): drag regions and selectable metadata blocks eb57c70e feat(modals): mark info modals and legal notice selectable 418bf371 refactor(styles): drop now-redundant local user-select: none a34e4185 feat(sidebar): drag window from aside top padding band on macos 69d7ee02 refactor(layout): remove macos overlay drag and main-content padding 5610861e refactor(titlebar): drag on spacer divs not full bar c1c151ee refactor(css): user-select none on body with .selectable opt-in f12b4e29 Merge branch 'feature/queue-persistence-315' into pre-release d4745f84 feat(session): restore local on startup, let QConnect overwrite when it lands (#315) 267440f5 feat(session): round-trip streamable, parental_warning, source_item_id_hint (#315) 7284568c feat(session): persist queue on every mutation, not just track-change (#315) 6f8f6f43 Merge branch 'bugfix/qconnect-batch-pagination-419' into pre-release 6f05fd30 fix(qobuz): chunk get_tracks_batch into 50-ID windows (#419) 93f51d26 Merge pull request #422 from afonsojramos/document-stream-error-clear 8445f845 Merge pull request #421 from afonsojramos/close-other-filters-on-open 5865c166 docs(player): explain set_stream_error(false) message swallow 0daca399 Merge pull request #420 from afonsojramos/refactor/internal/macos-shared-mode-followup 9231ea2b fix(mixtapes): replace click-swallowing backdrop with document click-outside b3b0fce5 fix(purchases): replace click-swallowing backdrop with document click-outside 3382a36e fix(mixtape-collection): replace click-swallowing backdrop with document click-outside 29598747 fix(collections): replace click-swallowing backdrop with document click-outside ff11dea8 fix(label): drop tracks context menu backdrop in favor of click-outside listener ddf0ed41 fix(artist-detail): consolidate section sort menus and drop tracks context backdrop 126dff12 fix(library): consolidate toolbar dropdowns into single openMenu state 7fccf9bd fix(favorites): consolidate toolbar and section dropdowns into single openMenu state fc56fb4b feat(genre-filter): make isOpen bindable for parent dropdown coordination 65320134 perf(lyrics): drop karaoke gradient in non-immersive CPU mode 427e1b5b Merge branch 'feature/multiselect-completion-381' into pre-release 58a80b57 feat(favorites): select-all checkbox for track multiselect 2e2c7549 feat(local-library): finalize #381 multiselect with cross-context apagador 000f7c10 Merge pull request #418 from afonsojramos/fix-macos-lyrics-text-color 84dcd7eb perf(+page): guard lyrics state writes against subscriber churn 640dead3 fix(lyricsStore): claim rAF handle pre-tick and notify on every change 6166584e perf(playerStore): extrapolate audio time between backend position events 64511c4f feat(lyrics): segment active-line gradient by visual line via pretext 57f83079 feat(ui): toast on audio:init-failed event a2518490 i18n(toast): add audioInitFailed translation key 6d91ec0e feat(audio): emit audio:init-failed Tauri event on backend init failure 04e17cc4 feat(player): expose user-readable stream_error_message channel a7b40bf6 perf(player): cache CoreAudio nominal rate query for 750ms 83fb109b Merge pull request #416 from afonsojramos/debug-local-update-issue da3c1e86 Merge pull request #410 from Vudgekek/fix/internal/macos-shared-mode f5e00e0a Merge branch 'feature/cpu-mode-lite-panels' into pre-release 4b290308 feat(immersive): CPU-mode lite path + per-panel toggles + warning modal + badge unification f528129f Merge branch 'feature/412-track-list-album-covers' into pre-release 145831fe feat(local-library): opt-in album artwork in tracks/folders list (#412) 9abc82b8 Merge bugfix/411-album-title-prefer-metadata into pre-release bdf6ca30 fix(local-library): prefer album metadata over folder-derived title (#411) cd799211 Merge branch 'feature/discovery-v2-scaffold' into pre-release 185d5abd fix(search): card width + quick-menu portal 5045096e fix(album-card-lite): contain: paint on cover-wrap forces clip de30ede4 fix(album-card-lite): bound cover img to parent + delete dead legacy views 234af9d6 fix(search): align-items: flex-start + fixed wrapper width 36b6a2ee feat(purchases): migrate AlbumCard → AlbumCardLibraryLite d5d8d29d feat(favorites): migrate AlbumCard → AlbumCardLite d02e5d38 feat(views): migrate Award + AlbumDetail + ArtistsByLocation to AlbumCardLite 79cee870 feat(label): migrate AlbumCard → AlbumCardLite 550d75bb feat(search): migrate AlbumCard → AlbumCardLite 10e32aa0 feat(artist-detail): migrate AlbumCard → AlbumCardLite 447344c8 fix(local-library): plex id double-prefix + scrim z-index over buttons 9f417999 perf(plex): request 220x220 transcoded artwork for thumbnail contexts 4bc1b0fa fix(local-library): hover ring above img, scrollbar height + style match 87d16926 fix(local-library): visible scrollbars + list as default view 1aea33cf feat(local-library): Plex consolidation in chunked albums page query 2e58c889 fix(library-card): hover indicator uses inset box-shadow (not clipped) 9c2ce894 style(legacy-grid): match Discovery 32px gap in VirtualizedAlbumList 478582e2 style(library-card): hover outline + 220px card width to match Home 82014205 style(grid-pool): bump card gaps to 32px to match Home visual rhythm 1a5131ba style(library-card): drop solid theme buttons for white outline + shadow 55a139da style(library-card): align action buttons at bottom 44px (matches Home Lite) 694423c7 perf(library-card): drop hover entirely, theme-coloured persistent buttons 36ce669c perf(grid-pool): revert transform + contain, drop bufferRows 2→1 9003d93a perf(grid-pool): drop bufferRows 3→2 + skeleton placeholder f494b1e6 perf(library-card): drop full-cover hover scrim, keep floating buttons 7d26522f perf(grid-pool): contain: layout paint on each slot a3f1426c perf(grid-pool): position slots with transform instead of top/left 7508c3cd fix(local-library): fall back to legacy path when Plex is enabled 8f2cd965 feat(local-library): server-paginated chunked store for Albums grid 810a41b4 feat(local-library): recycling-pool virtualizer for Albums grid 3eb62a50 feat(discovery-v2): AlbumCardLibraryLite + migrate LocalLibrary grid b2e88c47 refactor(settings): hard-disable chrome toggle without GPU, terser note d1ad0fc8 feat(window): disable transparent chrome when hardware acceleration is off 884da638 chore(scripts): add dev-cpu-mode.sh for forced software rendering b5db0241 fix(LyricsLines): make line-text block to expand background-clip paint area f9a9d103 fix(LyricsLines): let EMA accept rAF-rate block measurements c68b1e28 refactor(modals): migrate all 22 shared-modal callers to ModalLite f4f8fcf9 fix(LyricsLines): use activeProgress as karaoke floor, lookahead as bonus 4de657e2 feat(LyricsLines): JS-driven karaoke with measured block-interval and lookahead dcb13568 feat(discovery-v2): ModalLite — add withScrim + footerAlign + overlay backdrop d729c68d feat(discovery-v2): spotlight rewrite + artist follow + loading skeleton 6d251001 refactor(LyricsLines): single-div template with class-toggle transitions 4d426a80 fix(lyrics): snap line progress to 1 when at least 99% through 959f6568 refactor(lyrics): notify listeners on every progress change 13d1d691 perf(lyrics): drive active-line updates via requestAnimationFrame a5100a32 perf(page): memoize lyrics sidebar lines projection 9aacf1d7 feat(lyrics): parse LRC gap markers and use endMs for line bounds 556a345c feat(discovery-v2): RadioCardLite + Spotlight radio + Mixes resize + i18n fixes 5a8d3a20 feat(discovery-v2): For-You-exclusive sections (Spotlight, Rediscover, etc.) fdd8de48 feat(discovery-v2): per-tab section preferences (Home / Editor's / For You) 704392d3 feat(runtime): conditional flicker fix gated by HW-accel state da1b29b2 feat(graphics): default hardware_acceleration to 1 (was 0) e9504efa perf(modals): gate 8 always-mounted modals with {#if}, drop blur shadow e3cdc97a feat(discovery-v2): ModalLite — opacity-only animation, no scale transform 7696b1ee fix(discovery-v2): prioritize Album of the Week over other ribbons 86195fcb feat(discovery-v2): rephrase queue + offline actions, reorder 35520e93 feat(discovery-v2): playlist hover overlay + quick menu (refactored, not ported) 87423e92 feat(discovery-v2): ribbon to bottom, meta to top-left, actions raised fdeb544c fix(lyrics): correct active-line color on macOS WebKit 2baa2e28 feat(discovery-v2): responsive Top Albums grid + Hi-Res only badge + meta tweak 9285a380 feat(discovery-v2): Top Albums rank counter + hover-play + kebab menu b4e08ac5 feat(discovery-v2): wire add-to-playlist + songlink share to album quick menu 5d33db2d feat(discovery-v2): wire kebab to minimal action quick-menu d9c9ec11 feat(discovery-v2): genre/year meta + slide-up actions + bottom positioning 871e550d feat(discovery-v2): Qobuz-style hover overlay with 3 action buttons c1510201 feat(discovery-v2): cheap hover overlay on album cards f9479ac8 feat(discovery-v2): Popular albums as compact 4×3 grid 3e4e04a4 feat(discovery-v2): playlist cover with object-fit:contain + dominant color bg 0c8cde75 feat(discovery-v2): compact track-row grid for "Continue Listening" 42f59033 feat(discovery-v2): quality badges + press / award ribbons on album cards b9a902a8 chore(discovery-v2): per-section item count 6 → 18 29a6f386 perf(zoom): only register wheel listener while Ctrl/Meta is held 67118b21 perf(back-to-top): keep button mounted, swap mount/unmount for opacity e477d0ce perf(modal): drop backdrop-filter blur on overlay 3fb9e554 feat(discovery-v2): customize modal + gear icon + bigger gaps efa7b2b1 feat(discovery-v2): section preferences (default 7 enabled) 5b608e1d feat(discovery-v2): bump card size 180px → 220px (matches image.small) fb987366 feat(discovery-v2): wire ideal-discography section 5ae5087f feat(discovery-v2): drag-to-paginate, fade transition, bump to 20 items fa78f6af feat(discovery-v2): route artwork through cachedSrc 1ad08f2d feat(discovery-v2): pagination by DOM slice (no scroll containers) 368f0b42 Revert "feat(discovery-v2): horizontal-scroll sections (Cider pattern)" 612384ae feat(discovery-v2): horizontal-scroll sections (Cider pattern) f6ac95ec feat(discovery-v2): highlight currently-playing track in continue listening fcdd6021 feat(discovery-v2): wire genre filter button into toolbar 5c30ced8 feat(discovery-v2): gate scroll-area by active tab e4040044 feat(discovery-v2): wire personalized + playlist + artist sections aa526fb8 feat(discovery-v2): wire editorial sections from discover-index b6d2c121 feat(discovery-v2): first section — new releases 373018a1 feat(discovery-v2): scaffold clean-room rebuild of home view 03af983a chore(scripts): add measure-cpu-window for structured perf sampling 3c6f5f90 perf(now-playing-bar): drop invisible backdrop-filter efcdad55 perf(cached-image): drop forced compositing layer on every artwork 82b3217c perf(playlist-card): drop blur(30px) on artwork backdrop 9aa10e95 perf(album-card): drop hover marquee, decorative blurs, add content-visibility 6029e93f Revert "Merge pull request #407 from afonsojramos/fix-glued-top-animation" 43a35647 Merge branch 'bugfix/unavailable-track-row-dim' into pre-release 03d1142f fix(ui): dim unavailable tracks across all track list views 4fd85b5b fix(ci): suffix macOS .app.tar.gz bundles with arch to fix auto-updater 1edde8a2 fix(audio): rephrase CoreAudio rate-mismatch errors for end users 9e632386 fix(audio): retry CoreAudio shared-mode open on rate mismatch c408ea73 test(player): cover compute_needs_new_stream decision rule ac60113c refactor(player): extract StreamRecreateDecision helper 3b34a734 refactor(player): rename current_sample_rate to current_track_sample_rate 7bad704e fix(audio): fix macOS Shared Mode playback from changing speed d44ee7c0 build(flake): bump qbz to v1.2.12