Synchronized viewing, theater, live streaming, video, long-distance relationship
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Go to file
zijiren 0183a80da8
chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483)
## Dependency updates (exact pins)

- tokio 1.53.2, tokio-util 0.7.20, hyper 1.12.0, serde_json 1.0.154,
uuid 1.28.0, toml 1.1.8, opendal 0.59.4, ammonia 4.2.3, config 0.15.27,
http-acl 0.13.1, tokio-rustls 0.26.6, retina 0.4.21, zstd 0.14.2,
ffmpeg-sys-next 9.0.1, oxc 0.154.0, webrtc/rtc 0.21.1
- **rusty_aac 0.5.0 → 1.1.0**: 1.x is the stabilized release with a
security-hardening pass (crafted fill-element panic on overflow-checked
builds, stale decoder state after failed blocks; output bit-identical
otherwise). Usage in this repo is test-only, no API changes needed
- **html-escape 0.2.15 → 0.3.0**: fixes multi-codepoint HTML entity
decoding and speeds up common named entities; `decode_html_entities` is
used by provider title extraction

Deliberately kept (documented/intentional pins): bincode 2.0.1 (3.0.0
placeholder), dashmap 7.0.0-rc2, opaque-ke 4.1.0-pre.2, webauthn-rs
0.6.1-dev, serde_yaml, testcontainers 0.27 (testcontainers-modules 0.15
requires ^0.27).

## Toolchain and CI

- nightly-2026-09-27 → **nightly-2026-10-13** (rust-toolchain.toml + all
workflows)
- removed the `cargo-features = ["trim-paths"]` gate (stabilized in
1.101)
- actions: checkout v7, cache v6, setup-node v7, dependency-review v5,
setup-helm v5, create-pull-request v8

## Code changes required by new clippy lints (2026-10-13)

- `try_from_instead_of_from_str`: `RoomResourceKind` now implements
`FromStr` (call site uses `.parse()`)
- `items_after_test_module`: moved 7 `#[cfg(test)]` modules to end of
file

## Dependency cleanup (new cargo `unused_dependencies` lint)

- removed 13 unused crate-level deps, including `tonic-web` which is now
unused workspace-wide
- moved test-only `tempfile` (synctv-proxy) and `anyhow`
(synctv-media-providers) to dev-dependencies
- kept `synctv-cluster` in synctv-livestream: referenced only by TLS
feature forwarding (`synctv-cluster/tls-*`), which the lint does not
account for — a known false positive

## Validation

- `make check`, `make check-all-targets`, `make clippy-check`, `make
fmt-check` all clean
- `cargo nextest run --workspace --run-ignored all`: **6969/6969
passed** (incl. docker-backed e2e)
2 weeks ago
.cargo perf(build): use lld on Linux and document solver/thread tuning (#477) 4 weeks ago
.config
…
.github chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
.sqlx fix: hydrate image chat events and expose room password state (#472) 2 months ago
docs release: prepare v1.0.4 (#456) 2 months ago
helm/synctv release: prepare v1.0.4 (#456) 2 months ago
migrations feat(admin): add async chat moderation cleanup (#445) 2 months ago
scripts refactor(metrics): centralize registry and lifecycle tracking (#446) 2 months ago
synctv fix: hydrate image chat events and expose room password state (#472) 2 months ago
synctv-adapter chore(deps): update backend dependencies and nightly toolchain (#476) 4 weeks ago
synctv-api feat(admin): add async chat moderation cleanup (#445) 2 months ago
synctv-api-common chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
synctv-api-grpc chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
synctv-api-http chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
synctv-cluster chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
synctv-common feat(livestream): add WebRTC ingest and playback (#454) 2 months ago
synctv-core chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
synctv-livestream chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
synctv-management chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
synctv-media-providers chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
synctv-proto refactor: simplify API request handling (#460) 4 weeks ago
synctv-proto-build feat(web): add client-aware playback and reproducible UI (#433) 2 months ago
synctv-proto-main refactor: remove low-value thin wrappers (#426) 2 months ago
synctv-proto-playback-provider feat(playlist): add browse access controls (#423) 2 months ago
synctv-proto-providers refactor: remove low-value thin wrappers (#426) 2 months ago
synctv-proxy chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
synctv-realtime chore(deps): update backend dependencies and nightly toolchain (#476) 4 weeks ago
synctv-web-ui refactor: simplify API request handling (#460) 4 weeks ago
synctv-xiu chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
.dockerignore feat(web): add client-aware playback and reproducible UI (#433) 2 months ago
.env.postgres.example
…
.env.redis.example
…
.env.synctv.example feat(web): support runtime UI assets (#440) 2 months ago
.gitattributes
…
.gitignore chore(deps): update backend dependencies and nightly toolchain (#476) 4 weeks ago
CONTRIBUTING.md perf(build): use lld on Linux and document solver/thread tuning (#477) 4 weeks ago
Cargo.lock chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
Cargo.toml chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
Dockerfile perf(build): use lld on Linux and document solver/thread tuning (#477) 4 weeks ago
LICENSE
…
Makefile refactor(metrics): centralize registry and lifecycle tracking (#446) 2 months ago
README.md feat(livestream): add WebRTC ingest and playback (#454) 2 months ago
README.zh-CN.md feat(livestream): add WebRTC ingest and playback (#454) 2 months ago
SECURITY.md
…
deny.toml chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
docker-compose.dev.yml
…
docker-compose.yml fix(webrtc): use public STUN by default (#427) 2 months ago
rust-toolchain.toml chore(deps): update dependencies and nightly toolchain to 2026-10-13 (#483) 2 weeks ago
synctv.example.yaml feat(livestream): add WebRTC ingest and playback (#454) 2 months ago

README.md

SyncTV

SyncTV

简体中文 · Website

Rust Tokio Axum gRPC PostgreSQL Redis Docker Helm Kubernetes OpenAPI Astro Starlight License

SyncTV is a Rust implementation of a real-time synchronized video watching platform with media provider integration, livestreaming, HTTP/gRPC APIs, and Kubernetes-ready horizontal scaling.

SyncTV synchronized room playback

Highlights

  • Synchronized room playback with real-time state updates.
  • Media providers for Bilibili, Twitch, YouTube, Douyin, TikTok, Huya, Douyu, AcFun, CCTV, Alist, Cloudreve, Emby/Jellyfin, FNOS, QNAP, Synology, Nextcloud, Seafile, TrueNAS, direct URLs, and livestream sources.
  • WHIP and RTMP publishing with WHEP, HLS, and HTTP-FLV playback.
  • External WHEP, RTSP, RTMP, and HTTP-FLV pull with cross-node live relay.
  • HTTP REST, public gRPC, WebSocket, management gRPC, metrics, RTMP, and STUN runtime surfaces.
  • PostgreSQL-backed durable storage with optional Redis shared state, cache, rate limiting, and cluster coordination.
  • Docker Compose and Helm deployment templates.
  • Built-in management CLI and optional OpenAPI/Swagger UI.
  • Astro Starlight documentation site with English and Simplified Chinese content.

Discussion and Contributors

Join the SyncTV Telegram discussion to talk with users and contributors about deployment, operations, media providers, client development, and the product roadmap.

SyncTV contributors

Documentation

Read the complete documentation at docs.syncs.tv.

Download the native client from the client downloads guide or SyncTV App releases. Store builds are distributed through the supported app stores.

License

MIT. See LICENSE.