Anime Desktop Application

A native Linux library and player, with persistent progress and background media work.

Anime desktop application displaying a disposable library of clearly labelled synthetic series.
Actual Qt application with a disposable synthetic library. No personal library or copyrighted episode artwork is shown.

Screenshots use synthetic or built-in fictional demonstration data.

View full screenshot

The problem

A local media library needs to preserve edits and watch progress while files change, drives disappear, and background work competes with playback. The interface also needs to remain responsive around large artwork.

My contribution

I defined the library and playback requirements, directed architecture and agent workflows, set acceptance criteria, and coordinated debugging and validation. Native playback and decoding are provided by mpv and its upstream dependencies.

Architecture

Qt Quick draws the interface. Python controllers coordinate the repository, library workers, and embedded player. SQLite migrations preserve state. The artwork worker stores lossless display derivatives, and Home prepares complete scene snapshots before a transition.

Anime Desktop Application architecture diagram. A text description follows.
Read the architecture flow
  1. 1Qt Quick interface
  2. 2Python controllers
  3. 3SQLite library + progress
  4. 4Scanner and artwork workers
  5. 5Native mpv playback
Conceptual data flow, simplified from the inspected implementation. Scroll horizontally when needed, or use the text version above. Components can communicate in both directions.

Keep user intent separate from discovered metadata

The scanner writes discovered auto_* fields while interface edits use user_* fields. Views prefer the user value. Volume identity uses filesystem UUIDs, so an unavailable drive does not automatically erase the library. Background workers handle scans and thumbnails; playback owns its own progress state.

The tradeoff

Native playback introduced a real Qt/mpv/NVIDIA integration constraint. The documented render-context failure led to embedding mpv in a child window while Qt uses Vulkan. That is a platform-specific integration choice with a clear validation boundary.

Unedited application capture on an isolated virtual display, with synthetic media and disposable state.
Read demonstration transcript

The actual application opens a disposable library with test-pattern artwork. It switches from Home to Library, opens a fictional series and its synthetic episode entries, then returns to Home. This capture demonstrates navigation, not playback performance or physical display acceptance.

337 automated cases pass in an isolated run

The complete existing suite passed on a private source copy with disposable state and offscreen/software Qt on October 21, 2026. These cases support specific library, cache, and playback contracts. They are not evidence of production-library or physical desktop acceptance.

Anime Desktop Application evidence summary
Current isolated suite337 passed
Historical Home baseline6.987 s
Historical warm Home0.869 s

Method and scope

The October 6, 2026 native artwork report records an 87.56% reduction in Home usability time on one RTX 4060/Xorg system. Its probe used a copied 1,669-episode library, stopped scanning and thumbnail generation, and did not flush OS cache. The linked raw temporary measurement files are now missing. Treat this as a historical report, not a freshly reproduced benchmark.

Verification and limits

Current checks use Python 3.12.3, PySide6 6.10.3, a private source copy, and disposable fixtures. No production database or media library was opened for this test run.

  • Offscreen tests do not prove physical display, compositor, keyboard, HDR, or audible playback behavior.
  • The earlier 305-test count belongs to the artwork report. It is not the current test count.
  • Library-size figures from the resume are omitted here because their measurement record was not established by this audit.

These results describe the inspected project and stated test conditions. They are not a guarantee for every input or machine.