diff --git a/package.json b/package.json
index c53930f..b869cee 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ui",
- "version": "6.4.36",
+ "version": "6.4.37",
"license": "BUSL-1.1",
"private": true,
"packageManager": "pnpm@9.14.4",
diff --git a/src/lib/components/SearchModal.svelte b/src/lib/components/SearchModal.svelte
index b5e1ddd..88e6146 100644
--- a/src/lib/components/SearchModal.svelte
+++ b/src/lib/components/SearchModal.svelte
@@ -174,6 +174,7 @@
{$searchStore.media ? title($searchStore.media) : ''}
diff --git a/src/lib/components/icons/Logo.svelte b/src/lib/components/icons/Logo.svelte
index c8aef16..42aa949 100644
--- a/src/lib/components/icons/Logo.svelte
+++ b/src/lib/components/icons/Logo.svelte
@@ -1 +1 @@
-
+
diff --git a/src/lib/components/ui/dialog/dialog-overlay.svelte b/src/lib/components/ui/dialog/dialog-overlay.svelte
index e8679d8..dbb3382 100644
--- a/src/lib/components/ui/dialog/dialog-overlay.svelte
+++ b/src/lib/components/ui/dialog/dialog-overlay.svelte
@@ -2,6 +2,7 @@
import { Dialog as DialogPrimitive } from 'bits-ui'
import { fade } from 'svelte/transition'
+ import { SUPPORTS } from '$lib/modules/settings'
import { cn } from '$lib/utils.js'
type $$Props = DialogPrimitive.OverlayProps
@@ -17,6 +18,6 @@
diff --git a/src/lib/components/ui/drawer/drawer-overlay.svelte b/src/lib/components/ui/drawer/drawer-overlay.svelte
index 52bd0aa..f0dcc8f 100644
--- a/src/lib/components/ui/drawer/drawer-overlay.svelte
+++ b/src/lib/components/ui/drawer/drawer-overlay.svelte
@@ -1,6 +1,7 @@
-
+
Global App Chat
Chat with other users of the app, share your thoughts, ask questions and have fun!
diff --git a/src/lib/components/ui/player/player.svelte b/src/lib/components/ui/player/player.svelte
index f4dce38..8bf007f 100644
--- a/src/lib/components/ui/player/player.svelte
+++ b/src/lib/components/ui/player/player.svelte
@@ -803,7 +803,7 @@
{/await}
{/if}
{#if stats}
-
+
×
FPS: {stats.fps}
Presented frames: {stats.presented}
@@ -816,7 +816,7 @@
Subtitle delay: {subtitleDelay} sec
{/if}
-
{#if fastForwarding}
x2
@@ -862,7 +862,7 @@
-
{mediaInfo.session.title}
+
{mediaInfo.session.title}
{mediaInfo.session.description}
diff --git a/src/lib/components/ui/player/seekbar.svelte b/src/lib/components/ui/player/seekbar.svelte
index 06d6dcc..c27e7fe 100644
--- a/src/lib/components/ui/player/seekbar.svelte
+++ b/src/lib/components/ui/player/seekbar.svelte
@@ -38,6 +38,7 @@
const dispatch = createEventDispatcher<{
seeking: null
seeked: null
+ dblclick: MouseEvent
}>()
// state
export let chapters: Chapter[] = []
@@ -125,6 +126,15 @@
export let thumbnailer: Thumbnailer
$: seekIndex = Math.max(0, Math.floor(seekTime / thumbnailer.interval))
+
+ let lastDbl = 0
+ function customDoubleClick (e: MouseEvent) {
+ const now = Date.now()
+ if (now - lastDbl < 300) {
+ dispatch('dblclick', e)
+ }
+ lastDbl = now
+ }
diff --git a/src/lib/components/ui/sidebar/sidebarlist.svelte b/src/lib/components/ui/sidebar/sidebarlist.svelte
index 85589c6..13d9592 100644
--- a/src/lib/components/ui/sidebar/sidebarlist.svelte
+++ b/src/lib/components/ui/sidebar/sidebarlist.svelte
@@ -4,6 +4,7 @@
import House from 'lucide-svelte/icons/house'
import LogIn from 'lucide-svelte/icons/log-in'
import MessagesSquare from 'lucide-svelte/icons/messages-square'
+ import Play from 'lucide-svelte/icons/play'
import Search from 'lucide-svelte/icons/search'
import Settings from 'lucide-svelte/icons/settings'
import Users from 'lucide-svelte/icons/users'
@@ -14,6 +15,7 @@
import SidebarButton from './SidebarButton.svelte'
+ import { goto } from '$app/navigation'
import { page } from '$app/stores'
import Logo from '$lib/components/icons/Logo.svelte'
import * as Avatar from '$lib/components/ui/avatar'
@@ -39,7 +41,12 @@
-
+ goto('/app/home/')} />
+{#if SUPPORTS.isAndroidTV}
+
+
+
+{/if}
diff --git a/src/lib/modules/settings/supports.ts b/src/lib/modules/settings/supports.ts
index 244d12f..a21a0ca 100644
--- a/src/lib/modules/settings/supports.ts
+++ b/src/lib/modules/settings/supports.ts
@@ -2,5 +2,6 @@ export default {
isAndroid: typeof navigator !== 'undefined' && navigator.userAgent.includes('Android'),
isAndroidTV: typeof navigator !== 'undefined' && navigator.userAgent.includes('AndroidTV'),
// @ts-expect-error yeah
+ // 32 bit, <4GB of RAM, or any Android TV
isUnderPowered: typeof navigator !== 'undefined' && (navigator.platform === 'Linux armv8l' || navigator.deviceMemory < 4 || navigator.userAgent.includes('AndroidTV'))
}
diff --git a/src/lib/modules/torrent/client.ts b/src/lib/modules/torrent/client.ts
index a7e859f..e9e915b 100644
--- a/src/lib/modules/torrent/client.ts
+++ b/src/lib/modules/torrent/client.ts
@@ -3,6 +3,7 @@ import { get } from 'svelte/store'
import { persisted } from 'svelte-persisted-store'
import native from '../native'
+import { SUPPORTS } from '../settings'
import { w2globby } from '../w2g/lobby'
import type { Media } from '../anilist'
@@ -26,7 +27,7 @@ export const server = new class ServerClient {
active = writable>()
downloaded = writable(this.cachedSet())
- stats = this._timedSafeReadable(defaultTorrentInfo, native.torrentInfo, 200)
+ stats = this._timedSafeReadable(defaultTorrentInfo, native.torrentInfo, SUPPORTS.isUnderPowered ? 3000 : 200)
protocol = this._timedSafeReadable(defaultProtocolStatus, native.protocolStatus)
@@ -36,7 +37,7 @@ export const server = new class ServerClient {
library = this._timedSafeReadable([], native.library, 120_000)
- _timedSafeReadable (defaultData: T, fn: (id: string) => Promise, duration = 5000) {
+ _timedSafeReadable (defaultData: T, fn: (id: string) => Promise, duration = SUPPORTS.isUnderPowered ? 15000 : 5000) {
return readable(defaultData, set => {
let listener = 0
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 68cb0dc..beb9611 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -47,4 +47,6 @@
-
+{#if !SUPPORTS.isAndroid}
+
+{/if}
diff --git a/src/routes/app/client/+layout.svelte b/src/routes/app/client/+layout.svelte
index 607f9f0..f6d1db7 100644
--- a/src/routes/app/client/+layout.svelte
+++ b/src/routes/app/client/+layout.svelte
@@ -47,7 +47,7 @@
}
-
+
{overview.title}
diff --git a/src/routes/app/settings/+layout.svelte b/src/routes/app/settings/+layout.svelte
index 04caa36..1fe301d 100644
--- a/src/routes/app/settings/+layout.svelte
+++ b/src/routes/app/settings/+layout.svelte
@@ -38,7 +38,7 @@
]
-
+
Settings
diff --git a/src/routes/app/w2g/[id]/+page.svelte b/src/routes/app/w2g/[id]/+page.svelte
index bd8cc13..5ecacb4 100644
--- a/src/routes/app/w2g/[id]/+page.svelte
+++ b/src/routes/app/w2g/[id]/+page.svelte
@@ -57,7 +57,7 @@
-
+
Watch Together {$w2globby?.code}
Watch videos together with friends in real-time. You can invite others to your lobby and chat while watching.