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.
synctv/synctv-api/tests
zijiren 63c370876d
feat(web): add client-aware playback and reproducible UI (#433)
## Summary

- add a versioned playback client profile for browser/runtime protocol,
container, codec, header, proxy, insecure-media, and P2P-loader
capabilities
- generate compatible direct and proxy resources inside each provider
and return a structured incompatibility error when route policy leaves
no viable result
- force provider proxy delivery for browser-forbidden headers, including
affected Bilibili variants, while preserving explicit direct-only
failures
- keep legacy clients compatible and isolate capability-aware playback
cache entries
- serve `/oauth2/callback` through the same Flutter SPA entry point and
keep public discovery anonymous

## Reproducible Web UI

- move Flutter acquisition/build, source configuration, asset manifests,
Brotli/gzip compression, and compile-time embedding into the independent
`synctv-web-ui` crate
- support prebuilt distributions, local projects, and Git sources pinned
to an immutable full commit, with an ignored local override
- fingerprint source, Flutter version, build arguments, dart-defines,
builder generation, output, and compression settings
- validate cached Git repository/revision/commit identity, support
offline cache reuse, and rebuild only when relevant inputs change
- pin and checksum the Flutter SDK in the Docker Web asset stage;
backend-only builds require no Flutter, Git fetch, or network
- serve embedded assets with ETags, compression negotiation, CSP, cache
policy, Origin/CORS handling, and SPA fallback outside API/media routes

## Verification

- `cargo fmt --all -- --check`
- workspace `cargo check`, test/doc-test, and all-targets Clippy with
warnings denied
- provider tests: 200 passed, 1 ignored
- OAuth core/API tests: 72 + 16 passed
- `synctv-web-ui`: 10 passed
- `synctv-api-http --features web-ui`: 12 passed
- default Git source cold build from the pinned App commit, followed by
offline hot-cache reuse in about 1.1 seconds
- `cargo check -p synctv --features web-ui` and `docker buildx build
--check .`
- real Chrome playback, P2P, OAuth/Casdoor, multi-user sync, chat,
media, playlist, upload, settings, and playback-history flows

Companion frontend PR: https://github.com/synctv-org/synctv-app/pull/52

Release pin validation:
https://github.com/synctv-org/synctv-release/pull/9
1 month ago
..
support chore: replace synctv-org backend with SyncTV v1.0.0 2 months ago
admin_error_message_tests.rs fix: type playback identities and stabilize FNOS playback (#400) 1 month ago
admin_rate_limit_tests.rs chore: replace synctv-org backend with SyncTV v1.0.0 2 months ago
api_security_tests.rs fix: type playback identities and stabilize FNOS playback (#400) 1 month ago
chat_permission_integration_tests.rs refactor: remove low-value thin wrappers (#426) 1 month ago
client_ip_tests.rs refactor: remove low-value thin wrappers (#426) 1 month ago
client_resource_availability_tests.rs refactor: remove low-value thin wrappers (#426) 1 month ago
dynamic_playback_api_tests.rs refactor: remove low-value thin wrappers (#426) 1 month ago
email_rate_limit_tests.rs chore: replace synctv-org backend with SyncTV v1.0.0 2 months ago
grpc_layer_tests.rs chore: replace synctv-org backend with SyncTV v1.0.0 2 months ago
guest_token_validation_tests.rs fix: type playback identities and stabilize FNOS playback (#400) 1 month ago
http_integration_test.rs feat(web): add client-aware playback and reproducible UI (#433) 1 month ago
list_my_rooms_integration_tests.rs refactor: remove low-value thin wrappers (#426) 1 month ago
local_message_broadcast_tests.rs fix: type playback identities and stabilize FNOS playback (#400) 1 month ago
member_approval_api_integration_tests.rs refactor: remove low-value thin wrappers (#426) 1 month ago
oauth2_state_onetime_tests.rs feat(oauth2): add provider modes and native Apple flow 2 months ago
playlist_permission_tests.rs chore: replace synctv-org backend with SyncTV v1.0.0 2 months ago
room_join_approval_integration_tests.rs refactor: remove low-value thin wrappers (#426) 1 month ago
room_member_visibility_integration_tests.rs refactor: remove low-value thin wrappers (#426) 1 month ago
room_password_rate_limit_integration_tests.rs refactor: remove low-value thin wrappers (#426) 1 month ago
server_settings_tests.rs chore: replace synctv-org backend with SyncTV v1.0.0 2 months ago
user_room_member_matrix_integration_tests.rs refactor: remove low-value thin wrappers (#426) 1 month ago
username_reserved_words_tests.rs chore: replace synctv-org backend with SyncTV v1.0.0 2 months ago
webrtc_integration_test.rs fix(webrtc): use public STUN by default (#427) 1 month ago
websocket_test.rs refactor: remove low-value thin wrappers (#426) 1 month ago