Merge pull request #1654 from Materialious/update/1.16.26
Update/1.16.26
This commit is contained in:
@@ -69,6 +69,9 @@ services:
|
||||
# Should be comma separated and be the base domain
|
||||
# e.g. "youtube.com,google.com" NOT "https://youtube.com,https://videos.google.com"
|
||||
WHITELIST_BASE_DOMAIN: ""
|
||||
|
||||
# Specify a path to a certificate to trust, useful when using self-signed certificates.
|
||||
PROXY_TRUST_CA: ""
|
||||
|
||||
# Allow any domain in proxy
|
||||
# This shouldn't be used unless you KNOW what your doing
|
||||
|
||||
@@ -1 +1 @@
|
||||
Invidious klients ar modernu Material dizainu
|
||||
YouTube un Invidious klients ar modernu Material dizainu.
|
||||
|
||||
+2
-2
@@ -4,10 +4,10 @@
|
||||
<selectionStates>
|
||||
<SelectionState runConfigName="app">
|
||||
<option name="selectionMode" value="DROPDOWN" />
|
||||
<DropdownSelection timestamp="2026-03-02T08:05:49.685303023Z">
|
||||
<DropdownSelection timestamp="2026-04-29T14:52:49.139078433Z">
|
||||
<Target type="DEFAULT_BOOT">
|
||||
<handle>
|
||||
<DeviceId pluginId="LocalEmulator" identifier="path=/home/wpearce/.android/avd/Television_4K.avd" />
|
||||
<DeviceId pluginId="LocalEmulator" identifier="path=/home/wpearce/.android/avd/Pixel_9.avd" />
|
||||
</handle>
|
||||
</Target>
|
||||
</DropdownSelection>
|
||||
|
||||
@@ -7,8 +7,8 @@ android {
|
||||
applicationId "us.materialio.app"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 242
|
||||
versionName "1.16.25"
|
||||
versionCode 243
|
||||
versionName "1.16.26"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
aaptOptions {
|
||||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
||||
|
||||
@@ -84,7 +84,11 @@
|
||||
|
||||
|
||||
|
||||
<release version="1.16.25" date="2026-4-23">
|
||||
|
||||
<release version="1.16.26" date="2026-4-30">
|
||||
<url>https://github.com/Materialious/Materialious/releases/tag/1.16.26</url>
|
||||
</release>
|
||||
<release version="1.16.25" date="2026-4-23">
|
||||
<url>https://github.com/Materialious/Materialious/releases/tag/1.16.25</url>
|
||||
</release>
|
||||
<release version="1.16.24" date="2026-4-07">
|
||||
|
||||
Generated
+76
-63
@@ -1,82 +1,74 @@
|
||||
{
|
||||
"name": "Materialious",
|
||||
"version": "1.16.25",
|
||||
"version": "1.16.26",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "Materialious",
|
||||
"version": "1.16.25",
|
||||
"version": "1.16.26",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@capacitor-community/electron": "^5.0.0",
|
||||
"@types/jsdom": "^28.0.1",
|
||||
"bgutils-js": "^3.2.0",
|
||||
"capacitor-nodejs": "https://github.com/hampoelz/capacitor-nodejs/releases/download/v1.0.0-beta.9/capacitor-nodejs.tgz",
|
||||
"chokidar": "~5.0.0",
|
||||
"electron-is-dev": "~2.0.0",
|
||||
"electron-serve": "~3.0.0",
|
||||
"electron-unhandled": "^4.0.1",
|
||||
"electron-updater": "^6.8.3",
|
||||
"electron-window-state": "^5.0.3",
|
||||
"jsdom": "^29.0.1",
|
||||
"jsdom": "^29.1.0",
|
||||
"jsonfile": "^6.2.1",
|
||||
"youtubei.js": "^17.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron": "^41.2.1",
|
||||
"electron": "^41.3.0",
|
||||
"electron-builder": "^26.0.12",
|
||||
"electron-rebuild": "^3.2.9",
|
||||
"typescript": "^6.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@asamuzakjp/css-color": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-5.0.1.tgz",
|
||||
"integrity": "sha512-2SZFvqMyvboVV1d15lMf7XiI3m7SDqXUuKaTymJYLN6dSGadqp+fVojqJlVoMlbZnlTmu3S0TLwLTJpvBMO1Aw==",
|
||||
"version": "5.1.11",
|
||||
"resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-5.1.11.tgz",
|
||||
"integrity": "sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@csstools/css-calc": "^3.1.1",
|
||||
"@csstools/css-color-parser": "^4.0.2",
|
||||
"@asamuzakjp/generational-cache": "^1.0.1",
|
||||
"@csstools/css-calc": "^3.2.0",
|
||||
"@csstools/css-color-parser": "^4.1.0",
|
||||
"@csstools/css-parser-algorithms": "^4.0.0",
|
||||
"@csstools/css-tokenizer": "^4.0.0",
|
||||
"lru-cache": "^11.2.6"
|
||||
"@csstools/css-tokenizer": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@asamuzakjp/css-color/node_modules/lru-cache": {
|
||||
"version": "11.2.7",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz",
|
||||
"integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==",
|
||||
"license": "BlueOak-1.0.0",
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
}
|
||||
},
|
||||
"node_modules/@asamuzakjp/dom-selector": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-7.0.3.tgz",
|
||||
"integrity": "sha512-Q6mU0Z6bfj6YvnX2k9n0JxiIwrCFN59x/nWmYQnAqP000ruX/yV+5bp/GRcF5T8ncvfwJQ7fgfP74DlpKExILA==",
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-7.1.1.tgz",
|
||||
"integrity": "sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@asamuzakjp/generational-cache": "^1.0.1",
|
||||
"@asamuzakjp/nwsapi": "^2.3.9",
|
||||
"bidi-js": "^1.0.3",
|
||||
"css-tree": "^3.2.1",
|
||||
"is-potential-custom-element-name": "^1.0.1",
|
||||
"lru-cache": "^11.2.7"
|
||||
"is-potential-custom-element-name": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": {
|
||||
"version": "11.2.7",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz",
|
||||
"integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==",
|
||||
"license": "BlueOak-1.0.0",
|
||||
"node_modules/@asamuzakjp/generational-cache": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@asamuzakjp/generational-cache/-/generational-cache-1.0.1.tgz",
|
||||
"integrity": "sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@asamuzakjp/nwsapi": {
|
||||
@@ -251,9 +243,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/css-calc": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.1.1.tgz",
|
||||
"integrity": "sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==",
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.2.0.tgz",
|
||||
"integrity": "sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
@@ -274,9 +266,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/css-color-parser": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.0.2.tgz",
|
||||
"integrity": "sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==",
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.1.0.tgz",
|
||||
"integrity": "sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
@@ -290,7 +282,7 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@csstools/color-helpers": "^6.0.2",
|
||||
"@csstools/css-calc": "^3.1.1"
|
||||
"@csstools/css-calc": "^3.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20.19.0"
|
||||
@@ -323,9 +315,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/css-syntax-patches-for-csstree": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.1.tgz",
|
||||
"integrity": "sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==",
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.3.tgz",
|
||||
"integrity": "sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
@@ -2515,6 +2507,15 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/capacitor-nodejs": {
|
||||
"version": "1.0.0-beta.9",
|
||||
"resolved": "https://github.com/hampoelz/capacitor-nodejs/releases/download/v1.0.0-beta.9/capacitor-nodejs.tgz",
|
||||
"integrity": "sha512-4EU/QBolfuyHiMtwd1nxZ4wsK243tGE4VttKvVBG+x1yQuK9EIlEf3lbRjFXfjrJMTZNCqaP6glmdfj9Zo7KVg==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@capacitor/core": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
@@ -3142,9 +3143,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/electron": {
|
||||
"version": "41.2.1",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-41.2.1.tgz",
|
||||
"integrity": "sha512-teeRThiYGTPKf/2yOW7zZA1bhb91KEQ4yLBPOg7GxpmnkLFLugKgQaAKOrCgdzwsXh/5mFIfmkm+4+wACJKwaA==",
|
||||
"version": "41.3.0",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-41.3.0.tgz",
|
||||
"integrity": "sha512-2Q5aeocmFdeheZGDUTrAvSR3t+n0c3d104AJWWEnt7syJU0tE4VdibMYaPtQ47QuXSoUf0/xSsfUUvu/uSXIfg==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
@@ -4487,27 +4488,27 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/jsdom": {
|
||||
"version": "29.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-29.0.1.tgz",
|
||||
"integrity": "sha512-z6JOK5gRO7aMybVq/y/MlIpKh8JIi68FBKMUtKkK2KH/wMSRlCxQ682d08LB9fYXplyY/UXG8P4XXTScmdjApg==",
|
||||
"version": "29.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-29.1.0.tgz",
|
||||
"integrity": "sha512-YNUc7fB9QuvSSQWfrH0xF+TyABkxUwx8sswgIDaCrw4Hol8BghdZDkITtZheRJeMtzWlnTfsM3bBBusRvpO1wg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@asamuzakjp/css-color": "^5.0.1",
|
||||
"@asamuzakjp/dom-selector": "^7.0.3",
|
||||
"@asamuzakjp/css-color": "^5.1.11",
|
||||
"@asamuzakjp/dom-selector": "^7.1.1",
|
||||
"@bramus/specificity": "^2.4.2",
|
||||
"@csstools/css-syntax-patches-for-csstree": "^1.1.1",
|
||||
"@csstools/css-syntax-patches-for-csstree": "^1.1.3",
|
||||
"@exodus/bytes": "^1.15.0",
|
||||
"css-tree": "^3.2.1",
|
||||
"data-urls": "^7.0.0",
|
||||
"decimal.js": "^10.6.0",
|
||||
"html-encoding-sniffer": "^6.0.0",
|
||||
"is-potential-custom-element-name": "^1.0.1",
|
||||
"lru-cache": "^11.2.7",
|
||||
"parse5": "^8.0.0",
|
||||
"lru-cache": "^11.3.5",
|
||||
"parse5": "^8.0.1",
|
||||
"saxes": "^6.0.0",
|
||||
"symbol-tree": "^3.2.4",
|
||||
"tough-cookie": "^6.0.1",
|
||||
"undici": "^7.24.5",
|
||||
"undici": "^7.25.0",
|
||||
"w3c-xmlserializer": "^5.0.0",
|
||||
"webidl-conversions": "^8.0.1",
|
||||
"whatwg-mimetype": "^5.0.0",
|
||||
@@ -4527,9 +4528,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jsdom/node_modules/lru-cache": {
|
||||
"version": "11.2.7",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz",
|
||||
"integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==",
|
||||
"version": "11.3.5",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz",
|
||||
"integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==",
|
||||
"license": "BlueOak-1.0.0",
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
@@ -5320,17 +5321,29 @@
|
||||
"license": "BlueOak-1.0.0"
|
||||
},
|
||||
"node_modules/parse5": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz",
|
||||
"integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==",
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz",
|
||||
"integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"entities": "^6.0.0"
|
||||
"entities": "^8.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/inikulin/parse5?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/parse5/node_modules/entities": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz",
|
||||
"integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==",
|
||||
"license": "BSD-2-Clause",
|
||||
"engines": {
|
||||
"node": ">=20.19.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
@@ -6447,9 +6460,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/undici": {
|
||||
"version": "7.24.5",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-7.24.5.tgz",
|
||||
"integrity": "sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==",
|
||||
"version": "7.25.0",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-7.25.0.tgz",
|
||||
"integrity": "sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=20.18.1"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Materialious",
|
||||
"version": "1.16.25",
|
||||
"version": "1.16.26",
|
||||
"description": "Modern material design for YouTube and Invidious.",
|
||||
"author": {
|
||||
"name": "Ward Pearce",
|
||||
@@ -31,12 +31,12 @@
|
||||
"electron-unhandled": "^4.0.1",
|
||||
"electron-updater": "^6.8.3",
|
||||
"electron-window-state": "^5.0.3",
|
||||
"jsdom": "^29.0.1",
|
||||
"jsdom": "^29.1.0",
|
||||
"jsonfile": "^6.2.1",
|
||||
"youtubei.js": "^17.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron": "^41.2.1",
|
||||
"electron": "^41.3.0",
|
||||
"electron-builder": "^26.0.12",
|
||||
"electron-rebuild": "^3.2.9",
|
||||
"typescript": "^6.0.3"
|
||||
@@ -45,4 +45,4 @@
|
||||
"capacitor",
|
||||
"electron"
|
||||
]
|
||||
}
|
||||
}
|
||||
Generated
+13
-13
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "materialious",
|
||||
"version": "1.16.25",
|
||||
"version": "1.16.26",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "materialious",
|
||||
"version": "1.16.25",
|
||||
"version": "1.16.26",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@capacitor-community/electron": "^5.0.1",
|
||||
@@ -31,7 +31,7 @@
|
||||
"comlink": "^4.4.2",
|
||||
"cookie-signature": "^1.2.2",
|
||||
"dayjs": "^1.11.19",
|
||||
"dexie": "^4.3.0",
|
||||
"dexie": "^4.4.2",
|
||||
"fuse.js": "^7.0.0",
|
||||
"googlevideo": "^4.0.4",
|
||||
"he": "^1.2.0",
|
||||
@@ -40,7 +40,7 @@
|
||||
"iso-3166": "^4.4.0",
|
||||
"iso-639-1": "^3.1.5",
|
||||
"jsdom": "^28.1.0",
|
||||
"libsodium-wrappers-sumo": "^0.8.2",
|
||||
"libsodium-wrappers-sumo": "^0.8.4",
|
||||
"mariadb": "^3.5.2",
|
||||
"material-dynamic-colors": "^1.1.1",
|
||||
"media-captions": "^0.0.18",
|
||||
@@ -9152,9 +9152,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/dexie": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/dexie/-/dexie-4.3.0.tgz",
|
||||
"integrity": "sha512-5EeoQpJvMKHe6zWt/FSIIuRa3CWlZeIl6zKXt+Lz7BU6RoRRLgX9dZEynRfXrkLcldKYCBiz7xekTEylnie1Ug==",
|
||||
"version": "4.4.2",
|
||||
"resolved": "https://registry.npmjs.org/dexie/-/dexie-4.4.2.tgz",
|
||||
"integrity": "sha512-zMtV8q79EFE5U8FKZvt0Y/77PCU/Hr/RDxv1EDeo228L+m/HTbeN2AjoQm674rhQCX8n3ljK87lajt7UQuZfvw==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/dezalgo": {
|
||||
@@ -10302,9 +10302,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/follow-redirects": {
|
||||
"version": "1.15.11",
|
||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
|
||||
"integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
|
||||
"version": "1.16.0",
|
||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
|
||||
"integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
@@ -12779,9 +12779,9 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/libsodium-wrappers-sumo": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.8.2.tgz",
|
||||
"integrity": "sha512-wd1xAY++Kr6VMikSaa4EPRAHJmFvNlGWiiwU3Jh3GR1zRYF3/I3vy/wYsr4k3LVsNzwb9sqfEQ4LdVQ6zEebyQ==",
|
||||
"version": "0.8.4",
|
||||
"resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.8.4.tgz",
|
||||
"integrity": "sha512-ql7hcgulKZ3ekfa2DGAogcCKsWU0diA/0nArz1CFzh93WQdb46/Kj18ka/Hifq6uA3Ush34Pc6vU/6HXeRwUkg==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"libsodium-sumo": "^0.8.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "materialious",
|
||||
"version": "1.16.25",
|
||||
"version": "1.16.26",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "npm run patch:github && vite dev",
|
||||
@@ -70,7 +70,7 @@
|
||||
"comlink": "^4.4.2",
|
||||
"cookie-signature": "^1.2.2",
|
||||
"dayjs": "^1.11.19",
|
||||
"dexie": "^4.3.0",
|
||||
"dexie": "^4.4.2",
|
||||
"fuse.js": "^7.0.0",
|
||||
"googlevideo": "^4.0.4",
|
||||
"he": "^1.2.0",
|
||||
@@ -79,7 +79,7 @@
|
||||
"iso-3166": "^4.4.0",
|
||||
"iso-639-1": "^3.1.5",
|
||||
"jsdom": "^28.1.0",
|
||||
"libsodium-wrappers-sumo": "^0.8.2",
|
||||
"libsodium-wrappers-sumo": "^0.8.4",
|
||||
"mariadb": "^3.5.2",
|
||||
"material-dynamic-colors": "^1.1.1",
|
||||
"media-captions": "^0.0.18",
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
} from '../../store';
|
||||
import { isOwnBackend } from '$lib/shared';
|
||||
import ComboBox from '../ComboBox.svelte';
|
||||
import { corsProxyUrl } from '$lib/fetchProxy';
|
||||
|
||||
let invidiousInstance = $state(get(invidiousInstanceStore));
|
||||
|
||||
@@ -59,9 +60,9 @@
|
||||
interfaceAllowInsecureRequests.subscribe(async (isAllowed) => {
|
||||
if (Capacitor.getPlatform() === 'android') {
|
||||
if (isAllowed) {
|
||||
await fetch('http://materialious__allow-insecure-requests');
|
||||
await fetch(corsProxyUrl + 'allow-insecure-requests');
|
||||
} else {
|
||||
await fetch('http://materialious__deny-insecure-requests');
|
||||
await fetch(corsProxyUrl + 'deny-insecure-requests');
|
||||
}
|
||||
} else if (Capacitor.getPlatform() === 'electron') {
|
||||
await window.electronAPI.setAllowInsecureSSL(isAllowed);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script lang="ts">
|
||||
import { getBestThumbnail } from '$lib/images';
|
||||
import { getBestThumbnail, imageHandleCors } from '$lib/images';
|
||||
import { resolve } from '$app/paths';
|
||||
import { letterCase } from '$lib/letterCasing';
|
||||
import { _ } from '$lib/i18n';
|
||||
@@ -23,7 +23,7 @@
|
||||
thumbnailSrc = playlist.playlistThumbnail;
|
||||
}
|
||||
|
||||
const thumbnail = new Avatar({ src: thumbnailSrc });
|
||||
const thumbnail = new Avatar({ src: imageHandleCors(thumbnailSrc) });
|
||||
</script>
|
||||
|
||||
<a href={playlistLink} style="width: 100%; overflow: hidden;min-height:100px;" class="wave">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<script lang="ts">
|
||||
import { resolve } from '$app/paths';
|
||||
import { getBestThumbnail } from '$lib/images';
|
||||
import { getBestThumbnail, imageHandleCors } from '$lib/images';
|
||||
import { letterCase } from '$lib/letterCasing';
|
||||
import { cleanNumber, videoLength } from '$lib/numbers';
|
||||
import { onDestroy, onMount } from 'svelte';
|
||||
@@ -78,7 +78,7 @@
|
||||
let thumbnailElement: HTMLElement | undefined = $state();
|
||||
|
||||
const thumbnail = new Avatar({
|
||||
src: () => thumbnailSrc,
|
||||
src: () => imageHandleCors(thumbnailSrc),
|
||||
onLoadingStatusChange: () => {
|
||||
if (thumbnailImageElement) thumbnailHeight = thumbnailImageElement.naturalHeight;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import sodium from 'libsodium-wrappers-sumo';
|
||||
import { isOwnBackend } from './shared';
|
||||
|
||||
export const originalFetch = window.fetch;
|
||||
const corsProxyUrl =
|
||||
export const corsProxyUrl =
|
||||
Capacitor.getPlatform() === 'android'
|
||||
? 'http://localhost:3000/'
|
||||
: `${location.origin}/api/proxy/`;
|
||||
|
||||
@@ -134,7 +134,15 @@
|
||||
"darkMode": "Dunkler Modus",
|
||||
"lightMode": "Heller Modus",
|
||||
"AmoledTheme": "Amoled-Thema",
|
||||
"color": "Farbe"
|
||||
"color": "Farbe",
|
||||
"advanced": "Erweitertes Theming",
|
||||
"borderRadius": {
|
||||
"none": "Keine",
|
||||
"modern": "Modern",
|
||||
"rounded": "Abgerundet",
|
||||
"slight": "Leicht",
|
||||
"borderRadius": "Eckenabrundung"
|
||||
}
|
||||
},
|
||||
"searchSuggestions": "Suchvorschläge",
|
||||
"previewVideoOnHover": "Video-Vorschau beim Hovern",
|
||||
@@ -242,7 +250,8 @@
|
||||
"exportSub": "Abonnements exportieren",
|
||||
"exportToClipboard": "In die Zwischenablage exportieren",
|
||||
"exportToFile": "In eine Datei exportieren",
|
||||
"importFromFile": "Von einer Datei importieren"
|
||||
"importFromFile": "Von einer Datei importieren",
|
||||
"exportToShareUrl": "Exportieren um URL zu teilen"
|
||||
}
|
||||
},
|
||||
"subscribe": "Abonnieren",
|
||||
|
||||
@@ -70,7 +70,15 @@
|
||||
"darkMode": "Dunkle Modus",
|
||||
"lightMode": "Helle Modus",
|
||||
"AmoledTheme": "Amoled-Thema",
|
||||
"color": "Farb"
|
||||
"color": "Farb",
|
||||
"advanced": "Erwiiterts Theming",
|
||||
"borderRadius": {
|
||||
"none": "Keini",
|
||||
"slight": "Liecht",
|
||||
"modern": "Modern",
|
||||
"rounded": "Abgrundet",
|
||||
"borderRadius": "Eggeabrundig"
|
||||
}
|
||||
},
|
||||
"searchSuggestions": "Suechvorschläg",
|
||||
"previewVideoOnHover": "Video-Vorschau bim Hovere",
|
||||
@@ -139,7 +147,8 @@
|
||||
"exportSub": "Abonnements exportiere",
|
||||
"exportToClipboard": "I d Zwüscheablaag exportiere",
|
||||
"exportToFile": "In e Datei exportiere",
|
||||
"importFromFile": "Vonere Datei importiere"
|
||||
"importFromFile": "Vonere Datei importiere",
|
||||
"exportToShareUrl": "Exportiere zum d URL teile"
|
||||
}
|
||||
},
|
||||
"videos": "Videos",
|
||||
|
||||
@@ -69,7 +69,15 @@
|
||||
"darkMode": "Sötét mód",
|
||||
"lightMode": "Világos mód",
|
||||
"AmoledTheme": "Amoled téma",
|
||||
"color": "Szín"
|
||||
"color": "Szín",
|
||||
"advanced": "Speciális témázás",
|
||||
"borderRadius": {
|
||||
"none": "Nincs",
|
||||
"slight": "Enyhe",
|
||||
"modern": "Modern",
|
||||
"rounded": "Lekerekített",
|
||||
"borderRadius": "Szegélysugár"
|
||||
}
|
||||
},
|
||||
"searchSuggestions": "Keresési javaslatok",
|
||||
"previewVideoOnHover": "Videó előnézete az egérmutatóval",
|
||||
@@ -160,8 +168,10 @@
|
||||
"exportSub": "Feliratkozások exportálása",
|
||||
"exportToClipboard": "Vágólapra másolás",
|
||||
"exportToFile": "Mentés fájlba",
|
||||
"importFromFile": "Importálás fájlból"
|
||||
}
|
||||
"importFromFile": "Importálás fájlból",
|
||||
"exportToShareUrl": "Exportálás megosztási webcímre"
|
||||
},
|
||||
"preserveTranslation": "Eredeti fordítás használata"
|
||||
},
|
||||
"enabled": "Engedélyezve",
|
||||
"donate": "Adományozás",
|
||||
|
||||
@@ -138,7 +138,15 @@
|
||||
"darkMode": "ダークモード",
|
||||
"lightMode": "ライトモード",
|
||||
"color": "色",
|
||||
"AmoledTheme": "Amoled テーマ"
|
||||
"AmoledTheme": "Amoled テーマ",
|
||||
"advanced": "その他のテーマ設定",
|
||||
"borderRadius": {
|
||||
"none": "なし",
|
||||
"borderRadius": "角の丸み",
|
||||
"slight": "小",
|
||||
"modern": "中",
|
||||
"rounded": "大"
|
||||
}
|
||||
},
|
||||
"searchSuggestions": "検索候補を表示",
|
||||
"previewVideoOnHover": "マウスを乗せるとプレビュー",
|
||||
@@ -246,8 +254,10 @@
|
||||
"exportSub": "登録チャンネルをエクスポート",
|
||||
"exportToClipboard": "クリップボードへエクスポート",
|
||||
"exportToFile": "ファイルへエクスポート",
|
||||
"importFromFile": "ファイルからインポート"
|
||||
}
|
||||
"importFromFile": "ファイルからインポート",
|
||||
"exportToShareUrl": "共有URLにエクスポート"
|
||||
},
|
||||
"preserveTranslation": "オリジナルの翻訳を使用する"
|
||||
},
|
||||
"subscribe": "チャンネル登録",
|
||||
"invidiousBlockWarning": "Invidious は、現在Googleにブロックされています。このインスタンスで動画が読み込めない場合、{android} 版または {desktop} 版の Materialious でこのインスタンスを使用し、動画取得を直接行う代替接続を使ってください。",
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
"userJoined": "Lietotājs pievienojās jūsu skatīšanās ballītei.",
|
||||
"userLeft": "Lietotājs pameta jūsu skatīšanās ballīti."
|
||||
},
|
||||
"invidiousLogin": "Lūdzu, autorizējieties ar savu Invidious kontu",
|
||||
"invidiousLogin": "Lūdzu, autorizējieties ar savu Invidious kontu.",
|
||||
"noResult": "Bez rezultātiem",
|
||||
"letterCase": "Virsrakstu burtu reģistrs",
|
||||
"version": "Versija",
|
||||
|
||||
@@ -2,6 +2,8 @@ import { get } from 'svelte/store';
|
||||
import type { Image } from './api/model';
|
||||
import { invidiousInstanceStore } from './store';
|
||||
import { isYTBackend } from './misc';
|
||||
import { Capacitor } from '@capacitor/core';
|
||||
import { corsProxyUrl } from './fetchProxy';
|
||||
|
||||
export class ImageCache {
|
||||
private cache = new Map<string, HTMLImageElement>();
|
||||
@@ -67,3 +69,11 @@ export function proxyGoogleImage(source: string): string {
|
||||
|
||||
return `${get(invidiousInstanceStore)}/ggpht${path}`;
|
||||
}
|
||||
|
||||
export function imageHandleCors(source: string): string {
|
||||
if (Capacitor.getPlatform() === 'android') {
|
||||
return corsProxyUrl + source;
|
||||
}
|
||||
|
||||
return source;
|
||||
}
|
||||
|
||||
@@ -1,21 +1,8 @@
|
||||
import { invidiousInstanceStore } from '$lib/store';
|
||||
import { get } from 'svelte/store';
|
||||
|
||||
export async function manifestDomainInclusion(manifestUrl: string): Promise<string> {
|
||||
const respIvg = await fetch(manifestUrl, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
// Required for our custom android backend.
|
||||
__redirect: 'manual'
|
||||
},
|
||||
referrerPolicy: 'no-referrer'
|
||||
});
|
||||
|
||||
if (!respIvg.ok) {
|
||||
throw Error('Unable to make request to Invidious');
|
||||
}
|
||||
|
||||
// If location isn't present, then use base manifest URL.
|
||||
const companionUrl = respIvg.headers.get('location') ?? manifestUrl;
|
||||
|
||||
const respCompanion = await fetch(companionUrl, {
|
||||
const respCompanion = await fetch(manifestUrl, {
|
||||
method: 'GET'
|
||||
});
|
||||
|
||||
@@ -35,10 +22,7 @@ export async function manifestDomainInclusion(manifestUrl: string): Promise<stri
|
||||
const baseUrlValue = baseUrlElement.textContent;
|
||||
|
||||
if (baseUrlValue && (baseUrlValue.startsWith('/') || !baseUrlValue.includes('://'))) {
|
||||
const companionUrlObj = new URL(companionUrl);
|
||||
const baseDomain = `${companionUrlObj.protocol}//${companionUrlObj.host}`;
|
||||
const resolvedUrl = new URL(baseUrlValue, baseDomain).href;
|
||||
baseUrlElement.textContent = resolvedUrl;
|
||||
baseUrlElement.textContent = new URL(baseUrlValue, get(invidiousInstanceStore) ?? '').href;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { isOwnBackend } from '$lib/shared';
|
||||
import { env } from '$env/dynamic/public';
|
||||
import { env as privateEnv } from '$env/dynamic/private';
|
||||
import { Agent } from 'undici';
|
||||
import fs from 'fs';
|
||||
import tls from 'tls';
|
||||
|
||||
import { error } from '@sveltejs/kit';
|
||||
import { parse as tldParse } from 'tldts';
|
||||
@@ -59,6 +62,19 @@ for (const dynamicDomain of dynamicAllowDomainsEnvVars) {
|
||||
}
|
||||
}
|
||||
|
||||
let dispatcher: Agent;
|
||||
|
||||
const certPath = privateEnv.PROXY_TRUST_CA;
|
||||
if (certPath && fs.existsSync(certPath)) {
|
||||
dispatcher = new Agent({
|
||||
connect: {
|
||||
ca: [fs.readFileSync(certPath), ...tls.rootCertificates]
|
||||
}
|
||||
});
|
||||
} else {
|
||||
dispatcher = new Agent();
|
||||
}
|
||||
|
||||
async function proxyRequest(
|
||||
request: Request,
|
||||
urlToProxy: string,
|
||||
@@ -145,7 +161,9 @@ async function proxyRequest(
|
||||
response = await fetch(urlToProxyObj.toString(), {
|
||||
...requestOptions,
|
||||
body,
|
||||
signal: AbortSignal.timeout(10000)
|
||||
signal: AbortSignal.timeout(10000),
|
||||
// @ts-expect-error Node-specific option
|
||||
dispatcher
|
||||
});
|
||||
} catch (err) {
|
||||
errorMsg = (err as any).toString();
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -169,11 +169,11 @@ const server = http.createServer((req, res) => {
|
||||
let targetUrl = req.url.slice(1);
|
||||
|
||||
// Quick way to quickly send commands between app and nodejs backend.
|
||||
if (targetUrl === 'http://materialious__allow-insecure-requests') {
|
||||
if (targetUrl === 'allow-insecure-requests') {
|
||||
rejectUnauthorized = false;
|
||||
res.writeHead(200);
|
||||
return res.end();
|
||||
} else if (targetUrl === 'http://materialious__deny-insecure-requests') {
|
||||
} else if (targetUrl === 'deny-insecure-requests') {
|
||||
rejectUnauthorized = true;
|
||||
res.writeHead(200);
|
||||
return res.end();
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ import os
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
LATEST_VERSION = "1.16.25"
|
||||
LATEST_VERSION = "1.16.26"
|
||||
RELEASE_DATE = datetime.now().strftime("%Y-%-m-%d") # Format: YYYY-M-D
|
||||
|
||||
WORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "materialious")
|
||||
|
||||
Reference in New Issue
Block a user