Skip to content

feat(web): hide adult items from Library/Continue Watching by default, add category tabs - #109

Merged
WarlaxZ merged 1 commit into
mainfrom
feat/saved-category-tabs-core-web
Sep 2, 2026
Merged

WarlaxZ merged 1 commit into
mainfrom
feat/saved-category-tabs-core-web

Conversation

@WarlaxZ

@WarlaxZ WarlaxZ commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adult-sourced favourites and stream-history items stayed visible forever once saved — browsing the Porn category left Continue Watching full of adult items with no way to hide them (the existing adultContent setting only ever gated search-time results).
  • Adds an independent adultHistoryVisible setting (default off) that excludes adult items from Library and Continue Watching entirely, server-side — they are never even sent to the browser when it's off.
  • While splitting these lists at all, both Library and Continue Watching also gain general category tabs (Movies/TV/Anime/etc, derived per-item from its source), rather than one flat list. The Porn tab only appears once the new setting is on.
  • PR2 (follow-up) brings the same treatment to the TUI's Favourites/ContinueWatching panes and Settings pane.

Test plan

  • npm test — 3334 tests pass
  • npm run typecheck
  • npm run lint — only the pre-existing react-hooks/exhaustive-deps warning
  • npm run build
  • Manually verified via serve --web: GET /api/saved excludes adult items/tabs entirely with the setting off, includes them with it on; toggling "Adult history" in the settings dialog live-updates both tab strips with no page reload; clicking a category tab filters rows client-side with no refetch.

🤖 Generated with Claude Code

…, add category tabs

Adult-sourced favourites and stream-history items used to stay visible
forever once saved, regardless of the search-time adultContent setting —
browsing the Porn category left Continue Watching full of adult items with
no way to hide them. A new independent adultHistoryVisible setting (default
off) now gates them out entirely server-side, and while we're splitting the
lists at all, Library and Continue Watching both gain general category tabs
(Movies/TV/Anime/etc, derived from each item's source) rather than a single
flat list.

- src/sources/registry.ts: categoryForSource/isAdultSource/
  visibleWithAdultHistory/nonEmptyCategories — the shared classification and
  filtering helpers, reused by the TUI in a follow-up PR.
- src/config/config.ts: adultHistoryVisible config field + resolver +
  sanitiseSettingsPatch entry.
- src/web/wire.ts, routes.ts: PublicFavourite/PublicStreamHistoryItem gain a
  server-computed `category`; SavedResponse/LibraryResponse/
  ContinueWatchingResponse gain non-empty tab lists; savedLists/libraryAction/
  continueWatchingAction filter adult items out of every response when the
  setting is off, so they never reach the browser at all.
- src/web/static/savedModel.ts, app.ts, settingsModel.ts, index.html: tab
  strips for both lists, driven by the server-provided category lists, plus
  the new "Adult history" toggle in the settings dialog.

Verified manually via serve --web: toggling the setting live updates the tab
strips and their data with no page reload.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XddtC9qHvnPLb4xp9fiL7n
@WarlaxZ
WarlaxZ merged commit fb34d1f into main Sep 2, 2026
6 checks passed
@WarlaxZ
WarlaxZ deleted the feat/saved-category-tabs-core-web branch September 2, 2026 09:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants