Commit Graph

106 Commits (dependabot/github_actions/actions/cache-6)

Author SHA1 Message Date
dependabot[bot] fea1380704
ci: bump actions/cache from 5 to 6
Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
4 weeks ago
zijiren 2445da8630
refactor(metrics): centralize registry and lifecycle tracking (#446)
## Summary

- split Prometheus definitions into domain-owned modules backed by one
registry
- eagerly initialize every metric family and fail startup on invalid or
duplicate definitions
- add reusable RAII guards for gauges and relay durations across
cancellation, panic, and retry paths
- centralize HTTP, WebSocket, gRPC, and relay recording behind
bounded-label helpers
- enforce the 65-metric bilingual catalog from registered descriptors
- persist completed explicit-message deletion and user-ban moderation
steps
- update the pinned Rust toolchain and CI jobs to `nightly-2026-08-25`
- make the CI Clippy job fail on every Rust warning with `-D warnings`
- keep Helm configuration-validation builds visible to avoid silent-run
termination
- separate Rust caches by artifact type and let Helm reuse codegen
artifacts from the Build job
- work around the nightly global next-solver memory regression and
remove obsolete rustc recursion-limit overrides
- preserve workspace Rust flags in Docker builds while applying linker
flags to the final binary

## Compatibility

- preserve all existing metric names, HELP text, label order, and
histogram buckets
- keep route-template and bounded status/error labels
- return HTTP 500 when Prometheus exposition encoding fails
- keep the latest nightly while restoring the previous coherence-only
trait-solver behavior

## Nightly memory regression

The failed CI jobs were terminated by the runner while compiling
`synctv-api-http` (SIGTERM, exit 143). Local peak-RSS measurements for
that crate were:

| Configuration | Peak RSS |
| --- | ---: |
| `nightly-2026-08-21` | 6.62 GB |
| `nightly-2026-08-25`, global next solver | 10.76 GB |
| `nightly-2026-08-25`, `-Znext-solver=coherence` | 6.64 GB |

Rust enabled `-Znext-solver=globally` by default on nightly in
[rust-lang/rust#160619](https://github.com/rust-lang/rust/pull/160619).
The same memory blow-up is tracked in
[rust-lang/rust#161748](https://github.com/rust-lang/rust/issues/161748),
and the official tracking issue documents `-Znext-solver=coherence` as
the temporary opt-out. The workspace now applies that option in
`.cargo/config.toml`.

The Dockerfile previously set `RUSTFLAGS` for linker options, which
overrode the workspace configuration and re-enabled the global solver
inside image builds. It now uses `cargo rustc` to pass linker flags only
to the final binary, preserving the workspace solver setting for every
crate.

All rustc `#![recursion_limit = "256"]` attributes were removed. The
default limit passes with the coherence-only solver, confirming that a
higher recursion limit was unrelated to the CI termination.

## Validation

- `make build-workspace`
- `make clippy-check` (`--workspace --all-targets -- -D warnings`)
- `cargo check --locked -p synctv-api-http`
- `cargo check --locked -p synctv-api-common -p synctv-api-grpc`
- `cargo test -p synctv-api-common --lib` (655 passed, 165 Docker tests
ignored)
- `cargo test -p synctv-core metrics --lib` (9 passed)
- `make fmt-check`
- `docker build --check .`
- `make validate-helm`
- `actionlint .github/workflows/ci.yml .github/workflows/helm-ci.yml`
- `npm run validate` in `docs` (124 pages, 353 links, Astro 0
errors/warnings)
4 weeks ago
zijiren ad3a8b3930
ci: isolate documentation validation (#444) 1 month ago
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