Skip to content
CAI
Software that uses CAICheck a score

XITRIX/iTorrent

44.8

Weak · 30 September 2026

16k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a cross-platform torrent client application for iOS and tvOS that manages file downloads, seeding, and media playback. It provides core BitTorrent functionality including magnet link handling, background transfer monitoring, and granular file selection, while integrating a VLC-based player for direct streaming of video content. The application also supports RSS feed aggregation, local file sharing via WebDAV, and real-time progress tracking through iOS Live Activities.

How it got here

2023 — UI modernization and tvOS expansion

22 changes.

The project underwent a significant UI overhaul by migrating to SwiftUI, introducing new base view controllers, and redesigning core screens for torrent management, file browsing, and tracker configuration. Concurrently, the codebase was prepared for tvOS support through new build schemes and integrated SwiftVLC for video playback, while also migrating storage to Application Support and updating dependencies.

2024 — iOS 26 adaptation and feature expansion

48 changes.

This period focused on adapting the application to iOS 26 visual standards and introducing a comprehensive suite of new features, including RSS feed support, WebDAV file sharing, and Live Activity integration. Significant work was also dedicated to overhauling the preferences interface with drag-and-drop reordering and new UI components, while establishing robust background service infrastructure for audio, location, and network monitoring.

2026 — tvOS launch and media playback enhancements

6 changes.

This period focused on launching the initial tvOS application for torrent management and media playback, integrating the VLC engine for streaming. It also expanded iOS media capabilities by adding AirPlay support, Picture-in-Picture functionality, and casting features, alongside UI refinements for iOS 27.

Features

Add AirPlay support for external displays

Users can now stream video content to external displays via AirPlay. This change introduces a new utility module (Air.swift and AirPlay.swift) that manages the connection lifecycle, registers external display accessories, and provides a SwiftUI modifier to show an overlay indicator when an AirPlay connection is active. The implementation includes specific handling for iOS 27 scene accessory registration and ensures proper view restoration when disconnecting.

iTorrent/Utils/AirPlay · high confidence

Add Patreon support screen in Preferences

Users can now view and manage their Patreon connection directly within the app's Preferences. This new screen allows patrons to link or unlink their Patreon account, view their support status (such as ads-free eligibility), and access the creator's Patreon page via an in-app Safari view.

iTorrent/Screens/Preferences/Patreon · high confidence

Add RSS channel preferences screen

Users can now access a dedicated preferences screen for RSS channels, allowing them to copy the feed URL, customize the channel name and description, and toggle notifications on or off.

iTorrent/Screens/Rss/List/Preferences · high confidence

Added CombineLatest extensions for 5 to 9 publishers

New utility extensions have been added to the Combine framework support in iTorrent, enabling the combination of up to nine publishers. This includes new \CombineLatest5\ and \CombineLatest6\ publisher structs and corresponding \combineLatest\ static methods in \Publishers\ that handle 5 through 9 inputs, allowing developers to react to changes across multiple data streams simultaneously without manual nesting.

iTorrent/Utils/Extensions/Combine/CombineLatest · high confidence

Added Live Activity and Widget extension for torrent progress tracking

A new ProgressWidget extension has been added to the app, enabling real-time torrent status updates via iOS Live Activities (Dynamic Island and Lock Screen) and a standard home screen widget. This extension defines the activity attributes and content states (such as downloading, seeding, and paused) and implements the UI for displaying torrent name, progress percentage, download/upload speeds, and remaining time. It also includes a pause button for seeding torrents directly from the Dynamic Island and shares the app's tint color for visual consistency.

ProgressWidget · high confidence

Added Live Activity pause button via App Intents

Users can now pause a torrent directly from a Live Activity using the new 'Pause Torrent' intent. This change introduces a new App Intent that listens for a pause command and triggers the corresponding action in the torrent service, enabling quick control over active downloads without opening the main app.

iTorrent/Services/IntentsService · high confidence

Added Patreon integration service for authentication and patron verification

This change introduces the core backend logic for Patreon support within iTorrent. The new \PatreonService\ handles OAuth 2.0 authentication via a local web server (port 25565) to retrieve access tokens, fetches user account details and membership status from the Patreon API, and retrieves the list of patrons and their associated benefits (such as 'fullVersion' or 'credits'). It also includes the necessary data models (\PatreonAccount\, \Patron\, \Benefit\, \Tier\) and credential management to determine if a user is a patron, which is used to control features like ad hiding.

iTorrent/Services/Patreon · high confidence

Added Xcode schemes for tvOS and iOS apps

