fix: remove the Silo description Translate button

Merged
BL
4h ago
+71-446

Problem and reproduction

A tester on TestFlight 1.1 (8), Apple TV 4K (3rd generation), tvOS 27.0, on a Silo server, reported that the Translate button under the synopsis is partly hidden behind the cast line below it, on every movie and series.

The button is Silo's on-view description translation.
It only shows when the Silo server has AI metadata on with its on-view mode set to a button, and the title's description isn't in the viewer's metadata language yet.
On the Apple TV movie and series pages the synopsis and the button share a fixed 140 point area, the synopsis takes 112 of it, and the button doesn't fit in what's left.

I decided to remove the feature from Vivid rather than make room for it.

Implementation and impact

  • Removed the Translate button and the "Translating…" state from the movie, series and season pages on iPhone, iPad and Apple TV, including the automatic mode that translated on opening a page.
  • Removed the check Vivid made at sign-in and on each foreground to ask a Silo server whether it translates descriptions (/api/v1/metadata/ai/status, and its v2 route), and the translate-description call.
  • Removed the pendingTranslationLanguage field from the item model. The server can still send it and it is ignored.
  • On Apple TV the hero's synopsis blocks no longer take a caller-supplied view below the synopsis, since the button was the only thing that used it. The synopsis keeps its fixed height, so the rows below it stay where they were.
  • Removed publishRefetchedDetail, keepingPlayback and DetailTranslationPublishTests, which only served the button.
  • While hidden, the button was still an empty view that the stacks around it gave spacing to. A zero-size placeholder stays in its place on iPhone, iPad and the Apple TV standard hero, so nothing on the detail pages moves (without it, content under the synopsis would move up by 12 to 16 points on iPhone and iPad).
  • The privacy policy on the website and the in-app privacy text on both platforms no longer say Vivid asks a Silo server to translate descriptions, and their date is now 13 November 2026. The sentence saying Vivid doesn't send anything to an AI service itself, and that the server's operator controls any AI service the server uses, stays.

Silo only. Emby and Jellyfin never showed the button and are unchanged.
Descriptions still come back in the profile's metadata language, which Silo translates on the server. That setting is unchanged.

Anyone who relied on the button loses it. A title whose description hasn't been translated on the server now just shows the description the server returns.

Validation

  • xcodebuild build of VividTV for an Apple TV 4K (3rd generation) simulator and Vivid for an iPhone 18 Pro simulator, both ad hoc signed: both succeeded.
  • Ran those builds on a Silo profile and opened a movie page on the Apple TV, iPhone 18 Pro and iPad Pro 13-inch (M5) simulators: synopsis, credit line, technical row, selectors and actions all in place, no Translate button.
  • python3 scripts/ci/check-docs.py --base origin/main: passes.
  • Reviewed the diff for leftover references, Apple TV layout and focus, iPhone and iPad layout, and the networking, privacy text and String Catalog changes. That review found the spacing and dead code described above, both fixed here, and nothing that breaks a build.
  • Removed AIModelDecodingTests and DetailTranslationPublishTests, which only tested deleted code. No tests added.
  • Not run locally: the unit test suites (left to CI).

Performance

Not applicable, no performance claim. No benchmark was run. Vivid makes one less request to a Silo server at sign-in and on each foreground.

Testing status

  • Tested? Partly.
  • Environment: Apple TV 4K (3rd generation) on tvOS 27.0, iPhone 18 Pro and iPad Pro 13-inch (M5) simulators.
  • Revision: the commits on this branch.
  • Checks and results: movie detail pages open and lay out correctly on all three, on a Silo profile.
  • Limitations: I couldn't reproduce the report, because it needs a Silo server with on-view translation set to a button. Series and season pages were not opened after the change, and nothing was checked on a physical device or on Emby or Jellyfin.

Design impact and approval

  • Design impact: The Translate button and its progress text are gone from the detail pages on all three platforms. Nothing else moves.
  • Approval from blurbery: My own decision, made while looking at the bug report.

Documentation impact

  • website/public/privacy.html and the in-app privacy text: removed the translated descriptions sentence, kept the AI service sentence and updated the date.

  • docs/release/distribution.md: removed translated descriptions from the review server setup and the App Review notes.

  • docs/cores/silo.md: says Vivid doesn't offer Silo's on-view description translation.

  • String Catalog synced: "Translate", "Translating…" and the old privacy date are marked stale, and the new date carries its translations over.

  • I checked the docs this change affects and updated them in this PR, or explained above why none needed changes.

AI disclosure

I implemented these changes and used Claude Fable 5.2 as a tool.