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

257 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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