AimesSoft/NipaPlay-Reload
60.3
Adequate · 19 September 2026
468.2k
lines of production code
Dart
with Rust
1
measurement over time
What this system is
NipaPlay is a cross-platform video player and media library application built with Flutter, supporting Windows, macOS, Linux, Android, iOS, tvOS, and HarmonyOS. It aggregates content from local storage, network protocols (SMB, WebDAV), and media servers (Jellyfin, Emby), while integrating with Dandanplay and Bangumi for anime metadata and synchronized watch history. The system features a highly customizable danmaku (bullet comment) engine with GPU acceleration, multiple playback backends, and a plugin system for extended functionality.
How it got here
2025 — Cross-platform scaffolding and core architecture
67 changes.
The project established its foundational structure by scaffolding the NipaPlay-Reload application across Windows, macOS, Linux, Android, iOS, and HarmonyOS, integrating the Flutter Rust Bridge and native media SDKs. It implemented a unified player abstraction layer with multiple backend adapters and a modular state management system to support diverse media sources and playback engines. The period also introduced core UI themes, GPU-accelerated danmaku rendering, and essential services for media library integration and user account synchronization.
2026 — Rust native engine and multi-platform expansion
64 changes.
The project integrated a comprehensive Rust backend to offload core logic, including a high-performance Next2 danmaku engine, media metadata extraction, and torrent downloading. This architectural shift was accompanied by the addition of new platform targets (HarmonyOS, tvOS) and a unified, adaptive UI system across all supported devices.
Features
Account page now supports Bangumi integration and account deletion
The Account page controller and view model have been updated to include Bangumi synchronization capabilities, allowing users to link their Bangumi account via token or through a Dandanplay-internal authorization flow to sync viewing history. Additionally, a new destructive action has been added to the Dandanplay account section, enabling users to delete (注销) their account directly from this page.
lib/pages/account · high confidence
Add Cupertino-themed account profile and action widgets
New Cupertino-specific widgets have been introduced for the account page: \CupertinoAccountProfileCard\ displays the user's username and avatar (with a fallback icon and a 'Logged in' badge), while \CupertinoAccountActionButton\ provides a styled button with loading states, destructive styling, and platform-appropriate icons. These components replace or supplement previous implementations to ensure consistent Cupertino styling in the account section.
lib/themes/cupertino/pages/account/widgets · high confidence
Add HarmonyOS entry module with native Rust/C++ build and Flutter integration
This change introduces the entry module for the HarmonyOS platform, enabling the app to run on HarmonyOS devices. It includes the CMake build configuration to compile the shared C++ core and the Rust library (librust\_lib\_nipaplay) for the aarch64-unknown-linux-ohos target, integrating them into the HAP package. The module defines the EntryAbility to initialize the Flutter engine and register plugins, and the Index page to host the Flutter view. It also sets up the module manifest with required permissions (Internet, Camera) and resources, including localized strings and a build configuration enabling the Impeller rendering engine.
ohos/entry · high confidence
Add NipaPlay binary package for Gentoo Linux
Users on Gentoo Linux can now install NipaPlay (version 1.8.11) via the new \media-video/nipaplay-bin\ ebuild. This package installs the pre-built Linux binary, configuring it as a system-wide application with desktop integration and icons, and requires dependencies such as ffmpeg, mpv, and GTK+ 3.
gentoo · high confidence
Add Rust-based Next2 texture plugin for Flutter desktop and mobile platforms
The rust\_builder directory now includes the complete implementation for the Next2 texture plugin, providing native bindings for iOS, macOS, Linux, and Windows. This change introduces platform-specific plugin classes (Swift for Apple platforms, C++ for Linux and Windows) that communicate with the Rust engine via the 'nipaplay/next2\_texture' method channel to manage GPU textures and frame rendering. It also adds the Cargokit build infrastructure (CMake scripts, shell/PowerShell runners, and Dart build tools) required to compile the Rust library and link it into the respective platform targets.
_rust\builder · high confidence
Add dual-stack socket support with device binding and multicast capabilities
This change introduces a new Rust library for dual-stack networking that enables applications to bind TCP and UDP sockets to specific network interfaces and handle both IPv4 and IPv6 traffic. It adds a \BindDevice\ API to bind sockets to a network interface by name, supporting platform-specific implementations for Apple and Linux/Windows. The library also includes a \MulticastUdpSocket\ for sending and receiving multicast traffic across all interfaces, along with comprehensive tests for dual-stack connectivity, device binding, and multicast operations.
_rust/third\party/librqbit-dualstack-sockets · high confidence
Add tvOS platform support with Apple TV UI adaptation
This change introduces a new tvOS target for the application, enabling the app to run on Apple TV devices. The diff adds the complete Xcode project structure (Runner.xcodeproj), including the Swift AppDelegate, Main and LaunchScreen storyboards configured for the 1920x1080 Apple TV resolution, and the necessary asset catalogs for tvOS-specific app icons (large and small image stacks) and top-shelf images. It also includes a custom shader override mechanism (\TVOSReleaseSimulatorShaderOverride\) to ensure the Flutter Impeller renderer functions correctly in the tvOS simulator during release builds, and configures the \Info.plist\ with the \FLTAssetsPath\ to correctly resolve bundled assets on physical tvOS devices.
tvos · high confidence
Add volume\_controller plugin for cross-platform system volume control
Introduce the volume\_controller plugin, enabling Flutter applications to get, set, and monitor the system volume across Android, iOS, macOS, Windows, and Linux. The plugin provides a singleton API to adjust volume levels, toggle mute status, and listen for real-time volume changes, while also offering the option to show or hide the native system volume UI on supported platforms.
_third\_party/volume\controller · high confidence
Added English language support and localization infrastructure
The app now supports English in addition to Simplified and Traditional Chinese. This change introduces the complete localization infrastructure for the \lib/l10n\ directory, including the \app\_en.arb\ resource file with full English translations for all UI strings (such as the Danmaku Console, External Player controls, and Settings), the generated \AppLocalizationsEn\ class, and utility classes (\AppLocaleUtils\, \l10n.dart\ extension) to resolve and access these locales at runtime.
lib/l10n · high confidence
Added Xcode build scripts for iOS and macOS native libraries
New shell scripts (build\_ios.sh and build\_macos.sh) have been added to the cpp\_native/scripts directory to automate the compilation of the native C++ library within Xcode. The iOS script builds a static library (libnipaplay\_native.a) for arm64 device and x86\_64 simulator architectures, merging them with lipo if necessary, and copies the result to both BUILT\_PRODUCTS\_DIR and DERIVED\_SOURCES\_DIR. The macOS script builds a shared library (libnipaplay\_native.dylib) separately for arm64 and x86\_64 architectures to ensure correct ISA-specific optimizations (e.g., AVX2 for x86-64-v3), merges them into a universal dylib, copies it to the Frameworks folder, and applies code signing for notarization. Both scripts explicitly configure the PATH to include Homebrew directories to ensure CMake and other tools are found during Xcode's run script phases.
_cpp\native/scripts · high confidence
Added Xcode scheme for NipaPlay app
The macOS project now includes a defined Xcode scheme (Runner.xcscheme) that configures the build, test, and launch actions for the NipaPlay.app target. This enables developers to run, test, and profile the application directly from Xcode with the correct build configurations and dependencies.
macos/Runner.xcodeproj/xcshareddata · high confidence
Added Xcode scheme for iOS Runner app
A new Xcode scheme (Runner.xcscheme) has been added to the iOS project configuration. This file defines the build, test, launch, profile, analyze, and archive actions for the Runner app, including a pre-action to prepare the Flutter framework and specific configurations for debugging and GPU validation. This enables the iOS target to be built and run directly within the Xcode IDE.
ios/Runner.xcodeproj/xcshareddata · high confidence
Added iOS frameworks for ASS subtitles and AV1 video decoding
The iOS build now includes the libass framework (version 0.17.2) and the dav1d framework (version 1.5.1). These additions enable the application to render ASS-style subtitles and decode AV1 video streams on iOS devices.
ios/ass.framework, ios/dav1d.framework · high confidence
Added macOS HDR flicker probe tooling
A new Swift-based utility and its accompanying Bash runner have been added to the tools directory to validate HDR video playback on macOS. The \macos\_flicker\_probe.swift\ script uses ScreenCaptureKit to sample screen frames, analyzing luminance and dark-pixel ratios to detect flickering or black-frame issues during video playback. The \run\_macos\_hdr\_flicker\_probe.sh\ script automates this process by launching the NipaPlay app with specific HDR environment flags, waiting for a warm-up period, and then executing the probe to generate a flicker CSV log and an HDR application log for debugging.
tools · high confidence
Added new layered icon asset with dark mode support
A new icon definition file (icon.json) has been added to the icons/new-icon.icon directory, introducing a multi-layered design that includes a translucent glass effect layer (icon3) and specific positioning for icon1 and icon2. This asset supports dark appearance specializations for fill and opacity, ensuring the icon renders correctly in both light and dark modes, and is configured for shared square platforms and watchOS circles.
icons · high confidence
Added web app manifest and entry point for NipaPlay
The web location now includes the standard Flutter web scaffolding files: \index.html\ serves as the entry point, loading the \flutter\_bootstrap.js\ script and configuring the base href, while \manifest.json\ defines the PWA metadata for the 'NipaPlay' application. These files establish the basic web deployment structure, including icon assets and display settings, enabling the app to be served and installed as a standalone web application.
web · high confidence
Android app configuration and MDK media SDK integration
The Android app manifest has been updated to include comprehensive permissions for modern Android storage access (including Android 13+ media permissions and scoped storage workarounds) and expanded intent filters to handle system file manager associations for various video MIME types and file extensions. Additionally, the MDK multimedia SDK (version 0.32.0) has been integrated, providing hardware-accelerated video decoding, HDR/Dolby Vision support, and new APIs for audio and video frame handling.
android/app/src · high confidence
Application initialization and core service wiring
The application entry point (lib/main.dart) has been established to initialize the Flutter framework, load Fluent icon fonts, and conditionally initialize the Rust native bridge. It registers global services including password input mode, frame timing traces, and system resource monitoring, while wiring up providers for settings, themes, watch history, and media services (Jellyfin, Emby) to support the unified app view and navigation scope.
lib · high confidence
Containerized AppImage build for Linux
Users can now build the Linux AppImage entirely within a Docker or Podman container, eliminating the need to install the host toolchain. The new containerbuild directory includes a Dockerfile, a build script that prunes host-sensitive libraries before assembly, and a wrapper script to orchestrate the build, ensuring a consistent and reproducible release artifact.
containerbuild · high confidence
Enable non-web full-platform texture backend for Next2 rendering
The Android module now includes a new plugin implementation (RustLibNipaplayPlugin) and AndroidManifest to support the Next2 non-web full-platform texture backend. This change introduces a dedicated method channel (nipaplay/next2\_texture) that manages native surface textures via a single-threaded render executor, allowing Rust-based rendering to display correctly on Android devices instead of relying on web-based fallbacks.
_rust\builder/android · high confidence
Initial HarmonyOS platform support added
The application now includes the necessary configuration files and build scripts to support the HarmonyOS platform. This addition enables the app to be built and run on HarmonyOS devices using the stage mode architecture, integrating with the existing Flutter codebase via the flutter-hvigor-plugin and native C++/Rust modules.
ohos · high confidence
Initial Linux desktop platform support
NipaPlay now runs on Linux via a new Flutter desktop implementation. The build system (CMake) links against GTK3 and optionally integrates libmpv for video playback and mimalloc for memory management. The native application entry point includes a desktop window channel that enables multi-window playback, Picture-in-Picture (PiP) with specific placement logic, and window aspect ratio controls.
linux · high confidence
Initial Linux packaging assets for NipaPlay Reload
Added the necessary Linux distribution assets to support packaging and launching the application. This includes a launcher script that ensures the correct library path (LD\_LIBRARY\_PATH) is set before executing the binary, a .desktop file for system integration, an AppStream metadata file for software centers, and an RPM spec template for Fedora-based distributions.
assets/linux · high confidence
Initial Windows Flutter build configuration and plugin registration
This change introduces the foundational build infrastructure for the Windows platform within the Flutter module. It adds the CMake build scripts (CMakeLists.txt) required to compile the Flutter engine and C++ wrappers, and generates the plugin registrant files that automatically register a comprehensive set of platform-specific plugins—including battery, file selection, media playback, hotkeys, and window management—ensuring the Windows application can access native device features.
windows/flutter · high confidence
Initial iOS project scaffolding and workspace configuration
The iOS application structure has been initialized with the necessary Xcode workspace and project files. This includes the \Runner.xcworkspace\ configuration linking the main project and CocoaPods dependencies, along with standard workspace settings. The user interface is set up with default \LaunchScreen.storyboard\ and \Main.storyboard\ files, establishing the initial view controller hierarchy for the Flutter iOS runner.
ios/Runner.xcworkspace, ios/Runner/Base.lproj · high confidence
Initial project scaffolding and cross-platform build configuration
The repository has been initialized with the core structure for the NipaPlay-Reload application, including a comprehensive README detailing supported platforms (Windows, macOS, Linux, Android, iOS, tvOS, HarmonyOS) and features. This change establishes the build infrastructure by adding platform-specific dependency overrides for Linux, HarmonyOS, and tvOS, configuring localization (l10n), and setting up Flutter Rust Bridge. It also introduces build scripts for Linux ARM64 and macOS DMG packaging, a Flatpak manifest for Linux distribution, and a submodule structure for third-party media libraries (media-kit, libmpv, mpv, libplacebo).
(repo-wide) · high confidence
Initial release of smb\_connect Dart library
Added the smb\_connect package, a native SMB/CIFS client library for Dart supporting SMB 1.0, CIFS, SMB 2.0, and SMB 2.1. This library enables users to connect to SMB shares, list files and folders, create and delete files and folders, read and write data via streams, and perform random access file operations.
_third\_party/smb\connect · high confidence
Initial release of the Liquid Glass Widgets package
The \liquid\_glass\_widgets\ package is introduced, providing a comprehensive library of Flutter widgets that implement Apple's iOS 26 Liquid Glass aesthetic. This release includes shader-based frosted glass effects, physics-driven jelly animations, and dynamic lighting across containers, interactive controls, inputs, overlays, and navigation surfaces. It features platform-adaptive rendering (Impeller for premium quality, lightweight shaders for Skia/Web), an adaptive quality system that benchmarks device performance, and global accessibility support for Reduce Motion and Reduce Transparency. The package also ships with a full set of example applications, including replicas of Apple Music, Messages, and News, as well as a wanderlust travel showcase.
_packages/adaptive\_platform\_ui, packages/liquid\_glass\_widgets, packages/media\_kit\video · high confidence
Initial release of the nipaplay\_smb2 Flutter FFI plugin
This change introduces the \nipaplay\_smb2\ package, a new Flutter FFI plugin that provides native SMB2 support via the \libsmb2\ library. The package includes the necessary Dart bindings and native build configurations (CMake/Gradle) to integrate SMB capabilities into the application, serving as the foundational component for SMB-related features.
_packages/nipaplay\smb2 · high confidence
Integrate Cargokit build tool for Rust native code compilation
The build tooling in \rust\_builder/cargokit/build\_tool\ has been replaced with the official Cargokit integration. This introduces a complete Dart-based build system that handles Rust compilation for Android (via Gradle and CMake), iOS/macOS (via CocoaPods), and other platforms. It manages the Android NDK environment, resolves Rust toolchains via rustup, and supports downloading and verifying precompiled binaries from GitHub releases, ensuring consistent and secure native builds for Flutter applications.
_rust\_builder/cargokit/build\tool · high confidence
Introduce C++ FFI bindings for danmaku, subtitle, and similarity engines
Added a new Dart FFI binding layer in lib/cpp\_native/bindings that exposes C++ native capabilities to the Dart side, including a danmaku parser, a danmaku layout engine, a similarity engine, and a subtitle parser. Each binding provides a conditional export strategy: an IO implementation using dart:ffi for native platforms and a Web stub that compiles without FFI dependencies. The danmaku parser delegates XML and JSON parsing to C++ with a Dart fallback, the layout engine handles track allocation and collision detection via native calls, the similarity engine performs batch deduplication and pair-wise scoring using a reusable scratch buffer, and the subtitle parser supports ASS, SRT, SubViewer, and MicroDVD formats with automatic encoding detection. Common FFI types, result codes, and memory management utilities are centralized in the types directory to support these bindings.
_lib/cpp\native/bindings · high confidence
Introduce Rust-based DFM+ danmaku core engine
This change adds the \dfm\_core\ library in Rust, porting the core danmaku rendering logic from the Java DanmakuFlameMaster and Next2 implementations. It introduces a complete pipeline for danmaku handling, including a data model for items and durations, a factory for computing scroll and fixed durations, a measurement system for text width and line height, a track-based collision avoidance layout engine (retainer), an adaptive frame-rate timer, and a comprehensive filtering system (supporting type blocking, density control, keyword/user blocking, and duplicate merging). This core provides the underlying calculation and layout capabilities for the danmaku overlay.
_rust/src/dfm\core · high confidence
Introduce native JS plugin runtime and event-driven plugin system
The plugin subsystem now supports executing external JavaScript plugins via a new cross-platform JS runtime layer. This runtime adapts to the host platform: it uses the standard flutter\_js library on mobile/desktop, a custom HarmonyOS QuickJS FFI bridge on HarmonyOS, and provides a stub on Web. To facilitate plugin development and interaction, a PluginEventBus is introduced, allowing plugins to subscribe to and receive events such as video loading, playback controls, danmaku updates, and settings changes. Additionally, a dedicated PluginStorage service enables plugins to persist scripts and configuration data to the local file system, and a SimilarityFfiService bridges to a C++ similarity engine for advanced danmaku filtering capabilities.
lib/plugins · high confidence
Introduced GPU-accelerated danmaku rendering engine
Added a new GPU-based rendering subsystem for danmaku (scrolling comments) in the \lib/danmaku\_gpu\ module. This includes a \DynamicFontAtlas\ for efficient character texture management, a \GPUDanmakuOverlay\ widget for compositing, and specialized renderers for top, bottom, and scrolling弹幕 types. The implementation optimizes text rendering performance by pre-building character sets and using GPU-friendly drawing commands, replacing or supplementing the previous CPU-based rendering approach.
_lib/danmaku\gpu · high confidence
Introduces DFM+ danmaku rendering engine with optimized layout and motion pacing
Adds the DFM+ danmaku rendering system, including the DfmPlusOverlay widget and DfmPlusLayoutBridge, to replace or augment the previous danmaku implementation. This change introduces a Rust-backed layout engine that improves performance through object caching, glyph prefetching, and efficient texture management. It also refines motion behavior by synchronizing native frame pacing with the media clock, implementing scroll-duration scaling relative to screen width, and adding logic to handle playback seeks and drift more smoothly.
_lib/danmaku\dfm · high confidence
Introduces a unified player abstraction layer with multiple backend adapters
The \lib/player\_abstraction\ directory now contains a complete abstraction layer for video playback, centered on the \AbstractPlayer\ interface and a \PlayerFactory\ that selects the active backend based on user settings and platform capabilities. This change introduces adapters for four distinct playback engines: MDK (\mdk\_player\_adapter\), MediaKit (\media\_kit\_player\_adapter\), the native Erika engine (\erika\_player\_adapter\), and the standard Flutter \video\_player\ plugin (\video\_player\_adapter\). The abstraction standardizes core playback behaviors (play, pause, seek, volume, rate) while exposing advanced capabilities through optional interfaces, including asynchronous disposal, asynchronous seeking, external subtitle handling, media load readiness detection, and GIF export. The factory manages configuration for each kernel, such as HTTP proxy routing, User-Agent strings, macOS native video preferences, Android audio output modes, and Erika-specific upscaler and HDR output modes.
_lib/player\abstraction · high confidence
Introduces new provider architecture for settings, media libraries, and remote access
This change adds a comprehensive set of new state management providers in the \lib/providers\ directory, replacing or supplementing previous ad-hoc settings handling. Key additions include \AppLanguageProvider\ for managing app locale and language mode, \AppearanceSettingsProvider\ for UI customization (blur effects, accent colors, UI scale, home section visibility), and \HomeSectionsSettingsProvider\ to allow users to reorder and toggle home screen widgets. Media library management is now handled by dedicated providers for Jellyfin (\JellyfinProvider\, \JellyfinTranscodeProvider\) and Emby (\EmbyProvider\, \EmbyTranscodeProvider\), which manage connection states, media lists, sorting, and transcoding preferences. Remote access capabilities are supported by \DandanplayRemoteProvider\ for danmaku synchronization and \RemoteAccessSettingsProvider\ for QR code visibility. Additional providers include \DeveloperOptionsProvider\ for debug features and certificate trust, \DownloaderSettingsProvider\ for torrent client configuration, and \LabsSettingsProvider\ for experimental features. A central \ServiceProvider\ coordinates the initialization of these components.
lib/providers · high confidence
Linux build initializes Flutter engine and registers plugins
The Linux build system now includes the standard Flutter tooling files (CMakeLists.txt, generated plugin registrant, and plugin list) to properly initialize the Flutter engine and register the application's plugins (such as file selector, media kit, and tray manager) on Linux. This change ensures the Linux target can correctly link against the Flutter library and its dependencies, enabling the app to run on Linux desktop environments.
linux/flutter · high confidence
Native C++ danmaku and subtitle processing engine
The cpp\_native/src module now includes a native C++ implementation for danmaku (comment) and subtitle processing, replacing or supplementing previous logic. This adds a C++20 danmaku parser and a layout engine that handles scroll, top, and bottom tracks with configurable display areas and collision detection, alongside a similarity engine for duplicate detection. It also introduces a subtitle parser supporting ASS, SRT, SubViewer, and MicroDVD formats with automatic encoding detection and conversion. These components are exposed via FFI bindings in nipaplay\_native.cpp for use by the host application.
_cpp\native/src · high confidence
New C++ native modules for danmaku, subtitles, and similarity
The cpp\_native/modules area now includes new C++ headers and FFI bindings for a danmaku layout engine, a danmaku parser (XML/JSON), a subtitle parser (ASS/SRT/SubViewer/MicroDVD), and a similarity engine for deduplication. These modules expose a C API via export.h and nipaplay\_native.h, enabling Dart to offload danmaku layout calculations, subtitle parsing, and similarity checks to native code.
_cpp\native/modules · high confidence
New C++20 FFI native layer for subtitle, danmaku, and similarity processing
A new C++-Dart FFI bridge (lib/cpp\_native) is introduced, providing a dedicated native execution path independent of the existing Rust link. This layer includes a NativeArena to manage memory allocation and prevent leaks when calling native code, platform-specific library loading logic for iOS, Android, HarmonyOS, Windows, macOS, and Linux, and Dart bindings for a new C++20 subtitle parser, a C++ danmaku parser, and a similarity engine. Users gain access to these native capabilities through the nipaplay\_native library exports.
_lib/cpp\native · high confidence
New CRT and Anime4K visual shaders added
The application now includes new GLSL shader assets for enhanced visual effects. In the CRT category, users gain access to three new rendering styles: a basic 'Lite' shader providing scanlines and vignette, a 'Standard' shader adding screen curvature and chromatic aberration, and a 'High' shader that further includes bloom, aperture mask simulation, and noise. Additionally, new Anime4K shaders have been added to support upscaling and denoising, specifically including CNN-based restoration and upscaling passes (v4.0 Restore and v3.2 Upscale-Denoise) alongside a highlights clamping pass.
assets/shaders · high confidence
New Canvas-based Danmaku rendering engine for Flutter
The \packages/danmaku\_canvas\ package now provides a new Canvas-based danmaku rendering engine for Flutter applications. This engine introduces a \CanvasDanmakuRenderer\ widget and a \DanmakuController\ to manage danmaku lifecycle, supporting scroll, top, bottom, and special danmaku types with features like playback rate adjustment, track collision avoidance, and batched drawing for performance. It includes specific fixes for canvas danmaku speed reloading, seek restoration, and idle power consumption, ensuring danmaku state is correctly preserved during video seeking and playback rate changes.
_packages/danmaku\canvas · high confidence
New Cupertino UI sections for Bangumi sync and DanDanPlay account management
The Account page now includes dedicated Cupertino-themed sections for managing Bangumi synchronization and DanDanPlay accounts. The new Bangumi section displays sync status, authorization expiration details, and provides help entry points, while the DanDanPlay section presents user profile information and account actions (such as logout) when logged in, or sign-in options when logged out. These changes enhance the user experience by providing clearer status visibility and easier access to account-specific settings within the Cupertino design language.
lib/themes/cupertino/pages/account/sections · high confidence
New Cupertino theme with adaptive platform controls and large-screen support
The Cupertino theme location now provides a complete, decoupled theme implementation for phone layouts. It introduces an adaptive platform UI layer that wraps the \adaptive\_platform\_ui\ library, enabling native iOS-style controls (buttons, dialogs, snackbars) that automatically adapt to the device surface. On large screens, buttons switch to a specialized menu action surface with appropriate opacity and styling. The theme also integrates with the appearance settings provider to allow users to customize the accent color, which dynamically generates light and dark color schemes via \dynamic\_color\. This change establishes the structural foundation for the Cupertino theme, separating it from other theme implementations for easier maintenance and future expansion.
lib/themes/cupertino · high confidence
New NipaPlay Log Viewer API and UI
Added a new PHP endpoint (assets/php/log\_viewer.php) that allows clients to submit log entries via POST and retrieve them via GET. The service stores logs as JSON files in a 'logs/' directory with a 1-hour retention policy, and provides a styled HTML interface for viewing these logs with optional auto-refresh functionality.
assets/php · high confidence
New Rust API layer for media, danmaku, and system utilities
The application introduces a new Rust-based API module (rust/src/api) that exposes core capabilities to the Flutter frontend via flutter\_rust\_bridge. This includes a danmaku engine (next2.rs) and layout system (dfm\_plus.rs) for rendering scrolling, top, and bottom subtitles with collision avoidance; an ASS subtitle converter (ass\_converter.rs); danmaku density analytics (danmaku\_analytics.rs); file scanning and diffing (file\_scan.rs); incremental data sync and backup/restore planning (incremental\_sync.rs); media metadata extraction and natural sorting (media\_metadata.rs); remote media probing and hashing (media\_probe.rs); remote directory sorting (remote\_directory.rs); and cross-platform performance monitoring (performance.rs).
rust/src/api · high confidence
New Rust-powered APIs for danmaku, media, and sync
This location introduces a suite of new Dart bindings generated by flutter\_rust\_bridge (v2.12.0) that expose Rust implementations for core app capabilities. Users gain access to a high-performance danmaku layout engine (next2 and dfm\_plus) with precise collision detection and font metrics, alongside a danmaku-to-ASS converter for subtitle export. Media handling is enhanced with Rust-based file scanning, remote directory sorting, media probing, and metadata extraction (including natural sorting and subtitle matching). The app also introduces a new incremental sync system for efficient data synchronization, a torrent download engine for magnet/file support, danmaku density analytics, and a performance monitoring API for real-time CPU, memory, and GPU metrics.
lib/src/rust/api · high confidence
New built-in danmaku filtering plugins added
Two new built-in plugins are now available for managing danmaku (bullet comments): a regex-based filter that automatically blocks spam, re-watching notices, date archaeology, group promotion, and placeholder comments via toggleable rules, and a sensitive word filter for the Chinese mainland that blocks a predefined list of abusive or inappropriate terms. Both plugins integrate with the host's settings UI, allowing users to enable/disable specific rules or view the active word list.
assets/plugins/builtin · high confidence
New context menu system with platform-specific styling
A new context menu implementation has been added to the application, providing a customizable right-click menu experience. The system supports distinct visual styles: a glassmorphism effect with optional blur on desktop platforms, a solid dark theme, and a specific style for the player overlay that integrates with the existing player menu theme. The controller handles positioning logic to ensure the menu stays within screen bounds and manages display in secondary windows via desktop multi-window support.
_lib/widgets/context\menu · high confidence
New data models for media servers, DandanPlay, and playback infrastructure
The application introduces a comprehensive set of new data models to support expanded media library and playback capabilities. This includes dedicated models for Emby and Jellyfin servers (e.g., \EmbyMediaItem\, \JellyfinTranscodeSettings\) enabling library management, track selection, and transcoding configuration. It also adds models for DandanPlay integration (\BangumiAnime\, \DandanplayRemoteEpisode\) and a new playback infrastructure (\PlaybackSession\, \PlayableItem\, \PlaybackDetailContext\) that handles session state, playlist caching, and source identification. Additionally, new enums and utilities for danmaku loading strategies (\DanmakuAutoLoadStrategy\) and UI display modes (\AnimeDetailDisplayMode\) are provided.
lib/models · high confidence
New desktop/tablet theme with customizable accent colors and animated background reveal
A new theme descriptor for desktop and tablet layouts has been introduced, allowing users to customize the application's accent color through appearance settings. This theme integrates a circular background reveal animation when toggling between light and dark modes, and applies the selected accent color to both light and dark themes. It also supports UI scaling and Fluent UI localizations for a consistent cross-platform experience.
lib/themes/nipaplay · high confidence
New external player session implementations for mpv, PotPlayer, and VLC
The application now includes dedicated session management classes for external players: MpvSession handles mpv on Linux, macOS, and Windows with JSON IPC and ASS-based danmaku support; PotPlayerSession manages the Windows PotPlayer player via Windows FFI for window control and message passing, also supporting ASS danmaku; and VlcSession controls VLC on Linux via the oldrc interface. These sessions implement a common ExternalPlayerLaunchSession interface, providing unified lifecycle management (launch, terminate), playback control (pause, seek), and danmaku refresh capabilities across different platforms and player backends.
_lib/models/external\_player\session · high confidence
New iOS native capabilities: AirPlay, system sharing, and device profiling
The iOS app now includes native support for AirPlay route selection, allowing users to choose video output devices directly from the player interface. A new system-level sharing feature enables exporting files and sharing content via the standard iOS share sheet. Additionally, the app can now detect whether it is running on an iPad or iPhone and report screen dimensions to the Flutter layer, enabling responsive UI adjustments for tablet layouts.
ios/Runner · high confidence
New plugin model definitions for danmaku rendering and plugin metadata
This change introduces a set of new data models in the plugin system to support advanced plugin capabilities, specifically focusing on danmaku (bullet comment) rendering and structured plugin metadata. Key additions include \PluginDanmakuRenderer\ for defining web-based danmaku renderers with platform support and realtime add capabilities, \PluginDescriptor\ to aggregate plugin state including UI entries and external scripts, and \PluginManifest\ for parsing plugin requirements and permissions. The diff also adds \PluginPermission\ enum to define granular access controls (e.g., player control, danmaku modification, external scripts), \PluginEvent\ and \PluginEventType\ for handling runtime events like video loading and playback state changes, and \PluginExternalScript\ for securely loading external JavaScript assets. These models form the structural foundation for the plugin runtime to manage danmaku overrides, UI interactions, and script execution.
lib/plugins/models · high confidence
New plugin-based danmaku renderer with WebView overlay
The danmaku system now supports external plugin renderers via a new \PluginDanmakuWebViewOverlay\ component. This change introduces a mechanism to load, cache, and execute external JavaScript-based danmaku engines (such as the 'titan' renderer) inside a transparent WebView overlay. The implementation includes \PluginExternalScriptCache\ for secure script downloading and caching, and \TitanDanmakuSettings\ for managing specific renderer configurations like font, opacity, and speed. This allows for more flexible and customizable danmaku rendering without hardcoding engine logic into the core app.
lib/plugins/danmaku · high confidence
New service layer for Android SAF, anime info matching, and incremental sync
The \lib/services\ directory now includes a comprehensive set of new service implementations. \AndroidSafService\ provides native access to the Android Storage Access Framework, enabling file browsing and metadata retrieval for local media libraries. A new \AnimeInfoService\ (with supporting models and repositories) handles the matching of local video files to Dandanplay and Bangumi anime data, managing cache refreshes and database relations. Additionally, \AutoSyncService\ introduces an incremental synchronization system backed by WebDAV, allowing watch history and preferences to be kept in sync across devices, while \BackupService\ and \AutoNextEpisodeService\ add local backup/export capabilities and refined auto-play countdown logic.
lib/services · high confidence
New settings pages and developer tools in Nipaplay theme
The Nipaplay theme now includes dedicated settings pages for backup and restore (with WebDAV auto-sync configuration), watch history management (including auto-matching and deletion), and a debug log viewer (with filtering, search, and export). Additionally, developer options have been expanded with a new dependency versions window to inspect library details and a UI preview window to demonstrate theme components.
lib/themes/nipaplay/pages/settings · high confidence
New tooling for HarmonyOS and tvOS platform support
Added a suite of build and validation tools to support new platform targets. A new Dart script (configure\_flutter\_dependencies.dart) manages platform-specific dependency overrides for HarmonyOS, Linux, and tvOS, while shell scripts (setup\_tvos.sh, flutter\_tvos.sh) automate the provisioning of a pinned flutter-tvos SDK. Additionally, new smoke-test applications (ohos\_erika\_smoke.dart, ohos\_mdk\_smoke.dart, ohos\_native\_smoke.dart) were introduced to validate media playback, hardware decoder selection, and native library integration on HarmonyOS.
tool · high confidence
New unified remote controller settings page for iOS/macOS
A new settings page (\cupertino\_remote\_controller\_settings\_page.dart\) has been added to the Cupertino theme, providing a centralized interface for managing remote control and remote access features. Users can now scan QR codes to connect to remote devices, automatically discover and match local devices, and configure remote text input. This page integrates with the shared remote library provider to synchronize media library targets and displays the current remote state, consolidating previously scattered remote access configurations into a single, adaptive UI component.
lib/themes/cupertino/pages/settings · high confidence
New user activity tracking and advanced tag-based search capabilities
This update introduces two new controllers in the application logic layer. The \UserActivityController\ adds a new feature for users to view their recent watch history, favorites, and ratings, pulling this data in parallel from the Dandanplay service and displaying it with pagination and error handling. Additionally, the \TagSearchController\ implements a new search mode that allows users to filter anime using text tags and advanced criteria (such as keyword, type, year, and rating ranges), supporting both simple tag-based and complex multi-criteria searches with configuration loading and result pagination.
lib/controllers · high confidence
New utility modules for platform, theming, and media handling
Added a suite of new utility files in lib/utils to support platform detection (AppPlatform), theming (AppTheme, AppAccentColor), and media features (AudioTrackManager for external MKA loading, Anime4K and CRT shader managers, danmaku ASS conversion, and Bangumi info parsing). These modules provide the foundational logic for UI customization, hardware-accelerated upscaling, and external audio track management.
lib/utils · high confidence
New widgets for version banners, markdown rendering, AirPlay, danmaku density charts, and desktop multi-window support
The lib/widgets area introduces several new UI components: AboutVersionBannerText formats the app name and version labels; AdaptiveMarkdown renders Markdown content with platform-aware theming; AirPlayRoutePicker provides native iOS AirPlay selection; DandanplayLoginNotice displays a non-modal notice when online danmaku login is required; DanmakuDensityChart visualizes danmaku density over time; DanmakuGroupWidget handles grouped danmaku rendering; DanmakuOverlay routes danmaku to GPU, Canvas, or Next kernels; DesktopPictureInPictureScope and DesktopPlayerPageSlot manage detached player windows; DesktopTransientOverlay hosts native popups without inserting secondary RenderViews; EmbyMediaSelectionEntry and EmbyMediaSelectionPanel allow media source and track selection; ExternalSubtitleOverlay renders multi-subtitle blocks with drag-to-adjust positioning; ImageCacheMemoryPressureHandler releases image cache on memory pressure or backgrounding; and InViewDialog keeps dialogs within the current view on desktop.
lib/widgets · high confidence
Next2 danmaku engine introduces Rust-based layout and native texture rendering
The danmaku rendering pipeline has been replaced by the Next2 engine, which offloads track allocation and per-frame positioning to a Rust backend (Next2LayoutBridge) and renders the result via a native texture overlay (Next2TextureBridge) instead of the previous Flutter Canvas approach. This new architecture supports advanced styling features including MSDF font rendering for special characters and emojis (MsdfFontAtlas, MsdfTextRenderer), a sprite atlas system for optimized GPU draw calls (DanmakuAtlasPainter), and native vsync synchronization for smoother motion pacing. The engine is available on Android, iOS, macOS, Windows, and Linux, while web and tvOS remain unsupported for this specific kernel.
_lib/danmaku\next · high confidence
Next2 engine introduces cross-platform texture and surface presentation with native FFI bindings
The next2 engine now supports a unified presentation layer that allows rendering to either shared GPU textures or native display surfaces across Windows, macOS, iOS, Linux, and Android. This change adds platform-specific backends (DirectX 12/DXGI for Windows, Metal for Apple platforms, OpenGL for Linux, and ANativeWindow for Android) and exposes a C-compatible FFI interface for engine creation, frame polling, and attaching present targets, enabling the engine to integrate with host application rendering loops on all supported platforms.
_rust/src/next2\engine · high confidence
Rust backend integration via Flutter Rust Bridge
The application now integrates a Rust-based backend using flutter\_rust\_bridge (version 2.12.0). This change introduces the necessary Dart bindings and platform-specific library loaders for iOS, Android, HarmonyOS, Windows, macOS, and Linux, enabling the app to offload core logic to Rust. The generated API exposes capabilities for torrent downloading, file scanning, media metadata extraction, danmaku (bullet comment) analytics and rendering, and incremental data synchronization.
lib/src/rust · high confidence
Rust project initialization and toolchain configuration
The Rust component of the project has been initialized with a new directory structure. A \.gitignore\ file has been added to exclude build artifacts (\/target\, \\*.obj\). A \build.rs\ script is present but empty, noting that the \similarity\_engine\ has been migrated to \cpp\_native\ and no longer requires Rust-C++ FFI build steps. The project now specifies a Rust toolchain version of 1.93.0 via \rust-toolchain.toml\.
rust · high confidence
Unified media library with adaptive UI, custom section ordering, and new content tracking
The media library has been consolidated into a single adaptive interface that automatically adjusts its layout and controls for phone, desktop/tablet, and large-screen (TV) surfaces. Users can now customize the order of library sections (local, WebDAV, SMB, Jellyfin, Emby, Dandanplay, and NipaPlay shared) and have that preference persisted. A new 'NEW' badge system tracks unseen anime and episodes, using a persistent baseline to highlight fresh content until the user opens the details. The add-media flow and download task management are unified across platforms, with platform-specific dialogs for connection setup and torrent actions.
_lib/media\library · high confidence
Vendored QuickJS C bridge for native Linux ARM64 support
The project now includes a vendored QuickJS C bridge (from abner/quickjs-c-bridge, commit 7204d9b, QuickJS version 2021-03-27) in third\_party/quickjs\_c\_bridge. This replaces the previous reliance on the x64-only binary shipped by flutter\_js, enabling JavaScript execution on Linux ARM64. The bridge is built as a shared library (quickjs\_c\_bridge\_plugin) with hidden internal symbols and linked with -Bsymbolic-functions to prevent ABI conflicts with libmpv.
_third\_party/quickjs\_c\bridge · high confidence
Vendored multi-window support for same-engine desktop views
The \desktop\_multi\_window\ package has been added to the repository, providing a vendored implementation of Flutter's experimental same-engine desktop windowing API (targeting Flutter 3.44). This allows the application to create additional native \FlutterView\s within the existing engine and isolate, enabling secondary windows to share providers and service instances with the main window. The package includes a \runDesktopMultiWindowApp\ entry point and a \DesktopMultiWindowHost\ widget to manage the view hierarchy, while explicitly disabling interactive popup and tooltip windows due to rendering issues in the current Flutter version.
_packages/desktop\_multi\window · high confidence
Windows build infrastructure and installer tooling added
The Windows build location now includes the CMake configuration (CMakeLists.txt) and .gitignore required to compile the Flutter application on Windows, including linking the new cpp-dart FFI native library. Additionally, installer support has been introduced with an NSIS script (nipaplay\_installer.nsi) for creating a Windows setup executable, alongside batch utilities to manage Windows file associations for video formats and a placeholder script for font setup.
windows · high confidence
fluent\_ui package version 4.15.1 added
The \fluent\_ui\ package (version 4.15.1) has been added to the repository, providing an unofficial implementation of Windows UI for Flutter. This release includes a comprehensive changelog detailing numerous bug fixes and behavioral changes, such as improved \NavigationView\ resizing behavior, right-to-left directionality support for \MenuFlyout\ and \ProgressBar\, and draggable \Tab\ components. It also introduces new features like \VisualDensity\ support for compact sizing, a \TreeViewController\ for programmatic tree manipulation, and a \TitleBar\ double-click callback. The package includes full localization support for over 30 languages and is governed by a BSD-3-Clause license.
(repo-wide) · high confidence
iOS project configured with ASS subtitle and video decoding frameworks
The iOS project now includes \ass.framework\ and \dav1d.framework\ in its build configuration, enabling the app to render ASS subtitle formats and decode video using the dav1d library on iOS devices. The project file also registers \AirPlayRoutePickerView.swift\ and the \NewIcon.icon\ asset group, supporting AirPlay route selection and the updated application icon.
ios/Runner.xcodeproj · high confidence
macOS app foundation and native integrations
The macOS application now includes a native \AppDelegate\ that configures the MoltenVK Vulkan driver for graphics rendering, handles drag-and-drop file opening, and ensures the app remains active in the menu bar after the last window is closed. It introduces a \PasswordInputModePlugin\ to maintain consistent keyboard input behavior across themes, a \SecurityBookmarkPlugin\ to manage sandboxed file access via macOS security bookmarks, and a \SystemSharePlugin\ that exposes the native macOS share sheet for sharing files, URLs, and text. The app bundle is configured with specific entitlements for file access and camera usage, and declares support for various video file types (MP4, MKV, AVI, etc.) in the Info.plist.
macos/Runner · high confidence
macOS app icon and sharing support added
The macOS project configuration now includes a new icon file (NewIcon.icon) and a Swift plugin (SystemSharePlugin.swift) to enable system-level sharing functionality on macOS, aligning with the broader addition of sharing features across platforms.
macos/Runner.xcodeproj · high confidence
macOS: Added MoltenVK preparation script and mpv Swift compatibility verification
The macOS build scripts now include a new \prepare\_moltenvk\_xcframework.sh\ script that automatically locates, codesigns, and packages the MoltenVK dylib into an xcframework for video playback. Additionally, a new \verify\_mpv\_compatibility.py\ tool and its associated test suite have been added to the release pipeline; this tool inspects mpv binaries to reject builds with incorrect Swift runtime dependencies or missing architectures, preventing crashes on older macOS versions.
scripts · high confidence
Architecture
Convert third-party repositories to Git submodules
The third-party dependencies (libmpv-darwin-build, libplacebo, media-kit-upstream, and mpv) are now managed as Git submodules instead of being embedded directly. This change standardizes how upstream code is tracked and updated, allowing for more precise version pinning and easier synchronization with upstream changes.
_third\party · high confidence
Video player state logic restructured into modular extensions
The monolithic video player state management has been refactored into a set of focused, modular Dart extensions (e.g., \video\_player\_state\_capture.dart\, \video\_player\_state\_danmaku.dart\, \video\_player\_state\_intro\_skip.dart\). This change organizes the player's capabilities into distinct areas—such as thumbnail capture, MKV chapter navigation, danmaku rendering and auto-loading, intro/ED skipping, and lifecycle handling—improving code maintainability and separation of concerns without altering the external user-facing features.
_lib/utils/video\_player\state · high confidence
Behavioural changes
Added ProGuard rules for Android release builds
A new proguard-rules.pro file has been added to the android/app directory to configure code shrinking and obfuscation for release builds. The rules preserve Flutter framework classes, specific plugin packages (media\_kit, file\_selector), and custom application classes to prevent runtime errors. It also includes critical directives to maintain JNI native method signatures required by the media playback engine and Rust bridge, ensuring that native libraries load correctly during obfuscation.
android/app · high confidence
Added Xcode workspace configuration files for iOS and macOS
The iOS and macOS project directories now include standard Xcode workspace configuration files. These additions establish the workspace structure, reference the respective project files (and CocoaPods for macOS), and configure IDE settings such as disabling previews and suppressing 32-bit warnings.
ios/Runner.xcodeproj/project.xcworkspace, macos/Runner.xcodeproj/project.xcworkspace, macos/Runner.xcworkspace · high confidence
Added coding standards and interaction rules for the AI assistant
A new rule file (.cursor/rules/code.mdc) has been introduced to define the AI assistant's behavior. It mandates that all communication must be in Chinese and enforces specific coding standards, including adherence to SOLID principles, single-responsibility functions, mandatory exception handling, and descriptive variable naming. Additionally, it instructs the assistant to proactively suggest reusable code, provide alternative solutions with pros and cons, and check for edge cases, while explicitly forbidding the removal of existing code under the guise of optimization.
.cursor · high confidence
Centralized configuration constants and settings keys
The application now consolidates its configuration data into dedicated constant files within the lib/constants directory. This includes a new list of acknowledgement names for the credits section, predefined color palettes for danmaku (bullet comments) including random color options, and a centralized enum for external player types. Additionally, a comprehensive set of settings keys has been introduced to manage a wide range of user preferences, such as danmaku rendering, external player behavior, torrent download directories, media library ordering, and various lab/experimental features.
lib/constants · high confidence
Cupertino theme gains a dedicated, adaptive player menu
The Cupertino theme now features its own comprehensive player menu, replacing previous implementations with a set of new widgets that adapt to both mobile and large-screen (TV) layouts. This menu provides granular control over playback and media, including panes for selecting audio tracks, managing danmaku (comments) settings, tracks, and offsets, adjusting playback rate, and configuring Jellyfin/Emby quality and subtitle options. It also includes a playback info pane for viewing metadata and a danmaku list viewer, all unified under a consistent adaptive UI that uses glass-style tiles and switches.
_lib/themes/cupertino/widgets/player\menu · high confidence
Cupertino theme introduces native iOS 26 adaptive pages and glass UI components
The Cupertino theme now features a suite of new widgets that adapt to the platform version and apply a glass-morphism aesthetic. On iOS 26 or higher, pages use \AdaptiveScaffold\ and \AdaptiveAppBar\ with native toolbar actions, while older iOS versions fall back to \GlassScaffold\ and \GlassAppBar\ from the \liquid\_glass\_widgets\ package. The theme also includes a custom \Text\ widget that enforces no text decoration, a \CupertinoBounceWrapper\ for iOS-style page entry animations, and a comprehensive \CupertinoBottomSheet\ system supporting nested navigation, selection lists, and custom content. Additionally, developer-facing tools have been added, including sheets for viewing build information, dependency versions, and debug logs, alongside UI components for anime cards, bangumi collection ratings, and remote media library connections.
lib/themes/cupertino/widgets · high confidence
Danmaku model refactoring and new styling capabilities
The danmaku system has been refactored to introduce a strong-typed \DanmakuItem\ model, replacing the previous \Map\<String, dynamic\>\ approach while maintaining backward compatibility via \fromMap\ and \toMap\ methods. This change adds support for displaying the sender's identity (\senderId\) and allows for keyword-based filtering through a new \BlockedDanmakuItem\ model. Additionally, a new \DanmakuStyle\ class has been introduced, enabling users to configure visual settings such as font size, opacity, outline width, and whether danmaku items are allowed to stack.
lib/models/danmaku · high confidence
Danmaku rendering engine defaults and abstraction refactored
The danmaku abstraction layer now centralizes rendering engine selection via a new factory that defaults to the GPU-accelerated DFM+ engine (falling back to NipaPlay Next on unsupported platforms or Linux+NVIDIA setups). This change introduces a new DanmakuContentItem model with time offset and track index support for better timeline synchronization, and implements a DanmakuTextRendererFactory that routes GPU rendering through a new GpuDanmakuTextRenderer while keeping CPU rendering as the fallback. The abstraction also adds a PositionedDanmakuItem class with incremental positioning logic to reduce visual jitter during playback.
_lib/danmaku\abstraction · high confidence
Introduce platform-adaptive User Activity view
The User Activity screen now renders distinct interfaces for mobile and desktop environments. An adaptive entry point selects between a Cupertino-styled layout for phones and a Fluent UI-based layout for desktops, ensuring the experience matches the platform's native design language. The desktop version specifically supports large-screen focus traversal, while both versions display recent watched history, favorites, and ratings with consistent data handling via a shared view model.
_lib/widgets/user\activity · high confidence
Linux DEB packaging now includes launcher script and libmpv compatibility handling
The Linux DEB package now installs a launcher script at /usr/bin/nipaplay-reload to ensure correct library path resolution, and the post-installation script automatically creates a compatibility symlink for libmpv.so.1 if only a newer version (e.g., libmpv.so.2) is present on the system. This ensures the application runs correctly across different Linux distributions with varying libmpv versions, while the post-removal script cleans up these symlinks to avoid leaving stale links.
assets/linux/DEBIAN · high confidence
New Cupertino main navigation page with dynamic tab visibility
The Cupertino theme now uses a new \CupertinoMainPage\ to manage the bottom navigation bar. This page dynamically shows or hides the WebDAV Quick Access and Downloader tabs based on user settings and platform support, ensuring the navigation bar adapts to the current configuration. It also integrates with the external player console service and applies specific liquid glass styling for the navigation bar on iOS devices.
lib/themes/cupertino/pages · high confidence
New macOS menu bar with navigation and window shortcuts
The macOS application now features a structured menu bar (MainMenu.xib) that provides standard macOS menu items including About, Preferences, and Quit. A new 'Navigation' menu allows users to switch between Home, Video Playback, Media Library, and New Series views using keyboard shortcuts (1-4). The 'File' menu includes an 'Upload Video' option and a shortcut to close the window. Standard window controls for minimize, zoom, and bringing all windows to front are also available.
macos/Runner/Base.lproj · high confidence
New modular theme system with platform-specific defaults
The application now uses a decoupled theme registry that allows for easier maintenance and addition of new themes. This system introduces platform-aware theming, where iOS devices automatically default to the Cupertino theme instead of the standard desktop/tablet layout. Users benefit from a more native look and feel on iOS devices, while the underlying architecture supports future theme variations through a structured descriptor and registry system.
lib/themes · high confidence
Next2 engine refactored with precise frame pacing and offscreen rendering
The Next2 engine's core rendering and scheduling logic has been rewritten to eliminate visual artifacts and improve synchronization. A new command channel and frame completion system now use precise, interruptible deadlines and a dedicated GPU completion worker to ensure frames are submitted and consumed reliably. Motion animation is driven by a continuous media clock and a logical vsync-based frame pacer, which prevents stuttering and burst rendering by skipping missed slots. Additionally, the renderer now draws to an offscreen texture before presenting, which prevents flickering caused by shared texture access, and shadow rendering has been optimized by blurring at half resolution to reduce GPU load.
_rust/src/next2\engine/engine · high confidence
Nipaplay theme UI components and controls overhaul
The Nipaplay theme's user interface has been significantly redesigned and refactored. The anime card widget now supports source labels (local, Emby, Jellyfin), Bangumi ratings, and optimized image decoding. The anime detail shell provides a unified layout with adaptive tabs and desktop views. Player controls have been rebuilt, including a new back button that manages auto-next cancellation, an audio tracks menu for server-side stream switching, and a dedicated widget for displaying the anime title and episode info with precise text fitting. Additionally, the theme introduces a new Android TV remote key scope to handle navigation events reliably, and a reusable arrow menu container for consistent styling of dropdowns and tooltips.
lib/themes/nipaplay/widgets · high confidence
Player menu decoupled into a declarative, context-aware definition system
The player menu has been refactored to use a declarative model where menu items (such as subtitle settings, playback rate, seek steps, danmaku controls, and streaming quality) are defined by IDs, categories, and visibility predicates based on the current playback context (e.g., kernel type, presence of subtitle tracks, server streaming status). This change introduces a new \PlayerMenuDefinitionBuilder\ and associated models that dynamically filter and display menu panes, ensuring items like subtitle tracks or danmaku settings only appear when relevant tracks exist or the player kernel supports them, while also exposing new controls for custom playback rates, seek steps, and volume boost in the quick controls.
_lib/player\menu · high confidence
Redesigned account page with Bangumi sync management and large-screen support
The account page has been restructured to present Dandanplay and Bangumi account sections side-by-side on desktop, with a new dedicated Bangumi section that includes status, token, and sync management cards. A new 'Manage Bangumi Sync Settings' entry point has been added, allowing users to configure synchronization preferences directly from the account view. The layout now adapts to large-screen modes using a dedicated scaffold, and the page ensures proper loading of Fluent icon fonts to prevent display issues.
lib/themes/nipaplay/pages/account · high confidence
Redesigned home dashboard and anime detail views with improved performance and media server integration
The application now features a completely rebuilt Dashboard home page that consolidates local media, Jellyfin/Emby libraries, and Dandanplay remote content into a unified interface with optimized loading, provider-ready signals, and debounced state updates to prevent UI flickering. The Anime detail page has been rewritten to support Bangumi comments, manual watch-record synchronization, and episode list sorting, while the Media server detail page now unifies Jellyfin and Emby browsing with source selection and auto-matching. Additionally, a new detached desktop player window and external player console have been introduced, allowing mpv sessions to run in separate windows with independent drag regions and real-time danmaku control.
lib/pages · high confidence
Rust-based next2 danmaku engine with safe outline rendering
The application now uses a Rust implementation for the next2 danmaku rendering engine, exposing FFI bindings for Android (JNI) and a Flutter Rust Bridge interface. This change introduces a new outline resolution logic that maps user-facing profile levels (thin, legacy thick) to safe MSDF (Multi-channel Signed Distance Field) widths, preventing texture saturation and rendering artifacts. The engine also includes specific font data handling and frame cache support for improved rendering performance and correctness.
rust/src · high confidence
Server-side gateway and region routing for Dandanplay integration
The server now includes a Rust-based reverse proxy (dandanplay-gateway) that handles authentication and request signing for the Dandanplay API, ensuring the app secret remains on the server while maintaining compatibility with the existing client response format. Additionally, a new region resolver service (nipaplay-region) allows the client to automatically select between primary and backup servers based on IP location (e.g., CN vs. Overseas), and a PHP proxy (danmaku\_proxy.php) provides a fallback mechanism for fetching danmaku comments when direct server access fails.
server · high confidence
Settings UI migrated to adaptive layout system
The settings pages in lib/settings/pages (including About, Appearance, Danmaku, Developer Options, Downloader, External Player, General, Labs, and Language) have been rewritten to use the new AdaptiveSettingsPage and AdaptiveSettingsTile widgets. This change unifies the interface across platforms, providing native-feeling controls on iOS (Cupertino) and consistent adaptive layouts for desktop, tablet, and large-screen modes, while hiding platform-specific options where appropriate.
lib/settings/pages · high confidence
Standardize danmaku display modes and rendering kinds
The application now explicitly defines danmaku display modes (scroll, top, bottom, reverse scroll, advanced) and rendering kinds (scroll, top, bottom) in dedicated constants. This change ensures that advanced and reverse scroll danmaku are consistently treated as standard scrolling types for rendering purposes, aligning with Bilibili XML and DanDanPlay protocol conventions.
lib/constants/danmaku · high confidence
Standardized danmaku outline width to three discrete levels
Danmaku outline width is now restricted to three specific rendering profiles (none, thin, or thick) instead of allowing continuous values. This change introduces a normalization function that maps previous settings to the new discrete levels, ensuring that any positive value is treated as at least 'thin' and values of 1.5 or higher are treated as 'thick', thereby restoring a safe legacy outline profile and preventing incorrect shader interpretation.
lib/utils/danmaku · high confidence
Unified adaptive settings interface with platform-specific layouts
The settings module has been refactored to use a unified, adaptive UI that automatically adjusts its layout and controls based on the device type. On phones, settings are presented in a native-style bottom sheet with Cupertino-inspired navigation, while desktop and tablet users see a split-pane view with a persistent sidebar. The system now supports platform-specific controls, such as using native iOS 26 dropdowns and switches where available, and ensures that desktop-only options are hidden on tablets. This change introduces a new settings data structure and navigation layer that centralizes how different setting categories (like appearance, player, and plugins) are displayed and accessed across all surfaces.
lib/settings · high confidence
Unified app navigation and adaptive display architecture
The app now uses a unified navigation and rendering system that adapts to the device type (desktop/tablet, phone, or television). This introduces a new \AppDisplaySurface\ scope and \UnifiedAppPage\ structure that manages page availability (such as WebDAV, torrent download, and external player console) and renders content via \AdaptiveAppPageContent\. The home screen and media library now support configurable section ordering and adaptive layouts, while the settings view is presented in a unified virtual window with platform-specific sizing and interaction behaviors.
lib/app · high confidence
Unified media database schema and data models
The application now uses a unified database structure for managing media content, introducing new tables for anime, episodes, and various asset types (local, network, Bangumi, and DandanPlay sources) with strict integrity constraints and foreign key relationships. This change adds specific indexes to optimize lookups by anime ID, episode ID, and asset hashes, and introduces corresponding Dart data models to represent these database entities within the application logic.
assets/sql, lib/models/database · high confidence
Unified playback entry view with platform-specific rendering
The playback entry screen now uses a unified model and adaptive view to present media options consistently across devices. On phones, the interface uses Cupertino-style controls for selecting local files or entering URLs, while on desktop, tablet, and Apple TV, it switches to a different renderer optimized for larger screens. This change introduces support for a detached player mode and ensures the 'Add Media' option is visible in the playback entry on tvOS, improving the user experience for adding content from network sources or local files.
lib/playback · high confidence
Updated Android native build configuration for x86 debug builds
The Android native build environment for the x86 ABI has been regenerated with Android NDK 26.3.11579264 and CMake 3.22.1. This update configures the debug build toolchain to target Android API level 21 and utilizes LLVM Clang 17.0.2 for compiling C and C++ sources, ensuring the native layer is built with the latest supported compiler toolchain.
android/app/.cxx/Debug/6h1d20n6 · high confidence
Updated FVP video plugin to version 0.33.1
The vendored FVP plugin has been upgraded from version 0.32.1 to 0.33.1. This update enables the dav1d and HAP video decoders, which may improve playback performance and format support for compatible content. It also includes a fix for the protocol whitelist, ensuring that network streams adhere to the correct security and access policies.
(repo-wide) · high confidence
Updated native build configuration for arm64-v8a
The native build cache for the arm64-v8a architecture has been regenerated, reflecting a switch to the Android NDK r26.3.11579264 and Clang 17.0.2. This update ensures the app is compiled against the updated toolchain and standard libraries for the target platform.
android/app/.cxx/Debug/115i2k5l · high confidence
Windows runner restructured with native video plugin and performance optimizations
The Windows application runner has been reorganized to host a new native video plugin (WindowsNativeVideoPlugin) that manages an overlay window for video rendering, enabling multi-window playback and detached window support. To address performance issues on Windows, the Flutter UI thread policy is now set to RunOnSeparateThread, disabling thread merging. The build configuration has also been updated to apply Release-mode interprocedural optimization (LTCG) and dead-code elimination to reduce binary size and improve startup performance.
windows/runner · high confidence
iOS Flutter build configuration and framework metadata added
The iOS build environment now includes the standard Flutter framework metadata file (AppFrameworkInfo.plist) and specific Xcode configuration files (Debug, Profile, and Release xcconfigs) to manage build settings and CocoaPods integration. Notably, the Debug configuration explicitly excludes the x86\_64 architecture for iOS simulators, which optimizes the build process for Apple Silicon Macs by preventing unnecessary compilation of 64-bit Intel slices.
ios/Flutter · high confidence
iOS project configuration and build artifacts added
The iOS directory now includes a .gitignore file to exclude build artifacts, derived data, and Flutter-specific generated files from version control. Additionally, a copy of the Runner's Info.plist has been added, defining the app bundle display name as 'Nipaplay' and configuring standard iOS app settings such as supported interface orientations and launch storyboards.
ios · medium confidence
macOS Flutter plugin registration updated
The macOS Flutter build now includes a generated plugin registrant that registers a comprehensive set of native plugins, including battery status, desktop file drop, dynamic theming, file selection, JavaScript execution, video playback (via FVP and MediaKit), mobile scanning, system tray management, and window control. This ensures these capabilities are available to the Flutter application on macOS.
macos/Flutter · high confidence
macOS build configuration and app metadata standardized
The macOS Runner target now uses dedicated xcconfig files to define application metadata (name 'NipaPlay', bundle identifier, copyright) and build settings. Debug and Release configurations explicitly enable embedding of Swift standard libraries, and a new Warnings configuration enforces strict compiler checks (such as nullability and undefined behavior sanitizers) to improve code quality and stability.
macos/Runner/Configs · high confidence
macOS menu bar now uses native PlatformMenuBar with dynamic navigation shortcuts
On macOS, the application menu bar has been migrated to use the native Flutter PlatformMenuBar widget, replacing the previous implementation. This change introduces a new MacosPlatformMenu component that supports both static and dynamic navigation items via a builder pattern, automatically assigning Cmd+1 through Cmd+9 shortcuts to visible tabs. The menu now includes native macOS items such as Services, Hide/Hide Others, and Quit, alongside custom actions like Upload Video, Settings, and About. On non-macOS platforms and web, the menu bar is bypassed, and the child widget is rendered directly.
_lib/platform\menu · high confidence
Fixes
Add HarmonyOS compatibility facade for desktop multi-window
A new compatibility layer has been added to the HarmonyOS package to isolate platform-specific dependencies from mainline builds. This facade provides stub implementations for the desktop multi-window API (such as creating secondary windows and popup/tooltip windows) that return unsupported errors or no-ops, allowing shared UI code to compile and run on HarmonyOS without requiring the private Flutter 3.44+ APIs that are only available in the same-engine desktop implementation.
_packages/desktop\_multi\_window\ohos · high confidence
Add HarmonyOS stub for universal gamepad plugin
A no-op stub implementation of the universal gamepad plugin has been added for HarmonyOS. This allows shared application code to compile and run on HarmonyOS without requiring a native plugin implementation or platform channel, by providing empty streams and methods that satisfy the existing API surface.
_packages/universal\_gamepad\_ohos\stub · high confidence
Add kmbal\_ionicons package with Ionicons v7.4.0 and Android rendering fix
This change introduces the kmbal\_ionicons package, a fork of the original ionicons package, upgraded to Ionicons v7.4.0. The package includes a new example application and fixes a rendering issue on Android where icons were not displaying correctly. The update also includes a new Makefile for generating fonts and source code, and updates the example app to support searching for icons.
_third\_party/kmbal\_ionicons, third\_party/kmbal\_ionicons/example, third\_party/kmbal\ionicons/example/android · high confidence
Fix cancelled file selection handling in the HarmonyOS file selector plugin
The HarmonyOS implementation of the file selector plugin now correctly handles user cancellation. When a user cancels the file selection dialog, the plugin treats an empty result from the native \DocumentViewPicker\ as a cancellation event and ensures the Flutter platform reply is always completed, preventing the app from hanging or waiting indefinitely for a response.
_packages/file\_selector\ohos · high confidence
Refine Cupertino bottom navigation styling and insets
Updated the Cupertino theme utilities to improve the appearance and layout of bottom navigation bars. The selected navigation item now retains the accent color while inactive items use high-contrast monochrome colors (black or white depending on brightness). Additionally, the liquid glass navigation bar insets have been adjusted to ensure proper spacing, including specific handling for iOS 27's extended chrome and consistent edge gaps for the floating tab bar and page actions.
lib/themes/cupertino/utils · high confidence
Windows shared preferences no longer block the UI isolate
The Windows implementation of shared preferences now performs all file I/O asynchronously and offloads JSON encoding to a background isolate, preventing playback-position saves from freezing the Flutter UI. It also caches the application-support directory path after the first lookup to avoid repeated synchronous Win32 metadata queries, and serializes writes to ensure that later saves (such as a newer playback position) are not overwritten by earlier async writes.
_packages/shared\_preferences\windows · high confidence
Test coverage
Added placeholder unit test files for iOS and macOS runners; Added test harnesses for command channel and motion clock; Added tests for settings UI, platform policies, danmaku, and AniSkip; Added unit tests for the C++ DanmakuParser.
Dependencies
Add pugixml 1.14 and RapidJSON 1.1.0 third-party libraries
The cpp\_native/third\_party directory now includes the pugixml XML parser (version 1.14) and the RapidJSON library (version 1.1.0). This adds the pugixml source files (pugixml.hpp, pugixml.cpp, pugiconfig.hpp) and the complete RapidJSON header set, build configuration (CMakeLists.txt), and CI scripts, enabling the application to parse XML and JSON data using these specific library versions.
_cpp\_native/third\party · high confidence
Added Gradle wrapper configuration for version 8.12
The project now includes a Gradle wrapper properties file that configures the build system to use Gradle 8.12. This ensures consistent build environments across different machines by automatically downloading and using the specified Gradle distribution.
android/gradle · high confidence
Android build environment upgraded to AGP 8.9 and Kotlin 2.3
The Android build configuration has been migrated to the Android Gradle Plugin 8.9.1 and Kotlin 2.3.21, with the minimum SDK raised to 26 and Java compatibility set to version 17. This update introduces R8 full-mode code shrinking for release builds, enables MultiDex support, and configures the native C++ build to use NDK 29.0.14206865. Additionally, the project now includes a \puppeteer-core\ dependency for Node.js and updates the \adaptive\_platform\_ui\ example to use AGP 8.9.1 and Kotlin 2.1.0.
(dependencies) · high confidence
media\_kit package scaffold and web HLS engine update
The \packages/media\_kit\ directory has been initialized with core package files (\.gitignore\, \CHANGELOG.md\, \LICENSE\, \README.md\, \analysis\_options.yaml\). Additionally, the web playback engine has been updated to include \hls.js\ version 1.4.10, providing the underlying HLS streaming capabilities for the web platform.
_packages/media\kit · high confidence
Housekeeping
Added Android project configuration and ignore rules; Placeholder added to assets/web directory; Placeholder created for custom plugins directory.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 60.
Lenses
- Code Health 60
- Architecture 97
- Maturity 73
- Readiness 53
- Security 60
- Domain Modelling 100
Changes since last survey
- 300 commits — 168 feature/other, 132 fixes
By area
- (repo) — 57 commits
- lib/themes — 55 commits
- .github/workflows — 33 commits
- lib/services — 24 commits
- (root) — 23 commits
- lib/utils — 20 commits
- rust/src — 10 commits
- lib/settings — 9 commits
- lib/models — 7 commits
- lib/media_library — 6 commits
- .github/actions — 5 commits
- lib/player_abstraction — 5 commits
- lib/pages — 4 commits
- lib/widgets — 4 commits
- lib/constants — 3 commits
- lib/plugins — 3 commits
- assets/linux — 2 commits
- assets/sfx — 2 commits
- packages/shared_preferences_windows — 2 commits
- .github/app-store-metadata — 1 commit
Notable commits
- fix: Fix: GTK4 Apps have double titlebar after installing nipaplay
- fix: Merge pull request #798 from baizhenyu/fix-639
- fix: Merge pull request #812 from makabaka11/fix/remote-playlist
- fix: Merge pull request #814 from aozaoz112233/codex/fix-ohos-signing-tty
- fix: Merge pull request #819 from makabaka11/fix/iOS-system-file-selector
- fix: Merge pull request #820 from AimesSoft/codex/fix-release-ci-20260804
- fix: Merge pull request #821 from AimesSoft/codex/fix-erika-ohos-arkts-types
- fix: Merge pull request #823 from AimesSoft/codex/fix-erika-windows-minmax
- fix: Merge pull request #824 from AimesSoft/codex/fix-erika-windows-timespan
- fix: Merge pull request #826 from AimesSoft/codex/fix-pr-ci
- fix: Merge pull request #827 from AimesSoft/codex/fix-app-store-privacy-metadata
- fix: Merge pull request #838 from makabaka11/fix/windows-volume-error
- fix: Merge pull request #854 from AimesSoft/codex/fix-player-kernel-doc-accuracy
- fix: Merge pull request #860 from AimesSoft/codex/nipaplay-erika-v016-tvos-fix
- fix: Merge pull request #862 from AimesSoft/fix/release-linux-gstreamer-ohos-webview
- fix: Merge pull request #863 from AimesSoft/fix/linux-build-deps-round2
- fix: Merge pull request #864 from makabaka11/fix/playlist-auto-load
- fix: Merge pull request #868 from OctoBored/fix/star-history-chart
- fix: Merge pull request #871 from ASIjacket/fix/ios-player-ua-setting
- fix: Merge pull request #873 from ASIjacket/fix/emby-episode-dialog-close-upstream
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
AimesSoft/NipaPlay-Reload was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit be9e8448cabdb71238772494434327ea671e5cc3 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.