Skip to content

Visual universal search with artwork, content grids, and verified previews - #113

Merged
debpalash merged 3 commits into
mainfrom
feat/visual-universal-search
Oct 3, 2026
Merged

debpalash merged 3 commits into
mainfrom
feat/visual-universal-search

Conversation

@debpalash

@debpalash debpalash commented Oct 2, 2026 •

Copy link
Copy Markdown
Owner

Changes

  • Make the native omnibox search across Opal from every Browse page.
  • Replace the flat result list with real artwork shelves, filtered card grids, contextual details, saved titles, and source comparisons on desktop and web.
  • Group verified catalog works and exact matching releases; keep ambiguous releases separately actionable. Reserve category coverage within a bounded 192-row wave.
  • Expand independent anime, manga, reading, music, podcast, and radio searches without replacing their Browse state. Add owned source configuration snapshots and exclude private account results from persistent search cache.
  • Add explicit official trailer previews using a separate muted native player or validated web embed; guard identity, generation, credential ownership, route changes, and teardown.
  • Stop ready artwork from fetching again every frame.

Desktop and web polish

  • Remove external player handoffs; playback stays in Opal. macOS bottom controls and dock omit the duplicate filename already carried by the native title bar.
  • Fix measured Browse artwork/cards, local library forms, loaded Settings switches, playback menus, playlist identity, populated Queue/Downloads actions, and centered torrent dialogs at wide and narrow sizes.
  • Improve caption contrast across all seven native presets and web surfaces. Bundle a lazy CJK title face; keep missing artwork labeled and preserve reduced-motion preferences.
  • Reproduce idle native SIGTERM stalls in Cocoa's event wait, then bound the macOS event pump so pending SDL quit signals reach normal cleanup.
  • Add opt-in native GPU capture targets with isolated HOME/XDG profiles, offline renderer fixtures, real generated-audio behavior checks, and control bounds assertions.

Validation

  • Native Debug build: 21/21 steps. Original isolated cached zig build run startup/API/clean-shutdown check passed in 3.6 seconds.
  • New native idle SIGTERM regression: failed against the old binary; passes on the rebuilt desktop directly and through its build launcher.
  • Headless build: 8/8 steps.
  • Unit gate: 350/350 steps, 2,630 tests passed.
  • Full feature gate: 501 checks; 487 passed, 0 failed, 14 optional skips.
  • Web lifecycle: 80/80 tests; all web JS syntax checks passed.
  • Isolated content/API runtime cases: 8/8 passed.
  • Actual native hidden SDL capture targets passed. Reviewed Search/Browse, loaded Home/Watching, all 12 loaded Settings tabs, playback/dock/More/playlist controls, populated Queue/Downloads, onboarding/queue dialogs and populated torrent file selection at 1360px and 640px. Converged control bounds assert visible actions, nonoverlap, dialog centering, and responsive rows. Generated silence WAV tests cover load, pause/mute, seek, and stable playlist identity; a null torrent-session title fallback regression passes.
  • Web visual audit: all 24 routes at desktop/narrow widths, 17 populated routes, overlays, 320px overflow checks, reduced motion and focus restoration. Private accounts use labeled renderer fixtures. No document overflow or window errors in the checked route matrix. Browser interaction p95 was 72ms for 15 measured interactions with no long tasks in that isolated run.
  • Screenshot review uses compact contact sheets and recaptures only changed states. Formatting and staged diff checks passed.

Limits

Search uses bounded first pages. Private music artwork remains withheld rather than exposing credential-bearing URLs. TMDB credentials and a provider-issued official trailer are required for previews; audio samples are not invented. Public provider uptime and personal-server access remain external conditions. Offline captures prove layout, not provider availability or torrent playback. Multi-file torrent playback/dropdown behavior still needs an isolated real torrent session. The CJK font adds a 5.9MiB embedded asset and is selected only for matching titles, without promising arbitrary Unicode coverage. See docs/browse-sources.md for the exact source matrix.

Remove duplicate macOS bottom titles and external player handoffs. Fix loaded browse cards, settings switches, playback menus, local library forms, download actions, torrent dialogs, theme contrast and CJK media titles.

Add isolated native GPU fixtures with control bounds regressions. An actual native idle SIGTERM test reproduced Cocoa event waits; bound the macOS event pump so normal cleanup runs. Validate 2630 units, 487 feature checks with no failures, 80 web tests, native and headless builds, and 8 isolated content runtime cases.
Keep the published product presentation and artwork, remove the obsolete VLC instruction, and preserve the original documentation working-tree content. Integration gates: 2630 unit tests and 487 feature checks passed, zero failures, 14 optional skips.
@debpalash
debpalash merged commit 25e11d9 into main Oct 3, 2026
10 checks passed
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.

1 participant