The project now includes dedicated Xcode build and launch schemes for both the main iOS application (iTorrent) and the new tvOS application (iTorrent-TV). This configuration enables developers to build, run, test, and archive the tvOS target directly from Xcode, supporting the initial introduction of the tvOS app.

iTorrent.xcodeproj/xcshareddata · high confidence

Added continuous perception tracking utility

A new utility function \withContinuousPerceptionTracking\ has been added to the Perception utilities. This helper wraps SwiftUI's \withPerceptionTracking\ to automatically re-apply the provided closure whenever tracked state changes, ensuring continuous observation without manual re-subscription.

iTorrent/Utils/Perception · high confidence

Added file and directory selection views for torrent addition

The torrent addition screen now supports browsing and selecting individual files and directories within a torrent. New view models handle the display of file items and directory items, allowing users to view file paths and adjust download priorities for specific entries before starting the download.

iTorrent/Screens/TorrentAdd/Cells · high confidence

Added human-readable torrent status and progress details

The app now displays more informative status text for torrents, showing the current state (downloading or seeding) along with the current transfer rate and estimated time remaining. This is implemented via a new extension for LibTorrent's TorrentHandle.Snapshot, which calculates time remaining based on download speed and formats the state text to include directional arrows and human-readable bitrate values.

iTorrent/Utils/Extensions/LibTorrent · high confidence

Added in-app advertising support via Unity, Google, and Meta SDKs

The app now includes an advertising infrastructure that initializes and manages ads from Unity Ads, Google Mobile Ads, and Meta Audience Network. This change registers the respective managers to handle SDK initialization and ad loading, enabling monetization through interstitial and banner ad placements.

iTorrent/Services/Ads · high confidence

Added modular ad view implementations for Google, Unity, and Facebook

The AdView component now supports multiple ad networks through platform-specific implementations. When Google Mobile Ads is available, it displays adaptive banner ads using a dedicated GADBannerView. If Unity Ads is present, it renders a 50px-high banner via UADSBannerView, hiding the view if loading fails. For Facebook Audience Network, it initializes an FBAdView with a fixed size. If none of these SDKs are imported, a blank BaseView is used as a fallback.

iTorrent/Components/Views/AdView · high confidence

Added proxy configuration preferences

Users can now configure network proxy settings directly within the app's preferences. This new screen allows selection of proxy types (None, SOCKS4, SOCKS5, HTTP, and I2P proxy), specification of the proxy host and port, and optional authentication credentials (username and password) when required.

iTorrent/Screens/Preferences/Network/Proxy · high confidence

Added support for bottom navigation bar palettes

A new utility extension for UINavigationItem has been added to support rendering custom views as bottom palettes on the navigation bar. This implementation utilizes private UIKit APIs (specifically \_UINavigationBarPalette) to attach a content view to the bottom of the navigation bar, enabling UI patterns such as the recently added torrent list filters to be displayed directly within the navigation area.

iTorrent/Utils/Extensions/UIKit/NavigationItemPalette · high confidence

Background RSS updates, push notification handling, and app termination cleanup

The app now supports background RSS feed updates that trigger local notifications with an updated badge count when new content is found. Push notifications are fully integrated, allowing users to tap a notification to directly open the corresponding torrent detail screen. Additionally, Live Activities are properly terminated when the app closes, and Firebase services (Core, Remote Config, and a kill-switch mechanism) are initialized at launch.

iTorrent/Core/AppDelegate · high confidence

Cellular restriction overlay notification

Users are now notified via a non-intrusive overlay when the app is restricted from using cellular data by iOS settings or device policies. This new overlay, implemented in the Components/Overlays directory, monitors network state and displays a message with an icon when cellular access is blocked, allowing users to tap through to the relevant preferences to resolve the issue.

iTorrent/Components/Overlays · high confidence

Custom storage location management in preferences

The Storage preferences screen now allows users to define and manage multiple custom download directories. Users can add up to five custom storage locations via a file picker, set one as the default, and remove existing entries using swipe actions. The interface includes a warning banner that must be accepted before custom storages can be added, and indicates which directories are accessible or restricted.

iTorrent/Screens/Preferences/Storage · high confidence

Initial project structure and asset configuration

The app now includes its foundational configuration files, establishing the base UI layout and runtime capabilities. A new LaunchScreen storyboard provides the initial splash view, while the Info.plist declares support for magnet links and torrent file handling. Security and connectivity are configured via a bundled CA certificate store (cacert.pem) and entitlements for local network access, file selection, and app group sharing. Localization is initialized with a comprehensive Localizable.xcstrings file supporting multiple languages, and the main storyboard has been updated to target modern iOS device dimensions.

iTorrent/Core/Assets · high confidence

Initial setup flow for cellular toggle

