Skip to content

Commit 876ea77

Browse files
chore(main): release 1.7.0
1 parent 377a4e7 commit 876ea77

5 files changed

Lines changed: 72 additions & 4 deletions

File tree

‎.release-please-manifest.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "1.6.0"
2+
".": "1.7.0"
33
}

‎CHANGELOG.md‎

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,73 @@
11
# Changelog
22

3+
## [1.7.0](https://github.com/pythoninthegrasses/mt/compare/v1.6.0...v1.7.0) (2026-10-13)
4+
5+
6+
### Features
7+
8+
* **db:** persist artist_sort_key and add indexed prefix lookup ([ba9850b](https://github.com/pythoninthegrasses/mt/commit/ba9850b4de14124a921d3b973729832a24b610c6))
9+
* **frontend:** add LibraryPageCache for per-query LRU page caching ([6348851](https://github.com/pythoninthegrasses/mt/commit/6348851b814c7ed484426a5c00c9abfb5b91e09e))
10+
* **frontend:** inject sidecar endpoint, flip library.getTracks (TASK-355.6 AC[#1](https://github.com/pythoninthegrasses/mt/issues/1)-4) ([#50](https://github.com/pythoninthegrasses/mt/issues/50)) ([9dd360b](https://github.com/pythoninthegrasses/mt/commit/9dd360b411738e59bcec40ef3aa82c24d43bfd20))
11+
* **frontend:** wire LibraryPageCache into library store and loadOp ([0138429](https://github.com/pythoninthegrasses/mt/commit/0138429ff7bf763533c0f244fb1d70db75fc2182))
12+
* **library:** add type-to-jump reliability guardrails behind jump_reliability_guard ([21c65b7](https://github.com/pythoninthegrasses/mt/commit/21c65b7d76b7854abec7146ee29fd0edd9d284cc))
13+
* **library:** exclude remote Plex tracks from stats footer ([05f62f9](https://github.com/pythoninthegrasses/mt/commit/05f62f900a18a83cfff85b0f216372460204a7c2))
14+
* **plex:** add cloud badges, download UI, and prefetch worker (TASK-342.6) ([3fe2f8b](https://github.com/pythoninthegrasses/mt/commit/3fe2f8ba18d226c3a2d43a0a76730df36181eef1))
15+
* **plex:** add download-on-play for remote tracks (TASK-342.5) ([d37e59b](https://github.com/pythoninthegrasses/mt/commit/d37e59b0f7e9ac89cba1cfaa69bf7d98f4612e45))
16+
* **plex:** add library selection commands and auto-sync refactor ([72dce6e](https://github.com/pythoninthegrasses/mt/commit/72dce6e4ed32a01d3459ac00dca933bfc50fff52))
17+
* **plex:** add Plex API client library (TASK-342.1) ([e26efcd](https://github.com/pythoninthegrasses/mt/commit/e26efcddf691a1e87ebfea30f5fa5b9bcbd79d0e))
18+
* **plex:** add Plex config storage and Settings UI (TASK-342.3) ([aab6dbe](https://github.com/pythoninthegrasses/mt/commit/aab6dbe3ced2968ad403ff7f5894c6a0658a333c))
19+
* **plex:** add Plex library fetch, cache, and merge (TASK-342.4) ([1cfacef](https://github.com/pythoninthegrasses/mt/commit/1cfacef4e104973a08de0522fc053e77f28a9f49))
20+
* **plex:** add source/remote_id columns for Plex source tracking (TASK-342.2) ([19c4ff6](https://github.com/pythoninthegrasses/mt/commit/19c4ff63eee5efe280f6bb0be28aa844e7346854))
21+
* **plex:** auto-sync on connect/startup, purge remote tracks on disconnect ([2f89eb0](https://github.com/pythoninthegrasses/mt/commit/2f89eb0374db8a5194750ec6112435f9a6fdfb15))
22+
* **shadow-diff:** shadow-diff harness proving Rust/Zig parity ([#49](https://github.com/pythoninthegrasses/mt/issues/49)) ([92feb45](https://github.com/pythoninthegrasses/mt/commit/92feb45fd21d5915e58a49e02154bb35e7f9c905))
23+
* **sidecar:** package, spawn, and sign the zig sidecar in the tauri bundle ([c25352a](https://github.com/pythoninthegrasses/mt/commit/c25352a66b88ef7b8185d405d8d6ea58a324e435))
24+
* **theming:** add midnight, night out, and spotify theme presets ([256aef9](https://github.com/pythoninthegrasses/mt/commit/256aef9f15fe99a177c377cff2abecf599d93243))
25+
* **zig-core:** vendor SQLite amalgamation with strip_sort_prefix parity ([aee6c59](https://github.com/pythoninthegrasses/mt/commit/aee6c596de777ec56375fd4494f89575349ec07a))
26+
* **zig:** local HTTP server serving one read endpoint from mt.db ([47504b2](https://github.com/pythoninthegrasses/mt/commit/47504b2b49b81c552ef4c97b14c477cb49146674))
27+
* **zig:** pin zig 0.15.2 via mise and wire taskfile + CI job ([#47](https://github.com/pythoninthegrasses/mt/issues/47)) ([07abd9d](https://github.com/pythoninthegrasses/mt/commit/07abd9df5156eb51b8f548e5fcbbf99d3a5f2c35))
28+
29+
30+
### Bug Fixes
31+
32+
* **ci:** add diagnostics to verify-signing for hardened-runtime mismatch ([e565715](https://github.com/pythoninthegrasses/mt/commit/e5657158f0bde486f4759561a27728ba32d666bb))
33+
* **ci:** move RUSTUP_TOOLCHAIN to task-level env in taskfiles/ci.yml ([7f96d4a](https://github.com/pythoninthegrasses/mt/commit/7f96d4aa5e1f7efcfac48a277306b852f4c95eea))
34+
* **ci:** resolve zig via PATH when mise is unavailable ([#48](https://github.com/pythoninthegrasses/mt/issues/48)) ([219c8ef](https://github.com/pythoninthegrasses/mt/commit/219c8ef54d4ab5236ba3be3da3d0da72d6598468))
35+
* **ci:** restore documented CI job graph in test.yml ([#51](https://github.com/pythoninthegrasses/mt/issues/51)) ([a9c794e](https://github.com/pythoninthegrasses/mt/commit/a9c794e3fa2fcbcefc360c239bb61c2a83e8d231))
36+
* **frontend:** json-stringify non-Error unhandled rejection reasons ([faa52b5](https://github.com/pythoninthegrasses/mt/commit/faa52b53857cbf11c2e72074f478c2b5bb1add71))
37+
* **frontend:** use instant scroll in _scrollToRowIndex to prevent blank viewport ([1b477bd](https://github.com/pythoninthegrasses/mt/commit/1b477bd6da70223c979b45044b676b56b4c29439))
38+
* **gitignore:** scope db ignore pattern to actual sqlite artifacts ([9e549fe](https://github.com/pythoninthegrasses/mt/commit/9e549fe9de5c8279c6a4723b35cf71ab82c2d6e5))
39+
* **library:** align find_sort_offset LIKE match with ORDER BY column for artist sort ([31a3a9d](https://github.com/pythoninthegrasses/mt/commit/31a3a9dda0e0035fd70d021559d0feabeeef4fb0))
40+
* **library:** eliminate blank-row flash in paginated type-to-jump (TASK-344) ([2841835](https://github.com/pythoninthegrasses/mt/commit/28418354e22d23183d4d6afc1b5ccfc48372f237))
41+
* **library:** eliminate stale page fetches in type-to-jump by removing _ensurePage from _jumpToPrefix ([3b694f6](https://github.com/pythoninthegrasses/mt/commit/3b694f61d089597524214f6be5429f4aeb632dcd))
42+
* **library:** eliminate type-to-jump blank viewport at root ([4bf54fa](https://github.com/pythoninthegrasses/mt/commit/4bf54faf31c0dfb0b087ae2fea908656d5ff090e))
43+
* **library:** extend type-to-jump debounce to 1500ms and cancel stale backend jumps ([8b084b7](https://github.com/pythoninthegrasses/mt/commit/8b084b71150c89c40ad4eda53f9647d93c24d537))
44+
* **library:** keep viewport rendered during transient totalTracks=0 reload (TASK-349) ([1a9aee4](https://github.com/pythoninthegrasses/mt/commit/1a9aee4987c125e706735c4c606a974743a22c93))
45+
* **library:** load missing pages before shift+click range selection ([61ce48b](https://github.com/pythoninthegrasses/mt/commit/61ce48b10b7a00236c30cfb410082a28a76448cb))
46+
* **library:** pass sort/order/ignoreWords to library_get_section on initial load ([31bdc97](https://github.com/pythoninthegrasses/mt/commit/31bdc97e9965891c4ca3e9102997a7da91bb7a0e))
47+
* **library:** preserve loaded pages on Plex/Last.fm background refresh ([5a21e42](https://github.com/pythoninthegrasses/mt/commit/5a21e42ef0654e9d12f8c7bada78dbaff074478b))
48+
* **library:** prevent blank viewport when type-to-jump races concurrent library reload ([7ea9c95](https://github.com/pythoninthegrasses/mt/commit/7ea9c95d3b90cb7b616feeee6bec91d15cc2c9fb))
49+
* **library:** revert page size to 500 and restore pipeline overlap in _jumpViaBackend ([6b54379](https://github.com/pythoninthegrasses/mt/commit/6b5437996113cabec21f14b5249930b324bc2666))
50+
* **library:** scroll to target immediately when offset resolves, not after page load ([4f06f58](https://github.com/pythoninthegrasses/mt/commit/4f06f5821bf341050e252540f950aa2ba8a4da6e))
51+
* **library:** show shimmer rows during cross-region type-to-jump ([8a98d0d](https://github.com/pythoninthegrasses/mt/commit/8a98d0df152243f2c0579200bd4b857b84006679))
52+
* **plex:** add plex to settings section allowlist ([599ef1d](https://github.com/pythoninthegrasses/mt/commit/599ef1d4989e1ceda8d728d1fc63ecd0d0da127a))
53+
* **plex:** move remote track cloud icon to index gutter alongside missing indicator ([cc0dc0b](https://github.com/pythoninthegrasses/mt/commit/cc0dc0b4910ec27d4679e6a049a4271961a3ee7d))
54+
* **plex:** move show-remote toggle from library toolbar to Settings > Plex ([b458f62](https://github.com/pythoninthegrasses/mt/commit/b458f6240c5cf34454e670b0088693905f107dd3))
55+
* **plex:** preserve scroll position when plex-sync-complete fires ([040d247](https://github.com/pythoninthegrasses/mt/commit/040d247a2f24f92a0c62419601342f20d0a9cd62))
56+
* **plex:** resolve stuck batch toast and preserve primary color on completion ([4c98c36](https://github.com/pythoninthegrasses/mt/commit/4c98c36a9b82172cbf9bf67bf63b26efc2ed145a))
57+
* **plex:** skip already-downloaded tracks in bulk context menu download ([bd74d6a](https://github.com/pythoninthegrasses/mt/commit/bd74d6a2a83fbbb07f3fd89d117cd8e2a7d1fccd))
58+
* **plex:** tombstone remote_id to prevent deleted Plex tracks from reappearing ([d181dab](https://github.com/pythoninthegrasses/mt/commit/d181dabbb756c90eaa57250080823181b0df066d))
59+
* **queue:** chunk IN-clauses to stay under SQLite variable limit ([b9b8647](https://github.com/pythoninthegrasses/mt/commit/b9b8647f9270b7a4d746c24cbe0e2381edc87ff2))
60+
* **tauri:** spawn sidecar after database init, not before ([73e0441](https://github.com/pythoninthegrasses/mt/commit/73e04410f3231d9547ffcc838a3d02d71daef6dc))
61+
* **ui:** compute context menu height dynamically to prevent bottom-clipping ([6114157](https://github.com/pythoninthegrasses/mt/commit/6114157373708b2d87a84c552d1320e74785232b))
62+
* **zig:** link libc on the sidecar executable module ([2961bea](https://github.com/pythoninthegrasses/mt/commit/2961bea53dfa5cf42c3ba3478ffd86d69195a2ec))
63+
* **zig:** migrate to zig 0.16.0 for macOS 26.5 SDK compatibility ([431df88](https://github.com/pythoninthegrasses/mt/commit/431df88d1d40d267cd1ed7c543d692f70c8cce36))
64+
65+
66+
### Performance Improvements
67+
68+
* **frontend:** increase library page size from 500 to 1500 ([dcb4443](https://github.com/pythoninthegrasses/mt/commit/dcb4443a13f53a5771c3c95a2aa2407d805081e5))
69+
* **library:** stats-only IPC on page-cache hit avoids redundant 1500-track fetch ([c15d30f](https://github.com/pythoninthegrasses/mt/commit/c15d30f9514c270dc47c0bc29f0dcf51338a5942))
70+
371
## [1.6.0](https://github.com/pythoninthegrasses/mt/compare/v1.5.1...v1.6.0) (2026-05-04)
472

573

‎app/frontend/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mt-frontend",
3-
"version": "1.6.0",
3+
"version": "1.7.0",
44
"private": true,
55
"type": "module",
66
"scripts": {

‎crates/mt-tauri/Cargo.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mt-tauri"
3-
version = "1.6.0"
3+
version = "1.7.0"
44
description = "Desktop music player for large collections"
55
authors = ["pythoninthegrass"]
66
edition = "2024"

‎crates/mt-tauri/tauri.conf.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schema.tauri.app/config/2",
33
"productName": "mt",
4-
"version": "1.6.0",
4+
"version": "1.7.0",
55
"identifier": "com.mt.desktop",
66
"build": {
77
"beforeDevCommand": "npm --prefix ../../app/frontend run dev",

0 commit comments

Comments
 (0)