diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 466df71..37fcefa 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.1.0" + ".": "1.0.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a06808f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,261 @@ +# Changelog + +## [1.0.0](https://github.com/pythoninthegrasses/mt/compare/v0.1.0...v1.0.0) (2026-02-21) + + +### ⚠ BREAKING CHANGES + +* Python backend has been removed + +### Features + +* **a11y:** integrate Alpine.js Focus plugin for improved focus management ([a98dbcd](https://github.com/pythoninthegrasses/mt/commit/a98dbcd6ba332990fe105016e9f1d3c6b7be21e8)) +* add agent skills ([6a1a320](https://github.com/pythoninthegrasses/mt/commit/6a1a3202b962f5ad75c6aa1b86a6c838b80e85e5)) +* add artwork LRU cache and consolidate time formatting utilities ([0957392](https://github.com/pythoninthegrasses/mt/commit/09573923244ff106fe142a1ced1e0eeacb8852c7)) +* add database persistence, logging, and CSV results to benchmark suite ([aa10dcd](https://github.com/pythoninthegrasses/mt/commit/aa10dcdec1ef2e995e3ec81bd1b39b6fcf04ac3c)) +* add Docker cross-build for Linux ARM64 (Raspberry Pi) ([363006a](https://github.com/pythoninthegrasses/mt/commit/363006a3c58b6c0c40ca845176c8c72063192df6)) +* Add double-click to jump to current track in library view ([1c75a4a](https://github.com/pythoninthegrasses/mt/commit/1c75a4ac716d364da828238d1e13e8f9a86d70d4)) +* add infinite scroll to library view using Alpine.js Intersect plugin ([2ba1293](https://github.com/pythoninthegrasses/mt/commit/2ba1293eb1f95e8c96e61478c6164590a3638c94)) +* add Last.fm frontend integration for settings and scrobbling ([b473c3e](https://github.com/pythoninthegrasses/mt/commit/b473c3e070f038d041d8532f75f6bab0d86c4e53)) +* add Linux amd64 build support, remove global-shortcut plugin ([c57f8c1](https://github.com/pythoninthegrasses/mt/commit/c57f8c114de53993be3feb5a893eea84e517fa96)) +* add MCP bridge for E2E test debugging ([a4c6bfa](https://github.com/pythoninthegrasses/mt/commit/a4c6bfa879a60203611a883e6b9fad82806f64d7)) +* add play history tracking for shuffle navigation (task-200) ([7dcad78](https://github.com/pythoninthegrasses/mt/commit/7dcad78e180802ee7ebe506b1971761fc7b6571f)) +* add queue state Tauri commands and events ([543ed26](https://github.com/pythoninthegrasses/mt/commit/543ed267560edb26ba4420c83edf7426badd8e0d)) +* add queue_state table and database operations ([b2fdf7e](https://github.com/pythoninthegrasses/mt/commit/b2fdf7ed6f2819932288fea09bc9c90b01a7cbf4)) +* auto-install Linux system deps before Tauri build ([cd1955a](https://github.com/pythoninthegrasses/mt/commit/cd1955ae952e3b4c200edd56082aa807bdcbe679)) +* **backend:** add bulk delete and purge-missing Tauri commands (task-272) ([663638e](https://github.com/pythoninthegrasses/mt/commit/663638e4449d069dfb4258fbdd8e7966766d2d9b)) +* **backend:** batch reconciliation, transaction wrapping, frontend memoization (task-272) ([b93685a](https://github.com/pythoninthegrasses/mt/commit/b93685a795885b9a9f193e2104caa73f18b15487)) +* **backend:** implement Rust database layer and scanner modules ([79a92fd](https://github.com/pythoninthegrasses/mt/commit/79a92fd461e290ed7053fa267af67bb323e28687)) +* **backend:** make export_diagnostics async to prevent UI blocking ([08f2236](https://github.com/pythoninthegrasses/mt/commit/08f2236d6609ee6187c49b7fb27a01b88b40430d)) +* **backend:** structured logging with tracing, frontend error capture (task-277) ([905547c](https://github.com/pythoninthegrasses/mt/commit/905547c643b4c7aecffb69ad4373771a075824e7)) +* **build:** add Linux amd64 Docker build mirroring arm64 ([b795816](https://github.com/pythoninthegrasses/mt/commit/b795816b2d5e1fdcadea16c0d5fdee4b2d1db041)) +* **build:** enable MCP bridge by default in release builds ([c012d43](https://github.com/pythoninthegrasses/mt/commit/c012d43b918f66345ca550f5c7a14b9f150f1475)) +* **build:** statically link TagLib, eliminate Homebrew runtime dependency (task-259) ([d5fcf43](https://github.com/pythoninthegrasses/mt/commit/d5fcf433c88d26d4aeafe3b47727a31e64182d59)) +* **ci:** add act configuration for local GitHub Actions testing ([d169a00](https://github.com/pythoninthegrasses/mt/commit/d169a00de15b662ec061c1aa74f57bba48838e53)) +* **ci:** add macOS code signing, notarization, and release pipeline (task-021) ([f6f128d](https://github.com/pythoninthegrasses/mt/commit/f6f128d630cf7fb4544fc240d26b2576f1cc093d)) +* **ci:** add platform selector to release workflow ([5dda144](https://github.com/pythoninthegrasses/mt/commit/5dda14435c9b21bee7ae2f793c837a5d8005af1c)) +* **ci:** add Playwright E2E tests to test-local.yml and document flakiness ([c026bab](https://github.com/pythoninthegrasses/mt/commit/c026bab3a5e6702d3920da1915ee12325c639b84)) +* **ci:** add Windows NSIS packaging to release pipeline ([024c3c0](https://github.com/pythoninthegrasses/mt/commit/024c3c01c08b115c89ee973944ef8f1d0d717879)) +* **ci:** auto-cancel superseded workflow runs ([d22a8cc](https://github.com/pythoninthegrasses/mt/commit/d22a8cc179e401980616af496823632349b39bde)) +* complete Tauri migration - remove Python sidecar ([9feabb0](https://github.com/pythoninthegrasses/mt/commit/9feabb0d40bfc2c92fe5bb2421764d381a85eeeb)) +* **context-menu:** add "Add to Liked Songs" toggle to track context menus (task-276) ([2a6a751](https://github.com/pythoninthegrasses/mt/commit/2a6a751256a525581b057d6347808c70d2435960)) +* **coverage:** add Phase 4 coverage measurement and CI integration ([463102a](https://github.com/pythoninthegrasses/mt/commit/463102ab20435fe4fc8cde1dd4bb9557814ce469)) +* create frontend settings service for backend sync ([c2843d3](https://github.com/pythoninthegrasses/mt/commit/c2843d35f974939b3b583bd3ec29ea68eccb5d9a)) +* **events:** replace WebSocket with Tauri event system ([452cc28](https://github.com/pythoninthegrasses/mt/commit/452cc283ec1d1975b20fb55c5a5d748850aa26d4)) +* Favorites API migrated from FastAPI to Rust ([cc3b996](https://github.com/pythoninthegrasses/mt/commit/cc3b996189600e72dd1e6d0301b045321ee4441f)) +* **frontend:** add .log extension and loading state to log export ([4c7c553](https://github.com/pythoninthegrasses/mt/commit/4c7c55375fb5934a8e1ea9db730966eed2eaf0f3)) +* **frontend:** migrate Last.fm API to Tauri commands (Phase 7) ([8e28e21](https://github.com/pythoninthegrasses/mt/commit/8e28e212afafb6b13f98660cb8581dbfa9347862)) +* **frontend:** perf instrumentation, early window show, scan loading state (task-277) ([2f35425](https://github.com/pythoninthegrasses/mt/commit/2f35425d50e7cd9c92d5ffe85dc8196a4dc1b4c5)) +* implement 3-phase performance optimizations for library scanning ([7435364](https://github.com/pythoninthegrasses/mt/commit/7435364c4cb9c1dcf462615a3d805bb95f611863)) +* implement Last.fm scrobbling integration ([712580a](https://github.com/pythoninthegrasses/mt/commit/712580a79462ee740a162c0b3f974075824cadc3)) +* initialize settings service before Alpine starts ([7a387d9](https://github.com/pythoninthegrasses/mt/commit/7a387d973b4f2b55d228ea5b1bffc2b4c0a11798)) +* integrate Deno for faster frontend builds (8x install, 2.2x build) ([aa4bc7b](https://github.com/pythoninthegrasses/mt/commit/aa4bc7b991d3ec040c892b2f23c1b8d6c435d602)), closes [#215](https://github.com/pythoninthegrasses/mt/issues/215) +* integrate queue state persistence in frontend ([df60cc7](https://github.com/pythoninthegrasses/mt/commit/df60cc738947f402343005733db26fad8312035d)) +* last.fm integration ([45c6fda](https://github.com/pythoninthegrasses/mt/commit/45c6fda203eac5429f72cb3031ee035c5ae7aa02)) +* **lastfm:** add loved tracks cache for automatic favoriting ([8fc045d](https://github.com/pythoninthegrasses/mt/commit/8fc045da14fb0a688f6de1cb1acd5475fcd93fc2)) +* **lastfm:** add UI and background sync for loved tracks cache ([3f0403e](https://github.com/pythoninthegrasses/mt/commit/3f0403ea1c1d4eabad0e3b247f3000c37ecd7204)) +* **lastfm:** bidirectional love sync, tighter matching, cache reset ([1e87fc0](https://github.com/pythoninthegrasses/mt/commit/1e87fc04065675e3c153ddc78e0817a2995615a3)) +* **lastfm:** implement loved tracks import (Phase 6) ([2d98554](https://github.com/pythoninthegrasses/mt/commit/2d98554912de1ba3b2081ce1d9815395c3c18fea)) +* **lastfm:** implement Phase 1 core infrastructure ([e33a6bf](https://github.com/pythoninthegrasses/mt/commit/e33a6bf6b44fbe4af41c0319735b8f77bbf37949)) +* **lastfm:** implement Phase 2 settings commands ([f787eec](https://github.com/pythoninthegrasses/mt/commit/f787eecb7c0fe79fa5fa336c7dabe8a7a25a3fb5)) +* **lastfm:** implement Phase 3 authentication commands ([c0c6e9a](https://github.com/pythoninthegrasses/mt/commit/c0c6e9a009ed971a7388ac14fdb372b307da7437)) +* **lastfm:** implement queue commands and background retry (Phase 5) ([3d2d6e8](https://github.com/pythoninthegrasses/mt/commit/3d2d6e8b577a05c2993d7a80638a053d86d403cc)) +* **lastfm:** implement scrobbling commands (Phase 4) ([8fa5681](https://github.com/pythoninthegrasses/mt/commit/8fa568179e773ae687eb915cacf1ba0fec77f2ae)) +* **library:** add dragged pill button files to watched folders with confirmation (task-259) ([650d852](https://github.com/pythoninthegrasses/mt/commit/650d85215efc82c0a15cff0cc658105e7f62d8c2)) +* **library:** add ellipsis to default ignore words list ([da17fc6](https://github.com/pythoninthegrasses/mt/commit/da17fc6d3ce6c9375f0a5c2f227d481e569640bf)) +* **library:** add persistent view caching to eliminate loading spinners ([5d72cd6](https://github.com/pythoninthegrasses/mt/commit/5d72cd6f9d5e6b4a15c2114109a1eaf8ada859a0)) +* **library:** add Rust library commands and migration analysis ([3a0bcd6](https://github.com/pythoninthegrasses/mt/commit/3a0bcd6ce6a528780361fea663b0450a5bd39d6a)) +* **library:** add same-letter cycling for type-to-jump navigation ([088fd97](https://github.com/pythoninthegrasses/mt/commit/088fd97043603925abd8d10b2eb2f5498785ea08)) +* **library:** add type-to-jump artist navigation (WIP) ([08069be](https://github.com/pythoninthegrasses/mt/commit/08069be4e2e53738db49a06f04e49eae5d7ddebf)) +* **library:** add Year, Genre, Disc, and Total columns to library table ([1425d11](https://github.com/pythoninthegrasses/mt/commit/1425d111cf3a04889ff4e2feaab797fb92a904cd)) +* **library:** wire Cmd+D queue-next shortcut to library browser (task-107) ([c20f491](https://github.com/pythoninthegrasses/mt/commit/c20f491f36ddd41a25aacc9b84b904fa779aa81e)) +* **linux:** add GTK HeaderBar with dynamic theme colors ([bae124c](https://github.com/pythoninthegrasses/mt/commit/bae124cdc774b57873ae92319b21eb495dac3770)) +* migrate library column settings to backend ([8d1ac21](https://github.com/pythoninthegrasses/mt/commit/8d1ac21bba1bcc0fd613c379fd31651a5137523c)) +* migrate sidebar component settings to backend ([45396c2](https://github.com/pythoninthegrasses/mt/commit/45396c2dd0412cf447ed26c944e914671dadd0c6)) +* migrate ui store settings to backend persistence ([2030e26](https://github.com/pythoninthegrasses/mt/commit/2030e2603a06bccfeddc20d7db35f5a9f0308605)) +* move Last.fm scrobbling to Rust audio thread ([b2cbf5a](https://github.com/pythoninthegrasses/mt/commit/b2cbf5aa66555efe3ce52ed11ec42e0ad7a85687)) +* **playlists:** fix library-to-playlist drag-drop and add reorder visual feedback ([dfa15bb](https://github.com/pythoninthegrasses/mt/commit/dfa15bbc09e0697e2d95eb334445ca5ffbc502f2)) +* **playlists:** migrate playlists API to Rust Tauri commands ([f210a20](https://github.com/pythoninthegrasses/mt/commit/f210a20f7ab6c4d7e32aefd512d7eab38ac6ef8c)) +* **queue:** add stop-after-current, play-next offset, and insert guard (task-107) ([6f049aa](https://github.com/pythoninthegrasses/mt/commit/6f049aa6a88fb06021de559043a5104bffe24681)) +* **queue:** migrate queue API to Rust Tauri commands ([0b38622](https://github.com/pythoninthegrasses/mt/commit/0b386222be1fb68ea88f21e33c10b4b52fb05cc0)) +* re-enable queue events with debouncing ([97cbc66](https://github.com/pythoninthegrasses/mt/commit/97cbc66fa224a37042d9769aaa45f67162c8c3cf)) +* Replace Python/Tkinter with Tauri/Rust implementation ([cf7cbf6](https://github.com/pythoninthegrasses/mt/commit/cf7cbf6490d39ed153a66cc5f4167fa6e065eed6)) +* Repurpose track number column for playlist ordering ([b7a73b8](https://github.com/pythoninthegrasses/mt/commit/b7a73b856ae99d2d522b866b28b858129b84eb4d)) +* **scripts:** add Windows build and signing script for local testing ([72d0457](https://github.com/pythoninthegrasses/mt/commit/72d0457dba2916ed1f2078b1bb4c669d94dd90bf)) +* **scripts:** elevate choco installs via Start-Process -Verb RunAs ([3a01dd2](https://github.com/pythoninthegrasses/mt/commit/3a01dd2033d59b57b141c6315842e07b148c5a5a)) +* **settings:** add Columns section with reset options and confirmation dialog ([1dab664](https://github.com/pythoninthegrasses/mt/commit/1dab66480df116374e82e78a0259ced99ec7c3d3)) +* **settings:** display keyboard shortcuts in settings panel (task-107) ([f609cba](https://github.com/pythoninthegrasses/mt/commit/f609cba538a37c9253df1b7e26210b1bf28a0ddf)) +* **settings:** migrate Settings API to Rust using Tauri Store ([957b029](https://github.com/pythoninthegrasses/mt/commit/957b0294468ff8807da792339627a73b52350596)) +* **shortcuts:** add global keyboard shortcuts module (task-107) ([82f06d7](https://github.com/pythoninthegrasses/mt/commit/82f06d738ac57166239eeae319346a300bb2cba8)) +* **shortcuts:** require modifier keys for mute, loop, shuffle shortcuts ([56ffeb6](https://github.com/pythoninthegrasses/mt/commit/56ffeb6e789c2b4ce9880e84e7ab8862b616871d)) +* **sidebar:** delete active playlist via Delete/Backspace key ([9cea11b](https://github.com/pythoninthegrasses/mt/commit/9cea11b5fdc4d0529d68c43471a46155a868e081)) +* **skills:** add ideation skill adapted from Auto-Claude patterns ([65b3bc5](https://github.com/pythoninthegrasses/mt/commit/65b3bc51e71e7314e05eb5cac405144da0f95280)) +* **sort:** install @alpinejs/sort plugin ([914a0a5](https://github.com/pythoninthegrasses/mt/commit/914a0a5b54b71eb1cd254f73911a5b38b756c738)) +* **sort:** migrate column header reordering to Alpine.js Sort plugin ([3439ac6](https://github.com/pythoninthegrasses/mt/commit/3439ac6f3dd541bda9a4b5c55b4de813d8d54ad1)) +* **sort:** migrate playlist track reordering to Alpine.js Sort plugin (Phase 2) ([171d63e](https://github.com/pythoninthegrasses/mt/commit/171d63e2e311415746bbeedc4533e6bf9d46a348)) +* **sort:** migrate queue reordering to Alpine.js Sort plugin ([58dd5d9](https://github.com/pythoninthegrasses/mt/commit/58dd5d95bba50d7abec3c0c47358277d86515baa)) +* **sort:** migrate sidebar playlist reordering to Alpine.js Sort plugin (Phase 3) ([b6a2041](https://github.com/pythoninthegrasses/mt/commit/b6a2041c38c2bb811602aa5e5a114c4bf1869d81)) +* **tasks:** add cargo-nextest support and build timing analysis ([8fb6ede](https://github.com/pythoninthegrasses/mt/commit/8fb6ede5998466a0ad39bc04d3f01330118fb034)) +* **tests:** add API mocking infrastructure for Playwright tests ([a52f6f8](https://github.com/pythoninthegrasses/mt/commit/a52f6f8b31286cf95f377b1398921c571ac278b3)) +* **tests:** add comprehensive frontend E2E test coverage ([db85304](https://github.com/pythoninthegrasses/mt/commit/db853040a2b2f22b64a5e00075a2aa7fd7a76495)) +* **tests:** add event emission and thread safety tests ([93c8fcd](https://github.com/pythoninthegrasses/mt/commit/93c8fcd6e24f26b5405037e88ab4c692207a6a6f)) +* **tests:** add fail-fast with maxFailures=5 for CI ([b8db04d](https://github.com/pythoninthegrasses/mt/commit/b8db04d43f3b06b273b94de9a451ab432bc45a9a)) +* **tests:** add library store Vitest unit tests ([ecf49b6](https://github.com/pythoninthegrasses/mt/commit/ecf49b68372eb38ecd460d42a7adf38ba5aa1806)) +* **tests:** add Phase 2 E2E and unit tests for error states, settings, and selection ([33123ec](https://github.com/pythoninthegrasses/mt/commit/33123ecd8dc65cdf68a12363ee1c39149ac8013e)) +* **tests:** add Phase 3 backend Rust command tests ([82e25a6](https://github.com/pythoninthegrasses/mt/commit/82e25a6de975e05a81f32b5ca13f5abe7b343a5c)) +* **ui:** add "Add to Playlist" context menu to Albums and Artists views (task-275) ([c9a9726](https://github.com/pythoninthegrasses/mt/commit/c9a972613c225656f3c4234488ce35d7319464c8)), closes [#3](https://github.com/pythoninthegrasses/mt/issues/3) +* **ui:** add Artists and Albums sidebar navigation with view routing (task-273.01) ([2c328dd](https://github.com/pythoninthegrasses/mt/commit/2c328dd88f78d68ccf1e52a7039bb17666803cf7)) +* **ui:** implement Albums browsing view with grid and detail (task-273.03) ([8008d91](https://github.com/pythoninthegrasses/mt/commit/8008d914ce1d1fe5c36d1e4017b4ad1293c8b579)) +* **ui:** implement Artists browsing view with split-pane layout (task-273.02) ([6a776c3](https://github.com/pythoninthegrasses/mt/commit/6a776c3259f1cdfdfbec084473dc17c21138c8ba)) +* **ui:** move now playing indicator to status column with dynamic icons ([611363e](https://github.com/pythoninthegrasses/mt/commit/611363efd9eeda30783fdcbfee2b23f1f8d5d362)) +* **ui:** optimistic bulk delete, debounced scan events, allTracks store (task-272) ([45eba56](https://github.com/pythoninthegrasses/mt/commit/45eba56e05538ba9de3da5f86e0ccb964d26ad12)) +* watched folders ([0a74265](https://github.com/pythoninthegrasses/mt/commit/0a74265447e73ebece7c193267d9b1b2461547dc)) + + +### Bug Fixes + +* add requests dependency to PEX build for Last.fm API integration ([c07689d](https://github.com/pythoninthegrasses/mt/commit/c07689d2ff7001fe4c2e99c59b0da3e9719a6501)) +* **audio:** use Decoder::try_from(File) for M4A/AAC playback ([4315d8f](https://github.com/pythoninthegrasses/mt/commit/4315d8f83c1b6cb7eadff50c8febdb0b2faf327d)) +* **build:** add sccache as macOS dep, filter IDE extension paths from PATH ([d81e6ec](https://github.com/pythoninthegrasses/mt/commit/d81e6ecdba6131c55f3850df8a779031b3f4c998)) +* **build:** target baseline x86-64 CPU for Zig and TagLib static libs ([b2d0723](https://github.com/pythoninthegrasses/mt/commit/b2d0723eb058e2ad4430ed700d480572c49a7621)) +* **ci:** add x86_64-pc-windows-msvc target to nightly toolchain ([9b3d78f](https://github.com/pythoninthegrasses/mt/commit/9b3d78f38f77ce61d58f878181cd45b6ee62e325)) +* **ci:** consolidate signing env vars, add library-validation entitlement, docs ([50e0b5c](https://github.com/pythoninthegrasses/mt/commit/50e0b5c76bebe50ef9a9d191787c7636157f2d51)) +* **ci:** enable Rust toolchain caching ([91b469c](https://github.com/pythoninthegrasses/mt/commit/91b469c0357649a6439d98b9b866ca717a487f59)) +* **ci:** ensure complete TagLib source extraction and add verification ([66cd50f](https://github.com/pythoninthegrasses/mt/commit/66cd50f51583b5722309d9caf78eb60c0f774329)) +* **ci:** fix Deno formatting in vite.config.js ([a9d4b8a](https://github.com/pythoninthegrasses/mt/commit/a9d4b8aa4137d64de3142de531bf6b88298d698e)) +* **ci:** fix Windows build path and add Taskfile to CI ([0dea066](https://github.com/pythoninthegrasses/mt/commit/0dea066027ab6e4c1e2187738d43dbe3acdf470c)) +* **ci:** install cmake via brew on macOS runner ([5495a90](https://github.com/pythoninthegrasses/mt/commit/5495a9020e43153d80bc016dc54340a932983b1b)) +* **ci:** install Playwright browsers from project directory ([c2d9873](https://github.com/pythoninthegrasses/mt/commit/c2d9873c14871140238813d58857a6c87dac338d)) +* **ci:** install Rust via chocolatey on Windows runner ([06305c3](https://github.com/pythoninthegrasses/mt/commit/06305c3f15a52d92133eadaa7fbc00341a2263ff)) +* **ci:** install rustup via choco, pin nightly-2026-02-09 to match .tool-versions ([1555a02](https://github.com/pythoninthegrasses/mt/commit/1555a027bb76f20736cb545c1aa9440ed9ad5594)) +* **ci:** install system dependencies and fix Playwright port conflict ([90dd494](https://github.com/pythoninthegrasses/mt/commit/90dd49438980b462eb1f1402ccf58146a8d3c22a)) +* **ci:** install webkit browser for Playwright E2E tests ([b85862b](https://github.com/pythoninthegrasses/mt/commit/b85862b6a1193718957ba65c89f8fbb8001f6c3a)) +* **ci:** kill stale dev server on port 5173 before Playwright tests ([1344f2a](https://github.com/pythoninthegrasses/mt/commit/1344f2a67172a0ecf242cc6aabef02ba444ab360)) +* **ci:** prevent duplicate workflow runs on PRs ([4612180](https://github.com/pythoninthegrasses/mt/commit/4612180663b904ab1a765da1dfe53f8ff5afdece)) +* **ci:** prevent test-local.yml from running in GitHub Actions ([a077863](https://github.com/pythoninthegrasses/mt/commit/a077863d61715a7eb6762ebf93c0c3e6e914803f)) +* **ci:** replace dtolnay/rust-toolchain with actions-rust-lang/setup-rust-toolchain ([096db60](https://github.com/pythoninthegrasses/mt/commit/096db607893319231f67751f5217edca90c6d880)) +* **ci:** resolve macOS cargo check and Windows release build failures ([e7778ca](https://github.com/pythoninthegrasses/mt/commit/e7778ca11d77a177e9d42677bf97283091fa6e3b)) +* **ci:** revert setup-node to v6, add act to .tool-versions ([3b44472](https://github.com/pythoninthegrasses/mt/commit/3b44472585135339d5ed808f54b627357430b97e)) +* **ci:** show cmake errors in build-taglib script ([8b00c12](https://github.com/pythoninthegrasses/mt/commit/8b00c1200a56e10089d6a3c31ab05238795acd59)) +* **ci:** skip cmake reinstall and pin setup-node to v4 for act compat ([bec4eeb](https://github.com/pythoninthegrasses/mt/commit/bec4eebb2d9c59cb808cbfc5afb0d4806ab4c682)) +* **ci:** skip visual regression tests in CI ([f8ccdfb](https://github.com/pythoninthegrasses/mt/commit/f8ccdfb0b879b01168be8c094addd1e0b4ddc3b2)) +* **ci:** update webkit2gtk package to 4.1 for Ubuntu 24.04 ([c2b6fcd](https://github.com/pythoninthegrasses/mt/commit/c2b6fcd5baa48e8f687a49e2d7607e77e22aeacc)) +* **ci:** use .cmd wrapper for Windows signtool signing ([62e9428](https://github.com/pythoninthegrasses/mt/commit/62e9428a897bc1d4dfc4d3e8ab0b1613b4c66d31)) +* **ci:** use pwsh for Rust setup and npm ci on Windows ([64ef8b4](https://github.com/pythoninthegrasses/mt/commit/64ef8b4f631f06d7f9bb7c6c3905ac833c557e4a)) +* clear queue on startup and enqueue only subsequent tracks in sequential mode ([0b78072](https://github.com/pythoninthegrasses/mt/commit/0b7807211343ee6a6619fde999a0acdb5ef3e949)) +* **clippy:** resolve all linter warnings in Rust code ([2bea4fe](https://github.com/pythoninthegrasses/mt/commit/2bea4fef7d9743fc123ae22baf0fcf3df07835d8)) +* **config:** update deno.jsonc to use flat options format ([ab370c4](https://github.com/pythoninthegrasses/mt/commit/ab370c45e2b3483e95c90ef3ee729cc6e15a70b5)) +* correct npm path prefix in tauri.conf.json for monorepo structure ([dcbf1de](https://github.com/pythoninthegrasses/mt/commit/dcbf1de4306cb21200f815941ef2e61969605e78)) +* **db:** make compat tests skip gracefully in CI ([8daa834](https://github.com/pythoninthegrasses/mt/commit/8daa834757eeffabcf0516e40b570f2978d42958)) +* **deno:** use --frozen lockfile for reproducible installs ([bec4ccf](https://github.com/pythoninthegrasses/mt/commit/bec4ccf3b2300ff648aaaefd8cb042e2e89eff6f)) +* **deps:** update @tauri-apps/api to 2.10.1 to match tauri crate 2.10.2 ([9965ef9](https://github.com/pythoninthegrasses/mt/commit/9965ef9945c356b085022dc015e475cb09add65b)) +* **dialog:** allow selecting both files and folders in add music picker ([#19](https://github.com/pythoninthegrasses/mt/issues/19)) ([9f7045f](https://github.com/pythoninthegrasses/mt/commit/9f7045f1b4d78ed85f35a8a5fa8166b1c07bb508)) +* **e2e:** fix 6 failing tests and metadata editor navigation ([01738fd](https://github.com/pythoninthegrasses/mt/commit/01738fdce1aaa124ad7122612ccaedc0d48ece6b)) +* **e2e:** fix all 34 Last.fm E2E tests ([5877cfa](https://github.com/pythoninthegrasses/mt/commit/5877cfac1adb509a83e06e641b83a85905044273)) +* **e2e:** update Last.fm UI text and add missing HTTP mocks ([3b3b1c2](https://github.com/pythoninthegrasses/mt/commit/3b3b1c2c25deb7c482763e28b3cd198335e76475)) +* **frontend:** use static import for api.js in UI store ([69d1cc8](https://github.com/pythoninthegrasses/mt/commit/69d1cc88211e83b54e8073ca2bbda05e15a14c1c)) +* handle NaN/Infinity and clamp seek position to duration ([36f179f](https://github.com/pythoninthegrasses/mt/commit/36f179faa81f30f8084265865d4482953660e7d5)) +* **js:** resolve deno linting warnings ([d84dc45](https://github.com/pythoninthegrasses/mt/commit/d84dc453aee0bfca51a66ccadc92d2af30338fda)) +* **lastfm:** improve error message display for connection failures ([c299f4b](https://github.com/pythoninthegrasses/mt/commit/c299f4b6f372918f038683b1673069c396e5719f)) +* **lastfm:** improve loved tracks import matching and add logging ([065dcf2](https://github.com/pythoninthegrasses/mt/commit/065dcf25ec72ba105ee69f0aaac835fd27ea4e0c)) +* **lastfm:** use fraction-based threshold comparison for robustness ([85f3a64](https://github.com/pythoninthegrasses/mt/commit/85f3a648bc1726368ad1cb3b25ecf7613560aae8)) +* library capping visible tracks at 100 ([8cb2e26](https://github.com/pythoninthegrasses/mt/commit/8cb2e2671306e89be48446372033fc073ae4d7fd)) +* **library:** filter missing tracks and set missing=0 on insert (port from task-216) ([011b5a6](https://github.com/pythoninthegrasses/mt/commit/011b5a6b5cfcb186e6adaa710f570c6acbb8f4f6)) +* **library:** fix default sort order to respect disc number ([c116b02](https://github.com/pythoninthegrasses/mt/commit/c116b02a2339e324ac78b8db43bb484f519f979c)) +* **library:** improve missing track reconciliation and locate UX ([c95edfd](https://github.com/pythoninthegrasses/mt/commit/c95edfd00923e73c9ed0f613b9d37cba9c36da41)) +* **library:** prioritize stripped-prefix matches in type-to-jump ([ff120d7](https://github.com/pythoninthegrasses/mt/commit/ff120d714f1b2ed83d2af2ea28400b0ac10c7202)) +* **library:** remove word-boundary matching from type-to-jump ([60003fc](https://github.com/pythoninthegrasses/mt/commit/60003fccc872c0e677e757337bb8c3217a0f6dea)) +* **library:** restore missing async on _fetchLibraryData ([e19da1f](https://github.com/pythoninthegrasses/mt/commit/e19da1fcbc19c5c75ee599ede61311893822c9bb)) +* **library:** suppress keyboard shortcuts when input is focused ([6f7577b](https://github.com/pythoninthegrasses/mt/commit/6f7577ba46ddc2b35fb5c9af7228b6606a7f363b)) +* **lint:** resolve async/await lint errors in library store ([d5ba0d1](https://github.com/pythoninthegrasses/mt/commit/d5ba0d1a7a3678333e89ad13a75eb51c04ccaf08)) +* **linux:** enable decorations=false for GTK HeaderBar dragging ([646d6c0](https://github.com/pythoninthegrasses/mt/commit/646d6c0b490eade1fcab120376ed71d54507a8f7)) +* make queue state session-only (reset on app start) ([207c267](https://github.com/pythoninthegrasses/mt/commit/207c267a7e2f933a0cc259da2d78966e28418c55)) +* **metadata:** enable prev/next navigation for single-track editor ([c2b917e](https://github.com/pythoninthegrasses/mt/commit/c2b917e14b60a26c3b39af38df424f3f394b8ed0)) +* move ignore-words sorting to SQL, fix album/artist grouping ([16cef12](https://github.com/pythoninthegrasses/mt/commit/16cef12e70e0d9f26b9911a0357b56a0dbaf0bc5)) +* **npm:** regenerate package-lock.json to fix native bindings ([9ef0e64](https://github.com/pythoninthegrasses/mt/commit/9ef0e64e7a82c6e0ccedfec0f8071fba818dcf95)) +* **playback:** resolve shuffle and rapid-next regressions ([ebeaeff](https://github.com/pythoninthegrasses/mt/commit/ebeaeff55cb9ecb3a7fd3f7b63819cd10f2cee41)) +* **player-controls:** commit volume immediately on drag release ([470f267](https://github.com/pythoninthegrasses/mt/commit/470f2676b847dc930277424567dfaab2e9ab3e37)) +* **player:** update volume optimistically for immediate UI feedback ([23a8104](https://github.com/pythoninthegrasses/mt/commit/23a810469861bdfdf5d6c6d5d6683e08d35bad3c)) +* **playlists:** dispatch event on rename to sync context menu ([fff3188](https://github.com/pythoninthegrasses/mt/commit/fff31883fde4d2954747d1d4c9f8e6ddf62501c7)) +* **playlists:** use global workaround for drag-drop in Tauri ([354ec90](https://github.com/pythoninthegrasses/mt/commit/354ec90efa5cbce73ec67cb9ed755044e606584a)) +* preserve play history across queue rebuilds ([33e6752](https://github.com/pythoninthegrasses/mt/commit/33e6752d9b2d96cbeecc4b4f45785757a54e8a66)) +* prevent double-queuing of clicked track in sequential mode ([37f0af4](https://github.com/pythoninthegrasses/mt/commit/37f0af4c2e44826317c9aeefdd5dc1dd523fb7a7)) +* prevent queue event listener from overriding shuffle state during init ([e41611e](https://github.com/pythoninthegrasses/mt/commit/e41611e834545c14ff379d31dd668fbe9c1f56b1)) +* prevent race condition causing tracks to play twice on double-click ([25fa679](https://github.com/pythoninthegrasses/mt/commit/25fa67930bb1c8a852c4f1392036c49edf467abf)) +* **queue:** prevent shuffle state desync during skip next/previous (task-263) ([1217130](https://github.com/pythoninthegrasses/mt/commit/1217130d474d78805e7da18b86f1f47afcd1aa72)) +* **queue:** resolve shuffle bugs causing track restart and repeats ([f76b0b5](https://github.com/pythoninthegrasses/mt/commit/f76b0b58246120a6b447dc2881c26b724d69d28e)) +* reduce track transition gaps, fix shuffle race conditions, add queue virtual scroll ([0867a84](https://github.com/pythoninthegrasses/mt/commit/0867a84b32d841a574e71795f8a5e8b65b51813c)) +* replace $watch with Alpine.effect in ui store ([57e23d2](https://github.com/pythoninthegrasses/mt/commit/57e23d2888ea8469159d13815df93aaa3359b183)) +* resolve 4 Playwright test failures from data-track-id collision ([24e8a0a](https://github.com/pythoninthegrasses/mt/commit/24e8a0ad2097329e1e88d2cdce2988cf73abf25b)) +* resolve deno fmt and lint errors ([9fbec03](https://github.com/pythoninthegrasses/mt/commit/9fbec03dd8394a87f7336e408dd82652a60d93bf)) +* resolve Rust 2024 never type fallback warning ([9655011](https://github.com/pythoninthegrasses/mt/commit/96550118cde78f49421845cf8909c1e6ac8234cc)) +* restore play/pause on macOS (task-279) ([651cf1e](https://github.com/pythoninthegrasses/mt/commit/651cf1e87ed8c3f155b8e9d790e03d79bc812d13)) +* **rust:** resolve clippy linting warnings ([cb24938](https://github.com/pythoninthegrasses/mt/commit/cb24938d5136ea7a622a394afff99c3bdf50e92a)) +* **scanner:** replace Zig FFI inventory with pure Rust to fix SIGBUS crash ([2f68c74](https://github.com/pythoninthegrasses/mt/commit/2f68c74701b9faae18b597c82e93b3d675816217)) +* **scripts:** guard against UNC paths, switch to npx @tauri-apps/cli ([35eed8b](https://github.com/pythoninthegrasses/mt/commit/35eed8b95d9984439b0267d449b5119e3c6e455c)) +* **scripts:** set RUSTUP_TOOLCHAIN early as process env var ([9b5d9ba](https://github.com/pythoninthegrasses/mt/commit/9b5d9bad842c5e081bd3f3ff62a8a29fc5d2a290)) +* **scripts:** skip beforeBuildCommand, merge config into single override ([0b6a38a](https://github.com/pythoninthegrasses/mt/commit/0b6a38aec7314fa13b0867f4bb279976624796a2)) +* **scrobble:** use Math.ceil for played_time/duration to prevent off-by-one threshold failures ([fcfb3fb](https://github.com/pythoninthegrasses/mt/commit/fcfb3fb87f18147beb076538b40598175741066f)) +* **sidebar:** add delay before playlist reorder activation ([16573ef](https://github.com/pythoninthegrasses/mt/commit/16573ef64e619538dc396560ebb26a9f30818d06)) +* **sort:** handle empty album_artist in artist sort order ([e5c3cc0](https://github.com/pythoninthegrasses/mt/commit/e5c3cc0b97a144af3bb21d55b594ffe4cce7d815)) +* **sort:** resolve race conditions and clone errors in queue reordering ([c276daf](https://github.com/pythoninthegrasses/mt/commit/c276daf1868578d5463010d673b5d81e50bec843)) +* **startup:** prevent flash of unstyled content on app launch ([1b78d94](https://github.com/pythoninthegrasses/mt/commit/1b78d94c09b94a4ee1d5603043cacf06292a2e95)) +* **taskfile:** replace npm lint/format with deno commands ([fa24f06](https://github.com/pythoninthegrasses/mt/commit/fa24f068caed8674978d844d53495cdcbceda564)) +* **tasks:** stop deleting tracked deno.lock in clean tasks ([eedc795](https://github.com/pythoninthegrasses/mt/commit/eedc79552151de043376332c3dbb87fbeab4edda)) +* **tauri:** remove mcp-bridge permission from default capabilities ([0acca6f](https://github.com/pythoninthegrasses/mt/commit/0acca6f46087031965eada2cddb2ecd2da4fef5e)) +* **test:** accept confirm dialog in column reset test ([1011b41](https://github.com/pythoninthegrasses/mt/commit/1011b4149355f9a2578e57bd729dbfaa272d9b55)) +* **test:** align Playwright tests with SQL-side sorting from 16cef12 ([f540fd1](https://github.com/pythoninthegrasses/mt/commit/f540fd1649ff0735d0048defc4e5472a8b4c6568)) +* **test:** prefix unused variable in lastfm_loved upsert test ([0dbdd2c](https://github.com/pythoninthegrasses/mt/commit/0dbdd2cbff1173e2076caf91e4422bfe4ab06261)) +* **tests:** adjust Playwright timeouts to avoid flaky failures ([27f55ef](https://github.com/pythoninthegrasses/mt/commit/27f55ef661ca0b0ec92662ed9ecbbe64e29a3415)) +* **tests:** align test mock _stripIgnoredPrefix with library.js ([f339396](https://github.com/pythoninthegrasses/mt/commit/f339396018562414ed45a0b5bdf6fc8b71433a70)) +* **tests:** correct import paths in error-states Playwright tests ([fd2e474](https://github.com/pythoninthegrasses/mt/commit/fd2e474600a8dd59d7b843e197954ad73be0f714)) +* **tests:** correct seek invariant tests and add dot reporter ([12c00f5](https://github.com/pythoninthegrasses/mt/commit/12c00f59b480e9773ae3b37a5c53f1ad7ee52e06)) +* **tests:** make column and sorting tests flexible for browser mode ([6a327ce](https://github.com/pythoninthegrasses/mt/commit/6a327ce056e7a3c0983c40e21e902be5b4e22192)) +* **tests:** update scrobble and sidebar tests for current architecture ([ee39250](https://github.com/pythoninthegrasses/mt/commit/ee392506984d261a8ae8792b1a0880151e539486)) +* trim value in _stripIgnoredPrefix early return ([0ec9da3](https://github.com/pythoninthegrasses/mt/commit/0ec9da39cc4555f07b9f9c669aff1ec333dbf25f)) +* **ui:** add scrolling to playlist submenu when it exceeds viewport (task-151) ([1a54200](https://github.com/pythoninthegrasses/mt/commit/1a542002ad4f959f862d69ca9a905ffe274e725a)) +* **ui:** center empty library state without breaking virtual scroll ([e9ae286](https://github.com/pythoninthegrasses/mt/commit/e9ae2865675ac053669fd97753b9f3bfe9cacec4)) +* **ui:** default artist sort, normalize sort keys, fix O(n^2) artist SQL (task-272) ([8b326c3](https://github.com/pythoninthegrasses/mt/commit/8b326c387cc890735bf128dcbeb0dedfa4038389)) +* **ui:** disable column width animation for instant sizing ([728d504](https://github.com/pythoninthegrasses/mt/commit/728d5046f74fc3539586c85790952e476a808354)) +* **ui:** disable default browser context menu in webview ([346e60e](https://github.com/pythoninthegrasses/mt/commit/346e60ebe2a99e4917e250d42a18b0841924070a)) +* **ui:** prevent context menu and text selection on sidebar items ([f66a802](https://github.com/pythoninthegrasses/mt/commit/f66a802027c17daf50e4515506e29d644a4be5f6)) +* **ui:** prevent intermittent sidebar theme flash on reload (task-256) ([e564b54](https://github.com/pythoninthegrasses/mt/commit/e564b54005734345fc9b001605dbd1fd22b6cf2b)) +* **ui:** remove background hover effect from transport buttons ([e0b838c](https://github.com/pythoninthegrasses/mt/commit/e0b838c03f7d10ce58ada48518b2bec62fa11f54)) +* **ui:** remove jittery animations from volume slider ([3ce4b8b](https://github.com/pythoninthegrasses/mt/commit/3ce4b8b26086128048ca1fa4b62eb2c93351ef88)) +* **ui:** style success toasts to match theme accent colors (task-258) ([718b843](https://github.com/pythoninthegrasses/mt/commit/718b8434aaa3ac8703f1682e8b60dc7836002001)) +* **ui:** use # column header consistently in library and playlist views ([2064276](https://github.com/pythoninthegrasses/mt/commit/2064276db5305cc638947817eedb36cb061e8234)) +* use relaxed parsing for tracks with malformed ID3 tags (task-281) ([b8d7bc8](https://github.com/pythoninthegrasses/mt/commit/b8d7bc86625b5205b1f67085efaae0e9fe298ab8)) +* **watcher:** prevent UI freeze during manual scan ([360218e](https://github.com/pythoninthegrasses/mt/commit/360218e6d63c9531bb995d1a2d7a5d2ac8f96522)) +* **windows:** resolve crash-on-launch and signing pipeline issues ([842b53d](https://github.com/pythoninthegrasses/mt/commit/842b53dcdc077d6d21fe8c6bf12b2874e2e1253c)) + + +### Performance Improvements + +* **backend:** defer content hashing in scan, transaction-wrap queue adds (task-272) ([6329ca1](https://github.com/pythoninthegrasses/mt/commit/6329ca1c6e5e7d9598e6d74ccbe7989a89faa969)) +* batch metadata loading and parallel saves (task-279) ([3d6eeb1](https://github.com/pythoninthegrasses/mt/commit/3d6eeb13deba08772d165de54df445da82d6fd36)) +* **build:** switch zig-core to ReleaseSmall optimization ([64b55ae](https://github.com/pythoninthegrasses/mt/commit/64b55ae23e841699b6e3b02282a3f7b1ea1e5ddd)) +* **build:** use dynamic BUILD_JOBS calculation for lower-spec machines ([b01a81f](https://github.com/pythoninthegrasses/mt/commit/b01a81f4eabd76898d0003c2a5cabc1cf96fcddb)) +* **ci:** add build parallelism env vars to Windows CI setup ([ed41c21](https://github.com/pythoninthegrasses/mt/commit/ed41c210c309edd740715cc58576cca56f667cfa)) +* **ci:** add path filters to skip CI for non-business logic changes ([ad8578a](https://github.com/pythoninthegrasses/mt/commit/ad8578ab1ca06a0d07d467e9944bde2ff231fae0)) +* **ci:** cache cargo-tarpaulin binary to speed up Rust tests ([6c5cad9](https://github.com/pythoninthegrasses/mt/commit/6c5cad9247642585165a84ad40097165abcdb8cd)) +* **ci:** disable incremental compilation for faster clean builds ([6ccd698](https://github.com/pythoninthegrasses/mt/commit/6ccd698617d3db7452107c22c884de5f71bc5d94)) +* **ci:** enable incremental compilation for self-hosted Rust jobs ([365ac3b](https://github.com/pythoninthegrasses/mt/commit/365ac3b95ca082ceb1ac09c9d256b45cfa34d07c)) +* **ci:** remove npm cache from self-hosted jobs ([6d5b08b](https://github.com/pythoninthegrasses/mt/commit/6d5b08b2ed7232049fda6cf8ad659e31cbc96278)) +* **ci:** remove Rust dependency cache from self-hosted jobs ([5e0fb95](https://github.com/pythoninthegrasses/mt/commit/5e0fb95e5b1379c4b8675d63704106d39e62cafb)) +* **css:** strip transitions, fix hidden spinners, add containment (task-262) ([1e16ec2](https://github.com/pythoninthegrasses/mt/commit/1e16ec2966716aa4e40b55992721412aa145f04f)) +* feature-gate devtools to reduce release binary size ([2e2b23c](https://github.com/pythoninthegrasses/mt/commit/2e2b23c7484860150a3e6d02a73e84c34731c14c)) +* **frontend:** implement virtual scrolling for library track list (task-261) ([a1a0480](https://github.com/pythoninthegrasses/mt/commit/a1a04808d811319d6ddf11cd082c2e879c82a4e8)) +* **frontend:** stop caching full track arrays in sectionCache ([c79a3f9](https://github.com/pythoninthegrasses/mt/commit/c79a3f968e293b33f18d238eff85d22b28bc5ac1)) +* **library:** make reconcile scan async with rayon parallelism and progress UI (task-280) ([40b1f99](https://github.com/pythoninthegrasses/mt/commit/40b1f99c96b3f852c057bb4e8dd18a14424ded89)) +* **linux:** tune glibc malloc arenas for WebKitGTK memory reduction ([aad2d84](https://github.com/pythoninthegrasses/mt/commit/aad2d840053559ac52690a38954026f137b67abf)) +* **runtime:** limit rayon thread pool to 4 threads with 2 MB stacks ([b720148](https://github.com/pythoninthegrasses/mt/commit/b7201487caad40391dc2b6e52f5b292e61f09117)) +* **runtime:** reduce SQLite pool to 4 connections, artwork cache to 50 ([907a378](https://github.com/pythoninthegrasses/mt/commit/907a378a2e655ebf6cb75fc3b0be5c9372ee6716)) +* **rust:** optimize dev build performance and trim tokio features ([71f0cb7](https://github.com/pythoninthegrasses/mt/commit/71f0cb7f14658624d2d5c8d4cad560d12451da91)) +* **tests:** optimize Playwright E2E performance for CI ([3c98d33](https://github.com/pythoninthegrasses/mt/commit/3c98d33e7d2493141f960de090536d64c19aa450)) +* **ui:** immediate playback on double-click with background queue build (task-272) ([7cc8e60](https://github.com/pythoninthegrasses/mt/commit/7cc8e6031193263f73e5cc2c00dee8a7ec332c8f)) + + +### Reverts + +* **linux:** remove GTK HeaderBar, keep platform-specific titlebar CSS ([d6964ee](https://github.com/pythoninthegrasses/mt/commit/d6964ee69c8de408bc5d7503b686389f9d065074)) +* remove Alpine.js Sort plugin migration ([a73c7de](https://github.com/pythoninthegrasses/mt/commit/a73c7dedecca6a191a65cf6a374a7c539eb52c6f)) diff --git a/app/frontend/package.json b/app/frontend/package.json index 572ae9a..6f78c9b 100644 --- a/app/frontend/package.json +++ b/app/frontend/package.json @@ -1,6 +1,6 @@ { "name": "mt-frontend", - "version": "0.1.0", + "version": "1.0.0", "private": true, "type": "module", "scripts": { diff --git a/crates/mt-tauri/Cargo.toml b/crates/mt-tauri/Cargo.toml index f42d24d..dbc4a5c 100644 --- a/crates/mt-tauri/Cargo.toml +++ b/crates/mt-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mt-tauri" -version = "0.1.0" +version = "1.0.0" description = "Desktop music player for large collections" authors = ["pythoninthegrass"] edition = "2024" diff --git a/crates/mt-tauri/tauri.conf.json b/crates/mt-tauri/tauri.conf.json index c0e039c..efbee21 100644 --- a/crates/mt-tauri/tauri.conf.json +++ b/crates/mt-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "mt", - "version": "0.1.0", + "version": "1.0.0", "identifier": "com.mt.desktop", "build": { "beforeDevCommand": "npm --prefix ../../app/frontend run dev", @@ -31,7 +31,12 @@ }, "bundle": { "active": true, - "targets": ["app", "dmg", "deb", "nsis"], + "targets": [ + "app", + "dmg", + "deb", + "nsis" + ], "icon": [ "icons/32x32.png", "icons/128x128.png", @@ -43,9 +48,18 @@ "minimumSystemVersion": "10.15", "entitlements": "./Entitlements.plist", "dmg": { - "windowSize": { "width": 660, "height": 400 }, - "appPosition": { "x": 180, "y": 170 }, - "applicationFolderPosition": { "x": 480, "y": 170 } + "windowSize": { + "width": 660, + "height": 400 + }, + "appPosition": { + "x": 180, + "y": 170 + }, + "applicationFolderPosition": { + "x": 480, + "y": 170 + } } }, "windows": { @@ -55,7 +69,12 @@ }, "linux": { "deb": { - "depends": ["libwebkit2gtk-4.1-0", "libayatana-appindicator3-1", "libgtk-3-0", "pipewire-alsa"], + "depends": [ + "libwebkit2gtk-4.1-0", + "libayatana-appindicator3-1", + "libgtk-3-0", + "pipewire-alsa" + ], "section": "sound" } }