The app now presents an initial setup flow upon first launch to guide users through configuring the cellular data toggle. This new flow, implemented in the InitialSetup directory, checks if the setup is needed and, if so, presents a navigation controller containing the CellularToggleSetupViewModel screen. Once the user completes this step, the setup is marked as done and the flow dismisses.

iTorrent/Screens/Preferences/InitialSetup · high confidence

Initial tvOS app with torrent management and video playback

This change introduces the initial tvOS application for iTorrent, providing a native interface for managing torrents and playing media. The app features a main ContentView that lists torrents and allows users to add new ones, alongside a TorrentDetailsView that displays transfer statistics, file lists, and allows deletion. A key capability is the integration of the VLC player (via VLCPlayerView) to stream video files directly from the torrent's file list (TorrentFilesView) in full-screen mode. The app also includes standard tvOS branding assets, such as app icons and top-shelf images, and registers core services like TorrentService and NetworkMonitoringService at launch.

iTorrent-TV · high confidence

Introduction of RSS feed support with background updates and image caching

Users can now subscribe to RSS feeds, which are automatically updated in the background. The app persists feed subscriptions and items to disk, tracks new items for notification purposes, and utilizes a new two-level image cache (with decoding) to efficiently load and display channel icons and feed content.

iTorrent/Services/RssFeed · high confidence

Live Activity service for torrent progress tracking

The app now integrates with iOS Live Activities to display real-time torrent status (such as downloading, seeding, or checking files) in the Dynamic Island and lock screen. This service subscribes to torrent updates, throttles notifications to avoid excessive system load, and ensures all active Live Activities are terminated when the app closes.

iTorrent/Services/LiveActivityService · high confidence

New Combine utilities for UI scheduling and Codable integration

Added three new Combine extension files to support Swift 6 preparation and UI responsiveness. Published+Codable.swift enables @Published properties to be encoded and decoded directly, simplifying state persistence. Publisher+UI.swift introduces a uiSink operator that automatically ensures value handling occurs on the main thread, reducing boilerplate for UI updates. UIScheduler.swift provides a scheduler that executes work on the main queue immediately if already on the main thread, avoiding unnecessary thread hops for animations or synchronous UI updates.

iTorrent/Utils/Extensions/Combine · high confidence

New PRButton preference cell with swipe-to-delete and reordering support

Preferences screens can now use a new PRButton cell type that displays a title and a dynamic value, supports bold or tinted styling, and allows users to swipe left to delete the item. The cell also supports reordering and accessory views, providing a consistent, interactive way to manage preference settings within the app.

iTorrent/Screens/Preferences/Root/Cells/PRButton · high confidence

New RSS channel item cell with read/unread status and new-item indicator

This change introduces the UI component for displaying individual items within an RSS channel list. Users will now see RSS items rendered with a title, subtitle, and relative date, along with a visual indicator for new items and distinct text coloring for read versus unread items. This cell is part of the broader RSS feed feature being added to the app.

iTorrent/Screens/Rss/Channel/Cells · high confidence

New RSS channel screen with search, swipe actions, and pull-to-refresh

Users can now view an RSS channel's feed in a dedicated screen that supports in-list search, marking items as read/unread via swipe actions, and refreshing the feed with a pull-to-update gesture. The screen also includes an Actions menu to mark all items as read and open the channel's source URL in Safari, along with context menu support for quick item details.

iTorrent/Screens/Rss/Channel · high confidence

New RSS feed list cell with channel icons and reorder support

The RSS feed list now uses a dedicated cell component that displays the channel's logo (loaded from the feed's image link), title, description, and a badge showing the count of new items. Users can reorder feeds in the list and tap an edit button to open channel-specific preferences via a popover interface.

iTorrent/Screens/Rss/List/Cells · high confidence

New RSS item details screen with intelligent download handling

A new RssDetailsViewController and its associated ViewModel have been added to the app, providing a dedicated view for individual RSS feed items. This screen displays the item's description in a web view and intelligently determines the appropriate download action based on the item's content: it detects magnet links to add torrents directly, identifies .torrent files for download and addition, or falls back to opening external URLs in Safari. The UI includes a prominent download button that updates its state (e.g., showing 'Added' if the torrent already exists) and adapts its appearance for iOS 26+ with glass-style effects.

iTorrent/Screens/Rss/Details · high confidence

New RSS search screen with real-time filtering

A new RSS search interface has been added, allowing users to filter RSS feed items by title in real-time. The search query is throttled to optimize performance, and results are sorted by date. The view utilizes iOS 17's UIContentUnavailableConfiguration to display specific empty states for no data, bad search queries, or bad filters.

