Skip to content

Merge upstream main into Prairie - #193

Closed
JonahMMay wants to merge 485 commits into
sync/upstream-20260929from
main
Closed

JonahMMay wants to merge 485 commits into
sync/upstream-20260929from
main

Conversation

@JonahMMay

Copy link
Copy Markdown

Merge Prairie main changes onto the latest Silo upstream commit.

cursoragent and others added 30 commits July 27, 2026 15:57
Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Match web cast and crew portrait card sizing
Accept profile_id query alongside X-Profile-Id for RequireProfile, and
rewrite live HLS playlists so segment URIs keep token/profile query auth
that AVPlayer/Roku/SmartTV cannot send as headers.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Pin the guide window to a 60s clock so the React Query key stays stable;
Date.now() ISO bounds on every paint were hammering GET /livetv/guide.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Header Watch/Record now/Record next duplicated per-row guide and channel
actions and targeted a vague selected channel. Keep the 30-minute guide
lookback for currently airing shows, but only offer Record for programmes
that have not ended yet.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Programme cells were cramped at 240px/hour and 64px rows, and the grid
viewport was capped at min(70vh, 52rem). Widen the timeline, channel
column, and page container so titles and actions fit.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Drop the 30-minute lookback so the timeline begins at the current time.
Already-finished cells (e.g. 10:30–11:00 at 11:18) are filtered out;
still-airing shows that started earlier remain, clamped to the left edge.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
The accepted suggestion left a stray closing brace that broke package
typecheck and failed Go lint on PR #87.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
…th-6b7d

fix(livetv): make HLS bridge playable for native media clients
…m-6b7d

fix(web): stop Home On now from slamming /livetv/guide
Clients that omit start no longer receive a 30-minute past lookback of
ended programmes; overlap still returns currently airing shows.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Live TV: drop redundant header Watch/Record; no Record on past cells
Raise durable/eager AVIF concurrency to runtime.NumCPU (config
metadata.avif_backfill_workers; 0 = auto), skip original.avif so only
the display ladder pays for rav1e, rebuild imageutil.wasm with
+simd128, and probe display AVIFs during sibling reconcile so coverage
can converge.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Bring prairie-server up to date with upstream silo-server:
- fix(playback): stop a broken Dolby Vision RPU from hanging playback (Silo-Server#485)
- feat(diagnostics): chunked report upload fallback for proxy body caps (Silo-Server#494)

Prairie adaptations:
- Keep American spelling (behavior/honoring/neighbors) for misspell CI
- Keep cmd/prairie write-deadline comment while adopting includeWrite early-return
- Remap module paths and diagnostics spool dir to prairie-*

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Upstream's chunked upload fixture still asserted SILO-ABCDEF123456; Prairie
mints PRAIRIE- short IDs.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
chore: sync 2 commits from Silo-Server/silo-server main
Starting the timeline at exact "now" left only a thin sliver for shows
ending at the next :00/:30. Floor to the half-hour so those cells stay
readable, keep omitting already-ended programmes, and bump hour width
to 480px.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Prefer guide image_url for portrait On now cards (same shape as
movies/shows), falling back to the channel logo when artwork is missing.
pickNowNext now preserves image_url for callers.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
…ur-snap-6b7d

Live TV guide: snap to half-hour so ending-soon cells aren’t clipped
…s-6b7d

Home On now: use programme posters when guide provides artwork
…le-1a1a

fix(artwork): durable AVIF backfill, item poster priority, and throughput
Replace rav1e-WASM as the default AVIF still encoder with ffmpeg
libsvtav1 (subprocess, CGO-free). Add pluggable backends (auto|svt|
nvenc|wasm), Ada-gated NVENC with SVT fallback, a shared NumCPU encode
budget so WebP+AVIF no longer oversubscribe 4-core nodes, skip eager
AVIF when the durable queue is wired, and single-flight guard on the
backfill task. Docker installs debian ffmpeg alongside jellyfin-ffmpeg.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
golangci unused flagged nvencEncoder.mu; session gating uses the
buffered semaphore only.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
…-1a1a

perf(artwork): native SVT-AV1 AVIF encoder with optional NVENC
Replace the fixed max(iw,64) pad filter with Go-computed output size:
upscale only when below SVT's 64px floor (aspect preserved), otherwise
pad ≤1px for even yuv420 dims. Never pad to a canvas smaller than the
input. Adds regression coverage for wide logos, small sources, and odd
landscape dimensions.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
…-1a1a

fix(artwork): SVT AVIF encode for landscape/small images
Deep-link On now cards to /livetv?channel=&watch=1 so Live TV
auto-starts the channel. Disable only the channel being started
instead of every Play button while a session starts.

Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
Co-authored-by: Jonah May <JonahMMay@users.noreply.github.com>
JonahMMay and others added 28 commits September 29, 2026 15:21
…kes gain TypeMap

- govulncheck flags GO-2026-6443 in grpc v1.84.0, reachable through
  pluginhost's GRPCBroker; no tagged release fixes it yet (fix is only in a
  v1.85.0-dev pseudo-version), so grpc stays on v1.83.2 as on main.
- watchstate and plugins test fakes implement pgx v5.11's Rows.TypeMap.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
chore(renovate): hold chi <5.3, huma <2.39, prettier <3.9; skip grpc 1.84.0
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…major)

chore(deps): update go modules (non-major)
Sync upstream silo-server (2026-09-29): request routing rules, season requests, request pages rework
…elling

Four test files that arrived with the upstream sync read SILO_/PRAIRIE_
test env directly; read them through envutil like the rest.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Adds go-test-full (two shards: api/apiv2, and the rest) running every
package the coverage-gated job and the jellycompat/imageutil siblings
skip. metadata, api/handlers, playback, apiv2, scenariocatalog, database
and more previously ran nowhere in CI, which is how #174 dropped Prairie
fixes unnoticed.

Fixes surfaced by running them:
- scenariocatalog: the signup-family spec's case-folding fixture email
  had been half-rebranded (Prairie.Example.Test) while the catalog kept
  Silo.Example.Test; the required-pairing guard rejected it.
- database: the initial schema seeded jellyfin_compat.server_name as
  upstream's "Silo", so installs advertised "Silo" to Jellyfin clients
  despite the "Prairie" config default. Fresh installs now seed
  "Prairie", and a new migration moves an untouched "Silo"/"StreamApp"
  default over. The test was a text rebrand that never matched the SQL.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
feat(config): read every SILO_* setting as PRAIRIE_* through one lookup
ci: run every Go package, and fix what that surfaces
…ayback

fix(jellycompat): use Live TV HLS bridge
@coderabbitai

coderabbitai Bot commented Sep 29, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 10be7e8f-c65f-4e57-839d-8b47fc18a7ee

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@JonahMMay JonahMMay closed this Sep 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants