@@ -7,8 +7,8 @@ android {
|
||||
applicationId "us.materialio.app"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 188
|
||||
versionName "1.13.4"
|
||||
versionCode 189
|
||||
versionName "1.13.5"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
aaptOptions {
|
||||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
||||
|
||||
@@ -85,7 +85,11 @@
|
||||
|
||||
|
||||
|
||||
<release version="1.13.4" date="2026-1-20">
|
||||
|
||||
<release version="1.13.5" date="2026-1-20">
|
||||
<url>https://github.com/Materialious/Materialious/releases/tag/1.13.5</url>
|
||||
</release>
|
||||
<release version="1.13.4" date="2026-1-20">
|
||||
<url>https://github.com/Materialious/Materialious/releases/tag/1.13.4</url>
|
||||
</release>
|
||||
<release version="1.13.3" date="2026-1-18">
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "Materialious",
|
||||
"version": "1.13.4",
|
||||
"version": "1.13.5",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "Materialious",
|
||||
"version": "1.13.4",
|
||||
"version": "1.13.5",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@capacitor-community/electron": "^5.0.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Materialious",
|
||||
"version": "1.13.4",
|
||||
"version": "1.13.5",
|
||||
"description": "Modern material design for Invidious.",
|
||||
"author": {
|
||||
"name": "Ward Pearce",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "materialious",
|
||||
"version": "1.13.4",
|
||||
"version": "1.13.5",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "npm run patch:github && vite dev",
|
||||
|
||||
@@ -91,7 +91,6 @@
|
||||
let playerCurrentPlaybackState = $state(false);
|
||||
let playerCurrentTime = $state(0);
|
||||
let playerMaxKnownTime = $state(data.video.lengthSeconds);
|
||||
let playerPauseTimeUpdates = $state(false);
|
||||
let playerIsBuffering = $state(true);
|
||||
let playerVolume = $state(0);
|
||||
let playerSettings: 'quality' | 'speed' | 'language' | 'root' = $state('root');
|
||||
@@ -109,7 +108,7 @@
|
||||
// eslint-disable-next-line no-undef
|
||||
let playerSliderDebounce: NodeJS.Timeout;
|
||||
let playerVolumeElement: HTMLElement | undefined = $state();
|
||||
let playerHideBufferBar: boolean = $state(false);
|
||||
let playerUserManualSeeking: boolean = $state(false);
|
||||
let playerIsFullscreen: boolean = $state(false);
|
||||
|
||||
const playerTimelineSlider = new Slider({
|
||||
@@ -117,7 +116,7 @@
|
||||
step: 0.1,
|
||||
value: () => playerCurrentTime,
|
||||
onValueChange: (timeToSet) => {
|
||||
playerHideBufferBar = true;
|
||||
playerUserManualSeeking = true;
|
||||
playerCurrentTime = timeToSet;
|
||||
|
||||
if (playerSliderDebounce) clearTimeout(playerSliderDebounce);
|
||||
@@ -125,7 +124,7 @@
|
||||
playerSliderDebounce = setTimeout(() => {
|
||||
if (playerElement) {
|
||||
playerElement.currentTime = timeToSet;
|
||||
playerHideBufferBar = false;
|
||||
playerUserManualSeeking = false;
|
||||
}
|
||||
}, 300);
|
||||
},
|
||||
@@ -444,6 +443,7 @@
|
||||
restoreDefaultLanguage();
|
||||
setActiveVideoTrack();
|
||||
setActiveAudioTrack();
|
||||
updateVideoPlayerHeight();
|
||||
|
||||
if ($playerCCByDefault) {
|
||||
toggleSubtitles();
|
||||
@@ -889,7 +889,7 @@
|
||||
playerElement?.addEventListener('timeupdate', () => {
|
||||
if (!playerElement) return;
|
||||
|
||||
if (!playerPauseTimeUpdates) {
|
||||
if (!playerUserManualSeeking) {
|
||||
playerCurrentTime = playerElement.currentTime ?? 0;
|
||||
}
|
||||
|
||||
@@ -1221,31 +1221,39 @@
|
||||
>
|
||||
<div class="track">
|
||||
<div class="range"></div>
|
||||
<div {...playerTimelineSlider.thumb}></div>
|
||||
<div {...playerTimelineSlider.thumb}>
|
||||
<div class="tooltip thumb-tooltip">
|
||||
{videoLength(playerCurrentTime)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div bind:this={playerBufferBar} class="buffered-bar" class:hide={playerHideBufferBar}></div>
|
||||
{#each data.content.timestamps as chapter, index (chapter)}
|
||||
<div
|
||||
class="chapter-marker"
|
||||
style:left="{(chapter.time / playerMaxKnownTime) * 100}%"
|
||||
style:width={getMarkerWidth(
|
||||
chapter.time,
|
||||
data.content.timestamps[index + 1]?.time || playerMaxKnownTime // Next chapter time or end of video
|
||||
)}
|
||||
bind:this={playerBufferBar}
|
||||
class="buffered-bar"
|
||||
class:hide={playerUserManualSeeking}
|
||||
></div>
|
||||
{/each}
|
||||
{#if !$sponsorBlockTimelineStore}
|
||||
{#each segments as segment (segment)}
|
||||
{#each data.content.timestamps as chapter, index (chapter)}
|
||||
<div
|
||||
class="chapter-marker segment-marker"
|
||||
style:left="{(segment.startTime / playerMaxKnownTime) * 100}%"
|
||||
style:width={getMarkerWidth(segment.startTime, segment.endTime)}
|
||||
class="chapter-marker"
|
||||
style:left="{(chapter.time / playerMaxKnownTime) * 100}%"
|
||||
style:width={getMarkerWidth(
|
||||
chapter.time,
|
||||
data.content.timestamps[index + 1]?.time || playerMaxKnownTime // Next chapter time or end of video
|
||||
)}
|
||||
></div>
|
||||
{/each}
|
||||
{/if}
|
||||
{#if !$sponsorBlockTimelineStore}
|
||||
{#each segments as segment (segment)}
|
||||
<div
|
||||
class="chapter-marker segment-marker"
|
||||
style:left="{(segment.startTime / playerMaxKnownTime) * 100}%"
|
||||
style:width={getMarkerWidth(segment.startTime, segment.endTime)}
|
||||
></div>
|
||||
{/each}
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{#if playerTimelineTooltipVisible}
|
||||
{#if playerTimelineTooltipVisible && !playerUserManualSeeking}
|
||||
<div class="tooltip" style="position: absolute; left: {playerTimelineMouseX}px;">
|
||||
{#if playerCloestTimestamp}
|
||||
{playerCloestTimestamp.title}
|
||||
@@ -1578,13 +1586,17 @@
|
||||
background: var(--inverse-primary);
|
||||
left: var(--percentage);
|
||||
top: 50%;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
width: 5px;
|
||||
height: 35px;
|
||||
z-index: 3;
|
||||
cursor: grab;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.thumb-tooltip {
|
||||
left: var(--percentage);
|
||||
}
|
||||
|
||||
.seek-double-click {
|
||||
background-color: var(--secondary-container);
|
||||
height: var(--video-player-height);
|
||||
@@ -1612,10 +1624,10 @@
|
||||
position: absolute;
|
||||
height: 1rem;
|
||||
background: var(--secondary);
|
||||
top: 20%;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
transform: translateY(-50%);
|
||||
z-index: 2;
|
||||
z-index: 1;
|
||||
pointer-events: none;
|
||||
border-top-right-radius: 2rem;
|
||||
border-bottom-right-radius: 2rem;
|
||||
@@ -1623,14 +1635,14 @@
|
||||
|
||||
.chapter-marker {
|
||||
position: absolute;
|
||||
top: 20%;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: 0;
|
||||
height: 1rem;
|
||||
background-color: var(--secondary);
|
||||
opacity: 0.5;
|
||||
border-radius: 2rem;
|
||||
z-index: 1;
|
||||
z-index: 2;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
+1
-1
@@ -3,7 +3,7 @@ import os
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
LATEST_VERSION = "1.13.4"
|
||||
LATEST_VERSION = "1.13.5"
|
||||
RELEASE_DATE = datetime.now().strftime("%Y-%-m-%d") # Format: YYYY-M-D
|
||||
|
||||
WORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "materialious")
|
||||
|
||||
Reference in New Issue
Block a user