iTorrent/Screens/Rss/Search · high confidence

New SceneDelegate architecture with integrated AVPlayer, background downloads, and URL handling

The app now uses a new SceneDelegate implementation that centralizes core functionality. Users benefit from integrated AVPlayer support for video playback, automatic background download management that starts and stops based on torrent activity and system state, and robust URL processing that handles magnet links, file URLs, and remote HTTP/HTTPS torrent files. The delegate also manages app appearance bindings (tintColor and interface style), registers essential services like LiveActivityService and RssFeedProvider, and handles initial setup flows.

iTorrent/Core/SceneDelegate · high confidence

New UI components for torrent detail progress and menu actions

The torrent details screen now includes new SwiftUI-based cells for displaying download progress and action menus. The progress cell has been updated to show a segmented progress bar alongside the main progress indicator, providing users with a more granular view of download stages. Additionally, a new menu button cell allows users to access contextual actions through a native iOS menu interface, improving interaction consistency.

iTorrent/Screens/TorrentDetails/Cells · high confidence

New UIViewController extensions for bottom sheets, navigation, and presentation tracking

Added three new utility extensions to UIViewController to improve UI handling and navigation flow. The \UIViewController+BottomSheet\ extension provides a method to configure and manage iOS 15+ sheet presentation detents, including custom height calculations based on scroll view content, grabber visibility, and optional auto-dismissal. The \UIViewController+Pop\ extension simplifies navigation by providing a unified \pop\ method that correctly handles both parent navigation controller pops and modal dismissals. The \UIViewController+TopPresented\ extension adds a computed property to easily retrieve the topmost presented view controller in a stack of presentations.

iTorrent/Utils/Extensions/UIViewController · high confidence

New alert input helpers for single and multiline text entry

The MvvmFoundation extension now provides convenience methods for presenting alert-based text inputs. A new single-line text input method is available with options for keyboard type, secure entry, and default values, while a new multiline input method supports custom text view configuration and is excluded on visionOS. These utilities simplify the creation of user-facing dialogs for data entry within the app's MVVM architecture.

iTorrent/Utils/Extensions/MvvmFoundation · high confidence

New background monitoring and storage management services

Added new service classes to handle background operations and system integration. LiveActivityService now provides real-time torrent progress updates via iOS Live Activities. TorrentMonitoringService manages download completion notifications, app badge updates, and automatic pausing when storage is full. NetworkMonitoringService tracks cellular and interface availability to optimize connectivity. MemorySpaceManager provides detailed breakdowns of disk usage by file type.

iTorrent/Services · high confidence

New background service infrastructure for audio and location

The app introduces a new \BackgroundService\ framework that manages background tasks via pluggable modes. It adds \AudioBackgroundService\, which uses a low-volume audio loop and background task APIs to keep the app alive during torrent operations, and \LocationBackgroundService\, which enables continuous location updates for background tracking. The \BackgroundService\ singleton coordinates these modes, checking torrent states to determine if background resources are needed.

iTorrent/Services/BackgroundService · high confidence

New cellular data permission prompt during initial setup

The initial setup flow now includes a dedicated screen asking users whether to allow cellular data usage for torrenting. On iOS 26 and later (excluding visionOS), the buttons use a prominent glass style. If the user chooses to allow cellular, a confirmation alert is shown before enabling the setting; choosing to disable cellular sets the preference immediately. This screen is skipped on visionOS and only shown if the user has not previously passed this step.

iTorrent/Screens/Preferences/InitialSetup/CellularToggle · high confidence

New color picker with app icon theming

A new color picker cell has been added to the Preferences screen, allowing users to select from a range of system colors (such as Blue, Indigo, Purple, Pink, Red, Orange, Yellow, Green, Mint, Teal, and Cyan) or use a custom color picker. Selecting a specific system color automatically changes the app's alternate icon to match that color theme, while selecting the accent color or orange reverts to the default icon. The implementation includes a custom color picker view controller with support for iOS 17+ sheet presentation detents and iOS 26 exposure settings.

iTorrent/Screens/Preferences/Root/Cells/PRColorPicker · high confidence

New connection preferences screen with encryption and port controls

Users can now configure network connection settings via a dedicated preferences screen. This includes toggling encryption modes (enabled, forced, disabled) and a new option to validate HTTPS trackers. Protocol support for DHT, LSD, uTP, UPnP, and NAT is exposed as individual switches. Network interface options allow enabling cellular data and using all available interfaces. Port configuration lets users switch between a default port and a custom value, with controls for specifying the port number and bind retries.

iTorrent/Screens/Preferences/Network/Connection · high confidence

New dedicated file browser screen for torrents

