feat(search): ephemeral results UX, count selector, channel blocklist (frontend)
- Live-search view: a results-count selector (20/40/60/100) replaces manual load-more (the free scrape source pages until that many are gathered); an 'these results are temporary' banner with a 'Clear now' button that discards them 'as if never added' (api.clearSearch) and returns to the feed. - Channel blocklist: a Block/Unblock toggle + 'Blocked' badge on the channel page (blocked channels don't auto-explore and their videos are hidden), and a 'Blocked channels' section in the Channel manager with one-click unblock. ChannelDetail.blocked from the backend. - Admin: a 'Purge discovery' button on the Scheduler page (immediate un-kept search/explore cleanup). EN/HU/DE throughout.
This commit is contained in:
parent
f27f31b6db
commit
0c18845c34
21 changed files with 263 additions and 65 deletions
|
|
@ -16,5 +16,8 @@
|
|||
"tabVideos": "Videos",
|
||||
"tabAbout": "About",
|
||||
"loadMore": "Load more from YouTube",
|
||||
"noDescription": "This channel has no description."
|
||||
"noDescription": "This channel has no description.",
|
||||
"block": "Block channel",
|
||||
"unblock": "Unblock channel",
|
||||
"blockedBadge": "Blocked"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,5 +123,9 @@
|
|||
},
|
||||
"confirmUnsubscribe": "Unsubscribe from \"{{name}}\" on YouTube? This changes your real YouTube account. To just remove it from your feed, hide it instead.",
|
||||
"confirmReset": "Re-fetch \"{{name}}\" from scratch? This re-runs its backfill (recent + full history) and spends some API quota.",
|
||||
"searchPlaceholder": "Search channels…"
|
||||
"searchPlaceholder": "Search channels…",
|
||||
"blocked": {
|
||||
"title": "Blocked channels",
|
||||
"hint": "Their videos are hidden from your feed, Library, and live search."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,6 +96,10 @@
|
|||
"explore_grace_days": {
|
||||
"label": "Explore — grace period (days)",
|
||||
"hint": "How long an explored-but-unsubscribed channel (and its ephemeral videos) is kept before the cleanup job removes it. Subscribing keeps it permanently."
|
||||
},
|
||||
"search_grace_days": {
|
||||
"label": "Search results — grace period (days)",
|
||||
"hint": "How long an un-kept live-search result video (nobody watched / saved / subscribed to) is kept before the discovery-cleanup job removes it."
|
||||
}
|
||||
},
|
||||
"save": "Save",
|
||||
|
|
|
|||
|
|
@ -48,6 +48,11 @@
|
|||
"noResults": "No YouTube videos found.",
|
||||
"error": "YouTube search failed.",
|
||||
"loadMore": "Load more (uses quota)",
|
||||
"loadMoreFree": "Load more"
|
||||
"loadMoreFree": "Load more",
|
||||
"show": "Show",
|
||||
"ephemeralNote": "These results are temporary — they clear automatically unless you watch or save one.",
|
||||
"clearNow": "Clear now",
|
||||
"cleared_one": "Cleared {{count}} result",
|
||||
"cleared_other": "Cleared {{count}} results"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,5 +92,8 @@
|
|||
"shortsPendingHint": "Enriched videos still awaiting the Shorts probe.",
|
||||
"liveRefresh": "Live to refresh",
|
||||
"liveRefreshHint": "Live/upcoming videos (and just-ended streams without a duration yet) re-checked until they settle."
|
||||
}
|
||||
},
|
||||
"purgeDiscovery": "Purge discovery",
|
||||
"purgeDiscoveryHint": "Remove all un-kept discovery content now (search results nobody watched/saved, and explored-but-unsubscribed channels) — ignoring the grace period.",
|
||||
"purgedDiscovery": "Removed {{count}} discovery items"
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue