diff --git a/mobile/src/changelog.ts b/mobile/src/changelog.ts index 1026dab..6751f2d 100644 --- a/mobile/src/changelog.ts +++ b/mobile/src/changelog.ts @@ -16,6 +16,15 @@ export type ChangelogEntry = { }; export const CHANGELOG: ChangelogEntry[] = [ + { + id: '2026-08-14d', + date: 'August 2026', + items: [ + 'The Anime and JAV sections now have their own tag list. Opening Tags from those tabs used to show the main catalogue vocabulary, where almost every tag led to an empty screen.', + 'Tags that have no scenes are no longer listed or offered in filters. Searching the tag list used to turn up thousands of dead entries, mostly character names from animation.', + 'Quality tags (HD, 4k, 720p) are gone. They were a claim by the site rather than a fact, and the app already works out real quality from the video sources.', + ], + }, { id: '2026-08-14c', date: 'August 2026', diff --git a/mobile/src/navigation.tsx b/mobile/src/navigation.tsx index 8d984fd..a2eeaaf 100644 --- a/mobile/src/navigation.tsx +++ b/mobile/src/navigation.tsx @@ -59,7 +59,9 @@ export type RootStackParamList = { // StudioMovies: `slug` do filter movies `studio_slugs`, `studioId` (UUID) do favorite. StudioMovies: { slug: string; name: string; studioId: string }; Favorites: undefined; - Tags: undefined; + // `vertical` przynoszony z zakladki (Anime/JAV). Bez niego lista tagow pokazywala + // slownictwo GLOWNEGO feedu, wiec z Anime kazdy tag prowadzil donikad. + Tags: { vertical?: string } | undefined; TagScenes: { slug: string; name: string; vertical?: string | null }; AppLockSettings: undefined; Blacklist: undefined; diff --git a/mobile/src/screens/ScenesFilterModal.tsx b/mobile/src/screens/ScenesFilterModal.tsx index f3dc1d0..7cc7e21 100644 --- a/mobile/src/screens/ScenesFilterModal.tsx +++ b/mobile/src/screens/ScenesFilterModal.tsx @@ -89,9 +89,11 @@ export function ScenesFilterModal({ q: tagQ || undefined, per_page: 200, vertical, - // Wertykał liczy tagi na żywo i zwraca tylko swoje; w głównym feedzie - // zostawiamy dotychczasowe zachowanie. - only_with_content: vertical ? true : undefined, + // Zawsze, w obu trybach. Tag z zerem scen w danej sekcji nic nie odfiltruje, + // wiec oferowanie go w filtrze to obietnica bez pokrycia. W glownym feedzie + // takich tagow bylo 33 427 z 208 822 (cale slownictwo animacji i JAV, bo + // `tags.scene_count` z zalozenia nie liczy scen wertykalowych). + only_with_content: true, }), enabled: visible, }); diff --git a/mobile/src/screens/ScenesScreen.tsx b/mobile/src/screens/ScenesScreen.tsx index e533efe..c644ee3 100644 --- a/mobile/src/screens/ScenesScreen.tsx +++ b/mobile/src/screens/ScenesScreen.tsx @@ -219,7 +219,7 @@ export function ScenesScreen() { navigation.navigate('Tags')} + onPress={() => navigation.navigate('Tags', verticalKey ? { vertical: verticalKey } : undefined)} > Tags diff --git a/mobile/src/screens/TagsScreen.tsx b/mobile/src/screens/TagsScreen.tsx index 92a54b6..db5372c 100644 --- a/mobile/src/screens/TagsScreen.tsx +++ b/mobile/src/screens/TagsScreen.tsx @@ -1,6 +1,7 @@ // Lista tagów + tap → TagScenes. Domyślny order: popular (po liczbie scen desc). // Layout: chip-grid, bo nazwy tagów są krótkie i upacking ich w listę marnuje miejsce. -import { useNavigation } from '@react-navigation/native'; +import { useNavigation, useRoute } from '@react-navigation/native'; +import type { RouteProp } from '@react-navigation/native'; import { formatCount } from '../lib/formatCount'; import type { NativeStackNavigationProp } from '@react-navigation/native-stack'; import { useQuery } from '@tanstack/react-query'; @@ -25,6 +26,8 @@ export function TagsScreen() { const client = useClient(); const navigation = useNavigation>(); + const route = useRoute>(); + const vertical = route.params?.vertical; const [q, setQ] = useState(''); const [debouncedQ, setDebouncedQ] = useState(''); const [order, setOrder] = useState('popular'); @@ -36,8 +39,18 @@ export function TagsScreen() { }, [q]); const { data, isLoading, error, refetch, isRefetching } = useQuery({ - queryKey: ['tags', debouncedQ, order], - queryFn: () => client.listTags({ q: debouncedQ || undefined, order, per_page: 500 }), + queryKey: ['tags', debouncedQ, order, vertical ?? null], + queryFn: () => + client.listTags({ + q: debouncedQ || undefined, + order, + per_page: 500, + vertical, + // Tag z zerem scen prowadzi do pustego ekranu, wiec nie ma go po co pokazywac. + // W glownym feedzie bylo takich 33 427 z 208 822, w tym cale slownictwo + // animacji i JAV (licznik `tags.scene_count` z zalozenia pomija wertykaly). + only_with_content: true, + }), }); const total = data?.items.length ?? 0; @@ -88,7 +101,7 @@ export function TagsScreen() { - navigation.navigate('TagScenes', { slug: item.slug, name: item.name }) + navigation.navigate('TagScenes', { slug: item.slug, name: item.name, vertical }) } /> )}