From 59990fdc355e839ef556ce8d158d4c96429661cc Mon Sep 17 00:00:00 2001 From: vicrodh <103399283+vicrodh@users.noreply.github.com> Date: Sat, 16 May 2026 14:40:09 -0600 Subject: [PATCH] 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 --- docs/release-1.2.13/CHANGELOG_FULL.md | 256 ++++++++++++++++++++++++++ docs/release-1.2.13/TAG_DETAILS.md | 53 ++++++ 2 files changed, 309 insertions(+) create mode 100644 docs/release-1.2.13/CHANGELOG_FULL.md create mode 100644 docs/release-1.2.13/TAG_DETAILS.md diff --git a/docs/release-1.2.13/CHANGELOG_FULL.md b/docs/release-1.2.13/CHANGELOG_FULL.md new file mode 100644 index 000000000..4fc6387e2 --- /dev/null +++ b/docs/release-1.2.13/CHANGELOG_FULL.md @@ -0,0 +1,256 @@ +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 diff --git a/docs/release-1.2.13/TAG_DETAILS.md b/docs/release-1.2.13/TAG_DETAILS.md new file mode 100644 index 000000000..160493395 --- /dev/null +++ b/docs/release-1.2.13/TAG_DETAILS.md @@ -0,0 +1,53 @@ +# 1.2.13 — 400+ stars + +qbz just passed **400 stars on GitHub**. Thanks to everyone who has tried the player, filed an issue, or sent a patch — this release is named for that milestone. + +There are no headline features this time. 1.2.13 is a polish and stability release: most of the work went into **macOS**, where @afonsojramos and @Vudgekek tightened audio playback, the title bar, and the updater. + +The rest is a steady round of bug fixes, a new graphics auto-config helper for Linux, and groundwork under the hood. + +--- + +## macOS + + - **Shared Mode playback** — fixed a speed drift, retries CoreAudio on a sample-rate mismatch, and rate-mismatch errors are now phrased for end users (@Vudgekek PR #410, @afonsojramos PR #420) + - **Title bar & window dragging** — drag regions reworked across the sidebar and view top-bars; the legacy macOS overlay drag region is gone (@afonsojramos PR #423) + - **Synced lyrics** — active-line color corrected under macOS WebKit + - **Auto-updater** — `.app.tar.gz` bundles are suffixed with the architecture so the updater picks the matching build + +--- + +## Session restore + + - **Full queue** — the entire play queue is saved on every change and restored on next launch, not just the current track (#315) + - **Qobuz Connect priority** — when a local session and a Qobuz Connect session both exist at startup, the Qobuz Connect state takes over + +--- + +## Linux graphics + + - **Graphics auto-config** — a new helper detects your GPU and recommends rendering settings; an advisory banner in Settings → Graphics shows what it suggests + - **Boot watchdog** — if a risky graphics setting crashes the app before it paints, the next launch reverts it on its own + - **GPU selection** — WebKit can be pinned to a specific GPU, which matters on hybrid NVIDIA + integrated laptops + +--- + +## Fixes & polish + + - **Chromecast** — fixed casts that connected and chimed but never played; the keep-alive heartbeat now matches Google Cast timing (#439) + - **Favorites on Qobuz tracks** — the favorite and add-to-playlist buttons are no longer wrongly disabled on streaming tracks + - **Menus & dropdowns** — a click outside a menu always closes it, toolbar dropdowns no longer swallow that click, and opening one filter closes the others (@afonsojramos PR #421) + - **Plex** — album format and bit-depth are recovered when the codec tag is missing + - **Track lists** — unavailable tracks are dimmed consistently across every list view + - **Local library** — optional album artwork in track and folder lists (#412), and smoother scrolling on large Albums grids + +--- + +## Under the hood + + - **Dependency bumps** — Tauri 2.11, tokio, vite 8, and the usual dependabot round + - **App-core groundwork** — playback, audio, and settings logic continues moving into framework-agnostic crates, with no change in behavior + +--- + +Full changelog: https://github.com/vicrodh/qbz/compare/v1.2.12...v1.2.13