feat(tile): dwie linie tytulu + zdejmowanie powtorzonej nazwy studia
Pomiar na 200 tys. grywalnych scen >=60 s (2026-08-13): przy JEDNEJ linii
pelny tytul widzialo **14,3%** scen. Mediana tytulu to 46 znakow, a w
kolumnie dwukolumnowej siatki miesci sie ~24 na linie, wiec 85,7% tytulow
bylo przycietych. Przy dwoch liniach pelny tytul widzi 54,4%.
To SWIADOMIE odwraca czesc wczesniejszej decyzji ("Jan feedback: wieksze
miniaturki, mniej tekstu" w docstringu tego pliku) — uzgodnione, bo tamta
uwaga dotyczyla nadmiaru metadanych, nie przycinania samego tytulu.
Miniaturka zostaje w tym samym rozmiarze, rosnie tylko blok tekstu (~18 px).
Do tego `titleWithoutStudio`: gdy druga linia pokazuje studio, zdejmujemy
jego nazwe z PRZODU tytulu ("MYLF - Aria's MILF Temptation" nad meta
"MYLF"). Dotyczy 8,2% scen. Zdejmujemy tylko przedrostek, wiec studio na
koncu tytulu ("… - ATKGirlfriends") zostaje nietkniete. Gdy po zdjeciu
zostaje <12 znakow, oddajemy tytul nietkniety, bo "Scene 1" jest gorsze
niz powtorzenie. 9 przypadkow testowych na realnych tytulach.
Korekta wlasnej diagnozy z przegladu: napisalem tam, ze tytul i studio
maja niemal rowna wage. Nieprawda — 14 px display/fg vs 10 px mono/muted
wersalikami. Hierarchia byla w porzadku, problemem bylo obciecie.
This commit is contained in:
parent
7deda639bf
commit
2a163cbf2c
2 changed files with 36 additions and 3 deletions
|
|
@ -16,6 +16,14 @@ export type ChangelogEntry = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const CHANGELOG: 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',
|
id: '2026-08-13d',
|
||||||
date: 'August 2026',
|
date: 'August 2026',
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,9 @@
|
||||||
*
|
*
|
||||||
* Per impeccable.style/slop + Jan feedback "większe miniaturki, mniej tekstu":
|
* Per impeccable.style/slop + Jan feedback "większe miniaturki, mniej tekstu":
|
||||||
* - Thumb wypełnia szerokość kolumny (aspect 16:9)
|
* - 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)
|
* - 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),
|
* - Overlay na thumb: fav (top-left), duration (bottom-right), NEW (top-right gdy seenSince),
|
||||||
* ✓watched (top-right gdy finished)
|
* ✓watched (top-right gdy finished)
|
||||||
|
|
@ -50,6 +52,25 @@ interface Props {
|
||||||
onLongPress?: () => void;
|
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) {
|
function SceneTileBase({ scene, secondLine = 'studio', seenSince, onLongPress }: Props) {
|
||||||
const navigation =
|
const navigation =
|
||||||
useNavigation<NativeStackNavigationProp<RootStackParamList>>();
|
useNavigation<NativeStackNavigationProp<RootStackParamList>>();
|
||||||
|
|
@ -156,8 +177,12 @@ function SceneTileBase({ scene, secondLine = 'studio', seenSince, onLongPress }:
|
||||||
</Pressable>
|
</Pressable>
|
||||||
) : null}
|
) : null}
|
||||||
</View>
|
</View>
|
||||||
<Text style={[styles.title, dim && styles.titleDim]} numberOfLines={1}>
|
{/* Dwie linie zamiast jednej: przy jednej pełny tytuł widziało 14,3% scen, przy
|
||||||
{scene.title}
|
dwóch widzi 54,4%. Kafelek rośnie o ~18 px, miniaturka zostaje bez zmian. */}
|
||||||
|
<Text style={[styles.title, dim && styles.titleDim]} numberOfLines={2}>
|
||||||
|
{secondLine === 'studio'
|
||||||
|
? titleWithoutStudio(scene.title, scene.studio?.name)
|
||||||
|
: scene.title}
|
||||||
</Text>
|
</Text>
|
||||||
{meta ? (
|
{meta ? (
|
||||||
<Text style={styles.meta} numberOfLines={1}>
|
<Text style={styles.meta} numberOfLines={1}>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue