diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e5962dce..045c08f1 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -13,7 +13,7 @@ jobs:
quality:
runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04' || fromJSON('["self-hosted","Linux","X64","arko","typetype"]') }}
steps:
- - uses: actions/checkout@v6.0.2
+ - uses: actions/checkout@v7.0.1
- uses: oven-sh/setup-bun@v2.2.0
with:
@@ -68,7 +68,7 @@ jobs:
needs: quality
runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04' || fromJSON('["self-hosted","Linux","X64","arko","typetype"]') }}
steps:
- - uses: actions/checkout@v6.0.2
+ - uses: actions/checkout@v7.0.1
- uses: oven-sh/setup-bun@v2.2.0
with:
diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml
index 140c75f4..f15f1f21 100644
--- a/.github/workflows/coverage.yml
+++ b/.github/workflows/coverage.yml
@@ -13,7 +13,7 @@ jobs:
coverage:
runs-on: ${{ github.event_name == 'pull_request' && 'ubuntu-24.04' || fromJSON('["self-hosted","Linux","X64","arko","typetype"]') }}
steps:
- - uses: actions/checkout@v6.0.2
+ - uses: actions/checkout@v7.0.1
- uses: oven-sh/setup-bun@v2.2.0
with:
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index 9ca8bac9..9f15fa93 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -30,7 +30,7 @@ jobs:
metadata-json: ${{ steps.meta.outputs.json }}
version: ${{ steps.info.outputs.version }}
steps:
- - uses: actions/checkout@v6.0.2
+ - uses: actions/checkout@v7.0.1
- uses: oven-sh/setup-bun@v2.2.0
with:
@@ -58,7 +58,7 @@ jobs:
- name: Extract image metadata
id: meta
- uses: docker/metadata-action@v6.0.0
+ uses: docker/metadata-action@v6.2.0
with:
images: ${{ steps.info.outputs.image }}
tags: |
@@ -84,28 +84,28 @@ jobs:
- platform: linux/arm64
arch: arm64
steps:
- - uses: actions/checkout@v6.0.2
+ - uses: actions/checkout@v7.0.1
- name: Isolate Docker credentials
run: echo "DOCKER_CONFIG=$RUNNER_TEMP/docker-config" >> "$GITHUB_ENV"
- - uses: docker/login-action@v4.1.0
+ - uses: docker/login-action@v4.5.2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: docker/setup-qemu-action@v4.1.0
+ - uses: docker/setup-qemu-action@v4.2.0
if: matrix.arch == 'arm64'
with:
platforms: arm64
cache-image: false
- - uses: docker/setup-buildx-action@v4.0.0
+ - uses: docker/setup-buildx-action@v4.2.0
- name: Build and push platform image
id: build
- uses: docker/build-push-action@v7.1.0
+ uses: docker/build-push-action@v7.3.0
with:
context: .
build-args: |
@@ -158,13 +158,13 @@ jobs:
pattern: frontend-digest-*-${{ github.run_id }}-${{ github.run_attempt }}
merge-multiple: true
- - uses: docker/login-action@v4.1.0
+ - uses: docker/login-action@v4.5.2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: docker/setup-buildx-action@v4.0.0
+ - uses: docker/setup-buildx-action@v4.2.0
- name: Publish manifest list
id: manifest
diff --git a/Dockerfile b/Dockerfile
index 436035f0..74c1717a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -12,8 +12,11 @@ RUN bun install --frozen-lockfile
COPY apps/web ./apps/web
RUN bun run --cwd apps/web build
+RUN find apps/web/dist -type f \
+ \( -name '*.css' -o -name '*.html' -o -name '*.js' -o -name '*.json' -o -name '*.svg' \) \
+ -exec gzip -9 -k '{}' \;
-FROM nginx:1.31.0-alpine AS runner
+FROM nginx:1.31.3-alpine AS runner
ARG BUILD_VERSION=0.1.0
ARG BUILD_REVISION=development
ARG BUILD_TIME=unknown
diff --git a/apps/web/package.json b/apps/web/package.json
index c11feb22..1a4728d4 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -1,7 +1,7 @@
{
"name": "@typetype/web",
"private": true,
- "version": "1.2.4",
+ "version": "1.3.0",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/apps/web/public/import-cooking-chef.gif b/apps/web/public/import-cooking-chef.gif
deleted file mode 100644
index 8df21e25..00000000
Binary files a/apps/web/public/import-cooking-chef.gif and /dev/null differ
diff --git a/apps/web/public/import-dudu-cooking.gif b/apps/web/public/import-dudu-cooking.gif
deleted file mode 100644
index 7d9d873e..00000000
Binary files a/apps/web/public/import-dudu-cooking.gif and /dev/null differ
diff --git a/apps/web/public/member-only.gif b/apps/web/public/member-only.gif
deleted file mode 100644
index 7bee0d9f..00000000
Binary files a/apps/web/public/member-only.gif and /dev/null differ
diff --git a/apps/web/src/components/embed-player-shell.tsx b/apps/web/src/components/embed-player-shell.tsx
index 9716ecf8..fed8f05d 100644
--- a/apps/web/src/components/embed-player-shell.tsx
+++ b/apps/web/src/components/embed-player-shell.tsx
@@ -8,7 +8,6 @@ import { useWatchVttAssets } from "../hooks/use-watch-layout-assets";
import { useWatchSponsorBlock } from "../hooks/use-watch-sponsorblock";
import { getOriginalAudioLocale } from "../lib/audio-track";
import { resolveEmbedAutoplay } from "../lib/embed-playback";
-import type { PlaybackMode } from "../lib/playback-mode";
import { toPublicWatchParam } from "../lib/watch-url";
import type { VideoStream } from "../types/stream";
import { EmbedError, PLAYBACK_FAILED_MESSAGE } from "./embed-error";
@@ -20,7 +19,6 @@ type Props = {
startTime: number;
autoplay: boolean;
sessionEnabled: boolean;
- playbackMode: PlaybackMode;
};
export function EmbedPlayerShell({
@@ -29,13 +27,12 @@ export function EmbedPlayerShell({
startTime,
autoplay,
sessionEnabled,
- playbackMode,
}: Props) {
const { settings, settingsReady, update } = useSettings({
forceAnonymous: !sessionEnabled,
});
const isLive = stream.streamType === "live_stream" || stream.streamType === "audio_live_stream";
- const player = usePlayerError(stream, isLive, playbackMode);
+ const player = usePlayerError(stream, isLive);
const handleVolumeChange = useVolumeSync(update.mutate);
const positionRef = useRef(0);
diff --git a/apps/web/src/components/navbar-playback-mode.tsx b/apps/web/src/components/navbar-playback-mode.tsx
deleted file mode 100644
index 9516748d..00000000
--- a/apps/web/src/components/navbar-playback-mode.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import { AudioWaveform } from "lucide-react";
-import { usePlaybackMode } from "../hooks/use-playback-mode";
-
-export function NavbarPlaybackMode() {
- const { playbackMode, setMode } = usePlaybackMode();
- const sabrEnabled = playbackMode === "sabr";
- const label = sabrEnabled ? "Use classic playback" : "Use SABR playback";
-
- return (
-
- );
-}
diff --git a/apps/web/src/components/navbar.tsx b/apps/web/src/components/navbar.tsx
index 97c45422..05a84882 100644
--- a/apps/web/src/components/navbar.tsx
+++ b/apps/web/src/components/navbar.tsx
@@ -10,7 +10,6 @@ import { useUiStore } from "../stores/ui-store";
import { NavbarAccountControls } from "./navbar-account-controls";
import { NavbarLeadingControl } from "./navbar-leading-control";
import { NavbarNotifications } from "./navbar-notifications";
-import { NavbarPlaybackMode } from "./navbar-playback-mode";
import { NavbarSearch } from "./navbar-search";
import { Toast } from "./toast";
@@ -90,7 +89,6 @@ export function Navbar() {
{canOpenSearch && !isMobile && }
-
{
- if (readPlaybackMode() === "legacy") setOpen(true);
- return subscribeClassicPlaybackRequest(() => setOpen(true));
- }, []);
-
- useEffect(() => {
- if (!open) return;
- const previousOverflow = document.body.style.overflow;
- document.body.style.overflow = "hidden";
- function onKeyDown(event: KeyboardEvent) {
- if (event.key === "Escape") setOpen(false);
- }
- document.addEventListener("keydown", onKeyDown);
- return () => {
- document.body.style.overflow = previousOverflow;
- document.removeEventListener("keydown", onKeyDown);
- };
- }, [open]);
-
- if (!open) return null;
-
- function useSabr() {
- setPlaybackMode("sabr");
- setOpen(false);
- }
-
- function continueWithClassic() {
- setPlaybackMode("legacy");
- setOpen(false);
- }
-
- return createPortal(
- <>
-