diff --git a/.forgejo/workflows/publish-docker.yml b/.forgejo/workflows/publish-docker.yml index f536d91..594e5a3 100644 --- a/.forgejo/workflows/publish-docker.yml +++ b/.forgejo/workflows/publish-docker.yml @@ -5,6 +5,9 @@ # - push sur `master` -> tags `latest` + `` # - push d'un tag `vX.Y.Z` -> tags `X.Y.Z`, `X.Y`, `latest` # - déclenchement manuel possible (Actions -> Run workflow) +# - PR vers `master` -> job `test` seul (voir `if` du job `publish` - +# sans ça, une PR depuis une branche non fusionnée pousserait quand même +# une vraie image sur le registre, `latest` compris) # # Repris de mediaDrop (.forgejo/workflows/publish-docker.yml) - mêmes # prérequis côté instance : @@ -31,6 +34,8 @@ on: push: branches: [master] tags: ['v*'] + pull_request: + branches: [master] workflow_dispatch: permissions: @@ -85,6 +90,7 @@ jobs: publish: needs: test + if: github.event_name != 'pull_request' runs-on: ubuntu-latest container: image: docker:27-cli diff --git a/README.md b/README.md index e983923..fd3f6aa 100644 --- a/README.md +++ b/README.md @@ -132,14 +132,15 @@ assumes, how a real transcode's seek handling feels once several viewers depend on the exact same one). Casting to a Chromecast (see docs/architecture.md) is the newest, -least-verified piece: the security-critical parts were checked against -the real running server directly (the party-stream/burn routes reject a -request with no auth exactly as before, and now also reject an invalid -`castToken`, both a plain 401) and the Cast SDK itself was confirmed to -load and initialize in a real browser, but there's neither a real -Chromecast nor Emby login credentials in this environment to take it -any further - the actual on-TV playback and the cast button's own -live behavior are unconfirmed. +least-verified piece, for video and music alike: the security-critical +parts were checked against the real running server directly (the +party-stream/burn routes reject a request with no auth exactly as +before, and now also reject an invalid `castToken`, both a plain 401) +and the Cast SDK itself was confirmed to load and initialize in a real +browser, but there's neither a real Chromecast nor Emby login +credentials in this environment to take it any further - the actual +on-TV playback, the cast button's own live behavior, and (for music) a +re-cast actually surviving a real track change are all unconfirmed. ## Project layout @@ -301,13 +302,21 @@ Then put it behind your existing reverse proxy like everything else - [x] Fixed catalog browsing feeling slow: image thumbnails were never cacheable (Emby's own Cache-Control/ETag were silently dropped) — see docs/architecture.md -- [x] Cast a party's video to a Chromecast (Default Media Receiver), - with a play/pause/seek remote on the sender's own screen — see - docs/architecture.md +- [x] Cast a party's video *or* listen-party music to a Chromecast + (Default Media Receiver), with a play/pause/seek remote on the + sender's own screen — music reuses the same `PlaybackDriver`/ + `CastTokenService` the video case introduced, and re-casts + in place on every track change instead of dropping the session + the way an item change does for video — see docs/architecture.md - [x] Fixed the listen-party queue's broken layout (it was reusing an - album page's row grid) and its missing album art (a track almost - never has its own image — now falls back to its album's) — see - docs/architecture.md + album page's row grid), its missing album art (a track almost + never has its own image — now falls back to its album's), and, + reported later, its fixed 480px width and a header that scrolled + away with the queue — see docs/architecture.md +- [x] Fixed a slow, freeze-prone catalog: a library grid's query fetched + an unused `Overview` field for every item, its artist list had no + cap at all, and up to 300 tiles were inserted in one synchronous + pass — see docs/architecture.md - [x] Reworked the video player's bottom bar (episode/request actions/ fullscreen, one bar instead of three floating pieces) and added a real fullscreen toggle — fullscreen now targets the whole player, diff --git a/client/src/cast.ts b/client/src/cast.ts index e5b1036..a762b4b 100644 --- a/client/src/cast.ts +++ b/client/src/cast.ts @@ -3,12 +3,13 @@ * to the Cast Application Framework SDK directly (a CDN global, loaded via * client/src/index.html's