Merge pull request #857 from Materialious/update/1.7.19

Update/1.7.19
This commit is contained in:
Ward
2025-04-04 16:35:56 +13:00
committed by GitHub
10 changed files with 112 additions and 49 deletions
+2 -2
View File
@@ -7,8 +7,8 @@ android {
applicationId "us.materialio.app"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 100
versionName "1.7.18"
versionCode 101
versionName "1.7.19"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
@@ -61,7 +61,11 @@
<release version="1.7.18" date="2025-4-04">
<release version="1.7.19" date="2025-4-04">
<url>https://github.com/Materialious/Materialious/releases/tag/1.7.19</url>
</release>
<release version="1.7.18" date="2025-4-04">
<url>https://github.com/Materialious/Materialious/releases/tag/1.7.18</url>
</release>
<release version="1.7.17" date="2025-4-02">
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "Materialious",
"version": "1.7.18",
"version": "1.7.19",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "Materialious",
"version": "1.7.18",
"version": "1.7.19",
"license": "MIT",
"dependencies": {
"@capacitor-community/electron": "^5.0.0",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "Materialious",
"version": "1.7.18",
"version": "1.7.19",
"description": "Modern material design for Invidious.",
"author": {
"name": "Ward Pearce",
+2 -21
View File
@@ -1,12 +1,12 @@
{
"name": "materialious",
"version": "1.7.16",
"version": "1.7.19",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "materialious",
"version": "1.7.16",
"version": "1.7.19",
"hasInstallScript": true,
"dependencies": {
"@capacitor-community/electron": "^5.0.1",
@@ -18,7 +18,6 @@
"@capacitor/core": "^6.1.2",
"@capacitor/screen-orientation": "^6.0.2",
"@capacitor/status-bar": "^6.0.1",
"@capgo/inappbrowser": "^6.6.8",
"@hugotomazi/capacitor-navigation-bar": "^4.0.1",
"beercss": "^3.8.0",
"bgutils-js": "^3.2.0",
@@ -31,7 +30,6 @@
"iso-639-1": "^3.1.5",
"material-dynamic-colors": "^1.1.1",
"media-captions": "^1.0.4",
"media-icons": "^0.10.0",
"mousetrap": "^1.6.5",
"peerjs": "^1.5.4",
"shaka-player": "^4.13.0",
@@ -1983,15 +1981,6 @@
"@capacitor/core": "^6.0.0"
}
},
"node_modules/@capgo/inappbrowser": {
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/@capgo/inappbrowser/-/inappbrowser-6.14.0.tgz",
"integrity": "sha512-bcbdR0VMcvvzLroj7gFo/he3vpnAntFXdTF3rfnj3a2Xd2KWVdFQgxm8GfY5dbwyyxUv38m+pNnyWxfVNXHqiA==",
"license": "MIT",
"peerDependencies": {
"@capacitor/core": "^6.2.0"
}
},
"node_modules/@cspotcode/source-map-support": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
@@ -8819,14 +8808,6 @@
"node": ">=16"
}
},
"node_modules/media-icons": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/media-icons/-/media-icons-0.10.0.tgz",
"integrity": "sha512-M9loX7KUWsID3T8pRSN6/+MNKPEm9dNteqJk7yfo9ZaAIEYzEd07jWTVRlRmgVMKoAh1kY7funD6Qe1prrTJMQ==",
"engines": {
"node": ">=16"
}
},
"node_modules/memoizee": {
"version": "0.4.17",
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz",
+2 -4
View File
@@ -1,6 +1,6 @@
{
"name": "materialious",
"version": "1.7.18",
"version": "1.7.19",
"private": true,
"scripts": {
"dev": "vite dev",
@@ -50,7 +50,6 @@
"@capacitor/core": "^6.1.2",
"@capacitor/screen-orientation": "^6.0.2",
"@capacitor/status-bar": "^6.0.1",
"@capgo/inappbrowser": "^6.6.8",
"@hugotomazi/capacitor-navigation-bar": "^4.0.1",
"beercss": "^3.8.0",
"bgutils-js": "^3.2.0",
@@ -63,7 +62,6 @@
"iso-639-1": "^3.1.5",
"material-dynamic-colors": "^1.1.1",
"media-captions": "^1.0.4",
"media-icons": "^0.10.0",
"mousetrap": "^1.6.5",
"peerjs": "^1.5.4",
"shaka-player": "^4.13.0",
@@ -74,4 +72,4 @@
"terser": "^5.34.1",
"youtubei.js": "^13.3.0"
}
}
}
+57 -1
View File
@@ -10,6 +10,7 @@
import { type Page } from '@sveltejs/kit';
import { GoogleVideo, Protos } from 'googlevideo';
import ISO6391 from 'iso-639-1';
import Mousetrap from 'mousetrap';
import 'shaka-player/dist/controls.css';
import shaka from 'shaka-player/dist/shaka-player.ui';
import { SponsorBlock, type Category, type Segment } from 'sponsorblock-api';
@@ -156,7 +157,7 @@
'playback_rate',
'loop',
'language',
'save_video_frame',
Capacitor.getPlatform() === 'android' ? '' : 'save_video_frame',
'statistics'
],
enableTooltips: true
@@ -494,6 +495,61 @@
if (backToOverflowButton) {
backToOverflowButton.innerHTML = 'arrow_back_ios_new';
}
Mousetrap.bind('space', () => {
if (playerElement.paused) {
playerElement.play();
} else {
playerElement.pause();
}
return false;
});
Mousetrap.bind('right', () => {
playerElement.currentTime = playerElement.currentTime + 10;
return false;
});
Mousetrap.bind('left', () => {
playerElement.currentTime = playerElement.currentTime - 10;
return false;
});
Mousetrap.bind('c', () => {
const isVisible = player.isTextTrackVisible();
if (isVisible) {
player.setTextTrackVisibility(false);
} else {
const defaultLanguage = get(playerDefaultLanguage);
const langCode = ISO6391.getCode(defaultLanguage);
const tracks = player.getTextTracks();
const subtitleTrack = tracks.find((track) => track.language === langCode);
if (subtitleTrack) {
player.selectTextTrack(subtitleTrack);
player.setTextTrackVisibility(true);
}
}
return false;
});
Mousetrap.bind('f', () => {
if (document.fullscreenElement) {
document.exitFullscreen();
} else {
playerElement.requestFullscreen();
}
return false;
});
Mousetrap.bind('shift+left', () => {
playerElement.playbackRate = playerElement.playbackRate - 0.25;
});
Mousetrap.bind('shift+right', () => {
playerElement.playbackRate = playerElement.playbackRate + 0.25;
});
});
async function loadPlayerPos() {
+20 -12
View File
@@ -140,10 +140,8 @@
.youtube-theme .shaka-overflow-menu,
.youtube-theme .shaka-settings-menu {
border-radius: 2px;
border-radius: 0.25em;
background: var(--surface-dim);
text-shadow: 0 0 2px rgb(0 0 0%);
-webkit-transition: opacity 0.1s cubic-bezier(0, 0, 0.2, 1);
transition: opacity 0.1s cubic-bezier(0, 0, 0.2, 1);
right: 10px;
bottom: 50px;
@@ -156,12 +154,14 @@
}
.youtube-theme .shaka-settings-menu button {
font-size: 12px;
font-size: 1em;
border: none;
margin: 0;
}
.youtube-theme .shaka-settings-menu button span {
margin-left: 33px;
font-size: 13px;
font-size: 1em;
}
.youtube-theme .shaka-settings-menu button[aria-selected="true"] {
@@ -181,7 +181,7 @@
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
font-size: 18px;
font-size: 1em;
padding-left: 5px;
}
@@ -219,7 +219,7 @@
-ms-flex-negative: initial;
flex-shrink: initial;
padding-left: 15px;
font-size: 13px;
font-size: 1em;
font-weight: 500;
display: -webkit-box;
display: -ms-flexbox;
@@ -232,7 +232,7 @@
.youtube-theme .shaka-overflow-menu span+span {
color: var(--primary-text);
font-weight: 400 !important;
font-size: 12px !important;
font-size: 1em !important;
padding-right: 8px;
padding-left: 0 !important;
}
@@ -249,13 +249,13 @@
.youtube-theme .shaka-back-to-overflow-button {
padding: 8px 0;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
font-size: 12px;
font-size: 1em;
color: var(--primary-text);
height: 40px;
}
.youtube-theme .shaka-back-to-overflow-button .material-icons-round {
font-size: 15px;
font-size: 1em;
padding-right: 10px;
}
@@ -290,12 +290,20 @@
}
.youtube-theme .shaka-overflow-menu-button {
font-size: 18px;
font-size: 1em;
margin-right: 5px;
}
.youtube-theme .shaka-fullscreen-button:hover {
font-size: 25px;
font-size: 1em;
-webkit-transition: font-size 0.1s cubic-bezier(0, 0, 0.2, 1);
transition: font-size 0.1s cubic-bezier(0, 0, 0.2, 1);
}
@media screen and (max-width: 650px) {
.youtube-theme .shaka-overflow-menu,
.youtube-theme .shaka-settings-menu {
top: 10px;
position: absolute;
}
}
@@ -74,6 +74,15 @@
let playerCurrentTime: number = $state(0);
$effect(() => {
if ($interfaceAutoExpandComments && comments) {
const commentSectionElement = document.getElementById('comment-section');
if (commentSectionElement) {
commentSectionElement.click();
}
}
});
playlistSettingsStore.subscribe((playlistSetting) => {
if (!data.playlistId) return;
if (data.playlistId in playlistSetting) {
@@ -214,6 +223,13 @@
});
onMount(async () => {
if ($interfaceAutoExpandDesc) {
const descriptionElement = document.getElementById('description');
if (descriptionElement) {
descriptionElement.click();
}
}
if ($syncPartyConnectionsStore) {
$syncPartyConnectionsStore.forEach((conn) => {
playerSyncEvents(conn);
@@ -562,8 +578,8 @@
</div>
<article>
<details open={$interfaceAutoExpandDesc}>
<summary class="bold none">
<details>
<summary id="description" class="bold none">
<nav>
<div class="max">
{numberWithCommas(data.video.viewCount)} views • {data.video.publishedText}
@@ -606,8 +622,8 @@
{#if comments && comments.comments.length > 0}
<article>
<details open={$interfaceAutoExpandComments}>
<summary class="none bold">
<details>
<summary id="comment-section" class="none bold">
<nav>
<div class="max">{numberWithCommas(comments.commentCount)} comments</div>
<i>expand_more</i>
+1 -1
View File
@@ -3,7 +3,7 @@ import os
import re
from datetime import datetime
LATEST_VERSION = "1.7.18"
LATEST_VERSION = "1.7.19"
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")