Merge pull request #1586 from Materialious/update/1.16.21

Update/1.16.21
This commit is contained in:
Ward
2026-03-17 11:40:16 +13:00
committed by GitHub
20 changed files with 353 additions and 192 deletions
@@ -1 +1 @@
Modernes Material-Design für Invidious
Modernes Material-Design für YouTube und Invidious.
+2 -2
View File
@@ -7,8 +7,8 @@ android {
applicationId "us.materialio.app"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 237
versionName "1.16.20"
versionCode 238
versionName "1.16.21"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
@@ -79,7 +79,11 @@
<release version="1.16.20" date="2026-3-14">
<release version="1.16.21" date="2026-3-17">
<url>https://github.com/Materialious/Materialious/releases/tag/1.16.21</url>
</release>
<release version="1.16.20" date="2026-3-14">
<url>https://github.com/Materialious/Materialious/releases/tag/1.16.20</url>
</release>
<release version="1.16.19" date="2026-3-13">
+121 -115
View File
@@ -1,78 +1,79 @@
{
"name": "Materialious",
"version": "1.16.19",
"version": "1.16.21",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "Materialious",
"version": "1.16.19",
"version": "1.16.21",
"license": "MIT",
"dependencies": {
"@capacitor-community/electron": "^5.0.0",
"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": "^28.0.0",
"jsdom": "^29.0.0",
"jsonfile": "^6.2.0",
"youtubei.js": "^16.0.1"
},
"devDependencies": {
"electron": "^40.8.0",
"electron": "^41.0.2",
"electron-builder": "^26.0.12",
"electron-rebuild": "^3.2.9",
"typescript": "^5.9.3"
}
},
"node_modules/@acemir/cssom": {
"version": "0.9.31",
"resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.31.tgz",
"integrity": "sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==",
"license": "MIT"
},
"node_modules/@asamuzakjp/css-color": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.2.tgz",
"integrity": "sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==",
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-5.0.1.tgz",
"integrity": "sha512-2SZFvqMyvboVV1d15lMf7XiI3m7SDqXUuKaTymJYLN6dSGadqp+fVojqJlVoMlbZnlTmu3S0TLwLTJpvBMO1Aw==",
"license": "MIT",
"dependencies": {
"@csstools/css-calc": "^3.0.0",
"@csstools/css-color-parser": "^4.0.1",
"@csstools/css-calc": "^3.1.1",
"@csstools/css-color-parser": "^4.0.2",
"@csstools/css-parser-algorithms": "^4.0.0",
"@csstools/css-tokenizer": "^4.0.0",
"lru-cache": "^11.2.5"
"lru-cache": "^11.2.6"
},
"engines": {
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
}
},
"node_modules/@asamuzakjp/css-color/node_modules/lru-cache": {
"version": "11.2.6",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz",
"integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==",
"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": "6.8.1",
"resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.8.1.tgz",
"integrity": "sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==",
"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==",
"license": "MIT",
"dependencies": {
"@asamuzakjp/nwsapi": "^2.3.9",
"bidi-js": "^1.0.3",
"css-tree": "^3.1.0",
"css-tree": "^3.2.1",
"is-potential-custom-element-name": "^1.0.1",
"lru-cache": "^11.2.6"
"lru-cache": "^11.2.7"
},
"engines": {
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
}
},
"node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": {
"version": "11.2.6",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz",
"integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==",
"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"
@@ -197,9 +198,9 @@
}
},
"node_modules/@capacitor/cli/node_modules/tar": {
"version": "7.5.7",
"resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz",
"integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==",
"version": "7.5.11",
"resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz",
"integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==",
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/fs-minipass": "^4.0.0",
@@ -231,9 +232,9 @@
}
},
"node_modules/@csstools/color-helpers": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.1.tgz",
"integrity": "sha512-NmXRccUJMk2AWA5A7e5a//3bCIMyOu2hAtdRYrhPPHjDxINuCwX1w6rnIZ4xjLcp0ayv6h8Pc3X0eJUGiAAXHQ==",
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.2.tgz",
"integrity": "sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==",
"funding": [
{
"type": "github",
@@ -273,9 +274,9 @@
}
},
"node_modules/@csstools/css-color-parser": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.0.1.tgz",
"integrity": "sha512-vYwO15eRBEkeF6xjAno/KQ61HacNhfQuuU/eGwH67DplL0zD5ZixUa563phQvUelA07yDczIXdtmYojCphKJcw==",
"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==",
"funding": [
{
"type": "github",
@@ -288,8 +289,8 @@
],
"license": "MIT",
"dependencies": {
"@csstools/color-helpers": "^6.0.1",
"@csstools/css-calc": "^3.0.0"
"@csstools/color-helpers": "^6.0.2",
"@csstools/css-calc": "^3.1.1"
},
"engines": {
"node": ">=20.19.0"
@@ -322,9 +323,9 @@
}
},
"node_modules/@csstools/css-syntax-patches-for-csstree": {
"version": "1.0.27",
"resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.27.tgz",
"integrity": "sha512-sxP33Jwg1bviSUXAV43cVYdmjt2TLnLXNqCWl9xmxHawWVjGz/kEbdkr7F9pxJNBN2Mh+dq0crgItbW6tQvyow==",
"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==",
"funding": [
{
"type": "github",
@@ -335,7 +336,15 @@
"url": "https://opencollective.com/csstools"
}
],
"license": "MIT-0"
"license": "MIT-0",
"peerDependencies": {
"css-tree": "^3.2.1"
},
"peerDependenciesMeta": {
"css-tree": {
"optional": true
}
}
},
"node_modules/@csstools/css-tokenizer": {
"version": "4.0.0",
@@ -926,9 +935,9 @@
}
},
"node_modules/@electron/rebuild/node_modules/tar": {
"version": "7.5.9",
"resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz",
"integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==",
"version": "7.5.11",
"resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz",
"integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
@@ -1052,9 +1061,9 @@
}
},
"node_modules/@exodus/bytes": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.14.1.tgz",
"integrity": "sha512-OhkBFWI6GcRMUroChZiopRiSp2iAMvEBK47NhJooDqz1RERO4QuZIZnjP63TXX8GAiLABkYmX+fuQsdJ1dd2QQ==",
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.0.tgz",
"integrity": "sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==",
"license": "MIT",
"engines": {
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
@@ -1670,6 +1679,7 @@
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
"integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 14"
@@ -1964,9 +1974,9 @@
}
},
"node_modules/app-builder-lib/node_modules/tar": {
"version": "7.5.9",
"resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz",
"integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==",
"version": "7.5.11",
"resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz",
"integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
@@ -2469,6 +2479,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",
@@ -2754,42 +2773,18 @@
}
},
"node_modules/css-tree": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
"integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==",
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
"integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==",
"license": "MIT",
"dependencies": {
"mdn-data": "2.12.2",
"source-map-js": "^1.0.1"
"mdn-data": "2.27.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
}
},
"node_modules/cssstyle": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-6.0.1.tgz",
"integrity": "sha512-IoJs7La+oFp/AB033wBStxNOJt4+9hHMxsXUPANcoXL2b3W4DZKghlJ2cI/eyeRZIQ9ysvYEorVhjrcYctWbog==",
"license": "MIT",
"dependencies": {
"@asamuzakjp/css-color": "^4.1.2",
"@csstools/css-syntax-patches-for-csstree": "^1.0.26",
"css-tree": "^3.1.0",
"lru-cache": "^11.2.5"
},
"engines": {
"node": ">=20"
}
},
"node_modules/cssstyle/node_modules/lru-cache": {
"version": "11.2.6",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz",
"integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==",
"license": "BlueOak-1.0.0",
"engines": {
"node": "20 || >=22"
}
},
"node_modules/data-urls": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz",
@@ -3120,9 +3115,9 @@
}
},
"node_modules/electron": {
"version": "40.8.0",
"resolved": "https://registry.npmjs.org/electron/-/electron-40.8.0.tgz",
"integrity": "sha512-WoPq0Nr9Yx3g7T6VnJXdwa/rr2+VRyH3a+K+ezfMKBlf6WjxE/LmhMQabKbb6yjm9RbZhJBRcYyoLph421O2mQ==",
"version": "41.0.2",
"resolved": "https://registry.npmjs.org/electron/-/electron-41.0.2.tgz",
"integrity": "sha512-raotm/aO8kOs1jD8SI8ssJ7EKciQOY295AOOprl1TxW7B0At8m5Ae7qNU1xdMxofiHMR8cNEGi9PKD3U+yT/mA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -4145,6 +4140,7 @@
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
"integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
"license": "MIT",
"dependencies": {
"agent-base": "^7.1.0",
@@ -4172,6 +4168,7 @@
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
"integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"dev": true,
"license": "MIT",
"dependencies": {
"agent-base": "^7.1.2",
@@ -4463,35 +4460,35 @@
"license": "MIT"
},
"node_modules/jsdom": {
"version": "28.1.0",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-28.1.0.tgz",
"integrity": "sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==",
"version": "29.0.0",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-29.0.0.tgz",
"integrity": "sha512-9FshNB6OepopZ08unmmGpsF7/qCjxGPbo3NbgfJAnPeHXnsODE9WWffXZtRFRFe0ntzaAOcSKNJFz8wiyvF1jQ==",
"license": "MIT",
"dependencies": {
"@acemir/cssom": "^0.9.31",
"@asamuzakjp/dom-selector": "^6.8.1",
"@asamuzakjp/css-color": "^5.0.1",
"@asamuzakjp/dom-selector": "^7.0.2",
"@bramus/specificity": "^2.4.2",
"@exodus/bytes": "^1.11.0",
"cssstyle": "^6.0.1",
"@csstools/css-syntax-patches-for-csstree": "^1.1.1",
"@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",
"http-proxy-agent": "^7.0.2",
"https-proxy-agent": "^7.0.6",
"is-potential-custom-element-name": "^1.0.1",
"lru-cache": "^11.2.7",
"parse5": "^8.0.0",
"saxes": "^6.0.0",
"symbol-tree": "^3.2.4",
"tough-cookie": "^6.0.0",
"undici": "^7.21.0",
"tough-cookie": "^6.0.1",
"undici": "^7.24.3",
"w3c-xmlserializer": "^5.0.0",
"webidl-conversions": "^8.0.1",
"whatwg-mimetype": "^5.0.0",
"whatwg-url": "^16.0.0",
"whatwg-url": "^16.0.1",
"xml-name-validator": "^5.0.0"
},
"engines": {
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
"node": "^20.19.0 || ^22.13.0 || >=24.0.0"
},
"peerDependencies": {
"canvas": "^3.0.0"
@@ -4502,6 +4499,15 @@
}
}
},
"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==",
"license": "BlueOak-1.0.0",
"engines": {
"node": "20 || >=22"
}
},
"node_modules/json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
@@ -4768,9 +4774,9 @@
}
},
"node_modules/mdn-data": {
"version": "2.12.2",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz",
"integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==",
"version": "2.27.1",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
"integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
"license": "CC0-1.0"
},
"node_modules/meriyah": {
@@ -6301,21 +6307,21 @@
}
},
"node_modules/tldts": {
"version": "7.0.14",
"resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.14.tgz",
"integrity": "sha512-lMNHE4aSI3LlkMUMicTmAG3tkkitjOQGDTFboPJwAg2kJXKP1ryWEyqujktg5qhrFZOkk5YFzgkxg3jErE+i5w==",
"version": "7.0.26",
"resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.26.tgz",
"integrity": "sha512-WiGwQjr0qYdNNG8KpMKlSvpxz652lqa3Rd+/hSaDcY4Uo6SKWZq2LAF+hsAhUewTtYhXlorBKgNF3Kk8hnjGoQ==",
"license": "MIT",
"dependencies": {
"tldts-core": "^7.0.14"
"tldts-core": "^7.0.26"
},
"bin": {
"tldts": "bin/cli.js"
}
},
"node_modules/tldts-core": {
"version": "7.0.14",
"resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.14.tgz",
"integrity": "sha512-viZGNK6+NdluOJWwTO9olaugx0bkKhscIdriQQ+lNNhwitIKvb+SvhbYgnCz6j9p7dX3cJntt4agQAKMXLjJ5g==",
"version": "7.0.26",
"resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.26.tgz",
"integrity": "sha512-5WJ2SqFsv4G2Dwi7ZFVRnz6b2H1od39QME1lc2y5Ew3eWiZMAeqOAfWpRP9jHvhUl881406QtZTODvjttJs+ew==",
"license": "MIT"
},
"node_modules/tmp": {
@@ -6339,9 +6345,9 @@
}
},
"node_modules/tough-cookie": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz",
"integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==",
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz",
"integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==",
"license": "BSD-3-Clause",
"dependencies": {
"tldts": "^7.0.5"
@@ -6414,9 +6420,9 @@
}
},
"node_modules/undici": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.24.1.tgz",
"integrity": "sha512-5xoBibbmnjlcR3jdqtY2Lnx7WbrD/tHlT01TmvqZUFVc9Q1w4+j5hbnapTqbcXITMH1ovjq/W7BkqBilHiVAaA==",
"version": "7.24.4",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.24.4.tgz",
"integrity": "sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==",
"license": "MIT",
"engines": {
"node": ">=20.18.1"
@@ -6551,9 +6557,9 @@
}
},
"node_modules/whatwg-url": {
"version": "16.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.0.tgz",
"integrity": "sha512-9CcxtEKsf53UFwkSUZjG+9vydAsFO4lFHBpJUtjBcoJOCJpKnSJNwCw813zrYJHpCJ7sgfbtOe0V5Ku7Pa1XMQ==",
"version": "16.0.1",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.1.tgz",
"integrity": "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==",
"license": "MIT",
"dependencies": {
"@exodus/bytes": "^1.11.0",
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "Materialious",
"version": "1.16.20",
"version": "1.16.21",
"description": "Modern material design for YouTube and Invidious.",
"author": {
"name": "Ward Pearce",
@@ -30,12 +30,12 @@
"electron-unhandled": "^4.0.1",
"electron-updater": "^6.8.3",
"electron-window-state": "^5.0.3",
"jsdom": "^28.0.0",
"jsdom": "^29.0.0",
"jsonfile": "^6.2.0",
"youtubei.js": "^16.0.1"
},
"devDependencies": {
"electron": "^40.8.0",
"electron": "^41.0.2",
"electron-builder": "^26.0.12",
"electron-rebuild": "^3.2.9",
"typescript": "^5.9.3"
+34 -35
View File
@@ -1,12 +1,12 @@
{
"name": "materialious",
"version": "1.16.20",
"version": "1.16.21",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "materialious",
"version": "1.16.20",
"version": "1.16.21",
"hasInstallScript": true,
"dependencies": {
"@capacitor-community/electron": "^5.0.1",
@@ -23,7 +23,7 @@
"@macfja/svelte-persistent-store": "^2.4.2",
"altcha": "^2.3.0",
"altcha-lib": "^1.4.1",
"beercss": "^4.0.17",
"beercss": "^4.0.19",
"bgutils-js": "^3.2.0",
"buffer": "^6.0.3",
"capacitor-music-controls-plugin": "^6.1.0",
@@ -41,7 +41,7 @@
"iso-639-1": "^3.1.5",
"jsdom": "^28.1.0",
"libsodium-wrappers-sumo": "^0.8.2",
"mariadb": "^3.5.1",
"mariadb": "^3.5.2",
"material-dynamic-colors": "^1.1.1",
"media-captions": "^0.0.18",
"melt": "^0.44.0",
@@ -50,7 +50,7 @@
"papaparse": "^5.5.3",
"pg": "^8.20.0",
"pg-hstore": "^2.3.4",
"safe-regex2": "^5.0.0",
"safe-regex2": "^5.1.0",
"sequelize": "^6.37.8",
"shaka-player": "^4.16.14",
"sponsorblock-api": "^0.2.4",
@@ -59,7 +59,7 @@
"svelte-infinite-loading": "^1.4.0",
"tldts": "^7.0.24",
"trystero": "^0.22.0",
"youtubei.js": "^16.0.1",
"youtubei.js": "^17.0.1",
"zod": "^4.3.6"
},
"devDependencies": {
@@ -86,7 +86,7 @@
"patch-package": "^8.0.1",
"prettier": "^3.6.2",
"prettier-plugin-svelte": "^3.5.0",
"svelte": "^5.53.6",
"svelte": "^5.53.12",
"svelte-check": "^4.4.4",
"tslib": "^2.7.0",
"typescript": "^5.9.3",
@@ -6009,6 +6009,12 @@
"@types/node": "*"
}
},
"node_modules/@types/geojson": {
"version": "7946.0.16",
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz",
"integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==",
"license": "MIT"
},
"node_modules/@types/he": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/@types/he/-/he-1.2.3.tgz",
@@ -7554,9 +7560,9 @@
}
},
"node_modules/beercss": {
"version": "4.0.17",
"resolved": "https://registry.npmjs.org/beercss/-/beercss-4.0.17.tgz",
"integrity": "sha512-8MMpSZojhYzjy94DGLnkq+FFdnEGLifp183qDl7fVo9rPbXy1T5dnFVvDspd9Xl4oTeqg78rc+4/qIF4aXArtQ==",
"version": "4.0.19",
"resolved": "https://registry.npmjs.org/beercss/-/beercss-4.0.19.tgz",
"integrity": "sha512-aFz2PcIrf4bLGvTA8zIMSJVTa1HAjeQ/6lNxBG+0CB1QdZbT6jYv0jtq4O8hckVhY2U7wiHGOFeqegzo4IraDA==",
"license": "MIT",
"dependencies": {
"material-dynamic-colors": "^1.1.4"
@@ -13059,29 +13065,19 @@
}
},
"node_modules/mariadb": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/mariadb/-/mariadb-3.5.1.tgz",
"integrity": "sha512-ObKf/e7jU8pmwa5wTs1UwhLMrQYRBDwXPndej2Dv/rvbqsokJYlymubsNtpakVfjI+hd0bG3U6tiuVunDYoLtA==",
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/mariadb/-/mariadb-3.5.2.tgz",
"integrity": "sha512-9rztrI4nouxAY/82a+RlzzZ5ie2vxu2eYclkBvTy1ATXH1B9cnvZ0O71Pzsy/mlfDb5P3HhOg0JzQKkDRhctyA==",
"license": "LGPL-2.1-or-later",
"dependencies": {
"@types/geojson": "^7946.0.16",
"@types/node": ">=18",
"denque": "^2.1.0",
"iconv-lite": "^0.7.2",
"lru-cache": "^10.4.3"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"@types/geojson": ">=7946.0.0",
"@types/node": ">=18"
},
"peerDependenciesMeta": {
"@types/geojson": {
"optional": true
},
"@types/node": {
"optional": true
}
}
},
"node_modules/mariadb/node_modules/iconv-lite": {
@@ -16316,9 +16312,9 @@
}
},
"node_modules/safe-regex2": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz",
"integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.1.0.tgz",
"integrity": "sha512-pNHAuBW7TrcleFHsxBr5QMi/Iyp0ENjUKz7GCcX1UO7cMh+NmVK6HxQckNL1tJp1XAJVjG6B8OKIPqodqj9rtw==",
"funding": [
{
"type": "github",
@@ -16332,6 +16328,9 @@
"license": "MIT",
"dependencies": {
"ret": "~0.5.0"
},
"bin": {
"safe-regex2": "bin/safe-regex2.js"
}
},
"node_modules/safer-buffer": {
@@ -17326,9 +17325,9 @@
}
},
"node_modules/svelte": {
"version": "5.53.6",
"resolved": "https://registry.npmjs.org/svelte/-/svelte-5.53.6.tgz",
"integrity": "sha512-lP5DGF3oDDI9fhHcSpaBiJEkFLuS16h92DhM1L5K1lFm0WjOmUh1i2sNkBBk8rkxJRpob0dBE75jRfUzGZUOGA==",
"version": "5.53.12",
"resolved": "https://registry.npmjs.org/svelte/-/svelte-5.53.12.tgz",
"integrity": "sha512-4x/uk4rQe/d7RhfvS8wemTfNjQ0bJbKvamIzRBfTe2eHHjzBZ7PZicUQrC2ryj83xxEacfA1zHKd1ephD1tAxA==",
"license": "MIT",
"dependencies": {
"@jridgewell/remapping": "^2.3.4",
@@ -17340,7 +17339,7 @@
"aria-query": "5.3.1",
"axobject-query": "^4.1.0",
"clsx": "^2.1.1",
"devalue": "^5.6.3",
"devalue": "^5.6.4",
"esm-env": "^1.2.1",
"esrap": "^2.2.2",
"is-reference": "^3.0.3",
@@ -19574,9 +19573,9 @@
}
},
"node_modules/youtubei.js": {
"version": "16.0.1",
"resolved": "https://registry.npmjs.org/youtubei.js/-/youtubei.js-16.0.1.tgz",
"integrity": "sha512-3802bCAGkBc2/G5WUTc0l/bO5mPYJbQAHL04d9hE9PnrDHoBUT8MN721Yqt4RCNncAXdHcfee9VdJy3Fhq1r5g==",
"version": "17.0.1",
"resolved": "https://registry.npmjs.org/youtubei.js/-/youtubei.js-17.0.1.tgz",
"integrity": "sha512-1lO4b8UqMDzE0oh2qEGzbBOd4UYRdxn/4PdpRM7BGTHxM6ddsEsKZTu90jp8V9FHVgC2h1UirQyqoqLiKwl+Zg==",
"funding": [
"https://github.com/sponsors/LuanRT"
],
+7 -7
View File
@@ -1,6 +1,6 @@
{
"name": "materialious",
"version": "1.16.20",
"version": "1.16.21",
"private": true,
"scripts": {
"dev": "npm run patch:github && vite dev",
@@ -39,7 +39,7 @@
"patch-package": "^8.0.1",
"prettier": "^3.6.2",
"prettier-plugin-svelte": "^3.5.0",
"svelte": "^5.53.6",
"svelte": "^5.53.12",
"svelte-check": "^4.4.4",
"tslib": "^2.7.0",
"typescript": "^5.9.3",
@@ -62,7 +62,7 @@
"@macfja/svelte-persistent-store": "^2.4.2",
"altcha": "^2.3.0",
"altcha-lib": "^1.4.1",
"beercss": "^4.0.17",
"beercss": "^4.0.19",
"bgutils-js": "^3.2.0",
"buffer": "^6.0.3",
"capacitor-music-controls-plugin": "^6.1.0",
@@ -80,7 +80,7 @@
"iso-639-1": "^3.1.5",
"jsdom": "^28.1.0",
"libsodium-wrappers-sumo": "^0.8.2",
"mariadb": "^3.5.1",
"mariadb": "^3.5.2",
"material-dynamic-colors": "^1.1.1",
"media-captions": "^0.0.18",
"melt": "^0.44.0",
@@ -89,7 +89,7 @@
"papaparse": "^5.5.3",
"pg": "^8.20.0",
"pg-hstore": "^2.3.4",
"safe-regex2": "^5.0.0",
"safe-regex2": "^5.1.0",
"sequelize": "^6.37.8",
"shaka-player": "^4.16.14",
"sponsorblock-api": "^0.2.4",
@@ -98,7 +98,7 @@
"svelte-infinite-loading": "^1.4.0",
"tldts": "^7.0.24",
"trystero": "^0.22.0",
"youtubei.js": "^16.0.1",
"youtubei.js": "^17.0.1",
"zod": "^4.3.6"
}
}
}
+1 -1
View File
@@ -4,7 +4,7 @@ export interface SearchOptions {
sort_by?: 'relevance' | 'rating' | 'upload_date' | 'view_count';
type?: 'video' | 'playlist' | 'channel' | 'all';
duration?: 'short' | 'medium' | 'long';
date?: 'hour' | 'today' | 'week' | 'month' | 'year';
date?: 'today' | 'week' | 'month' | 'year';
features?: string;
page?: string;
}
+1 -1
View File
@@ -14,7 +14,7 @@ export async function getInnertube(): Promise<Innertube> {
cache: new UniversalCache(true),
location: get(interfaceRegionStore),
user_agent: USER_AGENT,
player_id: getPublicEnv('PLAYER_ID') ?? '9f4cc5e4'
player_id: getPublicEnv('PLAYER_ID')
});
return innertube;
+16 -2
View File
@@ -33,9 +33,23 @@ export async function getSearchYTjs(
): Promise<SearchResults> {
const innertube = await getInnertube();
let duration: Types.Duration = 'all';
switch (options.duration) {
case 'long':
duration = 'over_twenty_mins';
break;
case 'medium':
duration = 'three_to_twenty_mins';
break;
case 'short':
duration = 'under_three_mins';
break;
}
const innerResults = await innertube.search(search, {
sort_by: options.sort_by,
duration: options.duration,
prioritize: options.sort_by !== 'relevance' ? 'popularity' : 'relevance',
duration: duration,
features: [options.features] as Types.Feature[],
upload_date: options.date
});
@@ -1,6 +1,6 @@
<script lang="ts">
import { isAndroidTvStore } from '$lib/store';
import { onMount } from 'svelte';
import { onDestroy, onMount } from 'svelte';
let { children } = $props();
@@ -21,7 +21,11 @@
onMount(() => {
checkWidth();
addEventListener('resize', () => checkWidth());
addEventListener('resize', checkWidth);
});
onDestroy(() => {
removeEventListener('resize', checkWidth);
});
</script>
@@ -22,6 +22,7 @@
import Share from '../Share.svelte';
import { deleteWatchHistoryItem, saveWatchHistory } from '$lib/api';
import type { ThumbnailVideo } from '$lib/thumbnail';
import { truncate } from '$lib/misc';
interface Props {
video: ThumbnailVideo;
@@ -323,7 +324,7 @@
authorId={'authorId' in video ? video.authorId : ''}
/>
{/if}
<div style="width: 82%;">
<div class="author-details">
<nav style="justify-content: space-between;width: 100%;">
<div>
{#if 'authorId' in video && video.authorId}
@@ -332,10 +333,10 @@
class:author={!sideways}
href={resolve(`/channel/[authorId]`, { authorId: video.authorId })}
data-sveltekit-preload-data="off"
>{video.author}
>{truncate(video.author, 20)}
</a>
{:else}
<p>{video.author}</p>
<p>{truncate(video.author, 20)}</p>
{/if}
{#if 'promotedBy' in video && video.promotedBy === 'favourited'}
@@ -349,13 +350,13 @@
{/if}
{#if 'published' in video}
<div>
<span>
{video.viewCountText ?? cleanNumber(video.viewCount ?? 0)}
{video.published && video.published !== 0
? relativeTimestamp(video.published * 1000, false)
: video.publishedText}
</div>
</span>
{/if}
</div>
{#if !sideways}
@@ -427,12 +428,20 @@
overflow: hidden;
}
.sideways-root .video-title span {
.author-details span,
.author-details p,
.author-details a {
display: block;
white-space: normal;
overflow: hidden;
word-wrap: break-word;
line-height: 1.2;
font-size: clamp(0.65rem, 2.5cqw + 0.3rem, 1.15rem);
}
.author-details {
flex: 1;
min-width: 0;
}
.video-title {
@@ -473,6 +482,11 @@
background-color: transparent;
}
.sideways-root,
.thumbnail-details {
container-type: inline-size;
}
@media screen and (max-width: 1800px) {
.sideways-root .thumbnail {
width: 100%;
+56 -3
View File
@@ -204,9 +204,46 @@
"deleteAccount": "Konto löschen",
"clickXmoreTimesToDelete": "Klicke {{clicksTillDelete}} weitere(s) Mal(e) zum Löschen",
"backendEngine": {
"warning": "Erweiterte Einstellungen! Nur für erfahrene Nutzer. Ändere sie nicht, ausser du weisst, was du tust."
"warning": "Erweiterte Einstellungen! Nur für erfahrene Nutzer. Ändere sie nicht, ausser du weisst, was du tust.",
"cull": "Maximale Feed-Elemente",
"cooldown": "Cooldown der stündlichen Kanalabfrage",
"concurrent": "Maximale Anzahl der Kanäle, die vor der Feed-Rückgabe geparsed werden",
"fallbacks": "Fallbacks",
"importExport": "Automatischer Export/Import",
"exportToInvidious": "Von Materialious nach Invidious exportieren",
"importToMaterialious": "Von Invidious nach Materialious importieren",
"importingToMaterialious": "Import zu Materialious gestartet",
"importingToMaterialiousFinished": "Import zu Materialious abgeschlossen",
"exportingToInvidious": "Export zu Invidious gestartet",
"exportingToInvidiousFinished": "Export zu Invidious abgeschlossen"
},
"historyEnabled": "Wiedergabeverlauf speichern"
"historyEnabled": "Wiedergabeverlauf speichern",
"exportToJson": "Nach JSON exportieren",
"filter": {
"title": "Inhaltsfilter",
"url": "Importiere Filter via URL",
"autoUpdate": "Filter automatisch via URL aktualisieren",
"contentType": "Inhaltstyp",
"field": "Feld",
"operator": "Operator",
"optionPlaceholder": "Option auswählen",
"value": "Wert",
"addConditional": "Kondition hinzufügen",
"addFilter": "Filter hinzufügen",
"videoFiltered": "«{{videoTitle}}» von «{{authorName}}» gefiltert",
"channelFiltered": "«{{authorName}}» gefiltert"
},
"export": {
"title": "Export/Import",
"importSub": "Abonnements importieren",
"importSubSupported": "YouTube CSV/OPML/JSON, Invidious OPML/JSON, Feetube-Datenbank & NewPipe JSON werden unterstützt",
"importing": "Abonnements werden importiert (dies wird einen Moment dauern)",
"importingCompleted": "Abonnements erfolgreich importiert",
"exportSub": "Abonnements exportieren",
"exportToClipboard": "In die Zwischenablage exportieren",
"exportToFile": "In eine Datei exportieren",
"importFromFile": "Von einer Datei importieren"
}
},
"subscribe": "Abonnieren",
"recommendedVideos": "Vorgeschlagene Videos",
@@ -236,7 +273,7 @@
"unfavouriteChannel": "Kanal entfavorisieren",
"skip": "Überspringen",
"upcomingSegment": "Kommend ",
"copy": "JSON kopieren",
"copy": "In die Zwischenablage kopieren",
"username": "Benutzername",
"password": "Passwort",
"captionStyle": "Untertitel-Stil",
@@ -262,5 +299,21 @@
"localFallbackInfo": "Wenn das Laden eines Videos von Invidious fehlschlägt, lädt Materialious es lokal.",
"configureInstance": "Instanz konfigurieren",
"done": "Fertig"
},
"markAs": {
"watched": "Als gesehen markieren",
"unwatched": "Als ungesehen markieren"
},
"hideAuthor": "Autor verstecken",
"watchParty": {
"start": "Wiedergabegruppe starten",
"header": "Wiedergabegruppe",
"createRoom": "Raum erstellen",
"joinRoom": "Raum beitreten",
"roomID": "Raum-ID",
"shareRoom": "Raum teilen",
"leaveRoom": "Raum verlassen",
"userJoin": "Nutzer ist dem Raum beigetreten",
"userLeft": "Nutzer hat den Raum verlassen"
}
}
+56 -3
View File
@@ -101,9 +101,46 @@
"deleteAccount": "Konto lösche",
"clickXmoreTimesToDelete": "Klick {{clicksTillDelete}} wiiteri Mal zum Lösche",
"backendEngine": {
"warning": "Erwiterti Iistellige! Nur für erfahreni Nutzer. Ändere sie nöd, usser du weisch, was du machsch."
"warning": "Erwiterti Iistellige! Nur für erfahreni Nutzer. Ändere sie nöd, usser du weisch, was du machsch.",
"cull": "Maximali Feed-Element",
"cooldown": "Cooldown vo de stündliche Kanalabfrag",
"concurrent": "Maximali Aazahl vo de Kanäl, wo vor de Feed-Rückgab parsed werded",
"fallbacks": "Fallbacks",
"importExport": "Automatische Export/Import",
"exportToInvidious": "Vo Materialious nach Invidious exportiere",
"importToMaterialious": "Vo Invidious nach Materialious importiere",
"importingToMaterialious": "Import zu Materialious gstartet",
"importingToMaterialiousFinished": "Import zu Materialious abgschlosse",
"exportingToInvidious": "Export zu Invidious gstartet",
"exportingToInvidiousFinished": "Export zu Invidious abgschlosse"
},
"historyEnabled": "Wiedergabeverlauf speichere"
"historyEnabled": "Wiedergabeverlauf speichere",
"exportToJson": "Nach JSON exportiere",
"filter": {
"title": "Inhaltsfilter",
"url": "Importier Filter via URL",
"autoUpdate": "Filter automatisch via URL aktualisiere",
"contentType": "Inhaltstyp",
"field": "Feld",
"operator": "Operator",
"optionPlaceholder": "Option uuswähle",
"value": "Wert",
"addConditional": "Kondition hinzuefüege",
"addFilter": "Filter hinzuefüege",
"videoFiltered": "«{{videoTitle}}» vo «{{authorName}}» gfilteret",
"channelFiltered": "«{{authorName}}» gfilteret"
},
"export": {
"title": "Export/Import",
"importSub": "Abonnements importiere",
"importSubSupported": "YouTube CSV/OPML/JSON, Invidious OPML/JSON, Feetube-Datebank & NewPipe JSON werded unterstützt",
"importing": "Abonnements werded importiert (das wird en Moment duure)",
"importingCompleted": "Abonnements erfolgriich importiert",
"exportSub": "Abonnements exportiere",
"exportToClipboard": "I d Zwüscheablaag exportiere",
"exportToFile": "In e Datei exportiere",
"importFromFile": "Vonere Datei importiere"
}
},
"videos": "Videos",
"cancel": "Abbreche",
@@ -236,7 +273,7 @@
"unfavouriteChannel": "Kanal entfavorisiere",
"skip": "Überspringe",
"upcomingSegment": "Kommend ",
"copy": "JSON kopiere",
"copy": "I d Zwüscheablaag kopiere",
"username": "Benutzername",
"password": "Passwort",
"captionStyle": "Untertitel-Stil",
@@ -262,5 +299,21 @@
"localFallbackInfo": "Wenn s Lade vomene Video vo Invidious fehlschlaat, ladet Materialious es lokal.",
"configureInstance": "Instanz konfiguriere",
"done": "Fertig"
},
"markAs": {
"watched": "Als gseh markiere",
"unwatched": "Als ungseh markiere"
},
"hideAuthor": "Autor verstecke",
"watchParty": {
"start": "Wiedergabegruppe starte",
"header": "Wiedergabegruppe",
"createRoom": "Ruum erstelle",
"joinRoom": "Ruum biitrete",
"roomID": "Ruum-ID",
"shareRoom": "Ruum teile",
"leaveRoom": "Ruum verlaa",
"userJoin": "Nutzer isch em Ruum biitrete",
"userLeft": "Nutzer het de Ruum verlaa"
}
}
+9 -2
View File
@@ -147,7 +147,9 @@
"optionPlaceholder": "Válassza ki a lehetőséget",
"value": "Érték",
"addConditional": "Feltétel hozzáadása",
"addFilter": "Szűrő hozzáadása"
"addFilter": "Szűrő hozzáadása",
"videoFiltered": "„{{videoTitle}}” „{{authorName}}” szűrve",
"channelFiltered": "„{{authorName}}” szűrve"
},
"export": {
"title": "Exportálás és importálás",
@@ -308,5 +310,10 @@
"leaveRoom": "Szoba elhagyása",
"userJoin": "Felhasználó csatlakozott a szobához",
"userLeft": "Felhasználó elhagyta a szobát"
}
},
"markAs": {
"watched": "Jelölés megtekintettként",
"unwatched": "Jelölés nem megtekintettnek"
},
"hideAuthor": "Szerző elrejtése"
}
+9 -2
View File
@@ -233,7 +233,9 @@
"optionPlaceholder": "オプションの選択",
"value": "値",
"addConditional": "条件を追加",
"addFilter": "フィルターを追加"
"addFilter": "フィルターを追加",
"videoFiltered": "{{authorName}} の {{videoTitle}} をフィルターしました",
"channelFiltered": "{{authorName}} をフィルターしました"
},
"export": {
"title": "エクスポート/インポート",
@@ -308,5 +310,10 @@
"leaveRoom": "ルームから退出",
"userJoin": "ユーザーがルームに参加しました",
"userLeft": "ユーザーがルームから退出しました"
}
},
"markAs": {
"watched": "視聴済みにする",
"unwatched": "未視聴にする"
},
"hideAuthor": "投稿者を非表示"
}
+2 -2
View File
@@ -32,9 +32,9 @@ export function relativeTimestamp(epochTime: number, includeTime: boolean = true
if (isSameDay || isSameWeek) {
return diffDuration.humanize(true);
} else if (isThisYear) {
return timestamp.format(`MMMM Do ${time}`);
return timestamp.format(`MMM Do ${time}`);
} else {
return timestamp.format(`MMMM Do YYYY ${time}`);
return timestamp.format(`MMM Do YYYY ${time}`);
}
}
@@ -30,7 +30,7 @@
key: 'type'
},
{
options: ['hour', 'today', 'week', 'month', 'year'],
options: ['today', 'week', 'month', 'year'],
title: $_('filters.uploadDate'),
key: 'date'
},
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -3,7 +3,7 @@ import os
import re
from datetime import datetime
LATEST_VERSION = "1.16.20"
LATEST_VERSION = "1.16.21"
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")