A new TorrentFiles screen has been added to the app, providing a dedicated interface for browsing and managing files within a torrent. This feature introduces a hierarchical file tree (supporting nested folders) and a collection view for navigation. Users can now select multiple files to change their download priority, share downloaded files via the system share sheet, and open media files directly in the VLC player through a context menu. The screen also supports file previews using QuickLook for compatible file types.

iTorrent/Screens/TorrentFiles · high confidence

New multiline text input view with iOS 26 styling

Added a new EditTextView component and its accompanying EditTextViewController to support multiline text editing. The view features a custom placeholder label that hides when text is entered and automatically adjusts its height as the user types, up to a maximum of four lines. For iOS 26 and later, the text field adopts a rounded, pill-like appearance with increased padding, while older iOS versions retain a standard rectangular style with a light gray border.

iTorrent/Components/Views/EditTextView · high confidence

New preferences sections for file sharing, background mode, and queue limits

The preferences interface now includes dedicated sections for configuring file sharing (with WebServer and WebDAV toggles and port settings), background download modes (audio or location-based), and torrent queue limits (max active, downloading, and uploading torrents). These changes allow users to fine-tune sharing credentials, background behavior, and bandwidth allocation directly from the settings screen.

iTorrent/Screens/Preferences/Root · high confidence

New section grouping preference screen with drag-and-drop reordering

A new preference screen allows users to customize the order of torrent list groups. The interface supports drag-and-drop reordering of items, with changes saved immediately to the application's persistent storage, and includes a reset button to restore the default sorting order.

iTorrent/Screens/Preferences/Base · high confidence

New storage usage cell in Preferences

A new cell has been added to the Preferences screen to display storage usage. It shows the available disk space and visualizes storage categories (such as Episodes, Artworks, Cache, and Configs) using a colored progress bar and corresponding labels.

iTorrent/Screens/Preferences/Root/Cells/PRStorage · high confidence

New switch-based preference cell with danger styling

A new reusable preference cell (PRSwitch) is introduced for the Preferences screen, allowing users to toggle boolean settings via a switch. The cell supports dynamic titles and includes a 'danger' mode that visually highlights the switch in red to warn users about potentially risky configuration changes.

iTorrent/Screens/Preferences/Root/Cells/PRSwitch · high confidence

New torrent details screen with download controls and sharing

Users now have a dedicated Torrent Details screen that provides direct access to torrent management actions. The interface includes toolbar buttons to resume, pause, rehash, and delete torrents, along with a share menu allowing users to export the torrent file or magnet link. The screen also displays key torrent metadata such as hash, creator, and download progress, and offers toggles for sequential downloading and first/last piece priority to optimize download performance.

iTorrent/Screens/TorrentDetails · high confidence

New torrent file selection and storage management screen

Users can now configure which files to download and choose the storage location before adding a torrent. This new screen displays the torrent's file structure in a list, allowing users to select or deselect individual files and folders. It also provides a toolbar with options to set the download priority for all files and select a specific storage container for the download, with a label showing the total size of selected files.

iTorrent/Screens/TorrentAdd · high confidence

New torrent trackers management screen

A new dedicated screen for managing torrent trackers has been added, allowing users to view, add, remove, and reannounce trackers. The interface supports manual entry, importing from predefined sources, and bulk operations via multi-select editing. It includes a reannounce-all action and displays an empty state when no trackers are present.

iTorrent/Screens/TorrentTrackers · high confidence

New utility extensions for file icons, date formatting, and array manipulation

This change introduces a suite of new utility extensions in the Utils/Extensions directory to support upcoming UI and data handling features. It adds a custom file icon generator (UIImage+File) that creates cached, category-specific thumbnails for video, audio, images, archives, and torrents, replacing previous crash-prone methods. It also includes Date+Extensions for calculating time offsets and formatting dates, SpeedFormat for human-readable byte and time strings, Array+MutableForEach for in-place array iteration, URL+Extensions for directory checks, and Scheduler+Main for simplified dispatch queue access.

iTorrent/Utils/Extensions · high confidence

New utility infrastructure for settings persistence and UI animations

This change introduces several new utility components in the Utils module to support upcoming features. It adds a \CircularAnimation\ helper for creating expanding-circle visual effects, a \%\ prefix operator for localized strings, and two property wrappers (\UserDefaultItem\ and \NSUserDefaultItem\) that simplify reading and writing Codable or NSCoding-compliant objects to the shared app group UserDefaults. These utilities provide the foundation for features like theme switching animations and persistent user preferences.

iTorrent/Utils · high confidence

RSS feed list with reorder, add, remove, and import/export capabilities

