From 6a2780563aec5263eb5755e9bf8112216249a11e Mon Sep 17 00:00:00 2001 From: WardPearce Date: Tue, 17 Feb 2026 19:56:02 +1300 Subject: [PATCH 1/7] 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 0369d805..9c76dc20 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 216 - versionName "1.15.8" + versionCode 217 + versionName "1.15.9" 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 34c43a34..de438669 100644 --- a/materialious/electron/materialious.metainfo.xml +++ b/materialious/electron/materialious.metainfo.xml @@ -81,7 +81,11 @@ - + + + https://github.com/Materialious/Materialious/releases/tag/1.15.9 + + https://github.com/Materialious/Materialious/releases/tag/1.15.8 diff --git a/materialious/electron/package.json b/materialious/electron/package.json index 49734948..2f30b3bd 100644 --- a/materialious/electron/package.json +++ b/materialious/electron/package.json @@ -1,6 +1,6 @@ { "name": "Materialious", - "version": "1.15.8", + "version": "1.15.9", "description": "Modern material design for YouTube and Invidious.", "author": { "name": "Ward Pearce", diff --git a/materialious/package.json b/materialious/package.json index 8d3ec302..223b4c79 100644 --- a/materialious/package.json +++ b/materialious/package.json @@ -1,6 +1,6 @@ { "name": "materialious", - "version": "1.15.8", + "version": "1.15.9", "private": true, "scripts": { "dev": "npm run patch:github && vite dev", diff --git a/update_versions.py b/update_versions.py index 07940ff8..92b15e29 100644 --- a/update_versions.py +++ b/update_versions.py @@ -3,7 +3,7 @@ import os import re from datetime import datetime -LATEST_VERSION = "1.15.8" +LATEST_VERSION = "1.15.9" 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") From b598d4ecb3e6b29b6f47888a709cf3a96b31988f Mon Sep 17 00:00:00 2001 From: WardPearce Date: Tue, 17 Feb 2026 19:58:01 +1300 Subject: [PATCH 2/7] Removed width requirement for isMobile --- materialious/src/lib/misc.ts | 5 +---- materialious/static/localApi/ghContributors.json | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/materialious/src/lib/misc.ts b/materialious/src/lib/misc.ts index aeab6717..b439fec6 100644 --- a/materialious/src/lib/misc.ts +++ b/materialious/src/lib/misc.ts @@ -38,13 +38,10 @@ export function isMobile(): boolean { const userAgent = navigator.userAgent; const hasTouchSupport = 'ontouchstart' in window || navigator.maxTouchPoints > 0; - const isSmallScreen = window.innerWidth < 768; const isUserAgentMobile = /Mobi|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent); - return ( - (hasTouchSupport && isSmallScreen && isUserAgentMobile) || Capacitor.getPlatform() === 'android' - ); + return (hasTouchSupport && isUserAgentMobile) || Capacitor.getPlatform() === 'android'; } export function isVideoID(videoId: string): boolean { diff --git a/materialious/static/localApi/ghContributors.json b/materialious/static/localApi/ghContributors.json index 636eabb8..e55f71a4 100644 --- a/materialious/static/localApi/ghContributors.json +++ b/materialious/static/localApi/ghContributors.json @@ -1 +1 @@ -[{"login":"WardPearce","id":27844174,"node_id":"MDQ6VXNlcjI3ODQ0MTc0","avatar_url":"https://avatars.githubusercontent.com/u/27844174?v=4","gravatar_id":"","url":"https://api.github.com/users/WardPearce","html_url":"https://github.com/WardPearce","followers_url":"https://api.github.com/users/WardPearce/followers","following_url":"https://api.github.com/users/WardPearce/following{/other_user}","gists_url":"https://api.github.com/users/WardPearce/gists{/gist_id}","starred_url":"https://api.github.com/users/WardPearce/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WardPearce/subscriptions","organizations_url":"https://api.github.com/users/WardPearce/orgs","repos_url":"https://api.github.com/users/WardPearce/repos","events_url":"https://api.github.com/users/WardPearce/events{/privacy}","received_events_url":"https://api.github.com/users/WardPearce/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2086},{"login":"dependabot[bot]","id":49699333,"node_id":"MDM6Qm90NDk2OTkzMzM=","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4","gravatar_id":"","url":"https://api.github.com/users/dependabot%5Bbot%5D","html_url":"https://github.com/apps/dependabot","followers_url":"https://api.github.com/users/dependabot%5Bbot%5D/followers","following_url":"https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dependabot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/dependabot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/dependabot%5Bbot%5D/repos","events_url":"https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/dependabot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false,"contributions":227},{"login":"Lezurex","id":48829956,"node_id":"MDQ6VXNlcjQ4ODI5OTU2","avatar_url":"https://avatars.githubusercontent.com/u/48829956?v=4","gravatar_id":"","url":"https://api.github.com/users/Lezurex","html_url":"https://github.com/Lezurex","followers_url":"https://api.github.com/users/Lezurex/followers","following_url":"https://api.github.com/users/Lezurex/following{/other_user}","gists_url":"https://api.github.com/users/Lezurex/gists{/gist_id}","starred_url":"https://api.github.com/users/Lezurex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Lezurex/subscriptions","organizations_url":"https://api.github.com/users/Lezurex/orgs","repos_url":"https://api.github.com/users/Lezurex/repos","events_url":"https://api.github.com/users/Lezurex/events{/privacy}","received_events_url":"https://api.github.com/users/Lezurex/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":39},{"login":"Coool","id":8421903,"node_id":"MDQ6VXNlcjg0MjE5MDM=","avatar_url":"https://avatars.githubusercontent.com/u/8421903?v=4","gravatar_id":"","url":"https://api.github.com/users/Coool","html_url":"https://github.com/Coool","followers_url":"https://api.github.com/users/Coool/followers","following_url":"https://api.github.com/users/Coool/following{/other_user}","gists_url":"https://api.github.com/users/Coool/gists{/gist_id}","starred_url":"https://api.github.com/users/Coool/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Coool/subscriptions","organizations_url":"https://api.github.com/users/Coool/orgs","repos_url":"https://api.github.com/users/Coool/repos","events_url":"https://api.github.com/users/Coool/events{/privacy}","received_events_url":"https://api.github.com/users/Coool/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":15},{"login":"araujosemacento","id":60983392,"node_id":"MDQ6VXNlcjYwOTgzMzky","avatar_url":"https://avatars.githubusercontent.com/u/60983392?v=4","gravatar_id":"","url":"https://api.github.com/users/araujosemacento","html_url":"https://github.com/araujosemacento","followers_url":"https://api.github.com/users/araujosemacento/followers","following_url":"https://api.github.com/users/araujosemacento/following{/other_user}","gists_url":"https://api.github.com/users/araujosemacento/gists{/gist_id}","starred_url":"https://api.github.com/users/araujosemacento/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/araujosemacento/subscriptions","organizations_url":"https://api.github.com/users/araujosemacento/orgs","repos_url":"https://api.github.com/users/araujosemacento/repos","events_url":"https://api.github.com/users/araujosemacento/events{/privacy}","received_events_url":"https://api.github.com/users/araujosemacento/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":14},{"login":"ghostofsparta222","id":251893418,"node_id":"U_kgDODwOWqg","avatar_url":"https://avatars.githubusercontent.com/u/251893418?v=4","gravatar_id":"","url":"https://api.github.com/users/ghostofsparta222","html_url":"https://github.com/ghostofsparta222","followers_url":"https://api.github.com/users/ghostofsparta222/followers","following_url":"https://api.github.com/users/ghostofsparta222/following{/other_user}","gists_url":"https://api.github.com/users/ghostofsparta222/gists{/gist_id}","starred_url":"https://api.github.com/users/ghostofsparta222/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ghostofsparta222/subscriptions","organizations_url":"https://api.github.com/users/ghostofsparta222/orgs","repos_url":"https://api.github.com/users/ghostofsparta222/repos","events_url":"https://api.github.com/users/ghostofsparta222/events{/privacy}","received_events_url":"https://api.github.com/users/ghostofsparta222/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":11},{"login":"toolatebot","id":169580663,"node_id":"U_kgDOChuYdw","avatar_url":"https://avatars.githubusercontent.com/u/169580663?v=4","gravatar_id":"","url":"https://api.github.com/users/toolatebot","html_url":"https://github.com/toolatebot","followers_url":"https://api.github.com/users/toolatebot/followers","following_url":"https://api.github.com/users/toolatebot/following{/other_user}","gists_url":"https://api.github.com/users/toolatebot/gists{/gist_id}","starred_url":"https://api.github.com/users/toolatebot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toolatebot/subscriptions","organizations_url":"https://api.github.com/users/toolatebot/orgs","repos_url":"https://api.github.com/users/toolatebot/repos","events_url":"https://api.github.com/users/toolatebot/events{/privacy}","received_events_url":"https://api.github.com/users/toolatebot/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":9},{"login":"Precific","id":30053082,"node_id":"MDQ6VXNlcjMwMDUzMDgy","avatar_url":"https://avatars.githubusercontent.com/u/30053082?v=4","gravatar_id":"","url":"https://api.github.com/users/Precific","html_url":"https://github.com/Precific","followers_url":"https://api.github.com/users/Precific/followers","following_url":"https://api.github.com/users/Precific/following{/other_user}","gists_url":"https://api.github.com/users/Precific/gists{/gist_id}","starred_url":"https://api.github.com/users/Precific/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Precific/subscriptions","organizations_url":"https://api.github.com/users/Precific/orgs","repos_url":"https://api.github.com/users/Precific/repos","events_url":"https://api.github.com/users/Precific/events{/privacy}","received_events_url":"https://api.github.com/users/Precific/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":9},{"login":"yzqzss","id":30341059,"node_id":"MDQ6VXNlcjMwMzQxMDU5","avatar_url":"https://avatars.githubusercontent.com/u/30341059?v=4","gravatar_id":"","url":"https://api.github.com/users/yzqzss","html_url":"https://github.com/yzqzss","followers_url":"https://api.github.com/users/yzqzss/followers","following_url":"https://api.github.com/users/yzqzss/following{/other_user}","gists_url":"https://api.github.com/users/yzqzss/gists{/gist_id}","starred_url":"https://api.github.com/users/yzqzss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yzqzss/subscriptions","organizations_url":"https://api.github.com/users/yzqzss/orgs","repos_url":"https://api.github.com/users/yzqzss/repos","events_url":"https://api.github.com/users/yzqzss/events{/privacy}","received_events_url":"https://api.github.com/users/yzqzss/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"thejenja","id":65224669,"node_id":"MDQ6VXNlcjY1MjI0NjY5","avatar_url":"https://avatars.githubusercontent.com/u/65224669?v=4","gravatar_id":"","url":"https://api.github.com/users/thejenja","html_url":"https://github.com/thejenja","followers_url":"https://api.github.com/users/thejenja/followers","following_url":"https://api.github.com/users/thejenja/following{/other_user}","gists_url":"https://api.github.com/users/thejenja/gists{/gist_id}","starred_url":"https://api.github.com/users/thejenja/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thejenja/subscriptions","organizations_url":"https://api.github.com/users/thejenja/orgs","repos_url":"https://api.github.com/users/thejenja/repos","events_url":"https://api.github.com/users/thejenja/events{/privacy}","received_events_url":"https://api.github.com/users/thejenja/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"cookiennn","id":114363954,"node_id":"U_kgDOBtEOMg","avatar_url":"https://avatars.githubusercontent.com/u/114363954?v=4","gravatar_id":"","url":"https://api.github.com/users/cookiennn","html_url":"https://github.com/cookiennn","followers_url":"https://api.github.com/users/cookiennn/followers","following_url":"https://api.github.com/users/cookiennn/following{/other_user}","gists_url":"https://api.github.com/users/cookiennn/gists{/gist_id}","starred_url":"https://api.github.com/users/cookiennn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cookiennn/subscriptions","organizations_url":"https://api.github.com/users/cookiennn/orgs","repos_url":"https://api.github.com/users/cookiennn/repos","events_url":"https://api.github.com/users/cookiennn/events{/privacy}","received_events_url":"https://api.github.com/users/cookiennn/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"SecularSteve","id":33793273,"node_id":"MDQ6VXNlcjMzNzkzMjcz","avatar_url":"https://avatars.githubusercontent.com/u/33793273?v=4","gravatar_id":"","url":"https://api.github.com/users/SecularSteve","html_url":"https://github.com/SecularSteve","followers_url":"https://api.github.com/users/SecularSteve/followers","following_url":"https://api.github.com/users/SecularSteve/following{/other_user}","gists_url":"https://api.github.com/users/SecularSteve/gists{/gist_id}","starred_url":"https://api.github.com/users/SecularSteve/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SecularSteve/subscriptions","organizations_url":"https://api.github.com/users/SecularSteve/orgs","repos_url":"https://api.github.com/users/SecularSteve/repos","events_url":"https://api.github.com/users/SecularSteve/events{/privacy}","received_events_url":"https://api.github.com/users/SecularSteve/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"R0GGER","id":8298741,"node_id":"MDQ6VXNlcjgyOTg3NDE=","avatar_url":"https://avatars.githubusercontent.com/u/8298741?v=4","gravatar_id":"","url":"https://api.github.com/users/R0GGER","html_url":"https://github.com/R0GGER","followers_url":"https://api.github.com/users/R0GGER/followers","following_url":"https://api.github.com/users/R0GGER/following{/other_user}","gists_url":"https://api.github.com/users/R0GGER/gists{/gist_id}","starred_url":"https://api.github.com/users/R0GGER/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/R0GGER/subscriptions","organizations_url":"https://api.github.com/users/R0GGER/orgs","repos_url":"https://api.github.com/users/R0GGER/repos","events_url":"https://api.github.com/users/R0GGER/events{/privacy}","received_events_url":"https://api.github.com/users/R0GGER/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"arcoast","id":81871508,"node_id":"MDQ6VXNlcjgxODcxNTA4","avatar_url":"https://avatars.githubusercontent.com/u/81871508?v=4","gravatar_id":"","url":"https://api.github.com/users/arcoast","html_url":"https://github.com/arcoast","followers_url":"https://api.github.com/users/arcoast/followers","following_url":"https://api.github.com/users/arcoast/following{/other_user}","gists_url":"https://api.github.com/users/arcoast/gists{/gist_id}","starred_url":"https://api.github.com/users/arcoast/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arcoast/subscriptions","organizations_url":"https://api.github.com/users/arcoast/orgs","repos_url":"https://api.github.com/users/arcoast/repos","events_url":"https://api.github.com/users/arcoast/events{/privacy}","received_events_url":"https://api.github.com/users/arcoast/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"maboroshin","id":41102508,"node_id":"MDQ6VXNlcjQxMTAyNTA4","avatar_url":"https://avatars.githubusercontent.com/u/41102508?v=4","gravatar_id":"","url":"https://api.github.com/users/maboroshin","html_url":"https://github.com/maboroshin","followers_url":"https://api.github.com/users/maboroshin/followers","following_url":"https://api.github.com/users/maboroshin/following{/other_user}","gists_url":"https://api.github.com/users/maboroshin/gists{/gist_id}","starred_url":"https://api.github.com/users/maboroshin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maboroshin/subscriptions","organizations_url":"https://api.github.com/users/maboroshin/orgs","repos_url":"https://api.github.com/users/maboroshin/repos","events_url":"https://api.github.com/users/maboroshin/events{/privacy}","received_events_url":"https://api.github.com/users/maboroshin/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"lamarios","id":1192563,"node_id":"MDQ6VXNlcjExOTI1NjM=","avatar_url":"https://avatars.githubusercontent.com/u/1192563?v=4","gravatar_id":"","url":"https://api.github.com/users/lamarios","html_url":"https://github.com/lamarios","followers_url":"https://api.github.com/users/lamarios/followers","following_url":"https://api.github.com/users/lamarios/following{/other_user}","gists_url":"https://api.github.com/users/lamarios/gists{/gist_id}","starred_url":"https://api.github.com/users/lamarios/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lamarios/subscriptions","organizations_url":"https://api.github.com/users/lamarios/orgs","repos_url":"https://api.github.com/users/lamarios/repos","events_url":"https://api.github.com/users/lamarios/events{/privacy}","received_events_url":"https://api.github.com/users/lamarios/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"bonswouar","id":615053,"node_id":"MDQ6VXNlcjYxNTA1Mw==","avatar_url":"https://avatars.githubusercontent.com/u/615053?v=4","gravatar_id":"","url":"https://api.github.com/users/bonswouar","html_url":"https://github.com/bonswouar","followers_url":"https://api.github.com/users/bonswouar/followers","following_url":"https://api.github.com/users/bonswouar/following{/other_user}","gists_url":"https://api.github.com/users/bonswouar/gists{/gist_id}","starred_url":"https://api.github.com/users/bonswouar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bonswouar/subscriptions","organizations_url":"https://api.github.com/users/bonswouar/orgs","repos_url":"https://api.github.com/users/bonswouar/repos","events_url":"https://api.github.com/users/bonswouar/events{/privacy}","received_events_url":"https://api.github.com/users/bonswouar/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"yurtpage","id":155876573,"node_id":"U_kgDOCUp83Q","avatar_url":"https://avatars.githubusercontent.com/u/155876573?v=4","gravatar_id":"","url":"https://api.github.com/users/yurtpage","html_url":"https://github.com/yurtpage","followers_url":"https://api.github.com/users/yurtpage/followers","following_url":"https://api.github.com/users/yurtpage/following{/other_user}","gists_url":"https://api.github.com/users/yurtpage/gists{/gist_id}","starred_url":"https://api.github.com/users/yurtpage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yurtpage/subscriptions","organizations_url":"https://api.github.com/users/yurtpage/orgs","repos_url":"https://api.github.com/users/yurtpage/repos","events_url":"https://api.github.com/users/yurtpage/events{/privacy}","received_events_url":"https://api.github.com/users/yurtpage/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Vladik01-11","id":70571714,"node_id":"MDQ6VXNlcjcwNTcxNzE0","avatar_url":"https://avatars.githubusercontent.com/u/70571714?v=4","gravatar_id":"","url":"https://api.github.com/users/Vladik01-11","html_url":"https://github.com/Vladik01-11","followers_url":"https://api.github.com/users/Vladik01-11/followers","following_url":"https://api.github.com/users/Vladik01-11/following{/other_user}","gists_url":"https://api.github.com/users/Vladik01-11/gists{/gist_id}","starred_url":"https://api.github.com/users/Vladik01-11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Vladik01-11/subscriptions","organizations_url":"https://api.github.com/users/Vladik01-11/orgs","repos_url":"https://api.github.com/users/Vladik01-11/repos","events_url":"https://api.github.com/users/Vladik01-11/events{/privacy}","received_events_url":"https://api.github.com/users/Vladik01-11/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Midou36O","id":45198486,"node_id":"MDQ6VXNlcjQ1MTk4NDg2","avatar_url":"https://avatars.githubusercontent.com/u/45198486?v=4","gravatar_id":"","url":"https://api.github.com/users/Midou36O","html_url":"https://github.com/Midou36O","followers_url":"https://api.github.com/users/Midou36O/followers","following_url":"https://api.github.com/users/Midou36O/following{/other_user}","gists_url":"https://api.github.com/users/Midou36O/gists{/gist_id}","starred_url":"https://api.github.com/users/Midou36O/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Midou36O/subscriptions","organizations_url":"https://api.github.com/users/Midou36O/orgs","repos_url":"https://api.github.com/users/Midou36O/repos","events_url":"https://api.github.com/users/Midou36O/events{/privacy}","received_events_url":"https://api.github.com/users/Midou36O/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Makhuta","id":23267923,"node_id":"MDQ6VXNlcjIzMjY3OTIz","avatar_url":"https://avatars.githubusercontent.com/u/23267923?v=4","gravatar_id":"","url":"https://api.github.com/users/Makhuta","html_url":"https://github.com/Makhuta","followers_url":"https://api.github.com/users/Makhuta/followers","following_url":"https://api.github.com/users/Makhuta/following{/other_user}","gists_url":"https://api.github.com/users/Makhuta/gists{/gist_id}","starred_url":"https://api.github.com/users/Makhuta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Makhuta/subscriptions","organizations_url":"https://api.github.com/users/Makhuta/orgs","repos_url":"https://api.github.com/users/Makhuta/repos","events_url":"https://api.github.com/users/Makhuta/events{/privacy}","received_events_url":"https://api.github.com/users/Makhuta/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"viraj-sh","id":214743952,"node_id":"U_kgDODMy7kA","avatar_url":"https://avatars.githubusercontent.com/u/214743952?v=4","gravatar_id":"","url":"https://api.github.com/users/viraj-sh","html_url":"https://github.com/viraj-sh","followers_url":"https://api.github.com/users/viraj-sh/followers","following_url":"https://api.github.com/users/viraj-sh/following{/other_user}","gists_url":"https://api.github.com/users/viraj-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/viraj-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/viraj-sh/subscriptions","organizations_url":"https://api.github.com/users/viraj-sh/orgs","repos_url":"https://api.github.com/users/viraj-sh/repos","events_url":"https://api.github.com/users/viraj-sh/events{/privacy}","received_events_url":"https://api.github.com/users/viraj-sh/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Sphet98","id":260131232,"node_id":"U_kgDOD4FJoA","avatar_url":"https://avatars.githubusercontent.com/u/260131232?v=4","gravatar_id":"","url":"https://api.github.com/users/Sphet98","html_url":"https://github.com/Sphet98","followers_url":"https://api.github.com/users/Sphet98/followers","following_url":"https://api.github.com/users/Sphet98/following{/other_user}","gists_url":"https://api.github.com/users/Sphet98/gists{/gist_id}","starred_url":"https://api.github.com/users/Sphet98/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sphet98/subscriptions","organizations_url":"https://api.github.com/users/Sphet98/orgs","repos_url":"https://api.github.com/users/Sphet98/repos","events_url":"https://api.github.com/users/Sphet98/events{/privacy}","received_events_url":"https://api.github.com/users/Sphet98/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"simplylu","id":55274241,"node_id":"MDQ6VXNlcjU1Mjc0MjQx","avatar_url":"https://avatars.githubusercontent.com/u/55274241?v=4","gravatar_id":"","url":"https://api.github.com/users/simplylu","html_url":"https://github.com/simplylu","followers_url":"https://api.github.com/users/simplylu/followers","following_url":"https://api.github.com/users/simplylu/following{/other_user}","gists_url":"https://api.github.com/users/simplylu/gists{/gist_id}","starred_url":"https://api.github.com/users/simplylu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simplylu/subscriptions","organizations_url":"https://api.github.com/users/simplylu/orgs","repos_url":"https://api.github.com/users/simplylu/repos","events_url":"https://api.github.com/users/simplylu/events{/privacy}","received_events_url":"https://api.github.com/users/simplylu/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"ramazansancar","id":8878055,"node_id":"MDQ6VXNlcjg4NzgwNTU=","avatar_url":"https://avatars.githubusercontent.com/u/8878055?v=4","gravatar_id":"","url":"https://api.github.com/users/ramazansancar","html_url":"https://github.com/ramazansancar","followers_url":"https://api.github.com/users/ramazansancar/followers","following_url":"https://api.github.com/users/ramazansancar/following{/other_user}","gists_url":"https://api.github.com/users/ramazansancar/gists{/gist_id}","starred_url":"https://api.github.com/users/ramazansancar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ramazansancar/subscriptions","organizations_url":"https://api.github.com/users/ramazansancar/orgs","repos_url":"https://api.github.com/users/ramazansancar/repos","events_url":"https://api.github.com/users/ramazansancar/events{/privacy}","received_events_url":"https://api.github.com/users/ramazansancar/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"ptah-alexs","id":705210,"node_id":"MDQ6VXNlcjcwNTIxMA==","avatar_url":"https://avatars.githubusercontent.com/u/705210?v=4","gravatar_id":"","url":"https://api.github.com/users/ptah-alexs","html_url":"https://github.com/ptah-alexs","followers_url":"https://api.github.com/users/ptah-alexs/followers","following_url":"https://api.github.com/users/ptah-alexs/following{/other_user}","gists_url":"https://api.github.com/users/ptah-alexs/gists{/gist_id}","starred_url":"https://api.github.com/users/ptah-alexs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ptah-alexs/subscriptions","organizations_url":"https://api.github.com/users/ptah-alexs/orgs","repos_url":"https://api.github.com/users/ptah-alexs/repos","events_url":"https://api.github.com/users/ptah-alexs/events{/privacy}","received_events_url":"https://api.github.com/users/ptah-alexs/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"polarwood","id":199823813,"node_id":"U_kgDOC-kRxQ","avatar_url":"https://avatars.githubusercontent.com/u/199823813?v=4","gravatar_id":"","url":"https://api.github.com/users/polarwood","html_url":"https://github.com/polarwood","followers_url":"https://api.github.com/users/polarwood/followers","following_url":"https://api.github.com/users/polarwood/following{/other_user}","gists_url":"https://api.github.com/users/polarwood/gists{/gist_id}","starred_url":"https://api.github.com/users/polarwood/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polarwood/subscriptions","organizations_url":"https://api.github.com/users/polarwood/orgs","repos_url":"https://api.github.com/users/polarwood/repos","events_url":"https://api.github.com/users/polarwood/events{/privacy}","received_events_url":"https://api.github.com/users/polarwood/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"beboprocky","id":110792083,"node_id":"U_kgDOBpqNkw","avatar_url":"https://avatars.githubusercontent.com/u/110792083?v=4","gravatar_id":"","url":"https://api.github.com/users/beboprocky","html_url":"https://github.com/beboprocky","followers_url":"https://api.github.com/users/beboprocky/followers","following_url":"https://api.github.com/users/beboprocky/following{/other_user}","gists_url":"https://api.github.com/users/beboprocky/gists{/gist_id}","starred_url":"https://api.github.com/users/beboprocky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/beboprocky/subscriptions","organizations_url":"https://api.github.com/users/beboprocky/orgs","repos_url":"https://api.github.com/users/beboprocky/repos","events_url":"https://api.github.com/users/beboprocky/events{/privacy}","received_events_url":"https://api.github.com/users/beboprocky/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Poussinou","id":19646549,"node_id":"MDQ6VXNlcjE5NjQ2NTQ5","avatar_url":"https://avatars.githubusercontent.com/u/19646549?v=4","gravatar_id":"","url":"https://api.github.com/users/Poussinou","html_url":"https://github.com/Poussinou","followers_url":"https://api.github.com/users/Poussinou/followers","following_url":"https://api.github.com/users/Poussinou/following{/other_user}","gists_url":"https://api.github.com/users/Poussinou/gists{/gist_id}","starred_url":"https://api.github.com/users/Poussinou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Poussinou/subscriptions","organizations_url":"https://api.github.com/users/Poussinou/orgs","repos_url":"https://api.github.com/users/Poussinou/repos","events_url":"https://api.github.com/users/Poussinou/events{/privacy}","received_events_url":"https://api.github.com/users/Poussinou/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Spaenny","id":5008508,"node_id":"MDQ6VXNlcjUwMDg1MDg=","avatar_url":"https://avatars.githubusercontent.com/u/5008508?v=4","gravatar_id":"","url":"https://api.github.com/users/Spaenny","html_url":"https://github.com/Spaenny","followers_url":"https://api.github.com/users/Spaenny/followers","following_url":"https://api.github.com/users/Spaenny/following{/other_user}","gists_url":"https://api.github.com/users/Spaenny/gists{/gist_id}","starred_url":"https://api.github.com/users/Spaenny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Spaenny/subscriptions","organizations_url":"https://api.github.com/users/Spaenny/orgs","repos_url":"https://api.github.com/users/Spaenny/repos","events_url":"https://api.github.com/users/Spaenny/events{/privacy}","received_events_url":"https://api.github.com/users/Spaenny/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1}] \ No newline at end of file +[{"login":"WardPearce","id":27844174,"node_id":"MDQ6VXNlcjI3ODQ0MTc0","avatar_url":"https://avatars.githubusercontent.com/u/27844174?v=4","gravatar_id":"","url":"https://api.github.com/users/WardPearce","html_url":"https://github.com/WardPearce","followers_url":"https://api.github.com/users/WardPearce/followers","following_url":"https://api.github.com/users/WardPearce/following{/other_user}","gists_url":"https://api.github.com/users/WardPearce/gists{/gist_id}","starred_url":"https://api.github.com/users/WardPearce/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WardPearce/subscriptions","organizations_url":"https://api.github.com/users/WardPearce/orgs","repos_url":"https://api.github.com/users/WardPearce/repos","events_url":"https://api.github.com/users/WardPearce/events{/privacy}","received_events_url":"https://api.github.com/users/WardPearce/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2098},{"login":"dependabot[bot]","id":49699333,"node_id":"MDM6Qm90NDk2OTkzMzM=","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4","gravatar_id":"","url":"https://api.github.com/users/dependabot%5Bbot%5D","html_url":"https://github.com/apps/dependabot","followers_url":"https://api.github.com/users/dependabot%5Bbot%5D/followers","following_url":"https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dependabot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/dependabot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/dependabot%5Bbot%5D/repos","events_url":"https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/dependabot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false,"contributions":227},{"login":"Lezurex","id":48829956,"node_id":"MDQ6VXNlcjQ4ODI5OTU2","avatar_url":"https://avatars.githubusercontent.com/u/48829956?v=4","gravatar_id":"","url":"https://api.github.com/users/Lezurex","html_url":"https://github.com/Lezurex","followers_url":"https://api.github.com/users/Lezurex/followers","following_url":"https://api.github.com/users/Lezurex/following{/other_user}","gists_url":"https://api.github.com/users/Lezurex/gists{/gist_id}","starred_url":"https://api.github.com/users/Lezurex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Lezurex/subscriptions","organizations_url":"https://api.github.com/users/Lezurex/orgs","repos_url":"https://api.github.com/users/Lezurex/repos","events_url":"https://api.github.com/users/Lezurex/events{/privacy}","received_events_url":"https://api.github.com/users/Lezurex/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":39},{"login":"Coool","id":8421903,"node_id":"MDQ6VXNlcjg0MjE5MDM=","avatar_url":"https://avatars.githubusercontent.com/u/8421903?v=4","gravatar_id":"","url":"https://api.github.com/users/Coool","html_url":"https://github.com/Coool","followers_url":"https://api.github.com/users/Coool/followers","following_url":"https://api.github.com/users/Coool/following{/other_user}","gists_url":"https://api.github.com/users/Coool/gists{/gist_id}","starred_url":"https://api.github.com/users/Coool/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Coool/subscriptions","organizations_url":"https://api.github.com/users/Coool/orgs","repos_url":"https://api.github.com/users/Coool/repos","events_url":"https://api.github.com/users/Coool/events{/privacy}","received_events_url":"https://api.github.com/users/Coool/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":15},{"login":"araujosemacento","id":60983392,"node_id":"MDQ6VXNlcjYwOTgzMzky","avatar_url":"https://avatars.githubusercontent.com/u/60983392?v=4","gravatar_id":"","url":"https://api.github.com/users/araujosemacento","html_url":"https://github.com/araujosemacento","followers_url":"https://api.github.com/users/araujosemacento/followers","following_url":"https://api.github.com/users/araujosemacento/following{/other_user}","gists_url":"https://api.github.com/users/araujosemacento/gists{/gist_id}","starred_url":"https://api.github.com/users/araujosemacento/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/araujosemacento/subscriptions","organizations_url":"https://api.github.com/users/araujosemacento/orgs","repos_url":"https://api.github.com/users/araujosemacento/repos","events_url":"https://api.github.com/users/araujosemacento/events{/privacy}","received_events_url":"https://api.github.com/users/araujosemacento/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":14},{"login":"ghostofsparta222","id":251893418,"node_id":"U_kgDODwOWqg","avatar_url":"https://avatars.githubusercontent.com/u/251893418?v=4","gravatar_id":"","url":"https://api.github.com/users/ghostofsparta222","html_url":"https://github.com/ghostofsparta222","followers_url":"https://api.github.com/users/ghostofsparta222/followers","following_url":"https://api.github.com/users/ghostofsparta222/following{/other_user}","gists_url":"https://api.github.com/users/ghostofsparta222/gists{/gist_id}","starred_url":"https://api.github.com/users/ghostofsparta222/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ghostofsparta222/subscriptions","organizations_url":"https://api.github.com/users/ghostofsparta222/orgs","repos_url":"https://api.github.com/users/ghostofsparta222/repos","events_url":"https://api.github.com/users/ghostofsparta222/events{/privacy}","received_events_url":"https://api.github.com/users/ghostofsparta222/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":11},{"login":"toolatebot","id":169580663,"node_id":"U_kgDOChuYdw","avatar_url":"https://avatars.githubusercontent.com/u/169580663?v=4","gravatar_id":"","url":"https://api.github.com/users/toolatebot","html_url":"https://github.com/toolatebot","followers_url":"https://api.github.com/users/toolatebot/followers","following_url":"https://api.github.com/users/toolatebot/following{/other_user}","gists_url":"https://api.github.com/users/toolatebot/gists{/gist_id}","starred_url":"https://api.github.com/users/toolatebot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toolatebot/subscriptions","organizations_url":"https://api.github.com/users/toolatebot/orgs","repos_url":"https://api.github.com/users/toolatebot/repos","events_url":"https://api.github.com/users/toolatebot/events{/privacy}","received_events_url":"https://api.github.com/users/toolatebot/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":9},{"login":"Precific","id":30053082,"node_id":"MDQ6VXNlcjMwMDUzMDgy","avatar_url":"https://avatars.githubusercontent.com/u/30053082?v=4","gravatar_id":"","url":"https://api.github.com/users/Precific","html_url":"https://github.com/Precific","followers_url":"https://api.github.com/users/Precific/followers","following_url":"https://api.github.com/users/Precific/following{/other_user}","gists_url":"https://api.github.com/users/Precific/gists{/gist_id}","starred_url":"https://api.github.com/users/Precific/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Precific/subscriptions","organizations_url":"https://api.github.com/users/Precific/orgs","repos_url":"https://api.github.com/users/Precific/repos","events_url":"https://api.github.com/users/Precific/events{/privacy}","received_events_url":"https://api.github.com/users/Precific/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":9},{"login":"yzqzss","id":30341059,"node_id":"MDQ6VXNlcjMwMzQxMDU5","avatar_url":"https://avatars.githubusercontent.com/u/30341059?v=4","gravatar_id":"","url":"https://api.github.com/users/yzqzss","html_url":"https://github.com/yzqzss","followers_url":"https://api.github.com/users/yzqzss/followers","following_url":"https://api.github.com/users/yzqzss/following{/other_user}","gists_url":"https://api.github.com/users/yzqzss/gists{/gist_id}","starred_url":"https://api.github.com/users/yzqzss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yzqzss/subscriptions","organizations_url":"https://api.github.com/users/yzqzss/orgs","repos_url":"https://api.github.com/users/yzqzss/repos","events_url":"https://api.github.com/users/yzqzss/events{/privacy}","received_events_url":"https://api.github.com/users/yzqzss/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"thejenja","id":65224669,"node_id":"MDQ6VXNlcjY1MjI0NjY5","avatar_url":"https://avatars.githubusercontent.com/u/65224669?v=4","gravatar_id":"","url":"https://api.github.com/users/thejenja","html_url":"https://github.com/thejenja","followers_url":"https://api.github.com/users/thejenja/followers","following_url":"https://api.github.com/users/thejenja/following{/other_user}","gists_url":"https://api.github.com/users/thejenja/gists{/gist_id}","starred_url":"https://api.github.com/users/thejenja/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thejenja/subscriptions","organizations_url":"https://api.github.com/users/thejenja/orgs","repos_url":"https://api.github.com/users/thejenja/repos","events_url":"https://api.github.com/users/thejenja/events{/privacy}","received_events_url":"https://api.github.com/users/thejenja/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"cookiennn","id":114363954,"node_id":"U_kgDOBtEOMg","avatar_url":"https://avatars.githubusercontent.com/u/114363954?v=4","gravatar_id":"","url":"https://api.github.com/users/cookiennn","html_url":"https://github.com/cookiennn","followers_url":"https://api.github.com/users/cookiennn/followers","following_url":"https://api.github.com/users/cookiennn/following{/other_user}","gists_url":"https://api.github.com/users/cookiennn/gists{/gist_id}","starred_url":"https://api.github.com/users/cookiennn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cookiennn/subscriptions","organizations_url":"https://api.github.com/users/cookiennn/orgs","repos_url":"https://api.github.com/users/cookiennn/repos","events_url":"https://api.github.com/users/cookiennn/events{/privacy}","received_events_url":"https://api.github.com/users/cookiennn/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"SecularSteve","id":33793273,"node_id":"MDQ6VXNlcjMzNzkzMjcz","avatar_url":"https://avatars.githubusercontent.com/u/33793273?v=4","gravatar_id":"","url":"https://api.github.com/users/SecularSteve","html_url":"https://github.com/SecularSteve","followers_url":"https://api.github.com/users/SecularSteve/followers","following_url":"https://api.github.com/users/SecularSteve/following{/other_user}","gists_url":"https://api.github.com/users/SecularSteve/gists{/gist_id}","starred_url":"https://api.github.com/users/SecularSteve/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SecularSteve/subscriptions","organizations_url":"https://api.github.com/users/SecularSteve/orgs","repos_url":"https://api.github.com/users/SecularSteve/repos","events_url":"https://api.github.com/users/SecularSteve/events{/privacy}","received_events_url":"https://api.github.com/users/SecularSteve/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"R0GGER","id":8298741,"node_id":"MDQ6VXNlcjgyOTg3NDE=","avatar_url":"https://avatars.githubusercontent.com/u/8298741?v=4","gravatar_id":"","url":"https://api.github.com/users/R0GGER","html_url":"https://github.com/R0GGER","followers_url":"https://api.github.com/users/R0GGER/followers","following_url":"https://api.github.com/users/R0GGER/following{/other_user}","gists_url":"https://api.github.com/users/R0GGER/gists{/gist_id}","starred_url":"https://api.github.com/users/R0GGER/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/R0GGER/subscriptions","organizations_url":"https://api.github.com/users/R0GGER/orgs","repos_url":"https://api.github.com/users/R0GGER/repos","events_url":"https://api.github.com/users/R0GGER/events{/privacy}","received_events_url":"https://api.github.com/users/R0GGER/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"arcoast","id":81871508,"node_id":"MDQ6VXNlcjgxODcxNTA4","avatar_url":"https://avatars.githubusercontent.com/u/81871508?v=4","gravatar_id":"","url":"https://api.github.com/users/arcoast","html_url":"https://github.com/arcoast","followers_url":"https://api.github.com/users/arcoast/followers","following_url":"https://api.github.com/users/arcoast/following{/other_user}","gists_url":"https://api.github.com/users/arcoast/gists{/gist_id}","starred_url":"https://api.github.com/users/arcoast/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arcoast/subscriptions","organizations_url":"https://api.github.com/users/arcoast/orgs","repos_url":"https://api.github.com/users/arcoast/repos","events_url":"https://api.github.com/users/arcoast/events{/privacy}","received_events_url":"https://api.github.com/users/arcoast/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"maboroshin","id":41102508,"node_id":"MDQ6VXNlcjQxMTAyNTA4","avatar_url":"https://avatars.githubusercontent.com/u/41102508?v=4","gravatar_id":"","url":"https://api.github.com/users/maboroshin","html_url":"https://github.com/maboroshin","followers_url":"https://api.github.com/users/maboroshin/followers","following_url":"https://api.github.com/users/maboroshin/following{/other_user}","gists_url":"https://api.github.com/users/maboroshin/gists{/gist_id}","starred_url":"https://api.github.com/users/maboroshin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maboroshin/subscriptions","organizations_url":"https://api.github.com/users/maboroshin/orgs","repos_url":"https://api.github.com/users/maboroshin/repos","events_url":"https://api.github.com/users/maboroshin/events{/privacy}","received_events_url":"https://api.github.com/users/maboroshin/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"lamarios","id":1192563,"node_id":"MDQ6VXNlcjExOTI1NjM=","avatar_url":"https://avatars.githubusercontent.com/u/1192563?v=4","gravatar_id":"","url":"https://api.github.com/users/lamarios","html_url":"https://github.com/lamarios","followers_url":"https://api.github.com/users/lamarios/followers","following_url":"https://api.github.com/users/lamarios/following{/other_user}","gists_url":"https://api.github.com/users/lamarios/gists{/gist_id}","starred_url":"https://api.github.com/users/lamarios/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lamarios/subscriptions","organizations_url":"https://api.github.com/users/lamarios/orgs","repos_url":"https://api.github.com/users/lamarios/repos","events_url":"https://api.github.com/users/lamarios/events{/privacy}","received_events_url":"https://api.github.com/users/lamarios/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"bonswouar","id":615053,"node_id":"MDQ6VXNlcjYxNTA1Mw==","avatar_url":"https://avatars.githubusercontent.com/u/615053?v=4","gravatar_id":"","url":"https://api.github.com/users/bonswouar","html_url":"https://github.com/bonswouar","followers_url":"https://api.github.com/users/bonswouar/followers","following_url":"https://api.github.com/users/bonswouar/following{/other_user}","gists_url":"https://api.github.com/users/bonswouar/gists{/gist_id}","starred_url":"https://api.github.com/users/bonswouar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bonswouar/subscriptions","organizations_url":"https://api.github.com/users/bonswouar/orgs","repos_url":"https://api.github.com/users/bonswouar/repos","events_url":"https://api.github.com/users/bonswouar/events{/privacy}","received_events_url":"https://api.github.com/users/bonswouar/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"yurtpage","id":155876573,"node_id":"U_kgDOCUp83Q","avatar_url":"https://avatars.githubusercontent.com/u/155876573?v=4","gravatar_id":"","url":"https://api.github.com/users/yurtpage","html_url":"https://github.com/yurtpage","followers_url":"https://api.github.com/users/yurtpage/followers","following_url":"https://api.github.com/users/yurtpage/following{/other_user}","gists_url":"https://api.github.com/users/yurtpage/gists{/gist_id}","starred_url":"https://api.github.com/users/yurtpage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yurtpage/subscriptions","organizations_url":"https://api.github.com/users/yurtpage/orgs","repos_url":"https://api.github.com/users/yurtpage/repos","events_url":"https://api.github.com/users/yurtpage/events{/privacy}","received_events_url":"https://api.github.com/users/yurtpage/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Vladik01-11","id":70571714,"node_id":"MDQ6VXNlcjcwNTcxNzE0","avatar_url":"https://avatars.githubusercontent.com/u/70571714?v=4","gravatar_id":"","url":"https://api.github.com/users/Vladik01-11","html_url":"https://github.com/Vladik01-11","followers_url":"https://api.github.com/users/Vladik01-11/followers","following_url":"https://api.github.com/users/Vladik01-11/following{/other_user}","gists_url":"https://api.github.com/users/Vladik01-11/gists{/gist_id}","starred_url":"https://api.github.com/users/Vladik01-11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Vladik01-11/subscriptions","organizations_url":"https://api.github.com/users/Vladik01-11/orgs","repos_url":"https://api.github.com/users/Vladik01-11/repos","events_url":"https://api.github.com/users/Vladik01-11/events{/privacy}","received_events_url":"https://api.github.com/users/Vladik01-11/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Midou36O","id":45198486,"node_id":"MDQ6VXNlcjQ1MTk4NDg2","avatar_url":"https://avatars.githubusercontent.com/u/45198486?v=4","gravatar_id":"","url":"https://api.github.com/users/Midou36O","html_url":"https://github.com/Midou36O","followers_url":"https://api.github.com/users/Midou36O/followers","following_url":"https://api.github.com/users/Midou36O/following{/other_user}","gists_url":"https://api.github.com/users/Midou36O/gists{/gist_id}","starred_url":"https://api.github.com/users/Midou36O/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Midou36O/subscriptions","organizations_url":"https://api.github.com/users/Midou36O/orgs","repos_url":"https://api.github.com/users/Midou36O/repos","events_url":"https://api.github.com/users/Midou36O/events{/privacy}","received_events_url":"https://api.github.com/users/Midou36O/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Makhuta","id":23267923,"node_id":"MDQ6VXNlcjIzMjY3OTIz","avatar_url":"https://avatars.githubusercontent.com/u/23267923?v=4","gravatar_id":"","url":"https://api.github.com/users/Makhuta","html_url":"https://github.com/Makhuta","followers_url":"https://api.github.com/users/Makhuta/followers","following_url":"https://api.github.com/users/Makhuta/following{/other_user}","gists_url":"https://api.github.com/users/Makhuta/gists{/gist_id}","starred_url":"https://api.github.com/users/Makhuta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Makhuta/subscriptions","organizations_url":"https://api.github.com/users/Makhuta/orgs","repos_url":"https://api.github.com/users/Makhuta/repos","events_url":"https://api.github.com/users/Makhuta/events{/privacy}","received_events_url":"https://api.github.com/users/Makhuta/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"viraj-sh","id":214743952,"node_id":"U_kgDODMy7kA","avatar_url":"https://avatars.githubusercontent.com/u/214743952?v=4","gravatar_id":"","url":"https://api.github.com/users/viraj-sh","html_url":"https://github.com/viraj-sh","followers_url":"https://api.github.com/users/viraj-sh/followers","following_url":"https://api.github.com/users/viraj-sh/following{/other_user}","gists_url":"https://api.github.com/users/viraj-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/viraj-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/viraj-sh/subscriptions","organizations_url":"https://api.github.com/users/viraj-sh/orgs","repos_url":"https://api.github.com/users/viraj-sh/repos","events_url":"https://api.github.com/users/viraj-sh/events{/privacy}","received_events_url":"https://api.github.com/users/viraj-sh/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Sphet98","id":260131232,"node_id":"U_kgDOD4FJoA","avatar_url":"https://avatars.githubusercontent.com/u/260131232?v=4","gravatar_id":"","url":"https://api.github.com/users/Sphet98","html_url":"https://github.com/Sphet98","followers_url":"https://api.github.com/users/Sphet98/followers","following_url":"https://api.github.com/users/Sphet98/following{/other_user}","gists_url":"https://api.github.com/users/Sphet98/gists{/gist_id}","starred_url":"https://api.github.com/users/Sphet98/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sphet98/subscriptions","organizations_url":"https://api.github.com/users/Sphet98/orgs","repos_url":"https://api.github.com/users/Sphet98/repos","events_url":"https://api.github.com/users/Sphet98/events{/privacy}","received_events_url":"https://api.github.com/users/Sphet98/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"simplylu","id":55274241,"node_id":"MDQ6VXNlcjU1Mjc0MjQx","avatar_url":"https://avatars.githubusercontent.com/u/55274241?v=4","gravatar_id":"","url":"https://api.github.com/users/simplylu","html_url":"https://github.com/simplylu","followers_url":"https://api.github.com/users/simplylu/followers","following_url":"https://api.github.com/users/simplylu/following{/other_user}","gists_url":"https://api.github.com/users/simplylu/gists{/gist_id}","starred_url":"https://api.github.com/users/simplylu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simplylu/subscriptions","organizations_url":"https://api.github.com/users/simplylu/orgs","repos_url":"https://api.github.com/users/simplylu/repos","events_url":"https://api.github.com/users/simplylu/events{/privacy}","received_events_url":"https://api.github.com/users/simplylu/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"ramazansancar","id":8878055,"node_id":"MDQ6VXNlcjg4NzgwNTU=","avatar_url":"https://avatars.githubusercontent.com/u/8878055?v=4","gravatar_id":"","url":"https://api.github.com/users/ramazansancar","html_url":"https://github.com/ramazansancar","followers_url":"https://api.github.com/users/ramazansancar/followers","following_url":"https://api.github.com/users/ramazansancar/following{/other_user}","gists_url":"https://api.github.com/users/ramazansancar/gists{/gist_id}","starred_url":"https://api.github.com/users/ramazansancar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ramazansancar/subscriptions","organizations_url":"https://api.github.com/users/ramazansancar/orgs","repos_url":"https://api.github.com/users/ramazansancar/repos","events_url":"https://api.github.com/users/ramazansancar/events{/privacy}","received_events_url":"https://api.github.com/users/ramazansancar/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"ptah-alexs","id":705210,"node_id":"MDQ6VXNlcjcwNTIxMA==","avatar_url":"https://avatars.githubusercontent.com/u/705210?v=4","gravatar_id":"","url":"https://api.github.com/users/ptah-alexs","html_url":"https://github.com/ptah-alexs","followers_url":"https://api.github.com/users/ptah-alexs/followers","following_url":"https://api.github.com/users/ptah-alexs/following{/other_user}","gists_url":"https://api.github.com/users/ptah-alexs/gists{/gist_id}","starred_url":"https://api.github.com/users/ptah-alexs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ptah-alexs/subscriptions","organizations_url":"https://api.github.com/users/ptah-alexs/orgs","repos_url":"https://api.github.com/users/ptah-alexs/repos","events_url":"https://api.github.com/users/ptah-alexs/events{/privacy}","received_events_url":"https://api.github.com/users/ptah-alexs/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"polarwood","id":199823813,"node_id":"U_kgDOC-kRxQ","avatar_url":"https://avatars.githubusercontent.com/u/199823813?v=4","gravatar_id":"","url":"https://api.github.com/users/polarwood","html_url":"https://github.com/polarwood","followers_url":"https://api.github.com/users/polarwood/followers","following_url":"https://api.github.com/users/polarwood/following{/other_user}","gists_url":"https://api.github.com/users/polarwood/gists{/gist_id}","starred_url":"https://api.github.com/users/polarwood/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polarwood/subscriptions","organizations_url":"https://api.github.com/users/polarwood/orgs","repos_url":"https://api.github.com/users/polarwood/repos","events_url":"https://api.github.com/users/polarwood/events{/privacy}","received_events_url":"https://api.github.com/users/polarwood/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"beboprocky","id":110792083,"node_id":"U_kgDOBpqNkw","avatar_url":"https://avatars.githubusercontent.com/u/110792083?v=4","gravatar_id":"","url":"https://api.github.com/users/beboprocky","html_url":"https://github.com/beboprocky","followers_url":"https://api.github.com/users/beboprocky/followers","following_url":"https://api.github.com/users/beboprocky/following{/other_user}","gists_url":"https://api.github.com/users/beboprocky/gists{/gist_id}","starred_url":"https://api.github.com/users/beboprocky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/beboprocky/subscriptions","organizations_url":"https://api.github.com/users/beboprocky/orgs","repos_url":"https://api.github.com/users/beboprocky/repos","events_url":"https://api.github.com/users/beboprocky/events{/privacy}","received_events_url":"https://api.github.com/users/beboprocky/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Poussinou","id":19646549,"node_id":"MDQ6VXNlcjE5NjQ2NTQ5","avatar_url":"https://avatars.githubusercontent.com/u/19646549?v=4","gravatar_id":"","url":"https://api.github.com/users/Poussinou","html_url":"https://github.com/Poussinou","followers_url":"https://api.github.com/users/Poussinou/followers","following_url":"https://api.github.com/users/Poussinou/following{/other_user}","gists_url":"https://api.github.com/users/Poussinou/gists{/gist_id}","starred_url":"https://api.github.com/users/Poussinou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Poussinou/subscriptions","organizations_url":"https://api.github.com/users/Poussinou/orgs","repos_url":"https://api.github.com/users/Poussinou/repos","events_url":"https://api.github.com/users/Poussinou/events{/privacy}","received_events_url":"https://api.github.com/users/Poussinou/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Spaenny","id":5008508,"node_id":"MDQ6VXNlcjUwMDg1MDg=","avatar_url":"https://avatars.githubusercontent.com/u/5008508?v=4","gravatar_id":"","url":"https://api.github.com/users/Spaenny","html_url":"https://github.com/Spaenny","followers_url":"https://api.github.com/users/Spaenny/followers","following_url":"https://api.github.com/users/Spaenny/following{/other_user}","gists_url":"https://api.github.com/users/Spaenny/gists{/gist_id}","starred_url":"https://api.github.com/users/Spaenny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Spaenny/subscriptions","organizations_url":"https://api.github.com/users/Spaenny/orgs","repos_url":"https://api.github.com/users/Spaenny/repos","events_url":"https://api.github.com/users/Spaenny/events{/privacy}","received_events_url":"https://api.github.com/users/Spaenny/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1}] \ No newline at end of file From b10b5c2a249faef7580a5185e4a3f8e5093eef5a Mon Sep 17 00:00:00 2001 From: WardPearce Date: Tue, 17 Feb 2026 20:21:27 +1300 Subject: [PATCH 3/7] Improved how we get public env vars --- .../src/lib/api/youtubejs/subscriptions.ts | 28 ++++++++-------- materialious/src/lib/components/Player.svelte | 17 +++------- .../lib/components/settings/Interface.svelte | 7 +++- .../src/lib/externalSettings/index.ts | 9 ++--- materialious/src/lib/misc.ts | 11 ++++--- materialious/src/lib/store.ts | 33 +++++-------------- .../routes/api/proxy/[urlToProxy]/+server.ts | 15 ++------- 7 files changed, 44 insertions(+), 76 deletions(-) diff --git a/materialious/src/lib/api/youtubejs/subscriptions.ts b/materialious/src/lib/api/youtubejs/subscriptions.ts index 81499cce..97407631 100644 --- a/materialious/src/lib/api/youtubejs/subscriptions.ts +++ b/materialious/src/lib/api/youtubejs/subscriptions.ts @@ -137,27 +137,25 @@ export async function parseChannelRSS(channelId: string): Promise { } } - updateLastRssFetch(channelId, channelName ?? 'Unknown'); + await updateLastRssFetch(channelId, channelName ?? 'Unknown'); } async function updateLastRssFetch(channelId: string, channelName: string) { - localDb.channelSubscriptions + const subscription = await localDb.channelSubscriptions .where('channelId') .equals(channelId) - .first() - .then((subscription) => { - if (subscription) { - localDb.channelSubscriptions.where('channelId').equals(channelId).modify({ - lastRSSFetch: new Date() - }); - } else { - localDb.channelSubscriptions.add({ - channelId: channelId, - channelName: channelName, - lastRSSFetch: new Date() - }); - } + .first(); + if (subscription) { + await localDb.channelSubscriptions.where('channelId').equals(channelId).modify({ + lastRSSFetch: new Date() }); + } else { + await localDb.channelSubscriptions.add({ + channelId: channelId, + channelName: channelName, + lastRSSFetch: new Date() + }); + } } export async function clearFeedYTjs() { diff --git a/materialious/src/lib/components/Player.svelte b/materialious/src/lib/components/Player.svelte index 8d635b7f..6381cd6e 100644 --- a/materialious/src/lib/components/Player.svelte +++ b/materialious/src/lib/components/Player.svelte @@ -60,7 +60,7 @@ import { Network, type ConnectionStatus } from '@capacitor/network'; import { fade } from 'svelte/transition'; import { addToast } from './Toast.svelte'; - import { isMobile, isUnrestrictedPlatform, isYTBackend, truncate } from '$lib/misc'; + import { getPublicEnv, isMobile, isUnrestrictedPlatform, isYTBackend, truncate } from '$lib/misc'; import { generateThumbnailWebVTT, drawTimelineThumbnail, @@ -515,11 +515,8 @@ // Due to CORs issues with redirects, hosted instances of Materialious // dirctly provide the companion instance // while clients can just use the reirect provided by Invidious' API - if ( - import.meta.env.VITE_DEFAULT_COMPANION_INSTANCE || - env.PUBLIC_DEFAULT_COMPANION_INSTANCE - ) { - dashUrl = `${import.meta.env.VITE_DEFAULT_COMPANION_INSTANCE || env.PUBLIC_DEFAULT_COMPANION_INSTANCE}/api/manifest/dash/id/${data.video.videoId}`; + if (getPublicEnv('DEFAULT_COMPANION_INSTANCE')) { + dashUrl = `${getPublicEnv('DEFAULT_COMPANION_INSTANCE')}/api/manifest/dash/id/${data.video.videoId}`; } else { if (!data.video.dashUrl) { error(500, 'No dash manifest found'); @@ -582,16 +579,12 @@ if (data.video.captions) { for (const caption of data.video.captions) { let captionUrl: string; - if ( - !import.meta.env.VITE_DEFAULT_COMPANION_INSTANCE && - !env.PUBLIC_DEFAULT_COMPANION_INSTANCE && - $invidiousInstanceStore - ) { + if (!getPublicEnv('DEFAULT_COMPANION_INSTANCE') && $invidiousInstanceStore) { captionUrl = caption.url.startsWith('http') ? caption.url : `${new URL($invidiousInstanceStore).origin}${caption.url}`; } else { - captionUrl = `${import.meta.env.VITE_DEFAULT_COMPANION_INSTANCE || env.PUBLIC_DEFAULT_COMPANION_INSTANCE}${caption.url}`; + captionUrl = `${getPublicEnv('DEFAULT_COMPANION_INSTANCE')}${caption.url}`; } await player.addTextTrackAsync( diff --git a/materialious/src/lib/components/settings/Interface.svelte b/materialious/src/lib/components/settings/Interface.svelte index d06b6e1b..a248efc9 100644 --- a/materialious/src/lib/components/settings/Interface.svelte +++ b/materialious/src/lib/components/settings/Interface.svelte @@ -13,7 +13,8 @@ isUnrestrictedPlatform, setInvidiousInstance, goToInvidiousLogin, - invidiousLogout + invidiousLogout, + timeout } from '../../misc'; import { getPages, type Pages } from '../../navPages'; import ColorPicker from 'svelte-awesome-color-picker'; @@ -82,12 +83,16 @@ async function setInstance(event: Event) { event.preventDefault(); invalidInstance = !(await setInvidiousInstance(invidiousInstance)); + + await timeout(100); location.reload(); } async function setBackend(event: Event) { const select = event.target as HTMLSelectElement; backendInUseStore.set(select.value as 'ivg' | 'yt'); + + await timeout(100); location.reload(); } diff --git a/materialious/src/lib/externalSettings/index.ts b/materialious/src/lib/externalSettings/index.ts index a69b19c5..13a5ca0d 100644 --- a/materialious/src/lib/externalSettings/index.ts +++ b/materialious/src/lib/externalSettings/index.ts @@ -8,6 +8,7 @@ import { persistedStores } from './settings'; import { isOwnBackend } from '$lib/shared'; import { addOrUpdateKeyValue, getKeyValue } from '$lib/api/backend'; import { rawMasterKeyStore } from '$lib/store'; +import { getPublicEnv } from '$lib/misc'; export async function syncSettingsToBackend() { if (!isOwnBackend() || !get(rawMasterKeyStore)) return; @@ -74,13 +75,9 @@ function setStores(toSet: Record, overwriteExisting = false) { } export function loadSettingsFromEnv() { - if ( - typeof import.meta.env.VITE_DEFAULT_SETTINGS !== 'string' && - typeof env.PUBLIC_DEFAULT_SETTINGS !== 'string' - ) - return; + if (typeof getPublicEnv('DEFAULT_SETTINGS') !== 'string') return; - let raw = import.meta.env.VITE_DEFAULT_SETTINGS || env.PUBLIC_DEFAULT_SETTINGS; + let raw = getPublicEnv('DEFAULT_SETTINGS'); // Docker wraps env vars in quotes if (raw.startsWith('"')) raw = raw.slice(1); diff --git a/materialious/src/lib/misc.ts b/materialious/src/lib/misc.ts index b439fec6..02edcb0c 100644 --- a/materialious/src/lib/misc.ts +++ b/materialious/src/lib/misc.ts @@ -34,6 +34,10 @@ import { isOwnBackend } from './shared'; import { Browser } from '@capacitor/browser'; import { clearFeedYTjs } from './api/youtubejs/subscriptions'; +export function getPublicEnv(envName: string): string | undefined { + return env[`PUBLIC_${envName}`] ?? import.meta.env[`VITE_${envName}`]; +} + export function isMobile(): boolean { const userAgent = navigator.userAgent; @@ -83,10 +87,9 @@ export interface PeerInstance { export function determinePeerJsInstance(): PeerInstance { return { - host: - import.meta.env.VITE_DEFAULT_PEERJS_HOST || env.PUBLIC_DEFAULT_PEERJS_HOST || '0.peerjs.com', - path: import.meta.env.VITE_DEFAULT_PEERJS_PATH || env.PUBLIC_DEFAULT_PEERJS_PATH || '/', - port: import.meta.env.VITE_DEFAULT_PEERJS_PORT || env.PUBLIC_DEFAULT_PEERJS_PORT || 443 + host: getPublicEnv('DEFAULT_PEERJS_HOST') || '0.peerjs.com', + path: getPublicEnv('DEFAULT_PEERJS_PATH') || '/', + port: getPublicEnv('DEFAULT_PEERJS_PORT') ? Number(getPublicEnv('DEFAULT_PEERJS_PORT')) : 443 }; } diff --git a/materialious/src/lib/store.ts b/materialious/src/lib/store.ts index 2b985f69..3ccf1605 100644 --- a/materialious/src/lib/store.ts +++ b/materialious/src/lib/store.ts @@ -23,7 +23,7 @@ import type { VideoPlay } from './api/model'; import type { ParsedDescription } from './description'; -import { ensureNoTrailingSlash } from './misc'; +import { ensureNoTrailingSlash, getPublicEnv } from './misc'; import type { EngineFallback } from './api/misc'; function createListenerFunctions(): { @@ -89,11 +89,9 @@ function ifNotWebDefault(givenValue: any, defaultValue: any): any { export const invidiousInstanceStore: Writable = persist( writable( - !import.meta.env.VITE_DEFAULT_INVIDIOUS_INSTANCE || !env.PUBLIC_DEFAULT_INVIDIOUS_INSTANCE + !getPublicEnv('DEFAULT_INVIDIOUS_INSTANCE') ? undefined - : ensureNoTrailingSlash( - import.meta.env.VITE_DEFAULT_INVIDIOUS_INSTANCE || env.PUBLIC_DEFAULT_INVIDIOUS_INSTANCE - ) + : ensureNoTrailingSlash(getPublicEnv('DEFAULT_INVIDIOUS_INSTANCE')) ), createStorage(), 'invidiousInstance' @@ -198,8 +196,7 @@ export const returnYtDislikesStore = persist(writable(false), createStorage(), ' export const returnYTDislikesInstanceStore: Writable = persist( writable( ifNotWebDefault( - import.meta.env.VITE_DEFAULT_RETURNYTDISLIKES_INSTANCE || - env.PUBLIC_DEFAULT_RETURNYTDISLIKES_INSTANCE, + getPublicEnv('DEFAULT_RETURNYTDISLIKES_INSTANCE'), 'https://ryd-proxy.materialio.us' ) ), @@ -211,9 +208,7 @@ export const synciousStore = persist(writable(false), createStorage(), 'syncious export const synciousInstanceStore: Writable = persist( writable( ifNotWebDefault( - import.meta.env.VITE_DEFAULT_SYNCIOUS_INSTANCE || - import.meta.env.VITE_DEFAULT_API_EXTENDED_INSTANCE || - env.PUBLIC_DEFAULT_RETURNYTDISLIKES_INSTANCE, + getPublicEnv('DEFAULT_SYNCIOUS_INSTANCE') || getPublicEnv('DEFAULT_API_EXTENDED_INSTANCE'), 'https://extended-api.materialio.us' ) ), @@ -286,11 +281,7 @@ export const interfaceAndroidUseNativeShare = persist( export const sponsorBlockStore = persist(writable(true), createStorage(), 'sponsorBlock'); export const sponsorBlockUrlStore: Writable = persist( - writable( - import.meta.env.VITE_DEFAULT_SPONSERBLOCK_INSTANCE || - env.PUBLIC_DEFAULT_SPONSERBLOCK_INSTANCE || - 'https://sponsor.ajay.app' - ), + writable(getPublicEnv('DEFAULT_SPONSERBLOCK_INSTANCE') || 'https://sponsor.ajay.app'), createStorage(), 'sponsorBlockUrl' ); @@ -311,22 +302,14 @@ export const sponsorBlockTimelineStore: Writable = persist( ); export const deArrowInstanceStore = persist( - writable( - import.meta.env.VITE_DEFAULT_DEARROW_INSTANCE || - env.PUBLIC_DEFAULT_DEARROW_INSTANCE || - 'https://sponsor.ajay.app' - ), + writable(getPublicEnv('DEFAULT_DEARROW_INSTANCE') || 'https://sponsor.ajay.app'), createStorage(), 'deArrowInstance' ); export const deArrowEnabledStore = persist(writable(false), createStorage(), 'deArrowEnabled'); export const deArrowTitlesOnly = persist(writable(true), createStorage(), 'deArrowTitlesOnly'); export const deArrowThumbnailInstanceStore = persist( - writable( - import.meta.env.VITE_DEFAULT_DEARROW_THUMBNAIL_INSTANCE || - env.PUBLIC_DEFAULT_DEARROW_THUMBNAIL_INSTANCE || - 'https://dearrow-thumb.ajay.app' - ), + writable(getPublicEnv('DEFAULT_DEARROW_THUMBNAIL_INSTANCE') || 'https://dearrow-thumb.ajay.app'), createStorage(), 'deArrowThumbnailInstance' ); diff --git a/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts b/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts index 8a1f0a8c..76ea54e3 100644 --- a/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts +++ b/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts @@ -73,18 +73,7 @@ async function proxyRequest( } } - const requestHeaders = new Headers(request.headers); - for (const key of [ - 'referer', - 'x-forwarded-for', - 'x-requested-with', - 'sec-ch-ua-mobile', - 'sec-ch-ua', - 'sec-ch-ua-platform', - 'content-length' - ]) { - requestHeaders.delete(key); - } + const requestHeaders = new Headers(); requestHeaders.set('host', urlToProxyObj.host); requestHeaders.set('origin', urlToProxyObj.origin); @@ -123,7 +112,7 @@ async function proxyRequest( throw error(500, errorMsg); } - const responseHeaders = new Headers(response.headers); + const responseHeaders = new Headers(); responseHeaders.set('transfer-encoding', 'chunked'); responseHeaders.delete('content-encoding'); responseHeaders.set('access-control-allow-origin', request.headers.get('origin') ?? ''); From 3f112ada56ab7dfa2ff661b5644de2ee9c0b16f6 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Tue, 17 Feb 2026 20:28:42 +1300 Subject: [PATCH 4/7] Added option to disable captcha --- docs/DOCKER-FULL.md | 6 ++++ materialious/src/lib/server/captcha.ts | 3 ++ materialious/src/lib/shared/index.ts | 4 ++- .../routes/(app)/internal/login/+page.svelte | 34 ++++++++++--------- .../src/routes/api/user/create/+server.ts | 4 +-- .../src/routes/api/user/login/+server.ts | 4 +-- 6 files changed, 34 insertions(+), 21 deletions(-) diff --git a/docs/DOCKER-FULL.md b/docs/DOCKER-FULL.md index 73f21cd8..64a57f2e 100644 --- a/docs/DOCKER-FULL.md +++ b/docs/DOCKER-FULL.md @@ -12,6 +12,9 @@ invidious_companion: public_url: "http://companion.example.com/companion" ``` +### Proof-of-work Captcha +Will only work while using HTTPS. If in HTTP set `PUBLIC_CAPTCHA_DISABLED` to `true` + ### Docker Compose ```yaml @@ -42,6 +45,9 @@ services: # Allow anyone to register PUBLIC_REGISTRATION_ALLOWED: "false" + # Disable POW Captcha + PUBLIC_CAPTCHA_DISABLED: "false" + # Allow any domain in proxy # This shouldn't be used unless you KNOW what your doing # requires VITE_REGISTRATION_ALLOWED to be false diff --git a/materialious/src/lib/server/captcha.ts b/materialious/src/lib/server/captcha.ts index a8636118..4b1b5cdc 100644 --- a/materialious/src/lib/server/captcha.ts +++ b/materialious/src/lib/server/captcha.ts @@ -1,8 +1,11 @@ import { error } from '@sveltejs/kit'; import { verifySolution } from 'altcha-lib'; import { getSequelize } from './database'; +import { isOwnBackend } from '$lib/shared'; export async function verifyCaptcha(payload: string, key: string, maxUses: number = -1) { + if (isOwnBackend()?.captchaDisabled) return; + const passedCaptcha = await verifySolution(payload, key, true); if (!passedCaptcha) { throw error(400, 'Unsupported payload'); diff --git a/materialious/src/lib/shared/index.ts b/materialious/src/lib/shared/index.ts index e8d6a5f8..de9f35be 100644 --- a/materialious/src/lib/shared/index.ts +++ b/materialious/src/lib/shared/index.ts @@ -6,6 +6,7 @@ export type IsOwnBackend = { requireAuth: boolean; registrationAllowed: boolean; allowAnyProxy: boolean; + captchaDisabled: boolean; }; export function isOwnBackend(): IsOwnBackend | null { @@ -16,6 +17,7 @@ export function isOwnBackend(): IsOwnBackend | null { internalAuth: env.PUBLIC_INTERNAL_AUTH !== 'false', requireAuth: env.PUBLIC_REQUIRE_AUTH !== 'false', registrationAllowed: env.PUBLIC_REGISTRATION_ALLOWED === 'true', - allowAnyProxy: env.PUBLIC_DANGEROUS_ALLOW_ANY_PROXY === 'true' + allowAnyProxy: env.PUBLIC_DANGEROUS_ALLOW_ANY_PROXY === 'true', + captchaDisabled: env.PUBLIC_CAPTCHA_DISABLED === 'true' }; } diff --git a/materialious/src/routes/(app)/internal/login/+page.svelte b/materialious/src/routes/(app)/internal/login/+page.svelte index bf6c5af9..ef374b6d 100644 --- a/materialious/src/routes/(app)/internal/login/+page.svelte +++ b/materialious/src/routes/(app)/internal/login/+page.svelte @@ -81,22 +81,24 @@ {/if} -
- { - const { payload, state } = ev.detail; - if (state === 'verified' && payload) { - captchaPayload = payload; - } - }} - > -
+ {#if !isOwnBackend()?.captchaDisabled} +
+ { + const { payload, state } = ev.detail; + if (state === 'verified' && payload) { + captchaPayload = payload; + } + }} + > +
+ {/if}