diff --git a/README.md b/README.md index 49da5f2c..884aae85 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,9 @@ Due to Google's policies on custom YouTube frontends, Materialious isn't availab ## Player ![Preview of player](./previews/player-preview.png) +## Transcript +![Preview of player transcript](./previews/transcript-preview.png) + ## Settings ![Preview of settings](./previews/setting-preview.png) diff --git a/docs/DOCKER.md b/docs/DOCKER.md index d84a8496..6e53f584 100644 --- a/docs/DOCKER.md +++ b/docs/DOCKER.md @@ -159,7 +159,13 @@ Materialious allows you to overwrite the default values using `VITE_DEFAULT_SETT { // Set to true to enable dark mode, or false to disable it. "darkMode": true, - + + // Force case for Videos/Playlists etc. + "forceCase": "uppercase | lowercase | sentence case | title case", + + // Any ISO 3166 country code + "region": "US", + // Specifies the theme color in hexadecimal format (e.g., #ff0000 for red). "themeColor": "#ff0000", diff --git a/materialious/android/app/build.gradle b/materialious/android/app/build.gradle index acd9401b..7aa394d7 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 11 - versionName "1.0.11" + versionCode 12 + versionName "1.1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/materialious/electron/package.json b/materialious/electron/package.json index ef098278..d082b8a0 100644 --- a/materialious/electron/package.json +++ b/materialious/electron/package.json @@ -1,6 +1,6 @@ { "name": "Materialious", - "version": "1.0.11", + "version": "1.1.0", "description": "Modern material design for Invidious.", "author": { "name": "Ward Pearce", diff --git a/materialious/package-lock.json b/materialious/package-lock.json index cd85171f..fa2b042a 100644 --- a/materialious/package-lock.json +++ b/materialious/package-lock.json @@ -1,12 +1,12 @@ { "name": "materialious", - "version": "1.0.11", + "version": "1.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "materialious", - "version": "1.0.11", + "version": "1.1.0", "dependencies": { "@capacitor-community/electron": "^5.0.1", "@capacitor/android": "^6.0.0", @@ -16,9 +16,11 @@ "@capacitor/core": "^6.0.0", "beercss": "^3.5.5", "fuse.js": "^7.0.0", + "he": "^1.2.0", "human-number": "^2.0.4", "iso-3166": "^4.3.0", "material-dynamic-colors": "^1.1.0", + "media-captions": "^1.0.3", "media-icons": "^0.10.0", "mousetrap": "^1.6.5", "peerjs": "^1.5.3", @@ -36,6 +38,7 @@ "@sveltejs/vite-plugin-svelte": "^3.1.0", "@types/eslint": "^8.56.7", "@types/event-source-polyfill": "^1.0.5", + "@types/he": "^1.2.3", "@types/human-number": "^1.0.2", "@types/mousetrap": "^1.6.15", "@typescript-eslint/eslint-plugin": "^7.8.0", @@ -3837,6 +3840,12 @@ "@types/node": "*" } }, + "node_modules/@types/he": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/he/-/he-1.2.3.tgz", + "integrity": "sha512-q67/qwlxblDzEDvzHhVkwc1gzVWxaNxeyHUBF4xElrvjL11O+Ytze+1fGpBHlr/H9myiBUaUXNnNPmBHxxfAcA==", + "dev": true + }, "node_modules/@types/human-number": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@types/human-number/-/human-number-1.0.2.tgz", @@ -7258,7 +7267,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, "bin": { "he": "bin/he" } diff --git a/materialious/package.json b/materialious/package.json index cef31c49..059f0b44 100644 --- a/materialious/package.json +++ b/materialious/package.json @@ -1,6 +1,6 @@ { "name": "materialious", - "version": "1.0.11", + "version": "1.1.0", "private": true, "scripts": { "dev": "vite dev", @@ -19,6 +19,7 @@ "@sveltejs/vite-plugin-svelte": "^3.1.0", "@types/eslint": "^8.56.7", "@types/event-source-polyfill": "^1.0.5", + "@types/he": "^1.2.3", "@types/human-number": "^1.0.2", "@types/mousetrap": "^1.6.15", "@typescript-eslint/eslint-plugin": "^7.8.0", @@ -45,9 +46,11 @@ "@capacitor/core": "^6.0.0", "beercss": "^3.5.5", "fuse.js": "^7.0.0", + "he": "^1.2.0", "human-number": "^2.0.4", "iso-3166": "^4.3.0", "material-dynamic-colors": "^1.1.0", + "media-captions": "^1.0.3", "media-icons": "^0.10.0", "mousetrap": "^1.6.5", "peerjs": "^1.5.3", diff --git a/materialious/src/lib/Player.svelte b/materialious/src/lib/Player.svelte index b658d3fc..1140990a 100644 --- a/materialious/src/lib/Player.svelte +++ b/materialious/src/lib/Player.svelte @@ -53,12 +53,6 @@ page.subscribe((pageUpdate) => loadTimeFromUrl(pageUpdate)); - export function seekTo(time: number) { - if (typeof player !== 'undefined') { - player.currentTime = time; - } - } - const proxyVideos = get(playerProxyVideosStore); onMount(async () => { diff --git a/materialious/src/lib/PlaylistThumbnail.svelte b/materialious/src/lib/PlaylistThumbnail.svelte index f45fc4ca..b594d95f 100644 --- a/materialious/src/lib/PlaylistThumbnail.svelte +++ b/materialious/src/lib/PlaylistThumbnail.svelte @@ -2,7 +2,7 @@ import { onMount } from 'svelte'; import { _ } from 'svelte-i18n'; import type { Playlist } from './Api/model'; - import { getBestThumbnail, getLetterCaseClass, truncate } from './misc'; + import { getBestThumbnail, letterCase, truncate } from './misc'; export let playlist: Playlist; export let disabled: boolean = false; @@ -66,7 +66,7 @@