Users can now manage their RSS subscriptions directly within the app. The new RSS list screen allows adding new feeds via URL, removing selected feeds, and reordering the list to customize the display order. Additionally, users can export their current channel list to a text file for backup or sharing, and import channels from a previously exported file, streamlining the process of migrating or backing up RSS configurations.

iTorrent/Screens/Rss/List · high confidence

Support for managing remote and local tracker lists

Users can now maintain multiple tracker lists, including both remote lists fetched from URLs and local lists created manually. The service automatically loads these lists from storage, refreshes remote lists in the background, and provides a unified way to add all trackers from any list to a torrent.

iTorrent/Services/TrackersListService · high confidence

VLC-based media player with casting and Picture-in-Picture support

The app now uses the VLC player engine (via SwiftVLC) instead of the previous implementation, introducing a new playback experience with native Picture-in-Picture support on iOS and casting capabilities to external renderers. Users can now stream media to compatible devices via the RendererRouteMenuView, which handles discovery and recasting, and enjoy a refined timeline scrubbing interface with availability indicators. The player also includes menus for selecting audio/subtitle tracks and adjusting playback speed, while automatically handling certificate trust and performance warnings during casting sessions.

iTorrent/Screens/VLCPlayer · high confidence

Web and WebDAV file sharing service with status monitoring

A new WebServerService has been added to enable file sharing via HTTP (Web) and WebDAV protocols. The service exposes the server's IP address and port numbers through reactive publishers, allowing the UI to display connection details. It automatically handles lifecycle events, suspending the servers when the app enters the background and restarting them upon returning to the foreground, while also supporting optional digest authentication based on user preferences.

iTorrent/Services/WebServer · high confidence

Behavioural changes

Centralized preference storage and session configuration

The app now uses a centralized \PreferencesStorage\ service to manage user settings, including torrent limits, connection options (DHT, LSD, uTP, UPnP, NAT-PMP), proxy configuration, and file sharing (WebServer/WebDAV). This change ensures that session settings are consistently derived from user preferences, such as applying the configured port and proxy settings to the LibTorrent session, and introduces new options for HTTPS tracker validation and background download modes.

iTorrent/Services/Preferences · high confidence

Improved swipe-back gesture reliability and split-screen toolbar behavior

The navigation system now uses a custom SANavigationController to handle full-screen swipe-back gestures, fixing issues where the pop gesture was broken or interfered with during transitions. This change ensures that swipe-back is only enabled when appropriate (e.g., not on the root view controller, not during active transitions, and when not locked by programmatic navigation). Additionally, it addresses toolbar split-screen behavior glitches on iOS 11+ by properly managing gesture recognizer states and transition coordination, resulting in smoother and more predictable navigation interactions.

iTorrent/Utils/SANavigation · high confidence

Migration of torrent configuration storage to Application Support

The app now migrates torrent metadata and configuration files from the Caches directory to the Application Support directory, ensuring they persist across app updates and are backed up by iCloud. This change also standardizes torrent file names by renaming them to use their info hash, improving consistency and reliability when managing large numbers of torrents.

iTorrent/Services/TorrentService · high confidence

New SwiftUI-based detail and toggle list cells

The app introduces new SwiftUI-based list cells for displaying details and toggles. The DetailCell now adapts its layout to vertical stacking when the detail content is extensive (100+ items), improving readability, while the ToggleCell provides a standard on/off switch interface. These components replace previous implementations to offer a more consistent and responsive user experience in list views.

iTorrent/Components/Cells · high confidence

New SwiftUI-based torrent list cell with swipe-to-delete

The torrent list now uses a new SwiftUI cell implementation (TorrentListItemView) that displays the torrent name, progress details, and status text. Users can now swipe left on a torrent item to reveal a destructive 'trash' action, which triggers a confirmation alert allowing them to remove the torrent while choosing whether to keep or delete the associated files.

iTorrent/Screens/TorrentList/Cells · high confidence

New UI component library and iOS 26 visual updates

This update introduces a new set of base view classes (BaseView, BaseControl) that automatically load XIB files, alongside specialized components like TagsView (with segmented tag selection), UISegmentedProgressView (for multi-segment progress bars), and UISwitchWithMenu (supporting context menus). It also implements iOS 26-specific visual changes, including the use of UIGlassEffect for tag backgrounds and prominent styling for bar button items, while maintaining fallback appearances for earlier iOS versions.

iTorrent/Components/Views · high confidence

New UI for managing remote and local tracker lists

The Trackers List preferences screen has been rewritten in SwiftUI to support distinct management of remote and local tracker sources. Users can now add remote trackers via URL and title, create local tracker lists with custom names, and rename or remove existing sources. The details view allows adding individual tracker URLs (supporting bulk paste for local lists) and copying them to the clipboard, while a toggle enables or disables automatic tracker addition.

