|
1 | 1 | # Changelog |
2 | 2 |
|
| 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 | + |
3 | 71 | ## [1.6.0](https://github.com/pythoninthegrasses/mt/compare/v1.5.1...v1.6.0) (2026-05-04) |
4 | 72 |
|
5 | 73 |
|
|
0 commit comments