diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 2fcb0e2..88f574a 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -1,5 +1,11 @@
+### 📦 0.7.1
+
+- **Reduced app size**. The app size is now is a reasonable 35MB, down significantly from a whopping 200MB 😬 which was due to asset bloat (unused icons, uncompressed images).
+
### 📦 0.7.0
- _BREAKING RELEASE_. The way albums are stored internally has changed, please delete and re-import your library.
+
+_BREAKING RELEASE_. The way albums are stored internally has changed, please delete and re-import your library.
+
- **Gapless playback**. The audio playback component has been re-built to support gapless playback (between files of the same sample rate), resampling (automatically switches on when the audio device doesn't support the file sample rate), and better performance than the previous web-based version.
- **New: Queue**. Press "Q" to open up the new queue panel. You can drag and drop tracks from the library, re-arrange tracks in the queue, and create a new playlist from the current queue. Multi-select works via Shift/Cmd + click. The queue has two modes: Custom and Same as Library. When in "Same as library" mode, playing a track from the library will reset the queue to library order.
- **Waveform View**. Click on the wave icon next to the volume to open up the Waveform view. Here you can drag to create loop regions, or Cmd/Ctrl + Click to set markers of your favourite song moments. You can scroll to zoom in and pan around the waveform.
diff --git a/package-lock.json b/package-lock.json
index 0f37cfd..1da2030 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "musicat",
- "version": "0.6.0",
+ "version": "0.7.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "musicat",
- "version": "0.6.0",
+ "version": "0.7.0",
"dependencies": {
"@tauri-apps/api": "^1.5.1",
"is-dark-color": "^1.2.0",
@@ -19,8 +19,6 @@
"@alexanderolsen/libsamplerate-js": "^2.1.1",
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
- "@iconify/json": "^2.1.110",
- "@iconify/utils": "^2.0.0",
"@sveltejs/vite-plugin-svelte": "^2.4.1",
"@tauri-apps/cli": "^1.5.5",
"@tsconfig/svelte": "^3.0.0",
@@ -29,7 +27,6 @@
"better-cue-parser": "^0.3.1",
"dexie": "^4.0.4",
"hotkeys-js": "^3.9.5",
- "iconify-icon": "^1.0.0-beta.3",
"konva": "^9.3.1",
"lodash-es": "^4.17.21",
"md5": "^2.3.0",
@@ -55,6 +52,7 @@
"tsparticles-slim": "^2.12.0",
"typescript": "^4.6.4",
"vite": "^4.5.1",
+ "vite-bundle-analyzer": "^0.10.3",
"wavefile": "^11.0.0",
"wavesurfer.js": "^7.7.11",
"wikibase-sdk": "^9.2.4"
@@ -79,27 +77,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/@antfu/install-pkg": {
- "version": "0.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "execa": "^5.1.1",
- "find-up": "^5.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@antfu/utils": {
- "version": "0.7.7",
- "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz",
- "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
"node_modules/@esbuild-plugins/node-globals-polyfill": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz",
@@ -519,46 +496,6 @@
"integrity": "sha512-WxXiHFmD9u/owrzempiDlBB1ZYqiLnm9s6aPc8AlFQalq2tKmqdmMr9GXOupDgzXtqnBipj8Un0gkIm7Sjf8mw==",
"dev": true
},
- "node_modules/@iconify/json": {
- "version": "2.1.110",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@iconify/types": "*",
- "pathe": "^0.3.0"
- }
- },
- "node_modules/@iconify/types": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@iconify/utils": {
- "version": "2.1.14",
- "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.14.tgz",
- "integrity": "sha512-9pKIntkbLbjVVFxH32td21Am3AGGJfyI2KY2d8yDQxkZe4BBZtufJI8NgcamFn8B5QKLU9ai2VMo8OEov8jAtw==",
- "dev": true,
- "dependencies": {
- "@antfu/install-pkg": "^0.1.1",
- "@antfu/utils": "^0.7.5",
- "@iconify/types": "^2.0.0",
- "debug": "^4.3.4",
- "kolorist": "^1.8.0",
- "local-pkg": "^0.4.3"
- }
- },
- "node_modules/@iconify/utils/node_modules/local-pkg": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
- "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
@@ -1276,19 +1213,6 @@
"node": ">= 0.6"
}
},
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/crypt": {
"version": "0.0.2",
"dev": true,
@@ -1451,28 +1375,6 @@
"node": ">=6"
}
},
- "node_modules/execa": {
- "version": "5.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
"node_modules/fast-glob": {
"version": "3.3.2",
"dev": true,
@@ -1522,21 +1424,6 @@
"node": ">=8"
}
},
- "node_modules/find-up": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/form-data": {
"version": "4.0.0",
"dev": true,
@@ -1607,17 +1494,6 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/get-stream": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -1660,14 +1536,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/human-signals": {
- "version": "2.1.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10.17.0"
- }
- },
"node_modules/humanize-ms": {
"version": "1.2.1",
"dev": true,
@@ -1676,17 +1544,6 @@
"ms": "^2.0.0"
}
},
- "node_modules/iconify-icon": {
- "version": "1.0.0-beta.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@iconify/types": "^2.0.0-beta.1"
- },
- "funding": {
- "url": "http://github.com/sponsors/cyberalien"
- }
- },
"node_modules/ieee754": {
"version": "1.2.1",
"funding": [
@@ -1795,22 +1652,6 @@
"@types/estree": "*"
}
},
- "node_modules/is-stream": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/kleur": {
"version": "4.1.5",
"dev": true,
@@ -1819,12 +1660,6 @@
"node": ">=6"
}
},
- "node_modules/kolorist": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
- "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
- "dev": true
- },
"node_modules/konva": {
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/konva/-/konva-9.3.1.tgz",
@@ -1851,20 +1686,6 @@
"integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
"dev": true
},
- "node_modules/locate-path": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/lodash-es": {
"version": "4.17.21",
"dev": true,
@@ -1920,11 +1741,6 @@
"node": ">= 0.8"
}
},
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT"
- },
"node_modules/merge2": {
"version": "1.4.1",
"dev": true,
@@ -1964,14 +1780,6 @@
"node": ">= 0.6"
}
},
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/min-indent": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
@@ -2154,17 +1962,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/npm-run-path": {
- "version": "4.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -2174,20 +1971,6 @@
"wrappy": "1"
}
},
- "node_modules/onetime": {
- "version": "5.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/openai": {
"version": "4.22.0",
"dev": true,
@@ -2207,34 +1990,6 @@
"openai": "bin/cli"
}
},
- "node_modules/p-limit": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/parent-module": {
"version": "1.0.1",
"dev": true,
@@ -2246,14 +2001,6 @@
"node": ">=6"
}
},
- "node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -2263,19 +2010,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/path-key": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pathe": {
- "version": "0.3.8",
- "dev": true,
- "license": "MIT"
- },
"node_modules/peek-readable": {
"version": "4.1.0",
"license": "MIT",
@@ -2599,30 +2333,6 @@
"node": ">=12.0.0"
}
},
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "dev": true,
- "license": "ISC"
- },
"node_modules/simple-yenc": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/simple-yenc/-/simple-yenc-1.0.4.tgz",
@@ -2667,14 +2377,6 @@
"safe-buffer": "~5.2.0"
}
},
- "node_modules/strip-final-newline": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/strip-indent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@@ -3521,6 +3223,15 @@
}
}
},
+ "node_modules/vite-bundle-analyzer": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/vite-bundle-analyzer/-/vite-bundle-analyzer-0.10.3.tgz",
+ "integrity": "sha512-Q5ko1EOu808q0mVv//H8OYd7yrijfEPUBlsg2NVx0rvbZ0ncUbnDh7UYqRmZWxaRDj0is4anE9DXatTiwZ1ZLg==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^1.0.0"
+ }
+ },
"node_modules/vite/node_modules/@esbuild/android-arm": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
@@ -3964,20 +3675,6 @@
"webidl-conversions": "^3.0.0"
}
},
- "node_modules/which": {
- "version": "2.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/wikibase-sdk": {
"version": "9.2.4",
"dev": true,
@@ -3991,17 +3688,6 @@
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
}
},
"dependencies": {
@@ -4021,20 +3707,6 @@
"@jridgewell/trace-mapping": "^0.3.9"
}
},
- "@antfu/install-pkg": {
- "version": "0.1.1",
- "dev": true,
- "requires": {
- "execa": "^5.1.1",
- "find-up": "^5.0.0"
- }
- },
- "@antfu/utils": {
- "version": "0.7.7",
- "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz",
- "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==",
- "dev": true
- },
"@esbuild-plugins/node-globals-polyfill": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz",
@@ -4242,40 +3914,6 @@
"integrity": "sha512-WxXiHFmD9u/owrzempiDlBB1ZYqiLnm9s6aPc8AlFQalq2tKmqdmMr9GXOupDgzXtqnBipj8Un0gkIm7Sjf8mw==",
"dev": true
},
- "@iconify/json": {
- "version": "2.1.110",
- "dev": true,
- "requires": {
- "@iconify/types": "*",
- "pathe": "^0.3.0"
- }
- },
- "@iconify/types": {
- "version": "2.0.0",
- "dev": true
- },
- "@iconify/utils": {
- "version": "2.1.14",
- "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.14.tgz",
- "integrity": "sha512-9pKIntkbLbjVVFxH32td21Am3AGGJfyI2KY2d8yDQxkZe4BBZtufJI8NgcamFn8B5QKLU9ai2VMo8OEov8jAtw==",
- "dev": true,
- "requires": {
- "@antfu/install-pkg": "^0.1.1",
- "@antfu/utils": "^0.7.5",
- "@iconify/types": "^2.0.0",
- "debug": "^4.3.4",
- "kolorist": "^1.8.0",
- "local-pkg": "^0.4.3"
- },
- "dependencies": {
- "local-pkg": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
- "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
- "dev": true
- }
- }
- },
"@jridgewell/gen-mapping": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
@@ -4694,15 +4332,6 @@
"content-type": {
"version": "1.0.4"
},
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
"crypt": {
"version": "0.0.2",
"dev": true
@@ -4812,21 +4441,6 @@
"event-target-shim": {
"version": "5.0.1"
},
- "execa": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- }
- },
"fast-glob": {
"version": "3.3.2",
"dev": true,
@@ -4860,14 +4474,6 @@
"to-regex-range": "^5.0.1"
}
},
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
"form-data": {
"version": "4.0.0",
"dev": true,
@@ -4912,10 +4518,6 @@
"dev": true,
"optional": true
},
- "get-stream": {
- "version": "6.0.1",
- "dev": true
- },
"glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -4947,10 +4549,6 @@
"version": "3.9.5",
"dev": true
},
- "human-signals": {
- "version": "2.1.0",
- "dev": true
- },
"humanize-ms": {
"version": "1.2.1",
"dev": true,
@@ -4958,13 +4556,6 @@
"ms": "^2.0.0"
}
},
- "iconify-icon": {
- "version": "1.0.0-beta.3",
- "dev": true,
- "requires": {
- "@iconify/types": "^2.0.0-beta.1"
- }
- },
"ieee754": {
"version": "1.2.1"
},
@@ -5031,24 +4622,10 @@
"@types/estree": "*"
}
},
- "is-stream": {
- "version": "2.0.1",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
"kleur": {
"version": "4.1.5",
"dev": true
},
- "kolorist": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
- "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
- "dev": true
- },
"konva": {
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/konva/-/konva-9.3.1.tgz",
@@ -5061,13 +4638,6 @@
"integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
"dev": true
},
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
"lodash-es": {
"version": "4.17.21",
"dev": true
@@ -5111,10 +4681,6 @@
"media-typer": {
"version": "1.1.0"
},
- "merge-stream": {
- "version": "2.0.0",
- "dev": true
- },
"merge2": {
"version": "1.4.1",
"dev": true
@@ -5138,10 +4704,6 @@
"mime-db": "1.52.0"
}
},
- "mimic-fn": {
- "version": "2.1.0",
- "dev": true
- },
"min-indent": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
@@ -5242,13 +4804,6 @@
"version": "0.1.2",
"dev": true
},
- "npm-run-path": {
- "version": "4.0.1",
- "dev": true,
- "requires": {
- "path-key": "^3.0.0"
- }
- },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -5258,13 +4813,6 @@
"wrappy": "1"
}
},
- "onetime": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
"openai": {
"version": "4.22.0",
"dev": true,
@@ -5280,20 +4828,6 @@
"web-streams-polyfill": "^3.2.1"
}
},
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
"parent-module": {
"version": "1.0.1",
"dev": true,
@@ -5301,24 +4835,12 @@
"callsites": "^3.0.0"
}
},
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true
},
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "pathe": {
- "version": "0.3.8",
- "dev": true
- },
"peek-readable": {
"version": "4.1.0"
},
@@ -5512,21 +5034,6 @@
"source-map-js": ">=0.6.2 <2.0.0"
}
},
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.7",
- "dev": true
- },
"simple-yenc": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/simple-yenc/-/simple-yenc-1.0.4.tgz",
@@ -5558,10 +5065,6 @@
"safe-buffer": "~5.2.0"
}
},
- "strip-final-newline": {
- "version": "2.0.0",
- "dev": true
- },
"strip-indent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@@ -6270,6 +5773,15 @@
}
}
},
+ "vite-bundle-analyzer": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/vite-bundle-analyzer/-/vite-bundle-analyzer-0.10.3.tgz",
+ "integrity": "sha512-Q5ko1EOu808q0mVv//H8OYd7yrijfEPUBlsg2NVx0rvbZ0ncUbnDh7UYqRmZWxaRDj0is4anE9DXatTiwZ1ZLg==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^1.0.0"
+ }
+ },
"vitefu": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz",
@@ -6305,13 +5817,6 @@
"webidl-conversions": "^3.0.0"
}
},
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
"wikibase-sdk": {
"version": "9.2.4",
"dev": true
@@ -6321,10 +5826,6 @@
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
}
}
}
diff --git a/package.json b/package.json
index 1ff8ef8..3c6cb71 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "musicat",
"private": true,
- "version": "0.7.0",
+ "version": "0.7.1",
"type": "module",
"scripts": {
"dev": "vite",
@@ -14,8 +14,6 @@
"@alexanderolsen/libsamplerate-js": "^2.1.1",
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
- "@iconify/json": "^2.1.110",
- "@iconify/utils": "^2.0.0",
"@sveltejs/vite-plugin-svelte": "^2.4.1",
"@tauri-apps/cli": "^1.5.5",
"@tsconfig/svelte": "^3.0.0",
@@ -24,7 +22,6 @@
"better-cue-parser": "^0.3.1",
"dexie": "^4.0.4",
"hotkeys-js": "^3.9.5",
- "iconify-icon": "^1.0.0-beta.3",
"konva": "^9.3.1",
"lodash-es": "^4.17.21",
"md5": "^2.3.0",
@@ -50,6 +47,7 @@
"tsparticles-slim": "^2.12.0",
"typescript": "^4.6.4",
"vite": "^4.5.1",
+ "vite-bundle-analyzer": "^0.10.3",
"wavefile": "^11.0.0",
"wavesurfer.js": "^7.7.11",
"wikibase-sdk": "^9.2.4"
diff --git a/public/images/welcome-cartwheel-galaxy.jpg b/public/images/welcome-cartwheel-galaxy.jpg
new file mode 100644
index 0000000..50392d5
Binary files /dev/null and b/public/images/welcome-cartwheel-galaxy.jpg differ
diff --git a/public/images/welcome-cartwheel-galaxy.png b/public/images/welcome-cartwheel-galaxy.png
deleted file mode 100644
index 523f3ea..0000000
Binary files a/public/images/welcome-cartwheel-galaxy.png and /dev/null differ
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index aa205eb..415551e 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -55,3 +55,10 @@ default = [ "custom-protocol" ]
# this feature is used used for production builds where `devPath` points to the filesystem
# DO NOT remove this
custom-protocol = [ "tauri/custom-protocol" ]
+
+[profile.release]
+panic = "abort" # Strip expensive panic clean-up logic
+codegen-units = 1 # Compile crates one after another so the compiler can optimize better
+lto = true # Enables link to optimizations
+opt-level = "s" # Optimize for binary size
+strip = true # Remove debug symbols
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index 182a5b1..bd3e8bd 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -9,7 +9,7 @@
},
"package": {
"productName": "Musicat",
- "version": "0.7.0"
+ "version": "0.7.1"
},
"tauri": {
"macOSPrivateApi": true,
diff --git a/src/data/LibraryImporter.ts b/src/data/LibraryImporter.ts
index 3b2ba1e..0bce200 100644
--- a/src/data/LibraryImporter.ts
+++ b/src/data/LibraryImporter.ts
@@ -5,7 +5,6 @@ import { BaseDirectory, exists, readDir } from "@tauri-apps/api/fs";
import { audioDir } from "@tauri-apps/api/path";
import { convertFileSrc } from "@tauri-apps/api/tauri";
import { appWindow } from "@tauri-apps/api/window";
-import "iconify-icon";
import md5 from "md5";
import * as musicMetadata from "music-metadata-browser";
import type {
diff --git a/src/lib/albums/AlbumItem.svelte b/src/lib/albums/AlbumItem.svelte
index 3feef79..4bd93e9 100644
--- a/src/lib/albums/AlbumItem.svelte
+++ b/src/lib/albums/AlbumItem.svelte
@@ -379,11 +379,6 @@
.artwork {
width: 100%;
}
- iconify-icon {
- /* margin-top: 0.7em; */
- font-size: 2em;
- display: none;
- }
}
}
}
diff --git a/src/lib/library/BottomBar.svelte b/src/lib/library/BottomBar.svelte
index 4a97555..2eb4a07 100644
--- a/src/lib/library/BottomBar.svelte
+++ b/src/lib/library/BottomBar.svelte
@@ -1,5 +1,4 @@
+
+
{#if isLoading}
-
+
+
+
{/if}
{#if checked !== null}
@@ -78,9 +79,9 @@
{/if}
{#if onDelete}
-
{/if}
{:else}
@@ -179,20 +180,6 @@
text-align: left;
}
}
-
- &.single-selection {
- iconify-icon[icon="charm:tick"] {
- color: transparent;
- }
- }
-
- iconify-icon[icon="charm:tick"] {
- color: grey;
-
- &.checked {
- color: white;
- }
- }
}
@keyframes loading {
diff --git a/src/lib/sidebar/Sidebar.svelte b/src/lib/sidebar/Sidebar.svelte
index f7aba9a..508bc09 100644
--- a/src/lib/sidebar/Sidebar.svelte
+++ b/src/lib/sidebar/Sidebar.svelte
@@ -1040,7 +1040,6 @@
{:else}
-
{/if}
@@ -1330,9 +1329,6 @@
cursor: default;
&.selected {
color: white;
- iconify-icon {
- color: #45fffcf3;
- }
.chevron {
visibility: visible;
}
@@ -1352,13 +1348,6 @@
}
}
- iconify-icon {
- margin-right: 5px;
- font-size: 15px;
- text-align: center;
- vertical-align: middle;
- }
-
.chevron {
visibility: hidden;
&.expanded {
@@ -1448,11 +1437,6 @@
height: fit-content;
padding: 5px;
margin: auto 0;
- > iconify-icon {
- font-size: 17px;
- color: #737373;
- pointer-events: none;
- }
}
}
@@ -1658,9 +1642,6 @@
img {
width: 80%;
}
- iconify-icon {
- /* margin-top: 0.7em; */
- }
}
}
}
@@ -1779,27 +1760,6 @@
}
}
- iconify-icon {
- font-size: 40px;
- &.disabled {
- pointer-events: none;
- color: #474747;
- }
-
- // Like disabled but clickable
- &.off {
- color: #474747;
- }
-
- &:hover {
- opacity: 0.5;
- }
-
- &:active {
- color: rgb(141, 47, 47);
- opacity: 1;
- }
- }
.playlist-menu {
position: fixed;
diff --git a/src/lib/ui/ButtonWithIcon.svelte b/src/lib/ui/ButtonWithIcon.svelte
index 41d46e3..7ef2fa1 100644
--- a/src/lib/ui/ButtonWithIcon.svelte
+++ b/src/lib/ui/ButtonWithIcon.svelte
@@ -1,4 +1,6 @@
-
+
{#if icon}
-
+
{/if}
{text}
diff --git a/src/lib/ui/CompressionSelector.svelte b/src/lib/ui/CompressionSelector.svelte
index 7e1c493..f53cd2f 100644
--- a/src/lib/ui/CompressionSelector.svelte
+++ b/src/lib/ui/CompressionSelector.svelte
@@ -89,10 +89,6 @@
&:active {
background-color: rgba(128, 128, 128, 0.391);
}
-
- iconify-icon {
- color: grey;
- }
}
.menu {
diff --git a/src/lib/ui/Dropdown.svelte b/src/lib/ui/Dropdown.svelte
index 0b09100..a865506 100644
--- a/src/lib/ui/Dropdown.svelte
+++ b/src/lib/ui/Dropdown.svelte
@@ -72,10 +72,6 @@
&:active {
background-color: rgba(128, 128, 128, 0.391);
}
-
- iconify-icon {
- color: grey;
- }
}
.menu {
diff --git a/src/lib/ui/Icon.svelte b/src/lib/ui/Icon.svelte
index c4b83d1..8e74ab5 100644
--- a/src/lib/ui/Icon.svelte
+++ b/src/lib/ui/Icon.svelte
@@ -122,6 +122,24 @@
},
"heroicons-solid:volume-up": {
svg: `
`
+ },
+ "system-uicons:audio-wave": {
+ svg: `
`
+ },
+ "bxs:video": {
+ svg: `
`
+ },
+ "dashicons:editor-video": {
+ svg: `
`
+ },
+ "akar-icons:link-chain": {
+ svg: `
`
+ },
+ "ant-design:delete-outlined": {
+ svg: `
`
+ },
+ "icon-park-outline:full-screen-one": {
+ svg: `
`
}
};
diff --git a/src/lib/views/AlbumsView.svelte b/src/lib/views/AlbumsView.svelte
index a8e6231..0011e4d 100644
--- a/src/lib/views/AlbumsView.svelte
+++ b/src/lib/views/AlbumsView.svelte
@@ -1,7 +1,6 @@
-
+
A few words about this app
diff --git a/src/lib/your-music/ArtistInfo.svelte b/src/lib/your-music/ArtistInfo.svelte
index bf742b8..d088e8c 100644
--- a/src/lib/your-music/ArtistInfo.svelte
+++ b/src/lib/your-music/ArtistInfo.svelte
@@ -5,6 +5,7 @@
import { autoWidth } from "../../utils/AutoWidth";
import { flip } from "svelte/animate";
import { quadInOut } from "svelte/easing";
+ import Icon from "../ui/Icon.svelte";
export let artist: ArtistProject;
@@ -49,10 +50,9 @@
>
{member}
{#if isEditEnabled}
-
removeMember(member)}
+ onClick={() => removeMember(member)}
/>
{/if}
@@ -76,7 +76,7 @@
isEditEnabled = !isEditEnabled;
}}
>
-
+
@@ -125,17 +125,7 @@
gap: 5px;
padding: 0 1px;
- iconify-icon {
- display: none;
- }
-
&.editable {
- iconify-icon {
- display: flex;
- &:hover {
- opacity: 0.6;
- }
- }
background: rgb(62, 61, 61);
border-radius: 4px;
border: 1px solid rgb(76, 72, 72);
diff --git a/src/lib/your-music/FileBlock.svelte b/src/lib/your-music/FileBlock.svelte
index f2c359e..3f9ca43 100644
--- a/src/lib/your-music/FileBlock.svelte
+++ b/src/lib/your-music/FileBlock.svelte
@@ -8,6 +8,7 @@
} from "../../data/LibraryImporter";
import audioPlayer from "../player/AudioPlayer";
import { convertFileSrc } from "@tauri-apps/api/tauri";
+ import Icon from "../ui/Icon.svelte";
export let item: ArtistFileItem;
export let style: "dashed" | "outline" = "dashed";
@@ -45,6 +46,8 @@
on:click={openFile}
draggable="true"
on:dragstart={onDragStart}
+ role="button"
+ tabindex="0"
>
{#if item.fileType.type === "image"}
@@ -59,22 +62,18 @@
{:else}
-
+
{/if}
{#if item.fileType.type === "audio"}
-
+
{:else if item.fileType.type === "video"}
-
+
{:else if item.fileType.type === "image"}
-
+
{:else if item.fileType.type === "txt"}
-
+
{/if}
{item.name}
@@ -89,22 +88,6 @@
flex-direction: column;
max-width: 165px;
- &.audio {
- iconify-icon {
- color: rgb(199, 69, 199);
- }
- }
- &.video {
- iconify-icon {
- color: rgb(224, 72, 72);
- }
- }
- &.txt {
- iconify-icon {
- color: rgb(212, 212, 66);
- }
- }
-
&.dashed {
.container {
border-style: dashed;
@@ -142,11 +125,6 @@
overflow: hidden;
text-overflow: ellipsis;
}
- iconify-icon {
- width: auto;
- height: fit-content;
- display: flex;
- }
}
img,
@@ -185,10 +163,6 @@
display: flex;
align-items: center;
justify-content: center;
- iconify-icon {
- font-size: 40px;
- color: white;
- }
}
}
}
diff --git a/src/lib/your-music/LinkBlock.svelte b/src/lib/your-music/LinkBlock.svelte
index 65af631..c0e79be 100644
--- a/src/lib/your-music/LinkBlock.svelte
+++ b/src/lib/your-music/LinkBlock.svelte
@@ -2,6 +2,7 @@
import type { ArtistLinkItem } from "src/App";
import { draggedScrapbookItems } from "../../data/store";
import { open } from "@tauri-apps/api/shell";
+ import Icon from "../ui/Icon.svelte";
export let item: ArtistLinkItem;
@@ -26,9 +27,11 @@
on:click={openUrl}
>
- {#if item.imageUrl}
{/if}
+ {#if item.imageUrl}
+
+ {/if}
@@ -88,12 +91,6 @@
width: 100%;
text-align: end;
}
- iconify-icon {
- width: auto;
- height: fit-content;
- display: flex;
- color: rgb(70, 227, 227);
- }
}
&:hover {
border: 1px solid rgb(70, 227, 227);
diff --git a/src/lib/your-music/LyricsBlock.svelte b/src/lib/your-music/LyricsBlock.svelte
index 7f3a1be..5e595d0 100644
--- a/src/lib/your-music/LyricsBlock.svelte
+++ b/src/lib/your-music/LyricsBlock.svelte
@@ -1,5 +1,6 @@
@@ -10,7 +11,7 @@
@@ -51,12 +52,6 @@
margin: 0;
line-height: 1em;
}
- iconify-icon {
- width: auto;
- height: fit-content;
- display: flex;
- color: rgb(212, 212, 66);
- }
}
&:hover {
border: 1px solid rgb(212, 212, 66);
@@ -80,10 +75,6 @@
display: flex;
align-items: center;
justify-content: center;
- iconify-icon {
- font-size: 40px;
- color: white;
- }
}
}
diff --git a/src/lib/your-music/MusicTab.svelte b/src/lib/your-music/MusicTab.svelte
index 687e9bb..7e9a026 100644
--- a/src/lib/your-music/MusicTab.svelte
+++ b/src/lib/your-music/MusicTab.svelte
@@ -8,6 +8,7 @@
import { fly } from "svelte/transition";
import { quadInOut, quadOut } from "svelte/easing";
import { flip } from "svelte/animate";
+ import Icon from "../ui/Icon.svelte";
export let recordings: SongProjectRecording[];
export let songProject: SongProject;
@@ -42,10 +43,12 @@
}
async function createProject() {
- const songProjectId = await db.songProjects.add(songProject) as number;
+ const songProjectId = (await db.songProjects.add(
+ songProject
+ )) as number;
if (song) {
song.songProjectId = songProjectId;
- await db.songs.put(song)
+ await db.songs.put(song);
onSelectSong && onSelectSong(song);
}
}
@@ -65,13 +68,14 @@
{recording.song.file}
{#if isProject}
- {
- deleteRecording(idx);
- }}
- />
+
+ {
+ deleteRecording(idx);
+ }}
+ />
+
{/if}
{/each}
diff --git a/src/lib/your-music/Scrapbook.svelte b/src/lib/your-music/Scrapbook.svelte
index 20ac85c..1460f1b 100644
--- a/src/lib/your-music/Scrapbook.svelte
+++ b/src/lib/your-music/Scrapbook.svelte
@@ -27,6 +27,7 @@
import TagCloud from "./TagCloud.svelte";
import MenuInput from "../menu/MenuInput.svelte";
import hotkeys from "hotkeys-js";
+ import Icon from "../ui/Icon.svelte";
let contentTypes = [
{
@@ -327,7 +328,7 @@
class={contentType.name}
on:click={() => toggleContentType(contentType.name)}
>
-
+
{contentType.name}
{/each}
@@ -463,16 +464,16 @@
user-select: none;
text-transform: capitalize;
}
- &.lyrics > iconify-icon {
- color: rgb(212, 212, 66);
+ &.lyrics {
+ color: #d4d442;
}
- &.audio > iconify-icon {
+ &.audio {
color: rgb(199, 69, 199);
}
- &.video > iconify-icon {
+ &.video {
color: rgb(224, 72, 72);
}
- &.link > iconify-icon {
+ &.link {
color: rgb(70, 227, 227);
}
}
diff --git a/src/lib/your-music/SongDetails.svelte b/src/lib/your-music/SongDetails.svelte
index ab25870..8c1adfe 100644
--- a/src/lib/your-music/SongDetails.svelte
+++ b/src/lib/your-music/SongDetails.svelte
@@ -6,7 +6,8 @@
ArtistFileItem,
ArtistLinkItem,
ArtistProject,
- ContentFileType, Song,
+ ContentFileType,
+ Song,
SongProject
} from "src/App";
import { onDestroy, onMount } from "svelte";
@@ -23,7 +24,10 @@
import { readTextFile } from "@tauri-apps/api/fs";
import toast from "svelte-french-toast";
- import { getMetadataFromFile, getSongFromMetadata } from "../../data/LibraryImporter";
+ import {
+ getMetadataFromFile,
+ getSongFromMetadata
+ } from "../../data/LibraryImporter";
import {
droppedFiles,
fileDropHandler,
@@ -50,13 +54,16 @@
// Eg. 127 beats per minute = 1 beat every 0.4724409449 seconds
function startBPMTicker(bpm: number) {
if (bpmTicker === 1 && !bpmInterval) {
- bpmInterval = setInterval(() => {
- if (songProjectClone?.bpm !== undefined) {
- bpmTicker++;
- } else {
- stopBpmTicker();
- }
- }, 60000 / bpm / 2);
+ bpmInterval = setInterval(
+ () => {
+ if (songProjectClone?.bpm !== undefined) {
+ bpmTicker++;
+ } else {
+ stopBpmTicker();
+ }
+ },
+ 60000 / bpm / 2
+ );
}
}
@@ -732,15 +739,15 @@
{/each}
-
-
-
@@ -1021,15 +1028,6 @@
gap: 3px;
align-items: center;
margin-right: 20px;
-
- iconify-icon {
- padding: 6px;
- font-size: 20px;
- border-radius: 4px;
- &:hover {
- background-color: rgba(0, 0, 0, 0.457);
- }
- }
}
}
p {
diff --git a/vite.config.ts b/vite.config.ts
index 9948a8c..65effb7 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -4,6 +4,7 @@ import { NodeGlobalsPolyfillPlugin } from "@esbuild-plugins/node-globals-polyfil
// yarn add --dev @esbuild-plugins/node-modules-polyfill
import { NodeModulesPolyfillPlugin } from "@esbuild-plugins/node-modules-polyfill";
import rollupNodePolyFill from "rollup-plugin-node-polyfills";
+import { analyzer } from 'vite-bundle-analyzer'
// https://vitejs.dev/config/
export default defineConfig({