iTorrent/Screens/Preferences/TrackersList · high confidence

New UIKit utility extensions for iOS 26 compatibility and UI enhancements

This update introduces a suite of new UIKit extensions to improve UI consistency and developer ergonomics. It adds iOS 26 support by providing a system icon that adapts between 'ellipsis' and 'ellipsis.circle' based on the OS version, and enables label marquee scrolling on iOS 18+. A new document picker wrapper simplifies async file selection, while UIAlertController gains a primary action helper. Additional utilities include hex color parsing, cell accessory image configuration, and a category for managing view layer border and shadow colors with automatic trait collection updates.

iTorrent/Utils/Extensions/UIKit · high confidence

New base view controller and view model hierarchy

The app introduces a new set of base classes (BaseViewController, BaseCollectionViewController, BaseViewModel, etc.) that standardize UI behavior across the application. This includes consistent toolbar handling, support for large navigation titles, and specific styling for VisionOS and iOS 27+ (such as marquee labels and top edge effects).

iTorrent/Base · high confidence

New segmented progress and file management cells for torrent file lists

The torrent file list now uses new cell implementations that display detailed, segmented download progress for individual files and folders. Users can see granular piece-level completion status via a segmented progress bar, view specific download statistics (downloaded vs. total size), and manage file priorities directly through a switch or menu within the list items. The interface also includes quick actions for previewing and sharing files.

iTorrent/Screens/TorrentFiles/Cells · high confidence

New torrent list interface with grouping, sorting, and context actions

The torrent list screen has been replaced with a new implementation featuring a collection view that supports grouping torrents by state, customizable sorting (alphabetically, by date, or size), and filtering. Users can now use the search bar to filter torrents, access context menus for individual items to start, pause, or delete them, and perform bulk actions like resume, pause, rehash, and delete on multiple selected torrents via the toolbar or edit mode.

iTorrent/Screens/TorrentList · high confidence

New tracker cell UI with editing support

The tracker list now uses a new SwiftUI-based cell that displays the tracker URL, peer/seeds/leech counts, current state, and any associated error messages. The cell also enables multiselect mode when the list is in editing state, allowing users to select multiple trackers for batch operations.

iTorrent/Screens/TorrentTrackers/Cells · high confidence

Project configuration updated for iOS 26 and new framework integrations

The Xcode project file has been upgraded to object version 70, reflecting support for newer Xcode toolchains and iOS 26. This update integrates several new frameworks and resources into the build, including SwiftVLC for video playback, Firebase Analytics and Crashlytics for telemetry, and WidgetKit for Live Activities and progress widgets. Additionally, the project now references new source files for RSS feed management, cellular network monitoring, and initial setup flows, while embedding necessary resources like certificates and localized strings.

iTorrent.xcodeproj · high confidence

Refactored torrent state tracking and metadata handling

The torrent service now uses a new \ObservedSnapshot\ class to manage torrent state, which separates immutable metadata (like name and info hashes) from mutable performance metrics (like progress and rates) to prevent unnecessary metadata updates during every loop. This change introduces a \StorageModel\ extension to handle default storage naming and adds a \TorrentHandle\ extension that provides Combine publishers for torrent updates and removals, along with logic to persist and retrieve torrent metadata (such as the date added) from local files.

iTorrent/Services/TorrentService/Extensions · high confidence

Removal of iOS Scene lifecycle support

The app no longer supports the iOS Scene lifecycle model. The LaunchScreen storyboard, the Info.plist configuration for scenes, and the SceneDelegate implementation have been removed, indicating a shift away from multi-window or scene-based app architecture in this version.

iTorrent · high confidence

Support for iOS 27 private scroll edge effect styles

The app now exposes private iOS 27 scroll edge effect styles (photos and messages) via a new utility extension in the PrivateGlass module. This allows the UI to adopt the visual style associated with the Photos and Messages apps when running on iOS 27 or later, falling back to the automatic style on older versions.

iTorrent/Utils/PrivateGlass · high confidence

SwiftUI compatibility and layout extensions for iOS 26 and visionOS

This location introduces a suite of SwiftUI extensions to support the iOS 26 UI overhaul and visionOS. It adds \BCHostingConfiguration\ as a backward-compatible fallback for \UIHostingConfiguration\ on iOS 15 and earlier, and \CompatibilityGlass\ to apply iOS 26 glass effects or fall back to standard materials on older versions. \MinHeightModifier\ adjusts system minimum heights based on the platform (iOS 26 vs. others), while \ResolvedTintColorKey\ enables views to dynamically observe and react to tint color changes. Additionally, \SwiftUILayoutGuides\ provides modifiers to fit content to readable content width and layout margins, and \UIKitSwiftUIInarop\ facilitates conversion between Views and ViewControllers.

