Commit Graph

106 Commits (0778c2b23efd5c82fa6ce45ef1e83ca770c2e5ce)

Author SHA1 Message Date
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
zijiren233 794b4d158f
ci: align checks with repository policies 2 months ago
zijiren233 5425eaf436 chore: replace synctv-org backend with SyncTV v1.0.0 2 months ago
zijiren233 c6be2bc40f feat: enable freebsd cgo 11 months ago
zijiren233 ff29d6ef8b fix: build target remove frebsd amd/arm and netbsd 1 year ago
zijiren233 aa27d0051e fix: ci lint 1 year ago
zijiren233 3bfd995b17 fix: change release web to dockerfile 1 year ago
zijiren233 0cbbc23eae fix: ci 1 year ago
zijiren233 cd6a57cbd5 chore: bump go mod and enable cgo build for linux、darwin、windows/x86 1 year ago
zijiren233 0ba940deb3 chore: add -v build flag 1 year ago
zijiren233 91d6fca191 chore: add -v build flag 1 year ago
zijiren233 39c28e6458 fix: ci lint 1 year ago
zijiren233 6628b97d0f fix: ci lint 1 year ago
zijiren233 7d38154492 fix: ci lint 1 year ago
zijiren233 43ba071e35 feat: ci 1 year ago
zijiren233 34cb976734 fix: 429 1 year ago
zijiren233 4d351d316d fix: update workflow disable depbot push image 2 years ago
zijiren233 7d02c19cf1 fix: wazero arm64 2 years ago
zijiren233 7765aa23fd feat: enable arm micro 2 years ago
zijiren233 04ae3fd266 fix: repeated push tag 2 years ago
zijiren233 58ddbdd38f fix: workflow 2 years ago
zijiren 7bddf8fc7f
feat: helm (#283)
* feat: helm

* fix: value
2 years ago
zijiren233 3294ff7cee fix: pr no push 2 years ago
zijiren233 0b55b409b7 fix: need login when build docker 2 years ago
zijiren233 5680d2e922 fix: need login when build docker 2 years ago
zijiren233 f1dc64dcc2 fix: no need login when build docker 2 years ago
zijiren a5f0a0f3a4
feat: docker build arm64 runson arm (#282)
* feat: arm64 runner
2 years ago
zijiren233 f81dc099ee fix: db 2 years ago
zijiren233 6d1bc801cd fix: ci 2 years ago
zijiren233 cf2024dd19 fix: ci 2 years ago
zijiren233 fceb427523 fix: ci 2 years ago
zijiren233 23064f1e40 fix: ci 2 years ago
zijiren233 6cd77c1f34 fix: ci 2 years ago
zijiren233 4711aa2fe7 fix: ci 2 years ago
zijiren233 e72994edd9 fix: ci tar dir 2 years ago
zijiren233 083aedae12 feat: release ci 2 years ago
zijiren233 6e2585da39 fix: ci 2 years ago
zijiren233 1da3b88591 fix: ci 2 years ago
zijiren233 2f68e5fc8d fix: artifacts name 2 years ago
zijiren233 715f4255ec fix: ci 2 years ago
zijiren233 f7bd944b21 fix: target 2 years ago
zijiren233 b6fa067023 fix: ci 2 years ago
zijiren233 9b7f7c8047 fix: env name 2 years ago
zijiren233 c6421992e5 feat: build args 2 years ago
zijiren233 301604704e fix: endwith 2 years ago
zijiren233 8ccb30da13 fix: no need free disk 2 years ago
zijiren233 1bbd38295f chore: disable arm64 micro 2 years ago
zijiren233 2010e1dc8f fix: git workflow need checkout submodule 2 years ago
zijiren233 250a8ec250 chore: build 2 years ago
zijiren233 fe130161a8 chore: update readme 2 years ago