[READ-ONLY] Mirror of https://github.com/probablykasper/ferrum. Music library app for Mac, Linux and Windows ferrum.kasper.space
electron linux macos music music-library music-player napi windows
0

Configure Feed

Select the types of activity you want to include in your feed.

Update deps

Kasper (Mar 5, 2026, 7:19 AM +0100) 6a2f5d2d 276df02f

+194 -155
+174 -139
package-lock.json
··· 18 18 "d3-scale": "^4.0.2", 19 19 "electron": "^30.5.1", 20 20 "electron-builder": "^26.0.12", 21 - "eslint": "^9.39.2", 21 + "eslint": "^9.39.3", 22 22 "eslint-config-prettier": "^10.1.8", 23 - "eslint-plugin-svelte": "^3.9.1", 23 + "eslint-plugin-svelte": "^3.15.0", 24 24 "fuzzysort": "^3.1.0", 25 25 "meyda": "^5.6.3", 26 26 "prettier": "^3.8.1", 27 - "prettier-plugin-svelte": "^3.4.1", 28 - "prettier-plugin-tailwindcss": "^0.6.12", 27 + "prettier-plugin-svelte": "^3.5.1", 28 + "prettier-plugin-tailwindcss": "^0.7.2", 29 29 "sass": "^1.89.1", 30 30 "svelte": "^5.34.3", 31 - "svelte-check": "^4.3.1", 31 + "svelte-check": "^4.4.4", 32 32 "svelte-preprocess": "^6.0.3", 33 33 "tailwindcss": "^4.1.8", 34 34 "typescript": "~5.8.3", 35 - "typescript-eslint": "^8.55.0", 35 + "typescript-eslint": "^8.56.1", 36 36 "vite": "^6.4.1", 37 37 "vite-plugin-electron": "^0.29.0" 38 38 } ··· 1290 1290 } 1291 1291 }, 1292 1292 "node_modules/@eslint/js": { 1293 - "version": "9.39.2", 1294 - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", 1295 - "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", 1293 + "version": "9.39.3", 1294 + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", 1295 + "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", 1296 1296 "dev": true, 1297 1297 "license": "MIT", 1298 1298 "engines": { ··· 4548 4548 } 4549 4549 }, 4550 4550 "node_modules/@typescript-eslint/eslint-plugin": { 4551 - "version": "8.55.0", 4552 - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz", 4553 - "integrity": "sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==", 4551 + "version": "8.56.1", 4552 + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", 4553 + "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", 4554 4554 "dev": true, 4555 4555 "license": "MIT", 4556 4556 "dependencies": { 4557 4557 "@eslint-community/regexpp": "^4.12.2", 4558 - "@typescript-eslint/scope-manager": "8.55.0", 4559 - "@typescript-eslint/type-utils": "8.55.0", 4560 - "@typescript-eslint/utils": "8.55.0", 4561 - "@typescript-eslint/visitor-keys": "8.55.0", 4558 + "@typescript-eslint/scope-manager": "8.56.1", 4559 + "@typescript-eslint/type-utils": "8.56.1", 4560 + "@typescript-eslint/utils": "8.56.1", 4561 + "@typescript-eslint/visitor-keys": "8.56.1", 4562 4562 "ignore": "^7.0.5", 4563 4563 "natural-compare": "^1.4.0", 4564 4564 "ts-api-utils": "^2.4.0" ··· 4571 4571 "url": "https://opencollective.com/typescript-eslint" 4572 4572 }, 4573 4573 "peerDependencies": { 4574 - "@typescript-eslint/parser": "^8.55.0", 4575 - "eslint": "^8.57.0 || ^9.0.0", 4574 + "@typescript-eslint/parser": "^8.56.1", 4575 + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", 4576 4576 "typescript": ">=4.8.4 <6.0.0" 4577 4577 } 4578 4578 }, ··· 4587 4587 } 4588 4588 }, 4589 4589 "node_modules/@typescript-eslint/parser": { 4590 - "version": "8.55.0", 4591 - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.55.0.tgz", 4592 - "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", 4590 + "version": "8.56.1", 4591 + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", 4592 + "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", 4593 4593 "dev": true, 4594 4594 "license": "MIT", 4595 4595 "peer": true, 4596 4596 "dependencies": { 4597 - "@typescript-eslint/scope-manager": "8.55.0", 4598 - "@typescript-eslint/types": "8.55.0", 4599 - "@typescript-eslint/typescript-estree": "8.55.0", 4600 - "@typescript-eslint/visitor-keys": "8.55.0", 4597 + "@typescript-eslint/scope-manager": "8.56.1", 4598 + "@typescript-eslint/types": "8.56.1", 4599 + "@typescript-eslint/typescript-estree": "8.56.1", 4600 + "@typescript-eslint/visitor-keys": "8.56.1", 4601 4601 "debug": "^4.4.3" 4602 4602 }, 4603 4603 "engines": { ··· 4608 4608 "url": "https://opencollective.com/typescript-eslint" 4609 4609 }, 4610 4610 "peerDependencies": { 4611 - "eslint": "^8.57.0 || ^9.0.0", 4611 + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", 4612 4612 "typescript": ">=4.8.4 <6.0.0" 4613 4613 } 4614 4614 }, 4615 4615 "node_modules/@typescript-eslint/project-service": { 4616 - "version": "8.55.0", 4617 - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.55.0.tgz", 4618 - "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", 4616 + "version": "8.56.1", 4617 + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", 4618 + "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", 4619 4619 "dev": true, 4620 4620 "license": "MIT", 4621 4621 "dependencies": { 4622 - "@typescript-eslint/tsconfig-utils": "^8.55.0", 4623 - "@typescript-eslint/types": "^8.55.0", 4622 + "@typescript-eslint/tsconfig-utils": "^8.56.1", 4623 + "@typescript-eslint/types": "^8.56.1", 4624 4624 "debug": "^4.4.3" 4625 4625 }, 4626 4626 "engines": { ··· 4635 4635 } 4636 4636 }, 4637 4637 "node_modules/@typescript-eslint/scope-manager": { 4638 - "version": "8.55.0", 4639 - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz", 4640 - "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", 4638 + "version": "8.56.1", 4639 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", 4640 + "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", 4641 4641 "dev": true, 4642 4642 "license": "MIT", 4643 4643 "dependencies": { 4644 - "@typescript-eslint/types": "8.55.0", 4645 - "@typescript-eslint/visitor-keys": "8.55.0" 4644 + "@typescript-eslint/types": "8.56.1", 4645 + "@typescript-eslint/visitor-keys": "8.56.1" 4646 4646 }, 4647 4647 "engines": { 4648 4648 "node": "^18.18.0 || ^20.9.0 || >=21.1.0" ··· 4653 4653 } 4654 4654 }, 4655 4655 "node_modules/@typescript-eslint/tsconfig-utils": { 4656 - "version": "8.55.0", 4657 - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz", 4658 - "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", 4656 + "version": "8.56.1", 4657 + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", 4658 + "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", 4659 4659 "dev": true, 4660 4660 "license": "MIT", 4661 4661 "engines": { ··· 4670 4670 } 4671 4671 }, 4672 4672 "node_modules/@typescript-eslint/type-utils": { 4673 - "version": "8.55.0", 4674 - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz", 4675 - "integrity": "sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==", 4673 + "version": "8.56.1", 4674 + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", 4675 + "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", 4676 4676 "dev": true, 4677 4677 "license": "MIT", 4678 4678 "dependencies": { 4679 - "@typescript-eslint/types": "8.55.0", 4680 - "@typescript-eslint/typescript-estree": "8.55.0", 4681 - "@typescript-eslint/utils": "8.55.0", 4679 + "@typescript-eslint/types": "8.56.1", 4680 + "@typescript-eslint/typescript-estree": "8.56.1", 4681 + "@typescript-eslint/utils": "8.56.1", 4682 4682 "debug": "^4.4.3", 4683 4683 "ts-api-utils": "^2.4.0" 4684 4684 }, ··· 4690 4690 "url": "https://opencollective.com/typescript-eslint" 4691 4691 }, 4692 4692 "peerDependencies": { 4693 - "eslint": "^8.57.0 || ^9.0.0", 4693 + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", 4694 4694 "typescript": ">=4.8.4 <6.0.0" 4695 4695 } 4696 4696 }, 4697 4697 "node_modules/@typescript-eslint/types": { 4698 - "version": "8.55.0", 4699 - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.55.0.tgz", 4700 - "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==", 4698 + "version": "8.56.1", 4699 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", 4700 + "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", 4701 4701 "dev": true, 4702 4702 "license": "MIT", 4703 4703 "engines": { ··· 4709 4709 } 4710 4710 }, 4711 4711 "node_modules/@typescript-eslint/typescript-estree": { 4712 - "version": "8.55.0", 4713 - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz", 4714 - "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", 4712 + "version": "8.56.1", 4713 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", 4714 + "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", 4715 4715 "dev": true, 4716 4716 "license": "MIT", 4717 4717 "dependencies": { 4718 - "@typescript-eslint/project-service": "8.55.0", 4719 - "@typescript-eslint/tsconfig-utils": "8.55.0", 4720 - "@typescript-eslint/types": "8.55.0", 4721 - "@typescript-eslint/visitor-keys": "8.55.0", 4718 + "@typescript-eslint/project-service": "8.56.1", 4719 + "@typescript-eslint/tsconfig-utils": "8.56.1", 4720 + "@typescript-eslint/types": "8.56.1", 4721 + "@typescript-eslint/visitor-keys": "8.56.1", 4722 4722 "debug": "^4.4.3", 4723 - "minimatch": "^9.0.5", 4723 + "minimatch": "^10.2.2", 4724 4724 "semver": "^7.7.3", 4725 4725 "tinyglobby": "^0.2.15", 4726 4726 "ts-api-utils": "^2.4.0" ··· 4736 4736 "typescript": ">=4.8.4 <6.0.0" 4737 4737 } 4738 4738 }, 4739 - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { 4740 - "version": "9.0.5", 4741 - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 4742 - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 4743 - "dev": true, 4744 - "license": "ISC", 4745 - "dependencies": { 4746 - "brace-expansion": "^2.0.1" 4747 - }, 4748 - "engines": { 4749 - "node": ">=16 || 14 >=14.17" 4750 - }, 4751 - "funding": { 4752 - "url": "https://github.com/sponsors/isaacs" 4753 - } 4754 - }, 4755 4739 "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { 4756 4740 "version": "7.7.4", 4757 4741 "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", ··· 4766 4750 } 4767 4751 }, 4768 4752 "node_modules/@typescript-eslint/utils": { 4769 - "version": "8.55.0", 4770 - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.55.0.tgz", 4771 - "integrity": "sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==", 4753 + "version": "8.56.1", 4754 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", 4755 + "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", 4772 4756 "dev": true, 4773 4757 "license": "MIT", 4774 4758 "dependencies": { 4775 4759 "@eslint-community/eslint-utils": "^4.9.1", 4776 - "@typescript-eslint/scope-manager": "8.55.0", 4777 - "@typescript-eslint/types": "8.55.0", 4778 - "@typescript-eslint/typescript-estree": "8.55.0" 4760 + "@typescript-eslint/scope-manager": "8.56.1", 4761 + "@typescript-eslint/types": "8.56.1", 4762 + "@typescript-eslint/typescript-estree": "8.56.1" 4779 4763 }, 4780 4764 "engines": { 4781 4765 "node": "^18.18.0 || ^20.9.0 || >=21.1.0" ··· 4785 4769 "url": "https://opencollective.com/typescript-eslint" 4786 4770 }, 4787 4771 "peerDependencies": { 4788 - "eslint": "^8.57.0 || ^9.0.0", 4772 + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", 4789 4773 "typescript": ">=4.8.4 <6.0.0" 4790 4774 } 4791 4775 }, 4792 4776 "node_modules/@typescript-eslint/visitor-keys": { 4793 - "version": "8.55.0", 4794 - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz", 4795 - "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", 4777 + "version": "8.56.1", 4778 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", 4779 + "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", 4796 4780 "dev": true, 4797 4781 "license": "MIT", 4798 4782 "dependencies": { 4799 - "@typescript-eslint/types": "8.55.0", 4800 - "eslint-visitor-keys": "^4.2.1" 4783 + "@typescript-eslint/types": "8.56.1", 4784 + "eslint-visitor-keys": "^5.0.0" 4801 4785 }, 4802 4786 "engines": { 4803 4787 "node": "^18.18.0 || ^20.9.0 || >=21.1.0" ··· 4807 4791 "url": "https://opencollective.com/typescript-eslint" 4808 4792 } 4809 4793 }, 4794 + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { 4795 + "version": "5.0.1", 4796 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", 4797 + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", 4798 + "dev": true, 4799 + "license": "Apache-2.0", 4800 + "engines": { 4801 + "node": "^20.19.0 || ^22.13.0 || >=24" 4802 + }, 4803 + "funding": { 4804 + "url": "https://opencollective.com/eslint" 4805 + } 4806 + }, 4810 4807 "node_modules/@xmldom/xmldom": { 4811 4808 "version": "0.8.10", 4812 4809 "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", ··· 6764 6761 } 6765 6762 }, 6766 6763 "node_modules/eslint": { 6767 - "version": "9.39.2", 6768 - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", 6769 - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", 6764 + "version": "9.39.3", 6765 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", 6766 + "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", 6770 6767 "dev": true, 6771 6768 "license": "MIT", 6772 6769 "peer": true, ··· 6777 6774 "@eslint/config-helpers": "^0.4.2", 6778 6775 "@eslint/core": "^0.17.0", 6779 6776 "@eslint/eslintrc": "^3.3.1", 6780 - "@eslint/js": "9.39.2", 6777 + "@eslint/js": "9.39.3", 6781 6778 "@eslint/plugin-kit": "^0.4.1", 6782 6779 "@humanfs/node": "^0.16.6", 6783 6780 "@humanwhocodes/module-importer": "^1.0.1", ··· 6841 6838 } 6842 6839 }, 6843 6840 "node_modules/eslint-plugin-svelte": { 6844 - "version": "3.9.1", 6845 - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.9.1.tgz", 6846 - "integrity": "sha512-mXFulSdD/0/p+zwENjPNsiVwAqmSRp90sy5zvVQBX1yAXhJbdhIn6C/tn8BZYjU94Ia7Y87d1Xdbvi49DeWyHQ==", 6841 + "version": "3.15.0", 6842 + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.15.0.tgz", 6843 + "integrity": "sha512-QKB7zqfuB8aChOfBTComgDptMf2yxiJx7FE04nneCmtQzgTHvY8UJkuh8J2Rz7KB9FFV9aTHX6r7rdYGvG8T9Q==", 6847 6844 "dev": true, 6848 6845 "license": "MIT", 6849 6846 "dependencies": { ··· 6851 6848 "@jridgewell/sourcemap-codec": "^1.5.0", 6852 6849 "esutils": "^2.0.3", 6853 6850 "globals": "^16.0.0", 6854 - "known-css-properties": "^0.36.0", 6851 + "known-css-properties": "^0.37.0", 6855 6852 "postcss": "^8.4.49", 6856 6853 "postcss-load-config": "^3.1.4", 6857 6854 "postcss-safe-parser": "^7.0.0", 6858 6855 "semver": "^7.6.3", 6859 - "svelte-eslint-parser": "^1.2.0" 6856 + "svelte-eslint-parser": "^1.4.0" 6860 6857 }, 6861 6858 "engines": { 6862 6859 "node": "^18.18.0 || ^20.9.0 || >=21.1.0" ··· 6865 6862 "url": "https://github.com/sponsors/ota-meshi" 6866 6863 }, 6867 6864 "peerDependencies": { 6868 - "eslint": "^8.57.1 || ^9.0.0", 6865 + "eslint": "^8.57.1 || ^9.0.0 || ^10.0.0", 6869 6866 "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" 6870 6867 }, 6871 6868 "peerDependenciesMeta": { ··· 8190 8187 } 8191 8188 }, 8192 8189 "node_modules/known-css-properties": { 8193 - "version": "0.36.0", 8194 - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz", 8195 - "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==", 8190 + "version": "0.37.0", 8191 + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", 8192 + "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", 8196 8193 "dev": true, 8197 8194 "license": "MIT" 8198 8195 }, ··· 8749 8746 } 8750 8747 }, 8751 8748 "node_modules/minimatch": { 8752 - "version": "10.0.1", 8753 - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", 8754 - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", 8749 + "version": "10.2.4", 8750 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", 8751 + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", 8755 8752 "dev": true, 8756 - "license": "ISC", 8753 + "license": "BlueOak-1.0.0", 8757 8754 "dependencies": { 8758 - "brace-expansion": "^2.0.1" 8755 + "brace-expansion": "^5.0.2" 8759 8756 }, 8760 8757 "engines": { 8761 - "node": "20 || >=22" 8758 + "node": "18 || 20 || >=22" 8762 8759 }, 8763 8760 "funding": { 8764 8761 "url": "https://github.com/sponsors/isaacs" 8762 + } 8763 + }, 8764 + "node_modules/minimatch/node_modules/balanced-match": { 8765 + "version": "4.0.4", 8766 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", 8767 + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", 8768 + "dev": true, 8769 + "license": "MIT", 8770 + "engines": { 8771 + "node": "18 || 20 || >=22" 8772 + } 8773 + }, 8774 + "node_modules/minimatch/node_modules/brace-expansion": { 8775 + "version": "5.0.4", 8776 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", 8777 + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", 8778 + "dev": true, 8779 + "license": "MIT", 8780 + "dependencies": { 8781 + "balanced-match": "^4.0.2" 8782 + }, 8783 + "engines": { 8784 + "node": "18 || 20 || >=22" 8765 8785 } 8766 8786 }, 8767 8787 "node_modules/minimist": { ··· 9465 9485 } 9466 9486 }, 9467 9487 "node_modules/postcss-selector-parser": { 9468 - "version": "7.1.0", 9469 - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", 9470 - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", 9488 + "version": "7.1.1", 9489 + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", 9490 + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", 9471 9491 "dev": true, 9472 9492 "license": "MIT", 9473 9493 "dependencies": { ··· 9534 9554 } 9535 9555 }, 9536 9556 "node_modules/prettier-plugin-svelte": { 9537 - "version": "3.4.1", 9538 - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.4.1.tgz", 9539 - "integrity": "sha512-xL49LCloMoZRvSwa6IEdN2GV6cq2IqpYGstYtMT+5wmml1/dClEoI0MZR78MiVPpu6BdQFfN0/y73yO6+br5Pg==", 9557 + "version": "3.5.1", 9558 + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.5.1.tgz", 9559 + "integrity": "sha512-65+fr5+cgIKWKiqM1Doum4uX6bY8iFCdztvvp2RcF+AJoieaw9kJOFMNcJo/bkmKYsxFaM9OsVZK/gWauG/5mg==", 9540 9560 "dev": true, 9541 9561 "license": "MIT", 9542 9562 "peer": true, ··· 9546 9566 } 9547 9567 }, 9548 9568 "node_modules/prettier-plugin-tailwindcss": { 9549 - "version": "0.6.12", 9550 - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.12.tgz", 9551 - "integrity": "sha512-OuTQKoqNwV7RnxTPwXWzOFXy6Jc4z8oeRZYGuMpRyG3WbuR3jjXdQFK8qFBMBx8UHWdHrddARz2fgUenild6aw==", 9569 + "version": "0.7.2", 9570 + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.7.2.tgz", 9571 + "integrity": "sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==", 9552 9572 "dev": true, 9553 9573 "license": "MIT", 9554 9574 "engines": { 9555 - "node": ">=14.21.3" 9575 + "node": ">=20.19" 9556 9576 }, 9557 9577 "peerDependencies": { 9558 9578 "@ianvs/prettier-plugin-sort-imports": "*", 9579 + "@prettier/plugin-hermes": "*", 9580 + "@prettier/plugin-oxc": "*", 9559 9581 "@prettier/plugin-pug": "*", 9560 9582 "@shopify/prettier-plugin-liquid": "*", 9561 9583 "@trivago/prettier-plugin-sort-imports": "*", ··· 9563 9585 "prettier": "^3.0", 9564 9586 "prettier-plugin-astro": "*", 9565 9587 "prettier-plugin-css-order": "*", 9566 - "prettier-plugin-import-sort": "*", 9567 9588 "prettier-plugin-jsdoc": "*", 9568 9589 "prettier-plugin-marko": "*", 9569 9590 "prettier-plugin-multiline-arrays": "*", 9570 9591 "prettier-plugin-organize-attributes": "*", 9571 9592 "prettier-plugin-organize-imports": "*", 9572 9593 "prettier-plugin-sort-imports": "*", 9573 - "prettier-plugin-style-order": "*", 9574 9594 "prettier-plugin-svelte": "*" 9575 9595 }, 9576 9596 "peerDependenciesMeta": { 9577 9597 "@ianvs/prettier-plugin-sort-imports": { 9578 9598 "optional": true 9579 9599 }, 9600 + "@prettier/plugin-hermes": { 9601 + "optional": true 9602 + }, 9603 + "@prettier/plugin-oxc": { 9604 + "optional": true 9605 + }, 9580 9606 "@prettier/plugin-pug": { 9581 9607 "optional": true 9582 9608 }, ··· 9593 9619 "optional": true 9594 9620 }, 9595 9621 "prettier-plugin-css-order": { 9596 - "optional": true 9597 - }, 9598 - "prettier-plugin-import-sort": { 9599 9622 "optional": true 9600 9623 }, 9601 9624 "prettier-plugin-jsdoc": { ··· 9614 9637 "optional": true 9615 9638 }, 9616 9639 "prettier-plugin-sort-imports": { 9617 - "optional": true 9618 - }, 9619 - "prettier-plugin-style-order": { 9620 9640 "optional": true 9621 9641 }, 9622 9642 "prettier-plugin-svelte": { ··· 10776 10796 } 10777 10797 }, 10778 10798 "node_modules/svelte-check": { 10779 - "version": "4.3.1", 10780 - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.3.1.tgz", 10781 - "integrity": "sha512-lkh8gff5gpHLjxIV+IaApMxQhTGnir2pNUAqcNgeKkvK5bT/30Ey/nzBxNLDlkztCH4dP7PixkMt9SWEKFPBWg==", 10799 + "version": "4.4.4", 10800 + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.4.4.tgz", 10801 + "integrity": "sha512-F1pGqXc710Oi/wTI4d/x7d6lgPwwfx1U6w3Q35n4xsC2e8C/yN2sM1+mWxjlMcpAfWucjlq4vPi+P4FZ8a14sQ==", 10782 10802 "dev": true, 10783 10803 "license": "MIT", 10784 10804 "dependencies": { ··· 10815 10835 } 10816 10836 }, 10817 10837 "node_modules/svelte-eslint-parser": { 10818 - "version": "1.2.0", 10819 - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.2.0.tgz", 10820 - "integrity": "sha512-mbPtajIeuiyU80BEyGvwAktBeTX7KCr5/0l+uRGLq1dafwRNrjfM5kHGJScEBlPG3ipu6dJqfW/k0/fujvIEVw==", 10838 + "version": "1.5.1", 10839 + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.5.1.tgz", 10840 + "integrity": "sha512-UbY7DYoDg+x4AKLUcX5xWuEWylgmm8ZD2Z89YT/AK6Wm/ckeMTnOMwr6AVC99znXbRC26xzWEPhSgmB62E07Gg==", 10821 10841 "dev": true, 10822 10842 "license": "MIT", 10823 10843 "dependencies": { ··· 10826 10846 "espree": "^10.0.0", 10827 10847 "postcss": "^8.4.49", 10828 10848 "postcss-scss": "^4.0.9", 10829 - "postcss-selector-parser": "^7.0.0" 10849 + "postcss-selector-parser": "^7.0.0", 10850 + "semver": "^7.7.2" 10830 10851 }, 10831 10852 "engines": { 10832 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 10853 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0", 10854 + "pnpm": "10.30.2" 10833 10855 }, 10834 10856 "funding": { 10835 10857 "url": "https://github.com/sponsors/ota-meshi" ··· 10843 10865 } 10844 10866 } 10845 10867 }, 10868 + "node_modules/svelte-eslint-parser/node_modules/semver": { 10869 + "version": "7.7.4", 10870 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", 10871 + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", 10872 + "dev": true, 10873 + "license": "ISC", 10874 + "bin": { 10875 + "semver": "bin/semver.js" 10876 + }, 10877 + "engines": { 10878 + "node": ">=10" 10879 + } 10880 + }, 10846 10881 "node_modules/svelte-preprocess": { 10847 10882 "version": "6.0.3", 10848 10883 "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.3.tgz", ··· 11295 11330 } 11296 11331 }, 11297 11332 "node_modules/typescript-eslint": { 11298 - "version": "8.55.0", 11299 - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.55.0.tgz", 11300 - "integrity": "sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==", 11333 + "version": "8.56.1", 11334 + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", 11335 + "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", 11301 11336 "dev": true, 11302 11337 "license": "MIT", 11303 11338 "dependencies": { 11304 - "@typescript-eslint/eslint-plugin": "8.55.0", 11305 - "@typescript-eslint/parser": "8.55.0", 11306 - "@typescript-eslint/typescript-estree": "8.55.0", 11307 - "@typescript-eslint/utils": "8.55.0" 11339 + "@typescript-eslint/eslint-plugin": "8.56.1", 11340 + "@typescript-eslint/parser": "8.56.1", 11341 + "@typescript-eslint/typescript-estree": "8.56.1", 11342 + "@typescript-eslint/utils": "8.56.1" 11308 11343 }, 11309 11344 "engines": { 11310 11345 "node": "^18.18.0 || ^20.9.0 || >=21.1.0" ··· 11314 11349 "url": "https://opencollective.com/typescript-eslint" 11315 11350 }, 11316 11351 "peerDependencies": { 11317 - "eslint": "^8.57.0 || ^9.0.0", 11352 + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", 11318 11353 "typescript": ">=4.8.4 <6.0.0" 11319 11354 } 11320 11355 }, ··· 11786 11821 "mdsvex": "^0.12.3", 11787 11822 "sass-embedded": "^1.79.4", 11788 11823 "svelte": "^5.0.0-next.1", 11789 - "svelte-check": "^4.3.1", 11824 + "svelte-check": "^4.4.4", 11790 11825 "tailwindcss": "4.0.0-alpha.23", 11791 11826 "typescript": "^5.8.3", 11792 11827 "vite": "^5.0.3"
+6 -6
package.json
··· 78 78 "d3-scale": "^4.0.2", 79 79 "electron": "^30.5.1", 80 80 "electron-builder": "^26.0.12", 81 - "eslint": "^9.39.2", 81 + "eslint": "^9.39.3", 82 82 "eslint-config-prettier": "^10.1.8", 83 - "eslint-plugin-svelte": "^3.9.1", 83 + "eslint-plugin-svelte": "^3.15.0", 84 84 "fuzzysort": "^3.1.0", 85 85 "meyda": "^5.6.3", 86 86 "prettier": "^3.8.1", 87 - "prettier-plugin-svelte": "^3.4.1", 88 - "prettier-plugin-tailwindcss": "^0.6.12", 87 + "prettier-plugin-svelte": "^3.5.1", 88 + "prettier-plugin-tailwindcss": "^0.7.2", 89 89 "sass": "^1.89.1", 90 90 "svelte": "^5.34.3", 91 - "svelte-check": "^4.3.1", 91 + "svelte-check": "^4.4.4", 92 92 "svelte-preprocess": "^6.0.3", 93 93 "tailwindcss": "^4.1.8", 94 94 "typescript": "~5.8.3", 95 - "typescript-eslint": "^8.55.0", 95 + "typescript-eslint": "^8.56.1", 96 96 "vite": "^6.4.1", 97 97 "vite-plugin-electron": "^0.29.0" 98 98 },
+1 -1
src/components/QueueItem.svelte
··· 5 5 export let id: string 6 6 7 7 let track: Track 8 - $: $tracks_updated, (track = get_track(id)) 8 + $: ($tracks_updated, (track = get_track(id))) 9 9 10 10 $: src = 11 11 'app://trackimg?path=' +
+1 -1
src/components/QuickNav.svelte
··· 42 42 function clamp_index() { 43 43 selected_index = Math.max(0, Math.min(filtered_items.length - 1, selected_index)) 44 44 } 45 - $: list_items, clamp_index() 45 + $: (list_items, clamp_index()) 46 46 let list_items: HTMLElement[] = [] 47 47 48 48 function handle_keydown(e: KeyboardEvent) {
+1 -1
src/components/Sidebar.svelte
··· 62 62 63 63 let content_element: HTMLDivElement 64 64 65 - $: $current_playlist_id, scroll_to_active() 65 + $: ($current_playlist_id, scroll_to_active()) 66 66 async function scroll_to_active() { 67 67 await tick() 68 68 const active = content_element?.querySelector('.active')
+1 -1
src/components/TrackList.svelte
··· 499 499 }) 500 500 $: virtual_grid.set_columns(columns) 501 501 $: virtual_grid.set_source_items(tracks_page.itemIds) 502 - $: $selection, $playing_id, virtual_grid.refresh(RefreshLevel.AllRows) 502 + $: ($selection, $playing_id, virtual_grid.refresh(RefreshLevel.AllRows)) 503 503 504 504 onMount(() => { 505 505 tracklist_actions.scroll_to_index = virtual_grid.scroll_to_index.bind(virtual_grid)
+1 -1
src/components/VirtualListBlock.svelte
··· 33 33 $: visible_count_obj = { length: visible_count } 34 34 35 35 $: { 36 - items, item_height, buffer 36 + ;(items, item_height, buffer) 37 37 if (scroll_container && main_element) refresh() 38 38 } 39 39
+8 -4
src/electron/typed_ipc.ts
··· 25 25 sender: TypedWebContents<IpcEvents> 26 26 } 27 27 28 - interface TypedIpcMain<IpcEvents extends InputMap, IpcCommands extends InputMap> 29 - extends ElectronIpcMain { 28 + interface TypedIpcMain< 29 + IpcEvents extends InputMap, 30 + IpcCommands extends InputMap, 31 + > extends ElectronIpcMain { 30 32 on<K extends keyof IpcEvents>( 31 33 channel: K, 32 34 listener: (event: IpcMainEvent, ...args: Parameters<IpcEvents[K]>) => void, ··· 57 59 removeHandler<K extends keyof IpcCommands>(channel: K): void 58 60 } 59 61 60 - interface TypedIpcRenderer<IpcEvents extends InputMap, IpcCommands extends InputMap> 61 - extends ElectronIpcRenderer { 62 + interface TypedIpcRenderer< 63 + IpcEvents extends InputMap, 64 + IpcCommands extends InputMap, 65 + > extends ElectronIpcRenderer { 62 66 on<K extends keyof IpcEvents>( 63 67 channel: K, 64 68 listener: (event: IpcRendererEvent, ...args: Parameters<IpcEvents[K]>) => void,
+1 -1
website/package.json
··· 19 19 "mdsvex": "^0.12.3", 20 20 "sass-embedded": "^1.79.4", 21 21 "svelte": "^5.0.0-next.1", 22 - "svelte-check": "^4.3.1", 22 + "svelte-check": "^4.4.4", 23 23 "tailwindcss": "4.0.0-alpha.23", 24 24 "typescript": "^5.8.3", 25 25 "vite": "^5.0.3"