FoxSensei001/LoveIwara
45.5
Weak · 21 October 2026
286.9k
lines of production code
Dart
with Kotlin
1
measurement over time
What this system is
This system is a cross-platform media consumption application, primarily built with Flutter, designed for browsing and playing videos and images from the Iwara platform. It features a comprehensive local media library with WebDAV support, a robust download manager with custom categorization, and a dedicated VR/Quest mode with immersive spatial environments and hand tracking. The application also integrates AI-powered search and translation, forum and social interaction capabilities, and a unified 'liquid glass' UI across Android, iOS, Windows, macOS, and Linux.
How it got here
2024 — liquid glass UI and platform expansion
77 changes.
The application underwent a comprehensive visual overhaul to the 'liquid glass' design language, introducing glass-morphism effects across all major pages and components. This period also saw significant platform expansion, adding robust desktop support for macOS, Linux, and Windows with native file associations and deep linking, while migrating the Android build to Quest compatibility and upgrading the iOS configuration.
2025–2026 — Liquid glass UI and VR immersion
92 changes.
The project underwent a comprehensive visual overhaul, implementing a unified 'liquid glass' design language across all major pages and introducing a dedicated immersive VR environment for Quest devices. This period also saw the expansion of core functionality with new community features like forums and news, alongside significant backend improvements to local media management, download organization, and AI integration.
Features
Add SQLite database support for native platforms
The application now supports SQLite database operations on native platforms (such as Android and iOS) by introducing a new database layer in the \lib/db/sqlite3\ directory. This implementation uses the \sqlite3\ package to open and manage a local database file (\i\_iwara.db\) stored in the application's documents directory. It specifically enables Write-Ahead Logging (WAL) mode to prevent database corruption during automatic backups, ensuring data integrity. For unsupported platforms, the database functionality gracefully throws an \UnsupportedError\.
lib/db/sqlite3 · high confidence
Add follows page with tabbed list views
Introduces a new FollowsPage that displays following, followers, and special follows lists in a tabbed interface. The page supports viewing other users' lists, includes a 'back to top' floating action button, and allows toggling between paginated and waterfall list modes.
lib/app/ui/pages/follows · high confidence
Add friends list page controller
The application now includes a controller for the new friends list page, enabling users to manage their friend connections. This controller handles loading states for both the friend list and friend requests, and provides actions to remove friends, accept or reject friend requests, and cancel pending requests, with error feedback displayed via toast notifications.
lib/app/ui/pages/friends/controllers · high confidence
Add in-list search for media collections
Users can now search within their existing lists (Favorites, Following, Playlists, Collections, Watch Later, and Author pages) without leaving the page. A new PagedSearch widget provides an inline search bar that filters the currently loaded items locally, with an option to scan the entire server-side list for matches, including support for @handle searches.
_lib/app/ui/widgets/paged\search · high confidence
Add playlist management and detail views with glass UI and batch selection
The application now includes a new Play List page and a Play List Detail page, introducing the ability to view, create, and manage user playlists. These screens feature a 'glass' visual theme and support both paginated and waterfall list rendering modes. A key capability added is batch selection mode, allowing users to select multiple items for bulk actions (such as deletion in the detail view) via touch or keyboard shortcuts. The implementation integrates with the new GoRouter navigation system and uses the LoadingMoreList package for efficient list rendering.
_lib/app/ui/pages/play\list · high confidence
Add sign-in heatmap widget with failure reason tracking
A new SignInHeatMap widget has been added to the sign-in page, displaying a 90-day grid of sign-in status (success, failure, or missed) with color-coded intensity based on consecutive sign-in streaks. The widget now tracks and displays specific failure reasons; tapping a failed day shows a GlassAlertDialog containing the recorded reason for that specific lapse.
_lib/app/ui/pages/sign\in/widgets · high confidence
Add tag blacklist management controller
Introduces the TagBlacklistController, which enables users to manage their tag blacklist by fetching, adding, and removing tags. The controller enforces a limit on the number of blacklist tags (30 for premium users, 8 otherwise) and prevents saving if the limit would be exceeded. It tracks unsaved changes and provides feedback via toast notifications for success or errors during fetch and save operations.
_lib/app/ui/pages/tag\blacklist/controllers · high confidence
Add user tag blacklist management page
Users can now manage their tag blacklist via a new dedicated page. This feature allows users to search for and add specific tags to their blacklist, view the current list, and save changes. The interface includes options to refresh the list, discard unsaved changes, and handles loading, error, and empty states with appropriate feedback.
_lib/app/ui/pages/tag\blacklist · high confidence
Added Anime4K v3.2 and v4.0 shader presets
The \assets/anime4k\_shaders\ directory now includes a comprehensive suite of GLSL shaders implementing the Anime4K v3.2 and v4.0 upscaling and restoration algorithms. These new files provide users with multiple processing options, including auto-downscaling pre-passes, various denoising modes (bilateral mean, median, and mode), deblurring (Difference of Gaussians and original methods), line darkening (fast, HQ, and very fast variants), highlight clamping, and CNN-based restoration. This addition expands the available image enhancement capabilities for upscaling content.
_assets/anime4k\shaders · high confidence
Added VR equirectangular-to-perspective shader for video playback
A new fragment shader (vr\_equirect.frag) has been added to support VR video playback by remapping equirectangular video frames into a perspective view. This allows users to view 360° or 180° video content with natural head-tracking interaction (yaw/pitch) instead of seeing a distorted, flattened 2:1 panorama. The shader handles stereo eye separation, field-of-view adjustments, and Y-axis flipping for OpenGL ES backends, integrating with the Flutter engine's image filter system to render the video texture correctly.
assets/shaders · high confidence
Added abstract interface for home page refresh capability
Introduced the HomeWidgetInterface abstract class in the home page module, defining a refreshCurrent method to standardize how home page widgets handle refresh actions.
lib/app/ui/pages · high confidence
Added data repositories for followers and following lists
Introduced \FollowersListRepository\ and \FollowingListRepository\ to handle data fetching for user follower and following lists. These repositories extend \ExtendedLoadingMoreBase\ to support both waterfall and pagination display modes, delegating to the \UserService\ to retrieve paginated user data and extracting results and total counts from the API response.
lib/app/ui/pages/follows/repositories · high confidence
Added favorite image and video repositories
Introduced new repository classes for the Favorites page to handle paginated data loading for images and videos. These repositories integrate with the existing Gallery and Video services to fetch favorite content, ensuring proper pagination and error handling for the user's saved media lists.
lib/app/ui/pages/favorites/repositories · high confidence
Added skeleton loading widgets for the video detail page
New skeleton UI components have been introduced to display placeholder content while the video detail page loads. This includes a wide-layout skeleton that combines a loading state for the video player with a skeleton list for the side panel, alongside specific skeleton widgets for the media tile list and the detailed media information area (title, user info, description, tags, and action buttons).
_lib/app/ui/pages/video\detail/widgets/skeletons · high confidence
Added tag blacklist search dialog with localized results
Users can now search for and select tags to add to their blacklist via a new dialog widget. This component integrates with the tag localization service to merge local translations with remote API results, ensuring that Iwara tags are displayed in the user's preferred language. It supports paginated search with infinite scrolling and includes error handling for network failures.
_lib/app/ui/pages/tag\blacklist/widgets · high confidence
Android native enhancements: volume keys, downloads, privacy, and Picture-in-Picture
The Android app now supports listening to hardware volume keys for media control, ensures downloads continue running in the background via a foreground service, and introduces an app-lock feature triggered by screen-off events. Privacy controls have been expanded to include a recents-thumbnail mask for Android 13+ and a new Picture-in-Picture (PiP) bridge that replaces the previous plugin with a custom implementation for better error reporting, lifecycle handling, and aspect-ratio clamping. Additionally, the app can now open videos in external players and detects device form factors to adapt the UI (e.g., transparent backgrounds for VR headsets).
android/app/src/main/kotlin/m · high confidence
Author profile page expanded with new tabs, batch selection, and glass UI
The author profile page now supports four main tabs (Video, Image, Playlist, Post) instead of the previous two, with each tab having its own secondary tab controller. It introduces batch selection capabilities for videos and images, allowing users to select multiple items for actions like downloading. The UI has been significantly updated to use a 'liquid glass' design system, including glass morphism effects, adaptive segmented controls, and a floating 'back to top' button. New features include the ability to follow/unfollow users, block users, send private messages, and view user posts. The page also handles scroll state preservation across layout changes and device rotations more robustly.
_lib/app/ui/pages/author\profile · high confidence
Author profile tabs redesigned with glass UI, filtering, and post creation
The author profile page now features a unified 'liquid glass' visual style across all tabs (videos, images, playlists, and posts). The video and image tabs have been rewritten to support tag and date filtering via a side drawer, and both now offer a toggle between paginated and waterfall layouts. A new 'Posts' tab has been added, allowing users to view and create posts via a new input dialog that supports markdown, emoji, and signature footers. The playlist tab was also updated to fix scroll coordination issues and include a 'back to top' button. Additionally, the skeleton loading states have been refined to better match the new wide/narrow screen layouts.
_lib/app/ui/pages/author\profile/widgets · high confidence
Author profile video and image lists now support tag and date filtering
The author profile page now allows filtering video and image galleries by tags and date ranges. This is implemented by introducing dedicated repositories (UserzVideoListRepository and UserzImageModelListRepository) that pass sort, tag, and date parameters to the backend, replacing the previous controllers that only supported basic sorting and pagination.
_lib/app/ui/pages/author\profile/controllers · high confidence
Automated generation of Windows installer branding assets
A new Python script (gen\_assets.py) has been added to the windows/packaging directory to automatically generate the visual assets required for the Windows installer. This tool processes the source application icon to create a multi-resolution .ico file for the application and a series of themed .bmp banners (large and small) for the Inno Setup wizard, ensuring the installer UI matches the application's branding.
windows/packaging · high confidence
Download list redesign with categories, error classification, and mobile scaling
The download list UI has been rebuilt with a new card-based layout that supports both row and grid views, scaling automatically for smaller screens. Users can now organize downloads into custom categories via a new picker and management interface, and failed tasks display human-readable error labels instead of raw exception text. The interface also includes a relocation flow to move files between folders, a notice banner for system alerts, and a unified action menu for tasks.
lib/app/ui/pages/download/widgets · high confidence
Download management restructured with unified launcher, category folders, and glass UI
The download experience has been significantly reorganized. A new centralized \MediaDownloadLauncher\ unifies the download initiation flow for both videos and galleries, ensuring consistent behavior across the app. The download list now supports custom category folders, allowing users to organize tasks and even manually scanned local media files into these categories. The UI has been fully updated to the 'Glass' design language, featuring a waterfall layout for gallery details, a new category management page, and batch selection capabilities. Additionally, the 'Watch Later' page has been introduced to manage saved videos and images, and the download task list now uses a single in-memory source of truth for active tasks to improve consistency.
lib/app/ui/pages/download · high confidence
Enable local file playback via desktop integration
The Linux desktop entry now registers support for common video MIME types, and the native application code has been updated to handle file opening requests. A new method channel is established to receive file URIs from the OS, allowing the app to process and play local video files directly from the file manager or command line.
linux · high confidence
Expanded Linux plugin support for desktop integration features
The Linux build now registers additional Flutter plugins to enable new desktop capabilities. Users gain support for desktop file dropping (drag-and-drop), dynamic color theming, Linux-specific file selection, system notifications, volume control, and opening files/URLs via the system. The build also includes plugins for GTK integration, engine context management, and super native extensions, while updating the FFI plugin list to include JNI support.
linux/flutter · high confidence
Expanded Windows plugin support with new capabilities
The Windows build now registers a significantly larger set of Flutter plugins, enabling new platform features. Added registrations include app\_links (deep linking), battery\_plus, connectivity\_plus, desktop\_drop (drag-and-drop support), dynamic\_color, file\_selector\_windows, flutter\_inappwebview\_windows, irondash\_engine\_context, local\_auth\_windows (biometric authentication), local\_notifier, permission\_handler\_windows, share\_plus, super\_native\_extensions, and volume\_controller. The screen\_brightness\_windows plugin has been updated to use the C API registration method. Additionally, the FFI plugin list now includes flutter\_local\_notifications\_windows and jni, expanding native integration capabilities.
windows/flutter · high confidence
Expanded language support to 12 locales with pluralization
The application now supports 12 languages (German, English, Spanish, French, Indonesian, Japanese, Korean, Russian, Thai, Vietnamese, Simplified Chinese, and Traditional Chinese). This update includes the translation of core UI strings, such as personal profile settings, tutorial guides, and common actions, and enables pluralization rules for accurate text formatting across these locales.
lib/i18n · high confidence
Immersive spatial media environment with dynamic room lighting and orbital backgrounds
The Quest app now features a persistent immersive space that replaces the previous void/transparent backgrounds with photo landscape environments and optional orbital bodies (Earth and Moon) that orbit the user. Media playback and gallery browsing are enhanced with a spatial color pipeline that extracts ambient colors from the content to create dynamic room lighting (ambience) around the screen, including a soft halo effect that diffuses outward. This environment layer sits below all media and UI panels, ensuring it does not interfere with content visibility while providing a more engaging, cinema-like atmosphere. The system handles GPU resource cleanup and context loss gracefully to maintain stability during these complex visual effects.
app · high confidence
Introduce new Forum section with thread browsing, detail views, and pagination
The app now includes a dedicated Forum area within the Community section, featuring a main forum page that displays recent threads and category-based thread lists. Users can browse threads in either waterfall or paginated modes, view full thread details with comment threads, and create new posts. The UI integrates the app's liquid glass design system, including glass headers, floating action buttons for scrolling to top, and skeleton loading states for improved perceived performance.
lib/app/ui/pages/forum · high confidence
Introduce notifications page with glass UI and scroll-to-top behavior
The notifications page now uses the liquid glass design system, featuring a glass header overlay, glass surface, and glass title pill. A scroll-to-top floating action button is implemented, which remains hidden during scrolling and appears 300ms after scrolling stops. The page supports marking all notifications as read, refreshing the list, and displaying a help dialog for notification types. It also integrates with the user service to display unread counts for notifications, friend requests, and messages.
lib/app/ui/pages/notifications · high confidence
Introduce private messaging (conversations) with a responsive UI
Adds a new private messaging capability, exposing a ConversationPage that adapts to screen width: on narrow screens it uses nested navigation to show a conversation list and then the message thread, while on wide screens it displays both panes side-by-side. The conversation list widget supports infinite scrolling, unread indicators, and a 'start new conversation' dialog that includes user search, emoji picking, and Markdown preview. The message list widget renders individual messages with Markdown support, a global 'show original text' toggle, translation options, and a long-press action menu (copy, translate, delete). Sending messages is handled via a bottom-sheet composer with Markdown, emoji, and translation helpers.
lib/app/ui/pages/conversation/widgets · high confidence
Introduces AI-powered search query builder and precise CJK matching
The search module now includes an AI search capability that translates natural language input into structured search parameters (segment, keyword, sort, filters) without automatically executing the search, allowing users to review and confirm the generated query. It also introduces precise CJK matching by automatically adding quotes to multi-character CJK keywords to prevent loose OR-based matching, with the ability to toggle this behavior. Additionally, the search page supports saving and restoring search configurations, and includes a search history feature with weighted suggestions.
lib/app/ui/pages/search · high confidence
Introduces FollowsController for managing follow/follower lists
Added a new FollowsController to handle the logic for the follows page, including managing state for following and followers lists, handling scroll controllers for pagination and 'back to top' functionality, and providing methods to refresh data and navigate to user profiles.
lib/app/ui/pages/follows/controllers · high confidence
Introduces a structured, platform-aware first-time setup wizard
Users now encounter a new, multi-step onboarding flow that adapts to their device: desktop users see a network/proxy configuration step, while VR headset users see a spatial playback guide instead of standard player settings. The wizard unifies the UI with a consistent glass-morphism layout, standardized typography, and shared navigation controls, replacing the previous ad-hoc setup screens. It collects initial preferences for themes, player behavior, and basic app settings before marking the setup as complete.
_lib/app/ui/pages/first\_time\setup · high confidence
Introduces local favorites with folder and item data models
This change adds the underlying data structures for the new local favorites feature. It introduces the \FavoriteFolder\ model to represent user-created collections (with title, description, and item count) and the \FavoriteItem\ model to represent individual saved items (videos, images, or users) linked to a folder, including metadata like tags, author info, and preview URLs. These models support serialization to and from JSON, enabling the persistence and retrieval of local favorite collections.
lib/app/models/favorite · high confidence
Introduces new DTOs for forum sections, history, user profiles, and friend requests
The application adds several new data transfer objects to handle specific data structures: \ForumThreadSectionDto\ for forum categories, \HistoryRecordDTO\ for tracking viewed content (videos, images, posts, threads), \ProfileUserDto\ for user profile data including tag blacklists and notifications, \UserDTO\ for basic user information, and \UserRequestDTO\ for friend request handling. These DTOs provide structured parsing and serialization for their respective API responses and local storage needs.
lib/app/models/dto · high confidence
Introduces notification list data repository with pagination and refresh guards
Adds a new \NotificationListRepository\ that manages the loading, pagination, and refreshing of user notifications. It integrates with the existing \UserService\ to fetch data and implements a generation-based guard to prevent state corruption during rapid refreshes or page changes, ensuring that stale data from interrupted operations is discarded. The repository also handles authentication checks and displays user-facing error toasts if the user is not logged in or if the fetch fails.
lib/app/ui/pages/notifications/controllers · high confidence
Iwara tag localization and search support
The app now supports displaying and searching Iwara tags in Simplified Chinese, Traditional Chinese, Japanese, and English. A new data pipeline fetches raw tags from the Iwara API, generates multi-language translations via AI, and merges them with manual overrides into a compact \iwara\_tags.min.json\ file. This file is bundled with the app and also available via CDN for hot updates. At runtime, the \TagLocalizationService\ uses this data to show localized tag names in the UI and enables bidirectional search matching against both localized names and original tag IDs.
_tool/data/iwara\tags · high confidence
Multi-route search merging with sorting and new content types
The search repositories now support multi-route merging, combining results from multiple search strategies (such as tag expansion and cross-language matching) into a single unified list. This change introduces sorting capabilities for videos and images by date, views, and likes, and adds dedicated search repositories for new content types including Oreno3d videos, posts, forums, and forum posts.
lib/app/ui/pages/search/repositories · high confidence
New AI, comment, and system utility modules
Added several new utility files in lib/app/utils: ai\_error\_describe.dart for flattening API and SDK errors into user-readable messages, ai\_json\_extract.dart for robust JSON extraction from model responses, ai\_model\_id.dart for normalizing model identifiers, ai\_think\_tags.dart for splitting streaming reasoning tags, ai\_token\_format.dart for formatting token counts, app\_exit.dart for handling application exit including XR immersive mode, comment\_markup.dart for structuring comment replies and signatures, exit\_confirm\_util.dart for double-tap exit confirmation, frame\_perf\_logger.dart for frame timing performance logging, iwara\_deep\_link\_utils.dart for normalizing deep links, iwara\_different\_site\_recovery.dart for automatic cross-site error recovery, layout\_calculator.dart for responsive layout calculations, local\_vr\_filename\_detector.dart for detecting VR format from filenames, and markdown\_formatter.dart for formatting markdown links.
lib/app/utils · high confidence
New DLNA casting service and video detail controllers
The video detail page now supports casting videos to DLNA devices. A new \DlnaCastService\ handles device discovery, connection, and playback control, while the \my\_video\_state\_controller\ integrates this capability and manages the overall video state, including playback, fullscreen, and screen fit modes. Additional controllers like \related\_media\_controller\ and \player\_notice\ handle related content fetching and playback error notifications, respectively. A \video\_cache\_manager\ is also introduced to cache video info and sources for improved performance.
_lib/app/ui/pages/video\detail/controllers · high confidence
New Favorites page with video/image tabs and batch selection
A new MyFavorites page has been added, featuring separate tabs for videos and images. It supports batch selection for both media types, allowing users to perform bulk operations. The page includes a 'back to top' floating action button that appears after scrolling, and integrates with the playback queue so that 'Watch Later' functionality works correctly when navigating from favorites.
lib/app/ui/pages/favorites · high confidence
New Friends page with friend list and request tabs
Added a new Friends page that displays two tabs: a friend list and a friend request list. The page uses a glass-style header with an adaptive segmented control for tab switching and includes a 'Scroll to Top' floating action button that appears after scrolling. It integrates with the existing user service to manage friend interactions and supports internationalization for tab labels.
lib/app/ui/pages/friends · high confidence
New News section with glass-morphism UI and deep-link support
Users can now access a dedicated News section within the Community tab, featuring a liquid glass design language including overlay headers, glass-style menus, and a scroll-to-top floating action button. The News page supports multiple categories and languages, with seamless integration into the global navigation via deep links. A new News Detail page provides rich markdown rendering, language switching, and an option to open content in an external browser.
lib/app/ui/pages/news · high confidence
New SQLite-based repository layer for app data persistence
The application now uses a dedicated SQLite database layer to manage core data, replacing previous storage mechanisms. This change introduces new repository classes for handling configuration (CommonsRepository), download tasks (DownloadTaskRepository), browsing history (HistoryRepository), local media files (LocalMediaRepository), sign-in records (SignInRepository), and Oreno3d matching (Oreno3dMatchCacheRepository). Users benefit from more robust data persistence, including features like automatic history cleanup, local media scanning and categorization, and reliable download task management.
lib/app/repositories · high confidence
New UI widget library for glass-morphic components and media controls
This change introduces a comprehensive set of new UI widgets in the \lib/app/ui/widgets\ directory, establishing the visual foundation for the app's 'liquid glass' design language. Key additions include \ActionIconButtonScaffold\ for compact, themed action buttons; \AppLockScreen\ with a custom PIN keypad to bypass system input issues; \AppToast\ for unified, Material-style system notifications; and \AspectCorrectedVideo\ to fix video scaling artifacts on Windows/Linux software rendering. The diff also adds \AddToFavoriteDialog\ for managing favorite folders, \AITranslationToggleButton\ for AI translation controls, \AnimatedNavigationRailSlot\ for smooth wide-screen navigation transitions, and \Anime4KSettingsWidget\ for video enhancement presets. These components collectively replace ad-hoc implementations with a consistent, reusable widget set.
lib/app/ui/widgets · high confidence
New common utilities for video enhancement, accessibility, and configuration
This change introduces several new shared components in lib/common. It adds Anime4K shader preset definitions (lib/common/anime4k\_presets.dart) to support GPU-based video upscaling and restoration. It introduces color vision assist filters (lib/common/color\_vision\_filters.dart) providing daltonization matrices for protanopia, deuteranopia, and tritanopia to improve accessibility for color-blind users. It also adds a gallery image quality normalizer (lib/common/gallery\_image\_quality.dart) to standardize persisted quality settings, and updates the application constants (lib/common/constants.dart) to include version metadata and localization asset paths.
lib/common · high confidence
New data models for AI, forum, history, and media management
This change introduces a comprehensive set of new data models in the \lib/app/models\ directory to support expanded application capabilities. Key additions include \AiProvider\ and \AiTask\ models to manage AI supplier configurations and usage bindings (translation, search, signatures), alongside \BlockRule\ for local content filtering. The update also adds \ForumCategoryModel\ and \ForumThreadModel\ for forum support, \HistoryRecord\ for unified viewing history across videos, images, and posts, and \InnerPlaylistItemSnapshot\ to standardize the 'Watch Later' and playback queue logic for both videos and galleries. Additionally, \MediaFile\ is enhanced to correctly handle video poster generation and domain routing, while \ApiFailureResolver\ and \ApiRequestAccess\ provide structured error handling and access control for network requests.
lib/app/models · high confidence
New dedicated poll detail page and embeddable poll card with translation support
Users can now view polls via a dedicated \/poll/:id\ page that displays a single interactive poll card, accessible from external links or links embedded in post bodies. The new \PollEmbedCard\ widget allows users to select options and submit votes with a confirmation step (preventing accidental submissions), and includes a translation feature with a language selector for poll titles and content. The page also provides a header with a back button and a copy-link button for easy sharing.
_lib/app/ui/pages/poll\detail, lib/app/ui/widgets/poll · high confidence
New emoji library with batch selection and drag-to-reorder
The app now includes a dedicated Emoji Library page where users can manage emoji groups. This feature introduces a liquid glass header, the ability to drag-and-drop to reorder groups, and a batch selection mode that allows users to select multiple emojis for actions like deletion. A new detail sheet for individual groups supports this multi-select interaction, integrating with the app-wide glass UI components.
_lib/app/ui/pages/emoji\library · high confidence
New enum definitions for emoji sizing, search segments, and filtering
This change introduces three new enum files in the common library: \emoji\_size\_enum.dart\ defines five emoji display sizes (icon through extraLarge) with associated metrics like display size, margin, and border radius; \media\_enums.dart\ adds \SearchSegment\ to map UI search types (video, image, post, user, forum, playlist, etc.) to their corresponding API endpoint strings, along with \MediaRating\ and \MediaType\; \filter\_enums.dart\ establishes the data structures for a new filtering system, including \FilterOperator\ (supports operators like CONTAINS, EQUALS, RANGE, IN), \FilterField\ (defining field metadata like type and options), and \Filter\ (with serialization/deserialization support via \toJson\/\fromJson\). These enums provide the foundational type definitions for upcoming UI components related to emoji rendering, search functionality, and content filtering.
lib/common/enums · high confidence
New favorite tags management pages for Iwara and Oreno3d
Added new UI pages for managing favorite tags: a dedicated page for Iwara search tag history and a tabbed page for Oreno3d entities (origin, character, tag) with localizable names and offline selection support. Both pages utilize the new 'liquid glass' header style and allow users to add or remove favorites via chip-based interfaces and tag picker dialogs.
_lib/app/ui/pages/favorite\tags · high confidence
New followers, following, and special follows list widgets
Added three new UI components for the follows section: FollowersList and FollowingList display paginated or waterfall-style lists of users using MediaListView and UserCard, while SpecialFollowsList provides a locally managed, reorderable list of 'special' (liked) users with drag-and-drop reordering and a confirmation dialog for removal.
lib/app/ui/pages/follows/widgets · high confidence
New forum interaction widgets: posting, editing, and commenting
This change introduces a suite of new UI components for the forum section, enabling users to create, edit, and reply to threads. It adds \ForumPostDialog\ for creating new threads with category selection, cooldown enforcement, and emoji/translation support; \ForumEditTitleDialog\ and \ForumEditReplyDialog\ for modifying existing content; and \ForumReplyBottomSheet\ for replying with quote support and signature context. Additionally, \ThreadCommentCardWidget\ renders individual comments with ghost-action pills for replies, translations, and floor-jumping, while \ThreadListItemWidget\ displays thread previews with hover effects and author metadata. A \ForumShimmerWidget\ provides loading placeholders, and \ShareThreadBottomSheet\ allows sharing thread details via text or image cards.
lib/app/ui/pages/forum/widgets · high confidence
New friend and request list widgets with disabled actions
Added \FriendList\ and \FriendRequestList\ widgets to the friends UI, implementing paginated lists of friends and incoming requests using \LoadingMoreCustomScrollView\. The friend request list distinguishes between requests received (showing accept/reject buttons) and sent (showing a cancel button), while the friend list displays remove actions. However, all interactive buttons (remove friend, accept/reject, cancel request) are currently disabled (\onPressed: null\) due to a known UI bug where items persist in the list after an action is performed.
lib/app/ui/pages/friends/widgets · high confidence
New friend list and request repositories with pagination stability
Added \FriendListRepository\ and \FriendRequestRepository\ to manage the friend list and friend request lists respectively. These repositories implement paginated data loading using \LoadingMoreBase\ and include a \LoadingMoreRefreshGuard\ to prevent state corruption during rapid refreshes or layout changes. They handle user ID validation, generation-based stale result discarding, and proper pagination state management to ensure the UI remains consistent during scrolling and refreshing.
lib/app/ui/pages/friends/repositories · high confidence
New gallery detail controller with history, watch-later, and cross-site recovery
The gallery detail page now uses a dedicated \GalleryDetailController\ that handles image model loading, automatic history recording (after a 3-second delay), and integration with the watch-later feature (marking galleries as viewed upon opening). It also includes logic for cross-site resource recovery (redirecting to the correct site if the resource is unavailable on the current one), favorite status checking, and download task status monitoring.
_lib/app/ui/pages/gallery\detail/controllers · high confidence
New gallery viewer chrome and controls
Adds a dedicated large-image viewer overlay for the gallery detail page, including a filmstrip thumbnail bar, video playback controls, and corner chips for zoom and rotation. The viewer enforces a dark chrome theme to ensure white UI elements remain visible on the black media background, and introduces keyboard shortcuts, volume key support, and mouse wheel navigation for switching images and zooming.
_lib/app/ui/pages/gallery\detail/widgets · high confidence
New iOS-style motion and haptic feedback utilities
Added \ios\_motion.dart\ to provide iOS-style animation primitives, including spring-based transitions for layout, press-down/up scaling, and digit rolling, along with haptic feedback wrappers that respect system vibration settings and reduced-motion preferences. This file introduces the underlying motion engine (springs, curves, haptics) used by the download page, but does not include the page's UI components themselves.
lib/app/ui/widgets/motion · high confidence
New immersive gallery detail page with spatial and wide-screen support
The gallery detail view has been replaced with a new implementation that supports immersive spatial browsing and wide-screen layouts. Users can now enter a full-screen image viewer directly from previews or the 'Continue Watching' queue, with the viewer preserving its position when returning to the list. The page features a responsive design that adapts to wide screens with a side-by-side layout, includes inline translation for titles, and integrates with the new 'liquid glass' UI theme for headers and controls.
_lib/app/ui/pages/gallery\detail · high confidence
New internal tooling for Quest landscapes, performance benchmarking, and i18n validation
This change introduces several new scripts in the \tool/\ directory to support development and localization workflows. \generate\_quest\_landscapes.py\ procedurally generates 4096x2048 sRGB panorama assets (aurora, sunset, mist) for Quest environments using numpy and Pillow, replacing the need for manual image creation. \glass\_bench.py\ and \glass\_trace.py\ provide performance profiling capabilities for the 'liquid glass' UI effect, allowing developers to run A/B benchmarks and trace raster thread timings on real devices via ADB and Dart VM service RPCs. Additionally, a suite of Dart scripts (\i18n\_align.dart\, \i18n\_apply.dart\, \i18n\_check.dart\, \i18n\_flatten\_block\_scalars.dart\, \i18n\_glossary.dart\, \i18n\_ledger.dart\) has been added to manage internationalization consistency, including validation of key alignment, placeholder integrity, block scalar formatting, and generation of translation ledgers and glossaries for 12 languages.
tool · high confidence
New local favorites feature with folder management and tag filtering
Users can now create, rename, and delete local favorite folders, with the ability to view items within a folder using a waterfall or paginated list view. The folder detail page includes a right-side drawer for filtering content by keyword and tags, where tag selection uses an AND logic based on tags actually present in the folder. The interface uses the new Glass UI components, including a glass header overlay and a scroll-to-top FAB that appears after scrolling.
lib/app/ui/pages/favorite · high confidence
New local media browsing interface with tree navigation and gallery support
The app introduces a dedicated local media section with a new root home page and a tree-based folder browser. Users can now browse local files and downloaded galleries in a structured directory view, with support for filtering by type (folders, videos, images, galleries), searching across the library, and managing sources (including WebDAV/NAS integration). Downloaded galleries are displayed in a grid with proper cover handling, and the interface includes features like pinned folders, hidden folder visibility toggles, and persistent sort preferences.
_lib/app/ui/pages/local\media · high confidence
New local video detail info widget with metadata derivation
Added a new \LocalVideoInfoWidget\ component for the local video detail page that displays video metadata and file information. The widget loads local media items from the repository and automatically triggers a derivation service to generate missing thumbnails, covers, and dimensions before playback. It supports displaying remote covers from download tasks and presents video info and file details in distinct cards, ensuring metadata is available and consistent for the user.
_lib/app/ui/pages/local\_video\detail · high confidence
New media-list widgets: batch selection, content blocking, and filter drawer
The popular-media list now supports multi-select batch downloading (with quality and category pickers), local content blocking with frosted-glass placeholders, and a persistent filter drawer (sort, date, rating, tags) that applies changes instantly. These widgets also wire up the list to the app-wide glass UI and selection scope, ensuring consistent behavior across waterfall and paginated layouts.
_lib/app/ui/pages/popular\_media\list/widgets · high confidence
New notification content widgets with multi-context support and glass UI
The notifications page now uses new widget components to render notification items with a glass-morphism design. These widgets support displaying content for replies and comments across multiple contexts (videos, galleries, user profiles, forum threads, and posts), as well as review approval notifications. The UI includes visual indicators for read/unread status, shimmer loading states, and handles navigation to the relevant content pages upon interaction.
lib/app/ui/pages/notifications/widgets · high confidence
New offline tag library audit tool for identifying translation issues
Added a new offline audit tool (\tool/tag\_audit\) that scans the \iwara\_tags\ and \oreno3d\_tags\ libraries to generate a prioritized worklist of potential translation errors without modifying existing data or requiring network access. The tool identifies specific signals such as name collisions, parser split risks, stuffed translations, residual kana in Chinese, script mismatches (Simplified/Traditional), missing translations, and suspicious lengths, outputting a human-readable report and a machine-readable JSON worklist to help prioritize manual review.
_tool/tag\audit · high confidence
New performance benchmarking scripts for Liquid Glass UI knobs
Added a suite of Python scripts in tool/perf (ab.py, ab2.py, drv.py, jank.py, mat.py, scen.py, sf.py, tla.py) to automate performance testing of the new Liquid Glass UI features. These tools connect to a device via the VM service to collect frame timelines and CPU samples, allowing users to run A/B comparisons of 12 specific Liquid Glass configuration knobs (such as shadows, blur, and bar style) against a baseline, and to analyze jank and rasterization metrics.
tool/perf · high confidence
New personal profile management page with liquid glass UI
A new PersonalProfilePage has been added to allow users to view and edit their profile information. The page features a 'liquid glass' visual style, including a GlassHeaderOverlay and glass-themed action buttons, and supports avatar/header uploads with loading indicators. It integrates with the app's internationalization system for localized text and uses a refresh indicator to update user data.
lib/app/ui/pages/profile · high confidence
New player UI widgets for error handling, loading states, and playback feedback
The video player now uses dedicated widgets to improve the user experience during errors, loading, and playback adjustments. An ErrorStateWidget displays truncated error messages with options to view full details in a bottom sheet or retry, and intelligently renders clickable links within error text. A LoadingStateWidget provides visual feedback with a rotating spinner and displays specific loading messages (e.g., fetching info, applying solutions) along with the current video loading speed. A PlaybackSpeedAnimationWidget offers a subtle, animated indicator when playback speed changes, featuring a fade-in/out effect and a scale bump. Additionally, a PlayerNoticeChip replaces previous SnackBar implementations with a non-intrusive, always-ignoring pointer overlay for player notices, ensuring it doesn't block gestures or keyboard controls. A PlaybackIssueSheet allows users to view a log of playback issues with options to export logs, keeping raw technical logs hidden from the main view. Finally, PlayerTipMetrics defines shared geometry and density rules for bottom player tips, ensuring consistent layout and preventing overlap with the progress bar across different screen sizes and languages.
_lib/app/ui/pages/video\detail/widgets/player/widgets · high confidence
New popular media list pages for videos and galleries
Added new UI pages for browsing popular videos and popular image galleries. These pages are built on a shared base implementation that provides a consistent list experience, including support for sorting, filtering, and pagination. The base page also handles common interactions like refreshing the list when reselecting a category and managing the playback queue for 'continue watching' functionality.
_lib/app/ui/pages/popular\_media\list · high confidence
New post detail page with glass UI and comment integration
A new PostDetailPage has been added to display individual post content, featuring a glass-morphism header with back navigation, title pill, and share button. The page integrates a comment system via a bottom sheet, supports AI site badges, and includes a scroll-to-top FAB that appears after scrolling. It uses GetX for state management and includes shimmer loading states for better perceived performance.
_lib/app/ui/pages/post\detail · high confidence
New post detail page with translation, sharing, and author interaction
This location introduces the core UI components for the new post detail view. The main content widget displays the post title with an integrated translation button, author identity (avatar, name, and follow button), and the post body. A dedicated bottom sheet widget enables users to share the post via text or image. Additionally, a shimmer widget provides a loading skeleton that mirrors the layout of the detail view.
_lib/app/ui/pages/post\detail/widgets · high confidence
New service layer for AI, local media, and app security
The application introduces a new service layer in lib/app/services to support several new capabilities. An AI catalog and profile system (ai\_catalog\_service, ai\_profile\_store, ai\_service) provides a built-in directory of AI providers and models, allowing users to configure and use multiple AI suppliers with a focus on preserving reasoning content. On Android, a new AndroidMediaStoreService enables direct indexing of local video files. Security and privacy are enhanced with a new AppLockService that manages PIN and biometric locking, and a ContentBlockService that allows users to locally block content via keyword or regex rules. Additionally, a ConfigBackupService standardizes the export and import of user settings and history while explicitly excluding sensitive credentials and local file paths to protect privacy.
lib/app/services · high confidence
New settings widgets for AI, privacy, downloads, and external players
The settings page now includes several new configuration widgets: an AI provider wizard with endpoint preview and model picker, an app lock section with privacy mode controls, a download location changer with relocation support, a crash recovery dialog, a DeepLX translation settings page, and a desktop external player manager.
lib/app/ui/pages/settings/widgets · high confidence
New sign-in page with daily check-in and activity heatmap
The sign-in page has been replaced with a new interface that allows users to perform a daily check-in, view their total and consecutive sign-in counts, and inspect their activity history via a heatmap widget. The page includes logic to prevent duplicate sign-ins for the same day, displays specific error messages for failures, and supports selecting a date range to view historical data. The layout adapts to screen width, presenting statistics and the heatmap side-by-side on wider screens and stacked on smaller ones.
_lib/app/ui/pages/sign\in · high confidence
New structured logging system with crash detection and privacy safeguards
The app now uses a new logging subsystem in \lib/app/services/logging\ that replaces the previous ad-hoc approach with a structured, buffered pipeline. This system includes a crash detection service that distinguishes between clean exits and unclean crashes using marker files, and a hang watchdog that monitors main-thread responsiveness in a separate isolate. Logs are processed through a deduplication and rate-limiting engine that normalizes error messages by stripping volatile identifiers (like request IDs) to prevent log storms, while simultaneously sanitizing sensitive data such as tokens, emails, and phone numbers. The backend features a ring buffer for in-memory retention, a write queue with high-water-mark trimming, and a file sink that handles log rotation and degraded-mode fallbacks. Additionally, a dedicated export service packages logs, device metadata, and crash/hang snapshots into a single ZIP archive for diagnostics.
lib/app/services/logging · high confidence
New subscriptions page with multi-type list support
The subscriptions page has been rebuilt to support a unified grid-card layout for video, image, and post subscriptions. It introduces a three-tab interface (Video, Gallery, Posts) with specific filtering and sorting capabilities for videos and images, while posts remain unfiltered. The page integrates with the new 'liquid glass' UI theme, featuring a floating header overlay that adapts its appearance based on scroll position and tab selection. Key features include batch selection for videos and images, pagination mode toggling, and a right-side drawer for saved search configurations. The implementation also handles deep-linking from detail pages to ensure the correct subscription tab is displayed when returning from a specific content item.
lib/app/ui/pages/subscriptions · high confidence
New tag verification pipeline with deterministic evidence and AI batch processing
The tool/tag\_verify directory now implements a complete workflow for verifying and translating character and origin tags. It introduces a deterministic lookup layer (lookup.dart, lookup\_iwara.dart) that queries Danbooru wiki data to generate evidence for tag names, classifying them by language and confidence without modifying the main tag libraries. This evidence feeds into a proposal generator (propose.dart) that creates three outputs: automatic translation proposals for new tags, fix proposals for mechanical errors like mixed Romanji in Chinese fields, and AI batch tasks for items requiring human or agent judgment. The batch processing system (make\_batches.dart, ingest.dart) handles file-based submission to an AI agent (Antigravity), enforcing strict validation rules on key counts, language presence, and reason fields before merging results into localized tag files or override lists.
_tool/tag\verify · high confidence
New utility modules for versioning, desktop fullscreen, and performance profiling
Added several new utility classes in lib/utils: AppVersion for robust semantic version parsing and comparison (including build numbers and pre-release tags); DesktopNativeFullscreen and DesktopWindowGeometry to manage native fullscreen sessions and restore window geometry on desktop; DeviceFormFactorUtils to detect mobile form factors and XR devices; FramePerfProbe and GlassPerfKnobs for frame-time performance profiling of the liquid glass UI; GlslShaderService to manage Anime4K shader caching; and LoadingMoreRefreshGuard to prevent race conditions in list loading.
lib/utils · high confidence
New video detail page implementation
A new video detail page implementation has been added, supporting both online and local video modes. The page includes features such as tabbed content (video info, comments, related videos), playback queue integration, and fullscreen handoff capabilities.
_lib/app/ui/pages/video\detail · high confidence
New video detail page widgets and UI components
The video detail page now features a suite of new UI components: a blurred thumbnail background for immersive modes, a comment entry area with shimmer loading states, a DLNA casting sheet for device discovery, an external player sheet for handing off playback to other apps, an immersive cover widget for spatial/VR viewing, a private/deleted video placeholder with friend request handling, a rating animation, and a volume control widget with hover effects.
_lib/app/ui/pages/video\detail/widgets · high confidence
New video detail widgets: playlist dialog, expandable sections, and localized tags
The video detail page now includes several new UI components. A dialog allows users to add the current video to existing playlists or create new ones, featuring search and glass-morphism styling. An expandable section widget provides animated, collapsible content blocks with optional help buttons and header actions. Iwara and Oreno3d tag sections now support inline localization toggles (switching between original and translated names) and long-press actions to view tag details. Additionally, a share bottom sheet consolidates video sharing options, and the description widget supports timestamp seeking.
_lib/app/ui/pages/video\detail/widgets/detail · high confidence
New widgets for image and video favorite lists
Added FavoriteImageList and FavoriteVideoList widgets to the Favorites page. These components render waterfall-style lists of favorite images and videos, supporting multi-select mode, pagination, and the ability to restore items previously canceled from favorites.
lib/app/ui/pages/favorites/widgets · high confidence
Oreno3d metadata integration with localization and offline search
This change introduces the data layer and tooling for Oreno3d integration, enabling offline search and display of localized names for origins, characters, and tags. It includes a fetcher script to scrape metadata from oreno3d.com, a migration to use stable \type/id\ keys instead of Japanese names to handle duplicates, and a build process that merges raw data with AI-generated translations and manual overrides into a compact JSON file. This file is bundled with the app for offline use and served via CDN for updates, allowing users to search and browse Oreno3d entities without network connectivity.
_tool/data/oreno3d\tags · high confidence
Playlist items now support multi-select and batch operations
The playlist item widget has been updated to support multi-select mode, allowing users to select multiple items for batch actions. When multi-select is enabled, tapping an item toggles its selection state rather than navigating to the playlist details. The widget now renders a selection overlay with a checkmark and border, and includes logic to handle deletion states with a loading indicator. This change enables the new batch selection capabilities across the application.
_lib/app/ui/pages/play\list/widgets · high confidence
Playlists: Reintroduced with batch management and pagination support
The play list feature has been re-added to the application. This update introduces a new controller layer for managing playlists, including the ability to create, delete, and edit playlist titles. A key addition is support for batch operations: users can now select multiple playlists for bulk deletion or select multiple videos within a playlist detail view for batch removal, with appropriate loading states and error handling to prevent duplicate submissions. The implementation also integrates a repository pattern using \ExtendedLoadingMoreBase\ to support paginated loading of playlist items and video lists, replacing previous limitations.
_lib/app/ui/pages/play\list/controllers · high confidence
Post detail page controller with history tracking and cross-site recovery
The PostDetailController now manages the loading and display of post details, automatically recording viewed posts in the history log and handling cross-site resource recovery by resetting the navigation stack when a post is moved to a different site.
_lib/app/ui/pages/post\detail/controllers · high confidence
Quest immersive mode: new manifest declarations, environment assets, and regression tests
The Quest variant now includes a dedicated AndroidManifest.xml that enables hand tracking, passthrough, and overlay keyboards, and routes the app launch into the immersive activity. It ships with bundled space environments (deep space, aurora, sunset, mist) and the shaders that render them, along with reference GLSL files used by new device-level regression tests to verify environment switching, media resize, and color pipeline stability.
android/app/src/quest · high confidence
Quest starfield environment data and generation tooling
Adds the data assets and Python generation script for the Quest VR starfield environment. The new \tool/data/quest\_starfield/\ directory contains a NOTICE file with attribution for NASA imagery (Earth, Moon, clouds) and HYG Database star data, along with the processed \hyg\_bright.csv\ catalog of stars with magnitude \<= 6.5. The \tool/generate\_quest\_starfield.py\ script uses numpy and Pillow to bake these sources into static 360x180 panorama textures (e.g., \deep\_space.png\) and star layers (\stars.png\) for the Quest app, supporting both static baked views and dynamic modes where Earth/Moon visibility is optional.
_python, tool/data/quest\starfield · high confidence
Search UI refactored with glass-style components and new AI search capability
The search interface has been rebuilt using a new set of widgets in the search location, introducing a 'liquid glass' visual style across the search page, dialogs, and filter drawers. A new AI-powered search feature allows users to input natural language queries, which are parsed into structured search terms and filters for the user to review and confirm before execution. The search experience now includes a dedicated filter drawer with real-time validation and debounced updates, support for saving and managing search configurations in a side drawer, and improved list handling with pagination and scroll-to-top capabilities. Additionally, specific search cards for forum posts and other media types have been updated to match the new design system.
lib/app/ui/pages/search/widgets · high confidence
Structured download models with custom categories and error classification
The download module now uses dedicated data models to support organizing tasks into custom folders and providing clearer failure feedback. Users can assign downloads to named categories (DownloadCategory) for better organization, and failed tasks are now classified by reason (DownloadErrorType) such as network issues or disk space, allowing the UI to display user-friendly error messages instead of raw exception text. The models also support extended metadata for video and gallery downloads, including preview images and author details.
lib/app/models/download · high confidence
Support for NAS (WebDAV) sources and unified local media model
The local media library now supports adding NAS drives via WebDAV, allowing remote files to be browsed and played alongside local content. To distinguish these remote paths from local filesystem paths and prevent conflicts, WebDAV entries use a unique \dav:/\ prefix in their database records. The underlying data model has been expanded to include new source types (WebDAV, Downloads, MediaStore, Bookmarks) and item attributes such as VR format hints, sidecar image support, and MediaStore URI fallbacks, ensuring a consistent experience regardless of where the media originates.
_lib/app/models/local\media · high confidence
Unified glass UI components and batch confirmation dialog
The glass widget library introduces a centralized batch confirmation dialog that previews selected items and uses semantic action labels to prevent accidental deletions. Standard dialogs and bottom sheets are replaced with glass-themed equivalents (GlassAlertDialog, GlassBottomSheet) that feature unified animations, proper safe-area handling, and consistent styling. Navigation controls adapt to screen width, with segmented controls degrading to dropdowns on narrow screens and header actions moving to a corner dock. Input fields and content chrome now support liquid glass effects, including content-aware text color adaptation for better readability over varying backgrounds.
lib/app/ui/widgets/glass · high confidence
Video player UI and interaction overhaul
The video player interface has been completely rebuilt with new components for the bottom toolbar, gesture handling, and playback queue. Users now have a dedicated side-drawer for playback queues (replacing the previous horizontal list) and player settings (replacing the bottom popup). The player supports advanced gesture controls including pinch-to-zoom, rotate, and pan, as well as long-press speed adjustment and horizontal drag seeking with preview. Additional features include a color vision assist filter, VR-specific gesture guides and format menus, and improved fullscreen and safe-area handling.
_lib/app/ui/pages/video\detail/widgets/player · high confidence
Windows app now opens local video files via command line
The Windows runner now supports opening local video files directly from the command line or file associations. When launched with a video file path (supporting .mp4, .mkv, .avi, .mov, .wmv, .flv, .webm, .m4v, .3gp, and .ts), the application waits for Flutter to initialize and then sends the file URI to the app via a new method channel. Additionally, the application metadata (company name and copyright) has been updated to reflect 'm.c.g.a' and the year 2025.
windows/runner · high confidence
Windows installer now supports Chinese localization and video file associations
The Windows build process now includes a vendorized Chinese Simplified translation for the Inno Setup installer, ensuring the installation wizard displays in Chinese. Additionally, the installer script has been updated to offer users the option to associate common video file formats (including .mp4, .mkv, .avi, .mov, .wmv, .flv, .webm, .m4v, .3gp, and .ts) with the application upon installation. The build script also implements graceful fallbacks if the translation file is missing and adds logic to Authenticode-sign the installer when certificate secrets are configured.
windows · high confidence
iOS app renamed to 'Love Iwara' with deep linking, volume key support, and sandboxed folder access
The iOS app has been renamed to 'Love Iwara' (Info.plist). This update introduces several key capabilities: 1) Deep linking support via the 'iwara' URL scheme and Associated Domains for iwara.tv/iwara.ai/news.iwara.tv, enabling seamless navigation from external sources. 2) Volume key listening for media browsing, implemented via a native plugin that hooks into system volume changes. 3) Access to sandboxed folders using Security-Scoped Bookmarks, allowing users to select and persistently access local directories. 4) Migration to the UIScene lifecycle (SceneDelegate) required for Flutter 3.47+, ensuring proper handling of file opening and scene-based events. 5) Added network permissions (HTTP, Local Network, WiFi) and document type support for video files.
ios/Runner · high confidence
macOS app now supports opening video files via drag-and-drop and file association
The macOS application now allows users to open video files directly by dragging them into the app window or associating video file types with the app. This is implemented by adding a method channel in AppDelegate to handle file open events, caching URLs if the Flutter engine is not yet ready, and processing them once ready. Additionally, Info.plist has been updated to declare support for various video MIME types (public.movie, public.mpeg-4, etc.) as an alternate handler, and network/local network permissions have been adjusted in entitlements and Info.plist to support NAS (WebDAV) access and general network connectivity, with the app sandbox disabled in both Debug and Release configurations.
macos/Runner · high confidence
Removals
Removal of the Popular Video List page and associated UI components
The Popular Video List page and its supporting UI components have been removed from the application. This change deletes the \PopularVideoController\ responsible for fetching and managing the video list state, the \PopularVideoListPage\ widget that rendered the tabbed video grid with sorting and search functionality, and several sub-widgets including \VideoCardListItemWidget\, \VideoTileListItemWidget\, \VideoDescriptionWidget\, \VideoPreviewDetailModal\, and \HeroDialogRoute\. As a result, users can no longer access or view the popular video list interface.
_lib/app/ui/pages/popular\_video\list · high confidence
Removal of web application entry points
The web deployment assets for the 'i\_iwara' Flutter application have been removed. Specifically, the \index.html\ entry point and the \manifest.json\ configuration file are no longer present, meaning the application can no longer be built or served as a web app.
web · high confidence
Behavioural changes
Added ProGuard rules for media\_kit and annotation libraries
A new ProGuard configuration file has been added to the Android app to preserve classes and suppress warnings for the media\_kit (ffmpegkit, crypto.tink) and standard annotation libraries, ensuring these dependencies are not obfuscated or stripped during the release build process.
android/app · high confidence
App initialization refactored with GoRouter, global theming, and service coordination
The application entry point has been significantly restructured to support a new navigation architecture and enhanced runtime behavior. The routing system has been migrated to \go\_router\ (evidenced by the import of \app\_router.dart\ and comments about \ChildBackButtonDispatcher\), replacing the previous static route setup. A global reactive theme system has been introduced, utilizing \DynamicColor\ for dynamic color schemes and managing light/dark modes via \ThemeService\, with specific adjustments to page transitions (disabling snapshotting on desktop to fix glass rendering artifacts) and tooltip triggers (manual-only on touch devices to prevent gesture conflicts). Additionally, critical startup services such as \PopCoordinator\ (for unified back/drawer handling), \VersionService\ (for auto-update checks), \DeepLinkService\, and \GlassMaterialIntro\ are now explicitly initialized and coordinated during app startup, ensuring network and auth services are ready before navigation proceeds.
lib/app · high confidence
App startup refactored with structured logging and glass material shader pre-warming
The application entry point has been restructured to use a dedicated startup coordinator and a persistent logging service, replacing the previous ad-hoc service initialization. This ensures logs are captured immediately from startup, including unhandled Flutter and platform errors, and are persisted to a database with a unified production-mode policy. Additionally, the app now pre-warms liquid glass shaders asynchronously during launch to prevent visual artifacts when the glass material is enabled, and integrates a frame performance probe for profiling.
lib · high confidence
Branded macOS DMG installer with integrated first-launch guidance
The macOS installer now uses a custom-branded DMG layout featuring a branded background, volume icon, and a visual arrow guiding users to drag the app to the Applications folder. Because this build is not Apple-notarized, the DMG background and a new INSTALL\_NOTE.md file provide explicit instructions on how to bypass Gatekeeper (right-click → Open or using the terminal) on first launch, replacing the previous generic window layout.
macos/packaging · high confidence
Centralized shared UI components for the AI module
The AI interface now uses a new shared widget library (\ai\_ui\_parts.dart\) to standardize visual elements across the AI search, settings, and configuration screens. This change consolidates previously duplicated components—such as status tags (\AiTag\), information cards (\AiInfoCard\), notice lines (\AiNoticeLine\), and labeled fields (\AiLabeledField\)—into a single location. Users benefit from a consistent visual language and improved accessibility, particularly through the use of text-based status capsules instead of color-only indicators, ensuring that configuration states are clearly readable regardless of color perception.
lib/app/ui/widgets/ai · high confidence
Comment UI refactored with glass-morphism design and flat thread layout
The comment section has been redesigned to use a unified glass-morphism aesthetic and a flat thread layout. The main comment list now uses a \GlassFloatingHeaderSheet\ with a sticky header, and individual comments feature a new flat structure with subtle dividers. A new \CommentInputBottomSheet\ provides a richer input experience with emoji, translation, and markdown help. The entry area now displays pending comment counts and uses a more prominent button style. Additionally, a \CommentRepliesBottomSheet\ handles nested replies, and a \RulesAgreementDialog\ allows users to view and agree to community rules before commenting.
lib/app/ui/pages/comment/widgets · high confidence
Comment system refactored with sorting, pagination, and pending count support
The comment controllers have been significantly restructured to support new features and improved reliability. The old reply-specific controller was removed, consolidating logic into a generic CommentController that now handles multiple content types (posts, videos, profiles, images) via a type parameter. Key behavioral changes include: 1) Support for sorting comments by time (ascending/descending) with proper pagination handling for reverse order; 2) Display of pending comment counts for moderation; 3) Replacement of the GetX-based API service with a dedicated CommentService; 4) Integration with signature context for dynamic metadata in comment inputs; 5) Improved error handling and loading states using the loading\_more\_list package. The controller now manages its own configuration for sort order and provides a unified interface for all comment-related operations.
lib/app/ui/pages/comment/controllers · high confidence
Conversation list pagination and state management improvements
The conversation list now uses a dedicated repository that extends LoadingMoreBase to handle pagination and refresh states more robustly. This change prevents state confusion during refreshes, pagination, and layout switches by tracking generation numbers and page indices, ensuring that stale data from interrupted requests is discarded. It also removes the previous arbitrary 300-item limit on the list, allowing for more flexible data loading, and integrates with the existing loading\_more\_list package for smoother user experience.
lib/app/ui/pages/conversation/controllers · high confidence
Database migration framework hardened and local media schema expanded
The database migration system has been refactored to enforce idempotency and remove unsafe rollback capabilities. The base \Migration\ class no longer supports \down()\ methods, as downgrades are handled by the manager ignoring future versions, and the previous rollback SQL was untested and incorrect. A new \migration\_sql.dart\ library provides safe, idempotent primitives like \addColumnIfMissing\ to prevent duplicate column errors during schema repairs. Concurrently, the schema has been significantly expanded to support new features: download tasks now include media type, quality, completion time, error classification, and custom category folders; a new 'Watch Later' queue and VR format override tables have been added; and a comprehensive local media library schema (v30-v36) supports source management, item progress, folder trees, pinned folders, and optimized sorting indexes.
lib/db/migrations · high confidence
Expanded system proxy detection and async support on desktop platforms
The proxy utility now automatically detects system proxy settings on macOS and Linux in addition to Windows, removing the previous fallback that disabled proxy detection on these platforms. The web-specific implementation has been removed, and the utility now reports support for all platforms. To prevent blocking the UI thread during platform-specific detection, a new asynchronous method is available for retrieving proxy settings.
lib/utils/proxy · high confidence
Favorites controller adds optimistic UI and batch cancellation for videos and images
The new FavoritesController introduces optimistic updates for toggling favorite status on videos and images, immediately reflecting changes in the UI before the backend API responds and rolling back if the request fails. It also adds batch cancellation capabilities for both video and gallery favorites, processing removals in chunks of four to prevent server overload while maintaining a consistent user experience.
lib/app/ui/pages/favorites/controllers · high confidence
Forum list and detail data access refactored into dedicated repositories
The forum UI layer now uses dedicated repository classes to manage data fetching for the thread list, recent threads, and thread details. This change introduces \ThreadListRepository\, \RecentThreadListRepository\, and \ThreadDetailRepository\ to handle pagination, error logging, and data extraction from the \ForumService\, while \ForumListController\ manages UI state such as pagination mode switching and scroll-to-top behavior.
lib/app/ui/pages/forum/controllers · high confidence
History page rewritten with time-grouped layout and batch selection
The history page has been completely rewritten to group records by last-browse time (Today, Yesterday, This Week, etc.) instead of using pagination, which allows for faster browsing by date. The new interface supports batch selection via keyboard/mouse and long-press gestures, enabling users to select and delete multiple items at once. It also integrates with the playback queue so that continuing from history resumes the next item in the sequence, and includes a new search capability and auto-cleanup options for expired records.
lib/app/ui/pages/history · high confidence
History page rewritten with unified filtering, multi-select, and local pagination
The history page controller has been replaced with a new architecture that manages five tabs (all, video, image, post, thread) via shared filtering state. Search keywords and date ranges now apply globally across all tabs, with lazy loading for inactive tabs to improve performance. The view supports multi-select mode for batch operations, including local deletion with exit animations, restoration of deleted items, and clearing specific tabs. Pagination is handled locally via SQLite with offset-based loading that correctly handles deletions without requiring full table reloads, preserving scroll position.
lib/app/ui/pages/history/controllers · high confidence
Home navigation migrated to go\_router with liquid glass UI
The home shell has been refactored to use go\_router for unified navigation and state management, replacing the previous Navigator 1.0 approach. This change introduces a new liquid glass visual style, including a floating bottom tab bar, overlay headers, and real refraction effects. The navigation rail is now fixed-width and supports hiding specific items (like forum or news) via settings. Additionally, the home root now requires a secondary confirmation to exit, and the settings button in the rail morphs into an avatar button when leaving the home root.
lib/app/ui/pages/home · high confidence
Introduces a persistent manual override layer for tag translations
The tool now supports a dedicated \overrides.json\ layer that permanently preserves manual translation corrections, ensuring they are not silently overwritten by subsequent AI batch re-translations. This change introduces a merge logic where manual overrides take precedence over AI-generated names on a per-language basis, while also detecting and reporting conflicts when upstream AI values change after a manual fix was applied. The system uses specific primary keys (tag IDs for iwara, type/id for oreno3d) to ensure correct targeting and includes a content fingerprint (\rev\) to help the application detect translation-only updates.
_tool/tag\overrides · high confidence
Login interface replaced with glass-style dialog and credential persistence
The login experience has been redesigned: the previous full-page login/register tab view is replaced by a glass-style draggable bottom-sheet dialog that supports switching between login and registration flows. A new 'Remember me' feature saves the username (but not the password) to local storage and pre-fills it on subsequent visits. System autofill is now properly triggered on successful login to allow password saving, and the registration process no longer requires a captcha. The UI also integrates with the app-wide 'glass' visual theme for consistent styling.
lib/app/ui/pages/login · high confidence
Merged forum and news into a unified community tab with shared header
The separate forum and news tabs have been consolidated into a single Community page. Users now access both forums and news updates (updates, articles, broadcast) within one tab, switching between them via a dropdown menu in the shared glass-style header. The header dynamically adjusts its action buttons (such as posting or language selection) based on the active section, while preserving scroll position and state when switching between halves.
lib/app/ui/pages/community · high confidence
Migrate navigation to go\_router with unified shell and settings routing
The app's navigation has been refactored to use go\_router, replacing the previous routing implementation. This introduces a unified Home Shell (StatefulShellRoute) for the main tabs (Video, Gallery, Subscriptions, Community, Local Media) and a nested ShellRoute for the Settings section, enabling consistent back-handling and overlay management. The route definitions in app\_routes.dart have been updated to support parameterized paths (e.g., video and gallery details) and new pages (search, downloads, local media, community). Additionally, legacy navigation keys (forum, news) are normalized to the new 'community' key to preserve user customization settings.
lib/app/routes · high confidence
New SQLite database service with hardened migration framework
The application now uses a dedicated SQLite database service (lib/db) to manage local data, replacing the previous storage mechanism. This introduces a robust migration framework (up to v46) that handles schema evolution for features like local media libraries, download management, and history. The migration process is hardened to run each version change in its own transaction, preventing total rollback on single failures, and includes a 'safety net' that detects and repairs missing critical schema elements (like download category columns) while logging repairs for the diagnostics page.
lib/db · high confidence
New spatial control panel and environment settings for Quest
The Quest UI now includes a dedicated data model for a redesigned spatial control panel, featuring a single main interface with five swappable sub-pages (Player, Scene, Distance, Video Type, Screen Type, Playlist, Settings) and a separate Browse mode. This model defines video format handling (including flat, panorama, and unsupported EAC/Fisheye projections), screen curvature options (Flat to Deep), and playback controls like a 5-second seek step. Additionally, new settings allow users to customize the surrounding environment (choosing between Passthrough, Deep Space, Void, Aurora, Sunset, and Mist) and adjust media effects such as screen edge feathering and ambient glow intensity.
questui · high confidence
Player keybindings upgraded to an app-wide, customizable shortcut system
The player keybinding system has been replaced with a new, app-wide shortcut architecture that supports customizable key and mouse bindings across global, gallery, and video scopes. This change fixes previous issues where shortcuts only worked when the player had keyboard focus by introducing a scope-based target registry that dispatches events to the active view regardless of focus. Users can now bind mouse buttons (middle, back, forward) and complex key chords, with settings pages accurately reflecting which inputs are supported in each context. The system also prevents conflicts with text input fields (e.g., pressing Escape in a comment box no longer closes the page) and ensures that 'hold-to-repeat' actions like volume adjustment behave consistently across the app.
_lib/app/services/player\keybinding · high confidence
Popular media list controllers refactored with batch selection and pagination support
The controllers for the popular media list page have been restructured to introduce a base controller/repository pattern for videos and galleries, enabling shared search parameter handling and improved pagination state management. A new batch selection controller has been added, allowing users to select multiple media items via long-press or keyboard shortcuts for bulk actions. The main list controller now manages pagination mode switching (paginated vs. waterfall), scroll state synchronization across tabs, and header visibility, ensuring smoother navigation and reduced unnecessary rebuilds.
_lib/app/ui/pages/popular\_media\list/controllers · high confidence
Quest immersive UI restructured into dedicated Compose modules
The Quest UI has been refactored from a monolithic structure into a modular \:questui\ component, introducing dedicated Compose screens for the player (\PlayerPage\), gallery (\GalleryPage\), and browsing controls (\BrowsePanelPage\). This change adds a new background environment selector (\BackgroundControls\) allowing users to switch between deep-space, landscape, and passthrough modes, alongside a gallery stage (\GalleryStageView\) that handles image loading and swipe gestures with a dedicated buffering overlay (\BufferingView\). The panel now respects the application's internal language settings via \PanelLocale\ rather than the system locale, and enforces consistent sizing and hit-areas defined in \PanelTokens\ for spatial interaction.
android/questui/src/main/kotlin · high confidence
Redesigned subscription page with unified list architecture and new browsing features
The subscription page has been completely rebuilt to support a unified grid-card layout and a new waterfall-flow rendering option, replacing the previous list-based implementation. A new base widget class standardizes list behavior, enabling consistent pagination, sorting, tag/date filtering, and multi-select mode across video, image, and post content types. The interface now includes a dedicated 'Special Follow' onboarding tutorial to guide users through the new filtering capabilities, a compact dropdown selector for switching between subscribed authors, and a horizontal scrollable list for quick user navigation. Additionally, video and image items are now integrated with a 'Continue Watching' playback queue, allowing seamless continuation from the subscription feed.
lib/app/ui/pages/subscriptions/widgets · high confidence
Removal of legacy Android MainActivity class
The legacy MainActivity class, previously located in the com.example.i\_iwara package, has been removed from the Android application source. This change eliminates the explicit FlutterActivity wrapper that was previously used to launch the app, likely indicating a shift to a different entry point or configuration method within the Flutter embedding.
android/app/src/main/kotlin/com · medium confidence
Rewritten comment and reply input with structural quoting and signature support
The input system for comments and replies has been refactored to use a new three-part structure (quote header, body, signature) that is assembled at submission time rather than being pre-pasted into the text field. This prevents users from accidentally breaking Markdown syntax while typing and ensures that reply quotes and signature footers are consistently applied. The new widgets also support editing existing content by displaying the full original text, allowing users to modify all parts of a post, and integrate with the new glass-morphism UI theme.
lib/common/widgets · high confidence
Settings page restructured with dedicated sub-pages for AI, downloads, and content blocking
The settings interface has been refactored into a nested navigation structure, introducing dedicated pages for specific configuration areas. Users can now access a comprehensive AI settings page to manage provider connections, model bindings, and usage, with a detail view that supports draft-mode editing for connection parameters. Download settings now feature a structured layout with a dedicated location card, behavior controls for concurrency, and a new 'Save Structure and Naming' section that allows users to select presets or use a path template editor. Additionally, content blocking is managed via a new tabbed interface supporting multiple rule types (tags, users, etc.) with import/export capabilities. The About page has also been updated to include an automatic update check and a dialog for viewing release notes with translation support.
lib/app/ui/pages/settings · high confidence
Structured startup with restored-install detection
The app now uses a dedicated startup coordinator to initialize core services before showing the UI, providing a splash screen with progress updates. It also detects when settings are restored from a backup (e.g., after reinstall or device transfer) and resets one-time onboarding and glass-effect intro so they appear again, preventing a confusing state where settings exist but the user is not logged in.
lib/app/startup · high confidence
Subscription page list logic refactored with pagination and filtering support
The subscription page's list behavior has been restructured to support pagination mode switching and advanced filtering. A new \MediaListController\ now manages the toggle between paginated and waterfall (infinite scroll) views, automatically resetting scroll position and refreshing data when the mode changes. Additionally, dedicated repositories for videos, images, and posts now utilize a shared query builder that supports sorting, date range filtering, and tag filtering, with specific logic to ensure rating filters only apply to the global subscribed feed and not individual user profiles.
lib/app/ui/pages/subscriptions/controllers · high confidence
Tag video and gallery list pages now use a unified glass-morphism layout with localized tag names
The tag video and gallery list pages have been refactored to use a new \TagMediaListPage\ component that features a single-line floating glass header, a dropdown sort selector, and a filter drawer. Tag names displayed in the header are now localized using the \TagLocalizationService\, and the layout is optimized for performance by reducing rebuilds during scrolling.
_lib/app/ui/pages/tag\videos · high confidence
Unified local media card UI and dedicated downloaded gallery view
The local media browsing experience now uses a single, consistent card design that matches the online video list, replacing the previous fragmented folder-specific styles. A new 'Downloaded Gallery' section has been added to display completed download tasks as browsable containers, unified with the local file tree. The update introduces a 'stacked paper' visual cue to distinguish containers (folders, sources, galleries) from media items, adds a folder cover picker dialog, and implements a cross-platform directory picker for selecting local sources. Performance is improved by offloading gallery data parsing to a background isolate and standardizing image decoding to prevent memory bloat.
_lib/app/ui/pages/local\media/widgets · high confidence
Updated built-in AI provider catalog with new models and providers
The built-in AI provider catalog has been refreshed to include the latest providers and models from the upstream Cherry Studio provider-registry (commit 5abadcc). This update adds support for new model variants such as GPT-5, Claude Opus 4.8, and various Qwen and Gemini models, while also including new providers like TokenDance and AMD GPU Cloud. The catalog now contains 662 models across numerous providers, ensuring users have access to the most recent AI capabilities without needing to manually configure every new endpoint.
_tool/data/ai\catalog · high confidence
Updated iOS build configuration and lowered minimum OS version
The iOS build configuration has been adjusted to include CocoaPods support files for both Debug and Release modes, ensuring proper integration with managed dependencies. Additionally, the minimum supported iOS version has been lowered from 12.0 to the default Flutter setting, allowing the app to run on older iOS devices.
ios/Flutter · high confidence
Video detail page tabs refactored into dedicated widget components
The video detail page's tabbed interface has been restructured into distinct, reusable widget files: \comments\_tab\_widget.dart\, \related\_videos\_tab\_widget.dart\, \video\_info\_tab\_widget.dart\, and \shared\_ui\_constants.dart\. The Comments tab now features a floating action menu for refreshing, sorting (ascending/descending), and posting comments via a glass bottom sheet. The Related Videos tab implements a two-column waterfall layout with overscroll propagation to switch outer tabs. The Video Info tab consolidates title, author, and metadata display using shared UI constants for consistent spacing and styling, while also handling loading skeletons and error states.
_lib/app/ui/pages/video\detail/widgets/tabs · high confidence
iOS project updated to support CocoaPods and modern debugging
The iOS project configuration now integrates CocoaPods, adding build phases to check and embed Pods frameworks and resources, and linking the Pods\_Runner and Pods\_RunnerTests frameworks. Additionally, the Xcode scheme has been updated to use a custom LLDB init file for Flutter debugging and enables GPU validation mode in the debug configuration.
ios/Runner.xcodeproj · high confidence
macOS app integrates CocoaPods and registers additional Flutter plugins
The macOS build configuration now includes CocoaPods support, enabling the use of native dependencies via the Pods workspace. This change updates the Flutter plugin registrant to include several new plugins (such as app\_links, battery\_plus, connectivity\_plus, desktop\_drop, dynamic\_color, file\_selector\_macos, flutter\_inappwebview\_macos, flutter\_local\_notifications, flutter\_secure\_storage\_darwin, irondash\_engine\_context, local\_auth\_darwin, local\_notifier, network\_info\_plus, open\_file\_mac, share\_plus, super\_native\_extensions, and volume\_controller) while removing or replacing older implementations (like flutter\_secure\_storage\_macos and path\_provider\_foundation). This allows the app to leverage these native capabilities on macOS.
macos/Flutter · high confidence
macOS build system updated to support CocoaPods and Swift Package Manager
The macOS project configuration has been updated to integrate CocoaPods and Swift Package Manager. The build process now includes phases to check and embed Pods frameworks, and the Runner target explicitly depends on the FlutterGeneratedPluginSwiftPackage. Additionally, the Xcode scheme has been modified to run the Flutter framework preparation script before building and to enable GPU validation mode during debugging.
macos/Runner.xcodeproj · high confidence
macOS deployment target raised to 12.0 and debug build configuration updated
The macOS application now requires macOS 12.0 (Monterey) or later, as specified by the new MACOSX\_DEPLOYMENT\_TARGET setting in AppInfo.xcconfig. Additionally, the debug build configuration now explicitly includes the Pods-Runner.debug.xcconfig file, ensuring that CocoaPods dependencies are correctly linked during debug builds.
macos/Runner/Configs · high confidence
Test coverage
Added database integrity and migration tests; Added model-layer tests for AI providers, playback queues, and media sources; Added regression tests for navigation, glass UI, i18n, and download features; Added regression tests for nested settings routes; Added repository tests for downloads, history, and 3D matching cache; Added test coverage for AI service probing, i18n fallback integrity, and tag data validation; Added test support fakes for app lock functionality; Added tests for AI catalog, reasoning, API gating, and download services; Added tests for HTTP proxy address parsing and connection behavior; Added tests for UI widget geometry, state management, and interaction flows; Added tests for app lock UI, settings, and subscription query logic; Added tests for app startup shell and restored-install detection logic; Added tests for app utility functions; Added tests for app version parsing, desktop fullscreen session management, and playback error classification; Added tests for downloaded gallery row parsing and safety guards; Added tests for glass UI widget behaviors and visual contracts; Added tests for in-app search functionality on author and follows pages; Added tests for path template editor logic; Added tests for popular media list state management and filtering logic; Added tests for popular media list widgets; Added tests for search plan route generation; Added tests for the app-wide keybinding system and its gatekeepers; Added tests for the new logging system; Added tests for video detail controller logic; Added tests for video player UI components and logic; Added tests for video player state and interaction logic; Added unit tests for VR environment, input, and spatial placement logic; Added widget tests for playlist page and favorite folder dialog.
Dependencies
Gradle wrapper upgraded to version 8.14.3
The Android build system now uses Gradle 8.14.3 (upgraded from 8.3) via the wrapper configuration. This ensures consistent builds across environments using the newer Gradle release.
android/gradle · high confidence
Quest platform support and Android build infrastructure overhaul
This change introduces a dedicated Quest product flavor to isolate Meta Spatial SDK dependencies (including Compose UI and the Spatial SDK itself) from the standard Android build, ensuring the main app remains compatible with minSdk 24 while Quest targets minSdk 34. It upgrades the Android build environment to Java 21, AGP 8.13, and Kotlin 2.3.20, and updates the Flutter SDK to 3.47.0. The dependency graph is significantly expanded to include new capabilities like local SQLite storage, WebDAV/NAS support, AI translation, and various UI components, while also pinning specific versions like \objective\_c\ to 9.6.0 to resolve native asset build failures.
(dependencies) · high confidence
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
Score
- CAI 56 → 46 (-10.8)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.
Lenses
- Code Health 83 → 72 (-11.2)
- Architecture 93 → 92 (-1.2)
- Maturity 66 → 62 (-3.9)
- Readiness 45 → 45 (+0.0)
- Security 79 → 34 (-45.1)
- Domain Modelling 100 (new)
- Accessibility 66 → 58 (-7.9)
- Performance 62 → 78 (+16.3)
Resolved (2)
- Documentation: no project overview (docs/readme/README_DE.md)
- Workflow holding a long-lived secret is unscoped
New (1237)
- AiService._completeStreaming (cognitive 17) (lib/app/services/ai_service.dart)
- AiService._startStream (cognitive 21) (lib/app/services/ai_service.dart)
- AiService._startStream (cyclomatic 16) (lib/app/services/ai_service.dart)
- AnimatedChild.build (cognitive 19) (lib/app/ui/widgets/grid_speed_dial.dart)
- AnimatedChild.build (cyclomatic 17) (lib/app/ui/widgets/grid_speed_dial.dart)
- AnimatedQuestGestureIllustration.build (cognitive 38) (lib/app/ui/pages/video_detail/widgets/player/quest_gesture_illustration.dart)
- AnimatedQuestGestureIllustration.build (cyclomatic 36) (lib/app/ui/pages/video_detail/widgets/player/quest_gesture_illustration.dart)
- ApiService._handle401Request (cognitive 18) (lib/app/services/api_service.dart)
- ApiService._isNetworkError (cognitive 16) (lib/app/services/api_service.dart)
- ApiService._waitForRefreshThenRequest (cognitive 18) (lib/app/services/api_service.dart)
- AuthService.init (cognitive 19) (lib/app/services/auth_service.dart)
- AuthService.login (cognitive 22) (lib/app/services/auth_service.dart)
- BackgroundControlsKt.EnvironmentChoice (cognitive 16) (android/questui/src/main/kotlin/m/c/g/a/i_iwara/questui/BackgroundControls.kt)
- BackgroundEnvironment.tick (cognitive 26) (android/app/src/quest/kotlin/m/c/g/a/i_iwara/vr/BackgroundEnvironment.kt)
- BackgroundEnvironment.tick (cyclomatic 25) (android/app/src/quest/kotlin/m/c/g/a/i_iwara/vr/BackgroundEnvironment.kt)
- BaseMediaRepository.loadData (cognitive 17) (lib/app/ui/pages/popular_media_list/controllers/base_media_repository.dart)
- BaseSubscriptionListState.didUpdateWidget (cognitive 17) (lib/app/ui/pages/subscriptions/widgets/base_subscription_list.dart)
- BatchDownloadService.batchDownloadVideos (cognitive 18) (lib/app/services/batch_download_service.dart)
- BottomToolbar._buildRightControls (cognitive 19) (lib/app/ui/pages/video_detail/widgets/player/bottom_toolbar_widget.dart)
- BottomToolbar._showSeekDialog (cognitive 20) (lib/app/ui/pages/video_detail/widgets/player/bottom_toolbar_widget.dart)
- …and 1217 more
Changes since last survey
- 31 commits — 22 feature/other, 9 fixes
By area
- lib/app — 17 commits
- lib/i18n — 4 commits
- (repo) — 2 commits
- tool/data — 2 commits
- android/app — 1 commit
- docs/imgs — 1 commit
- docs/readme — 1 commit
- lib/utils — 1 commit
- tool/list_touch_bench.py — 1 commit
- tool/perf — 1 commit
Notable commits
- fix: fix(glass): 内容感知换色连图标、文字主题一起翻,作者页搜索框跟随背景
- fix: fix(glass): 弹窗里的液态玻璃不再隐身,主题参数改了立刻生效
- fix: fix(glass): 桌面端玻璃搜索框里输入的那行偏下
- fix: fix(i18n): 跟随系统语言时也注册复数解析器
- fix: fix(player): 安卓小窗按钮失败不再静默,改用自写画中画通道
- fix: fix(quest): 手势拖窗时射线不再甩到固定方向
- fix: fix(video): 内置盐值变化时作废旧缓存,下载刷新保留重签异常
- fix: fix(video): 盐值更新复用 Cookie/过盾网络栈,重发失败时保留首次结果
- fix: fix(video): 签名盐值失效时自动从官网更新,不再只剩 360
- change: Adopt a site-extracted signing salt only after it yields a Source rendition
- change: Align the macOS title bar with native window controls
- change: Keep immersive VR behavior visible in the project showcase
- change: Keep project showcases reproducible with ordinary sample data
- change: Make HTTP proxy setup understandable without URL syntax
- change: Make glass appearance configurable and keep profiling guidance device agnostic
- change: Merge remote-tracking branch 'origin/master'
- change: build(glass): 升级 liquid_glass_easy 5.0 并迁移玻璃参数
- change: chore(ai): 自动重抓内置供应商目录(Cherry Studio provider-registry @ 5abadcc)
- change: chore(ai): 自动重抓内置供应商目录(Cherry Studio provider-registry @ 8d35232)
- change: chore(perf): drv.py 的设备地址改从 ANDROID_SERIAL 读
- …and 11 more
Architecture
- 0 containers · 3 bounded contexts · 1 dependency edges (baseline)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
FoxSensei001/LoveIwara 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 21 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit d114c90447eae8dbc78cef93f246a220edc66fa3 — the exact code this score is about.
- Scored under rubric-2026.10.5 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer measure-2026.10.1+preprod-05382052455d.