Commit Graph
3 Commits
Author SHA1 Message Date
0694787504 fix(overlays): show_status persistence + card overlay layout fixes (#335)
* fix(metadata): persist series show_status from provider metadata

Plugin-reported series status (proto status field 31) was mapped into
MetadataResult.ShowStatus but dropped by both metadataResultToItem and
itemToMetadataResult, so media_items.show_status stayed empty for every
movie and series - only the manga enrichment path ever wrote it. This
left the Show Status card overlay permanently blank for series.

- carry ShowStatus through both converters; series values normalize to
  a canonical lowercase domain (returning/ended/cancelled/in_production/
  upcoming) so TMDB "Returning Series"/"Canceled" and TVDB
  "Continuing"/"Upcoming" converge on one spelling
- pass non-series values through verbatim so the manga status domain
  ("Ongoing", ...) can never be mangled by a generic refresh round-trip
- round-tripping the existing item's status also stops refreshes from
  wiping a previously persisted value via show_status = EXCLUDED.show_status
- extend the web overlay formatter with continuing/upcoming/planned

TMDB/TVDB plugins need follow-up changes to actually emit the status
field; prepped separately in their repos.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(web): overlay badge layout, ordering, and wordmark rendering

Fixes from a full card-overlay audit (every issue verified by DOM
geometry measurement before/after):

- render each card edge as one flex row holding both corner stacks so
  opposing badges share the width (min-w-0 + truncate) instead of
  overlapping on narrow cards; long labels ellipsize instead of
  wrapping over the opposite corner
- honor prefs.order via orderedOverlaysForPosition — the renderer
  previously ignored the stored order entirely
- cap corners at 3 badges so maxed-out configs can't collide with the
  opposite vertical corner
- lift bottom-right badges above the card menu button, which is always
  visible on touch devices and occluded them
- suppress the text label when a wordmark icon (HDR10/ATMOS/AV1/HDR)
  already spells it — pill/vibrant presets rendered "HDR10 HDR10" —
  and widen the wordmark viewBoxes, which clipped their own text;
  drop the never-used iconOnly flag the wordmark rule supersedes
- standalone resolution badge now uses prettyResolution ("4K", not
  "2160P"), matching the combined badge
- manga cards skip generic overlays (their status/count chips own both
  top corners) and the two chips now share a row and truncate instead
  of overlapping each other
- useOverlayPrefs returns null while loading so cards no longer flash
  default badges before the user's config or admin kill switch arrives
- settings rows for Resolution/HDR now say why they're hidden while
  the combined badge is enabled
- add a CardOverlays test suite covering every registered overlay,
  ordering, suppression, wordmarks, the corner cap, and menu clearance

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 17:16:38 -04:00
2933e0581f fix(web): make pre-merge frontend checks pass at HEAD (prettier drift + 15 stale tests) (#119)
* style(web): run prettier over drifted files

prettier --check was failing on 19 files at HEAD. The pinned prettier
version (3.8.1) has not changed since the initial migration, so the
drift came from unformatted commits, not a toolchain bump. Formatting
changes only, no behavior change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test(web): sync stale test harnesses with current components

15 tests across 6 files were failing at HEAD; the components were
committed already out of sync with their tests in the initial
migration. All fixes are in test files only:

- SectionRow / SeriesContent: mock the watch playback controller
  required by ContinueWatchingCard and MediaItemMenu, mock the new
  useSimilarItems hook, add useOptionalAuth to the auth mock, and
  wrap renders in QueryClientProvider for MediaItemMenu query hooks
- SeriesContent: read rating from item.user_rating (the useRating
  hook no longer exists)
- ProfilesSettings: add useHouseholdSessions to the profiles mock
  for the new HouseholdStreamsPanel
- ImpersonationBanner: match the redesigned banner ("Viewing as",
  sticky full-width bar instead of sidebar offset)
- EpisodeRow: watched indicator uses the text-success token now
- profile-management: use a valid DiceBear preset ref; "adventurer"
  no longer resolves and round-trips to ""

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-09 19:17:14 -04:00
Silo Server Migration c085b12fd1 Initial Silo migration 2026-05-22 23:26:56 -04:00