From 246869d83e92403f884c23037ef5c629ff649b21 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Wed, 4 Jun 2025 15:26:56 +1200 Subject: [PATCH 1/6] Bump version --- materialious/android/app/build.gradle | 4 ++-- materialious/electron/materialious.metainfo.xml | 6 +++++- materialious/electron/package.json | 2 +- materialious/package.json | 2 +- update_versions.py | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/materialious/android/app/build.gradle b/materialious/android/app/build.gradle index ceab7ec6..bd3d5665 100644 --- a/materialious/android/app/build.gradle +++ b/materialious/android/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "us.materialio.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 116 - versionName "1.8.12" + versionCode 117 + versionName "1.9.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/materialious/electron/materialious.metainfo.xml b/materialious/electron/materialious.metainfo.xml index 03440bbe..95cc5cdd 100644 --- a/materialious/electron/materialious.metainfo.xml +++ b/materialious/electron/materialious.metainfo.xml @@ -61,7 +61,11 @@ - + + + https://github.com/Materialious/Materialious/releases/tag/1.9.0 + + https://github.com/Materialious/Materialious/releases/tag/1.8.12 diff --git a/materialious/electron/package.json b/materialious/electron/package.json index 30da3ba0..ed774a7e 100644 --- a/materialious/electron/package.json +++ b/materialious/electron/package.json @@ -1,6 +1,6 @@ { "name": "Materialious", - "version": "1.8.12", + "version": "1.9.0", "description": "Modern material design for Invidious.", "author": { "name": "Ward Pearce", diff --git a/materialious/package.json b/materialious/package.json index e72ad0d0..ecaf8c36 100644 --- a/materialious/package.json +++ b/materialious/package.json @@ -1,6 +1,6 @@ { "name": "materialious", - "version": "1.8.12", + "version": "1.9.0", "private": true, "scripts": { "dev": "vite dev", diff --git a/update_versions.py b/update_versions.py index 954fcb1a..e3033b64 100644 --- a/update_versions.py +++ b/update_versions.py @@ -3,7 +3,7 @@ import os import re from datetime import datetime -LATEST_VERSION = "1.8.12" +LATEST_VERSION = "1.9.0" RELEASE_DATE = datetime.now().strftime("%Y-%-m-%d") # Format: YYYY-M-D WORKING_DIR = os.path.join( From 1f714692766ff934bfa1dbb178553b405712d7d9 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Wed, 4 Jun 2025 15:44:53 +1200 Subject: [PATCH 2/6] Use fetch to load images if insecure request enabled. --- materialious/electron/package-lock.json | 15 ++++--- materialious/electron/package.json | 4 +- .../lib/components/ChannelThumbnail.svelte | 8 ++-- .../src/lib/components/Comment.svelte | 24 +++++++--- .../lib/components/HashtagThumbnail.svelte | 2 - .../lib/components/PlaylistThumbnail.svelte | 15 ++++--- .../lib/components/Settings/Interface.svelte | 17 ------- .../src/lib/components/Thumbnail.svelte | 45 ++----------------- materialious/src/lib/misc.ts | 36 +++++++++------ 9 files changed, 70 insertions(+), 96 deletions(-) diff --git a/materialious/electron/package-lock.json b/materialious/electron/package-lock.json index 1081eca8..6564b0ba 100644 --- a/materialious/electron/package-lock.json +++ b/materialious/electron/package-lock.json @@ -1,17 +1,17 @@ { "name": "Materialious", - "version": "1.8.10", + "version": "1.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "Materialious", - "version": "1.8.10", + "version": "1.9.0", "license": "MIT", "dependencies": { "@capacitor-community/electron": "^5.0.0", "bgutils-js": "^3.2.0", - "capacitor-nodejs": "https://github.com/EdenwareApps/Capacitor-NodeJS/releases/download/v1.0.0-beta.7/capacitor6-nodejs.tgz", + "capacitor-nodejs": "https://github.com/hampoelz/capacitor-nodejs/releases/download/v1.0.0-beta.8/capacitor-nodejs.tgz", "chokidar": "~4.0.3", "electron-is-dev": "~2.0.0", "electron-serve": "~1.1.0", @@ -1799,10 +1799,13 @@ } }, "node_modules/capacitor-nodejs": { - "version": "1.0.0-beta.7", - "resolved": "https://github.com/EdenwareApps/Capacitor-NodeJS/releases/download/v1.0.0-beta.7/capacitor6-nodejs.tgz", - "integrity": "sha512-7NwSMxE06nqpuFKyQlt3mWo+VG6Od0d6PBxPKVyPmaptE6sSoimzU/uzQXPWoHV5bwbjgcF+R0BSJAZAyy4gsg==", + "version": "1.0.0-beta.8", + "resolved": "https://github.com/hampoelz/capacitor-nodejs/releases/download/v1.0.0-beta.8/capacitor-nodejs.tgz", + "integrity": "sha512-VAMCTBqz+sA3762kFhSyzXS0unm0EpsVSHLmDYsTYPTiXXZaFcGk27vfXakRyyXJexAUG2Y5rZka5BvH6EmeZw==", "license": "MIT", + "engines": { + "node": ">=20.10" + }, "peerDependencies": { "@capacitor/core": "^6.0.0" } diff --git a/materialious/electron/package.json b/materialious/electron/package.json index ed774a7e..f9990e30 100644 --- a/materialious/electron/package.json +++ b/materialious/electron/package.json @@ -24,7 +24,7 @@ "dependencies": { "@capacitor-community/electron": "^5.0.0", "bgutils-js": "^3.2.0", - "capacitor-nodejs": "https://github.com/EdenwareApps/Capacitor-NodeJS/releases/download/v1.0.0-beta.7/capacitor6-nodejs.tgz", + "capacitor-nodejs": "https://github.com/hampoelz/capacitor-nodejs/releases/download/v1.0.0-beta.8/capacitor-nodejs.tgz", "chokidar": "~4.0.3", "electron-is-dev": "~2.0.0", "electron-serve": "~1.1.0", @@ -44,4 +44,4 @@ "capacitor", "electron" ] -} \ No newline at end of file +} diff --git a/materialious/src/lib/components/ChannelThumbnail.svelte b/materialious/src/lib/components/ChannelThumbnail.svelte index 0d8addc1..0ee518f5 100644 --- a/materialious/src/lib/components/ChannelThumbnail.svelte +++ b/materialious/src/lib/components/ChannelThumbnail.svelte @@ -5,7 +5,7 @@ import { _ } from 'svelte-i18n'; import { get } from 'svelte/store'; import type { Channel } from '../api/model'; - import { truncate } from '../misc'; + import { insecureRequestImageHandler, truncate } from '../misc'; import { interfaceLowBandwidthMode } from '../store'; interface Props { @@ -19,9 +19,9 @@ onMount(async () => { if (get(interfaceLowBandwidthMode)) return; - const img = new Image(); - img.src = proxyGoogleImage(getBestThumbnail(channel.authorThumbnails)); - + const img = await insecureRequestImageHandler( + proxyGoogleImage(getBestThumbnail(channel.authorThumbnails)) + ); img.onload = () => { channelPfp = img; }; diff --git a/materialious/src/lib/components/Comment.svelte b/materialious/src/lib/components/Comment.svelte index 2f3dc9ad..c275d7eb 100644 --- a/materialious/src/lib/components/Comment.svelte +++ b/materialious/src/lib/components/Comment.svelte @@ -4,7 +4,9 @@ import { getBestThumbnail, proxyGoogleImage } from '$lib/images'; import { numberWithCommas } from '$lib/numbers'; import { interfaceLowBandwidthMode } from '$lib/store'; + import { onMount } from 'svelte'; import CommentSelf from './Comment.svelte'; + import { insecureRequestImageHandler } from '$lib/misc'; interface Props { comment: Comment; @@ -36,16 +38,28 @@ return processedHtml; } + + let userPfp = $state(''); + onMount(async () => { + if ($interfaceLowBandwidthMode) return; + const img = await insecureRequestImageHandler( + proxyGoogleImage(getBestThumbnail(comment.authorThumbnails)) + ); + + img.onload = () => { + userPfp = img.src; + }; + });
{#if !$interfaceLowBandwidthMode}
- comment profile + {#if userPfp} + comment profile + {:else} + + {/if}
diff --git a/materialious/src/lib/components/HashtagThumbnail.svelte b/materialious/src/lib/components/HashtagThumbnail.svelte index dfe6ec39..4e4ebbbe 100644 --- a/materialious/src/lib/components/HashtagThumbnail.svelte +++ b/materialious/src/lib/components/HashtagThumbnail.svelte @@ -9,8 +9,6 @@ } let { hashtag }: Props = $props(); - - let channelPfp: HTMLImageElement | undefined; diff --git a/materialious/src/lib/components/PlaylistThumbnail.svelte b/materialious/src/lib/components/PlaylistThumbnail.svelte index 5b80f2e0..649b7f38 100644 --- a/materialious/src/lib/components/PlaylistThumbnail.svelte +++ b/materialious/src/lib/components/PlaylistThumbnail.svelte @@ -5,7 +5,7 @@ import { _ } from 'svelte-i18n'; import { get } from 'svelte/store'; import type { Playlist } from '../api/model'; - import { truncate } from '../misc'; + import { insecureRequestImageHandler, truncate } from '../misc'; import { interfaceLowBandwidthMode } from '../store'; interface Props { @@ -21,20 +21,23 @@ const playlistLink = `/playlist/${playlist.playlistId}`; - onMount(() => { + onMount(async () => { if (get(interfaceLowBandwidthMode)) return; - img = new Image(); + let imgSrc = ''; + if (playlist.videos.length > 0) { - img.src = getBestThumbnail(playlist.videos[0].videoThumbnails) || ''; + imgSrc = getBestThumbnail(playlist.videos[0].videoThumbnails) || ''; } else if (playlist.playlistThumbnail) { - img.src = playlist.playlistThumbnail; + imgSrc = playlist.playlistThumbnail; } else { - img.src = ''; + imgSrc = ''; loading = false; return; } + img = await insecureRequestImageHandler(imgSrc); + img.onload = () => { loading = false; }; diff --git a/materialious/src/lib/components/Settings/Interface.svelte b/materialious/src/lib/components/Settings/Interface.svelte index dec82064..58509765 100644 --- a/materialious/src/lib/components/Settings/Interface.svelte +++ b/materialious/src/lib/components/Settings/Interface.svelte @@ -20,7 +20,6 @@ interfaceAutoExpandComments, interfaceAutoExpandDesc, interfaceDefaultPage, - interfaceDisplayThumbnailAvatars, interfaceForceCase, interfaceLowBandwidthMode, interfaceRegionStore, @@ -171,22 +170,6 @@
{/if} -
- -
-