catacomb/src
Luna c3ff9121f6 web player: seekable transcode playback + custom controls
Transcoded videos stream through a live ffmpeg pipe with no byte ranges, so
the browser couldn't seek/rewind them at all. Fix it end to end:

- get_transcode accepts ?start=<secs> and passes -ss before -i (fast keyframe
  seek), rebasing timestamps to 0 from there.
- The player gets a custom control bar for transcode sources: play/pause, a
  scrubber driven by the known duration, current/total time, ±10s, mute +
  volume, and fullscreen, plus space / arrows / j / l / f keyboard shortcuts.
  Seeking re-requests the stream at the new offset; effective time is
  offset + element.currentTime. Every seek path (scrubber, chapters,
  transcript click, resume, save-position, chapter/transcript highlight) now
  routes through one offset-aware playerSeek()/effTime().
- Direct /files/ videos keep native <video controls> (already seekable).

Verified server-side: start=0 vs start=120 yield different streams.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 06:47:40 -07:00
..
web_ui web player: seekable transcode playback + custom controls 2026-06-13 06:47:40 -07:00
app.rs Federation: read-only browsing of a peer instance's library (3.5) 2026-06-10 17:51:44 -07:00
autotag.rs Smart auto-tagging: suggest folder groups for unfiled channels (3.4) 2026-06-10 03:38:45 -07:00
config.rs Federation: read-only browsing of a peer instance's library (3.5) 2026-06-10 17:51:44 -07:00
crash.rs Stability hardening: crash.log + disk-full preflight (2.5) 2026-05-27 02:53:56 -07:00
database.rs Index transcripts into library search (FTS), both UIs 2026-06-07 06:55:00 -07:00
disk_space.rs Stability hardening: crash.log + disk-full preflight (2.5) 2026-05-27 02:53:56 -07:00
download_options.rs web/desktop: grid + subtitle fixes, comment toggle, faster startup 2026-06-10 01:43:50 -07:00
downloader.rs web/desktop: grid + subtitle fixes, comment toggle, faster startup 2026-06-10 01:43:50 -07:00
error_class.rs Classify YouTube captcha wall as rate-limited, not "not found" 2026-06-01 08:47:14 -07:00
feed.rs Podcast / RSS feeds for the library (web, part 1) 2026-06-07 07:49:48 -07:00
fingerprint.rs web/desktop: grid + subtitle fixes, comment toggle, faster startup 2026-06-10 01:43:50 -07:00
library.rs Index transcripts into library search (FTS), both UIs 2026-06-07 06:55:00 -07:00
main.rs Federation: read-only browsing of a peer instance's library (3.5) 2026-06-10 17:51:44 -07:00
maintenance.rs Add bundled yt-dlp, music library, Plex metadata, sort by date; security + perf hardening 2026-05-23 04:54:26 -07:00
platform.rs Nest all platforms under channels_root (was: siblings) 2026-05-27 10:38:01 -07:00
plex.rs Cross-compile groundwork: make the tree build for Windows (3.1) 2026-06-10 04:22:18 -07:00
pot_provider.rs Fix POT provider: install version-matched plugin, not PyPI upstream 2026-05-31 22:24:01 -07:00
remote.rs Federation: read-only browsing of a peer instance's library (3.5) 2026-06-10 17:51:44 -07:00
stats.rs Add statistics view, editable source_url, rewrite security audit 2026-05-23 05:34:29 -07:00
theme.rs Desktop: shuffle + library backup + theme contrast fixes 2026-05-26 03:09:50 -07:00
tray.rs Cross-compile groundwork: make the tree build for Windows (3.1) 2026-06-10 04:22:18 -07:00
util.rs Robustness: recover from poisoned locks instead of cascading panics (2.5) 2026-06-06 23:49:56 -07:00
vtt.rs Transcript viewer + search, in both UIs (3.x) 2026-06-07 05:44:33 -07:00
web.rs web player: seekable transcode playback + custom controls 2026-06-13 06:47:40 -07:00
ytdlp_bin.rs Bundled yt-dlp: install nightly (--pre) to fix broken impersonation 2026-06-01 04:22:56 -07:00