iTorrent/Utils/Extensions/SwiftUI · high confidence

Theme switch setting added

The app now supports persisting the user's theme preference (light or dark mode) by making the UIUserInterfaceStyle type conform to Codable, allowing it to be saved and restored in settings.

iTorrent/Utils/Extensions/Codable · high confidence

Workspace restructured to integrate SwiftVLC

The Xcode workspace has been updated to include the SwiftVLC submodule, replacing the previous VLCKit dependency. The workspace now references the SwiftVLC library alongside the existing LibTorrent-Swift and iTorrent projects, ensuring the build environment is configured for the new video playback framework.

iTorrent.xcworkspace · high confidence

Fixes

Added file priority selection menu for torrent details

Users can now change the download priority of individual files within a torrent via a new menu interface. This change introduces a SwiftUI view modifier and a UIKit menu extension that provide options to set files to top, default, low, or no-download priority, addressing a crash previously encountered in the magnet details view.

iTorrent/Utils/Extensions/UIKit/UIMenu · medium confidence

Dependencies

The Submodules directory now includes the Google User Messaging Platform SDK (version 2.3.0) and its associated Open Measurement license. This addition provides the necessary framework headers and binaries to handle user consent for personalized advertising and privacy options, supporting both device and simulator architectures.

Submodules · high confidence

Updated Swift Package Manager dependencies

The project's Swift Package Manager resolved files have been updated to pin newer versions of several dependencies. Notable version bumps include OpenSSL (3.1.5006 to 3.6.1), Firebase iOS SDK (12.12.0 to 12.16.0), Google App Check (11.2.0 to 11.3.1), Google App Measurement (12.11.0 to 12.16.0), Google Utilities (8.1.0 to 8.1.2), and Google Ads On-Device Conversion iOS SDK (3.4.1 to 3.6.1). New dependencies added to the workspace resolution include Swift Custom Dump, Swift DocC Plugin, Swift DocC SymbolKit, Swift Perception, and Swift Syntax.

(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 50 → 45 (-5.5)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 98 → 97 (-1.0)
  • Architecture 98 → 98 (+0.3)
  • Maturity 55 → 55 (+0.0)
  • Readiness 46 → 33 (-13.2)
  • Security 37 → 37 (+0.0)

Resolved (1)

  • Documentation: no licence statement (README.md)

New (36)

  • Duplicated block (10 lines × 2) (iTorrent/Utils/PrivateGlass/UIScrollEdgeEffectStyle+Private.swift)
  • Duplicated block (10–13 lines × 2) (iTorrent-TV/Screens/TorrentDetails/TorrentDetailsView.swift)
  • Duplicated block (19 lines × 2) (iTorrent/Screens/TorrentDetails/TorrentDetailsViewModel.swift)
  • Duplicated block (5 lines × 2) (iTorrent/Screens/Preferences/Storage/StoragePreferencesView.swift)
  • Duplicated block (5 lines × 2) (iTorrent/Screens/TorrentDetails/TorrentDetailsViewModel.swift)
  • Duplicated block (5 lines × 3) (iTorrent/Components/Views/BaseControl.swift)
  • Duplicated block (5–6 lines × 2) (iTorrent/Utils/Extensions/SwiftUI/SwiftUILayoutGuides.swift)
  • Duplicated block (6 lines × 2) (iTorrent/Utils/Extensions/UIKit/UIColor+Hex.swift)
  • Floating branch dependency: combinecocoa
  • Floating branch dependency: combinecocoa
  • Floating branch dependency: marqueetext
  • Floating branch dependency: marqueetext
  • Low cohesion: View (LCOM4 9) (iTorrent/Utils/AirPlay/AirPlay.swift)
  • MethodTooLong: StoragePreferencesView.body (iTorrent/Screens/Preferences/Storage/StoragePreferencesView.swift)
  • Outdated: abseil-cpp-binary
  • Outdated: app-check
  • Outdated: app-check
  • Outdated: firebase-ios-sdk
  • Outdated: firebase-ios-sdk
  • Outdated: google-ads-on-device-conversion-ios-sdk
  • …and 16 more

Changes since last survey

  • 1 commits — 0 feature/other, 1 fixes

By area

  • iTorrent/Screens — 1 commit

Notable commits

  • fix: VisionPro fix

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

XITRIX/iTorrent 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 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 866767fa2f182a80abae3f683ec99b7a891cbc75 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.