diff --git a/mobile/src/changelog.ts b/mobile/src/changelog.ts index 76f36a9..2aae77d 100644 --- a/mobile/src/changelog.ts +++ b/mobile/src/changelog.ts @@ -16,6 +16,14 @@ export type ChangelogEntry = { }; export const CHANGELOG: ChangelogEntry[] = [ + { + id: '2026-08-13e', + date: 'August 2026', + items: [ + 'Scene titles get two lines instead of one, so you can actually read them. Before, only about one title in seven fitted; now more than half do.', + 'When a title just repeats the studio name that is already shown underneath, that part is dropped, so the space goes to the title itself.', + ], + }, { id: '2026-08-13d', date: 'August 2026', diff --git a/mobile/src/components/SceneTile.tsx b/mobile/src/components/SceneTile.tsx index 46845eb..dfee28e 100644 --- a/mobile/src/components/SceneTile.tsx +++ b/mobile/src/components/SceneTile.tsx @@ -4,7 +4,9 @@ * * Per impeccable.style/slop + Jan feedback "większe miniaturki, mniej tekstu": * - Thumb wypełnia szerokość kolumny (aspect 16:9) - * - Title 1 linijka, weight 600, letter-spacing -0.2 + * - Title do 2 linijek, weight 600, letter-spacing -0.2 (przy 1 linijce pełny tytuł + * widziało tylko 14,3% scen, mediana tytułu to 46 znaków). Gdy druga linia to studio, + * zdejmujemy jego nazwę z przodu tytułu, patrz `titleWithoutStudio`. * - Pod tytułem: 1 linia uppercase micro-meta (studio | performers | tag, wybór per ekran) * - Overlay na thumb: fav (top-left), duration (bottom-right), NEW (top-right gdy seenSince), * ✓watched (top-right gdy finished) @@ -50,6 +52,25 @@ interface Props { onLongPress?: () => void; } +/** + * Tytuł bez nazwy studia sklejonej z przodu, bo studio stoi linijkę niżej. + * + * Dotyczy 8,2% scen (pomiar na 200 tys. grywalnych, 2026-08-13): „MYLF - Aria's MILF + * Temptation" nad metą „MYLF", „Thicc 18 - POV Action…" nad „THICC 18". Powtórzenie zjada + * znaki w miejscu, gdzie ich brakuje najbardziej: mediana tytułu to 46 znaków, a w kolumnie + * mieści się ~24 na linię. + * + * Gdy po zdjęciu zostaje mniej niż 12 znaków, ODDAJEMY tytuł nietknięty — lepsze + * powtórzenie niż ogryzek w rodzaju „Scene 1". + */ +function titleWithoutStudio(title: string, studio?: string | null): string { + const t = title.trim(); + const s = (studio || '').trim(); + if (!s || t.toLowerCase().indexOf(s.toLowerCase()) !== 0) return t; + const rest = t.slice(s.length).replace(/^[\s\-–—:|·]+/, ''); + return rest.length >= 12 ? rest : t; +} + function SceneTileBase({ scene, secondLine = 'studio', seenSince, onLongPress }: Props) { const navigation = useNavigation>(); @@ -156,8 +177,12 @@ function SceneTileBase({ scene, secondLine = 'studio', seenSince, onLongPress }: ) : null} - - {scene.title} + {/* Dwie linie zamiast jednej: przy jednej pełny tytuł widziało 14,3% scen, przy + dwóch widzi 54,4%. Kafelek rośnie o ~18 px, miniaturka zostaje bez zmian. */} + + {secondLine === 'studio' + ? titleWithoutStudio(scene.title, scene.studio?.name) + : scene.title} {meta ? (